@oh-my-pi/omp-stats 18.1.18 → 18.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.js +1 -1
- package/package.json +4 -4
package/dist/client/index.js
CHANGED
|
@@ -254,4 +254,4 @@ React keys must be passed directly to JSX without using spread:
|
|
|
254
254
|
* Released under the MIT License
|
|
255
255
|
*/class qM{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(a,o,s,r){let l=o.listeners[r],u=o.duration;l.forEach((d)=>d({chart:a,initial:o.initial,numSteps:u,currentStep:Math.min(s-o.start,u)}))}_refresh(){if(this._request)return;this._running=!0,this._request=Xx.call(window,()=>{if(this._update(),this._request=null,this._running)this._refresh()})}_update(a=Date.now()){let o=0;if(this._charts.forEach((s,r)=>{if(!s.running||!s.items.length)return;let l=s.items,u=l.length-1,d=!1,p;for(;u>=0;--u)if(p=l[u],p._active){if(p._total>s.duration)s.duration=p._total;p.tick(a),d=!0}else l[u]=l[l.length-1],l.pop();if(d)r.draw(),this._notify(r,s,a,"progress");if(!l.length)s.running=!1,this._notify(r,s,a,"complete"),s.initial=!1;o+=l.length}),this._lastDate=a,o===0)this._running=!1}_getAnims(a){let o=this._charts,s=o.get(a);if(!s)s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},o.set(a,s);return s}listen(a,o,s){this._getAnims(a).listeners[o].push(s)}add(a,o){if(!o||!o.length)return;this._getAnims(a).items.push(...o)}has(a){return this._getAnims(a).items.length>0}start(a){let o=this._charts.get(a);if(!o)return;o.running=!0,o.start=Date.now(),o.duration=o.items.reduce((s,r)=>Math.max(s,r._duration),0),this._refresh()}running(a){if(!this._running)return!1;let o=this._charts.get(a);if(!o||!o.running||!o.items.length)return!1;return!0}stop(a){let o=this._charts.get(a);if(!o||!o.items.length)return;let s=o.items,r=s.length-1;for(;r>=0;--r)s[r].cancel();o.items=[],this._notify(a,o,Date.now(),"complete")}remove(a){return this._charts.delete(a)}}var Vs=new qM,Xk="transparent",QO={boolean(a,o,s){return s>0.5?o:a},color(a,o,s){let r=Wx(a||Xk),l=r.valid&&Wx(o||Xk);return l&&l.valid?l.mix(r,s).hexString():o},number(a,o,s){return a+(o-a)*s}};class VM{constructor(a,o,s,r){let l=o[s];r=Hd([a.to,r,l,a.from]);let u=Hd([a.from,l,r]);this._active=!0,this._fn=a.fn||QO[a.type||typeof u],this._easing=Du[a.easing]||Du.linear,this._start=Math.floor(Date.now()+(a.delay||0)),this._duration=this._total=Math.floor(a.duration),this._loop=!!a.loop,this._target=o,this._prop=s,this._from=u,this._to=r,this._promises=void 0}active(){return this._active}update(a,o,s){if(this._active){this._notify(!1);let r=this._target[this._prop],l=s-this._start,u=this._duration-l;this._start=s,this._duration=Math.floor(Math.max(u,a.duration)),this._total+=l,this._loop=!!a.loop,this._to=Hd([a.to,o,r,a.from]),this._from=Hd([a.from,r,o])}}cancel(){if(this._active)this.tick(Date.now()),this._active=!1,this._notify(!1)}tick(a){let o=a-this._start,s=this._duration,r=this._prop,l=this._from,u=this._loop,d=this._to,p;if(this._active=l!==d&&(u||o<s),!this._active){this._target[r]=d,this._notify(!0);return}if(o<0){this._target[r]=l;return}p=o/s%2,p=u&&p>1?2-p:p,p=this._easing(Math.min(1,Math.max(0,p))),this._target[r]=this._fn(l,d,p)}wait(){let a=this._promises||(this._promises=[]);return new Promise((o,s)=>{a.push({res:o,rej:s})})}_notify(a){let o=a?"res":"rej",s=this._promises||[];for(let r=0;r<s.length;r++)s[r][o]()}}class Av{constructor(a,o){this._chart=a,this._properties=new Map,this.configure(o)}configure(a){if(!it(a))return;let o=Object.keys(Jt.animation),s=this._properties;Object.getOwnPropertyNames(a).forEach((r)=>{let l=a[r];if(!it(l))return;let u={};for(let d of o)u[d]=l[d];(zt(l.properties)&&l.properties||[r]).forEach((d)=>{if(d===r||!s.has(d))s.set(d,u)})})}_animateOptions(a,o){let s=o.options,r=JO(a,s);if(!r)return[];let l=this._createAnimations(r,s);if(s.$shared)KO(a.options.$animations,s).then(()=>{a.options=s},()=>{});return l}_createAnimations(a,o){let s=this._properties,r=[],l=a.$animations||(a.$animations={}),u=Object.keys(o),d=Date.now(),p;for(p=u.length-1;p>=0;--p){let h=u[p];if(h.charAt(0)==="$")continue;if(h==="options"){r.push(...this._animateOptions(a,o));continue}let g=o[h],y=l[h],b=s.get(h);if(y)if(b&&y.active()){y.update(b,g,d);continue}else y.cancel();if(!b||!b.duration){a[h]=g;continue}l[h]=y=new VM(b,a,h,g),r.push(y)}return r}update(a,o){if(this._properties.size===0){Object.assign(a,o);return}let s=this._createAnimations(a,o);if(s.length)return Vs.add(this._chart,s),!0}}function KO(a,o){let s=[],r=Object.keys(o);for(let l=0;l<r.length;l++){let u=a[r[l]];if(u&&u.active())s.push(u.wait())}return Promise.all(s)}function JO(a,o){if(!o)return;let s=a.options;if(!s){a.options=o;return}if(s.$shared)a.options=s=Object.assign({},s,{$shared:!1,$animations:{}});return s}function Yk(a,o){let s=a&&a.options||{},r=s.reverse,l=s.min===void 0?o:0,u=s.max===void 0?o:0;return{start:r?u:l,end:r?l:u}}function eP(a,o,s){if(s===!1)return!1;let r=Yk(a,s),l=Yk(o,s);return{top:l.end,right:r.end,bottom:l.start,left:r.start}}function tP(a){let o,s,r,l;if(it(a))o=a.top,s=a.right,r=a.bottom,l=a.left;else o=s=r=l=a;return{top:o,right:s,bottom:r,left:l,disabled:a===!1}}function jM(a,o){let s=[],r=a._getSortedDatasetMetas(o),l,u;for(l=0,u=r.length;l<u;++l)s.push(r[l].index);return s}function $k(a,o,s,r={}){let l=a.keys,u=r.mode==="single",d,p,h,g;if(o===null)return;let y=!1;for(d=0,p=l.length;d<p;++d){if(h=+l[d],h===s){if(y=!0,r.all)continue;break}if(g=a.values[h],Kt(g)&&(u||o===0||Ln(o)===Ln(g)))o+=g}if(!y&&!r.all)return 0;return o}function aP(a,o){let{iScale:s,vScale:r}=o,l=s.axis==="x"?"x":"y",u=r.axis==="x"?"x":"y",d=Object.keys(a),p=Array(d.length),h,g,y;for(h=0,g=d.length;h<g;++h)y=d[h],p[h]={[l]:y,[u]:a[y]};return p}function cv(a,o){let s=a&&a.options.stacked;return s||s===void 0&&o.stack!==void 0}function oP(a,o,s){return`${a.id}.${o.id}.${s.stack||s.type}`}function nP(a){let{min:o,max:s,minDefined:r,maxDefined:l}=a.getUserBounds();return{min:r?o:Number.NEGATIVE_INFINITY,max:l?s:Number.POSITIVE_INFINITY}}function sP(a,o,s){let r=a[o]||(a[o]={});return r[s]||(r[s]={})}function Wk(a,o,s,r){for(let l of o.getMatchingVisibleMetas(r).reverse()){let u=a[l.index];if(s&&u>0||!s&&u<0)return l.index}return null}function Zk(a,o){let{chart:s,_cachedMeta:r}=a,l=s._stacks||(s._stacks={}),{iScale:u,vScale:d,index:p}=r,h=u.axis,g=d.axis,y=oP(u,d,r),b=o.length,v;for(let T=0;T<b;++T){let M=o[T],{[h]:I,[g]:w}=M,A=M._stacks||(M._stacks={});v=A[g]=sP(l,y,I),v[p]=w,v._top=Wk(v,d,!0,r.type),v._bottom=Wk(v,d,!1,r.type);let B=v._visualValues||(v._visualValues={});B[p]=w}}function dv(a,o){let s=a.scales;return Object.keys(s).filter((r)=>s[r].axis===o).shift()}function rP(a,o){return qs(a,{active:!1,dataset:void 0,datasetIndex:o,index:o,mode:"default",type:"dataset"})}function iP(a,o,s){return qs(a,{active:!1,dataIndex:o,parsed:void 0,raw:void 0,element:s,index:o,mode:"default",type:"data"})}function Ud(a,o){let s=a.controller.index,r=a.vScale&&a.vScale.axis;if(!r)return;o=o||a._parsed;for(let l of o){let u=l._stacks;if(!u||u[r]===void 0||u[r][s]===void 0)return;if(delete u[r][s],u[r]._visualValues!==void 0&&u[r]._visualValues[s]!==void 0)delete u[r]._visualValues[s]}}var fv=(a)=>a==="reset"||a==="none",Qk=(a,o)=>o?a:Object.assign({},a),lP=(a,o,s)=>a&&!o.hidden&&o._stacked&&{keys:jM(s,!0),values:null};class Lm{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(a,o){this.chart=a,this._ctx=a.ctx,this.index=o,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 a=this._cachedMeta;if(this.configure(),this.linkScales(),a._stacked=cv(a.vScale,a),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(a){if(this.index!==a)Ud(this._cachedMeta);this.index=a}linkScales(){let a=this.chart,o=this._cachedMeta,s=this.getDataset(),r=(y,b,v,T)=>y==="x"?b:y==="r"?T:v,l=o.xAxisID=Ke(s.xAxisID,dv(a,"x")),u=o.yAxisID=Ke(s.yAxisID,dv(a,"y")),d=o.rAxisID=Ke(s.rAxisID,dv(a,"r")),p=o.indexAxis,h=o.iAxisID=r(p,l,u,d),g=o.vAxisID=r(p,u,l,d);o.xScale=this.getScaleForId(l),o.yScale=this.getScaleForId(u),o.rScale=this.getScaleForId(d),o.iScale=this.getScaleForId(h),o.vScale=this.getScaleForId(g)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(a){return this.chart.scales[a]}_getOtherScale(a){let o=this._cachedMeta;return a===o.iScale?o.vScale:o.iScale}reset(){this._update("reset")}_destroy(){let a=this._cachedMeta;if(this._data)jx(this._data,this);if(a._stacked)Ud(a)}_dataCheck(){let a=this.getDataset(),o=a.data||(a.data=[]),s=this._data;if(it(o)){let r=this._cachedMeta;this._data=aP(o,r)}else if(s!==o){if(s){jx(s,this);let r=this._cachedMeta;Ud(r),r._parsed=[]}if(o&&Object.isExtensible(o))Tk(o,this);this._syncList=[],this._data=o}}addElements(){let a=this._cachedMeta;if(this._dataCheck(),this.datasetElementType)a.dataset=new this.datasetElementType}buildOrUpdateElements(a){let o=this._cachedMeta,s=this.getDataset(),r=!1;this._dataCheck();let l=o._stacked;if(o._stacked=cv(o.vScale,o),o.stack!==s.stack)r=!0,Ud(o),o.stack=s.stack;if(this._resyncElements(a),r||l!==o._stacked)Zk(this,o._parsed),o._stacked=cv(o.vScale,o)}configure(){let a=this.chart.config,o=a.datasetScopeKeys(this._type),s=a.getOptionScopes(this.getDataset(),o,!0);this.options=a.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(a,o){let{_cachedMeta:s,_data:r}=this,{iScale:l,_stacked:u}=s,d=l.axis,p=a===0&&o===r.length?!0:s._sorted,h=a>0&&s._parsed[a-1],g,y,b;if(this._parsing===!1)s._parsed=r,s._sorted=!0,b=r;else{if(zt(r[a]))b=this.parseArrayData(s,r,a,o);else if(it(r[a]))b=this.parseObjectData(s,r,a,o);else b=this.parsePrimitiveData(s,r,a,o);let v=()=>y[d]===null||h&&y[d]<h[d];for(g=0;g<o;++g)if(s._parsed[g+a]=y=b[g],p){if(v())p=!1;h=y}s._sorted=p}if(u)Zk(this,b)}parsePrimitiveData(a,o,s,r){let{iScale:l,vScale:u}=a,d=l.axis,p=u.axis,h=l.getLabels(),g=l===u,y=Array(r),b,v,T;for(b=0,v=r;b<v;++b)T=b+s,y[b]={[d]:g||l.parse(h[T],T),[p]:u.parse(o[T],T)};return y}parseArrayData(a,o,s,r){let{xScale:l,yScale:u}=a,d=Array(r),p,h,g,y;for(p=0,h=r;p<h;++p)g=p+s,y=o[g],d[p]={x:l.parse(y[0],g),y:u.parse(y[1],g)};return d}parseObjectData(a,o,s,r){let{xScale:l,yScale:u}=a,{xAxisKey:d="x",yAxisKey:p="y"}=this._parsing,h=Array(r),g,y,b,v;for(g=0,y=r;g<y;++g)b=g+s,v=o[b],h[g]={x:l.parse(rl(v,d),b),y:u.parse(rl(v,p),b)};return h}getParsed(a){return this._cachedMeta._parsed[a]}getDataElement(a){return this._cachedMeta.data[a]}applyStack(a,o,s){let r=this.chart,l=this._cachedMeta,u=o[a.axis],d={keys:jM(r,!0),values:o._stacks[a.axis]._visualValues};return $k(d,u,l.index,{mode:s})}updateRangeFromParsed(a,o,s,r){let l=s[o.axis],u=l===null?NaN:l,d=r&&s._stacks[o.axis];if(r&&d)r.values=d,u=$k(r,l,this._cachedMeta.index);a.min=Math.min(a.min,u),a.max=Math.max(a.max,u)}getMinMax(a,o){let s=this._cachedMeta,r=s._parsed,l=s._sorted&&a===s.iScale,u=r.length,d=this._getOtherScale(a),p=lP(o,s,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:g,max:y}=nP(d),b,v;function T(){v=r[b];let M=v[d.axis];return!Kt(v[a.axis])||g>M||y<M}for(b=0;b<u;++b){if(T())continue;if(this.updateRangeFromParsed(h,a,v,p),l)break}if(l)for(b=u-1;b>=0;--b){if(T())continue;this.updateRangeFromParsed(h,a,v,p);break}return h}getAllParsedValues(a){let o=this._cachedMeta._parsed,s=[],r,l,u;for(r=0,l=o.length;r<l;++r)if(u=o[r][a.axis],Kt(u))s.push(u);return s}getMaxOverflow(){return!1}getLabelAndValue(a){let o=this._cachedMeta,{iScale:s,vScale:r}=o,l=this.getParsed(a);return{label:s?""+s.getLabelForValue(l[s.axis]):"",value:r?""+r.getLabelForValue(l[r.axis]):""}}_update(a){let o=this._cachedMeta;this.update(a||"default"),o._clip=tP(Ke(this.options.clip,eP(o.xScale,o.yScale,this.getMaxOverflow())))}update(a){}draw(){let a=this._ctx,o=this.chart,s=this._cachedMeta,r=s.data||[],l=o.chartArea,u=[],d=this._drawStart||0,p=this._drawCount||r.length-d,h=this.options.drawActiveElementsOnTop,g;if(s.dataset)s.dataset.draw(a,l,d,p);for(g=d;g<d+p;++g){let y=r[g];if(y.hidden)continue;if(y.active&&h)u.push(y);else y.draw(a,l)}for(g=0;g<u.length;++g)u[g].draw(a,l)}getStyle(a,o){let s=o?"active":"default";return a===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(s):this.resolveDataElementOptions(a||0,s)}getContext(a,o,s){let r=this.getDataset(),l;if(a>=0&&a<this._cachedMeta.data.length){let u=this._cachedMeta.data[a];l=u.$context||(u.$context=iP(this.getContext(),a,u)),l.parsed=this.getParsed(a),l.raw=r.data[a],l.index=l.dataIndex=a}else l=this.$context||(this.$context=rP(this.chart.getContext(),this.index)),l.dataset=r,l.index=l.datasetIndex=this.index;return l.active=!!o,l.mode=s,l}resolveDatasetElementOptions(a){return this._resolveElementOptions(this.datasetElementType.id,a)}resolveDataElementOptions(a,o){return this._resolveElementOptions(this.dataElementType.id,o,a)}_resolveElementOptions(a,o="default",s){let r=o==="active",l=this._cachedDataOpts,u=a+"-"+o,d=l[u],p=this.enableOptionSharing&&Pu(s);if(d)return Qk(d,p);let h=this.chart.config,g=h.datasetElementScopeKeys(this._type,a),y=r?[`${a}Hover`,"hover",a,""]:[a,""],b=h.getOptionScopes(this.getDataset(),g),v=Object.keys(Jt.elements[a]),T=()=>this.getContext(s,r,o),M=h.resolveNamedOptions(b,v,T,y);if(M.$shared)M.$shared=p,l[u]=Object.freeze(Qk(M,p));return M}_resolveAnimations(a,o,s){let r=this.chart,l=this._cachedDataOpts,u=`animation-${o}`,d=l[u];if(d)return d;let p;if(r.options.animation!==!1){let g=this.chart.config,y=g.datasetAnimationScopeKeys(this._type,o),b=g.getOptionScopes(this.getDataset(),y);p=g.createResolver(b,this.getContext(a,s,o))}let h=new Av(r,p&&p.animations);if(p&&p._cacheable)l[u]=Object.freeze(h);return h}getSharedOptions(a){if(!a.$shared)return;return this._sharedOptions||(this._sharedOptions=Object.assign({},a))}includeOptions(a,o){return!o||fv(a)||this.chart._animationsDisabled}_getSharedOptions(a,o){let s=this.resolveDataElementOptions(a,o),r=this._sharedOptions,l=this.getSharedOptions(s),u=this.includeOptions(o,l)||l!==r;return this.updateSharedOptions(l,o,s),{sharedOptions:l,includeOptions:u}}updateElement(a,o,s,r){if(fv(r))Object.assign(a,s);else this._resolveAnimations(o,r).update(a,s)}updateSharedOptions(a,o,s){if(a&&!fv(o))this._resolveAnimations(void 0,o).update(a,s)}_setStyle(a,o,s,r){a.active=r;let l=this.getStyle(o,r);this._resolveAnimations(o,s,r).update(a,{options:!r&&this.getSharedOptions(l)||l})}removeHoverStyle(a,o,s){this._setStyle(a,s,"active",!1)}setHoverStyle(a,o,s){this._setStyle(a,s,"active",!0)}_removeDatasetHoverStyle(){let a=this._cachedMeta.dataset;if(a)this._setStyle(a,void 0,"active",!1)}_setDatasetHoverStyle(){let a=this._cachedMeta.dataset;if(a)this._setStyle(a,void 0,"active",!0)}_resyncElements(a){let o=this._data,s=this._cachedMeta.data;for(let[d,p,h]of this._syncList)this[d](p,h);this._syncList=[];let r=s.length,l=o.length,u=Math.min(l,r);if(u)this.parse(0,u);if(l>r)this._insertElements(r,l-r,a);else if(l<r)this._removeElements(l,r-l)}_insertElements(a,o,s=!0){let r=this._cachedMeta,l=r.data,u=a+o,d,p=(h)=>{h.length+=o;for(d=h.length-1;d>=u;d--)h[d]=h[d-o]};p(l);for(d=a;d<u;++d)l[d]=new this.dataElementType;if(this._parsing)p(r._parsed);if(this.parse(a,o),s)this.updateElements(l,a,o,"reset")}updateElements(a,o,s,r){}_removeElements(a,o){let s=this._cachedMeta;if(this._parsing){let r=s._parsed.splice(a,o);if(s._stacked)Ud(s,r)}s.data.splice(a,o)}_sync(a){if(this._parsing)this._syncList.push(a);else{let[o,s,r]=a;this[o](s,r)}this.chart._dataChanges.push([this.index,...a])}_onDataPush(){let a=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-a,a])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(a,o){if(o)this._sync(["_removeElements",a,o]);let s=arguments.length-2;if(s)this._sync(["_insertElements",a,s])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function uP(a,o){if(!a._cache.$bar){let s=a.getMatchingVisibleMetas(o),r=[];for(let l=0,u=s.length;l<u;l++)r=r.concat(s[l].controller.getAllParsedValues(a));a._cache.$bar=Gx(r.sort((l,u)=>l-u))}return a._cache.$bar}function cP(a){let o=a.iScale,s=uP(o,a.type),r=o._length,l,u,d,p,h=()=>{if(d===32767||d===-32768)return;if(Pu(p))r=Math.min(r,Math.abs(d-p)||r);p=d};for(l=0,u=s.length;l<u;++l)d=o.getPixelForValue(s[l]),h();p=void 0;for(l=0,u=o.ticks.length;l<u;++l)d=o.getPixelForTick(l),h();return r}function dP(a,o,s,r){let l=s.barThickness,u,d;if(ht(l))u=o.min*s.categoryPercentage,d=s.barPercentage;else u=l*r,d=1;return{chunk:u/r,ratio:d,start:o.pixels[a]-u/2}}function fP(a,o,s,r){let l=o.pixels,u=l[a],d=a>0?l[a-1]:null,p=a<l.length-1?l[a+1]:null,h=s.categoryPercentage;if(d===null)d=u-(p===null?o.end-o.start:p-u);if(p===null)p=u+u-d;let g=u-(u-Math.min(d,p))/2*h;return{chunk:Math.abs(p-d)/2*h/r,ratio:s.barPercentage,start:g}}function pP(a,o,s,r){let l=s.parse(a[0],r),u=s.parse(a[1],r),d=Math.min(l,u),p=Math.max(l,u),h=d,g=p;if(Math.abs(d)>Math.abs(p))h=p,g=d;o[s.axis]=g,o._custom={barStart:h,barEnd:g,start:l,end:u,min:d,max:p}}function GM(a,o,s,r){if(zt(a))pP(a,o,s,r);else o[s.axis]=s.parse(a,r);return o}function Kk(a,o,s,r){let{iScale:l,vScale:u}=a,d=l.getLabels(),p=l===u,h=[],g,y,b,v;for(g=s,y=s+r;g<y;++g)v=o[g],b={},b[l.axis]=p||l.parse(d[g],g),h.push(GM(v,b,u,g));return h}function pv(a){return a&&a.barStart!==void 0&&a.barEnd!==void 0}function hP(a,o,s){if(a!==0)return Ln(a);return(o.isHorizontal()?1:-1)*(o.min>=s?1:-1)}function mP(a){let o,s,r,l,u;if(a.horizontal)o=a.base>a.x,s="left",r="right";else o=a.base<a.y,s="bottom",r="top";if(o)l="end",u="start";else l="start",u="end";return{start:s,end:r,reverse:o,top:l,bottom:u}}function gP(a,o,s,r){let l=o.borderSkipped,u={};if(!l){a.borderSkipped=u;return}if(l===!0){a.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}let{start:d,end:p,reverse:h,top:g,bottom:y}=mP(a);if(l==="middle"&&s)if(a.enableBorderRadius=!0,(s._top||0)===r)l=g;else if((s._bottom||0)===r)l=y;else u[Jk(y,d,p,h)]=!0,l=g;u[Jk(l,d,p,h)]=!0,a.borderSkipped=u}function Jk(a,o,s,r){if(r)a=bP(a,o,s),a=eM(a,s,o);else a=eM(a,o,s);return a}function bP(a,o,s){return a===o?s:a===s?o:a}function eM(a,o,s){return a==="start"?o:a==="end"?s:a}function yP(a,{inflateAmount:o},s){a.inflateAmount=o==="auto"?s===1?0.33:0:o}class Rv extends Lm{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:0.8,barPercentage:0.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(a,o,s,r){return Kk(a,o,s,r)}parseArrayData(a,o,s,r){return Kk(a,o,s,r)}parseObjectData(a,o,s,r){let{iScale:l,vScale:u}=a,{xAxisKey:d="x",yAxisKey:p="y"}=this._parsing,h=l.axis==="x"?d:p,g=u.axis==="x"?d:p,y=[],b,v,T,M;for(b=s,v=s+r;b<v;++b)M=o[b],T={},T[l.axis]=l.parse(rl(M,h),b),y.push(GM(rl(M,g),T,u,b));return y}updateRangeFromParsed(a,o,s,r){super.updateRangeFromParsed(a,o,s,r);let l=s._custom;if(l&&o===this._cachedMeta.vScale)a.min=Math.min(a.min,l.min),a.max=Math.max(a.max,l.max)}getMaxOverflow(){return 0}getLabelAndValue(a){let o=this._cachedMeta,{iScale:s,vScale:r}=o,l=this.getParsed(a),u=l._custom,d=pv(u)?"["+u.start+", "+u.end+"]":""+r.getLabelForValue(l[r.axis]);return{label:""+s.getLabelForValue(l[s.axis]),value:d}}initialize(){this.enableOptionSharing=!0,super.initialize();let a=this._cachedMeta;a.stack=this.getDataset().stack}update(a){let o=this._cachedMeta;this.updateElements(o.data,0,o.data.length,a)}updateElements(a,o,s,r){let l=r==="reset",{index:u,_cachedMeta:{vScale:d}}=this,p=d.getBasePixel(),h=d.isHorizontal(),g=this._getRuler(),{sharedOptions:y,includeOptions:b}=this._getSharedOptions(o,r);for(let v=o;v<o+s;v++){let T=this.getParsed(v),M=l||ht(T[d.axis])?{base:p,head:p}:this._calculateBarValuePixels(v),I=this._calculateBarIndexPixels(v,g),w=(T._stacks||{})[d.axis],A={horizontal:h,base:M.base,enableBorderRadius:!w||pv(T._custom)||u===w._top||u===w._bottom,x:h?M.head:I.center,y:h?I.center:M.head,height:h?I.size:Math.abs(M.size),width:h?Math.abs(M.size):I.size};if(b)A.options=y||this.resolveDataElementOptions(v,a[v].active?"active":r);let B=A.options||a[v].options;gP(A,B,w,u),yP(A,B,g.ratio),this.updateElement(a[v],v,A,r)}}_getStacks(a,o){let{iScale:s}=this._cachedMeta,r=s.getMatchingVisibleMetas(this._type).filter((g)=>g.controller.options.grouped),l=s.options.stacked,u=[],d=this._cachedMeta.controller.getParsed(o),p=d&&d[s.axis],h=(g)=>{let y=g._parsed.find((v)=>v[s.axis]===p),b=y&&y[g.vScale.axis];if(ht(b)||isNaN(b))return!0};for(let g of r){if(o!==void 0&&h(g))continue;if(l===!1||u.indexOf(g.stack)===-1||l===void 0&&g.stack===void 0)u.push(g.stack);if(g.index===a)break}if(!u.length)u.push(void 0);return u}_getStackCount(a){return this._getStacks(void 0,a).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){let a=this.chart.scales,o=this.chart.options.indexAxis;return Object.keys(a).filter((s)=>a[s].axis===o).shift()}_getAxis(){let a={},o=this.getFirstScaleIdForIndexAxis();for(let s of this.chart.data.datasets)a[Ke(this.chart.options.indexAxis==="x"?s.xAxisID:s.yAxisID,o)]=!0;return Object.keys(a)}_getStackIndex(a,o,s){let r=this._getStacks(a,s),l=o!==void 0?r.indexOf(o):-1;return l===-1?r.length-1:l}_getRuler(){let a=this.options,o=this._cachedMeta,s=o.iScale,r=[],l,u;for(l=0,u=o.data.length;l<u;++l)r.push(s.getPixelForValue(this.getParsed(l)[s.axis],l));let d=a.barThickness;return{min:d||cP(o),pixels:r,start:s._startPixel,end:s._endPixel,stackCount:this._getStackCount(),scale:s,grouped:a.grouped,ratio:d?1:a.categoryPercentage*a.barPercentage}}_calculateBarValuePixels(a){let{_cachedMeta:{vScale:o,_stacked:s,index:r},options:{base:l,minBarLength:u}}=this,d=l||0,p=this.getParsed(a),h=p._custom,g=pv(h),y=p[o.axis],b=0,v=s?this.applyStack(o,p,s):y,T,M;if(v!==y)b=v-y,v=y;if(g){if(y=h.barStart,v=h.barEnd-h.barStart,y!==0&&Ln(y)!==Ln(h.barEnd))b=0;b+=y}let I=!ht(l)&&!g?l:b,w=o.getPixelForValue(I);if(this.chart.getDataVisibility(a))T=o.getPixelForValue(b+v);else T=w;if(M=T-w,Math.abs(M)<u){if(M=hP(M,o,d)*u,y===d)w-=M/2;let A=o.getPixelForDecimal(0),B=o.getPixelForDecimal(1),z=Math.min(A,B),H=Math.max(A,B);if(w=Math.max(Math.min(w,H),z),T=w+M,s&&!g)p._stacks[o.axis]._visualValues[r]=o.getValueForPixel(T)-o.getValueForPixel(w)}if(w===o.getPixelForValue(d)){let A=Ln(M)*o.getLineWidthForValue(d)/2;w+=A,M-=A}return{size:M,base:w,head:T,center:T+M/2}}_calculateBarIndexPixels(a,o){let s=o.scale,r=this.options,l=r.skipNull,u=Ke(r.maxBarThickness,1/0),d,p,h=this._getAxisCount();if(o.grouped){let g=l?this._getStackCount(a):o.stackCount,y=r.barThickness==="flex"?fP(a,o,r,g*h):dP(a,o,r,g*h),b=this.chart.options.indexAxis==="x"?this.getDataset().xAxisID:this.getDataset().yAxisID,v=this._getAxis().indexOf(Ke(b,this.getFirstScaleIdForIndexAxis())),T=this._getStackIndex(this.index,this._cachedMeta.stack,l?a:void 0)+v;d=y.start+y.chunk*T+y.chunk/2,p=Math.min(u,y.chunk*y.ratio)}else d=s.getPixelForValue(this.getParsed(a)[s.axis],a),p=Math.min(u,o.min*o.ratio);return{base:d-p/2,head:d+p/2,center:d,size:p}}draw(){let a=this._cachedMeta,{vScale:o,data:s}=a,r=s.length,l=0;for(;l<r;++l)if(this.getParsed(l)[o.axis]!==null&&!s[l].hidden)s[l].draw(this._ctx)}}class Dv extends Lm{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(a){let o=this._cachedMeta,{dataset:s,data:r=[],_dataset:l}=o,u=this.chart._animationsDisabled,{start:d,count:p}=Mk(o,r,u);if(this._drawStart=d,this._drawCount=p,Ik(o))d=0,p=r.length;s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!l._decimated,s.points=r;let h=this.resolveDatasetElementOptions(a);if(!this.options.showLine)h.borderWidth=0;h.segment=this.options.segment,this.updateElement(s,void 0,{animated:!u,options:h},a),this.updateElements(r,d,p,a)}updateElements(a,o,s,r){let l=r==="reset",{iScale:u,vScale:d,_stacked:p,_dataset:h}=this._cachedMeta,{sharedOptions:g,includeOptions:y}=this._getSharedOptions(o,r),b=u.axis,v=d.axis,{spanGaps:T,segment:M}=this.options,I=Nu(T)?T:Number.POSITIVE_INFINITY,w=this.chart._animationsDisabled||l||r==="none",A=o+s,B=a.length,z=o>0&&this.getParsed(o-1);for(let H=0;H<B;++H){let q=a[H],j=w?q:{};if(H<o||H>=A){j.skip=!0;continue}let G=this.getParsed(H),Y=ht(G[v]),J=j[b]=u.getPixelForValue(G[b],H),X=j[v]=l||Y?d.getBasePixel():d.getPixelForValue(p?this.applyStack(d,G,p):G[v],H);if(j.skip=isNaN(J)||isNaN(X)||Y,j.stop=H>0&&Math.abs(G[b]-z[b])>I,M)j.parsed=G,j.raw=h.data[H];if(y)j.options=g||this.resolveDataElementOptions(H,q.active?"active":r);if(!w)this.updateElement(q,H,j,r);z=G}}getMaxOverflow(){let a=this._cachedMeta,o=a.dataset,s=o.options&&o.options.borderWidth||0,r=a.data||[];if(!r.length)return s;let l=r[0].size(this.resolveDataElementOptions(0)),u=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(s,l,u)/2}draw(){let a=this._cachedMeta;a.dataset.updateControlPoints(this.chart.chartArea,a.iScale.axis),super.draw()}}function ll(){throw Error("This method is not implemented: Check that a complete date adapter is provided.")}class _v{static override(a){Object.assign(_v.prototype,a)}options;constructor(a){this.options=a||{}}init(){}formats(){return ll()}parse(){return ll()}format(){return ll()}add(){return ll()}diff(){return ll()}startOf(){return ll()}endOf(){return ll()}}var xP={_date:_v};function vP(a,o,s,r){let{controller:l,data:u,_sorted:d}=a,p=l._cachedMeta.iScale,h=a.dataset?a.dataset.options?a.dataset.options.spanGaps:null:null;if(p&&o===p.axis&&o!=="r"&&d&&u.length){let g=p._reversePixels?Sk:Wr;if(!r){let y=g(u,o,s);if(h){let{vScale:b}=l._cachedMeta,{_parsed:v}=a,T=v.slice(0,y.lo+1).reverse().findIndex((I)=>!ht(I[b.axis]));y.lo-=Math.max(0,T);let M=v.slice(y.hi).findIndex((I)=>!ht(I[b.axis]));y.hi+=Math.max(0,M)}return y}else if(l._sharedOptions){let y=u[0],b=typeof y.getRange==="function"&&y.getRange(o);if(b){let v=g(u,o,s-b),T=g(u,o,s+b);return{lo:v.lo,hi:T.hi}}}}return{lo:0,hi:u.length-1}}function Qd(a,o,s,r,l){let u=a.getSortedVisibleDatasetMetas(),d=s[o];for(let p=0,h=u.length;p<h;++p){let{index:g,data:y}=u[p],{lo:b,hi:v}=vP(u[p],o,d,l);for(let T=b;T<=v;++T){let M=y[T];if(!M.skip)r(M,g,T)}}}function SP(a){let o=a.indexOf("x")!==-1,s=a.indexOf("y")!==-1;return function(r,l){let u=o?Math.abs(r.x-l.x):0,d=s?Math.abs(r.y-l.y):0;return Math.sqrt(Math.pow(u,2)+Math.pow(d,2))}}function hv(a,o,s,r,l){let u=[];if(!l&&!a.isPointInArea(o))return u;return Qd(a,s,o,function(p,h,g){if(!l&&!as(p,a.chartArea,0))return;if(p.inRange(o.x,o.y,r))u.push({element:p,datasetIndex:h,index:g})},!0),u}function LP(a,o,s,r){let l=[];function u(d,p,h){let{startAngle:g,endAngle:y}=d.getProps(["startAngle","endAngle"],r),{angle:b}=xk(d,{x:o.x,y:o.y});if(Vx(b,g,y))l.push({element:d,datasetIndex:p,index:h})}return Qd(a,s,o,u),l}function CP(a,o,s,r,l,u){let d=[],p=SP(s),h=Number.POSITIVE_INFINITY;function g(y,b,v){let T=y.inRange(o.x,o.y,l);if(r&&!T)return;let M=y.getCenterPoint(l);if(!(!!u||a.isPointInArea(M))&&!T)return;let w=p(o,M);if(w<h)d=[{element:y,datasetIndex:b,index:v}],h=w;else if(w===h)d.push({element:y,datasetIndex:b,index:v})}return Qd(a,s,o,g),d}function mv(a,o,s,r,l,u){if(!u&&!a.isPointInArea(o))return[];return s==="r"&&!r?LP(a,o,s,l):CP(a,o,s,r,l,u)}function tM(a,o,s,r,l){let u=[],d=s==="x"?"inXRange":"inYRange",p=!1;if(Qd(a,s,o,(h,g,y)=>{if(h[d]&&h[d](o[s],l))u.push({element:h,datasetIndex:g,index:y}),p=p||h.inRange(o.x,o.y,l)}),r&&!p)return[];return u}var TP={evaluateInteractionItems:Qd,modes:{index(a,o,s,r){let l=ti(o,a),u=s.axis||"x",d=s.includeInvisible||!1,p=s.intersect?hv(a,l,u,r,d):mv(a,l,u,!1,r,d),h=[];if(!p.length)return[];return a.getSortedVisibleDatasetMetas().forEach((g)=>{let y=p[0].index,b=g.data[y];if(b&&!b.skip)h.push({element:b,datasetIndex:g.index,index:y})}),h},dataset(a,o,s,r){let l=ti(o,a),u=s.axis||"xy",d=s.includeInvisible||!1,p=s.intersect?hv(a,l,u,r,d):mv(a,l,u,!1,r,d);if(p.length>0){let h=p[0].datasetIndex,g=a.getDatasetMeta(h).data;p=[];for(let y=0;y<g.length;++y)p.push({element:g[y],datasetIndex:h,index:y})}return p},point(a,o,s,r){let l=ti(o,a),u=s.axis||"xy",d=s.includeInvisible||!1;return hv(a,l,u,r,d)},nearest(a,o,s,r){let l=ti(o,a),u=s.axis||"xy",d=s.includeInvisible||!1;return mv(a,l,u,s.intersect,r,d)},x(a,o,s,r){let l=ti(o,a);return tM(a,l,"x",s.intersect,r)},y(a,o,s,r){let l=ti(o,a);return tM(a,l,"y",s.intersect,r)}}},XM=["left","top","right","bottom"];function Fd(a,o){return a.filter((s)=>s.pos===o)}function aM(a,o){return a.filter((s)=>XM.indexOf(s.pos)===-1&&s.box.axis===o)}function qd(a,o){return a.sort((s,r)=>{let l=o?r:s,u=o?s:r;return l.weight===u.weight?l.index-u.index:l.weight-u.weight})}function wP(a){let o=[],s,r,l,u,d,p;for(s=0,r=(a||[]).length;s<r;++s)l=a[s],{position:u,options:{stack:d,stackWeight:p=1}}=l,o.push({index:s,box:l,pos:u,horizontal:l.isHorizontal(),weight:l.weight,stack:d&&u+d,stackWeight:p});return o}function kP(a){let o={};for(let s of a){let{stack:r,pos:l,stackWeight:u}=s;if(!r||!XM.includes(l))continue;let d=o[r]||(o[r]={count:0,placed:0,weight:0,size:0});d.count++,d.weight+=u}return o}function MP(a,o){let s=kP(a),{vBoxMaxWidth:r,hBoxMaxHeight:l}=o,u,d,p;for(u=0,d=a.length;u<d;++u){p=a[u];let{fullSize:h}=p.box,g=s[p.stack],y=g&&p.stackWeight/g.weight;if(p.horizontal)p.width=y?y*r:h&&o.availableWidth,p.height=l;else p.width=r,p.height=y?y*l:h&&o.availableHeight}return s}function IP(a){let o=wP(a),s=qd(o.filter((g)=>g.box.fullSize),!0),r=qd(Fd(o,"left"),!0),l=qd(Fd(o,"right")),u=qd(Fd(o,"top"),!0),d=qd(Fd(o,"bottom")),p=aM(o,"x"),h=aM(o,"y");return{fullSize:s,leftAndTop:r.concat(u),rightAndBottom:l.concat(h).concat(d).concat(p),chartArea:Fd(o,"chartArea"),vertical:r.concat(l).concat(h),horizontal:u.concat(d).concat(p)}}function oM(a,o,s,r){return Math.max(a[s],o[s])+Math.max(a[r],o[r])}function YM(a,o){a.top=Math.max(a.top,o.top),a.left=Math.max(a.left,o.left),a.bottom=Math.max(a.bottom,o.bottom),a.right=Math.max(a.right,o.right)}function AP(a,o,s,r){let{pos:l,box:u}=s,d=a.maxPadding;if(!it(l)){if(s.size)a[l]-=s.size;let b=r[s.stack]||{size:0,count:1};b.size=Math.max(b.size,s.horizontal?u.height:u.width),s.size=b.size/b.count,a[l]+=s.size}if(u.getPadding)YM(d,u.getPadding());let p=Math.max(0,o.outerWidth-oM(d,a,"left","right")),h=Math.max(0,o.outerHeight-oM(d,a,"top","bottom")),g=p!==a.w,y=h!==a.h;return a.w=p,a.h=h,s.horizontal?{same:g,other:y}:{same:y,other:g}}function RP(a){let o=a.maxPadding;function s(r){let l=Math.max(o[r]-a[r],0);return a[r]+=l,l}a.y+=s("top"),a.x+=s("left"),s("right"),s("bottom")}function DP(a,o){let s=o.maxPadding;function r(l){let u={left:0,top:0,right:0,bottom:0};return l.forEach((d)=>{u[d]=Math.max(o[d],s[d])}),u}return a?r(["left","right"]):r(["top","bottom"])}function Gd(a,o,s,r){let l=[],u,d,p,h,g,y;for(u=0,d=a.length,g=0;u<d;++u){p=a[u],h=p.box,h.update(p.width||o.w,p.height||o.h,DP(p.horizontal,o));let{same:b,other:v}=AP(o,s,p,r);if(g|=b&&l.length,y=y||v,!h.fullSize)l.push(p)}return g&&Gd(l,o,s,r)||y}function hm(a,o,s,r,l){a.top=s,a.left=o,a.right=o+r,a.bottom=s+l,a.width=r,a.height=l}function nM(a,o,s,r){let l=s.padding,{x:u,y:d}=o;for(let p of a){let h=p.box,g=r[p.stack]||{count:1,placed:0,weight:1},y=p.stackWeight/g.weight||1;if(p.horizontal){let b=o.w*y,v=g.size||h.height;if(Pu(g.start))d=g.start;if(h.fullSize)hm(h,l.left,d,s.outerWidth-l.right-l.left,v);else hm(h,o.left+g.placed,d,b,v);g.start=d,g.placed+=b,d=h.bottom}else{let b=o.h*y,v=g.size||h.width;if(Pu(g.start))u=g.start;if(h.fullSize)hm(h,u,l.top,v,s.outerHeight-l.bottom-l.top);else hm(h,u,o.top+g.placed,v,b);g.start=u,g.placed+=b,u=h.right}}o.x=u,o.y=d}var nn={addBox(a,o){if(!a.boxes)a.boxes=[];o.fullSize=o.fullSize||!1,o.position=o.position||"top",o.weight=o.weight||0,o._layers=o._layers||function(){return[{z:0,draw(s){o.draw(s)}}]},a.boxes.push(o)},removeBox(a,o){let s=a.boxes?a.boxes.indexOf(o):-1;if(s!==-1)a.boxes.splice(s,1)},configure(a,o,s){o.fullSize=s.fullSize,o.position=s.position,o.weight=s.weight},update(a,o,s,r){if(!a)return;let l=Na(a.options.layout.padding),u=Math.max(o-l.width,0),d=Math.max(s-l.height,0),p=IP(a.boxes),{vertical:h,horizontal:g}=p;Lt(a.boxes,(I)=>{if(typeof I.beforeLayout==="function")I.beforeLayout()});let y=h.reduce((I,w)=>w.box.options&&w.box.options.display===!1?I:I+1,0)||1,b=Object.freeze({outerWidth:o,outerHeight:s,padding:l,availableWidth:u,availableHeight:d,vBoxMaxWidth:u/2/y,hBoxMaxHeight:d/2}),v=Object.assign({},l);YM(v,Na(r));let T=Object.assign({maxPadding:v,w:u,h:d,x:l.left,y:l.top},l),M=MP(h.concat(g),b);if(Gd(p.fullSize,T,b,M),Gd(h,T,b,M),Gd(g,T,b,M))Gd(h,T,b,M);RP(T),nM(p.leftAndTop,T,b,M),T.x+=T.w,T.y+=T.h,nM(p.rightAndBottom,T,b,M),a.chartArea={left:T.left,top:T.top,right:T.left+T.w,bottom:T.top+T.h,height:T.h,width:T.w},Lt(p.chartArea,(I)=>{let w=I.box;Object.assign(w,a.chartArea),w.update(T.w,T.h,{left:0,top:0,right:0,bottom:0})})}};class Ev{acquireContext(a,o){}releaseContext(a){return!1}addEventListener(a,o,s){}removeEventListener(a,o,s){}getDevicePixelRatio(){return 1}getMaximumSize(a,o,s,r){return o=Math.max(0,o||a.width),s=s||a.height,{width:o,height:Math.max(0,r?Math.floor(o/r):s)}}isAttached(a){return!0}updateConfig(a){}}class $M extends Ev{acquireContext(a){return a&&a.getContext&&a.getContext("2d")||null}updateConfig(a){a.options.animation=!1}}var xm="$chartjs",_P={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},sM=(a)=>a===null||a==="";function EP(a,o){let s=a.style,r=a.getAttribute("height"),l=a.getAttribute("width");if(a[xm]={initial:{height:r,width:l,style:{display:s.display,height:s.height,width:s.width}}},s.display=s.display||"block",s.boxSizing=s.boxSizing||"border-box",sM(l)){let u=nv(a,"width");if(u!==void 0)a.width=u}if(sM(r))if(a.style.height==="")a.height=a.width/(o||2);else{let u=nv(a,"height");if(u!==void 0)a.height=u}return a}var WM=Fk?{passive:!0}:!1;function OP(a,o,s){if(a)a.addEventListener(o,s,WM)}function PP(a,o,s){if(a&&a.canvas)a.canvas.removeEventListener(o,s,WM)}function BP(a,o){let s=_P[a.type]||a.type,{x:r,y:l}=ti(a,o);return{type:s,chart:o,native:a,x:r!==void 0?r:null,y:l!==void 0?l:null}}function Sm(a,o){for(let s of a)if(s===o||s.contains(o))return!0}function NP(a,o,s){let r=a.canvas,l=new MutationObserver((u)=>{let d=!1;for(let p of u)d=d||Sm(p.addedNodes,r),d=d&&!Sm(p.removedNodes,r);if(d)s()});return l.observe(document,{childList:!0,subtree:!0}),l}function zP(a,o,s){let r=a.canvas,l=new MutationObserver((u)=>{let d=!1;for(let p of u)d=d||Sm(p.removedNodes,r),d=d&&!Sm(p.addedNodes,r);if(d)s()});return l.observe(document,{childList:!0,subtree:!0}),l}var $d=new Map,rM=0;function ZM(){let a=window.devicePixelRatio;if(a===rM)return;rM=a,$d.forEach((o,s)=>{if(s.currentDevicePixelRatio!==a)o()})}function HP(a,o){if(!$d.size)window.addEventListener("resize",ZM);$d.set(a,o)}function UP(a){if($d.delete(a),!$d.size)window.removeEventListener("resize",ZM)}function FP(a,o,s){let r=a.canvas,l=r&&fm(r);if(!l)return;let u=Yx((p,h)=>{let g=l.clientWidth;if(s(p,h),g<l.clientWidth)s()},window),d=new ResizeObserver((p)=>{let h=p[0],g=h.contentRect.width,y=h.contentRect.height;if(g===0&&y===0)return;u(g,y)});return d.observe(l),HP(a,u),d}function gv(a,o,s){if(s)s.disconnect();if(o==="resize")UP(a)}function qP(a,o,s){let r=a.canvas,l=Yx((u)=>{if(a.ctx!==null)s(BP(u,a))},a);return OP(r,o,l),l}class QM extends Ev{acquireContext(a,o){let s=a&&a.getContext&&a.getContext("2d");if(s&&s.canvas===a)return EP(a,o),s;return null}releaseContext(a){let o=a.canvas;if(!o[xm])return!1;let s=o[xm].initial;["height","width"].forEach((l)=>{let u=s[l];if(ht(u))o.removeAttribute(l);else o.setAttribute(l,u)});let r=s.style||{};return Object.keys(r).forEach((l)=>{o.style[l]=r[l]}),o.width=o.width,delete o[xm],!0}addEventListener(a,o,s){this.removeEventListener(a,o);let r=a.$proxies||(a.$proxies={}),u={attach:NP,detach:zP,resize:FP}[o]||qP;r[o]=u(a,o,s)}removeEventListener(a,o){let s=a.$proxies||(a.$proxies={}),r=s[o];if(!r)return;({attach:gv,detach:gv,resize:gv}[o]||PP)(a,o,r),s[o]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(a,o,s,r){return Uk(a,o,s,r)}isAttached(a){let o=a&&fm(a);return!!(o&&o.isConnected)}}function VP(a){if(!dm()||typeof OffscreenCanvas<"u"&&a instanceof OffscreenCanvas)return $M;return QM}class Gs{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(a){let{x:o,y:s}=this.getProps(["x","y"],a);return{x:o,y:s}}hasValue(){return Nu(this.x)&&Nu(this.y)}getProps(a,o){let s=this.$animations;if(!o||!s)return this;let r={};return a.forEach((l)=>{r[l]=s[l]&&s[l].active()?s[l]._to:this[l]}),r}}function jP(a,o){let s=a.options.ticks,r=GP(a),l=Math.min(s.maxTicksLimit||r,r),u=s.major.enabled?YP(o):[],d=u.length,p=u[0],h=u[d-1],g=[];if(d>l)return $P(o,g,u,d/l),g;let y=XP(u,o,l);if(d>0){let b,v,T=d>1?Math.round((h-p)/(d-1)):null;mm(o,g,y,ht(T)?0:p-T,p);for(b=0,v=d-1;b<v;b++)mm(o,g,y,u[b],u[b+1]);return mm(o,g,y,h,ht(T)?o.length:h+T),g}return mm(o,g,y),g}function GP(a){let o=a.options.offset,s=a._tickSize(),r=a._length/s+(o?0:1),l=a._maxLength/s;return Math.floor(Math.min(r,l))}function XP(a,o,s){let r=WP(a),l=o.length/s;if(!r)return Math.max(l,1);let u=bk(r);for(let d=0,p=u.length-1;d<p;d++){let h=u[d];if(h>l)return h}return Math.max(l,1)}function YP(a){let o=[],s,r;for(s=0,r=a.length;s<r;s++)if(a[s].major)o.push(s);return o}function $P(a,o,s,r){let l=0,u=s[0],d;r=Math.ceil(r);for(d=0;d<a.length;d++)if(d===u)o.push(a[d]),l++,u=s[l*r]}function mm(a,o,s,r,l){let u=Ke(r,0),d=Math.min(Ke(l,a.length),a.length),p=0,h,g,y;if(s=Math.ceil(s),l)h=l-r,s=h/Math.floor(h/s);y=u;while(y<0)p++,y=Math.round(u+p*s);for(g=Math.max(u,0);g<d;g++)if(g===y)o.push(a[g]),p++,y=Math.round(u+p*s)}function WP(a){let o=a.length,s,r;if(o<2)return!1;for(r=a[0],s=1;s<o;++s)if(a[s]-a[s-1]!==r)return!1;return r}var ZP=(a)=>a==="left"?"right":a==="right"?"left":a,iM=(a,o,s)=>o==="top"||o==="left"?a[o]+s:a[o]-s,lM=(a,o)=>Math.min(o||a,a);function uM(a,o){let s=[],r=a.length/o,l=a.length,u=0;for(;u<l;u+=r)s.push(a[Math.floor(u)]);return s}function QP(a,o,s){let r=a.ticks.length,l=Math.min(o,r-1),{_startPixel:u,_endPixel:d}=a,p=0.000001,h=a.getPixelForTick(l),g;if(s){if(r===1)g=Math.max(h-u,d-h);else if(o===0)g=(a.getPixelForTick(1)-h)/2;else g=(h-a.getPixelForTick(l-1))/2;if(h+=l<o?g:-g,h<u-0.000001||h>d+0.000001)return}return h}function KP(a,o){Lt(a,(s)=>{let r=s.gc,l=r.length/2,u;if(l>o){for(u=0;u<l;++u)delete s.data[r[u]];r.splice(0,l)}})}function Vd(a){return a.drawTicks?a.tickLength:0}function cM(a,o){if(!a.display)return 0;let s=ha(a.font,o),r=Na(a.padding);return(zt(a.text)?a.text.length:1)*s.lineHeight+r.height}function JP(a,o){return qs(a,{scale:o,type:"scale"})}function eB(a,o,s){return qs(a,{tick:s,index:o,type:"tick"})}function tB(a,o,s){let r=rm(a);if(s&&o!=="right"||!s&&o==="right")r=ZP(r);return r}function aB(a,o,s,r){let{top:l,left:u,bottom:d,right:p,chart:h}=a,{chartArea:g,scales:y}=h,b=0,v,T,M,I=d-l,w=p-u;if(a.isHorizontal()){if(T=Ba(r,u,p),it(s)){let A=Object.keys(s)[0],B=s[A];M=y[A].getPixelForValue(B)+I-o}else if(s==="center")M=(g.bottom+g.top)/2+I-o;else M=iM(a,s,o);v=p-u}else{if(it(s)){let A=Object.keys(s)[0],B=s[A];T=y[A].getPixelForValue(B)-w+o}else if(s==="center")T=(g.left+g.right)/2-w+o;else T=iM(a,s,o);M=Ba(r,d,l),b=s==="left"?-po:po}return{titleX:T,titleY:M,maxWidth:v,rotation:b}}class cl extends Gs{constructor(a){super();this.id=a.id,this.type=a.type,this.options=void 0,this.ctx=a.ctx,this.chart=a.chart,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._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(a){this.options=a.setContext(this.getContext()),this.axis=a.axis,this._userMin=this.parse(a.min),this._userMax=this.parse(a.max),this._suggestedMin=this.parse(a.suggestedMin),this._suggestedMax=this.parse(a.suggestedMax)}parse(a,o){return a}getUserBounds(){let{_userMin:a,_userMax:o,_suggestedMin:s,_suggestedMax:r}=this;return a=go(a,Number.POSITIVE_INFINITY),o=go(o,Number.NEGATIVE_INFINITY),s=go(s,Number.POSITIVE_INFINITY),r=go(r,Number.NEGATIVE_INFINITY),{min:go(a,s),max:go(o,r),minDefined:Kt(a),maxDefined:Kt(o)}}getMinMax(a){let{min:o,max:s,minDefined:r,maxDefined:l}=this.getUserBounds(),u;if(r&&l)return{min:o,max:s};let d=this.getMatchingVisibleMetas();for(let p=0,h=d.length;p<h;++p){if(u=d[p].controller.getMinMax(this,a),!r)o=Math.min(o,u.min);if(!l)s=Math.max(s,u.max)}return o=l&&o>s?s:o,s=r&&o>s?o:s,{min:go(o,go(s,o)),max:go(s,go(o,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let a=this.chart.data;return this.options.labels||(this.isHorizontal()?a.xLabels:a.yLabels)||a.labels||[]}getLabelItems(a=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(a))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){Ot(this.options.beforeUpdate,[this])}update(a,o,s){let{beginAtZero:r,grace:l,ticks:u}=this.options,d=u.sampleSize;if(this.beforeUpdate(),this.maxWidth=a,this.maxHeight=o,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,!this._dataLimitsCached)this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Ok(this,l,r),this._dataLimitsCached=!0;this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let p=d<this.ticks.length;if(this._convertTicksToLabels(p?uM(this.ticks,d):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),u.display&&(u.autoSkip||u.source==="auto"))this.ticks=jP(this,this.ticks),this._labelSizes=null,this.afterAutoSkip();if(p)this._convertTicksToLabels(this.ticks);this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let a=this.options.reverse,o,s;if(this.isHorizontal())o=this.left,s=this.right;else o=this.top,s=this.bottom,a=!a;this._startPixel=o,this._endPixel=s,this._reversePixels=a,this._length=s-o,this._alignToPixels=this.options.alignToPixels}afterUpdate(){Ot(this.options.afterUpdate,[this])}beforeSetDimensions(){Ot(this.options.beforeSetDimensions,[this])}setDimensions(){if(this.isHorizontal())this.width=this.maxWidth,this.left=0,this.right=this.width;else this.height=this.maxHeight,this.top=0,this.bottom=this.height;this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){Ot(this.options.afterSetDimensions,[this])}_callHooks(a){this.chart.notifyPlugins(a,this.getContext()),Ot(this.options[a],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){Ot(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(a){let o=this.options.ticks,s,r,l;for(s=0,r=a.length;s<r;s++)l=a[s],l.label=Ot(o.callback,[l.value,s,a],this)}afterTickToLabelConversion(){Ot(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){Ot(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){let a=this.options,o=a.ticks,s=lM(this.ticks.length,a.ticks.maxTicksLimit),r=o.minRotation||0,l=o.maxRotation,u=r,d,p,h;if(!this._isVisible()||!o.display||r>=l||s<=1||!this.isHorizontal()){this.labelRotation=r;return}let g=this._getLabelSizes(),y=g.widest.width,b=g.highest.height,v=mo(this.chart.width-y,0,this.maxWidth);if(d=a.offset?this.maxWidth/s:v/(s-1),y+6>d)d=v/(s-(a.offset?0.5:1)),p=this.maxHeight-Vd(a.grid)-o.padding-cM(a.title,this.chart.options.font),h=Math.sqrt(y*y+b*b),u=nm(Math.min(Math.asin(mo((g.highest.height+6)/d,-1,1)),Math.asin(mo(p/h,-1,1))-Math.asin(mo(b/h,-1,1)))),u=Math.max(r,Math.min(l,u));this.labelRotation=u}afterCalculateLabelRotation(){Ot(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){Ot(this.options.beforeFit,[this])}fit(){let a={width:0,height:0},{chart:o,options:{ticks:s,title:r,grid:l}}=this,u=this._isVisible(),d=this.isHorizontal();if(u){let p=cM(r,o.options.font);if(d)a.width=this.maxWidth,a.height=Vd(l)+p;else a.height=this.maxHeight,a.width=Vd(l)+p;if(s.display&&this.ticks.length){let{first:h,last:g,widest:y,highest:b}=this._getLabelSizes(),v=s.padding*2,T=Us(this.labelRotation),M=Math.cos(T),I=Math.sin(T);if(d){let w=s.mirror?0:I*y.width+M*b.height;a.height=Math.min(this.maxHeight,a.height+w+v)}else{let w=s.mirror?0:M*y.width+I*b.height;a.width=Math.min(this.maxWidth,a.width+w+v)}this._calculatePadding(h,g,I,M)}}if(this._handleMargins(),d)this.width=this._length=o.width-this._margins.left-this._margins.right,this.height=a.height;else this.width=a.width,this.height=this._length=o.height-this._margins.top-this._margins.bottom}_calculatePadding(a,o,s,r){let{ticks:{align:l,padding:u},position:d}=this.options,p=this.labelRotation!==0,h=d!=="top"&&this.axis==="x";if(this.isHorizontal()){let g=this.getPixelForTick(0)-this.left,y=this.right-this.getPixelForTick(this.ticks.length-1),b=0,v=0;if(p)if(h)b=r*a.width,v=s*o.height;else b=s*a.height,v=r*o.width;else if(l==="start")v=o.width;else if(l==="end")b=a.width;else if(l!=="inner")b=a.width/2,v=o.width/2;this.paddingLeft=Math.max((b-g+u)*this.width/(this.width-g),0),this.paddingRight=Math.max((v-y+u)*this.width/(this.width-y),0)}else{let g=o.height/2,y=a.height/2;if(l==="start")g=0,y=a.height;else if(l==="end")g=o.height,y=0;this.paddingTop=g+u,this.paddingBottom=y+u}}_handleMargins(){if(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(){Ot(this.options.afterFit,[this])}isHorizontal(){let{axis:a,position:o}=this.options;return o==="top"||o==="bottom"||a==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(a){this.beforeTickToLabelConversion(),this.generateTickLabels(a);let o,s;for(o=0,s=a.length;o<s;o++)if(ht(a[o].label))a.splice(o,1),s--,o--;this.afterTickToLabelConversion()}_getLabelSizes(){let a=this._labelSizes;if(!a){let o=this.options.ticks.sampleSize,s=this.ticks;if(o<s.length)s=uM(s,o);this._labelSizes=a=this._computeLabelSizes(s,s.length,this.options.ticks.maxTicksLimit)}return a}_computeLabelSizes(a,o,s){let{ctx:r,_longestTextCache:l}=this,u=[],d=[],p=Math.floor(o/lM(o,s)),h=0,g=0,y,b,v,T,M,I,w,A,B,z,H;for(y=0;y<o;y+=p){if(T=a[y].label,M=this._resolveTickFontOptions(y),r.font=I=M.string,w=l[I]=l[I]||{data:{},gc:[]},A=M.lineHeight,B=z=0,!ht(T)&&!zt(T))B=Od(r,w.data,w.gc,B,T),z=A;else if(zt(T)){for(b=0,v=T.length;b<v;++b)if(H=T[b],!ht(H)&&!zt(H))B=Od(r,w.data,w.gc,B,H),z+=A}u.push(B),d.push(z),h=Math.max(B,h),g=Math.max(z,g)}KP(l,o);let q=u.indexOf(h),j=d.indexOf(g),G=(Y)=>({width:u[Y]||0,height:d[Y]||0});return{first:G(0),last:G(o-1),widest:G(q),highest:G(j),widths:u,heights:d}}getLabelForValue(a){return a}getPixelForValue(a,o){return NaN}getValueForPixel(a){}getPixelForTick(a){let o=this.ticks;if(a<0||a>o.length-1)return null;return this.getPixelForValue(o[a].value)}getPixelForDecimal(a){if(this._reversePixels)a=1-a;let o=this._startPixel+a*this._length;return vk(this._alignToPixels?Kr(this.chart,o,0):o)}getDecimalForPixel(a){let o=(a-this._startPixel)/this._length;return this._reversePixels?1-o:o}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:a,max:o}=this;return a<0&&o<0?o:a>0&&o>0?a:0}getContext(a){let o=this.ticks||[];if(a>=0&&a<o.length){let s=o[a];return s.$context||(s.$context=eB(this.getContext(),a,s))}return this.$context||(this.$context=JP(this.chart.getContext(),this))}_tickSize(){let a=this.options.ticks,o=Us(this.labelRotation),s=Math.abs(Math.cos(o)),r=Math.abs(Math.sin(o)),l=this._getLabelSizes(),u=a.autoSkipPadding||0,d=l?l.widest.width+u:0,p=l?l.highest.height+u:0;return this.isHorizontal()?p*s>d*r?d/s:p/r:p*r<d*s?p/s:d/r}_isVisible(){let a=this.options.display;if(a!=="auto")return!!a;return this.getMatchingVisibleMetas().length>0}_computeGridLineItems(a){let o=this.axis,s=this.chart,r=this.options,{grid:l,position:u,border:d}=r,p=l.offset,h=this.isHorizontal(),y=this.ticks.length+(p?1:0),b=Vd(l),v=[],T=d.setContext(this.getContext()),M=T.display?T.width:0,I=M/2,w=function(K){return Kr(s,K,M)},A,B,z,H,q,j,G,Y,J,X,se,ge;if(u==="top")A=w(this.bottom),j=this.bottom-b,Y=A-I,X=w(a.top)+I,ge=a.bottom;else if(u==="bottom")A=w(this.top),X=a.top,ge=w(a.bottom)-I,j=A+I,Y=this.top+b;else if(u==="left")A=w(this.right),q=this.right-b,G=A-I,J=w(a.left)+I,se=a.right;else if(u==="right")A=w(this.left),J=a.left,se=w(a.right)-I,q=A+I,G=this.left+b;else if(o==="x"){if(u==="center")A=w((a.top+a.bottom)/2+0.5);else if(it(u)){let K=Object.keys(u)[0],pe=u[K];A=w(this.chart.scales[K].getPixelForValue(pe))}X=a.top,ge=a.bottom,j=A+I,Y=j+b}else if(o==="y"){if(u==="center")A=w((a.left+a.right)/2);else if(it(u)){let K=Object.keys(u)[0],pe=u[K];A=w(this.chart.scales[K].getPixelForValue(pe))}q=A-I,G=q-b,J=a.left,se=a.right}let be=Ke(r.ticks.maxTicksLimit,y),Se=Math.max(1,Math.ceil(y/be));for(B=0;B<y;B+=Se){let K=this.getContext(B),pe=l.setContext(K),ye=d.setContext(K),{lineWidth:Ue,color:He}=pe,k=ye.dash||[],W=ye.dashOffset,{tickWidth:ee,tickColor:ne}=pe,te=pe.tickBorderDash||[],le=pe.tickBorderDashOffset;if(z=QP(this,B,p),z===void 0)continue;if(H=Kr(s,z,Ue),h)q=G=J=se=H;else j=Y=X=ge=H;v.push({tx1:q,ty1:j,tx2:G,ty2:Y,x1:J,y1:X,x2:se,y2:ge,width:Ue,color:He,borderDash:k,borderDashOffset:W,tickWidth:ee,tickColor:ne,tickBorderDash:te,tickBorderDashOffset:le})}return this._ticksLength=y,this._borderValue=A,v}_computeLabelItems(a){let o=this.axis,s=this.options,{position:r,ticks:l}=s,u=this.isHorizontal(),d=this.ticks,{align:p,crossAlign:h,padding:g,mirror:y}=l,b=Vd(s.grid),v=b+g,T=y?-g:v,M=-Us(this.labelRotation),I=[],w,A,B,z,H,q,j,G,Y,J,X,se,ge="middle";if(r==="top")q=this.bottom-T,j=this._getXAxisLabelAlignment();else if(r==="bottom")q=this.top+T,j=this._getXAxisLabelAlignment();else if(r==="left"){let Se=this._getYAxisLabelAlignment(b);j=Se.textAlign,H=Se.x}else if(r==="right"){let Se=this._getYAxisLabelAlignment(b);j=Se.textAlign,H=Se.x}else if(o==="x"){if(r==="center")q=(a.top+a.bottom)/2+v;else if(it(r)){let Se=Object.keys(r)[0],K=r[Se];q=this.chart.scales[Se].getPixelForValue(K)+v}j=this._getXAxisLabelAlignment()}else if(o==="y"){if(r==="center")H=(a.left+a.right)/2-v;else if(it(r)){let Se=Object.keys(r)[0],K=r[Se];H=this.chart.scales[Se].getPixelForValue(K)}j=this._getYAxisLabelAlignment(b).textAlign}if(o==="y"){if(p==="start")ge="top";else if(p==="end")ge="bottom"}let be=this._getLabelSizes();for(w=0,A=d.length;w<A;++w){B=d[w],z=B.label;let Se=l.setContext(this.getContext(w));G=this.getPixelForTick(w)+l.labelOffset,Y=this._resolveTickFontOptions(w),J=Y.lineHeight,X=zt(z)?z.length:1;let K=X/2,{color:pe,textStrokeColor:ye,textStrokeWidth:Ue}=Se,He=j;if(u){if(H=G,j==="inner")if(w===A-1)He=!this.options.reverse?"right":"left";else if(w===0)He=!this.options.reverse?"left":"right";else He="center";if(r==="top")if(h==="near"||M!==0)se=-X*J+J/2;else if(h==="center")se=-be.highest.height/2-K*J+J;else se=-be.highest.height+J/2;else if(h==="near"||M!==0)se=J/2;else if(h==="center")se=be.highest.height/2-K*J;else se=be.highest.height-X*J;if(y)se*=-1;if(M!==0&&!Se.showLabelBackdrop)H+=J/2*Math.sin(M)}else q=G,se=(1-X)*J/2;let k;if(Se.showLabelBackdrop){let W=Na(Se.backdropPadding),ee=be.heights[w],ne=be.widths[w],te=se-W.top,le=0-W.left;switch(ge){case"middle":te-=ee/2;break;case"bottom":te-=ee;break}switch(j){case"center":le-=ne/2;break;case"right":le-=ne;break;case"inner":if(w===A-1)le-=ne;else if(w>0)le-=ne/2;break}k={left:le,top:te,width:ne+W.width,height:ee+W.height,color:Se.backdropColor}}I.push({label:z,font:Y,textOffset:se,options:{rotation:M,color:pe,strokeColor:ye,strokeWidth:Ue,textAlign:He,textBaseline:ge,translation:[H,q],backdrop:k}})}return I}_getXAxisLabelAlignment(){let{position:a,ticks:o}=this.options;if(-Us(this.labelRotation))return a==="top"?"left":"right";let r="center";if(o.align==="start")r="left";else if(o.align==="end")r="right";else if(o.align==="inner")r="inner";return r}_getYAxisLabelAlignment(a){let{position:o,ticks:{crossAlign:s,mirror:r,padding:l}}=this.options,u=this._getLabelSizes(),d=a+l,p=u.widest.width,h,g;if(o==="left")if(r)if(g=this.right+l,s==="near")h="left";else if(s==="center")h="center",g+=p/2;else h="right",g+=p;else if(g=this.right-d,s==="near")h="right";else if(s==="center")h="center",g-=p/2;else h="left",g=this.left;else if(o==="right")if(r)if(g=this.left+l,s==="near")h="right";else if(s==="center")h="center",g-=p/2;else h="left",g-=p;else if(g=this.left+d,s==="near")h="left";else if(s==="center")h="center",g+=p/2;else h="right",g=this.right;else h="right";return{textAlign:h,x:g}}_computeLabelArea(){if(this.options.ticks.mirror)return;let a=this.chart,o=this.options.position;if(o==="left"||o==="right")return{top:0,left:this.left,bottom:a.height,right:this.right};if(o==="top"||o==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:a.width}}drawBackground(){let{ctx:a,options:{backgroundColor:o},left:s,top:r,width:l,height:u}=this;if(o)a.save(),a.fillStyle=o,a.fillRect(s,r,l,u),a.restore()}getLineWidthForValue(a){let o=this.options.grid;if(!this._isVisible()||!o.display)return 0;let r=this.ticks.findIndex((l)=>l.value===a);if(r>=0)return o.setContext(this.getContext(r)).lineWidth;return 0}drawGrid(a){let o=this.options.grid,s=this.ctx,r=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(a)),l,u,d=(p,h,g)=>{if(!g.width||!g.color)return;s.save(),s.lineWidth=g.width,s.strokeStyle=g.color,s.setLineDash(g.borderDash||[]),s.lineDashOffset=g.borderDashOffset,s.beginPath(),s.moveTo(p.x,p.y),s.lineTo(h.x,h.y),s.stroke(),s.restore()};if(o.display)for(l=0,u=r.length;l<u;++l){let p=r[l];if(o.drawOnChartArea)d({x:p.x1,y:p.y1},{x:p.x2,y:p.y2},p);if(o.drawTicks)d({x:p.tx1,y:p.ty1},{x:p.tx2,y:p.ty2},{color:p.tickColor,width:p.tickWidth,borderDash:p.tickBorderDash,borderDashOffset:p.tickBorderDashOffset})}}drawBorder(){let{chart:a,ctx:o,options:{border:s,grid:r}}=this,l=s.setContext(this.getContext()),u=s.display?l.width:0;if(!u)return;let d=r.setContext(this.getContext(0)).lineWidth,p=this._borderValue,h,g,y,b;if(this.isHorizontal())h=Kr(a,this.left,u)-u/2,g=Kr(a,this.right,d)+d/2,y=b=p;else y=Kr(a,this.top,u)-u/2,b=Kr(a,this.bottom,d)+d/2,h=g=p;o.save(),o.lineWidth=l.width,o.strokeStyle=l.color,o.beginPath(),o.moveTo(h,y),o.lineTo(g,b),o.stroke(),o.restore()}drawLabels(a){if(!this.options.ticks.display)return;let s=this.ctx,r=this._computeLabelArea();if(r)Nd(s,r);let l=this.getLabelItems(a);for(let u of l){let{options:d,font:p,label:h,textOffset:g}=u;Jr(s,h,0,g,p,d)}if(r)zd(s)}drawTitle(){let{ctx:a,options:{position:o,title:s,reverse:r}}=this;if(!s.display)return;let l=ha(s.font),u=Na(s.padding),d=s.align,p=l.lineHeight/2;if(o==="bottom"||o==="center"||it(o)){if(p+=u.bottom,zt(s.text))p+=l.lineHeight*(s.text.length-1)}else p+=u.top;let{titleX:h,titleY:g,maxWidth:y,rotation:b}=aB(this,p,o,d);Jr(a,s.text,0,0,l,{color:s.color,maxWidth:y,rotation:b,textAlign:tB(d,o,r),textBaseline:"middle",translation:[h,g]})}draw(a){if(!this._isVisible())return;this.drawBackground(),this.drawGrid(a),this.drawBorder(),this.drawTitle(),this.drawLabels(a)}_layers(){let a=this.options,o=a.ticks&&a.ticks.z||0,s=Ke(a.grid&&a.grid.z,-1),r=Ke(a.border&&a.border.z,0);if(!this._isVisible()||this.draw!==cl.prototype.draw)return[{z:o,draw:(l)=>{this.draw(l)}}];return[{z:s,draw:(l)=>{this.drawBackground(),this.drawGrid(l),this.drawTitle()}},{z:r,draw:()=>{this.drawBorder()}},{z:o,draw:(l)=>{this.drawLabels(l)}}]}getMatchingVisibleMetas(a){let o=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",r=[],l,u;for(l=0,u=o.length;l<u;++l){let d=o[l];if(d[s]===this.id&&(!a||d.type===a))r.push(d)}return r}_resolveTickFontOptions(a){let o=this.options.ticks.setContext(this.getContext(a));return ha(o.font)}_maxDigits(){let a=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/a}}class Xd{constructor(a,o,s){this.type=a,this.scope=o,this.override=s,this.items=Object.create(null)}isForType(a){return Object.prototype.isPrototypeOf.call(this.type.prototype,a.prototype)}register(a){let o=Object.getPrototypeOf(a),s;if(sB(o))s=this.register(o);let r=this.items,l=a.id,u=this.scope+"."+l;if(!l)throw Error("class does not have id: "+a);if(l in r)return u;if(r[l]=a,oB(a,u,s),this.override)Jt.override(a.id,a.overrides);return u}get(a){return this.items[a]}unregister(a){let o=this.items,s=a.id,r=this.scope;if(s in o)delete o[s];if(r&&s in Jt[r]){if(delete Jt[r][s],this.override)delete Qr[s]}}}function oB(a,o,s){let r=_u(Object.create(null),[s?Jt.get(s):{},Jt.get(o),a.defaults]);if(Jt.set(o,r),a.defaultRoutes)nB(o,a.defaultRoutes);if(a.descriptors)Jt.describe(o,a.descriptors)}function nB(a,o){Object.keys(o).forEach((s)=>{let r=s.split("."),l=r.pop(),u=[a].concat(r).join("."),d=o[s].split("."),p=d.pop(),h=d.join(".");Jt.route(u,l,h,p)})}function sB(a){return"id"in a&&"defaults"in a}class KM{constructor(){this.controllers=new Xd(Lm,"datasets",!0),this.elements=new Xd(Gs,"elements"),this.plugins=new Xd(Object,"plugins"),this.scales=new Xd(cl,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...a){this._each("register",a)}remove(...a){this._each("unregister",a)}addControllers(...a){this._each("register",a,this.controllers)}addElements(...a){this._each("register",a,this.elements)}addPlugins(...a){this._each("register",a,this.plugins)}addScales(...a){this._each("register",a,this.scales)}getController(a){return this._get(a,this.controllers,"controller")}getElement(a){return this._get(a,this.elements,"element")}getPlugin(a){return this._get(a,this.plugins,"plugin")}getScale(a){return this._get(a,this.scales,"scale")}removeControllers(...a){this._each("unregister",a,this.controllers)}removeElements(...a){this._each("unregister",a,this.elements)}removePlugins(...a){this._each("unregister",a,this.plugins)}removeScales(...a){this._each("unregister",a,this.scales)}_each(a,o,s){[...o].forEach((r)=>{let l=s||this._getRegistryForType(r);if(s||l.isForType(r)||l===this.plugins&&r.id)this._exec(a,l,r);else Lt(r,(u)=>{let d=s||this._getRegistryForType(u);this._exec(a,d,u)})})}_exec(a,o,s){let r=om(a);Ot(s["before"+r],[],s),o[a](s),Ot(s["after"+r],[],s)}_getRegistryForType(a){for(let o=0;o<this._typedRegistries.length;o++){let s=this._typedRegistries[o];if(s.isForType(a))return s}return this.plugins}_get(a,o,s){let r=o.get(a);if(r===void 0)throw Error('"'+a+'" is not a registered '+s+".");return r}}var ss=new KM;class JM{constructor(){this._init=void 0}notify(a,o,s,r){if(o==="beforeInit")this._init=this._createDescriptors(a,!0),this._notify(this._init,a,"install");if(this._init===void 0)return;let l=r?this._descriptors(a).filter(r):this._descriptors(a),u=this._notify(l,a,o,s);if(o==="afterDestroy")this._notify(l,a,"stop"),this._notify(this._init,a,"uninstall"),this._init=void 0;return u}_notify(a,o,s,r){r=r||{};for(let l of a){let u=l.plugin,d=u[s],p=[o,r,l.options];if(Ot(d,p,u)===!1&&r.cancelable)return!1}return!0}invalidate(){if(!ht(this._cache))this._oldCache=this._cache,this._cache=void 0}_descriptors(a){if(this._cache)return this._cache;let o=this._cache=this._createDescriptors(a);return this._notifyStateChanges(a),o}_createDescriptors(a,o){let s=a&&a.config,r=Ke(s.options&&s.options.plugins,{}),l=rB(s);return r===!1&&!o?[]:lB(a,l,r,o)}_notifyStateChanges(a){let o=this._oldCache||[],s=this._cache,r=(l,u)=>l.filter((d)=>!u.some((p)=>d.plugin.id===p.plugin.id));this._notify(r(o,s),a,"stop"),this._notify(r(s,o),a,"start")}}function rB(a){let o={},s=[],r=Object.keys(ss.plugins.items);for(let u=0;u<r.length;u++)s.push(ss.getPlugin(r[u]));let l=a.plugins||[];for(let u=0;u<l.length;u++){let d=l[u];if(s.indexOf(d)===-1)s.push(d),o[d.id]=!0}return{plugins:s,localIds:o}}function iB(a,o){if(!o&&a===!1)return null;if(a===!0)return{};return a}function lB(a,{plugins:o,localIds:s},r,l){let u=[],d=a.getContext();for(let p of o){let h=p.id,g=iB(r[h],l);if(g===null)continue;u.push({plugin:p,options:uB(a.config,{plugin:p,local:s[h]},g,d)})}return u}function uB(a,{plugin:o,local:s},r,l){let u=a.pluginScopeKeys(o),d=a.getOptionScopes(r,u);if(s&&o.defaults)d.push(o.defaults);return a.createResolver(d,l,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Sv(a,o){let s=Jt.datasets[a]||{};return((o.datasets||{})[a]||{}).indexAxis||o.indexAxis||s.indexAxis||"x"}function cB(a,o){let s=a;if(a==="_index_")s=o;else if(a==="_value_")s=o==="x"?"y":"x";return s}function dB(a,o){return a===o?"_index_":"_value_"}function dM(a){if(a==="x"||a==="y"||a==="r")return a}function fB(a){if(a==="top"||a==="bottom")return"x";if(a==="left"||a==="right")return"y"}function Lv(a,...o){if(dM(a))return a;for(let s of o){let r=s.axis||fB(s.position)||a.length>1&&dM(a[0].toLowerCase());if(r)return r}throw Error(`Cannot determine type of '${a}' axis. Please provide 'axis' or 'position' option.`)}function fM(a,o,s){if(s[o+"AxisID"]===a)return{axis:o}}function pB(a,o){if(o.data&&o.data.datasets){let s=o.data.datasets.filter((r)=>r.xAxisID===a||r.yAxisID===a);if(s.length)return fM(a,"x",s[0])||fM(a,"y",s[0])}return{}}function hB(a,o){let s=Qr[a.type]||{scales:{}},r=o.scales||{},l=Sv(a.type,o),u=Object.create(null);return Object.keys(r).forEach((d)=>{let p=r[d];if(!it(p))return console.error(`Invalid scale configuration for scale: ${d}`);if(p._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${d}`);let h=Lv(d,p,pB(d,a),Jt.scales[p.type]),g=dB(h,l),y=s.scales||{};u[d]=Ou(Object.create(null),[{axis:h},p,y[h],y[g]])}),a.data.datasets.forEach((d)=>{let p=d.type||a.type,h=d.indexAxis||Sv(p,o),y=(Qr[p]||{}).scales||{};Object.keys(y).forEach((b)=>{let v=cB(b,h),T=d[v+"AxisID"]||v;u[T]=u[T]||Object.create(null),Ou(u[T],[{axis:v},r[T],y[b]])})}),Object.keys(u).forEach((d)=>{let p=u[d];Ou(p,[Jt.scales[p.type],Jt.scale])}),u}function eI(a){let o=a.options||(a.options={});o.plugins=Ke(o.plugins,{}),o.scales=hB(a,o)}function tI(a){return a=a||{},a.datasets=a.datasets||[],a.labels=a.labels||[],a}function mB(a){return a=a||{},a.data=tI(a.data),eI(a),a}var pM=new Map,aI=new Set;function gm(a,o){let s=pM.get(a);if(!s)s=o(),pM.set(a,s),aI.add(s);return s}var jd=(a,o,s)=>{let r=rl(o,s);if(r!==void 0)a.add(r)};class oI{constructor(a){this._config=mB(a),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(a){this._config.type=a}get data(){return this._config.data}set data(a){this._config.data=tI(a)}get options(){return this._config.options}set options(a){this._config.options=a}get plugins(){return this._config.plugins}update(){let a=this._config;this.clearCache(),eI(a)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(a){return gm(a,()=>[[`datasets.${a}`,""]])}datasetAnimationScopeKeys(a,o){return gm(`${a}.transition.${o}`,()=>[[`datasets.${a}.transitions.${o}`,`transitions.${o}`],[`datasets.${a}`,""]])}datasetElementScopeKeys(a,o){return gm(`${a}-${o}`,()=>[[`datasets.${a}.elements.${o}`,`datasets.${a}`,`elements.${o}`,""]])}pluginScopeKeys(a){let o=a.id,s=this.type;return gm(`${s}-plugin-${o}`,()=>[[`plugins.${o}`,...a.additionalOptionScopes||[]]])}_cachedScopes(a,o){let s=this._scopeCache,r=s.get(a);if(!r||o)r=new Map,s.set(a,r);return r}getOptionScopes(a,o,s){let{options:r,type:l}=this,u=this._cachedScopes(a,s),d=u.get(o);if(d)return d;let p=new Set;o.forEach((g)=>{if(a)p.add(a),g.forEach((y)=>jd(p,a,y));g.forEach((y)=>jd(p,r,y)),g.forEach((y)=>jd(p,Qr[l]||{},y)),g.forEach((y)=>jd(p,Jt,y)),g.forEach((y)=>jd(p,lm,y))});let h=Array.from(p);if(h.length===0)h.push(Object.create(null));if(aI.has(o))u.set(o,h);return h}chartOptionScopes(){let{options:a,type:o}=this;return[a,Qr[o]||{},Jt.datasets[o]||{},{type:o},Jt,lm]}resolveNamedOptions(a,o,s,r=[""]){let l={$shared:!0},{resolver:u,subPrefixes:d}=hM(this._resolverCache,a,r),p=u;if(bB(u,o)){l.$shared=!1,s=zs(s)?s():s;let h=this.createResolver(a,s,d);p=sl(u,s,h)}for(let h of o)l[h]=p[h];return l}createResolver(a,o,s=[""],r){let{resolver:l}=hM(this._resolverCache,a,s);return it(o)?sl(l,o,void 0,r):l}}function hM(a,o,s){let r=a.get(o);if(!r)r=new Map,a.set(o,r);let l=s.join(),u=r.get(l);if(!u)u={resolver:cm(o,s),subPrefixes:s.filter((p)=>!p.toLowerCase().includes("hover"))},r.set(l,u);return u}var gB=(a)=>it(a)&&Object.getOwnPropertyNames(a).some((o)=>zs(a[o]));function bB(a,o){let{isScriptable:s,isIndexable:r}=ev(a);for(let l of o){let u=s(l),d=r(l),p=(d||u)&&a[l];if(u&&(zs(p)||gB(p))||d&&zt(p))return!0}return!1}var yB="4.5.1",xB=["top","bottom","left","right","chartArea"];function mM(a,o){return a==="top"||a==="bottom"||xB.indexOf(a)===-1&&o==="x"}function gM(a,o){return function(s,r){return s[a]===r[a]?s[o]-r[o]:s[a]-r[a]}}function bM(a){let o=a.chart,s=o.options.animation;o.notifyPlugins("afterRender"),Ot(s&&s.onComplete,[a],o)}function vB(a){let o=a.chart,s=o.options.animation;Ot(s&&s.onProgress,[a],o)}function nI(a){if(dm()&&typeof a==="string")a=document.getElementById(a);else if(a&&a.length)a=a[0];if(a&&a.canvas)a=a.canvas;return a}var vm={},yM=(a)=>{let o=nI(a);return Object.values(vm).filter((s)=>s.canvas===o).pop()};function SB(a,o,s){let r=Object.keys(a);for(let l of r){let u=+l;if(u>=o){let d=a[l];if(delete a[l],s>0||u>o)a[u+s]=d}}}function LB(a,o,s,r){if(!s||a.type==="mouseout")return null;if(r)return o;return a}class dl{static defaults=Jt;static instances=vm;static overrides=Qr;static registry=ss;static version=yB;static getChart=yM;static register(...a){ss.add(...a),xM()}static unregister(...a){ss.remove(...a),xM()}constructor(a,o){let s=this.config=new oI(o),r=nI(a),l=yM(r);if(l)throw Error("Canvas is already in use. Chart with ID '"+l.id+"' must be destroyed before the canvas with ID '"+l.canvas.id+"' can be reused.");let u=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||VP(r)),this.platform.updateConfig(s);let d=this.platform.acquireContext(r,u.aspectRatio),p=d&&d.canvas,h=p&&p.height,g=p&&p.width;if(this.id=pk(),this.ctx=d,this.canvas=p,this.width=g,this.height=h,this._options=u,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 JM,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=wk((y)=>this.update(y),u.resizeDelay||0),this._dataChanges=[],vm[this.id]=this,!d||!p){console.error("Failed to create chart: can't acquire context from the given item");return}if(Vs.listen(this,"complete",bM),Vs.listen(this,"progress",vB),this._initialize(),this.attached)this.update()}get aspectRatio(){let{options:{aspectRatio:a,maintainAspectRatio:o},width:s,height:r,_aspectRatio:l}=this;if(!ht(a))return a;if(o&&l)return l;return r?s/r:null}get data(){return this.config.data}set data(a){this.config.data=a}get options(){return this._options}set options(a){this.config.options=a}get registry(){return ss}_initialize(){if(this.notifyPlugins("beforeInit"),this.options.responsive)this.resize();else ov(this,this.options.devicePixelRatio);return this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Zx(this.canvas,this.ctx),this}stop(){return Vs.stop(this),this}resize(a,o){if(!Vs.running(this))this._resize(a,o);else this._resizeBeforeDraw={width:a,height:o}}_resize(a,o){let s=this.options,r=this.canvas,l=s.maintainAspectRatio&&this.aspectRatio,u=this.platform.getMaximumSize(r,a,o,l),d=s.devicePixelRatio||this.platform.getDevicePixelRatio(),p=this.width?"resize":"attach";if(this.width=u.width,this.height=u.height,this._aspectRatio=this.aspectRatio,!ov(this,d,!0))return;if(this.notifyPlugins("resize",{size:u}),Ot(s.onResize,[this,u],this),this.attached){if(this._doResize(p))this.render()}}ensureScalesHaveIDs(){let o=this.options.scales||{};Lt(o,(s,r)=>{s.id=r})}buildOrUpdateScales(){let a=this.options,o=a.scales,s=this.scales,r=Object.keys(s).reduce((u,d)=>(u[d]=!1,u),{}),l=[];if(o)l=l.concat(Object.keys(o).map((u)=>{let d=o[u],p=Lv(u,d),h=p==="r",g=p==="x";return{options:d,dposition:h?"chartArea":g?"bottom":"left",dtype:h?"radialLinear":g?"category":"linear"}}));Lt(l,(u)=>{let d=u.options,p=d.id,h=Lv(p,d),g=Ke(d.type,u.dtype);if(d.position===void 0||mM(d.position,h)!==mM(u.dposition))d.position=u.dposition;r[p]=!0;let y=null;if(p in s&&s[p].type===g)y=s[p];else y=new(ss.getScale(g))({id:p,type:g,ctx:this.ctx,chart:this}),s[y.id]=y;y.init(d,a)}),Lt(r,(u,d)=>{if(!u)delete s[d]}),Lt(s,(u)=>{nn.configure(this,u,u.options),nn.addBox(this,u)})}_updateMetasets(){let a=this._metasets,o=this.data.datasets.length,s=a.length;if(a.sort((r,l)=>r.index-l.index),s>o){for(let r=o;r<s;++r)this._destroyDatasetMeta(r);a.splice(o,s-o)}this._sortedMetasets=a.slice(0).sort(gM("order","index"))}_removeUnreferencedMetasets(){let{_metasets:a,data:{datasets:o}}=this;if(a.length>o.length)delete this._stacks;a.forEach((s,r)=>{if(o.filter((l)=>l===s._dataset).length===0)this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){let a=[],o=this.data.datasets,s,r;this._removeUnreferencedMetasets();for(s=0,r=o.length;s<r;s++){let l=o[s],u=this.getDatasetMeta(s),d=l.type||this.config.type;if(u.type&&u.type!==d)this._destroyDatasetMeta(s),u=this.getDatasetMeta(s);if(u.type=d,u.indexAxis=l.indexAxis||Sv(d,this.options),u.order=l.order||0,u.index=s,u.label=""+l.label,u.visible=this.isDatasetVisible(s),u.controller)u.controller.updateIndex(s),u.controller.linkScales();else{let p=ss.getController(d),{datasetElementType:h,dataElementType:g}=Jt.datasets[d];Object.assign(p,{dataElementType:ss.getElement(g),datasetElementType:h&&ss.getElement(h)}),u.controller=new p(this,s),a.push(u.controller)}}return this._updateMetasets(),a}_resetElements(){Lt(this.data.datasets,(a,o)=>{this.getDatasetMeta(o).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(a){let o=this.config;o.update();let s=this._options=o.createResolver(o.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:a,cancelable:!0})===!1)return;let l=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let u=0;for(let h=0,g=this.data.datasets.length;h<g;h++){let{controller:y}=this.getDatasetMeta(h),b=!r&&l.indexOf(y)===-1;y.buildOrUpdateElements(b),u=Math.max(+y.getMaxOverflow(),u)}if(u=this._minPadding=s.layout.autoPadding?u:0,this._updateLayout(u),!r)Lt(l,(h)=>{h.reset()});this._updateDatasets(a),this.notifyPlugins("afterUpdate",{mode:a}),this._layers.sort(gM("z","_idx"));let{_active:d,_lastEvent:p}=this;if(p)this._eventHandler(p,!0);else if(d.length)this._updateHoverStyles(d,d,!0);this.render()}_updateScales(){Lt(this.scales,(a)=>{nn.removeBox(this,a)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let a=this.options,o=new Set(Object.keys(this._listeners)),s=new Set(a.events);if(!Hx(o,s)||!!this._responsiveListeners!==a.responsive)this.unbindEvents(),this.bindEvents()}_updateHiddenIndices(){let{_hiddenIndices:a}=this,o=this._getUniformDataChanges()||[];for(let{method:s,start:r,count:l}of o){let u=s==="_removeElements"?-l:l;SB(a,r,u)}}_getUniformDataChanges(){let a=this._dataChanges;if(!a||!a.length)return;this._dataChanges=[];let o=this.data.datasets.length,s=(l)=>new Set(a.filter((u)=>u[0]===l).map((u,d)=>d+","+u.splice(1).join(","))),r=s(0);for(let l=1;l<o;l++)if(!Hx(r,s(l)))return;return Array.from(r).map((l)=>l.split(",")).map((l)=>({method:l[1],start:+l[2],count:+l[3]}))}_updateLayout(a){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;nn.update(this,this.width,this.height,a);let o=this.chartArea,s=o.width<=0||o.height<=0;this._layers=[],Lt(this.boxes,(r)=>{if(s&&r.position==="chartArea")return;if(r.configure)r.configure();this._layers.push(...r._layers())},this),this._layers.forEach((r,l)=>{r._idx=l}),this.notifyPlugins("afterLayout")}_updateDatasets(a){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:a,cancelable:!0})===!1)return;for(let o=0,s=this.data.datasets.length;o<s;++o)this.getDatasetMeta(o).controller.configure();for(let o=0,s=this.data.datasets.length;o<s;++o)this._updateDataset(o,zs(a)?a({datasetIndex:o}):a);this.notifyPlugins("afterDatasetsUpdate",{mode:a})}_updateDataset(a,o){let s=this.getDatasetMeta(a),r={meta:s,index:a,mode:o,cancelable:!0};if(this.notifyPlugins("beforeDatasetUpdate",r)===!1)return;s.controller._update(o),r.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",r)}render(){if(this.notifyPlugins("beforeRender",{cancelable:!0})===!1)return;if(Vs.has(this)){if(this.attached&&!Vs.running(this))Vs.start(this)}else this.draw(),bM({chart:this})}draw(){let a;if(this._resizeBeforeDraw){let{width:s,height:r}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(s,r)}if(this.clear(),this.width<=0||this.height<=0)return;if(this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;let o=this._layers;for(a=0;a<o.length&&o[a].z<=0;++a)o[a].draw(this.chartArea);this._drawDatasets();for(;a<o.length;++a)o[a].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(a){let o=this._sortedMetasets,s=[],r,l;for(r=0,l=o.length;r<l;++r){let u=o[r];if(!a||u.visible)s.push(u)}return s}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;let a=this.getSortedVisibleDatasetMetas();for(let o=a.length-1;o>=0;--o)this._drawDataset(a[o]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(a){let o=this.ctx,s={meta:a,index:a.index,cancelable:!0},r=uv(this,a);if(this.notifyPlugins("beforeDatasetDraw",s)===!1)return;if(r)Nd(o,r);if(a.controller.draw(),r)zd(o);s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s)}isPointInArea(a){return as(a,this.chartArea,this._minPadding)}getElementsAtEventForMode(a,o,s,r){let l=TP.modes[o];if(typeof l==="function")return l(this,a,s,r);return[]}getDatasetMeta(a){let o=this.data.datasets[a],s=this._metasets,r=s.filter((l)=>l&&l._dataset===o).pop();if(!r)r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:o&&o.order||0,index:a,_dataset:o,_parsed:[],_sorted:!1},s.push(r);return r}getContext(){return this.$context||(this.$context=qs(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(a){let o=this.data.datasets[a];if(!o)return!1;let s=this.getDatasetMeta(a);return typeof s.hidden==="boolean"?!s.hidden:!o.hidden}setDatasetVisibility(a,o){let s=this.getDatasetMeta(a);s.hidden=!o}toggleDataVisibility(a){this._hiddenIndices[a]=!this._hiddenIndices[a]}getDataVisibility(a){return!this._hiddenIndices[a]}_updateVisibility(a,o,s){let r=s?"show":"hide",l=this.getDatasetMeta(a),u=l.controller._resolveAnimations(void 0,r);if(Pu(o))l.data[o].hidden=!s,this.update();else this.setDatasetVisibility(a,s),u.update(l,{visible:s}),this.update((d)=>d.datasetIndex===a?r:void 0)}hide(a,o){this._updateVisibility(a,o,!1)}show(a,o){this._updateVisibility(a,o,!0)}_destroyDatasetMeta(a){let o=this._metasets[a];if(o&&o.controller)o.controller._destroy();delete this._metasets[a]}_stop(){let a,o;this.stop(),Vs.remove(this);for(a=0,o=this.data.datasets.length;a<o;++a)this._destroyDatasetMeta(a)}destroy(){this.notifyPlugins("beforeDestroy");let{canvas:a,ctx:o}=this;if(this._stop(),this.config.clearCache(),a)this.unbindEvents(),Zx(a,o),this.platform.releaseContext(o),this.canvas=null,this.ctx=null;delete vm[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...a){return this.canvas.toDataURL(...a)}bindEvents(){if(this.bindUserEvents(),this.options.responsive)this.bindResponsiveEvents();else this.attached=!0}bindUserEvents(){let a=this._listeners,o=this.platform,s=(l,u)=>{o.addEventListener(this,l,u),a[l]=u},r=(l,u,d)=>{l.offsetX=u,l.offsetY=d,this._eventHandler(l)};Lt(this.options.events,(l)=>s(l,r))}bindResponsiveEvents(){if(!this._responsiveListeners)this._responsiveListeners={};let a=this._responsiveListeners,o=this.platform,s=(p,h)=>{o.addEventListener(this,p,h),a[p]=h},r=(p,h)=>{if(a[p])o.removeEventListener(this,p,h),delete a[p]},l=(p,h)=>{if(this.canvas)this.resize(p,h)},u,d=()=>{r("attach",d),this.attached=!0,this.resize(),s("resize",l),s("detach",u)};if(u=()=>{this.attached=!1,r("resize",l),this._stop(),this._resize(0,0),s("attach",d)},o.isAttached(this.canvas))d();else u()}unbindEvents(){Lt(this._listeners,(a,o)=>{this.platform.removeEventListener(this,o,a)}),this._listeners={},Lt(this._responsiveListeners,(a,o)=>{this.platform.removeEventListener(this,o,a)}),this._responsiveListeners=void 0}updateHoverStyle(a,o,s){let r=s?"set":"remove",l,u,d,p;if(o==="dataset")l=this.getDatasetMeta(a[0].datasetIndex),l.controller["_"+r+"DatasetHoverStyle"]();for(d=0,p=a.length;d<p;++d){u=a[d];let h=u&&this.getDatasetMeta(u.datasetIndex).controller;if(h)h[r+"HoverStyle"](u.element,u.datasetIndex,u.index)}}getActiveElements(){return this._active||[]}setActiveElements(a){let o=this._active||[],s=a.map(({datasetIndex:l,index:u})=>{let d=this.getDatasetMeta(l);if(!d)throw Error("No dataset found at index "+l);return{datasetIndex:l,element:d.data[u],index:u}});if(!Pd(s,o))this._active=s,this._lastEvent=null,this._updateHoverStyles(s,o)}notifyPlugins(a,o,s){return this._plugins.notify(this,a,o,s)}isPluginEnabled(a){return this._plugins._cache.filter((o)=>o.plugin.id===a).length===1}_updateHoverStyles(a,o,s){let r=this.options.hover,l=(p,h)=>p.filter((g)=>!h.some((y)=>g.datasetIndex===y.datasetIndex&&g.index===y.index)),u=l(o,a),d=s?a:l(a,o);if(u.length)this.updateHoverStyle(u,r.mode,!1);if(d.length&&r.mode)this.updateHoverStyle(d,r.mode,!0)}_eventHandler(a,o){let s={event:a,replay:o,cancelable:!0,inChartArea:this.isPointInArea(a)},r=(u)=>(u.options.events||this.options.events).includes(a.native.type);if(this.notifyPlugins("beforeEvent",s,r)===!1)return;let l=this._handleEvent(a,o,s.inChartArea);if(s.cancelable=!1,this.notifyPlugins("afterEvent",s,r),l||s.changed)this.render();return this}_handleEvent(a,o,s){let{_active:r=[],options:l}=this,u=o,d=this._getActiveElements(a,r,s,u),p=gk(a),h=LB(a,this._lastEvent,s,p);if(s){if(this._lastEvent=null,Ot(l.onHover,[a,d,this],this),p)Ot(l.onClick,[a,d,this],this)}let g=!Pd(d,r);if(g||o)this._active=d,this._updateHoverStyles(d,r,o);return this._lastEvent=h,g}_getActiveElements(a,o,s,r){if(a.type==="mouseout")return[];if(!s)return o;let l=this.options.hover;return this.getElementsAtEventForMode(a,l.mode,l,r)}}function xM(){return Lt(dl.instances,(a)=>a._plugins.invalidate())}function sI(a,o,s=o){a.lineCap=Ke(s.borderCapStyle,o.borderCapStyle),a.setLineDash(Ke(s.borderDash,o.borderDash)),a.lineDashOffset=Ke(s.borderDashOffset,o.borderDashOffset),a.lineJoin=Ke(s.borderJoinStyle,o.borderJoinStyle),a.lineWidth=Ke(s.borderWidth,o.borderWidth),a.strokeStyle=Ke(s.borderColor,o.borderColor)}function CB(a,o,s){a.lineTo(s.x,s.y)}function TB(a){if(a.stepped)return _k;if(a.tension||a.cubicInterpolationMode==="monotone")return Ek;return CB}function rI(a,o,s={}){let r=a.length,{start:l=0,end:u=r-1}=s,{start:d,end:p}=o,h=Math.max(l,d),g=Math.min(u,p),y=l<d&&u<d||l>p&&u>p;return{count:r,start:h,loop:o.loop,ilen:g<h&&!y?r+g-h:g-h}}function wB(a,o,s,r){let{points:l,options:u}=o,{count:d,start:p,loop:h,ilen:g}=rI(l,s,r),y=TB(u),{move:b=!0,reverse:v}=r||{},T,M,I;for(T=0;T<=g;++T){if(M=l[(p+(v?g-T:T))%d],M.skip)continue;else if(b)a.moveTo(M.x,M.y),b=!1;else y(a,I,M,v,u.stepped);I=M}if(h)M=l[(p+(v?g:0))%d],y(a,I,M,v,u.stepped);return!!h}function kB(a,o,s,r){let l=o.points,{count:u,start:d,ilen:p}=rI(l,s,r),{move:h=!0,reverse:g}=r||{},y=0,b=0,v,T,M,I,w,A,B=(H)=>(d+(g?p-H:H))%u,z=()=>{if(I!==w)a.lineTo(y,w),a.lineTo(y,I),a.lineTo(y,A)};if(h)T=l[B(0)],a.moveTo(T.x,T.y);for(v=0;v<=p;++v){if(T=l[B(v)],T.skip)continue;let H=T.x,q=T.y,j=H|0;if(j===M){if(q<I)I=q;else if(q>w)w=q;y=(b*y+H)/++b}else z(),a.lineTo(H,q),M=j,b=0,I=w=q;A=q}z()}function Cv(a){let o=a.options,s=o.borderDash&&o.borderDash.length;return!a._decimated&&!a._loop&&!o.tension&&o.cubicInterpolationMode!=="monotone"&&!o.stepped&&!s?kB:wB}function MB(a){if(a.stepped)return qk;if(a.tension||a.cubicInterpolationMode==="monotone")return Vk;return $r}function IB(a,o,s,r){let l=o._path;if(!l){if(l=o._path=new Path2D,o.path(l,s,r))l.closePath()}sI(a,o.options),a.stroke(l)}function AB(a,o,s,r){let{segments:l,options:u}=o,d=Cv(o);for(let p of l){if(sI(a,u,p.style),a.beginPath(),d(a,o,p,{start:s,end:s+r-1}))a.closePath();a.stroke()}}var RB=typeof Path2D==="function";function DB(a,o,s,r){if(RB&&!o.options.segment)IB(a,o,s,r);else AB(a,o,s,r)}class Hu extends Gs{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:(a)=>a!=="borderDash"&&a!=="fill"};constructor(a){super();if(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,a)Object.assign(this,a)}updateControlPoints(a,o){let s=this.options;if((s.tension||s.cubicInterpolationMode==="monotone")&&!s.stepped&&!this._pointsUpdated){let r=s.spanGaps?this._loop:this._fullLoop;Hk(this._points,s,a,r,o),this._pointsUpdated=!0}}set points(a){this._points=a,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Gk(this,this.options.segment))}first(){let a=this.segments,o=this.points;return a.length&&o[a[0].start]}last(){let a=this.segments,o=this.points,s=a.length;return s&&o[a[s-1].end]}interpolate(a,o){let s=this.options,r=a[o],l=this.points,u=lv(this,{property:o,start:r,end:r});if(!u.length)return;let d=[],p=MB(s),h,g;for(h=0,g=u.length;h<g;++h){let{start:y,end:b}=u[h],v=l[y],T=l[b];if(v===T){d.push(v);continue}let M=Math.abs((r-v[o])/(T[o]-v[o])),I=p(v,T,M,s.stepped);I[o]=a[o],d.push(I)}return d.length===1?d[0]:d}pathSegment(a,o,s){return Cv(this)(a,this,o,s)}path(a,o,s){let r=this.segments,l=Cv(this),u=this._loop;o=o||0,s=s||this.points.length-o;for(let d of r)u&=l(a,this,d,{start:o,end:o+s-1});return!!u}draw(a,o,s,r){let l=this.options||{};if((this.points||[]).length&&l.borderWidth)a.save(),DB(a,this,s,r),a.restore();if(this.animated)this._pointsUpdated=!1,this._path=void 0}}function vM(a,o,s,r){let l=a.options,{[s]:u}=a.getProps([s],r);return Math.abs(o-u)<l.radius+l.hitRadius}class Ov extends Gs{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(a){super();if(this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,a)Object.assign(this,a)}inRange(a,o,s){let r=this.options,{x:l,y:u}=this.getProps(["x","y"],s);return Math.pow(a-l,2)+Math.pow(o-u,2)<Math.pow(r.hitRadius+r.radius,2)}inXRange(a,o){return vM(this,a,"x",o)}inYRange(a,o){return vM(this,a,"y",o)}getCenterPoint(a){let{x:o,y:s}=this.getProps(["x","y"],a);return{x:o,y:s}}size(a){a=a||this.options||{};let o=a.radius||0;o=Math.max(o,o&&a.hoverRadius||0);let s=o&&a.borderWidth||0;return(o+s)*2}draw(a,o){let s=this.options;if(this.skip||s.radius<0.1||!as(this,o,this.size(s)/2))return;a.strokeStyle=s.borderColor,a.lineWidth=s.borderWidth,a.fillStyle=s.backgroundColor,um(a,s,this.x,this.y)}getRange(){let a=this.options||{};return a.radius+a.hitRadius}}function iI(a,o){let{x:s,y:r,base:l,width:u,height:d}=a.getProps(["x","y","base","width","height"],o),p,h,g,y,b;if(a.horizontal)b=d/2,p=Math.min(s,l),h=Math.max(s,l),g=r-b,y=r+b;else b=u/2,p=s-b,h=s+b,g=Math.min(r,l),y=Math.max(r,l);return{left:p,top:g,right:h,bottom:y}}function ai(a,o,s,r){return a?0:mo(o,s,r)}function _B(a,o,s){let r=a.options.borderWidth,l=a.borderSkipped,u=Jx(r);return{t:ai(l.top,u.top,0,s),r:ai(l.right,u.right,0,o),b:ai(l.bottom,u.bottom,0,s),l:ai(l.left,u.left,0,o)}}function EB(a,o,s){let{enableBorderRadius:r}=a.getProps(["enableBorderRadius"]),l=a.options.borderRadius,u=ei(l),d=Math.min(o,s),p=a.borderSkipped,h=r||it(l);return{topLeft:ai(!h||p.top||p.left,u.topLeft,0,d),topRight:ai(!h||p.top||p.right,u.topRight,0,d),bottomLeft:ai(!h||p.bottom||p.left,u.bottomLeft,0,d),bottomRight:ai(!h||p.bottom||p.right,u.bottomRight,0,d)}}function OB(a){let o=iI(a),s=o.right-o.left,r=o.bottom-o.top,l=_B(a,s/2,r/2),u=EB(a,s/2,r/2);return{outer:{x:o.left,y:o.top,w:s,h:r,radius:u},inner:{x:o.left+l.l,y:o.top+l.t,w:s-l.l-l.r,h:r-l.t-l.b,radius:{topLeft:Math.max(0,u.topLeft-Math.max(l.t,l.l)),topRight:Math.max(0,u.topRight-Math.max(l.t,l.r)),bottomLeft:Math.max(0,u.bottomLeft-Math.max(l.b,l.l)),bottomRight:Math.max(0,u.bottomRight-Math.max(l.b,l.r))}}}}function bv(a,o,s,r){let l=o===null,u=s===null,p=a&&!(l&&u)&&iI(a,r);return p&&(l||Fs(o,p.left,p.right))&&(u||Fs(s,p.top,p.bottom))}function PB(a){return a.topLeft||a.topRight||a.bottomLeft||a.bottomRight}function BB(a,o){a.rect(o.x,o.y,o.w,o.h)}function yv(a,o,s={}){let r=a.x!==s.x?-o:0,l=a.y!==s.y?-o:0,u=(a.x+a.w!==s.x+s.w?o:0)-r,d=(a.y+a.h!==s.y+s.h?o:0)-l;return{x:a.x+r,y:a.y+l,w:a.w+u,h:a.h+d,radius:a.radius}}class Pv extends Gs{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(a){super();if(this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,a)Object.assign(this,a)}draw(a){let{inflateAmount:o,options:{borderColor:s,backgroundColor:r}}=this,{inner:l,outer:u}=OB(this),d=PB(u.radius)?zu:BB;if(a.save(),u.w!==l.w||u.h!==l.h)a.beginPath(),d(a,yv(u,o,l)),a.clip(),d(a,yv(l,-o,u)),a.fillStyle=s,a.fill("evenodd");a.beginPath(),d(a,yv(l,o)),a.fillStyle=r,a.fill(),a.restore()}inRange(a,o,s){return bv(this,a,o,s)}inXRange(a,o){return bv(this,a,null,o)}inYRange(a,o){return bv(this,null,a,o)}getCenterPoint(a){let{x:o,y:s,base:r,horizontal:l}=this.getProps(["x","y","base","horizontal"],a);return{x:l?(o+r)/2:o,y:l?s:(s+r)/2}}getRange(a){return a==="x"?this.width/2:this.height/2}}function NB(a,o,s){let{segments:r,points:l}=a,u=o.points,d=[];for(let p of r){let{start:h,end:g}=p;g=Cm(h,g,l);let y=Tv(s,l[h],l[g],p.loop);if(!o.segments){d.push({source:p,target:y,start:l[h],end:l[g]});continue}let b=lv(o,y);for(let v of b){let T=Tv(s,u[v.start],u[v.end],v.loop),M=iv(p,l,T);for(let I of M)d.push({source:I,target:v,start:{[s]:SM(y,T,"start",Math.max)},end:{[s]:SM(y,T,"end",Math.min)}})}}return d}function Tv(a,o,s,r){if(r)return;let l=o[a],u=s[a];if(a==="angle")l=fo(l),u=fo(u);return{property:a,start:l,end:u}}function zB(a,o){let{x:s=null,y:r=null}=a||{},l=o.points,u=[];return o.segments.forEach(({start:d,end:p})=>{p=Cm(d,p,l);let h=l[d],g=l[p];if(r!==null)u.push({x:h.x,y:r}),u.push({x:g.x,y:r});else if(s!==null)u.push({x:s,y:h.y}),u.push({x:s,y:g.y})}),u}function Cm(a,o,s){for(;o>a;o--){let r=s[o];if(!isNaN(r.x)&&!isNaN(r.y))break}return o}function SM(a,o,s,r){if(a&&o)return r(a[s],o[s]);return a?a[s]:o?o[s]:0}function lI(a,o){let s=[],r=!1;if(zt(a))r=!0,s=a;else s=zB(a,o);return s.length?new Hu({points:s,options:{tension:0},_loop:r,_fullLoop:r}):null}function LM(a){return a&&a.fill!==!1}function HB(a,o,s){let l=a[o].fill,u=[o],d;if(!s)return l;while(l!==!1&&u.indexOf(l)===-1){if(!Kt(l))return l;if(d=a[l],!d)return!1;if(d.visible)return l;u.push(l),l=d.fill}return!1}function UB(a,o,s){let r=jB(a);if(it(r))return isNaN(r.value)?!1:r;let l=parseFloat(r);if(Kt(l)&&Math.floor(l)===l)return FB(r[0],o,l,s);return["origin","start","end","stack","shape"].indexOf(r)>=0&&r}function FB(a,o,s,r){if(a==="-"||a==="+")s=o+s;if(s===o||s<0||s>=r)return!1;return s}function qB(a,o){let s=null;if(a==="start")s=o.bottom;else if(a==="end")s=o.top;else if(it(a))s=o.getPixelForValue(a.value);else if(o.getBasePixel)s=o.getBasePixel();return s}function VB(a,o,s){let r;if(a==="start")r=s;else if(a==="end")r=o.options.reverse?o.min:o.max;else if(it(a))r=a.value;else r=o.getBaseValue();return r}function jB(a){let o=a.options,s=o.fill,r=Ke(s&&s.target,s);if(r===void 0)r=!!o.backgroundColor;if(r===!1||r===null)return!1;if(r===!0)return"origin";return r}function GB(a){let{scale:o,index:s,line:r}=a,l=[],{segments:u,points:d}=r,p=XB(o,s);p.push(lI({x:null,y:o.bottom},r));for(let h=0;h<u.length;h++){let g=u[h];for(let y=g.start;y<=g.end;y++)YB(l,d[y],p)}return new Hu({points:l,options:{}})}function XB(a,o){let s=[],r=a.getMatchingVisibleMetas("line");for(let l=0;l<r.length;l++){let u=r[l];if(u.index===o)break;if(!u.hidden)s.unshift(u.dataset)}return s}function YB(a,o,s){let r=[];for(let l=0;l<s.length;l++){let u=s[l],{first:d,last:p,point:h}=$B(u,o,"x");if(!h||d&&p)continue;if(d)r.unshift(h);else if(a.push(h),!p)break}a.push(...r)}function $B(a,o,s){let r=a.interpolate(o,s);if(!r)return{};let l=r[s],{segments:u,points:d}=a,p=!1,h=!1;for(let g=0;g<u.length;g++){let y=u[g],b=d[y.start][s],v=d[y.end][s];if(Fs(l,b,v)){p=l===b,h=l===v;break}}return{first:p,last:h,point:r}}class Bv{constructor(a){this.x=a.x,this.y=a.y,this.radius=a.radius}pathSegment(a,o,s){let{x:r,y:l,radius:u}=this;return o=o||{start:0,end:ho},a.arc(r,l,u,o.end,o.start,!0),!s.bounds}interpolate(a){let{x:o,y:s,radius:r}=this,l=a.angle;return{x:o+Math.cos(l)*r,y:s+Math.sin(l)*r,angle:l}}}function WB(a){let{chart:o,fill:s,line:r}=a;if(Kt(s))return ZB(o,s);if(s==="stack")return GB(a);if(s==="shape")return!0;let l=QB(a);if(l instanceof Bv)return l;return lI(l,r)}function ZB(a,o){let s=a.getDatasetMeta(o);return s&&a.isDatasetVisible(o)?s.dataset:null}function QB(a){if((a.scale||{}).getPointPositionForValue)return JB(a);return KB(a)}function KB(a){let{scale:o={},fill:s}=a,r=qB(s,o);if(Kt(r)){let l=o.isHorizontal();return{x:l?r:null,y:l?null:r}}return null}function JB(a){let{scale:o,fill:s}=a,r=o.options,l=o.getLabels().length,u=r.reverse?o.max:o.min,d=VB(s,o,u),p=[];if(r.grid.circular){let h=o.getPointPositionForValue(0,u);return new Bv({x:h.x,y:h.y,radius:o.getDistanceFromCenterForValue(d)})}for(let h=0;h<l;++h)p.push(o.getPointPositionForValue(h,d));return p}function xv(a,o,s){let r=WB(o),{chart:l,index:u,line:d,scale:p,axis:h}=o,g=d.options,{fill:y,backgroundColor:b}=g,{above:v=b,below:T=b}=y||{},M=l.getDatasetMeta(u),I=uv(l,M);if(r&&d.points.length)Nd(a,s),eN(a,{line:d,target:r,above:v,below:T,area:s,scale:p,axis:h,clip:I}),zd(a)}function eN(a,o){let{line:s,target:r,above:l,below:u,area:d,scale:p,clip:h}=o,g=s._loop?"angle":o.axis;a.save();let y=u;if(u!==l){if(g==="x")CM(a,r,d.top),vv(a,{line:s,target:r,color:l,scale:p,property:g,clip:h}),a.restore(),a.save(),CM(a,r,d.bottom);else if(g==="y")TM(a,r,d.left),vv(a,{line:s,target:r,color:u,scale:p,property:g,clip:h}),a.restore(),a.save(),TM(a,r,d.right),y=l}vv(a,{line:s,target:r,color:y,scale:p,property:g,clip:h}),a.restore()}function CM(a,o,s){let{segments:r,points:l}=o,u=!0,d=!1;a.beginPath();for(let p of r){let{start:h,end:g}=p,y=l[h],b=l[Cm(h,g,l)];if(u)a.moveTo(y.x,y.y),u=!1;else a.lineTo(y.x,s),a.lineTo(y.x,y.y);if(d=!!o.pathSegment(a,p,{move:d}),d)a.closePath();else a.lineTo(b.x,s)}a.lineTo(o.first().x,s),a.closePath(),a.clip()}function TM(a,o,s){let{segments:r,points:l}=o,u=!0,d=!1;a.beginPath();for(let p of r){let{start:h,end:g}=p,y=l[h],b=l[Cm(h,g,l)];if(u)a.moveTo(y.x,y.y),u=!1;else a.lineTo(s,y.y),a.lineTo(y.x,y.y);if(d=!!o.pathSegment(a,p,{move:d}),d)a.closePath();else a.lineTo(s,b.y)}a.lineTo(s,o.first().y),a.closePath(),a.clip()}function vv(a,o){let{line:s,target:r,property:l,color:u,scale:d,clip:p}=o,h=NB(s,r,l);for(let{source:g,target:y,start:b,end:v}of h){let{style:{backgroundColor:T=u}={}}=g,M=r!==!0;a.save(),a.fillStyle=T,tN(a,d,p,M&&Tv(l,b,v)),a.beginPath();let I=!!s.pathSegment(a,g),w;if(M){if(I)a.closePath();else wM(a,r,v,l);let A=!!r.pathSegment(a,y,{move:I,reverse:!0});if(w=I&&A,!w)wM(a,r,b,l)}a.closePath(),a.fill(w?"evenodd":"nonzero"),a.restore()}}function tN(a,o,s,r){let l=o.chart.chartArea,{property:u,start:d,end:p}=r||{};if(u==="x"||u==="y"){let h,g,y,b;if(u==="x")h=d,g=l.top,y=p,b=l.bottom;else h=l.left,g=d,y=l.right,b=p;if(a.beginPath(),s)h=Math.max(h,s.left),y=Math.min(y,s.right),g=Math.max(g,s.top),b=Math.min(b,s.bottom);a.rect(h,g,y-h,b-g),a.clip()}}function wM(a,o,s,r){let l=o.interpolate(s,r);if(l)a.lineTo(l.x,l.y)}var uI={id:"filler",afterDatasetsUpdate(a,o,s){let r=(a.data.datasets||[]).length,l=[],u,d,p,h;for(d=0;d<r;++d){if(u=a.getDatasetMeta(d),p=u.dataset,h=null,p&&p.options&&p instanceof Hu)h={visible:a.isDatasetVisible(d),index:d,fill:UB(p,d,r),chart:a,axis:u.controller.options.indexAxis,scale:u.vScale,line:p};u.$filler=h,l.push(h)}for(d=0;d<r;++d){if(h=l[d],!h||h.fill===!1)continue;h.fill=HB(l,d,s.propagate)}},beforeDraw(a,o,s){let r=s.drawTime==="beforeDraw",l=a.getSortedVisibleDatasetMetas(),u=a.chartArea;for(let d=l.length-1;d>=0;--d){let p=l[d].$filler;if(!p)continue;if(p.line.updateControlPoints(u,p.axis),r&&p.fill)xv(a.ctx,p,u)}},beforeDatasetsDraw(a,o,s){if(s.drawTime!=="beforeDatasetsDraw")return;let r=a.getSortedVisibleDatasetMetas();for(let l=r.length-1;l>=0;--l){let u=r[l].$filler;if(LM(u))xv(a.ctx,u,a.chartArea)}},beforeDatasetDraw(a,o,s){let r=o.meta.$filler;if(!LM(r)||s.drawTime!=="beforeDatasetDraw")return;xv(a.ctx,r,a.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},kM=(a,o)=>{let{boxHeight:s=o,boxWidth:r=o}=a;if(a.usePointStyle)s=Math.min(s,o),r=a.pointStyleWidth||Math.min(r,o);return{boxWidth:r,boxHeight:s,itemHeight:Math.max(o,s)}},aN=(a,o)=>a!==null&&o!==null&&a.datasetIndex===o.datasetIndex&&a.index===o.index;class wv extends Gs{constructor(a){super();this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=a.chart,this.options=a.options,this.ctx=a.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(a,o,s){this.maxWidth=a,this.maxHeight=o,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){if(this.isHorizontal())this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width;else this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height}buildLabels(){let a=this.options.labels||{},o=Ot(a.generateLabels,[this.chart],this)||[];if(a.filter)o=o.filter((s)=>a.filter(s,this.chart.data));if(a.sort)o=o.sort((s,r)=>a.sort(s,r,this.chart.data));if(this.options.reverse)o.reverse();this.legendItems=o}fit(){let{options:a,ctx:o}=this;if(!a.display){this.width=this.height=0;return}let s=a.labels,r=ha(s.font),l=r.size,u=this._computeTitleHeight(),{boxWidth:d,itemHeight:p}=kM(s,l),h,g;if(o.font=r.string,this.isHorizontal())h=this.maxWidth,g=this._fitRows(u,l,d,p)+10;else g=this.maxHeight,h=this._fitCols(u,r,d,p)+10;this.width=Math.min(h,a.maxWidth||this.maxWidth),this.height=Math.min(g,a.maxHeight||this.maxHeight)}_fitRows(a,o,s,r){let{ctx:l,maxWidth:u,options:{labels:{padding:d}}}=this,p=this.legendHitBoxes=[],h=this.lineWidths=[0],g=r+d,y=a;l.textAlign="left",l.textBaseline="middle";let b=-1,v=-g;return this.legendItems.forEach((T,M)=>{let I=s+o/2+l.measureText(T.text).width;if(M===0||h[h.length-1]+I+2*d>u)y+=g,h[h.length-(M>0?0:1)]=0,v+=g,b++;p[M]={left:0,top:v,row:b,width:I,height:r},h[h.length-1]+=I+d}),y}_fitCols(a,o,s,r){let{ctx:l,maxHeight:u,options:{labels:{padding:d}}}=this,p=this.legendHitBoxes=[],h=this.columnSizes=[],g=u-a,y=d,b=0,v=0,T=0,M=0;return this.legendItems.forEach((I,w)=>{let{itemWidth:A,itemHeight:B}=oN(s,o,l,I,r);if(w>0&&v+B+2*d>g)y+=b+d,h.push({width:b,height:v}),T+=b+d,M++,b=v=0;p[w]={left:T,top:v,col:M,width:A,height:B},b=Math.max(b,A),v+=B+d}),y+=b,h.push({width:b,height:v}),y}adjustHitBoxes(){if(!this.options.display)return;let a=this._computeTitleHeight(),{legendHitBoxes:o,options:{align:s,labels:{padding:r},rtl:l}}=this,u=il(l,this.left,this.width);if(this.isHorizontal()){let d=0,p=Ba(s,this.left+r,this.right-this.lineWidths[d]);for(let h of o){if(d!==h.row)d=h.row,p=Ba(s,this.left+r,this.right-this.lineWidths[d]);h.top+=this.top+a+r,h.left=u.leftForLtr(u.x(p),h.width),p+=h.width+r}}else{let d=0,p=Ba(s,this.top+a+r,this.bottom-this.columnSizes[d].height);for(let h of o){if(h.col!==d)d=h.col,p=Ba(s,this.top+a+r,this.bottom-this.columnSizes[d].height);h.top=p,h.left+=this.left+r,h.left=u.leftForLtr(u.x(h.left),h.width),p+=h.height+r}}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let a=this.ctx;Nd(a,this),this._draw(),zd(a)}}_draw(){let{options:a,columnSizes:o,lineWidths:s,ctx:r}=this,{align:l,labels:u}=a,d=Jt.color,p=il(a.rtl,this.left,this.width),h=ha(u.font),{padding:g}=u,y=h.size,b=y/2,v;this.drawTitle(),r.textAlign=p.textAlign("left"),r.textBaseline="middle",r.lineWidth=0.5,r.font=h.string;let{boxWidth:T,boxHeight:M,itemHeight:I}=kM(u,y),w=function(q,j,G){if(isNaN(T)||T<=0||isNaN(M)||M<0)return;r.save();let Y=Ke(G.lineWidth,1);if(r.fillStyle=Ke(G.fillStyle,d),r.lineCap=Ke(G.lineCap,"butt"),r.lineDashOffset=Ke(G.lineDashOffset,0),r.lineJoin=Ke(G.lineJoin,"miter"),r.lineWidth=Y,r.strokeStyle=Ke(G.strokeStyle,d),r.setLineDash(Ke(G.lineDash,[])),u.usePointStyle){let J={radius:M*Math.SQRT2/2,pointStyle:G.pointStyle,rotation:G.rotation,borderWidth:Y},X=p.xPlus(q,T/2),se=j+b;Qx(r,J,X,se,u.pointStyleWidth&&T)}else{let J=j+Math.max((y-M)/2,0),X=p.leftForLtr(q,T),se=ei(G.borderRadius);if(r.beginPath(),Object.values(se).some((ge)=>ge!==0))zu(r,{x:X,y:J,w:T,h:M,radius:se});else r.rect(X,J,T,M);if(r.fill(),Y!==0)r.stroke()}r.restore()},A=function(q,j,G){Jr(r,G.text,q,j+I/2,h,{strikethrough:G.hidden,textAlign:p.textAlign(G.textAlign)})},B=this.isHorizontal(),z=this._computeTitleHeight();if(B)v={x:Ba(l,this.left+g,this.right-s[0]),y:this.top+g+z,line:0};else v={x:this.left+g,y:Ba(l,this.top+z+g,this.bottom-o[0].height),line:0};sv(this.ctx,a.textDirection);let H=I+g;this.legendItems.forEach((q,j)=>{r.strokeStyle=q.fontColor,r.fillStyle=q.fontColor;let G=r.measureText(q.text).width,Y=p.textAlign(q.textAlign||(q.textAlign=u.textAlign)),J=T+b+G,X=v.x,se=v.y;if(p.setWidth(this.width),B){if(j>0&&X+J+g>this.right)se=v.y+=H,v.line++,X=v.x=Ba(l,this.left+g,this.right-s[v.line])}else if(j>0&&se+H>this.bottom)X=v.x=X+o[v.line].width+g,v.line++,se=v.y=Ba(l,this.top+z+g,this.bottom-o[v.line].height);let ge=p.x(X);if(w(ge,se,q),X=kk(Y,X+T+b,B?X+J:this.right,a.rtl),A(p.x(X),se,q),B)v.x+=J+g;else if(typeof q.text!=="string"){let be=h.lineHeight;v.y+=cI(q,be)+g}else v.y+=H}),rv(this.ctx,a.textDirection)}drawTitle(){let a=this.options,o=a.title,s=ha(o.font),r=Na(o.padding);if(!o.display)return;let l=il(a.rtl,this.left,this.width),u=this.ctx,d=o.position,p=s.size/2,h=r.top+p,g,y=this.left,b=this.width;if(this.isHorizontal())b=Math.max(...this.lineWidths),g=this.top+h,y=Ba(a.align,y,this.right-b);else{let T=this.columnSizes.reduce((M,I)=>Math.max(M,I.height),0);g=h+Ba(a.align,this.top,this.bottom-T-a.labels.padding-this._computeTitleHeight())}let v=Ba(d,y,y+b);u.textAlign=l.textAlign(rm(d)),u.textBaseline="middle",u.strokeStyle=o.color,u.fillStyle=o.color,u.font=s.string,Jr(u,o.text,v,g,s)}_computeTitleHeight(){let a=this.options.title,o=ha(a.font),s=Na(a.padding);return a.display?o.lineHeight+s.height:0}_getLegendItemAt(a,o){let s,r,l;if(Fs(a,this.left,this.right)&&Fs(o,this.top,this.bottom)){l=this.legendHitBoxes;for(s=0;s<l.length;++s)if(r=l[s],Fs(a,r.left,r.left+r.width)&&Fs(o,r.top,r.top+r.height))return this.legendItems[s]}return null}handleEvent(a){let o=this.options;if(!rN(a.type,o))return;let s=this._getLegendItemAt(a.x,a.y);if(a.type==="mousemove"||a.type==="mouseout"){let r=this._hoveredItem,l=aN(r,s);if(r&&!l)Ot(o.onLeave,[a,r,this],this);if(this._hoveredItem=s,s&&!l)Ot(o.onHover,[a,s,this],this)}else if(s)Ot(o.onClick,[a,s,this],this)}}function oN(a,o,s,r,l){let u=nN(r,a,o,s),d=sN(l,r,o.lineHeight);return{itemWidth:u,itemHeight:d}}function nN(a,o,s,r){let l=a.text;if(l&&typeof l!=="string")l=l.reduce((u,d)=>u.length>d.length?u:d);return o+s.size/2+r.measureText(l).width}function sN(a,o,s){let r=a;if(typeof o.text!=="string")r=cI(o,s);return r}function cI(a,o){let s=a.text?a.text.length:0;return o*s}function rN(a,o){if((a==="mousemove"||a==="mouseout")&&(o.onHover||o.onLeave))return!0;if(o.onClick&&(a==="click"||a==="mouseup"))return!0;return!1}var dI={id:"legend",_element:wv,start(a,o,s){let r=a.legend=new wv({ctx:a.ctx,options:s,chart:a});nn.configure(a,r,s),nn.addBox(a,r)},stop(a){nn.removeBox(a,a.legend),delete a.legend},beforeUpdate(a,o,s){let r=a.legend;nn.configure(a,r,s),r.options=s},afterUpdate(a){let o=a.legend;o.buildLabels(),o.adjustHitBoxes()},afterEvent(a,o){if(!o.replay)a.legend.handleEvent(o.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1000,onClick(a,o,s){let r=o.datasetIndex,l=s.chart;if(l.isDatasetVisible(r))l.hide(r),o.hidden=!0;else l.show(r),o.hidden=!1},onHover:null,onLeave:null,labels:{color:(a)=>a.chart.options.color,boxWidth:40,padding:10,generateLabels(a){let o=a.data.datasets,{labels:{usePointStyle:s,pointStyle:r,textAlign:l,color:u,useBorderRadius:d,borderRadius:p}}=a.legend.options;return a._getSortedDatasetMetas().map((h)=>{let g=h.controller.getStyle(s?0:void 0),y=Na(g.borderWidth);return{text:o[h.index].label,fillStyle:g.backgroundColor,fontColor:u,hidden:!h.visible,lineCap:g.borderCapStyle,lineDash:g.borderDash,lineDashOffset:g.borderDashOffset,lineJoin:g.borderJoinStyle,lineWidth:(y.width+y.height)/4,strokeStyle:g.borderColor,pointStyle:r||g.pointStyle,rotation:g.rotation,textAlign:l||g.textAlign,borderRadius:d&&(p||g.borderRadius),datasetIndex:h.index}},this)}},title:{color:(a)=>a.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:(a)=>!a.startsWith("on"),labels:{_scriptable:(a)=>!["generateLabels","filter","sort"].includes(a)}}};class Nv extends Gs{constructor(a){super();this.chart=a.chart,this.options=a.options,this.ctx=a.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(a,o){let s=this.options;if(this.left=0,this.top=0,!s.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=a,this.height=this.bottom=o;let r=zt(s.text)?s.text.length:1;this._padding=Na(s.padding);let l=r*ha(s.font).lineHeight+this._padding.height;if(this.isHorizontal())this.height=l;else this.width=l}isHorizontal(){let a=this.options.position;return a==="top"||a==="bottom"}_drawArgs(a){let{top:o,left:s,bottom:r,right:l,options:u}=this,d=u.align,p=0,h,g,y;if(this.isHorizontal())g=Ba(d,s,l),y=o+a,h=l-s;else{if(u.position==="left")g=s+a,y=Ba(d,r,o),p=sa*-0.5;else g=l-a,y=Ba(d,o,r),p=sa*0.5;h=r-o}return{titleX:g,titleY:y,maxWidth:h,rotation:p}}draw(){let a=this.ctx,o=this.options;if(!o.display)return;let s=ha(o.font),l=s.lineHeight/2+this._padding.top,{titleX:u,titleY:d,maxWidth:p,rotation:h}=this._drawArgs(l);Jr(a,o.text,0,0,s,{color:o.color,maxWidth:p,rotation:h,textAlign:rm(o.align),textBaseline:"middle",translation:[u,d]})}}function iN(a,o){let s=new Nv({ctx:a.ctx,options:o,chart:a});nn.configure(a,s,o),nn.addBox(a,s),a.titleBlock=s}var fI={id:"title",_element:Nv,start(a,o,s){iN(a,s)},stop(a){let o=a.titleBlock;nn.removeBox(a,o),delete a.titleBlock},beforeUpdate(a,o,s){let r=a.titleBlock;nn.configure(a,r,s),r.options=s},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2000},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};var Yd={average(a){if(!a.length)return!1;let o,s,r=new Set,l=0,u=0;for(o=0,s=a.length;o<s;++o){let p=a[o].element;if(p&&p.hasValue()){let h=p.tooltipPosition();r.add(h.x),l+=h.y,++u}}if(u===0||r.size===0)return!1;return{x:[...r].reduce((p,h)=>p+h)/r.size,y:l/u}},nearest(a,o){if(!a.length)return!1;let{x:s,y:r}=o,l=Number.POSITIVE_INFINITY,u,d,p;for(u=0,d=a.length;u<d;++u){let h=a[u].element;if(h&&h.hasValue()){let g=h.getCenterPoint(),y=tm(o,g);if(y<l)l=y,p=h}}if(p){let h=p.tooltipPosition();s=h.x,r=h.y}return{x:s,y:r}}};function ns(a,o){if(o)if(zt(o))Array.prototype.push.apply(a,o);else a.push(o);return a}function js(a){if((typeof a==="string"||a instanceof String)&&a.indexOf(`
|
|
256
256
|
`)>-1)return a.split(`
|
|
257
|
-
`);return a}function lN(a,o){let{element:s,datasetIndex:r,index:l}=o,u=a.getDatasetMeta(r).controller,{label:d,value:p}=u.getLabelAndValue(l);return{chart:a,label:d,parsed:u.getParsed(l),raw:a.data.datasets[r].data[l],formattedValue:p,dataset:u.getDataset(),dataIndex:l,datasetIndex:r,element:s}}function MM(a,o){let s=a.chart.ctx,{body:r,footer:l,title:u}=a,{boxWidth:d,boxHeight:p}=o,h=ha(o.bodyFont),g=ha(o.titleFont),y=ha(o.footerFont),b=u.length,v=l.length,T=r.length,M=Na(o.padding),I=M.height,w=0,A=r.reduce((H,q)=>H+q.before.length+q.lines.length+q.after.length,0);if(A+=a.beforeBody.length+a.afterBody.length,b)I+=b*g.lineHeight+(b-1)*o.titleSpacing+o.titleMarginBottom;if(A){let H=o.displayColors?Math.max(p,h.lineHeight):h.lineHeight;I+=T*H+(A-T)*h.lineHeight+(A-1)*o.bodySpacing}if(v)I+=o.footerMarginTop+v*y.lineHeight+(v-1)*o.footerSpacing;let B=0,z=function(H){w=Math.max(w,s.measureText(H).width+B)};return s.save(),s.font=g.string,Lt(a.title,z),s.font=h.string,Lt(a.beforeBody.concat(a.afterBody),z),B=o.displayColors?d+2+o.boxPadding:0,Lt(r,(H)=>{Lt(H.before,z),Lt(H.lines,z),Lt(H.after,z)}),B=0,s.font=y.string,Lt(a.footer,z),s.restore(),w+=M.width,{width:w,height:I}}function uN(a,o){let{y:s,height:r}=o;if(s<r/2)return"top";else if(s>a.height-r/2)return"bottom";return"center"}function cN(a,o,s,r){let{x:l,width:u}=r,d=s.caretSize+s.caretPadding;if(a==="left"&&l+u+d>o.width)return!0;if(a==="right"&&l-u-d<0)return!0}function dN(a,o,s,r){let{x:l,width:u}=s,{width:d,chartArea:{left:p,right:h}}=a,g="center";if(r==="center")g=l<=(p+h)/2?"left":"right";else if(l<=u/2)g="left";else if(l>=d-u/2)g="right";if(cN(g,a,o,s))g="center";return g}function IM(a,o,s){let r=s.yAlign||o.yAlign||uN(a,s);return{xAlign:s.xAlign||o.xAlign||dN(a,o,s,r),yAlign:r}}function fN(a,o){let{x:s,width:r}=a;if(o==="right")s-=r;else if(o==="center")s-=r/2;return s}function pN(a,o,s){let{y:r,height:l}=a;if(o==="top")r+=s;else if(o==="bottom")r-=l+s;else r-=l/2;return r}function AM(a,o,s,r){let{caretSize:l,caretPadding:u,cornerRadius:d}=a,{xAlign:p,yAlign:h}=s,g=l+u,{topLeft:y,topRight:b,bottomLeft:v,bottomRight:T}=ei(d),M=fN(o,p),I=pN(o,h,g);if(h==="center"){if(p==="left")M+=g;else if(p==="right")M-=g}else if(p==="left")M-=Math.max(y,v)+l;else if(p==="right")M+=Math.max(b,T)+l;return{x:mo(M,0,r.width-o.width),y:mo(I,0,r.height-o.height)}}function bm(a,o,s){let r=Na(s.padding);return o==="center"?a.x+a.width/2:o==="right"?a.x+a.width-r.right:a.x+r.left}function RM(a){return ns([],js(a))}function hN(a,o,s){return qs(a,{tooltip:o,tooltipItems:s,type:"tooltip"})}function DM(a,o){let s=o&&o.dataset&&o.dataset.tooltip&&o.dataset.tooltip.callbacks;return s?a.override(s):a}var pI={beforeTitle:os,title(a){if(a.length>0){let o=a[0],s=o.chart.data.labels,r=s?s.length:0;if(this&&this.options&&this.options.mode==="dataset")return o.dataset.label||"";else if(o.label)return o.label;else if(r>0&&o.dataIndex<r)return s[o.dataIndex]}return""},afterTitle:os,beforeBody:os,beforeLabel:os,label(a){if(this&&this.options&&this.options.mode==="dataset")return a.label+": "+a.formattedValue||a.formattedValue;let o=a.dataset.label||"";if(o)o+=": ";let s=a.formattedValue;if(!ht(s))o+=s;return o},labelColor(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{borderColor:s.borderColor,backgroundColor:s.backgroundColor,borderWidth:s.borderWidth,borderDash:s.borderDash,borderDashOffset:s.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{pointStyle:s.pointStyle,rotation:s.rotation}},afterLabel:os,afterBody:os,beforeFooter:os,footer:os,afterFooter:os};function bo(a,o,s,r){let l=a[o].call(s,r);if(typeof l>"u")return pI[o].call(s,r);return l}class kv extends Gs{static positioners=Yd;constructor(a){super();this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=a.chart,this.options=a.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(a){this.options=a,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let a=this._cachedAnimations;if(a)return a;let o=this.chart,s=this.options.setContext(this.getContext()),r=s.enabled&&o.options.animation&&s.animations,l=new Av(this.chart,r);if(r._cacheable)this._cachedAnimations=Object.freeze(l);return l}getContext(){return this.$context||(this.$context=hN(this.chart.getContext(),this,this._tooltipItems))}getTitle(a,o){let{callbacks:s}=o,r=bo(s,"beforeTitle",this,a),l=bo(s,"title",this,a),u=bo(s,"afterTitle",this,a),d=[];return d=ns(d,js(r)),d=ns(d,js(l)),d=ns(d,js(u)),d}getBeforeBody(a,o){return RM(bo(o.callbacks,"beforeBody",this,a))}getBody(a,o){let{callbacks:s}=o,r=[];return Lt(a,(l)=>{let u={before:[],lines:[],after:[]},d=DM(s,l);ns(u.before,js(bo(d,"beforeLabel",this,l))),ns(u.lines,bo(d,"label",this,l)),ns(u.after,js(bo(d,"afterLabel",this,l))),r.push(u)}),r}getAfterBody(a,o){return RM(bo(o.callbacks,"afterBody",this,a))}getFooter(a,o){let{callbacks:s}=o,r=bo(s,"beforeFooter",this,a),l=bo(s,"footer",this,a),u=bo(s,"afterFooter",this,a),d=[];return d=ns(d,js(r)),d=ns(d,js(l)),d=ns(d,js(u)),d}_createItems(a){let o=this._active,s=this.chart.data,r=[],l=[],u=[],d=[],p,h;for(p=0,h=o.length;p<h;++p)d.push(lN(this.chart,o[p]));if(a.filter)d=d.filter((g,y,b)=>a.filter(g,y,b,s));if(a.itemSort)d=d.sort((g,y)=>a.itemSort(g,y,s));return Lt(d,(g)=>{let y=DM(a.callbacks,g);r.push(bo(y,"labelColor",this,g)),l.push(bo(y,"labelPointStyle",this,g)),u.push(bo(y,"labelTextColor",this,g))}),this.labelColors=r,this.labelPointStyles=l,this.labelTextColors=u,this.dataPoints=d,d}update(a,o){let s=this.options.setContext(this.getContext()),r=this._active,l,u=[];if(!r.length){if(this.opacity!==0)l={opacity:0}}else{let d=Yd[s.position].call(this,r,this._eventPosition);u=this._createItems(s),this.title=this.getTitle(u,s),this.beforeBody=this.getBeforeBody(u,s),this.body=this.getBody(u,s),this.afterBody=this.getAfterBody(u,s),this.footer=this.getFooter(u,s);let p=this._size=MM(this,s),h=Object.assign({},d,p),g=IM(this.chart,s,h),y=AM(s,h,g,this.chart);this.xAlign=g.xAlign,this.yAlign=g.yAlign,l={opacity:1,x:y.x,y:y.y,width:p.width,height:p.height,caretX:d.x,caretY:d.y}}if(this._tooltipItems=u,this.$context=void 0,l)this._resolveAnimations().update(this,l);if(a&&s.external)s.external.call(this,{chart:this.chart,tooltip:this,replay:o})}drawCaret(a,o,s,r){let l=this.getCaretPosition(a,s,r);o.lineTo(l.x1,l.y1),o.lineTo(l.x2,l.y2),o.lineTo(l.x3,l.y3)}getCaretPosition(a,o,s){let{xAlign:r,yAlign:l}=this,{caretSize:u,cornerRadius:d}=s,{topLeft:p,topRight:h,bottomLeft:g,bottomRight:y}=ei(d),{x:b,y:v}=a,{width:T,height:M}=o,I,w,A,B,z,H;if(l==="center"){if(z=v+M/2,r==="left")I=b,w=I-u,B=z+u,H=z-u;else I=b+T,w=I+u,B=z-u,H=z+u;A=I}else{if(r==="left")w=b+Math.max(p,g)+u;else if(r==="right")w=b+T-Math.max(h,y)-u;else w=this.caretX;if(l==="top")B=v,z=B-u,I=w-u,A=w+u;else B=v+M,z=B+u,I=w+u,A=w-u;H=B}return{x1:I,x2:w,x3:A,y1:B,y2:z,y3:H}}drawTitle(a,o,s){let r=this.title,l=r.length,u,d,p;if(l){let h=il(s.rtl,this.x,this.width);a.x=bm(this,s.titleAlign,s),o.textAlign=h.textAlign(s.titleAlign),o.textBaseline="middle",u=ha(s.titleFont),d=s.titleSpacing,o.fillStyle=s.titleColor,o.font=u.string;for(p=0;p<l;++p)if(o.fillText(r[p],h.x(a.x),a.y+u.lineHeight/2),a.y+=u.lineHeight+d,p+1===l)a.y+=s.titleMarginBottom-d}}_drawColorBox(a,o,s,r,l){let u=this.labelColors[s],d=this.labelPointStyles[s],{boxHeight:p,boxWidth:h}=l,g=ha(l.bodyFont),y=bm(this,"left",l),b=r.x(y),v=p<g.lineHeight?(g.lineHeight-p)/2:0,T=o.y+v;if(l.usePointStyle){let M={radius:Math.min(h,p)/2,pointStyle:d.pointStyle,rotation:d.rotation,borderWidth:1},I=r.leftForLtr(b,h)+h/2,w=T+p/2;a.strokeStyle=l.multiKeyBackground,a.fillStyle=l.multiKeyBackground,um(a,M,I,w),a.strokeStyle=u.borderColor,a.fillStyle=u.backgroundColor,um(a,M,I,w)}else{a.lineWidth=it(u.borderWidth)?Math.max(...Object.values(u.borderWidth)):u.borderWidth||1,a.strokeStyle=u.borderColor,a.setLineDash(u.borderDash||[]),a.lineDashOffset=u.borderDashOffset||0;let M=r.leftForLtr(b,h),I=r.leftForLtr(r.xPlus(b,1),h-2),w=ei(u.borderRadius);if(Object.values(w).some((A)=>A!==0))a.beginPath(),a.fillStyle=l.multiKeyBackground,zu(a,{x:M,y:T,w:h,h:p,radius:w}),a.fill(),a.stroke(),a.fillStyle=u.backgroundColor,a.beginPath(),zu(a,{x:I,y:T+1,w:h-2,h:p-2,radius:w}),a.fill();else a.fillStyle=l.multiKeyBackground,a.fillRect(M,T,h,p),a.strokeRect(M,T,h,p),a.fillStyle=u.backgroundColor,a.fillRect(I,T+1,h-2,p-2)}a.fillStyle=this.labelTextColors[s]}drawBody(a,o,s){let{body:r}=this,{bodySpacing:l,bodyAlign:u,displayColors:d,boxHeight:p,boxWidth:h,boxPadding:g}=s,y=ha(s.bodyFont),b=y.lineHeight,v=0,T=il(s.rtl,this.x,this.width),M=function(G){o.fillText(G,T.x(a.x+v),a.y+b/2),a.y+=b+l},I=T.textAlign(u),w,A,B,z,H,q,j;o.textAlign=u,o.textBaseline="middle",o.font=y.string,a.x=bm(this,I,s),o.fillStyle=s.bodyColor,Lt(this.beforeBody,M),v=d&&I!=="right"?u==="center"?h/2+g:h+2+g:0;for(z=0,q=r.length;z<q;++z){if(w=r[z],A=this.labelTextColors[z],o.fillStyle=A,Lt(w.before,M),B=w.lines,d&&B.length)this._drawColorBox(o,a,z,T,s),b=Math.max(y.lineHeight,p);for(H=0,j=B.length;H<j;++H)M(B[H]),b=y.lineHeight;Lt(w.after,M)}v=0,b=y.lineHeight,Lt(this.afterBody,M),a.y-=l}drawFooter(a,o,s){let r=this.footer,l=r.length,u,d;if(l){let p=il(s.rtl,this.x,this.width);a.x=bm(this,s.footerAlign,s),a.y+=s.footerMarginTop,o.textAlign=p.textAlign(s.footerAlign),o.textBaseline="middle",u=ha(s.footerFont),o.fillStyle=s.footerColor,o.font=u.string;for(d=0;d<l;++d)o.fillText(r[d],p.x(a.x),a.y+u.lineHeight/2),a.y+=u.lineHeight+s.footerSpacing}}drawBackground(a,o,s,r){let{xAlign:l,yAlign:u}=this,{x:d,y:p}=a,{width:h,height:g}=s,{topLeft:y,topRight:b,bottomLeft:v,bottomRight:T}=ei(r.cornerRadius);if(o.fillStyle=r.backgroundColor,o.strokeStyle=r.borderColor,o.lineWidth=r.borderWidth,o.beginPath(),o.moveTo(d+y,p),u==="top")this.drawCaret(a,o,s,r);if(o.lineTo(d+h-b,p),o.quadraticCurveTo(d+h,p,d+h,p+b),u==="center"&&l==="right")this.drawCaret(a,o,s,r);if(o.lineTo(d+h,p+g-T),o.quadraticCurveTo(d+h,p+g,d+h-T,p+g),u==="bottom")this.drawCaret(a,o,s,r);if(o.lineTo(d+v,p+g),o.quadraticCurveTo(d,p+g,d,p+g-v),u==="center"&&l==="left")this.drawCaret(a,o,s,r);if(o.lineTo(d,p+y),o.quadraticCurveTo(d,p,d+y,p),o.closePath(),o.fill(),r.borderWidth>0)o.stroke()}_updateAnimationTarget(a){let o=this.chart,s=this.$animations,r=s&&s.x,l=s&&s.y;if(r||l){let u=Yd[a.position].call(this,this._active,this._eventPosition);if(!u)return;let d=this._size=MM(this,a),p=Object.assign({},u,this._size),h=IM(o,a,p),g=AM(a,p,h,o);if(r._to!==g.x||l._to!==g.y)this.xAlign=h.xAlign,this.yAlign=h.yAlign,this.width=d.width,this.height=d.height,this.caretX=u.x,this.caretY=u.y,this._resolveAnimations().update(this,g)}}_willRender(){return!!this.opacity}draw(a){let o=this.options.setContext(this.getContext()),s=this.opacity;if(!s)return;this._updateAnimationTarget(o);let r={width:this.width,height:this.height},l={x:this.x,y:this.y};s=Math.abs(s)<0.001?0:s;let u=Na(o.padding),d=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;if(o.enabled&&d)a.save(),a.globalAlpha=s,this.drawBackground(l,a,r,o),sv(a,o.textDirection),l.y+=u.top,this.drawTitle(l,a,o),this.drawBody(l,a,o),this.drawFooter(l,a,o),rv(a,o.textDirection),a.restore()}getActiveElements(){return this._active||[]}setActiveElements(a,o){let s=this._active,r=a.map(({datasetIndex:d,index:p})=>{let h=this.chart.getDatasetMeta(d);if(!h)throw Error("Cannot find a dataset at index "+d);return{datasetIndex:d,element:h.data[p],index:p}}),l=!Pd(s,r),u=this._positionChanged(r,o);if(l||u)this._active=r,this._eventPosition=o,this._ignoreReplayEvents=!0,this.update(!0)}handleEvent(a,o,s=!0){if(o&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,l=this._active||[],u=this._getActiveElements(a,l,o,s),d=this._positionChanged(u,a),p=o||!Pd(u,l)||d;if(p){if(this._active=u,r.enabled||r.external)this._eventPosition={x:a.x,y:a.y},this.update(!0,o)}return p}_getActiveElements(a,o,s,r){let l=this.options;if(a.type==="mouseout")return[];if(!r)return o.filter((d)=>this.chart.data.datasets[d.datasetIndex]&&this.chart.getDatasetMeta(d.datasetIndex).controller.getParsed(d.index)!==void 0);let u=this.chart.getElementsAtEventForMode(a,l.mode,l,s);if(l.reverse)u.reverse();return u}_positionChanged(a,o){let{caretX:s,caretY:r,options:l}=this,u=Yd[l.position].call(this,a,o);return u!==!1&&(s!==u.x||r!==u.y)}}var hI={id:"tooltip",_element:kv,positioners:Yd,afterInit(a,o,s){if(s)a.tooltip=new kv({chart:a,options:s})},beforeUpdate(a,o,s){if(a.tooltip)a.tooltip.initialize(s)},reset(a,o,s){if(a.tooltip)a.tooltip.initialize(s)},afterDraw(a){let o=a.tooltip;if(o&&o._willRender()){let s={tooltip:o};if(a.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0})===!1)return;o.draw(a.ctx),a.notifyPlugins("afterTooltipDraw",s)}},afterEvent(a,o){if(a.tooltip){let s=o.replay;if(a.tooltip.handleEvent(o.event,s,o.inChartArea))o.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:(a,o)=>o.bodyFont.size,boxWidth:(a,o)=>o.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:pI},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:(a)=>a!=="filter"&&a!=="itemSort"&&a!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};var mN=(a,o,s,r)=>{if(typeof o==="string")s=a.push(o)-1,r.unshift({index:s,label:o});else if(isNaN(o))s=null;return s};function gN(a,o,s,r){let l=a.indexOf(o);if(l===-1)return mN(a,o,s,r);let u=a.lastIndexOf(o);return l!==u?s:l}var bN=(a,o)=>a===null?null:mo(Math.round(a),0,o);function _M(a){let o=this.getLabels();if(a>=0&&a<o.length)return o[a];return a}class zv extends cl{static id="category";static defaults={ticks:{callback:_M}};constructor(a){super(a);this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(a){let o=this._addedLabels;if(o.length){let s=this.getLabels();for(let{index:r,label:l}of o)if(s[r]===l)s.splice(r,1);this._addedLabels=[]}super.init(a)}parse(a,o){if(ht(a))return null;let s=this.getLabels();return o=isFinite(o)&&s[o]===a?o:gN(s,a,Ke(o,a),this._addedLabels),bN(o,s.length-1)}determineDataLimits(){let{minDefined:a,maxDefined:o}=this.getUserBounds(),{min:s,max:r}=this.getMinMax(!0);if(this.options.bounds==="ticks"){if(!a)s=0;if(!o)r=this.getLabels().length-1}this.min=s,this.max=r}buildTicks(){let a=this.min,o=this.max,s=this.options.offset,r=[],l=this.getLabels();l=a===0&&o===l.length-1?l:l.slice(a,o+1),this._valueRange=Math.max(l.length-(s?0:1),1),this._startValue=this.min-(s?0.5:0);for(let u=a;u<=o;u++)r.push({value:u});return r}getLabelForValue(a){return _M.call(this,a)}configure(){if(super.configure(),!this.isHorizontal())this._reversePixels=!this._reversePixels}getPixelForValue(a){if(typeof a!=="number")a=this.parse(a);return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getPixelForTick(a){let o=this.ticks;if(a<0||a>o.length-1)return null;return this.getPixelForValue(o[a].value)}getValueForPixel(a){return Math.round(this._startValue+this.getDecimalForPixel(a)*this._valueRange)}getBasePixel(){return this.bottom}}function yN(a,o){let s=[],r=0.00000000000001,{bounds:l,step:u,min:d,max:p,precision:h,count:g,maxTicks:y,maxDigits:b,includeBounds:v}=a,T=u||1,M=y-1,{min:I,max:w}=o,A=!ht(d),B=!ht(p),z=!ht(g),H=(w-I)/(b+1),q=Ux((w-I)/M/T)*T,j,G,Y,J;if(q<0.00000000000001&&!A&&!B)return[{value:I},{value:w}];if(J=Math.ceil(w/q)-Math.floor(I/q),J>M)q=Ux(J*q/M/T)*T;if(!ht(h))j=Math.pow(10,h),q=Math.ceil(q*j)/j;if(l==="ticks")G=Math.floor(I/q)*q,Y=Math.ceil(w/q)*q;else G=I,Y=w;if(A&&B&&u&&yk((p-d)/u,q/1000))J=Math.round(Math.min((p-d)/q,y)),q=(p-d)/J,G=d,Y=p;else if(z)G=A?d:G,Y=B?p:Y,J=g-1,q=(Y-G)/J;else if(J=(Y-G)/q,Bu(J,Math.round(J),q/1000))J=Math.round(J);else J=Math.ceil(J);let X=Math.max(qx(q),qx(G));j=Math.pow(10,ht(h)?X:h),G=Math.round(G*j)/j,Y=Math.round(Y*j)/j;let se=0;if(A){if(v&&G!==d){if(s.push({value:d}),G<d)se++;if(Bu(Math.round((G+se*q)*j)/j,d,EM(d,H,a)))se++}else if(G<d)se++}for(;se<J;++se){let ge=Math.round((G+se*q)*j)/j;if(B&&ge>p)break;s.push({value:ge})}if(B&&v&&Y!==p)if(s.length&&Bu(s[s.length-1].value,p,EM(p,H,a)))s[s.length-1].value=p;else s.push({value:p});else if(!B||Y===p)s.push({value:Y});return s}function EM(a,o,{horizontal:s,minRotation:r}){let l=Us(r),u=(s?Math.sin(l):Math.cos(l))||0.001,d=0.75*o*(""+a).length;return Math.min(o/u,d)}class Wd extends cl{constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(a,o){if(ht(a))return null;if((typeof a==="number"||a instanceof Number)&&!isFinite(+a))return null;return+a}handleTickRangeOptions(){let{beginAtZero:a}=this.options,{minDefined:o,maxDefined:s}=this.getUserBounds(),{min:r,max:l}=this,u=(p)=>r=o?r:p,d=(p)=>l=s?l:p;if(a){let p=Ln(r),h=Ln(l);if(p<0&&h<0)d(0);else if(p>0&&h>0)u(0)}if(r===l){let p=l===0?1:Math.abs(l*0.05);if(d(l+p),!a)u(r-p)}this.min=r,this.max=l}getTickLimit(){let a=this.options.ticks,{maxTicksLimit:o,stepSize:s}=a,r;if(s){if(r=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,r>1000)console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${r} ticks. Limiting to 1000.`),r=1000}else r=this.computeTickLimit(),o=o||11;if(o)r=Math.min(o,r);return r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let a=this.options,o=a.ticks,s=this.getTickLimit();s=Math.max(2,s);let r={maxTicks:s,bounds:a.bounds,min:a.min,max:a.max,precision:o.precision,step:o.stepSize,count:o.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:o.minRotation||0,includeBounds:o.includeBounds!==!1},l=this._range||this,u=yN(r,l);if(a.bounds==="ticks")Fx(u,this,"value");if(a.reverse)u.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return u}configure(){let a=this.ticks,o=this.min,s=this.max;if(super.configure(),this.options.offset&&a.length){let r=(s-o)/Math.max(a.length-1,1)/2;o-=r,s+=r}this._startValue=o,this._endValue=s,this._valueRange=s-o}getLabelForValue(a){return im(a,this.chart.options.locale,this.options.ticks.format)}}class Hv extends Wd{static id="linear";static defaults={ticks:{callback:Bd.formatters.numeric}};determineDataLimits(){let{min:a,max:o}=this.getMinMax(!0);this.min=Kt(a)?a:0,this.max=Kt(o)?o:1,this.handleTickRangeOptions()}computeTickLimit(){let a=this.isHorizontal(),o=a?this.width:this.height,s=Us(this.options.ticks.minRotation),r=(a?Math.sin(s):Math.cos(s))||0.001,l=this._resolveTickFontOptions(0);return Math.ceil(o/Math.min(40,l.lineHeight/r))}getPixelForValue(a){return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getValueForPixel(a){return this._startValue+this.getDecimalForPixel(a)*this._valueRange}}var Zd=(a)=>Math.floor(Hs(a)),ul=(a,o)=>Math.pow(10,Zd(a)+o);function OM(a){return a/Math.pow(10,Zd(a))===1}function PM(a,o,s){let r=Math.pow(10,s),l=Math.floor(a/r);return Math.ceil(o/r)-l}function xN(a,o){let s=o-a,r=Zd(s);while(PM(a,o,r)>10)r++;while(PM(a,o,r)<10)r--;return Math.min(r,Zd(a))}function vN(a,{min:o,max:s}){o=go(a.min,o);let r=[],l=Zd(o),u=xN(o,s),d=u<0?Math.pow(10,Math.abs(u)):1,p=Math.pow(10,u),h=l>u?Math.pow(10,l):0,g=Math.round((o-h)*d)/d,y=Math.floor((o-h)/p/10)*p*10,b=Math.floor((g-y)/Math.pow(10,u)),v=go(a.min,Math.round((h+y+b*Math.pow(10,u))*d)/d);while(v<s){if(r.push({value:v,major:OM(v),significand:b}),b>=10)b=b<15?15:20;else b++;if(b>=20)u++,b=2,d=u>=0?1:d;v=Math.round((h+y+b*Math.pow(10,u))*d)/d}let T=go(a.max,v);return r.push({value:T,major:OM(T),significand:b}),r}class SN extends cl{static id="logarithmic";static defaults={ticks:{callback:Bd.formatters.logarithmic,major:{enabled:!0}}};constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(a,o){let s=Wd.prototype.parse.apply(this,[a,o]);if(s===0){this._zero=!0;return}return Kt(s)&&s>0?s:null}determineDataLimits(){let{min:a,max:o}=this.getMinMax(!0);if(this.min=Kt(a)?Math.max(0,a):null,this.max=Kt(o)?Math.max(0,o):null,this.options.beginAtZero)this._zero=!0;if(this._zero&&this.min!==this._suggestedMin&&!Kt(this._userMin))this.min=a===ul(this.min,0)?ul(this.min,-1):ul(this.min,0);this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:a,maxDefined:o}=this.getUserBounds(),s=this.min,r=this.max,l=(d)=>s=a?s:d,u=(d)=>r=o?r:d;if(s===r)if(s<=0)l(1),u(10);else l(ul(s,-1)),u(ul(r,1));if(s<=0)l(ul(r,-1));if(r<=0)u(ul(s,1));this.min=s,this.max=r}buildTicks(){let a=this.options,o={min:this._userMin,max:this._userMax},s=vN(o,this);if(a.bounds==="ticks")Fx(s,this,"value");if(a.reverse)s.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return s}getLabelForValue(a){return a===void 0?"0":im(a,this.chart.options.locale,this.options.ticks.format)}configure(){let a=this.min;super.configure(),this._startValue=Hs(a),this._valueRange=Hs(this.max)-Hs(a)}getPixelForValue(a){if(a===void 0||a===0)a=this.min;if(a===null||isNaN(a))return NaN;return this.getPixelForDecimal(a===this.min?0:(Hs(a)-this._startValue)/this._valueRange)}getValueForPixel(a){let o=this.getDecimalForPixel(a);return Math.pow(10,this._startValue+o*this._valueRange)}}function Mv(a){let o=a.ticks;if(o.display&&a.display){let s=Na(o.backdropPadding);return Ke(o.font&&o.font.size,Jt.font.size)+s.height}return 0}function LN(a,o,s){return s=zt(s)?s:[s],{w:Dk(a,o.string,s),h:s.length*o.lineHeight}}function BM(a,o,s,r,l){if(a===r||a===l)return{start:o-s/2,end:o+s/2};else if(a<r||a>l)return{start:o-s,end:o};return{start:o,end:o+s}}function CN(a){let o={l:a.left+a._padding.left,r:a.right-a._padding.right,t:a.top+a._padding.top,b:a.bottom-a._padding.bottom},s=Object.assign({},o),r=[],l=[],u=a._pointLabels.length,d=a.options.pointLabels,p=d.centerPointLabels?sa/u:0;for(let h=0;h<u;h++){let g=d.setContext(a.getPointLabelContext(h));l[h]=g.padding;let y=a.getPointPosition(h,a.drawingArea+l[h],p),b=ha(g.font),v=LN(a.ctx,b,a._pointLabels[h]);r[h]=v;let T=fo(a.getIndexAngle(h)+p),M=Math.round(nm(T)),I=BM(M,y.x,v.w,0,180),w=BM(M,y.y,v.h,90,270);TN(s,o,T,I,w)}a.setCenterPoint(o.l-s.l,s.r-o.r,o.t-s.t,s.b-o.b),a._pointLabelItems=MN(a,r,l)}function TN(a,o,s,r,l){let u=Math.abs(Math.sin(s)),d=Math.abs(Math.cos(s)),p=0,h=0;if(r.start<o.l)p=(o.l-r.start)/u,a.l=Math.min(a.l,o.l-p);else if(r.end>o.r)p=(r.end-o.r)/u,a.r=Math.max(a.r,o.r+p);if(l.start<o.t)h=(o.t-l.start)/d,a.t=Math.min(a.t,o.t-h);else if(l.end>o.b)h=(l.end-o.b)/d,a.b=Math.max(a.b,o.b+h)}function wN(a,o,s){let r=a.drawingArea,{extra:l,additionalAngle:u,padding:d,size:p}=s,h=a.getPointPosition(o,r+l+d,u),g=Math.round(nm(fo(h.angle+po))),y=RN(h.y,p.h,g),b=IN(g),v=AN(h.x,p.w,b);return{visible:!0,x:h.x,y,textAlign:b,left:v,top:y,right:v+p.w,bottom:y+p.h}}function kN(a,o){if(!o)return!0;let{left:s,top:r,right:l,bottom:u}=a;return!(as({x:s,y:r},o)||as({x:s,y:u},o)||as({x:l,y:r},o)||as({x:l,y:u},o))}function MN(a,o,s){let r=[],l=a._pointLabels.length,u=a.options,{centerPointLabels:d,display:p}=u.pointLabels,h={extra:Mv(u)/2,additionalAngle:d?sa/l:0},g;for(let y=0;y<l;y++){h.padding=s[y],h.size=o[y];let b=wN(a,y,h);if(r.push(b),p==="auto"){if(b.visible=kN(b,g),b.visible)g=b}}return r}function IN(a){if(a===0||a===180)return"center";else if(a<180)return"left";return"right"}function AN(a,o,s){if(s==="right")a-=o;else if(s==="center")a-=o/2;return a}function RN(a,o,s){if(s===90||s===270)a-=o/2;else if(s>270||s<90)a-=o;return a}function DN(a,o,s){let{left:r,top:l,right:u,bottom:d}=s,{backdropColor:p}=o;if(!ht(p)){let h=ei(o.borderRadius),g=Na(o.backdropPadding);a.fillStyle=p;let y=r-g.left,b=l-g.top,v=u-r+g.width,T=d-l+g.height;if(Object.values(h).some((M)=>M!==0))a.beginPath(),zu(a,{x:y,y:b,w:v,h:T,radius:h}),a.fill();else a.fillRect(y,b,v,T)}}function _N(a,o){let{ctx:s,options:{pointLabels:r}}=a;for(let l=o-1;l>=0;l--){let u=a._pointLabelItems[l];if(!u.visible)continue;let d=r.setContext(a.getPointLabelContext(l));DN(s,d,u);let p=ha(d.font),{x:h,y:g,textAlign:y}=u;Jr(s,a._pointLabels[l],h,g+p.lineHeight/2,p,{color:d.color,textAlign:y,textBaseline:"middle"})}}function mI(a,o,s,r){let{ctx:l}=a;if(s)l.arc(a.xCenter,a.yCenter,o,0,ho);else{let u=a.getPointPosition(0,o);l.moveTo(u.x,u.y);for(let d=1;d<r;d++)u=a.getPointPosition(d,o),l.lineTo(u.x,u.y)}}function EN(a,o,s,r,l){let u=a.ctx,d=o.circular,{color:p,lineWidth:h}=o;if(!d&&!r||!p||!h||s<0)return;u.save(),u.strokeStyle=p,u.lineWidth=h,u.setLineDash(l.dash||[]),u.lineDashOffset=l.dashOffset,u.beginPath(),mI(a,s,d,r),u.closePath(),u.stroke(),u.restore()}function ON(a,o,s){return qs(a,{label:s,index:o,type:"pointLabel"})}class PN extends Wd{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Bd.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(a){return a},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(a){super(a);this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){let a=this._padding=Na(Mv(this.options)/2),o=this.width=this.maxWidth-a.width,s=this.height=this.maxHeight-a.height;this.xCenter=Math.floor(this.left+o/2+a.left),this.yCenter=Math.floor(this.top+s/2+a.top),this.drawingArea=Math.floor(Math.min(o,s)/2)}determineDataLimits(){let{min:a,max:o}=this.getMinMax(!1);this.min=Kt(a)&&!isNaN(a)?a:0,this.max=Kt(o)&&!isNaN(o)?o:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Mv(this.options))}generateTickLabels(a){Wd.prototype.generateTickLabels.call(this,a),this._pointLabels=this.getLabels().map((o,s)=>{let r=Ot(this.options.pointLabels.callback,[o,s],this);return r||r===0?r:""}).filter((o,s)=>this.chart.getDataVisibility(s))}fit(){let a=this.options;if(a.display&&a.pointLabels.display)CN(this);else this.setCenterPoint(0,0,0,0)}setCenterPoint(a,o,s,r){this.xCenter+=Math.floor((a-o)/2),this.yCenter+=Math.floor((s-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(a,o,s,r))}getIndexAngle(a){let o=ho/(this._pointLabels.length||1),s=this.options.startAngle||0;return fo(a*o+Us(s))}getDistanceFromCenterForValue(a){if(ht(a))return NaN;let o=this.drawingArea/(this.max-this.min);if(this.options.reverse)return(this.max-a)*o;return(a-this.min)*o}getValueForDistanceFromCenter(a){if(ht(a))return NaN;let o=a/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-o:this.min+o}getPointLabelContext(a){let o=this._pointLabels||[];if(a>=0&&a<o.length){let s=o[a];return ON(this.getContext(),a,s)}}getPointPosition(a,o,s=0){let r=this.getIndexAngle(a)-po+s;return{x:Math.cos(r)*o+this.xCenter,y:Math.sin(r)*o+this.yCenter,angle:r}}getPointPositionForValue(a,o){return this.getPointPosition(a,this.getDistanceFromCenterForValue(o))}getBasePosition(a){return this.getPointPositionForValue(a||0,this.getBaseValue())}getPointLabelPosition(a){let{left:o,top:s,right:r,bottom:l}=this._pointLabelItems[a];return{left:o,top:s,right:r,bottom:l}}drawBackground(){let{backgroundColor:a,grid:{circular:o}}=this.options;if(a){let s=this.ctx;s.save(),s.beginPath(),mI(this,this.getDistanceFromCenterForValue(this._endValue),o,this._pointLabels.length),s.closePath(),s.fillStyle=a,s.fill(),s.restore()}}drawGrid(){let a=this.ctx,o=this.options,{angleLines:s,grid:r,border:l}=o,u=this._pointLabels.length,d,p,h;if(o.pointLabels.display)_N(this,u);if(r.display)this.ticks.forEach((g,y)=>{if(y!==0||y===0&&this.min<0){p=this.getDistanceFromCenterForValue(g.value);let b=this.getContext(y),v=r.setContext(b),T=l.setContext(b);EN(this,v,p,u,T)}});if(s.display){a.save();for(d=u-1;d>=0;d--){let g=s.setContext(this.getPointLabelContext(d)),{color:y,lineWidth:b}=g;if(!b||!y)continue;a.lineWidth=b,a.strokeStyle=y,a.setLineDash(g.borderDash),a.lineDashOffset=g.borderDashOffset,p=this.getDistanceFromCenterForValue(o.reverse?this.min:this.max),h=this.getPointPosition(d,p),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(h.x,h.y),a.stroke()}a.restore()}}drawBorder(){}drawLabels(){let a=this.ctx,o=this.options,s=o.ticks;if(!s.display)return;let r=this.getIndexAngle(0),l,u;a.save(),a.translate(this.xCenter,this.yCenter),a.rotate(r),a.textAlign="center",a.textBaseline="middle",this.ticks.forEach((d,p)=>{if(p===0&&this.min>=0&&!o.reverse)return;let h=s.setContext(this.getContext(p)),g=ha(h.font);if(l=this.getDistanceFromCenterForValue(this.ticks[p].value),h.showLabelBackdrop){a.font=g.string,u=a.measureText(d.label).width,a.fillStyle=h.backdropColor;let y=Na(h.backdropPadding);a.fillRect(-u/2-y.left,-l-g.size/2-y.top,u+y.width,g.size+y.height)}Jr(a,d.label,0,-l,g,{color:h.color,strokeColor:h.textStrokeColor,strokeWidth:h.textStrokeWidth})}),a.restore()}drawTitle(){}}var Tm={millisecond:{common:!0,size:1,steps:1000},second:{common:!0,size:1000,steps:60},minute:{common:!0,size:60000,steps:60},hour:{common:!0,size:3600000,steps:24},day:{common:!0,size:86400000,steps:30},week:{common:!1,size:604800000,steps:4},month:{common:!0,size:2628000000,steps:12},quarter:{common:!1,size:7884000000,steps:4},year:{common:!0,size:31540000000}},yo=Object.keys(Tm);function NM(a,o){return a-o}function zM(a,o){if(ht(o))return null;let s=a._adapter,{parser:r,round:l,isoWeekday:u}=a._parseOpts,d=o;if(typeof r==="function")d=r(d);if(!Kt(d))d=typeof r==="string"?s.parse(d,r):s.parse(d);if(d===null)return null;if(l)d=l==="week"&&(Nu(u)||u===!0)?s.startOf(d,"isoWeek",u):s.startOf(d,l);return+d}function HM(a,o,s,r){let l=yo.length;for(let u=yo.indexOf(a);u<l-1;++u){let d=Tm[yo[u]],p=d.steps?d.steps:Number.MAX_SAFE_INTEGER;if(d.common&&Math.ceil((s-o)/(p*d.size))<=r)return yo[u]}return yo[l-1]}function BN(a,o,s,r,l){for(let u=yo.length-1;u>=yo.indexOf(s);u--){let d=yo[u];if(Tm[d].common&&a._adapter.diff(l,r,d)>=o-1)return d}return yo[s?yo.indexOf(s):0]}function NN(a){for(let o=yo.indexOf(a)+1,s=yo.length;o<s;++o)if(Tm[yo[o]].common)return yo[o]}function UM(a,o,s){if(!s)a[o]=!0;else if(s.length){let{lo:r,hi:l}=sm(s,o),u=s[r]>=o?s[r]:s[l];a[u]=!0}}function zN(a,o,s,r){let l=a._adapter,u=+l.startOf(o[0].value,r),d=o[o.length-1].value,p,h;for(p=u;p<=d;p=+l.add(p,1,r))if(h=s[p],h>=0)o[h].major=!0;return o}function FM(a,o,s){let r=[],l={},u=o.length,d,p;for(d=0;d<u;++d)p=o[d],l[p]=d,r.push({value:p,major:!1});return u===0||!s?r:zN(a,r,l,s)}class Iv extends cl{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(a){super(a);this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(a,o={}){let s=a.time||(a.time={}),r=this._adapter=new xP._date(a.adapters.date);r.init(o),Ou(s.displayFormats,r.formats()),this._parseOpts={parser:s.parser,round:s.round,isoWeekday:s.isoWeekday},super.init(a),this._normalized=o.normalized}parse(a,o){if(a===void 0)return null;return zM(this,a)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let a=this.options,o=this._adapter,s=a.time.unit||"day",{min:r,max:l,minDefined:u,maxDefined:d}=this.getUserBounds();function p(h){if(!u&&!isNaN(h.min))r=Math.min(r,h.min);if(!d&&!isNaN(h.max))l=Math.max(l,h.max)}if(!u||!d){if(p(this._getLabelBounds()),a.bounds!=="ticks"||a.ticks.source!=="labels")p(this.getMinMax(!1))}r=Kt(r)&&!isNaN(r)?r:+o.startOf(Date.now(),s),l=Kt(l)&&!isNaN(l)?l:+o.endOf(Date.now(),s)+1,this.min=Math.min(r,l-1),this.max=Math.max(r+1,l)}_getLabelBounds(){let a=this.getLabelTimestamps(),{POSITIVE_INFINITY:o,NEGATIVE_INFINITY:s}=Number;if(a.length)o=a[0],s=a[a.length-1];return{min:o,max:s}}buildTicks(){let a=this.options,{time:o,ticks:s}=a,r=s.source==="labels"?this.getLabelTimestamps():this._generate();if(a.bounds==="ticks"&&r.length)this.min=this._userMin||r[0],this.max=this._userMax||r[r.length-1];let l=this.min,u=this.max,d=Lk(r,l,u);if(this._unit=o.unit||(s.autoSkip?HM(o.minUnit,this.min,this.max,this._getLabelCapacity(l)):BN(this,d.length,o.minUnit,this.min,this.max)),this._majorUnit=!s.major.enabled||this._unit==="year"?void 0:NN(this._unit),this.initOffsets(r),a.reverse)d.reverse();return FM(this,d,this._majorUnit)}afterAutoSkip(){if(this.options.offsetAfterAutoskip)this.initOffsets(this.ticks.map((a)=>+a.value))}initOffsets(a=[]){let o=0,s=0,r,l;if(this.options.offset&&a.length){if(r=this.getDecimalForValue(a[0]),a.length===1)o=1-r;else o=(this.getDecimalForValue(a[1])-r)/2;if(l=this.getDecimalForValue(a[a.length-1]),a.length===1)s=l;else s=(l-this.getDecimalForValue(a[a.length-2]))/2}let u=a.length<3?0.5:0.25;o=mo(o,0,u),s=mo(s,0,u),this._offsets={start:o,end:s,factor:1/(o+1+s)}}_generate(){let a=this._adapter,o=this.min,s=this.max,r=this.options,l=r.time,u=l.unit||HM(l.minUnit,o,s,this._getLabelCapacity(o)),d=Ke(r.ticks.stepSize,1),p=u==="week"?l.isoWeekday:!1,h=Nu(p)||p===!0,g={},y=o,b,v;if(h)y=+a.startOf(y,"isoWeek",p);if(y=+a.startOf(y,h?"day":u),a.diff(s,o,u)>1e5*d)throw Error(o+" and "+s+" are too far apart with stepSize of "+d+" "+u);let T=r.ticks.source==="data"&&this.getDataTimestamps();for(b=y,v=0;b<s;b=+a.add(b,d,u),v++)UM(g,b,T);if(b===s||r.bounds==="ticks"||v===1)UM(g,b,T);return Object.keys(g).sort(NM).map((M)=>+M)}getLabelForValue(a){let o=this._adapter,s=this.options.time;if(s.tooltipFormat)return o.format(a,s.tooltipFormat);return o.format(a,s.displayFormats.datetime)}format(a,o){let r=this.options.time.displayFormats,l=this._unit,u=o||r[l];return this._adapter.format(a,u)}_tickFormatFunction(a,o,s,r){let l=this.options,u=l.ticks.callback;if(u)return Ot(u,[a,o,s],this);let d=l.time.displayFormats,p=this._unit,h=this._majorUnit,g=p&&d[p],y=h&&d[h],b=s[o],v=h&&y&&b&&b.major;return this._adapter.format(a,r||(v?y:g))}generateTickLabels(a){let o,s,r;for(o=0,s=a.length;o<s;++o)r=a[o],r.label=this._tickFormatFunction(r.value,o,a)}getDecimalForValue(a){return a===null?NaN:(a-this.min)/(this.max-this.min)}getPixelForValue(a){let o=this._offsets,s=this.getDecimalForValue(a);return this.getPixelForDecimal((o.start+s)*o.factor)}getValueForPixel(a){let o=this._offsets,s=this.getDecimalForPixel(a)/o.factor-o.end;return this.min+s*(this.max-this.min)}_getLabelSize(a){let o=this.options.ticks,s=this.ctx.measureText(a).width,r=Us(this.isHorizontal()?o.maxRotation:o.minRotation),l=Math.cos(r),u=Math.sin(r),d=this._resolveTickFontOptions(0).size;return{w:s*l+d*u,h:s*u+d*l}}_getLabelCapacity(a){let o=this.options.time,s=o.displayFormats,r=s[o.unit]||s.millisecond,l=this._tickFormatFunction(a,0,FM(this,[a],this._majorUnit),r),u=this._getLabelSize(l),d=Math.floor(this.isHorizontal()?this.width/u.w:this.height/u.h)-1;return d>0?d:1}getDataTimestamps(){let a=this._cache.data||[],o,s;if(a.length)return a;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(o=0,s=r.length;o<s;++o)a=a.concat(r[o].controller.getAllParsedValues(this));return this._cache.data=this.normalize(a)}getLabelTimestamps(){let a=this._cache.labels||[],o,s;if(a.length)return a;let r=this.getLabels();for(o=0,s=r.length;o<s;++o)a.push(zM(this,r[o]));return this._cache.labels=this._normalized?a:this.normalize(a)}normalize(a){return Gx(a.sort(NM))}}function ym(a,o,s){let r=0,l=a.length-1,u,d,p,h;if(s){if(o>=a[r].pos&&o<=a[l].pos)({lo:r,hi:l}=Wr(a,"pos",o));({pos:u,time:p}=a[r]),{pos:d,time:h}=a[l]}else{if(o>=a[r].time&&o<=a[l].time)({lo:r,hi:l}=Wr(a,"time",o));({time:u,pos:p}=a[r]),{time:d,pos:h}=a[l]}let g=d-u;return g?p+(h-p)*(o-u)/g:p}class HN extends Iv{static id="timeseries";static defaults=Iv.defaults;constructor(a){super(a);this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let a=this._getTimestampsForTable(),o=this._table=this.buildLookupTable(a);this._minPos=ym(o,this.min),this._tableRange=ym(o,this.max)-this._minPos,super.initOffsets(a)}buildLookupTable(a){let{min:o,max:s}=this,r=[],l=[],u,d,p,h,g;for(u=0,d=a.length;u<d;++u)if(h=a[u],h>=o&&h<=s)r.push(h);if(r.length<2)return[{time:o,pos:0},{time:s,pos:1}];for(u=0,d=r.length;u<d;++u)if(g=r[u+1],p=r[u-1],h=r[u],Math.round((g+p)/2)!==h)l.push({time:h,pos:u/(d-1)});return l}_generate(){let a=this.min,o=this.max,s=super.getDataTimestamps();if(!s.includes(a)||!s.length)s.splice(0,0,a);if(!s.includes(o)||s.length===1)s.push(o);return s.sort((r,l)=>r-l)}_getTimestampsForTable(){let a=this._cache.all||[];if(a.length)return a;let o=this.getDataTimestamps(),s=this.getLabelTimestamps();if(o.length&&s.length)a=this.normalize(o.concat(s));else a=o.length?o:s;return a=this._cache.all=a,a}getDecimalForValue(a){return(ym(this._table,a)-this._minPos)/this._tableRange}getValueForPixel(a){let o=this._offsets,s=this.getDecimalForPixel(a)/o.factor-o.end;return ym(this._table,s*this._tableRange+this._minPos,!0)}}dl.register(zv,Hv,Pv,Hu,Ov,fI,hI,dI,uI);var jR=Q(vI(),1);var Js=Q(dt(),1);var Im=Q(dt(),1);var SI=(a)=>a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function LI(a,o,s=[]){if(o==null)throw Error("[lucide]: iconNode is required when icon name is used");return{name:SI(a),size:24,node:o,...s.length>0?{aliases:s}:{}}}var CI=(a)=>{let o="",s=!1;for(let r of a){if(r==="-"||r==="_"||r<=" "){s=o.length>0;continue}if(o.length===0)o+=r.toLowerCase();else o+=s?r.toUpperCase():r;s=!1}return o};var TI=(a)=>{let o=CI(a);return o.charAt(0).toUpperCase()+o.slice(1)};var Jd=Q(dt(),1);var Kd=(...a)=>a.filter((o,s,r)=>Boolean(o)&&o.trim()!==""&&r.indexOf(o)===s).join(" ").trim();var oi={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"};function qv(a){return a!==null&&a!==void 0}function wI(a,o={}){let s=o.attributeNames??{},r=(v)=>s[v]??v,l=a.size??a.width??oi.width,u=a.size??a.height??oi.height,d=a.aliases?.filter((v)=>typeof v==="string"&&v.trim()!=="").map((v)=>`lucide-${v}`)??[],p=[...a.name?[`lucide-${a.name}`]:[],...d],h=o.className?.split(" ").filter(Boolean)??[],g=o.includeDefaultClasses===!1?Kd(...h):Kd("lucide",...p,...h),y=o.absoluteStrokeWidth?Number(o.strokeWidth??oi["stroke-width"])*Number(a.size??a.width??oi.width)/Number(o.size??o.width??oi.width):o.strokeWidth??oi["stroke-width"];return["svg",{...Object.entries(oi).reduce((v,[T,M])=>(v[r(T)]=M,v),{}),..."color"in o&&o.color&&{[r("stroke")]:o.color},..."size"in o&&qv(o.size)&&{[r("width")]:o.size,[r("height")]:o.size},..."width"in o&&qv(o.width)&&{[r("width")]:o.width},..."height"in o&&qv(o.height)&&{[r("height")]:o.height},[r("stroke-width")]:y,...g&&{[r("class")]:g},[r("viewBox")]:`0 0 ${l} ${u}`,...o.hasA11yProp===!1?{[r("aria-hidden")]:"true"}:{},..."attributes"in o&&o.attributes},a.node.map((v)=>{let[T,M,I]=v,w=o.nonScalingStroke?{[r("vector-effect")]:"non-scaling-stroke",...M}:M;return I?[T,w,I]:[T,w]})]}function kI(a,o={}){return wI(a,{...o,attributeNames:{...o.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var MI=(a)=>{for(let o in a)if(o.startsWith("aria-")||o==="role"||o==="title")return!0;return!1};var qu=Q(dt(),1),GN=qu.createContext({});var II=()=>qu.useContext(GN);var AI=Jd.forwardRef(({color:a,size:o,width:s,height:r,strokeWidth:l,absoluteStrokeWidth:u,nonScalingStroke:d,className:p="",children:h,iconNode:g=[],icon:y={node:g,aliases:[],size:24},...b},v)=>{let{size:T=24,strokeWidth:M=2,absoluteStrokeWidth:I=!1,nonScalingStroke:w=!1,color:A="currentColor",className:B=""}=II()??{},z=Boolean(h)||MI(b),[H,q,j=[]]=kI(y,{color:a??A,width:s??o??T,height:r??o??T,strokeWidth:l??M,absoluteStrokeWidth:u??I,nonScalingStroke:d??w,className:Kd(B,p),hasA11yProp:z,attributes:b});return Jd.createElement(H,{ref:v,...q},[...j.map(([G,Y])=>Jd.createElement(G,Y)),...Array.isArray(h)?h:[h]])});function we(a,o=[],s=[]){let r=typeof a==="string"?LI(a,o,s):a,l=Im.forwardRef(({className:u,...d},p)=>Im.createElement(AI,{ref:p,icon:r,className:u,...d}));if(r.name)l.displayName=TI(r.name);return l}var RI={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};RI.node;var ni=we(RI);var DI={name:"face-slightly-smiling",size:24,node:[["path",{d:"M15 10V9",key:"4dkmfx"}],["path",{d:"M16.472 15a6 6 0 01-8.943 0",key:"7qomzy"}],["path",{d:"M9 10V9",key:"1lazqi"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],aliases:["smile"]};DI.node;var si=we(DI);var _I={name:"activity",size:24,node:[["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",key:"169zse"}]]};_I.node;var ef=we(_I);var EI={name:"arrow-left",size:24,node:[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]};EI.node;var tf=we(EI);var OI={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};OI.node;var pl=we(OI);var PI={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]};PI.node;var Xs=we(PI);var BI={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};BI.node;var hl=we(BI);var NI={name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]};NI.node;var af=we(NI);var zI={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};zI.node;var of=we(zI);var HI={name:"coins",size:24,node:[["path",{d:"M13.744 17.736a6 6 0 1 1-7.48-7.48",key:"bq4yh3"}],["path",{d:"M15 6h1v4",key:"11y1tn"}],["path",{d:"m6.134 14.768.866-.5 2 3.464",key:"17snzx"}],["circle",{cx:"16",cy:"8",r:"6",key:"14bfc9"}]]};HI.node;var ml=we(HI);var UI={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};UI.node;var gl=we(UI);var FI={name:"cpu",size:24,node:[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]};FI.node;var nf=we(FI);var qI={name:"folder",size:24,node:[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]};qI.node;var sf=we(qI);var VI={name:"gauge",size:24,node:[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]};VI.node;var rf=we(VI);var jI={name:"hash",size:24,node:[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]};jI.node;var lf=we(jI);var GI={name:"inbox",size:24,node:[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["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",key:"oot6mr"}]]};GI.node;var uf=we(GI);var XI={name:"layout-dashboard",size:24,node:[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]};XI.node;var cf=we(XI);var YI={name:"list-tree",size:24,node:[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]};YI.node;var df=we(YI);var $I={name:"menu",size:24,node:[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]};$I.node;var ff=we($I);var WI={name:"monitor",size:24,node:[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]};WI.node;var pf=we(WI);var ZI={name:"moon",size:24,node:[["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",key:"kfwtm"}]]};ZI.node;var hf=we(ZI);var QI={name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["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",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]};QI.node;var mf=we(QI);var KI={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};KI.node;var bl=we(KI);var JI={name:"star",size:24,node:[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]};JI.node;var gf=we(JI);var eA={name:"sun",size:24,node:[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]};eA.node;var bf=we(eA);var tA={name:"trending-up",size:24,node:[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]};tA.node;var yf=we(tA);var aA={name:"wrench",size:24,node:[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]};aA.node;var xf=we(aA);var oA={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};oA.node;var Ys=we(oA);var nA={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};nA.node;var vf=we(nA);var RA=Q(dt(),1);var Am=[{id:"overview",label:"Overview",icon:cf},{id:"requests",label:"Requests",icon:ef},{id:"traces",label:"Traces",icon:df},{id:"errors",label:"Errors",icon:ni},{id:"models",label:"Models",icon:nf},{id:"providers",label:"Providers",icon:mf},{id:"tools",label:"Tools",icon:xf},{id:"costs",label:"Costs",icon:ml},{id:"behavior",label:"Behavior",shortLabel:"Behavior",icon:si},{id:"projects",label:"Projects",icon:sf},{id:"gain",label:"Gain",icon:yf}];var sn=Q(de(),1);function Vv({activeSection:a,onSectionChange:o,className:s=""}){return sn.jsxDEV("aside",{className:`stats-nav-rail ${s}`,children:[sn.jsxDEV("div",{className:"stats-nav-rail-header",children:sn.jsxDEV("div",{className:"stats-logo-container",children:[sn.jsxDEV("span",{className:"stats-logo-text",children:"OH MY PI"},void 0,!1,void 0,this),sn.jsxDEV("span",{className:"stats-logo-subtext",children:"Observability"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),sn.jsxDEV("nav",{className:"stats-nav-rail-menu",children:Am.map((r)=>{let l=r.id===a,u=r.icon;return sn.jsxDEV("button",{type:"button",onClick:()=>o(r.id),className:"stats-nav-rail-item","data-active":l?"true":"false","aria-current":l?"page":void 0,children:[sn.jsxDEV(u,{size:16,className:"stats-nav-rail-item-icon"},void 0,!1,void 0,this),sn.jsxDEV("span",{className:"stats-nav-rail-item-label",children:r.label},void 0,!1,void 0,this)]},r.id,!0,void 0,this)})},void 0,!1,void 0,this),sn.jsxDEV("div",{className:"stats-nav-rail-footer",children:sn.jsxDEV("span",{className:"stats-version-tag",children:"OMP Stats v1.0.0"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var jv=Q(de(),1),YN=[{value:"1h",label:"1h"},{value:"24h",label:"24h"},{value:"7d",label:"7d"},{value:"30d",label:"30d"},{value:"90d",label:"90d"},{value:"all",label:"All"}];function sA({value:a,onChange:o,className:s=""}){return jv.jsxDEV("div",{className:`stats-range-control ${s}`,role:"radiogroup","aria-label":"Select time range",children:YN.map((r)=>{let l=r.value===a;return jv.jsxDEV("button",{type:"button",role:"radio","aria-checked":l,"data-active":l?"true":"false",className:"stats-range-control-btn",onClick:()=>o(r.value),children:r.label},r.value,!1,void 0,this)})},void 0,!1,void 0,this)}var Gv=Q(dt(),1);class rA extends Error{status;endpoint;constructor(a,o,s){super(s);this.name="ApiError",this.status=a,this.endpoint=o}}async function ao(a,o){let s=await fetch(a,o);if(!s.ok)throw new rA(s.status,a,`HTTP error ${s.status} on ${a}`);return s.json()}async function iA(a="24h",o){return ao(`/api/stats/overview?range=${encodeURIComponent(a)}`,{signal:o})}async function lA(a="24h",o){return ao(`/api/stats/model-dashboard?range=${encodeURIComponent(a)}`,{signal:o})}async function uA(a="24h",o){return ao(`/api/stats/costs?range=${encodeURIComponent(a)}`,{signal:o})}async function Rm(a=50,o){return ao(`/api/stats/recent?limit=${a}`,{signal:o})}async function cA(a="24h",o=50,s){return ao(`/api/stats/errors?range=${encodeURIComponent(a)}&limit=${o}`,{signal:s})}async function dA(a,o){return ao(`/api/request/${a}`,{signal:o})}async function fA(a){return ao("/api/sync",{signal:a})}async function pA(a="24h",o){return ao(`/api/stats/behavior?range=${encodeURIComponent(a)}`,{signal:o})}async function hA(a="24h",o){return ao(`/api/stats/folders?range=${encodeURIComponent(a)}`,{signal:o})}async function mA(a="24h",o,s){let r=new URLSearchParams({range:a});if(o)r.set("project",o);return ao(`/api/stats/gain?${r}`,{signal:s})}async function gA(a="24h",o){return ao(`/api/stats/tools?range=${encodeURIComponent(a)}`,{signal:o})}async function bA(a="24h",o){return ao(`/api/stats/providers?range=${encodeURIComponent(a)}`,{signal:o})}async function yA(a=100,o,s){let r=new URLSearchParams({limit:String(a)});if(o)r.set("q",o);return ao(`/api/sessions?${r}`,{signal:s})}async function xA(a,o){return ao(`/api/session/trace?file=${encodeURIComponent(a)}`,{signal:o})}async function vA(a,o,s){return ao(`/api/session/entry?file=${encodeURIComponent(a)}&id=${encodeURIComponent(o)}`,{signal:s})}var Sf=Q(de(),1);function SA({onSyncStart:a,onSyncComplete:o,className:s=""}){let[r,l]=Gv.useState(!1),[u,d]=Gv.useState(null),p=async()=>{if(r)return;if(l(!0),d(null),a)a();try{let h=await fA(),g={processed:typeof h?.processed==="number"?h.processed:0,files:typeof h?.files==="number"?h.files:0,totalMessages:typeof h?.totalMessages==="number"?h.totalMessages:0};if(d({type:"success",message:`Synced: ${g.processed} new request${g.processed===1?"":"s"} found.`}),o)o({success:!0,data:g})}catch(h){let g=h instanceof Error?h.message:String(h);if(d({type:"error",message:`Sync failed: ${g}`}),o)o({success:!1,error:g})}finally{l(!1)}};return Sf.jsxDEV("div",{className:`stats-sync-container ${s}`,children:[u&&Sf.jsxDEV("span",{className:"stats-sync-status-msg","data-type":u.type,children:u.message},void 0,!1,void 0,this),Sf.jsxDEV("button",{type:"button",onClick:p,disabled:r,className:"stats-button stats-button-primary stats-sync-btn","aria-busy":r,children:[Sf.jsxDEV(bl,{size:14,className:`stats-sync-icon ${r?"stats-spin":""}`},void 0,!1,void 0,this),r?"Syncing...":"Sync DB"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Dm=Q(dt(),1),LA="omp-stats-theme",CA="(prefers-color-scheme: dark)";function $N(){if(typeof localStorage>"u")return"system";let a=localStorage.getItem(LA);return a==="light"||a==="dark"||a==="system"?a:"system"}function TA(){if(typeof window>"u")return"dark";return window.matchMedia(CA).matches?"dark":"light"}var xl=$N(),Lf=xl==="system"?TA():xl,Xv=new Set;function wA(){for(let a of Xv)a()}function Yv(){if(Lf=xl==="system"?TA():xl,typeof document<"u")document.documentElement.dataset.theme=Lf,document.documentElement.style.colorScheme=Lf}if(typeof window<"u")Yv(),window.matchMedia(CA).addEventListener("change",()=>{if(xl==="system")Yv(),wA()});function WN(a){if(xl=a,typeof localStorage<"u")localStorage.setItem(LA,a);Yv(),wA()}function $v(a){return Xv.add(a),()=>Xv.delete(a)}function $t(){return Dm.useSyncExternalStore($v,()=>Lf,()=>"dark")}function kA(){let a=Dm.useSyncExternalStore($v,()=>xl,()=>"system"),o=Dm.useSyncExternalStore($v,()=>Lf,()=>"dark");return{preference:a,resolved:o,setPreference:WN}}var Wv=Q(de(),1),ZN={system:"light",light:"dark",dark:"system"},QN={system:pf,light:bf,dark:hf},MA={system:"System theme",light:"Light theme",dark:"Dark theme"};function IA(){let{preference:a,setPreference:o}=kA(),s=QN[a];return Wv.jsxDEV("button",{type:"button",className:"stats-theme-toggle",onClick:()=>o(ZN[a]),"aria-label":`${MA[a]} (click to switch)`,title:`${MA[a]} — click to switch`,children:Wv.jsxDEV(s,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var rn=Q(de(),1);function AA({activeSection:a,range:o,onRangeChange:s,updatedAt:r,onSyncStart:l,onSyncComplete:u,onMenuToggle:d,className:p=""}){let g=Am.find((b)=>b.id===a)?.label||"Observability",y=(b)=>{if(!b)return"Not updated";return`Updated ${new Date(b).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}`};return rn.jsxDEV("header",{className:`stats-top-bar ${p}`,children:[rn.jsxDEV("div",{className:"stats-top-bar-left",children:[d&&rn.jsxDEV("button",{type:"button",onClick:d,className:"stats-mobile-menu-btn","aria-label":"Open navigation menu",children:rn.jsxDEV(ff,{size:20},void 0,!1,void 0,this)},void 0,!1,void 0,this),rn.jsxDEV("h1",{className:"stats-page-title",children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rn.jsxDEV("div",{className:"stats-top-bar-right",children:[rn.jsxDEV("div",{className:"stats-top-bar-meta",children:rn.jsxDEV("span",{className:"stats-last-updated",title:r?new Date(r).toLocaleString():void 0,children:y(r)},void 0,!1,void 0,this)},void 0,!1,void 0,this),rn.jsxDEV(sA,{value:o,onChange:s},void 0,!1,void 0,this),rn.jsxDEV(IA,{},void 0,!1,void 0,this),rn.jsxDEV(SA,{onSyncStart:l,onSyncComplete:u},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Ga=Q(de(),1);function DA({activeSection:a,onSectionChange:o,range:s,onRangeChange:r,updatedAt:l,onSyncStart:u,onSyncComplete:d,children:p}){let[h,g]=RA.useState(!1),y=(b)=>{o(b),g(!1)};return Ga.jsxDEV("div",{className:"stats-app-container",children:[Ga.jsxDEV(Vv,{activeSection:a,onSectionChange:y,className:"stats-desktop-nav"},void 0,!1,void 0,this),h&&Ga.jsxDEV("div",{className:"stats-mobile-drawer-overlay",onClick:()=>g(!1),role:"presentation",children:Ga.jsxDEV("div",{className:"stats-mobile-drawer",onClick:(b)=>b.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Navigation menu",children:[Ga.jsxDEV("div",{className:"stats-mobile-drawer-header",children:[Ga.jsxDEV("div",{className:"stats-logo-container",children:[Ga.jsxDEV("span",{className:"stats-logo-text",children:"OH MY PI"},void 0,!1,void 0,this),Ga.jsxDEV("span",{className:"stats-logo-subtext",children:"Observability"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ga.jsxDEV("button",{type:"button",onClick:()=>g(!1),className:"stats-drawer-close-btn","aria-label":"Close navigation menu",children:Ga.jsxDEV(Ys,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ga.jsxDEV(Vv,{activeSection:a,onSectionChange:y,className:"stats-mobile-nav"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),Ga.jsxDEV("div",{className:"stats-main-pane",children:[Ga.jsxDEV(AA,{activeSection:a,range:s,onRangeChange:r,updatedAt:l,onSyncStart:u,onSyncComplete:d,onMenuToggle:()=>g(!0)},void 0,!1,void 0,this),Ga.jsxDEV("main",{className:"stats-content-area",children:Ga.jsxDEV("div",{className:"stats-content-inner",children:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var rs=Q(dt(),1),KN=["overview","requests","traces","errors","models","providers","tools","costs","behavior","projects","gain"],_A=["1h","24h","7d","30d","90d","all"];function Zv(a){let o=a.replace(/^#\/?/,""),[s,r]=o.split("?"),l=KN.includes(s)?s:"overview",u="24h",d=null;if(r){let p=new URLSearchParams(r),h=p.get("range");if(_A.includes(h))u=h;d=p.get("s")}return{section:l,range:u,session:d}}function Qv(a,o,s){let r=s?`&s=${encodeURIComponent(s)}`:"";return`/${a}?range=${o}${r}`}function EA(){let[a,o]=rs.useState(()=>Zv(window.location.hash));rs.useEffect(()=>{let d=()=>{o(Zv(window.location.hash))};return window.addEventListener("hashchange",d),()=>{window.removeEventListener("hashchange",d)}},[]);let s=rs.useCallback((d,p,h)=>{window.location.hash=Qv(d,p,h)},[]),r=rs.useCallback((d)=>{s(d,a.range,d==="traces"?a.session:null)},[a.range,a.session,s]),l=rs.useCallback((d)=>{let p=_A.includes(d)?d:"24h";s(a.section,p,a.session)},[a.section,a.session,s]),u=rs.useCallback((d)=>{s(a.section,a.range,d)},[a.section,a.range,s]);return rs.useEffect(()=>{let d=window.location.hash,p=Zv(d),h=`#${Qv(p.section,p.range,p.session)}`;if(d!==h)window.location.hash=Qv(p.section,p.range,p.session)},[]),{section:a.section,setSection:r,range:a.range,setRange:l,session:a.session,setSession:u}}var OA=["January","February","March","April","May","June","July","August","September","October","November","December"],PA=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],JN=["MMMM","yyyy","EEEE","MMM","EEE","yy","MM","dd","HH","hh","mm","ss","M","d","H","h","m","s","a"];function ri(a,o=2){return String(a).padStart(o,"0")}function ez(a,o){let s=a.getMonth(),r=a.getDay(),l=a.getHours(),u=l%12||12;switch(o){case"yyyy":return ri(a.getFullYear(),4);case"yy":return ri(a.getFullYear()%100);case"MMMM":return OA[s];case"MMM":return OA[s].slice(0,3);case"MM":return ri(s+1);case"M":return String(s+1);case"dd":return ri(a.getDate());case"d":return String(a.getDate());case"EEEE":return PA[r];case"EEE":return PA[r].slice(0,3);case"HH":return ri(l);case"H":return String(l);case"hh":return ri(u);case"h":return String(u);case"mm":return ri(a.getMinutes());case"m":return String(a.getMinutes());case"ss":return ri(a.getSeconds());case"s":return String(a.getSeconds());case"a":return l<12?"AM":"PM"}}function NA(a){let o=a instanceof Date?new Date(a.getTime()):new Date(a);if(Number.isNaN(o.getTime()))throw RangeError("Invalid time value");return o}function Cn(a,o){let s=NA(a),r="";for(let l=0;l<o.length;){if(o[l]==="'"){if(o[l+1]==="'"){r+="'",l+=2;continue}l++;while(l<o.length){if(o[l]!=="'"){r+=o[l++];continue}if(o[l+1]==="'"){r+="'",l+=2;continue}l++;break}continue}let u=o.slice(l),d=JN.find((h)=>u.startsWith(h));if(d){r+=ez(s,d),l+=d.length;continue}let p=o[l++];if(/[A-Za-z]/.test(p))throw RangeError(`Format string contains an unescaped latin alphabet character \`${p}\``);r+=p}return r}function ii(a,o){return`${a} ${a===1?o:`${o}s`}`}function tz(a,o){let s=(o.getFullYear()-a.getFullYear())*12+o.getMonth()-a.getMonth();if(s===0)return 0;let r=new Date(a);r.setDate(1),r.setFullYear(a.getFullYear(),a.getMonth()+s,1);let l=new Date(r.getFullYear(),r.getMonth()+1,0).getDate();if(r.setDate(Math.min(a.getDate(),l)),r.getTime()>o.getTime())s--;return s}function BA(a,o){let s=(o.getTime()-a.getTime())/1000,r=(o.getTimezoneOffset()-a.getTimezoneOffset())*60,l=Math.round((s-r)/60);if(l<2)return l===0?"less than a minute":"1 minute";if(l<45)return ii(l,"minute");if(l<90)return"about 1 hour";if(l<1440)return`about ${ii(Math.round(l/60),"hour")}`;if(l<2520)return"1 day";if(l<43200)return ii(Math.round(l/1440),"day");if(l<86400)return`about ${ii(Math.round(l/43200),"month")}`;let u=tz(a,o);if(u<12)return ii(Math.round(l/43200),"month");let d=Math.trunc(u/12),p=u%12;if(p<3)return`about ${ii(d,"year")}`;if(p<9)return`over ${ii(d,"year")}`;return`almost ${ii(d+1,"year")}`}function zA(a,o={}){let s=NA(a),r=new Date(Date.now()),l=s.getTime()>r.getTime(),u=l?BA(r,s):BA(s,r);if(!o.addSuffix)return u;return l?`in ${u}`:`${u} ago`}var xa=Q(dt(),1);var Kv=Q(HA(),1),Ho=Q(dt(),1);var FA="label";function UA(a,o){if(typeof a==="function")a(o);else if(a)a.current=o}function oz(a,o){let s=a.options;if(s&&o)Object.assign(s,o)}function qA(a,o){a.labels=o}function VA(a,o,s=FA){let r=[];a.datasets=o.map((l)=>{let u=a.datasets.find((d)=>d[s]===l[s]);if(!u||!l.data||r.includes(u))return{...l};return r.push(u),Object.assign(u,l),u})}function nz(a,o=FA){let s={labels:[],datasets:[]};return qA(s,a.labels),VA(s,a.datasets,o),s}function sz(a,o){let{height:s=150,width:r=300,redraw:l=!1,datasetIdKey:u,type:d,data:p,options:h,plugins:g=[],fallbackContent:y,updateMode:b,...v}=a,T=Ho.useRef(null),M=Ho.useRef(null),I=()=>{if(!T.current)return;M.current=new dl(T.current,{type:d,data:nz(p,u),options:h&&{...h},plugins:g}),UA(o,M.current)},w=()=>{if(UA(o,null),M.current)M.current.destroy(),M.current=null};return Ho.useEffect(()=>{if(!l&&M.current&&h)oz(M.current,h)},[l,h]),Ho.useEffect(()=>{if(!l&&M.current)qA(M.current.config.data,p.labels)},[l,p.labels]),Ho.useEffect(()=>{if(!l&&M.current&&p.datasets)VA(M.current.config.data,p.datasets,u)},[l,p.datasets]),Ho.useEffect(()=>{if(!M.current)return;if(l)w(),setTimeout(I);else M.current.update(b)},[l,h,p.labels,p.datasets,b]),Ho.useEffect(()=>{if(!M.current)return;w(),setTimeout(I)},[d]),Ho.useEffect(()=>(I(),()=>w()),[]),Kv.jsx("canvas",{ref:T,role:"img",height:s,width:r,...v,children:y})}var rz=Ho.forwardRef(sz);function jA(a,o){return dl.register(o),Ho.forwardRef((s,r)=>Kv.jsx(rz,{...s,ref:r,type:a}))}var Xa=jA("line",Dv),li=jA("bar",Rv);var yt=["#ed4abf","#9b4dff","#5ad8e6","#62d394","#c77dff","#ff8fd1","#f5c14b","#ff6b7d"];function GA(a){let o=[...a].sort((s,r)=>r.totalRequests-s.totalRequests||`${s.model}::${s.provider}`.localeCompare(`${r.model}::${r.provider}`));return new Map(o.map((s,r)=>[`${s.model}::${s.provider}`,yt[r%yt.length]]))}var ra={dark:{legendLabel:"#a89fb3",tooltipBackground:"#241a2e",tooltipTitle:"#eae5ef",tooltipBody:"#a89fb3",tooltipBorder:"rgba(255, 255, 255, 0.12)",grid:"rgba(255, 255, 255, 0.06)",tick:"#867a93"},light:{legendLabel:"#5a5462",tooltipBackground:"#ffffff",tooltipTitle:"#241a2e",tooltipBody:"#5a5462",tooltipBorder:"rgba(20, 12, 28, 0.15)",grid:"rgba(20, 12, 28, 0.08)",tick:"#6a6275"}};function is(a){let{chartTheme:o,showLegend:s,defaultLabel:r,formatValue:l,footer:u}=a;return{legend:{display:s,position:"top",align:"start",labels:{color:o.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:o.tooltipBackground,titleColor:o.tooltipTitle,bodyColor:o.tooltipBody,borderColor:o.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(d)=>{let p=d.dataset.label??r,h=d.parsed.y??0;return`${p}: ${l(h)}`},...u?{footer:u}:{}}}}}function ls(a){let{chartTheme:o,formatY:s}=a,r={grid:{color:o.grid,drawBorder:!1},ticks:{color:o.tick,font:{size:11}}},l={...r,ticks:{...r.ticks,callback:(u)=>s(Number(u))},min:0};return{sharedScaleBase:r,yScale:l}}function Vu(a){return{borderColor:a,backgroundColor:`${a}20`,fill:!0,tension:0,pointRadius:3,pointHoverRadius:4,borderWidth:2}}function Sl(a){return{backgroundColor:a,borderColor:a,borderWidth:0,borderRadius:4,maxBarThickness:56}}function ui(a,o){return a.datasets.map((s,r)=>({label:s.label,data:s.data,...o(r)}))}function _m(a,o,s){if(a.length===0)return{labels:[],datasets:[]};let{initBucket:r,accumulate:l,bucketToValue:u}=s,d=new Map;for(let h of a){let g=d.get(h.timestamp)??r();l(g,h),d.set(h.timestamp,g)}let p=[...d.entries()].sort((h,g)=>h[0]-g[0]);return{labels:p.map(([h])=>Cn(new Date(h),"MMM d")),datasets:[{label:o,data:p.map(([,h])=>u(h))}]}}function ju(a,o){if(a.length===0)return{labels:[],datasets:[]};let{topN:s=5,rankWeight:r,initBucket:l,accumulate:u,bucketToValue:d}=o,p=new Map;for(let A of a){let B=`${A.model}::${A.provider}`,z=p.get(B);if(z)z.weight+=r(A);else p.set(B,{model:A.model,provider:A.provider,weight:r(A)})}let g=[...p.entries()].sort((A,B)=>B[1].weight-A[1].weight).slice(0,s),y=new Set(g.map(([A])=>A)),b=new Map;for(let[,{model:A}]of g)b.set(A,(b.get(A)??0)+1);let v=new Map;for(let[A,{model:B,provider:z}]of g)v.set(A,(b.get(B)??0)>1?`${B} (${z})`:B);let T=[...new Set(a.map((A)=>A.timestamp))].sort((A,B)=>A-B),M=g.map(([A])=>v.get(A)??A);if(a.some((A)=>!y.has(`${A.model}::${A.provider}`)))M.push("Other");let w=new Map;for(let A of T)w.set(A,{});for(let A of a){let B=`${A.model}::${A.provider}`,z=y.has(B)?v.get(B)??A.model:"Other",H=w.get(A.timestamp);if(!H)continue;let q=H[z]??l();u(q,A),H[z]=q}return{labels:T.map((A)=>Cn(new Date(A),"MMM d")),datasets:M.map((A)=>({label:A,data:T.map((B)=>{let z=w.get(B)?.[A];return z?d(z):0})}))}}var Wt=Q(de(),1);function $s(a){return{borderColor:a,backgroundColor:"transparent",tension:0.4,pointRadius:0,borderWidth:2}}function Em({timestamps:a,values:o,color:s}){let r={labels:a.map((u)=>Cn(new Date(u),"MMM d")),datasets:[{data:o,...$s(s)}]};return Wt.jsxDEV(Xa,{data:r,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1,min:0}}}},void 0,!1,void 0,this)}function Om(a){return{legend:{display:!0,position:"top",labels:{color:a.legendLabel,usePointStyle:!0,padding:16,font:{size:12}}},tooltip:{backgroundColor:a.tooltipBackground,titleColor:a.tooltipTitle,bodyColor:a.tooltipBody,borderColor:a.tooltipBorder,borderWidth:1,cornerRadius:8}}}function XA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}},min:0}}}function YA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{type:"linear",display:!0,position:"left",grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1},ticks:{color:a.tick,font:{size:11}}}}}function Pm({title:a,subtitle:o,children:s}){return Wt.jsxDEV("div",{className:"stats-panel overflow-hidden",children:[Wt.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:[Wt.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),o?Wt.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:o},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),Wt.jsxDEV("div",{className:"overflow-x-auto",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function iz(a){if(a==="right")return"text-right";if(a==="center")return"text-center";return""}function Bm({columns:a,gridTemplate:o}){return Wt.jsxDEV("div",{className:"grid gap-3 px-5 py-3 text-[var(--text-muted)] text-xs uppercase tracking-wider font-semibold",style:{gridTemplateColumns:o},children:[a.map((s)=>Wt.jsxDEV("div",{className:iz(s.align),children:s.label},s.label,!1,void 0,this)),Wt.jsxDEV("div",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Nm({children:a}){return Wt.jsxDEV("div",{className:"max-h-[calc(100vh-300px)] overflow-y-auto",children:a},void 0,!1,void 0,this)}function zm({model:a,provider:o}){return Wt.jsxDEV("div",{children:[Wt.jsxDEV("div",{className:"font-medium text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),Wt.jsxDEV("div",{className:"text-xs text-[var(--text-muted)]",children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Hm({gridTemplate:a,cells:o,trendCell:s,isExpanded:r,onToggle:l,expandedContent:u}){return Wt.jsxDEV("div",{className:"border-t border-[var(--border-subtle)]",children:[Wt.jsxDEV("button",{type:"button",onClick:l,className:"w-full bg-transparent border-none text-left px-5 py-3 cursor-pointer hover:bg-[var(--bg-hover)] transition-colors",children:Wt.jsxDEV("div",{className:"grid gap-3 items-center",style:{gridTemplateColumns:a},children:[o,Wt.jsxDEV("div",{className:"h-10",children:s},void 0,!1,void 0,this),Wt.jsxDEV("div",{className:"flex justify-center text-[var(--text-muted)]",children:r?Wt.jsxDEV(af,{size:16},void 0,!1,void 0,this):Wt.jsxDEV(Xs,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r?Wt.jsxDEV("div",{className:"px-5 py-4 bg-[var(--bg-elevated)] border-t border-[var(--border-subtle)]",children:u},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function Um(){return Wt.jsxDEV("div",{className:"text-[var(--text-muted)] text-center text-sm",children:"-"},void 0,!1,void 0,this)}function Fm({message:a="No data available"}){return Wt.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:a},void 0,!1,void 0,this)}function Ce(a){return a.toLocaleString()}function lt(a){return a.toLocaleString(void 0,{notation:"compact"})}function Cf(a,o){if(a===0)return"$0";let s=o!==void 0?o:a>0&&a<0.01?4:2;return`$${a.toLocaleString(void 0,{minimumFractionDigits:s,maximumFractionDigits:s})}`}function ea(a,o,s){return a===0&&o>0?"N/A":Cf(a,s)}function ln(a,o){let s=a.usage.totalTokens>0&&a.usage.cost.total===0&&(a.provider==="xai-oauth"||a.costUnpriced===!0)?1:0;return ea(a.usage.cost.total,s,o)}function Ht(a,o=1){return`${(a*100).toFixed(o)}%`}function rt(a,o){if(a===null)return"-";let s=a/1000,r=o!==void 0?o:s<1?2:1;return`${s.toFixed(r)}s`}function qm(a){if(a===null)return"-";return a.toFixed(1)}function za(a){return zA(new Date(a),{addSuffix:!0})}function Jv(a){if(a>=1e9)return`${(a/1e9).toFixed(1)} GB`;if(a>=1e6)return`${(a/1e6).toFixed(1)} MB`;if(a>=1000)return`${(a/1000).toFixed(1)} KB`;return`${a} B`}var Ha=Q(dt(),1),ci=new Map,lz=64;function Vt(a,o,s){let r=JSON.stringify(a),[l,u]=Ha.useState(()=>ci.get(r)?.data??null),[d,p]=Ha.useState(null),[h,g]=Ha.useState(()=>!ci.has(r)),[y,b]=Ha.useState(!1),[v,T]=Ha.useState(()=>ci.get(r)?.updatedAt??null),M=Ha.useRef(o);M.current=o;let I=Ha.useRef(r);I.current=r;let w=s?.enabled??!0,A=s?.pollMs,B=Ha.useRef(null),z=Ha.useRef(!1);z.current=l!==null;let H=Ha.useCallback(async(j)=>{if(B.current)B.current.abort();let G=new AbortController;if(B.current=G,j)b(!0);else g(!0),u(null);p(null);try{let Y=await M.current(G.signal);if(G.signal.aborted)return;if(ci.set(I.current,{data:Y,updatedAt:Date.now()}),ci.size>lz){let J=ci.keys().next().value;if(J!==void 0)ci.delete(J)}u(Y),T(Date.now()),p(null)}catch(Y){if(G.signal.aborted)return;p(Y instanceof Error?Y:Error(String(Y)))}finally{if(!G.signal.aborted){if(g(!1),b(!1),B.current===G)B.current=null}}},[]);Ha.useEffect(()=>{if(!w){g(!1),b(!1);return}let j=ci.get(r);if(j)u(j.data),T(j.updatedAt),g(!1),H(!0);else H(z.current);return()=>{if(B.current)B.current.abort(),B.current=null}},[r,w,H]),Ha.useEffect(()=>{if(!w||!A)return;let j=setInterval(()=>{if(document.hidden)return;H(!0)},A);return()=>{clearInterval(j)}},[w,A,H]);let q=Ha.useCallback(async()=>{await H(!0)},[H]);return{data:l,error:d,loading:h,refreshing:y,refetch:q,updatedAt:v}}var $A=3600000,Vm=24*$A,uz=300000,WA={"1h":{windowLabel:"the last hour",trendLabel:"1h Trend",bucketMs:uz,bucketCount:12,tickFormat:"HH:mm"},"24h":{windowLabel:"the last 24 hours",trendLabel:"24h Trend",bucketMs:$A,bucketCount:24,tickFormat:"HH:mm"},"7d":{windowLabel:"the last 7 days",trendLabel:"7d Trend",bucketMs:Vm,bucketCount:7,tickFormat:"MMM d"},"30d":{windowLabel:"the last 30 days",trendLabel:"30d Trend",bucketMs:Vm,bucketCount:30,tickFormat:"MMM d"},"90d":{windowLabel:"the last 90 days",trendLabel:"90d Trend",bucketMs:Vm,bucketCount:90,tickFormat:"MMM d"},all:{windowLabel:"all time",trendLabel:"Trend",bucketMs:Vm,bucketCount:0,tickFormat:"MMM d"}};function Ll(a){return WA[a]}function Tf(a,o){return Cn(new Date(a),WA[o].tickFormat)}var cz=["main","subagent","advisor"];function jm(a){return a.totalInputTokens+a.totalOutputTokens+a.totalCacheReadTokens+a.totalCacheWriteTokens}function ZA(a){let o=new Map;for(let d of a)o.set(d.agentType,d);let s=cz.map((d)=>o.get(d)).filter((d)=>d!==void 0),r=s.reduce((d,p)=>d+jm(p),0),l=s.reduce((d,p)=>d+p.totalCost,0),u=s.map((d)=>{let p=jm(d);return{agentType:d.agentType,tokens:p,requests:d.totalRequests,cost:d.totalCost,share:r>0?p/r:0}});return{totalTokens:r,totalCost:l,segments:u}}function QA(a){let o=a.reduce((h,g)=>h+g.cost,0),s=a.reduce((h,g)=>h+g.unpricedRequests,0),r=new Set(a.map((h)=>h.timestamp)).size,l=r>0?o/r:0,u=new Map;for(let h of a)u.set(h.model,(u.get(h.model)??0)+h.cost);let d="",p=0;for(let[h,g]of u)if(g>p)d=h,p=g;return{totalCost:o,unpricedRequests:s,avgDailyCost:l,topModelName:d,topModelCost:p}}function KA(a,o){if(a.length===0)return new Map;let s=Ll(o),{bucketMs:r,bucketCount:l}=s,u=l>0?(()=>{let h=a.reduce((b,v)=>Math.max(b,v.timestamp),0),y=(h>0?h:Math.floor(Date.now()/r)*r)-(l-1)*r;return Array.from({length:l},(b,v)=>y+v*r)})():Array.from(new Set(a.map((h)=>h.timestamp))).sort((h,g)=>h-g),d=new Map(u.map((h,g)=>[h,g])),p=new Map;for(let h of a){let g=`${h.model}::${h.provider}`,y=p.get(g);if(!y)y={label:`${h.model} (${h.provider})`,data:u.map((v)=>({timestamp:v,avgTtftSeconds:null,avgTokensPerSecond:null,requests:0}))},p.set(g,y);let b=d.get(h.timestamp);if(b===void 0)continue;y.data[b]={timestamp:h.timestamp,avgTtftSeconds:h.avgTtft!==null?h.avgTtft/1000:null,avgTokensPerSecond:h.avgTokensPerSecond,requests:h.requests}}return p}function JA(a,o){let s=a.totalNegation+a.totalRepetition+a.totalBlame,r=new Map;for(let u of o){let d=`${u.model}::${u.provider}`,p=r.get(d),h=u.yelling+u.profanity+u.anguish+u.negation+u.repetition+u.blame;if(p)p.score+=h;else r.set(d,{model:u.model,provider:u.provider,score:h})}let l=null;for(let u of r.values())if(!l||u.score>l.score)l=u;return{totalMessages:a.totalMessages,totalYelling:a.totalYelling,totalProfanity:a.totalProfanity,totalAnguish:a.totalAnguish,totalFrustration:s,highestFrictionModel:l}}function eR(a){let o=[...a].sort((l,u)=>{if(u.totalCost!==l.totalCost)return u.totalCost-l.totalCost;return u.totalRequests-l.totalRequests}),s=o.reduce((l,u)=>Math.max(l,u.totalCost),0),r=o.reduce((l,u)=>Math.max(l,u.totalRequests),0);return o.map((l)=>({...l,costPercentage:s>0?l.totalCost/s*100:0,requestsPercentage:r>0?l.totalRequests/r*100:0}))}function tR(a){let o=a.reduce((s,r)=>Math.max(s,r.calls),0);return a.map((s)=>({...s,errorRate:s.calls>0?s.errors/s.calls:0,callsPercentage:o>0?s.calls/o*100:0}))}var Gm=Q(de(),1);function Gu({message:a="No data available",icon:o=uf,className:s=""}){return Gm.jsxDEV("div",{className:`stats-empty-state ${s}`,children:[Gm.jsxDEV(o,{size:24,className:"stats-empty-state-icon","aria-hidden":"true"},void 0,!1,void 0,this),Gm.jsxDEV("p",{className:"stats-empty-state-message",children:a},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Xu=Q(de(),1);function aR({error:a,onRetry:o,className:s=""}){return Xu.jsxDEV("div",{className:`stats-error-state ${s}`,children:Xu.jsxDEV("div",{className:"stats-error-state-content",children:[Xu.jsxDEV("h4",{className:"stats-error-state-title",children:"Failed to load data"},void 0,!1,void 0,this),a&&Xu.jsxDEV("p",{className:"stats-error-state-message",children:a.message},void 0,!1,void 0,this),o&&Xu.jsxDEV("button",{type:"button",onClick:o,className:"stats-button stats-button-secondary stats-error-state-btn",children:"Retry"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var oR=Q(de(),1);function Ua({variant:a="text",width:o,height:s,className:r=""}){let l={width:o!==void 0?typeof o==="number"?`${o}px`:o:void 0,height:s!==void 0?typeof s==="number"?`${s}px`:s:void 0};return oR.jsxDEV("div",{className:`stats-skeleton ${r}`,"data-variant":a,style:l},void 0,!1,void 0,this)}var Uo=Q(de(),1);function Rt({loading:a,error:o,data:s,empty:r=!1,emptyText:l="No data available",fallback:u,onRetry:d,children:p}){if(o&&s===null)return Uo.jsxDEV(aR,{error:o,onRetry:d},void 0,!1,void 0,this);if(a&&s===null){if(u)return Uo.jsxDEV(Uo.Fragment,{children:u},void 0,!1,void 0,this);return Uo.jsxDEV("div",{className:"stats-boundary-skeleton",children:[Uo.jsxDEV(Ua,{variant:"text",width:"60%",height:24,className:"mb-4"},void 0,!1,void 0,this),Uo.jsxDEV(Ua,{variant:"rect",width:"100%",height:160,className:"mb-4"},void 0,!1,void 0,this),Uo.jsxDEV(Ua,{variant:"text",width:"80%",height:20,className:"mb-2"},void 0,!1,void 0,this),Uo.jsxDEV(Ua,{variant:"text",width:"40%",height:20},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(!a&&(r||s===null))return Uo.jsxDEV(Gu,{message:l},void 0,!1,void 0,this);return Uo.jsxDEV(Uo.Fragment,{children:p},void 0,!1,void 0,this)}var xo=Q(de(),1);function Ma({columns:a,data:o,keyExtractor:s,onRowClick:r,renderMobileCard:l,emptyText:u="No data available"}){let d=(p,h)=>{if(r&&(p.key==="Enter"||p.key===" "))p.preventDefault(),r(h)};if(o.length===0)return xo.jsxDEV("div",{className:"stats-table-empty",children:u},void 0,!1,void 0,this);return xo.jsxDEV("div",{className:"stats-table-wrapper",children:[l&&xo.jsxDEV("div",{className:"stats-table-mobile-only",children:xo.jsxDEV("div",{className:"stats-table-mobile-list",children:o.map((p)=>{let h=String(s(p));return xo.jsxDEV("div",{className:"stats-table-mobile-card-wrapper",children:l(p,r?()=>r(p):void 0)},h,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),xo.jsxDEV("div",{className:l?"stats-table-desktop-only":"stats-table-container",children:xo.jsxDEV("table",{className:"stats-table",children:[xo.jsxDEV("thead",{children:xo.jsxDEV("tr",{children:a.map((p)=>{let h=["stats-table-th",p.numeric?"stats-text-right":"stats-text-left",p.className||""].filter(Boolean).join(" ");return xo.jsxDEV("th",{className:h,children:p.header},p.key,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),xo.jsxDEV("tbody",{children:o.map((p)=>{let h=String(s(p)),g=typeof r==="function",y=["stats-table-tr",g?"stats-table-tr-clickable":""].filter(Boolean).join(" ");return xo.jsxDEV("tr",{className:y,onClick:g?()=>r(p):void 0,onKeyDown:g?(b)=>d(b,p):void 0,tabIndex:g?0:void 0,role:g?"button":void 0,children:a.map((b)=>{let v=["stats-table-td",b.numeric?"stats-text-right":"stats-text-left",b.className||""].filter(Boolean).join(" ");return xo.jsxDEV("td",{className:v,children:b.render?b.render(p):p[b.key]},b.key,!1,void 0,this)})},h,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Cl=Q(dt(),1),un=Q(de(),1);function wf({data:a,title:o,initialCollapsed:s=!1}){let[r,l]=Cl.useState(s),[u,d]=Cl.useState(!1),p=Cl.useRef(0),h=JSON.stringify(a,null,2);return Cl.useEffect(()=>()=>window.clearTimeout(p.current),[]),un.jsxDEV("div",{className:"stats-json-block",children:[un.jsxDEV("div",{className:"stats-json-block-header",onClick:()=>l(!r),onKeyDown:(b)=>{if(b.key==="Enter"||b.key===" ")b.preventDefault(),l(!r)},tabIndex:0,role:"button","aria-expanded":!r,children:[un.jsxDEV("span",{className:"stats-json-block-title",children:o||"JSON"},void 0,!1,void 0,this),un.jsxDEV("div",{className:"stats-json-actions",children:[un.jsxDEV("button",{type:"button",className:"stats-json-copy-btn",onClick:async(b)=>{b.stopPropagation();try{await navigator.clipboard.writeText(h),d(!0),window.clearTimeout(p.current),p.current=window.setTimeout(()=>d(!1),1500)}catch{}},"aria-label":u?"Copied to clipboard":"Copy JSON to clipboard",children:[u?un.jsxDEV(pl,{size:13},void 0,!1,void 0,this):un.jsxDEV(gl,{size:13},void 0,!1,void 0,this),u?"Copied":"Copy"]},void 0,!0,void 0,this),un.jsxDEV("span",{className:"stats-json-block-toggle-indicator","data-collapsed":r,children:r?"▶ Show":"▼ Hide"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!r&&un.jsxDEV("div",{className:"stats-json-block-content-wrapper",children:un.jsxDEV("pre",{className:"stats-json-block-content",children:un.jsxDEV("code",{children:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var qe=Q(de(),1);function nR({stats:a}){let o=jm(a);return qe.jsxDEV("div",{className:"stats-metric-cluster",children:[qe.jsxDEV("div",{className:"stats-metric-primary-grid",children:[qe.jsxDEV("div",{className:"stats-metric-card primary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:ea(a.totalCost,a.unpricedRequests,a.totalCost>0&&a.totalCost<0.01?4:2)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Requests"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ce(a.totalRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",title:"Prompt-input cost saved versus billing the same tokens uncached; cache writes can make this negative",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Cache Savings"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ht(a.cacheSavings)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",title:"Prompt input served from cache: cache reads / (uncached input + cache reads)",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Cache Rate"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ht(a.cacheRate)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Error Rate"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ht(a.errorRate)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-secondary-grid",children:[qe.jsxDEV("div",{className:"stats-metric-card secondary",title:"Conversation input not served from cache",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Uncached Input"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(a.totalInputTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",title:"Conversation input read from the prompt cache",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Cache Read"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(a.totalCacheReadTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Output Tokens"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(a.totalOutputTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",title:"Uncached input + cache reads + cache writes + output",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Conversation Total"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(o)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Premium Requests"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ce(a.totalPremiumRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Tokens/s"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:qm(a.avgTokensPerSecond)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Avg Latency"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:rt(a.avgDuration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Avg TTFT"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:rt(a.avgTtft)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var di=Q(de(),1);function ut({title:a,subtitle:o,actions:s,children:r,className:l="",...u}){return di.jsxDEV("div",{className:`stats-panel ${l}`,...u,children:[(a||o||s)&&di.jsxDEV("div",{className:"stats-panel-header",children:[di.jsxDEV("div",{className:"stats-panel-header-titles",children:[a&&di.jsxDEV("h3",{className:"stats-panel-title",children:a},void 0,!1,void 0,this),o&&di.jsxDEV("p",{className:"stats-panel-subtitle",children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&di.jsxDEV("div",{className:"stats-panel-actions",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),di.jsxDEV("div",{className:"stats-panel-body",children:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var us=Q(dt(),1);var sR=Q(de(),1);function ya({variant:a,children:o,className:s=""}){return sR.jsxDEV("span",{className:`stats-status-pill ${s}`,"data-variant":a,children:o},void 0,!1,void 0,this)}var ke=Q(de(),1);function rR({id:a,onClose:o}){let[s,r]=us.useState(null),[l,u]=us.useState(!1),[d,p]=us.useState(null),h=us.useRef(null),g=us.useRef(null);if(us.useEffect(()=>{if(a===null){r(null);return}h.current=document.activeElement,u(!0),p(null),r(null);let b=new AbortController;return dA(a,b.signal).then((v)=>{if(b.signal.aborted)return;r(v),setTimeout(()=>g.current?.focus(),50)}).catch((v)=>{if(b.signal.aborted)return;p(v instanceof Error?v:Error(String(v)))}).finally(()=>{if(!b.signal.aborted)u(!1)}),()=>b.abort()},[a]),us.useEffect(()=>{if(a===null)return;let b=(v)=>{if(v.key==="Escape")o()};return window.addEventListener("keydown",b),()=>{if(window.removeEventListener("keydown",b),h.current)h.current.focus()}},[a,o]),a===null)return null;return ke.jsxDEV("div",{className:"stats-drawer-overlay",onClick:(b)=>{if(b.target===b.currentTarget)o()},role:"presentation",children:ke.jsxDEV("div",{className:"stats-drawer",role:"dialog","aria-modal":"true","aria-label":"Request details",children:[ke.jsxDEV("div",{className:"stats-drawer-header",children:[ke.jsxDEV("div",{className:"stats-drawer-header-left",children:[ke.jsxDEV("h2",{className:"stats-drawer-title",children:"Request Details"},void 0,!1,void 0,this),s&&ke.jsxDEV("span",{className:"stats-drawer-id",children:["ID: ",a]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("button",{ref:g,type:"button",onClick:o,className:"stats-drawer-close-btn","aria-label":"Close request details",children:ke.jsxDEV(Ys,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-body",children:[l&&ke.jsxDEV("div",{className:"stats-drawer-loading",children:[ke.jsxDEV(Ua,{variant:"text",width:"60%",height:24,className:"mb-4"},void 0,!1,void 0,this),ke.jsxDEV(Ua,{variant:"rect",width:"100%",height:80,className:"mb-4"},void 0,!1,void 0,this),ke.jsxDEV(Ua,{variant:"rect",width:"100%",height:120,className:"mb-4"},void 0,!1,void 0,this),ke.jsxDEV(Ua,{variant:"rect",width:"100%",height:200},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d&&ke.jsxDEV("div",{className:"stats-drawer-error",children:[ke.jsxDEV("p",{className:"stats-drawer-error-title",children:"Failed to load request details"},void 0,!1,void 0,this),ke.jsxDEV("p",{className:"stats-drawer-error-message",children:d.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&ke.jsxDEV("div",{className:"stats-drawer-content",children:[ke.jsxDEV("div",{className:"stats-drawer-status-card",children:[ke.jsxDEV("div",{className:"stats-drawer-status-row",children:[ke.jsxDEV("div",{children:[ke.jsxDEV("div",{className:"stats-drawer-model",children:s.model},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-provider",children:s.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV(ya,{variant:s.errorMessage?"danger":"success",children:s.errorMessage?"Error":"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.errorMessage&&ke.jsxDEV("div",{className:"stats-drawer-error-block",children:[ke.jsxDEV("div",{className:"stats-drawer-error-label",children:"Error Message"},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-error-text",children:s.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metrics-grid",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(ml,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"API-equivalent estimate"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:ln(s,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(gf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Premium"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:Ce(s.usage.premiumRequests??0)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(lf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Total Tokens"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:Ce(s.usage.totalTokens)},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-sub",children:[Ce(s.usage.input)," in · ",Ce(s.usage.output)," out"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(of,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Duration"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(s.duration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(vf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"TTFT"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(s.ttft)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.duration&&s.usage.output>0&&ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(rf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Throughput"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:(s.usage.output*1000/s.duration).toFixed(1)},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-sub",children:"tokens/second"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-json-blocks",children:[ke.jsxDEV(wf,{data:s.output,title:"Output Payload",initialCollapsed:!1},void 0,!1,void 0,this),ke.jsxDEV(wf,{data:s,title:"Raw Request Metadata",initialCollapsed:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var e0=Q(de(),1);function Ws({options:a,value:o,onChange:s,className:r=""}){return e0.jsxDEV("div",{className:`stats-segmented-control ${r}`,role:"radiogroup",children:a.map((l)=>{let u=l.value===o;return e0.jsxDEV("button",{type:"button",role:"radio","aria-checked":u,"data-active":u?"true":"false",className:"stats-segmented-control-btn",title:l.title,onClick:()=>s(l.value),children:l.label},String(l.value),!1,void 0,this)})},void 0,!1,void 0,this)}var Me=Q(de(),1);function fR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["behavior",o,s],(d)=>pA(o,d),{pollMs:30000,enabled:a});return Me.jsxDEV("div",{className:"stats-route-container space-y-6",children:Me.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&Me.jsxDEV(Me.Fragment,{children:[Me.jsxDEV(dz,{overall:r.overall,behaviorSeries:r.behaviorSeries},void 0,!1,void 0,this),Me.jsxDEV(fz,{behaviorSeries:r.behaviorSeries},void 0,!1,void 0,this),Me.jsxDEV(pz,{models:r.byModel,behaviorSeries:r.behaviorSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Xm(a,o){if(o<=0)return;return`${(a/o).toFixed(2)} / msg`}function dz({overall:a,behaviorSeries:o}){let s=xa.useMemo(()=>JA(a,o),[a,o]),r=a.totalMessages,l=[{label:"User Messages",value:Ce(a.totalMessages),sub:r>0?"in range":void 0},{label:"Yelling (CAPS)",value:Ce(a.totalYelling),sub:Xm(a.totalYelling,r)},{label:"Profanity Hits",value:Ce(a.totalProfanity),sub:Xm(a.totalProfanity,r)},{label:"Anguish Signals",value:Ce(a.totalAnguish),sub:Xm(a.totalAnguish,r)},{label:"Friction Signals",value:Ce(s.totalFrustration),sub:Xm(s.totalFrustration,r)},{label:"Highest Friction Model",value:s.highestFrictionModel?.model??"—",sub:s.highestFrictionModel?`${Ce(s.highestFrictionModel.score)} hits`:void 0}];return Me.jsxDEV("div",{className:"grid grid-cols-2 md:grid-cols-6 gap-4",children:l.map((u)=>Me.jsxDEV(ut,{className:"stats-behavior-summary-card py-3 px-4",children:[Me.jsxDEV("p",{className:"text-xs stats-text-muted mb-1 font-medium truncate",children:u.label},void 0,!1,void 0,this),Me.jsxDEV("p",{className:"text-lg font-bold stats-text-primary truncate",title:u.value,children:u.value},void 0,!1,void 0,this),u.sub&&Me.jsxDEV("p",{className:"text-xs stats-text-muted mt-0.5",children:u.sub},void 0,!1,void 0,this)]},u.label,!0,void 0,this))},void 0,!1,void 0,this)}var t0=[{value:"yelling",label:"CAPS",title:"Yelling (CAPS)"},{value:"profanity",label:"Profanity",title:"Profanity"},{value:"anguish",label:"Anguish",title:"Anguish (!!!, nooo, ugh, dude, ':(')"},{value:"negation",label:"Negation",title:"Negation (no/nope/wrong, makes no sense)"},{value:"repetition",label:"Repetition",title:"Repetition (i meant, still doesnt)"},{value:"blame",label:"Blame",title:"Blame (you didnt, why did you, stop X-ing)"},{value:"frustration",label:"Frustration",title:"Frustration (neg + rep + blame)"},{value:"total",label:"All",title:"All signals combined"}];function iR(a){if(!Number.isFinite(a))return"-";if(a===0)return"0%";if(Math.abs(a)<1)return`${a.toFixed(1)}%`;return`${a.toFixed(0)}%`}function lR(a,o){if(o==="frustration")return a.negation+a.repetition+a.blame;if(o==="total")return a.yelling+a.profanity+a.anguish+a.negation+a.repetition+a.blame;return a[o]}function uR(a,o){if(o<=0)return 0;return a/o*100}function fz({behaviorSeries:a}){let[o,s]=xa.useState(!1),[r,l]=xa.useState("total"),u=$t(),d=ra[u],p=xa.useMemo(()=>{if(o)return ju(a,{rankWeight:(B)=>B.messages,initBucket:()=>({hits:0,messages:0}),accumulate:(B,z)=>{B.hits+=lR(z,r),B.messages+=z.messages},bucketToValue:(B)=>uR(B.hits,B.messages)});let A=t0.find((B)=>B.value===r)?.title??"Hits";return _m(a,A,{initBucket:()=>({hits:0,messages:0}),accumulate:(B,z)=>{B.hits+=lR(z,r),B.messages+=z.messages},bucketToValue:(B)=>uR(B.hits,B.messages)})},[a,o,r]),h=xa.useMemo(()=>is({chartTheme:d,showLegend:o,defaultLabel:"Hits",formatValue:iR}),[d,o]),{sharedScaleBase:g,yScale:y}=xa.useMemo(()=>ls({chartTheme:d,formatY:iR}),[d]),b=xa.useMemo(()=>t0.find((A)=>A.value===r)?.title??"",[r]),v=xa.useMemo(()=>{if(!o)return null;return{labels:p.labels,datasets:ui(p,(A)=>Vu(yt[A%yt.length]))}},[p,o]),T=xa.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:h,scales:{x:g,y}}),[h,g,y]),M=xa.useMemo(()=>{if(o)return null;return{labels:p.labels,datasets:ui(p,(A)=>Sl(yt[A%yt.length]))}},[p,o]),I=xa.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:h,scales:{x:{...g,stacked:!0},y:{...y,stacked:!0}},layout:{padding:{top:8}}}),[h,g,y]),w=[{value:!1,label:"All Models"},{value:!0,label:"By Model"}];return Me.jsxDEV(ut,{title:"User Friction Signals",subtitle:`${b} as % of user messages per day`,actions:Me.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[Me.jsxDEV(Ws,{options:t0.map((A)=>({value:A.value,label:A.label,title:A.title})),value:r,onChange:l},void 0,!1,void 0,this),Me.jsxDEV(Ws,{options:w,value:o,onChange:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:Me.jsxDEV("div",{className:"h-[300px]",children:p.labels.length===0?Me.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No friction signal data available"},void 0,!1,void 0,this):o&&v?Me.jsxDEV(Xa,{data:v,options:T},void 0,!1,void 0,this):M?Me.jsxDEV(li,{data:M,options:I},void 0,!1,void 0,this):null},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var cR="2fr 0.9fr 0.8fr 0.8fr 0.8fr 0.9fr 0.8fr 140px 40px";function dR(a){if(a.totalMessages===0)return 0;return(a.totalYelling+a.totalProfanity+a.totalAnguish+a.totalNegation+a.totalRepetition+a.totalBlame)/a.totalMessages}function Yu(a,o){if(o===0)return"-";let s=a/o*100;if(s===0)return"0%";if(s<1)return`${s.toFixed(1)}%`;return`${s.toFixed(0)}%`}function pz({models:a,behaviorSeries:o}){let[s,r]=xa.useState(null),l=$t(),u=ra[l],d=xa.useMemo(()=>mz(o),[o]),p=xa.useMemo(()=>[...a].sort((h,g)=>{if(g.totalMessages!==h.totalMessages)return g.totalMessages-h.totalMessages;return dR(g)-dR(h)}),[a]);return Me.jsxDEV(Pm,{title:"Behavior Signals by Model",subtitle:"Rates are per user message",children:[Me.jsxDEV(Bm,{gridTemplate:cR,columns:[{label:"Model"},{label:"Messages",align:"right"},{label:"CAPS %",align:"right"},{label:"Profanity %",align:"right"},{label:"Anguish %",align:"right"},{label:"Frustration %",align:"right"},{label:"Hits %",align:"right"},{label:"Trend",align:"center"}]},void 0,!1,void 0,this),Me.jsxDEV(Nm,{children:[p.map((h,g)=>{let y=`${h.model}::${h.provider}`,b=d.get(y)?.data??[],v=yt[g%yt.length],T=s===y,M=h.totalNegation+h.totalRepetition+h.totalBlame,I=h.totalYelling+h.totalProfanity+h.totalAnguish+M;return Me.jsxDEV(Hm,{gridTemplate:cR,isExpanded:T,onToggle:()=>r(T?null:y),cells:[Me.jsxDEV(zm,{model:h.model,provider:h.provider},"name",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Ce(h.totalMessages)},"messages",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(h.totalYelling,h.totalMessages)},"caps",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(h.totalProfanity,h.totalMessages)},"profanity",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(h.totalAnguish,h.totalMessages)},"anguish",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(M,h.totalMessages)},"frustration",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(I,h.totalMessages)},"hits",!1,void 0,this)],trendCell:b.length===0?Me.jsxDEV(Um,{},void 0,!1,void 0,this):Me.jsxDEV(Em,{timestamps:b.map((w)=>w.timestamp),values:b.map((w)=>w.total),color:v},void 0,!1,void 0,this),expandedContent:Me.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"220px 1fr"},children:[Me.jsxDEV("div",{className:"space-y-4 text-sm",children:[Me.jsxDEV(Tl,{label:"Yelling (CAPS)",total:h.totalYelling,messages:h.totalMessages,valueClass:"text-[#ed4abf]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Profanity",total:h.totalProfanity,messages:h.totalMessages,valueClass:"text-[#ff6b7d]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Anguish (!!!, nooo, dude, ..)",total:h.totalAnguish,messages:h.totalMessages,valueClass:"text-[#9b4dff]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Negation (no/nope/wrong)",total:h.totalNegation,messages:h.totalMessages,valueClass:"text-[#5ad8e6]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Repetition (i meant, still doesnt)",total:h.totalRepetition,messages:h.totalMessages,valueClass:"text-[#5ad8e6]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Blame (you didnt, stop X-ing)",total:h.totalBlame,messages:h.totalMessages,valueClass:"text-[#5ad8e6]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Avg chars / msg",total:h.totalChars,messages:h.totalMessages,valueClass:"stats-text-secondary",mode:"average"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Me.jsxDEV("div",{className:"h-[200px]",children:b.length===0?Me.jsxDEV(Fm,{},void 0,!1,void 0,this):Me.jsxDEV(hz,{data:b,chartTheme:u},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},y,!1,void 0,this)}),p.length===0?Me.jsxDEV("div",{className:"border-t border-[var(--border-subtle)] px-5 py-8 text-center text-[var(--text-muted)] text-sm",children:"No user behavior recorded for this range yet."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Tl({label:a,total:o,messages:s,valueClass:r,mode:l="rate"}){let u=l==="rate"?"% of msgs":"Per msg",d=xa.useMemo(()=>{if(s===0)return"-";return l==="rate"?Yu(o,s):(o/s).toFixed(0)},[o,s,l]);return Me.jsxDEV("div",{children:[Me.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-1",children:a},void 0,!1,void 0,this),Me.jsxDEV("div",{className:"space-y-0.5 text-[var(--text-secondary)]",children:[Me.jsxDEV("div",{className:"flex items-center justify-between",children:[Me.jsxDEV("span",{className:"stats-text-muted text-xs",children:"Total"},void 0,!1,void 0,this),Me.jsxDEV("span",{className:`font-mono text-xs ${r}`,children:Ce(o)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Me.jsxDEV("div",{className:"flex items-center justify-between",children:[Me.jsxDEV("span",{className:"stats-text-muted text-xs",children:u},void 0,!1,void 0,this),Me.jsxDEV("span",{className:"font-mono text-xs stats-text-primary",children:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Ym={yelling:"#ed4abf",profanity:"#ff6b7d",anguish:"#9b4dff",frustration:"#5ad8e6"};function hz({data:a,chartTheme:o}){let s=xa.useMemo(()=>({labels:a.map((l)=>Cn(new Date(l.timestamp),"MMM d")),datasets:[{label:"CAPS",data:a.map((l)=>l.yelling),...$s(Ym.yelling)},{label:"Profanity",data:a.map((l)=>l.profanity),...$s(Ym.profanity)},{label:"Anguish",data:a.map((l)=>l.anguish),...$s(Ym.anguish)},{label:"Frustration",data:a.map((l)=>l.frustration),...$s(Ym.frustration)}]}),[a]),r=xa.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,plugins:Om(o),scales:XA(o)}),[o]);return Me.jsxDEV(Xa,{data:s,options:r},void 0,!1,void 0,this)}function mz(a){if(a.length===0)return new Map;let o=[...new Set(a.map((l)=>l.timestamp))].sort((l,u)=>l-u),s=new Map;for(let l of a){let u=`${l.model}::${l.provider}`,d=s.get(u);if(!d)d=new Map,s.set(u,d);let p=d.get(l.timestamp)??{timestamp:l.timestamp,yelling:0,profanity:0,anguish:0,frustration:0,total:0};p.yelling+=l.yelling,p.profanity+=l.profanity,p.anguish+=l.anguish,p.frustration+=l.negation+l.repetition+l.blame,p.total=p.yelling+p.profanity+p.anguish+p.frustration,d.set(l.timestamp,p)}let r=new Map;for(let[l,u]of s){let d=o.map((p)=>u.get(p)??{timestamp:p,yelling:0,profanity:0,anguish:0,frustration:0,total:0});r.set(l,{data:d})}return r}var Fo=Q(dt(),1);var va=Q(de(),1);function pR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["costs",o,s],(d)=>uA(o,d),{pollMs:30000,enabled:a});return va.jsxDEV("div",{className:"stats-route-container space-y-6",children:va.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&va.jsxDEV(va.Fragment,{children:[va.jsxDEV(gz,{costSeries:r.costSeries},void 0,!1,void 0,this),va.jsxDEV(xz,{costSeries:r.costSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function gz({costSeries:a}){let o=Fo.useMemo(()=>QA(a),[a]),s=[{label:"API-equivalent estimate",value:ea(o.totalCost,o.unpricedRequests),sub:o.unpricedRequests>0?`Excludes ${o.unpricedRequests.toLocaleString()} unpriced subscription request${o.unpricedRequests===1?"":"s"}`:void 0},{label:"Average estimate / Day",value:ea(o.avgDailyCost,o.unpricedRequests)},{label:"Top Model",value:o.topModelName||"—",sub:o.topModelName?`API-equivalent estimate: ${Cf(o.topModelCost)}`:void 0}];return va.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:s.map((r)=>va.jsxDEV(ut,{className:"stats-cost-overview-card py-4 px-5",children:[va.jsxDEV("p",{className:"text-xs stats-text-muted mb-1 font-medium uppercase tracking-wider",children:r.label},void 0,!1,void 0,this),va.jsxDEV("p",{className:"text-2xl font-bold stats-text-primary truncate",title:r.value,children:r.value},void 0,!1,void 0,this),r.sub&&va.jsxDEV("p",{className:"text-xs stats-text-muted mt-1 font-medium",children:r.sub},void 0,!1,void 0,this)]},r.label,!0,void 0,this))},void 0,!1,void 0,this)}var bz={dark:"rgba(248, 250, 252, 0.7)",light:"rgba(15, 23, 42, 0.6)"};function yz(a){return{id:"costBarLabels",afterDatasetsDraw(o){let{ctx:s}=o;if(!o.data.datasets[0])return;let l=o.getDatasetMeta(0);s.save(),s.font="11px system-ui, sans-serif",s.fillStyle=a,s.textAlign="center",s.textBaseline="bottom";for(let u of l.data){let d=u.$context.parsed.y;if(!d)continue;let p=`$${Math.round(d)}`,{x:h,y:g}=u.getProps(["x","y"],!0);s.fillText(p,h,g-3)}s.restore()}}}function xz({costSeries:a}){let[o,s]=Fo.useState(!1),r=$t(),l=ra[r],u=Fo.useMemo(()=>a.reduce((w,A)=>w+A.unpricedRequests,0),[a]),d=Fo.useMemo(()=>{if(o)return ju(a,{rankWeight:(w)=>w.cost,initBucket:()=>({total:0}),accumulate:(w,A)=>{w.total+=A.cost},bucketToValue:(w)=>w.total});return _m(a,"API-equivalent estimate",{initBucket:()=>({total:0}),accumulate:(w,A)=>{w.total+=A.cost},bucketToValue:(w)=>w.total})},[a,o]),p=Fo.useMemo(()=>is({chartTheme:l,showLegend:o,defaultLabel:"API-equivalent estimate",formatValue:(w)=>`$${w.toFixed(2)}`,footer:(w)=>{if(!o||w.length<2)return;return`Total: $${w.reduce((B,z)=>B+(z.parsed.y??0),0).toFixed(2)}`}}),[l,o]),{sharedScaleBase:h,yScale:g}=Fo.useMemo(()=>ls({chartTheme:l,formatY:(w)=>`$${Math.round(w)}`}),[l]),y=Fo.useMemo(()=>yz(bz[r]),[r]),b=Fo.useMemo(()=>{if(!o)return null;return{labels:d.labels,datasets:ui(d,(w)=>Vu(yt[w%yt.length]))}},[d,o]),v=Fo.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:p,scales:{x:h,y:g}}),[p,h,g]),T=Fo.useMemo(()=>{if(o)return null;return{labels:d.labels,datasets:ui(d,(w)=>Sl(yt[w%yt.length]))}},[d,o]),M=Fo.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{...p,costBarLabels:{}},scales:{x:{...h,stacked:!0},y:{...g,stacked:!0}},layout:{padding:{top:24}}}),[p,h,g]),I=[{value:!1,label:"All Models"},{value:!0,label:"By Model"}];return va.jsxDEV(ut,{title:"Daily API-equivalent estimate",subtitle:u>0?`Public API rate-card value over time; excludes ${u.toLocaleString()} unpriced subscription request${u===1?"":"s"}`:"Public API rate-card value over time",actions:va.jsxDEV(Ws,{options:I,value:o,onChange:s},void 0,!1,void 0,this),children:va.jsxDEV("div",{className:"h-[300px]",children:d.labels.length===0?va.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No API-equivalent estimate data available"},void 0,!1,void 0,this):o&&b?va.jsxDEV(Xa,{data:b,options:v},void 0,!1,void 0,this):T?va.jsxDEV(li,{data:T,options:M,plugins:[y]},void 0,!1,void 0,this):null},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var hR=Q(dt(),1);var Ut=Q(de(),1);function mR({active:a,range:o,refreshTrigger:s,onRequestClick:r}){let{data:l,error:u,loading:d}=Vt(["recent-errors-dense",o,s],(g)=>cA(o,50,g),{pollMs:30000,enabled:a}),p=hR.useMemo(()=>[{key:"model",header:"Model",render:(g)=>Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:g.model},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:g.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"timestamp",header:"Time",render:(g)=>za(g.timestamp)},{key:"errorMessage",header:"Error Message",render:(g)=>Ut.jsxDEV("div",{className:"stats-text-xs stats-text-danger stats-truncate stats-max-w-md stats-font-mono",title:g.errorMessage||"",children:g.errorMessage||"Unknown error"},void 0,!1,void 0,this)},{key:"tokens",header:"Tokens",numeric:!0,render:(g)=>Ce(g.usage.totalTokens)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(g)=>ln(g,4)}],[]);return Ut.jsxDEV("div",{className:"stats-route-container",children:Ut.jsxDEV(ut,{title:"Recent Errors",subtitle:"Up to 50 most recent failed requests in the stats database",children:Ut.jsxDEV(Rt,{loading:d,error:u,data:l,emptyText:"No recent failures in the local stats database",children:Ut.jsxDEV(Ma,{columns:p,data:l||[],keyExtractor:(g)=>g.id||`${g.sessionFile}-${g.entryId}`,onRowClick:(g)=>g.id&&r(g.id),renderMobileCard:(g,y)=>Ut.jsxDEV("div",{className:"stats-mobile-card stats-border-danger",onClick:y,children:[Ut.jsxDEV("div",{className:"stats-mobile-card-header",children:[Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:g.model},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:g.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV(ya,{variant:"danger",children:"Failed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-grid",children:[Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-mobile-card-label",children:"Time"},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-value",children:za(g.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-value",children:ln(g,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-mobile-card-label",children:"Tokens"},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-value",children:Ce(g.usage.totalTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),g.errorMessage&&Ut.jsxDEV("div",{className:"stats-mobile-card-error mt-2 stats-font-mono",children:g.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),emptyText:"No recent failures in the local stats database"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var $m=Q(dt(),1);var _e=Q(de(),1);function gR({active:a,range:o,refreshTrigger:s}){let[r,l]=$m.useState(null),{data:u,error:d,loading:p}=Vt(["gain",o,s,r],(h)=>mA(o,r,h),{pollMs:30000,enabled:a});return _e.jsxDEV("div",{className:"stats-route-container space-y-6",children:_e.jsxDEV(Rt,{loading:p,error:d,data:u,children:u&&_e.jsxDEV(_e.Fragment,{children:[_e.jsxDEV(vz,{projects:u.projects,selected:r,onChange:l},void 0,!1,void 0,this),_e.jsxDEV(Sz,{overall:u.overall},void 0,!1,void 0,this),_e.jsxDEV(Cz,{bySource:u.bySource},void 0,!1,void 0,this),_e.jsxDEV(wz,{timeSeries:u.timeSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function vz({projects:a,selected:o,onChange:s}){if(a.length===0)return null;return _e.jsxDEV("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[_e.jsxDEV("span",{className:"stats-text-secondary",style:{fontSize:"0.875rem",whiteSpace:"nowrap"},children:"Project"},void 0,!1,void 0,this),_e.jsxDEV("select",{className:"stats-select",value:o??"",onChange:(r)=>s(r.target.value||null),style:{maxWidth:"480px",flex:1},children:[_e.jsxDEV("option",{value:"",children:"All projects"},void 0,!1,void 0,this),a.map((r)=>_e.jsxDEV("option",{value:r,children:r},r,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Sz({overall:a}){return _e.jsxDEV(ut,{title:"Overall Gain",subtitle:"Aggregate snapcompact savings",children:_e.jsxDEV("div",{className:"stats-metric-primary-grid",children:[_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Tokens"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:lt(a.savedTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Bytes"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:Jv(a.savedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Reduction"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:a.reductionPercent!==null?Ht(a.reductionPercent):"—"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Total Hits"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:Ce(a.hits)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Lz({title:a,totals:o}){return _e.jsxDEV("div",{className:"stats-metric-card secondary",style:{flex:1},children:[_e.jsxDEV("div",{className:"stats-metric-label",style:{fontWeight:600,marginBottom:8},children:a},void 0,!1,void 0,this),_e.jsxDEV("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Tokens"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:lt(o.savedTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Bytes"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:Jv(o.savedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Hits"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:Ce(o.hits)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Reduction"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:o.reductionPercent!==null?Ht(o.reductionPercent):"—"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Cz({bySource:a}){return _e.jsxDEV(ut,{title:"By Source",subtitle:"Savings breakdown per subsystem",children:_e.jsxDEV("div",{style:{display:"flex",gap:16,flexWrap:"wrap"},children:_e.jsxDEV(Lz,{title:"Snapcompact",totals:a.snapcompact},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Tz={snapcompact:"rgb(34, 197, 94)"};function wz({timeSeries:a}){let o=$t(),s=ra[o],{data:r,options:l}=$m.useMemo(()=>{let u=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",timeZone:"UTC"}),p={labels:a.map((b)=>u.format(new Date(`${b.date}T00:00:00.000Z`))),datasets:[{label:"Snapcompact",data:a.map((b)=>b.snapcompact),...Vu(Tz.snapcompact)}]},{sharedScaleBase:h,yScale:g}=ls({chartTheme:s,formatY:(b)=>lt(b)}),y={responsive:!0,maintainAspectRatio:!1,plugins:is({chartTheme:s,showLegend:!0,defaultLabel:"Tokens Saved",formatValue:lt}),scales:{x:{...h,stacked:!0},y:{...g,stacked:!0}}};return{data:p,options:y}},[a,s]);return _e.jsxDEV(ut,{title:"Savings Over Time",subtitle:"Daily token savings",children:_e.jsxDEV("div",{style:{height:240},children:a.length===0?_e.jsxDEV("div",{className:"stats-table-empty",children:"No time series data yet"},void 0,!1,void 0,this):_e.jsxDEV(Xa,{data:r,options:l},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Tn=Q(dt(),1);var Ee=Q(de(),1);function yR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["models",o,s],(p)=>lA(o,p),{pollMs:30000,enabled:a}),d=Tn.useMemo(()=>GA(r?.byModel??[]),[r?.byModel]);return Ee.jsxDEV("div",{className:"stats-route-container space-y-6",children:Ee.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&Ee.jsxDEV(Ee.Fragment,{children:[Ee.jsxDEV(kz,{modelSeries:r.modelSeries,timeRange:o,colorLookup:d},void 0,!1,void 0,this),Ee.jsxDEV(Iz,{models:r.byModel,performanceSeries:r.modelPerformanceSeries,timeRange:o,colorLookup:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function kz({modelSeries:a,timeRange:o,colorLookup:s}){let r=$t(),l=ra[r],u=Ll(o),d=Tn.useMemo(()=>Mz(a),[a]),p=Tn.useMemo(()=>({labels:d.data.map((g)=>Tf(g.timestamp,o)),datasets:d.series.map((g,y)=>{let b=yt[y%yt.length],v=g.key?s.get(g.key)??b:b,T=g.key??g.label;return{label:g.label,data:d.data.map((M)=>M[T]??0),borderColor:v,backgroundColor:`${v}20`,fill:!0,tension:0.4,pointRadius:0,pointHoverRadius:4,borderWidth:2}})}),[d,s,o]),h=Tn.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",align:"start",labels:{color:l.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:l.tooltipBackground,titleColor:l.tooltipTitle,bodyColor:l.tooltipBody,borderColor:l.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(g)=>{let y=g.dataset.label??"",b=g.parsed.y;return`${y}: ${(b??0).toFixed(1)}%`}}}},scales:{x:{grid:{color:l.grid,drawBorder:!1},ticks:{color:l.tick,font:{size:11}}},y:{grid:{color:l.grid,drawBorder:!1},ticks:{color:l.tick,font:{size:11},callback:(g)=>`${g}%`},min:0,max:100}}}),[l]);return Ee.jsxDEV(ut,{title:"Model Preference",subtitle:`Share of requests over ${u.windowLabel}`,children:Ee.jsxDEV("div",{className:"h-[280px]",children:d.data.length===0?Ee.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No data available"},void 0,!1,void 0,this):Ee.jsxDEV(Xa,{data:p,options:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Mz(a,o=5){if(a.length===0)return{data:[],series:[]};let s=new Map;for(let b of a){let v=`${b.model}::${b.provider}`,T=s.get(v);if(T)T.total+=b.requests;else s.set(v,{model:b.model,provider:b.provider,total:b.requests})}let l=[...s.entries()].map(([b,v])=>({key:b,...v})).sort((b,v)=>v.total-b.total).slice(0,o),u=new Set(l.map((b)=>b.key)),d=new Map;for(let b of l)d.set(b.model,(d.get(b.model)??0)+1);let p=new Map;for(let b of l){let v=(d.get(b.model)??0)>1;p.set(b.key,v?`${b.model} (${b.provider})`:b.model)}let h=new Map;for(let b of a){let v=`${b.model}::${b.provider}`,T=h.get(b.timestamp)??{timestamp:b.timestamp,total:0};T.total+=b.requests;let M=u.has(v)?v:"Other";T[M]=(T[M]??0)+b.requests,h.set(b.timestamp,T)}let g=l.map((b)=>({key:b.key,label:p.get(b.key)??b.model}));if([...h.values()].some((b)=>(b.Other??0)>0))g.push({label:"Other"});return{data:[...h.values()].sort((b,v)=>(b.timestamp??0)-(v.timestamp??0)).map((b)=>{let v=b.total??0;for(let T of g){let M=T.key??T.label;b[M]=v>0?(b[M]??0)/v*100:0}return b}),series:g}}var bR="2fr 0.9fr 0.9fr 1fr 0.8fr 0.8fr 140px 40px";function Iz({models:a,performanceSeries:o,timeRange:s,colorLookup:r}){let[l,u]=Tn.useState(null),d=Ll(s),p=Tn.useMemo(()=>KA(o,s),[o,s]),h=$t(),g=ra[h],y=Tn.useMemo(()=>[...a].sort((b,v)=>v.totalInputTokens+v.totalOutputTokens-(b.totalInputTokens+b.totalOutputTokens)),[a]);return Ee.jsxDEV(Pm,{title:"Model Statistics",children:[Ee.jsxDEV(Bm,{gridTemplate:bR,columns:[{label:"Model"},{label:"Requests",align:"right"},{label:"API-equivalent estimate",align:"right"},{label:"Tokens",align:"right"},{label:"Tokens/s",align:"right"},{label:"TTFT",align:"right"},{label:d.trendLabel,align:"center"}]},void 0,!1,void 0,this),Ee.jsxDEV(Nm,{children:y.map((b,v)=>{let T=`${b.model}::${b.provider}`,I=p.get(T)?.data??[],w=r.get(T)??yt[v%yt.length],A=l===T,B=b.errorRate*100;return Ee.jsxDEV(Hm,{gridTemplate:bR,isExpanded:A,onToggle:()=>u(A?null:T),cells:[Ee.jsxDEV(zm,{model:b.model,provider:b.provider},"name",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.totalRequests.toLocaleString()},"requests",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:ea(b.totalCost,b.unpricedRequests)},"cost",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:(b.totalInputTokens+b.totalOutputTokens).toLocaleString()},"tokens",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTokensPerSecond?.toFixed(1)??"-"},"tps",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},"ttft",!1,void 0,this)],trendCell:I.length===0?Ee.jsxDEV(Um,{},void 0,!1,void 0,this):Ee.jsxDEV(Em,{timestamps:I.map((z)=>z.timestamp),values:I.map((z)=>z.avgTokensPerSecond??0),color:w},void 0,!1,void 0,this),expandedContent:Ee.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"200px 1fr"},children:[Ee.jsxDEV("div",{className:"space-y-4 text-sm",children:[Ee.jsxDEV("div",{children:[Ee.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Efficiency"},void 0,!1,void 0,this),Ee.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Error rate"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:B>5?"text-[var(--accent-red)]":"text-[var(--accent-green)]",children:[B.toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Cache rate"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:"font-mono",children:[(b.cacheRate*100).toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Cache savings"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:b.cacheSavings<0?"text-[var(--accent-red)]":"text-[var(--accent-green)]",children:[(b.cacheSavings*100).toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{children:[Ee.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Latency"},void 0,!1,void 0,this),Ee.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Avg duration"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:"font-mono",children:b.avgDuration?`${(b.avgDuration/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Avg TTFT"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:"font-mono",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"h-[200px]",children:I.length===0?Ee.jsxDEV(Fm,{},void 0,!1,void 0,this):Ee.jsxDEV(Az,{data:I,color:w,chartTheme:g,timeRange:s},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},T,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Az({data:a,color:o,chartTheme:s,timeRange:r}){let l=Tn.useMemo(()=>({labels:a.map((d)=>Tf(d.timestamp,r)),datasets:[{label:"TTFT",data:a.map((d)=>d.avgTtftSeconds??null),...$s("#5ad8e6"),yAxisID:"y"},{label:"Tokens/s",data:a.map((d)=>d.avgTokensPerSecond??null),...$s(o),yAxisID:"y1"}]}),[a,o,r]),u=Tn.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,plugins:Om(s),scales:YA(s)}),[s]);return Ee.jsxDEV(Xa,{data:l,options:u},void 0,!1,void 0,this)}var kf=Q(dt(),1);var xR=Q(dt(),1);var vo=Q(de(),1),Wm={main:{label:"Main agent",color:"#ed4abf"},subagent:{label:"Subagents",color:"#9b4dff"},advisor:{label:"Advisor",color:"#5ad8e6"}};function vR({stats:a}){let o=xR.useMemo(()=>ZA(a),[a]);if(o.totalTokens===0)return vo.jsxDEV("div",{className:"py-8 text-center stats-text-muted text-sm",children:"No token usage in this range"},void 0,!1,void 0,this);return vo.jsxDEV("div",{className:"space-y-4",children:[vo.jsxDEV("div",{className:"flex h-3 w-full overflow-hidden rounded-full",style:{background:"var(--surface-2)"},children:o.segments.map((s)=>s.share>0&&vo.jsxDEV("div",{className:"h-full",style:{width:`${s.share*100}%`,background:Wm[s.agentType].color},title:`${Wm[s.agentType].label}: ${Ht(s.share)}`},s.agentType,!1,void 0,this))},void 0,!1,void 0,this),vo.jsxDEV("div",{className:"space-y-2",children:o.segments.map((s)=>vo.jsxDEV("div",{className:"flex items-center justify-between gap-3 text-sm",children:[vo.jsxDEV("div",{className:"flex items-center gap-2 min-w-0",children:[vo.jsxDEV("span",{className:"w-2.5 h-2.5 rounded-full flex-shrink-0",style:{background:Wm[s.agentType].color}},void 0,!1,void 0,this),vo.jsxDEV("span",{className:"stats-text-primary truncate",children:Wm[s.agentType].label},void 0,!1,void 0,this),vo.jsxDEV("span",{className:"stats-text-muted stats-text-xs whitespace-nowrap",children:[Ce(s.requests)," req"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),vo.jsxDEV("div",{className:"flex items-center gap-3 whitespace-nowrap",children:[vo.jsxDEV("span",{className:"stats-text-secondary",children:[lt(s.tokens)," tok"]},void 0,!0,void 0,this),vo.jsxDEV("span",{className:"stats-font-semibold stats-text-primary tabular-nums",children:Ht(s.share)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},s.agentType,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ve=Q(de(),1);function SR({active:a,range:o,refreshTrigger:s,onRequestClick:r}){let{data:l,error:u,loading:d}=Vt(["overview",o,s],(A)=>iA(o,A),{pollMs:30000,enabled:a}),{data:p,error:h,loading:g}=Vt(["recent-requests",s],(A)=>Rm(50,A),{pollMs:30000,enabled:a}),y=$t(),b=ra[y],v=kf.useMemo(()=>{if(!l?.timeSeries)return{labels:[],datasets:[]};let A=l.timeSeries.map((z)=>Cn(new Date(z.timestamp),o==="1h"||o==="24h"?"HH:mm":"MMM d")),B=l.timeSeries.length<=2?3:0;return{labels:A,datasets:[{label:"Requests",data:l.timeSeries.map((z)=>z.requests),borderColor:"#5ad8e6",backgroundColor:"rgba(90, 216, 230, 0.12)",tension:0.2,borderWidth:2,pointRadius:B,pointHoverRadius:4,fill:!0},{label:"Errors",data:l.timeSeries.map((z)=>z.errors),borderColor:"#ff6b7d",backgroundColor:"rgba(255, 107, 125, 0.12)",tension:0.2,borderWidth:2,pointRadius:B,pointHoverRadius:4,fill:!0}]}},[l?.timeSeries,o]),T=kf.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!0,position:"top",align:"end",labels:{color:b.legendLabel,boxWidth:8,usePointStyle:!0,font:{size:11}}},tooltip:{backgroundColor:b.tooltipBackground,titleColor:b.tooltipTitle,bodyColor:b.tooltipBody,borderColor:b.tooltipBorder,borderWidth:1,cornerRadius:8,padding:10}},scales:{x:{grid:{color:b.grid,drawBorder:!1},ticks:{color:b.tick,font:{size:10}}},y:{grid:{color:b.grid,drawBorder:!1},ticks:{color:b.tick,font:{size:10}},min:0}}}),[b]),M=kf.useMemo(()=>[{key:"model",header:"Model",render:(A)=>ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:A.model},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:A.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"timestamp",header:"Time",render:(A)=>za(A.timestamp)},{key:"tokens",header:"Tokens",numeric:!0,render:(A)=>Ce(A.usage.totalTokens)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(A)=>ln(A,4)},{key:"duration",header:"Duration",numeric:!0,render:(A)=>rt(A.duration)},{key:"status",header:"Status",className:"stats-text-center",render:(A)=>ve.jsxDEV(ya,{variant:A.errorMessage?"danger":"success",children:A.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)}],[]),I=(A,B)=>ve.jsxDEV("div",{className:"stats-mobile-card",onClick:B,children:[ve.jsxDEV("div",{className:"stats-mobile-card-header",children:[ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:A.model},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:A.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV(ya,{variant:A.errorMessage?"danger":"success",children:A.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-grid",children:[ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"Time"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:za(A.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:ln(A,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"Tokens"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:Ce(A.usage.totalTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(A.duration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A.errorMessage&&ve.jsxDEV("div",{className:"stats-mobile-card-error truncate mt-2",children:A.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w=kf.useMemo(()=>{if(!p)return[];return p.slice(0,10)},[p]);return ve.jsxDEV("div",{className:"stats-route-container space-y-6",children:[ve.jsxDEV(Rt,{loading:d,error:u,data:l,children:l&&ve.jsxDEV(nR,{stats:l.overall},void 0,!1,void 0,this)},void 0,!1,void 0,this),ve.jsxDEV(ut,{title:"Conversation Tokens by Agent",subtitle:"Uncached input + cache reads + cache writes + output, grouped by agent type",children:ve.jsxDEV(Rt,{loading:d,error:u,data:l,children:l&&ve.jsxDEV(vR,{stats:l.byAgentType},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[ve.jsxDEV("div",{className:"lg:col-span-2",children:ve.jsxDEV(ut,{title:"System Throughput",subtitle:"Request volume and errors over time",children:ve.jsxDEV(Rt,{loading:d,error:u,data:l,children:ve.jsxDEV("div",{className:"h-[280px]",children:l?.timeSeries&&l.timeSeries.length>0?ve.jsxDEV(Xa,{data:v,options:T},void 0,!1,void 0,this):ve.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No time-series data available"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),ve.jsxDEV("div",{children:ve.jsxDEV(ut,{title:"Operational Feed",subtitle:"Real-time request log",children:ve.jsxDEV(Rt,{loading:g,error:h,data:p,fallback:ve.jsxDEV("div",{className:"space-y-4",children:Array.from({length:5}).map((A,B)=>ve.jsxDEV("div",{className:"flex items-center gap-3",children:[ve.jsxDEV(Ua,{variant:"circle",width:10,height:10},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"flex-1",children:[ve.jsxDEV(Ua,{variant:"text",width:"60%",height:16},void 0,!1,void 0,this),ve.jsxDEV(Ua,{variant:"text",width:"40%",height:12},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},B,!0,void 0,this))},void 0,!1,void 0,this),children:ve.jsxDEV("div",{className:"stats-feed-ledger overflow-y-auto max-h-[280px] pr-2",children:[w.map((A)=>{let B=!!A.errorMessage;return ve.jsxDEV("div",{className:"stats-feed-item flex items-start gap-3 p-2 rounded hover:bg-stats-surface-2 cursor-pointer transition-colors",onClick:()=>A.id&&r(A.id),children:[ve.jsxDEV("div",{className:`w-2 h-2 mt-1.5 rounded-full flex-shrink-0 ${B?"bg-stats-danger":"bg-stats-success"}`},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"flex-1 min-w-0",children:[ve.jsxDEV("div",{className:"flex justify-between items-baseline gap-2",children:[ve.jsxDEV("div",{className:"stats-font-medium stats-text-primary text-sm truncate",children:A.model},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-text-xs stats-text-muted whitespace-nowrap",children:za(A.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{className:"flex justify-between items-center text-xs stats-text-muted mt-0.5",children:[ve.jsxDEV("div",{children:A.provider},void 0,!1,void 0,this),ve.jsxDEV("div",{children:[A.duration?rt(A.duration):""," ",A.usage.totalTokens>0?`· ${ln(A,4)}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B&&ve.jsxDEV("div",{className:"text-xs text-stats-danger truncate mt-1",children:A.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},A.id||`${A.sessionFile}-${A.entryId}`,!0,void 0,this)}),w.length===0&&ve.jsxDEV("div",{className:"py-8 text-center stats-text-muted text-sm",children:"No recent requests found"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV(ut,{title:"Recent Requests Preview",subtitle:"Latest transactions processed by the proxy",actions:ve.jsxDEV("a",{href:`#/requests?range=${o}`,className:"stats-button stats-button-secondary text-xs",children:"View All Requests"},void 0,!1,void 0,this),children:ve.jsxDEV(Rt,{loading:g,error:h,data:p,children:ve.jsxDEV(Ma,{columns:M,data:w,keyExtractor:(A)=>A.id||`${A.sessionFile}-${A.entryId}`,onRowClick:(A)=>A.id&&r(A.id),renderMobileCard:I,emptyText:"No recent requests found"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var a0=Q(dt(),1);var ot=Q(de(),1);function LR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["projects",o,s],(g)=>hA(o,g),{pollMs:30000,enabled:a}),d=a0.useMemo(()=>{if(!r)return[];return eR(r)},[r]),p=a0.useMemo(()=>[{key:"folder",header:"Project/Folder",render:(g)=>ot.jsxDEV("div",{className:"stats-font-medium stats-text-primary truncate max-w-[440px]",title:g.folder||"(root)",children:g.folder||"(root)"},void 0,!1,void 0,this)},{key:"totalRequests",header:"Requests",numeric:!0,render:(g)=>ot.jsxDEV("div",{className:"stats-text-right",children:[ot.jsxDEV("div",{className:"font-mono",children:Ce(g.totalRequests)},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-progress-bar-track mt-1 ml-auto w-24 h-1",children:ot.jsxDEV("div",{className:"stats-progress-bar-fill","data-variant":"link",style:{width:`${g.requestsPercentage}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"totalCost",header:"API-equivalent estimate",numeric:!0,render:(g)=>ot.jsxDEV("div",{className:"stats-text-right",children:[ot.jsxDEV("div",{className:"font-mono",children:ea(g.totalCost,g.unpricedRequests)},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-progress-bar-track mt-1 ml-auto w-24 h-1",children:ot.jsxDEV("div",{className:"stats-progress-bar-fill","data-variant":"success",style:{width:`${g.costPercentage}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"totalTokens",header:"Tokens",numeric:!0,render:(g)=>ot.jsxDEV("div",{className:"font-mono",children:Ce(g.totalInputTokens+g.totalOutputTokens)},void 0,!1,void 0,this)},{key:"cacheRate",header:"Cache Rate",numeric:!0,render:(g)=>ot.jsxDEV("span",{className:"font-mono",children:Ht(g.cacheRate)},void 0,!1,void 0,this)},{key:"cacheSavings",header:"Cache Savings",numeric:!0,render:(g)=>ot.jsxDEV("span",{className:`${g.cacheSavings<0?"stats-text-danger":"stats-text-success"} font-medium`,children:Ht(g.cacheSavings)},void 0,!1,void 0,this)},{key:"errorRate",header:"Error Rate",numeric:!0,render:(g)=>ot.jsxDEV(ya,{variant:g.errorRate>0.1?"danger":g.errorRate>0?"warning":"success",children:Ht(g.errorRate)},void 0,!1,void 0,this)},{key:"avgDuration",header:"Avg Duration",numeric:!0,render:(g)=>rt(g.avgDuration)}],[]);return ot.jsxDEV("div",{className:"stats-route-container",children:ot.jsxDEV(ut,{title:"Projects & Folders",subtitle:"Aggregate proxy metrics grouped by folder path",children:ot.jsxDEV(Rt,{loading:u,error:l,data:r,emptyText:"No project folders recorded for this range.",children:ot.jsxDEV(Ma,{columns:p,data:d,keyExtractor:(g)=>g.folder,renderMobileCard:(g)=>ot.jsxDEV("div",{className:"stats-mobile-card",children:[ot.jsxDEV("div",{className:"stats-mobile-card-header mb-2",children:[ot.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:g.folder||"(root)"},void 0,!1,void 0,this),ot.jsxDEV(ya,{variant:g.errorRate>0.1?"danger":g.errorRate>0?"warning":"success",children:[Ht(g.errorRate)," Err"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-grid",children:[ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Requests"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:Ce(g.totalRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:ea(g.totalCost,g.unpricedRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Cache Rate"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value",children:Ht(g.cacheRate)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Cache Savings"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value",children:Ht(g.cacheSavings)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(g.avgDuration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),emptyText:"No project folders recorded for this range."},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Ia=Q(dt(),1);var $e=Q(de(),1);function CR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["providers",o,s],(d)=>bA(o,d),{pollMs:30000,enabled:a});return $e.jsxDEV("div",{className:"stats-route-container space-y-6",children:$e.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&$e.jsxDEV($e.Fragment,{children:[$e.jsxDEV(Rz,{providers:r.providers},void 0,!1,void 0,this),$e.jsxDEV(Dz,{stats:r},void 0,!1,void 0,this),$e.jsxDEV(_z,{hourly:r.hourly,providers:r.providers},void 0,!1,void 0,this),$e.jsxDEV(Ez,{insights:r.windowInsights},void 0,!1,void 0,this),$e.jsxDEV(Oz,{usageSeries:r.usageSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Rz({providers:a}){let o=Ia.useMemo(()=>a.reduce((l,u)=>l+u.totalTokens,0),[a]),s=Ia.useMemo(()=>a.reduce((l,u)=>l+u.unpricedRequests,0),[a]),r=[{key:"provider",header:"Provider",render:(l)=>$e.jsxDEV("span",{className:"font-medium",children:l.provider},void 0,!1,void 0,this)},{key:"requests",header:"Requests",numeric:!0,render:(l)=>Ce(l.totalRequests)},{key:"errors",header:"Error Rate",numeric:!0,render:(l)=>Ht(l.totalRequests>0?l.failedRequests/l.totalRequests:0)},{key:"models",header:"Models",numeric:!0,render:(l)=>Ce(l.models)},{key:"tokens",header:"Tokens",numeric:!0,render:(l)=>$e.jsxDEV("span",{title:`Input ${lt(l.totalInputTokens)} · Output ${lt(l.totalOutputTokens)} · Cache read ${lt(l.totalCacheReadTokens)} · Cache write ${lt(l.totalCacheWriteTokens)}`,children:lt(l.totalTokens)},void 0,!1,void 0,this)},{key:"share",header:"Share",numeric:!0,render:(l)=>Ht(o>0?l.totalTokens/o:0)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(l)=>ea(l.totalCost,l.unpricedRequests)},{key:"tps",header:"Tok/s",numeric:!0,render:(l)=>qm(l.avgTokensPerSecond)}];return $e.jsxDEV(ut,{title:"Provider Totals",subtitle:s>0?`Token, request, and API-equivalent estimates; excludes ${s.toLocaleString()} unpriced subscription request${s===1?"":"s"}`:"Token, request, and API-equivalent estimates over the active range",children:$e.jsxDEV(Ma,{columns:r,data:a,keyExtractor:(l)=>l.provider,emptyText:"No requests recorded in this range"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Dz({stats:a}){let[o,s]=Ia.useState("tokens"),r=$t(),l=ra[r],u=Ia.useMemo(()=>a.providers.reduce((y,b)=>y+b.unpricedRequests,0),[a.providers]),d=Ia.useMemo(()=>{let y=a.series.map((b)=>({...b,model:b.provider}));return ju(y,{topN:6,rankWeight:(b)=>o==="tokens"?b.totalTokens:b.cost,initBucket:()=>({total:0}),accumulate:(b,v)=>{b.total+=o==="tokens"?v.totalTokens:v.cost},bucketToValue:(b)=>b.total})},[a.series,o]),p=o==="tokens"?lt:(y)=>Cf(y),h=Ia.useMemo(()=>{let{sharedScaleBase:y,yScale:b}=ls({chartTheme:l,formatY:p});return{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:is({chartTheme:l,showLegend:!0,defaultLabel:o==="tokens"?"Tokens":"API-equivalent estimate",formatValue:p,footer:(v)=>{if(v.length<2)return;let T=v.reduce((M,I)=>M+(I.parsed.y??0),0);return`Total: ${p(T)}`}}),scales:{x:{...y,stacked:!0},y:{...b,stacked:!0}}}},[l,o,p]),g=Ia.useMemo(()=>({labels:d.labels,datasets:ui(d,(y)=>Sl(yt[y%yt.length]))}),[d]);return $e.jsxDEV(ut,{title:"Burn by Provider",subtitle:o==="cost"&&u>0?`API-equivalent estimates over time; excludes ${u.toLocaleString()} unpriced subscription request${u===1?"":"s"}`:"Stacked token or API-equivalent estimate burn over time",actions:$e.jsxDEV(Ws,{options:[{value:"tokens",label:"Tokens"},{value:"cost",label:"API-equivalent estimate"}],value:o,onChange:s},void 0,!1,void 0,this),children:$e.jsxDEV("div",{className:"h-[300px]",children:d.labels.length===0?$e.jsxDEV(Gu,{message:"No provider activity in this range"},void 0,!1,void 0,this):$e.jsxDEV(li,{data:g,options:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var o0="__all__";function _z({hourly:a,providers:o}){let[s,r]=Ia.useState(o0),l=$t(),u=ra[l],{tokensByHour:d,peakHour:p}=Ia.useMemo(()=>{let b=Array(24).fill(0);for(let T of a){if(s!==o0&&T.provider!==s)continue;b[T.hour]+=T.totalTokens}let v=0;for(let T=1;T<24;T++)if(b[T]>b[v])v=T;return{tokensByHour:b,peakHour:v}},[a,s]),h=d.some((b)=>b>0),g=Ia.useMemo(()=>({labels:Array.from({length:24},(b,v)=>`${String(v).padStart(2,"0")}:00`),datasets:[{label:"Tokens",data:d,...Sl(yt[2]),backgroundColor:d.map((b,v)=>v===p?yt[0]:yt[2])}]}),[d,p]),y=Ia.useMemo(()=>{let{sharedScaleBase:b,yScale:v}=ls({chartTheme:u,formatY:lt});return{responsive:!0,maintainAspectRatio:!1,plugins:is({chartTheme:u,showLegend:!1,defaultLabel:"Tokens",formatValue:lt}),scales:{x:b,y:v}}},[u]);return $e.jsxDEV(ut,{title:"Peak Burn Hours",subtitle:h?`Token burn by local hour of day — peak at ${String(p).padStart(2,"0")}:00`:"Token burn by local hour of day",actions:$e.jsxDEV("select",{className:"stats-select",value:s,onChange:(b)=>r(b.target.value),"aria-label":"Provider",children:[$e.jsxDEV("option",{value:o0,children:"All providers"},void 0,!1,void 0,this),o.map((b)=>$e.jsxDEV("option",{value:b.provider,children:b.provider},b.provider,!1,void 0,this))]},void 0,!0,void 0,this),children:$e.jsxDEV("div",{className:"h-[260px]",children:h?$e.jsxDEV(li,{data:g,options:y},void 0,!1,void 0,this):$e.jsxDEV(Gu,{message:"No activity in this range"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Ez({insights:a}){return $e.jsxDEV(ut,{title:"Subscription Windows",subtitle:"What each usage window buys you, and how many accounts peak demand needs",children:$e.jsxDEV(Ma,{columns:[{key:"provider",header:"Provider",render:(s)=>$e.jsxDEV("span",{className:"font-medium",children:s.provider},void 0,!1,void 0,this)},{key:"window",header:"Window",render:(s)=>s.windowLabel},{key:"accounts",header:"Accounts",numeric:!0,render:(s)=>Ce(s.accounts)},{key:"consumed",header:"Windows Burned",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Subscription-window equivalents consumed in range (sum of used-fraction increases across accounts)",children:s.fractionConsumed.toFixed(2)},void 0,!1,void 0,this)},{key:"capacity",header:"Est. Tokens / Window",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Provider tokens burned in range ÷ windows burned — what one full window is worth",children:s.estTokensPerWindow!==null?lt(s.estTokensPerWindow):"—"},void 0,!1,void 0,this)},{key:"peak",header:"Peak Utilization",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Peak of summed used fraction across accounts at any sampled instant",children:Ht(s.peakConcurrentFraction)},void 0,!1,void 0,this)},{key:"ideal",header:"Ideal Accounts",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Accounts needed to keep peak demand under 90% of fleet capacity",className:s.idealAccounts>s.accounts?"stats-text-warning font-semibold":void 0,children:[Ce(s.idealAccounts),s.idealAccounts>s.accounts?` (have ${s.accounts})`:""]},void 0,!0,void 0,this)},{key:"exhausted",header:"Exhaustions",numeric:!0,render:(s)=>$e.jsxDEV("span",{className:s.exhaustedEvents>0?"stats-text-warning":void 0,children:Ce(s.exhaustedEvents)},void 0,!1,void 0,this)}],data:a,keyExtractor:(s)=>`${s.provider}::${s.windowKey}`,emptyText:"No usage snapshots recorded yet — they accumulate whenever usage is fetched (TUI footer, /usage, omp usage)"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n0={ok:"#62d394",warning:"#f5c14b",exhausted:"#ff6b7d"};function Oz({usageSeries:a}){let o=Ia.useMemo(()=>[...new Set(a.map((y)=>y.provider))],[a]),[s,r]=Ia.useState(null),l=s!==null&&o.includes(s)?s:o[0]??null,u=$t(),d=ra[u],p=Ia.useMemo(()=>a.filter((y)=>y.provider===l).map((y)=>{let b=[...y.points].reverse().find((v)=>v.usedFraction!==null);return b?{label:`${y.windowLabel} · ${y.accountLabel}`,fraction:b.usedFraction??0,exhausted:b.exhausted,recordedAt:b.timestamp}:null}).filter((y)=>y!==null).sort((y,b)=>b.fraction-y.fraction),[a,l]),h=Ia.useMemo(()=>({labels:p.map((y)=>y.label),datasets:[{label:"Used",data:p.map((y)=>y.fraction*100),backgroundColor:p.map((y)=>y.exhausted?n0.exhausted:y.fraction>=0.8?n0.warning:n0.ok),borderWidth:0,borderRadius:4,barThickness:18}]}),[p]),g=Ia.useMemo(()=>{let{sharedScaleBase:y,yScale:b}=ls({chartTheme:d,formatY:(M)=>`${Math.round(M)}%`}),v=Math.max(100,...p.map((M)=>M.fraction*100)),T=is({chartTheme:d,showLegend:!1,defaultLabel:"Used",formatValue:(M)=>`${M.toFixed(1)}%`});return{indexAxis:"y",responsive:!0,maintainAspectRatio:!1,plugins:{...T,tooltip:{...T.tooltip,callbacks:{label:(M)=>{let I=p[M.dataIndex],w=`${(M.parsed.x??0).toFixed(1)}% used`;return I?`${w} · recorded ${za(I.recordedAt)}`:w}}}},scales:{x:{...b,max:v},y:{...y,grid:{display:!1}}}}},[d,p]);return $e.jsxDEV(ut,{title:"Window Utilization",subtitle:"Latest recorded limit utilization per account and window — red bars are exhausted, amber above 80%",actions:o.length>1?$e.jsxDEV("select",{className:"stats-select",value:l??"",onChange:(y)=>r(y.target.value),"aria-label":"Provider",children:o.map((y)=>$e.jsxDEV("option",{value:y,children:y},y,!1,void 0,this))},void 0,!1,void 0,this):void 0,children:$e.jsxDEV("div",{style:{height:Math.max(160,p.length*34+60)},children:p.length===0?$e.jsxDEV(Gu,{message:"No usage snapshots recorded yet — they accumulate whenever usage is fetched"},void 0,!1,void 0,this):$e.jsxDEV(li,{data:h,options:g},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var TR=Q(dt(),1);var Tt=Q(de(),1);function wR({active:a,refreshTrigger:o,onRequestClick:s}){let{data:r,error:l,loading:u}=Vt(["recent-requests-dense",o],(h)=>Rm(50,h),{pollMs:30000,enabled:a}),d=TR.useMemo(()=>[{key:"model",header:"Model",render:(h)=>Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:h.model},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:h.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"timestamp",header:"Time",render:(h)=>za(h.timestamp)},{key:"tokens",header:"Tokens",numeric:!0,render:(h)=>Ce(h.usage.totalTokens)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(h)=>ln(h,4)},{key:"duration",header:"Duration",numeric:!0,render:(h)=>rt(h.duration)},{key:"status",header:"Status",className:"stats-text-center",render:(h)=>Tt.jsxDEV(ya,{variant:h.errorMessage?"danger":"success",children:h.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)}],[]);return Tt.jsxDEV("div",{className:"stats-route-container",children:Tt.jsxDEV(ut,{title:"All Recent Requests",subtitle:"Up to 50 most recent requests processed by OMP",children:Tt.jsxDEV(Rt,{loading:u,error:l,data:r,children:Tt.jsxDEV(Ma,{columns:d,data:r||[],keyExtractor:(h)=>h.id||`${h.sessionFile}-${h.entryId}`,onRowClick:(h)=>h.id&&s(h.id),renderMobileCard:(h,g)=>Tt.jsxDEV("div",{className:"stats-mobile-card",onClick:g,children:[Tt.jsxDEV("div",{className:"stats-mobile-card-header",children:[Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:h.model},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:h.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV(ya,{variant:h.errorMessage?"danger":"success",children:h.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-grid",children:[Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Time"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:za(h.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:ln(h,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Tokens"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:Ce(h.usage.totalTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(h.duration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),h.errorMessage&&Tt.jsxDEV("div",{className:"stats-mobile-card-error truncate mt-2",children:h.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),emptyText:"No recent requests found"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var cn=Q(dt(),1);var re=Q(de(),1);function kR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["tools",o,s],(d)=>gA(o,d),{pollMs:30000,enabled:a});return re.jsxDEV("div",{className:"stats-route-container space-y-6",children:re.jsxDEV(Rt,{loading:u,error:l,data:r,emptyText:"No tool calls recorded for this range.",children:r&&re.jsxDEV(re.Fragment,{children:[re.jsxDEV(Pz,{byTool:r.byTool},void 0,!1,void 0,this),re.jsxDEV(zz,{series:r.series,timeRange:o},void 0,!1,void 0,this),re.jsxDEV(Hz,{byTool:r.byTool},void 0,!1,void 0,this),re.jsxDEV(Uz,{byToolModel:r.byToolModel},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Pz({byTool:a}){let o=cn.useMemo(()=>{let s=0,r=0,l=0,u=0,d=0,p=0,h=0,g=0;for(let y of a)s+=y.calls,r+=y.errors,l+=y.totalTokensShare,u+=y.outputTokensShare,d+=y.costShare,p+=y.unpricedRequestsShare,h+=y.resultChars,g+=y.argsChars;return{calls:s,errors:r,tokens:l,output:u,cost:d,unpricedRequests:p,resultChars:h,argsChars:g,tools:a.length}},[a]);return re.jsxDEV(ut,{title:"Tool Usage",subtitle:"Tokens and API-equivalent estimates are split from invoking turns across each turn's tool calls",children:re.jsxDEV("div",{className:"stats-metric-cluster",children:[re.jsxDEV("div",{className:"stats-metric-primary-grid",children:[re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Tool Calls"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:Ce(o.calls)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Tools Used"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:Ce(o.tools)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Error Rate"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:Ht(o.calls>0?o.errors/o.calls:0)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Attributed API-equivalent estimate"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:ea(o.cost,o.unpricedRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-secondary-grid",children:[re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Attributed Tokens"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:lt(Math.round(o.tokens))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Attributed Output"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:lt(Math.round(o.output))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Result Text"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:[lt(o.resultChars)," chars"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Call Arguments"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:[lt(o.argsChars)," chars"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var Bz=6;function Nz(a){let o=new Map;for(let g of a)o.set(g.tool,(o.get(g.tool)??0)+g.calls);let s=[...o.entries()].sort((g,y)=>y[1]-g[1]),r=s.slice(0,Bz).map(([g])=>g),l=new Set(r),d=s.length>r.length?[...r,"Other"]:r,p=[...new Set(a.map((g)=>g.timestamp))].sort((g,y)=>g-y),h=new Map;for(let g of p)h.set(g,{});for(let g of a){let y=l.has(g.tool)?g.tool:"Other",b=h.get(g.timestamp);if(b)b[y]=(b[y]??0)+g.calls}return{buckets:p,tools:d,data:h}}function zz({series:a,timeRange:o}){let s=$t(),r=ra[s],l=Ll(o),u=cn.useMemo(()=>Nz(a),[a]),d=cn.useMemo(()=>({labels:u.buckets.map((h)=>Tf(h,o)),datasets:u.tools.map((h,g)=>({label:h,data:u.buckets.map((y)=>u.data.get(y)?.[h]??0),borderColor:yt[g%yt.length],backgroundColor:`${yt[g%yt.length]}30`,fill:!0,tension:0.4,pointRadius:0,pointHoverRadius:4,borderWidth:2}))}),[u,o]),p=cn.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",align:"start",labels:{color:r.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:r.tooltipBackground,titleColor:r.tooltipTitle,bodyColor:r.tooltipBody,borderColor:r.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(h)=>`${h.dataset.label??""}: ${Ce(h.parsed.y??0)} calls`}}},scales:{x:{stacked:!0,grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11}}},y:{stacked:!0,grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11},precision:0},min:0}}}),[r]);return re.jsxDEV(ut,{title:"Calls Over Time",subtitle:`Tool calls over ${l.windowLabel}, stacked by tool`,children:re.jsxDEV("div",{className:"h-[280px]",children:u.buckets.length===0?re.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No data available"},void 0,!1,void 0,this):re.jsxDEV(Xa,{data:d,options:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function s0(a){return a>0.1?"danger":a>0?"warning":"success"}function Hz({byTool:a}){let o=cn.useMemo(()=>tR(a),[a]),s=cn.useMemo(()=>[{key:"tool",header:"Tool",render:(l)=>re.jsxDEV("div",{className:"stats-font-medium stats-text-primary font-mono truncate max-w-[280px]",title:l.tool,children:l.tool},void 0,!1,void 0,this)},{key:"calls",header:"Calls",numeric:!0,render:(l)=>re.jsxDEV("div",{className:"stats-text-right",children:[re.jsxDEV("div",{className:"font-mono",children:Ce(l.calls)},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-progress-bar-track mt-1 ml-auto w-24 h-1",children:re.jsxDEV("div",{className:"stats-progress-bar-fill","data-variant":"link",style:{width:`${l.callsPercentage}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"errorRate",header:"Error Rate",numeric:!0,render:(l)=>re.jsxDEV(ya,{variant:s0(l.errorRate),children:Ht(l.errorRate)},void 0,!1,void 0,this)},{key:"tokens",header:"Attr. Tokens",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"font-mono",title:"Invoking turns' total tokens, split across each turn's calls",children:lt(Math.round(l.totalTokensShare))},void 0,!1,void 0,this)},{key:"cost",header:"Attr. API-equivalent estimate",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"font-mono",children:ea(l.costShare,l.unpricedRequestsShare)},void 0,!1,void 0,this)},{key:"resultChars",header:"Result Text",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"font-mono",title:"Characters of tool-result text fed back into context",children:lt(l.resultChars)},void 0,!1,void 0,this)},{key:"lastUsed",header:"Last Used",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"stats-text-secondary",children:za(l.lastUsed)},void 0,!1,void 0,this)}],[]);return re.jsxDEV(ut,{title:"By Tool",subtitle:"Usage per tool, most called first",children:re.jsxDEV(Ma,{columns:s,data:o,keyExtractor:(l)=>l.tool,renderMobileCard:(l)=>re.jsxDEV("div",{className:"stats-mobile-card",children:[re.jsxDEV("div",{className:"stats-mobile-card-header mb-2",children:[re.jsxDEV("div",{className:"stats-font-semibold stats-text-primary font-mono",children:l.tool},void 0,!1,void 0,this),re.jsxDEV(ya,{variant:s0(l.errorRate),children:[Ht(l.errorRate)," Err"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-grid",children:[re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Calls"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:Ce(l.calls)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Attr. Tokens"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:lt(Math.round(l.totalTokensShare))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Attr. API-equivalent estimate"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:ea(l.costShare,l.unpricedRequestsShare)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Result Text"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:lt(l.resultChars)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),emptyText:"No tool calls recorded for this range."},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Uz({byToolModel:a}){let[o,s]=cn.useState(null),r=cn.useMemo(()=>[...new Set(a.map((d)=>d.tool))].sort(),[a]),l=cn.useMemo(()=>(o?a.filter((p)=>p.tool===o):a).map((p)=>({...p,errorRate:p.calls>0?p.errors/p.calls:0})),[a,o]),u=cn.useMemo(()=>[{key:"tool",header:"Tool",render:(d)=>re.jsxDEV("span",{className:"stats-font-medium stats-text-primary font-mono",children:d.tool},void 0,!1,void 0,this)},{key:"model",header:"Model",render:(d)=>re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-text-primary",children:d.model||"(unknown)"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-text-secondary text-xs",children:d.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"calls",header:"Calls",numeric:!0,render:(d)=>re.jsxDEV("span",{className:"font-mono",children:Ce(d.calls)},void 0,!1,void 0,this)},{key:"errorRate",header:"Error Rate",numeric:!0,render:(d)=>re.jsxDEV(ya,{variant:s0(d.errorRate),children:Ht(d.errorRate)},void 0,!1,void 0,this)},{key:"tokens",header:"Attr. Tokens",numeric:!0,render:(d)=>re.jsxDEV("span",{className:"font-mono",children:lt(Math.round(d.totalTokensShare))},void 0,!1,void 0,this)},{key:"cost",header:"Attr. API-equivalent estimate",numeric:!0,render:(d)=>re.jsxDEV("span",{className:"font-mono",children:ea(d.costShare,d.unpricedRequestsShare)},void 0,!1,void 0,this)}],[]);return re.jsxDEV(ut,{title:"By Model",subtitle:"Which models call which tools",children:[re.jsxDEV("div",{className:"mb-4",style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[re.jsxDEV("span",{className:"stats-text-secondary",style:{fontSize:"0.875rem",whiteSpace:"nowrap"},children:"Tool"},void 0,!1,void 0,this),re.jsxDEV("select",{className:"stats-select",value:o??"",onChange:(d)=>s(d.target.value||null),style:{maxWidth:"320px",flex:1},children:[re.jsxDEV("option",{value:"",children:"All tools"},void 0,!1,void 0,this),r.map((d)=>re.jsxDEV("option",{value:d,children:d},d,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV(Ma,{columns:u,data:l,keyExtractor:(d)=>`${d.tool}::${d.model}::${d.provider}`,emptyText:"No tool calls recorded for this range."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Rf=Q(dt(),1);var wt=Q(dt(),1);var Zm=Q(dt(),1);var Zs=Q(de(),1);function MR({toolStats:a}){let[o,s]=Zm.useState(!1),r=Zm.useMemo(()=>[{key:"tool",header:"Tool",render:(l)=>l.tool},{key:"calls",header:"Calls",numeric:!0,render:(l)=>Ce(l.calls)},{key:"errors",header:"Errors",numeric:!0,render:(l)=>Ce(l.errors)},{key:"total",header:"Total",numeric:!0,render:(l)=>rt(l.totalMs)},{key:"avg",header:"Avg",numeric:!0,render:(l)=>rt(l.calls>0?l.totalMs/l.calls:0)},{key:"max",header:"Max",numeric:!0,render:(l)=>rt(l.maxMs)}],[]);if(a.length===0)return null;return Zs.jsxDEV("div",{className:"stats-panel",children:[Zs.jsxDEV("button",{type:"button",onClick:()=>s((l)=>!l),"aria-expanded":o,style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",padding:"10px 14px",cursor:"pointer",textAlign:"left"},children:[o?Zs.jsxDEV(Xs,{size:14,className:"stats-text-muted","aria-hidden":"true"},void 0,!1,void 0,this):Zs.jsxDEV(hl,{size:14,className:"stats-text-muted","aria-hidden":"true"},void 0,!1,void 0,this),Zs.jsxDEV("span",{className:"stats-panel-title",children:"Tool Aggregates"},void 0,!1,void 0,this),Zs.jsxDEV("span",{className:"stats-text-muted",style:{fontSize:11},children:[a.length," tools"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),o&&Zs.jsxDEV("div",{className:"stats-panel-body",children:Zs.jsxDEV(Ma,{columns:r,data:a,keyExtractor:(l)=>l.tool,emptyText:"No tool calls"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var wn=Q(dt(),1);var $u={dark:{category:{turn:"#34d399",model:"#a78bfa",tool:"#fbbf24",subagent:"#38bdf8",background:"#94a3b8"},error:"#f87171",marker:"#facc15",turnBand:"rgba(255, 255, 255, 0.035)",surface:"transparent",grid:"rgba(255, 255, 255, 0.06)",tick:"#867a93",spanText:"#16121c",selection:"#5ad8e6",tooltipBackground:"#241a2e",tooltipTitle:"#eae5ef",tooltipBody:"#a89fb3",tooltipBorder:"rgba(255, 255, 255, 0.12)"},light:{category:{turn:"#059669",model:"#7c3aed",tool:"#d97706",subagent:"#0284c7",background:"#64748b"},error:"#ef4444",marker:"#ca8a04",turnBand:"rgba(0, 0, 0, 0.04)",surface:"transparent",grid:"rgba(20, 12, 28, 0.08)",tick:"#6a6275",spanText:"#ffffff",selection:"#0e7490",tooltipBackground:"#ffffff",tooltipTitle:"#241a2e",tooltipBody:"#5a5462",tooltipBorder:"rgba(20, 12, 28, 0.15)"}};var RR=Q(de(),1),fi=44,r0=["turn","model","tool","subagent"],IR=6,Wu=10;function AR({tracks:a,scale:o,viewport:s,onViewportChange:r}){let l=$t(),u=$u[l],d=wn.useRef(null),[p,h]=wn.useState(800),g=wn.useRef(null);wn.useEffect(()=>{let B=d.current;if(!B)return;let z=new ResizeObserver((H)=>{h(Math.max(100,Math.floor(H[0].contentRect.width)))});return z.observe(B),()=>z.disconnect()},[]);let[y,b]=o.domain,v=Math.max(b-y,0.000000001),T=wn.useCallback((B)=>(B-y)/v*p,[y,v,p]),M=wn.useCallback((B)=>y+B/Math.max(p,1)*v,[y,v,p]);wn.useEffect(()=>{let B=d.current;if(!B)return;let z=B.getContext("2d");if(!z)return;let H=devicePixelRatio;z.setTransform(H,0,0,H,0,0),z.clearRect(0,0,p,fi);let q=fi/r0.length;for(let Y=0;Y<r0.length;Y++){let J=r0[Y],X=new Float32Array(p);for(let se of a)for(let ge of se.spans){if(ge.kind!==J)continue;let be=Math.max(0,Math.floor(T(o.toU(ge.start)))),Se=Math.min(p-1,Math.ceil(T(o.toU(ge.end))));for(let K=be;K<=Se;K++)X[K]=Math.min(1,X[K]+0.34)}z.fillStyle=u.category[J];for(let se=0;se<p;se++){if(X[se]<=0)continue;z.globalAlpha=0.25+X[se]*0.75,z.fillRect(se,Y*q+1,1,q-2)}z.globalAlpha=1}let j=T(s.u0),G=T(s.u1);z.fillStyle=l==="dark"?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)",z.fillRect(j,0,G-j,fi),z.strokeStyle=u.selection,z.strokeRect(j+0.5,0.5,G-j-1,fi-1),z.fillStyle=u.selection,z.fillRect(j,0,2,fi),z.fillRect(G-2,0,2,fi)},[a,o,s,u,l,p,T]);let I=(B)=>{let z=B.currentTarget.getBoundingClientRect(),H=B.clientX-z.left,q=T(s.u0),j=T(s.u1),G;if(Math.abs(H-q)<=IR)G="left";else if(Math.abs(H-j)<=IR)G="right";else if(H>q&&H<j)G="move";else{G="create";let Y=M(H);r(Mf({u0:Y,u1:Y+Wu},y,b))}g.current={mode:G,startX:H,startViewport:s},B.currentTarget.setPointerCapture(B.pointerId)},w=(B)=>{let z=g.current;if(!z)return;let H=B.currentTarget.getBoundingClientRect(),q=B.clientX-H.left,j=M(q)-M(z.startX),{u0:G,u1:Y}=z.startViewport;if(z.mode==="move")r(Mf({u0:G+j,u1:Y+j},y,b));else if(z.mode==="left")r(Mf({u0:Math.min(G+j,Y-Wu),u1:Y},y,b));else if(z.mode==="right")r(Mf({u0:G,u1:Math.max(Y+j,G+Wu)},y,b));else{let J=M(z.startX),X=M(q);r(Mf({u0:Math.min(J,X),u1:Math.max(J,X,Math.min(J,X)+Wu)},y,b))}},A=()=>{g.current=null};return RR.jsxDEV("canvas",{ref:d,width:Math.floor(p*devicePixelRatio),height:Math.floor(fi*devicePixelRatio),style:{width:"100%",height:fi,display:"block",cursor:"crosshair",borderRadius:4,border:"1px solid var(--border)",touchAction:"none"},role:"slider","aria-label":"Timeline overview brush","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round((s.u0-y)/v*100),tabIndex:-1,onPointerDown:I,onPointerMove:w,onPointerUp:A},void 0,!1,void 0,this)}function Mf(a,o,s){let r=Math.max(Wu,a.u1-a.u0);r=Math.min(r,s-o||Wu);let l=a.u0;if(l<o)l=o;if(l+r>s)l=s-r;return{u0:l,u1:l+r}}var kn=Q(dt(),1);var Te=Q(de(),1);function Fz(a){let o=[];if(typeof a==="string"){if(a.trim())o.push({kind:"text",text:a});return o}if(!Array.isArray(a))return o;for(let s of a){if(!s||typeof s!=="object"||!("type"in s))continue;if((s.type==="text"||s.type==="thinking")&&"text"in s&&typeof s.text==="string")o.push({kind:String(s.type),text:s.text})}return o}function DR({span:a,track:o,onClose:s,onOpenChildTrack:r}){let[l,u]=kn.useState(null),[d,p]=kn.useState(!1),[h,g]=kn.useState(null),[y,b]=kn.useState(!1),v=kn.useRef(null),T=kn.useRef(null);if(kn.useEffect(()=>{if(u(null),g(null),b(!1),!a||!o||!a.entryId)return;T.current=document.activeElement instanceof HTMLElement?document.activeElement:null,p(!0);let z=new AbortController;return vA(o.file,a.entryId,z.signal).then((H)=>{if(z.signal.aborted)return;u(H.entry),setTimeout(()=>v.current?.focus(),50)}).catch((H)=>{if(z.signal.aborted)return;g(H instanceof Error?H:Error(String(H)))}).finally(()=>{if(!z.signal.aborted)p(!1)}),()=>z.abort()},[a,o]),kn.useEffect(()=>{if(!a)return;let z=(H)=>{if(H.key==="Escape")s()};return window.addEventListener("keydown",z),()=>{window.removeEventListener("keydown",z),T.current?.focus()}},[a,s]),!a)return null;let M=(z)=>{if(z.target===z.currentTarget)s()},I=async()=>{try{await navigator.clipboard.writeText(JSON.stringify(l??a,null,2)),b(!0),setTimeout(()=>b(!1),1500)}catch{}},A=(l&&typeof l==="object"?l:{}).message,B=A?.usage;return Te.jsxDEV("div",{className:"stats-drawer-overlay",onClick:M,role:"presentation",children:Te.jsxDEV("div",{className:"stats-drawer",role:"dialog","aria-modal":"true","aria-label":"Span details",children:[Te.jsxDEV("div",{className:"stats-drawer-header",children:[Te.jsxDEV("div",{className:"stats-drawer-header-left",children:[Te.jsxDEV("h2",{className:"stats-drawer-title truncate",style:{maxWidth:320},children:a.label},void 0,!1,void 0,this),Te.jsxDEV(ya,{variant:a.isError?"danger":"success",children:a.kind},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{style:{display:"flex",gap:8},children:[Te.jsxDEV("button",{type:"button",onClick:I,className:"stats-drawer-close-btn","aria-label":"Copy raw JSON",title:"Copy raw JSON",children:y?Te.jsxDEV(pl,{size:16},void 0,!1,void 0,this):Te.jsxDEV(gl,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this),Te.jsxDEV("button",{ref:v,type:"button",onClick:s,className:"stats-drawer-close-btn","aria-label":"Close span details",children:Te.jsxDEV(Ys,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-body",children:Te.jsxDEV("div",{className:"stats-drawer-content",children:[Te.jsxDEV("div",{className:"stats-drawer-metrics-grid",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Duration"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(a.end-a.start)},void 0,!1,void 0,this),a.unterminated&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:"unterminated"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Start"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",style:{fontSize:13},children:new Date(a.start).toLocaleTimeString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a.kind==="model"&&Te.jsxDEV(Te.Fragment,{children:[Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Tokens"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:Ce(a.tokens??0)},void 0,!1,void 0,this),B&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:[Ce(B.input??0)," in · ",Ce(B.output??0)," out ·"," ",Ce(B.cacheRead??0)," cached"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Cost"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:["$",(a.cost??0).toFixed(4)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"TTFT"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(a.ttft??null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Model"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",style:{fontSize:12},children:A?.model??a.model??"-"},void 0,!1,void 0,this),A?.provider&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:A.provider},void 0,!1,void 0,this),A?.stopReason&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:["stop: ",A.stopReason]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A?.errorMessage&&Te.jsxDEV("div",{className:"stats-drawer-error-block",children:[Te.jsxDEV("div",{className:"stats-drawer-error-label",children:"Error Message"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-error-text",children:A.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a.kind==="subagent"&&Te.jsxDEV("div",{children:[a.detail&&Te.jsxDEV("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:12,background:"var(--surface-2)",borderRadius:6,padding:10},children:a.detail},void 0,!1,void 0,this),a.childTrackId&&r&&Te.jsxDEV("button",{type:"button",className:"stats-segmented-control-btn",style:{marginTop:8,border:"1px solid var(--border)",borderRadius:6},onClick:()=>r(a.childTrackId??""),children:["Open child track ",a.childTrackId]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a.kind==="tool"&&a.detail&&Te.jsxDEV("div",{children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Args"},void 0,!1,void 0,this),Te.jsxDEV("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:12,background:"var(--surface-2)",borderRadius:6,padding:10},children:a.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d&&Te.jsxDEV("div",{children:[Te.jsxDEV(Ua,{variant:"rect",width:"100%",height:80,className:"mb-4"},void 0,!1,void 0,this),Te.jsxDEV(Ua,{variant:"rect",width:"100%",height:160},void 0,!1,void 0,this)]},void 0,!0,void 0,this),h&&Te.jsxDEV("div",{className:"stats-drawer-error",children:[Te.jsxDEV("p",{className:"stats-drawer-error-title",children:"Failed to load entry"},void 0,!1,void 0,this),Te.jsxDEV("p",{className:"stats-drawer-error-message",children:h.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!d&&l!==null&&Fz(A?.content).map((z,H)=>Te.jsxDEV("div",{children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",style:{textTransform:"capitalize"},children:z.kind},void 0,!1,void 0,this),Te.jsxDEV("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:12,background:"var(--surface-2)",borderRadius:6,padding:10,maxHeight:360,overflowY:"auto"},children:z.text},void 0,!1,void 0,this)]},`${z.kind}-${H}`,!0,void 0,this)),!d&&l!==null&&Te.jsxDEV("div",{className:"stats-drawer-json-blocks",children:Te.jsxDEV(wf,{data:l,title:"Raw Entry",initialCollapsed:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var If=Q(de(),1);function _R({summary:a}){let o=[{label:"Wall",value:rt(a.wallMs)},{label:"Model",value:rt(a.modelMs)},{label:"Tools",value:rt(a.toolMs)},{label:"Idle",value:rt(a.idleMs)},{label:"Turns",value:Ce(a.turns)},{label:"Requests",value:Ce(a.requests)},{label:"Tool Calls",value:Ce(a.toolCalls)},{label:"Agents",value:Ce(a.subagents)},{label:"Tokens",value:lt(a.totalTokens)},{label:"Cost",value:ea(a.costTotal,a.unpricedRequests)}];return If.jsxDEV("div",{className:"stats-trace-summary",children:o.map((s)=>If.jsxDEV("div",{className:"stats-trace-summary-cell",children:[If.jsxDEV("span",{className:"stats-trace-summary-label",children:s.label},void 0,!1,void 0,this),If.jsxDEV("span",{className:"stats-trace-summary-value",children:s.value},void 0,!1,void 0,this)]},s.label,!0,void 0,this))},void 0,!1,void 0,this)}var jt=Q(dt(),1);function Qm(a,o){let s=a.length,r=[o[0],o[s-1]],l=(u,d)=>{let p=0,h=s-1;while(p<h){let g=p+h+1>>1;if(u[g]<=d)p=g;else h=g-1}return Math.min(p,s-2)};return{toU(u){if(u<=a[0])return o[0];if(u>=a[s-1])return o[s-1];let d=l(a,u),p=a[d+1]-a[d];if(p<=0)return o[d];return o[d]+(u-a[d])/p*(o[d+1]-o[d])},toT(u){if(u<=o[0])return a[0];if(u>=o[s-1])return a[s-1];let d=l(o,u),p=o[d+1]-o[d];if(p<=0)return a[d];return a[d]+(u-o[d])/p*(a[d+1]-a[d])},domain:r,gaps:[]}}function qz(a){let o=[];for(let s of a)for(let r of s.spans)o.push([r.start,r.end]);return o.sort((s,r)=>s[0]-r[0]),o}function Vz(a){let{POSITIVE_INFINITY:o,NEGATIVE_INFINITY:s}=Number;for(let r of a)for(let l of r.spans){if(l.start<o)o=l.start;if(l.end>s)s=l.end}if(!Number.isFinite(o))return[0,1];return[o,Math.max(s,o+1)]}function ER(a,o,s){let r=[...new Set(a.filter((p)=>p>=o&&p<=s))].sort((p,h)=>p-h);if(r[0]!==o)r.unshift(o);if(r[r.length-1]!==s)r.push(s);if(r.length<2)return Qm([o,s],[o,s]);let u=(s-o)/(r.length-1),d=r.map((p,h)=>o+h*u);return Qm(r,d)}function jz(a,o,s){let r=qz(a),l=[];for(let[y,b]of r){let v=y-2000,T=b+2000,M=l[l.length-1];if(M&&v<=M[1]){if(T>M[1])M[1]=T}else l.push([v,T])}if(l.length===0)l.push([o,s]);l[0][0]=Math.max(l[0][0],o),l[l.length-1][1]=Math.min(Math.max(l[l.length-1][1],l[l.length-1][0]),s);let u=[],d=[],p=[],h=l[0][0];for(let y=0;y<l.length;y++){let[b,v]=l[y];if(y===0)u.push(b),d.push(h);else{let T=l[y-1][1],M=b-T;if(M>30000)h+=8000,p.push({t0:T,t1:b,uMid:h-4000});else h+=M;u.push(b),d.push(h)}h+=Math.max(0,v-b),u.push(v),d.push(h)}return{...Qm(u,d),gaps:p}}function OR(a,o,s){let[r,l]=Vz(a);if(o==="turns"){let d=(a.find((p)=>p.id==="main")?.spans??[]).filter((p)=>p.kind==="turn").map((p)=>p.start);return ER(d,r,l)}if(o==="calls"){let u=[];for(let d of a)for(let p of d.spans)if(p.kind==="model"||p.kind==="tool"||p.kind==="background")u.push(p.start,p.end);return ER(u,r,l)}if(s)return jz(a,r,l);return Qm([r,l],[r,l])}var Gz=90;function Xz(a){let o=10**Math.floor(Math.log10(Math.max(a,1)));for(let s of[1,2,5,10])if(o*s>=a)return o*s;return o*10}function Yz(a){let o=new Date(a),s=String(o.getHours()).padStart(2,"0"),r=String(o.getMinutes()).padStart(2,"0"),l=String(o.getSeconds()).padStart(2,"0");return`${s}:${r}:${l}`}function Zu(a){let o=a<0?"-":"+",s=Math.abs(a),r=Math.floor(s/3600000),l=Math.floor(s%3600000/60000),u=Math.floor(s%60000/1000),d=Math.floor(s%1000),p=s%1000!==0,h=`${String(l).padStart(2,"0")}:${String(u).padStart(2,"0")}${p?".":""}${p?String(d).padStart(3,"0"):""}`;return r>0?`${o}${r}:${h}`:`${o}${h}`}function PR(a,o,s,r){let l=s-o;if(l<=0||r<=0)return[];let u=[],d=a.domain[0],p=Xz(l*Gz/r),h=d+Math.ceil((o-d)/p)*p,g=0;for(let y=h;y<=s&&g<200;y+=p,g++){let b=a.toT(y),v=Math.round((y-d)/p)%5===0;u.push({u:y,label:v?Yz(b):Zu(y-d),major:v})}return u}var xt=Q(de(),1),Qs=28,l0=22,So=18,BR=3,$z=14,NR=200,i0=10,Wz=2,Zz=4,Qz=56,zR=3,Kz=[{kind:"turn",label:"Input"},{kind:"model",label:"Model"},{kind:"tool",label:"Tools"},{kind:"subagent",label:"Agents"},{kind:"background",label:"Bg"}];function Jz(a,o){let s=new Map(a.map((h)=>[h.id,h])),r=new Set;for(let h of a)if(h.parentId)r.add(h.parentId);let l=(h)=>{let g=h.parentId;while(g){if(o.has(g))return!0;g=s.get(g)?.parentId??null}return!1},u=[],d=[],p=Qs+6;for(let h of a){if(l(h))continue;let g=h.id==="main"?0:h.id.split("/").length,y={track:h,depth:g,hasChildren:r.has(h.id),headerY:p,lanes:[],y0:p,y1:p};p+=l0;for(let{kind:b,label:v}of Kz){let T=h.spans.filter((w)=>w.kind===b),M=b==="turn"||b==="model"||b==="tool";if(T.length===0&&!(h.id==="main"&&M))continue;let I={track:h,kind:b,label:v,y:p,spans:T};y.lanes.push(I),d.push(I),p+=So+BR}y.y1=p-BR,u.push(y),p+=$z}return{blocks:u,lanes:d,totalHeight:Math.max(p,Qs+48)}}function HR({tracks:a,scale:o,viewport:s,onViewportChange:r,selection:l,onSelect:u,search:d,collapsed:p,onToggleCollapse:h,traceStart:g}){let y=$t(),b=$u[y],v=jt.useRef(null),T=jt.useRef(null),[M,I]=jt.useState(800),[w,A]=jt.useState(null),B=jt.useRef([]),z=jt.useRef(null),H=jt.useRef(null),q=jt.useRef(s);q.current=s;let j=jt.useMemo(()=>Jz(a,p),[a,p]);jt.useEffect(()=>{let k=v.current;if(!k)return;let W=new ResizeObserver((ee)=>{let ne=Math.max(100,Math.floor(ee[0].contentRect.width-NR));I(ne)});return W.observe(k),()=>W.disconnect()},[]);let G=jt.useCallback((k,W)=>{let[ee,ne]=o.domain,te=Math.max(i0,W-k);te=Math.min(te,ne-ee||i0);let le=k;if(le<ee)le=ee;if(le+te>ne)le=ne-te;return{u0:le,u1:le+te}},[o]),Y=jt.useCallback((k)=>{q.current=k,r(k)},[r]),J=jt.useCallback((k,W)=>{let ee=M,{u0:ne,u1:te}=q.current,le=te-ne,fe=W===null?0.5:Math.min(1,Math.max(0,W/ee)),et=ne+le*fe,tt=le*k;Y(G(et-tt*fe,et+tt*(1-fe)))},[M,Y,G]),X=jt.useCallback((k)=>{let{u0:W,u1:ee}=q.current;Y(G(W+k,ee+k))},[Y,G]),se=jt.useCallback((k)=>{let W=o.toU(k.start),ee=o.toU(k.end),ne=Math.max((ee-W)*0.1,i0/2);Y(G(W-ne,ee+ne))},[o,Y,G]);jt.useEffect(()=>{let k=T.current;if(!k)return;let W=(ee)=>{ee.preventDefault();let ne=k.getBoundingClientRect(),te=ee.clientX-ne.left;H.current=te,A(null);let le=k.clientWidth||1,fe=()=>q.current.u1-q.current.u0;if(ee.shiftKey){let et=Math.abs(ee.deltaY)>=Math.abs(ee.deltaX)?ee.deltaY:ee.deltaX;X(et/le*fe());return}if(ee.deltaX!==0)X(ee.deltaX/le*fe());if(ee.deltaY!==0)J(1.0015**ee.deltaY,te)};return k.addEventListener("wheel",W,{passive:!1}),()=>k.removeEventListener("wheel",W)},[J,X]);let ge=jt.useCallback((k,W)=>{let ee=T.current;if(!ee)return null;let ne=ee.getBoundingClientRect(),te=k-ne.left,le=W-ne.top,fe=B.current;for(let et=fe.length-1;et>=0;et--){let tt=fe[et];if(te>=tt.x&&te<=tt.x+tt.w&&le>=tt.y&&le<=tt.y+tt.h)return tt}return null},[]),be=(k)=>{k.currentTarget.setPointerCapture(k.pointerId),z.current={pointerId:k.pointerId,lastX:k.clientX,moved:!1},k.currentTarget.focus()},Se=(k)=>{let W=k.currentTarget.getBoundingClientRect();H.current=k.clientX-W.left;let ee=z.current;if(ee&&ee.pointerId===k.pointerId){let te=k.clientX-ee.lastX;if(Math.abs(te)>0){if(Math.abs(te)>2)ee.moved=!0;ee.lastX=k.clientX;let le=q.current.u1-q.current.u0;X(-te/(M||1)*le)}A(null);return}let ne=ge(k.clientX,k.clientY);A(ne?{hit:ne,clientX:k.clientX,clientY:k.clientY}:null)},K=(k)=>{let W=z.current;if(z.current=null,W?.moved)return;let ee=ge(k.clientX,k.clientY);if(ee?.kind==="span")u(ee.span.id);else u(null)},pe=(k)=>{let W=ge(k.clientX,k.clientY);if(W?.kind==="span")se(W.span)},ye=jt.useCallback((k)=>{if(!l)return;for(let W of j.lanes){let ee=W.spans.findIndex((le)=>le.id===l);if(ee===-1)continue;let ne=W.spans[ee+k];if(!ne)return;u(ne.id);let te=o.toU(ne.start);if(te<s.u0||te>s.u1){let le=s.u1-s.u0;r(G(te-le/2,te+le/2))}return}},[l,j,u,o,s,r,G]),Ue=(k)=>{let W=s.u1-s.u0;switch(k.key){case"w":case"W":J(0.7692307692307692,H.current);break;case"s":case"S":J(1.3,H.current);break;case"a":case"A":X(-W*0.2);break;case"d":case"D":X(W*0.2);break;case"0":r({u0:o.domain[0],u1:o.domain[1]});break;case"f":case"F":{if(!l)break;let ee=a.flatMap((ne)=>ne.spans).find((ne)=>ne.id===l);if(ee)se(ee);break}case"Escape":u(null);break;case",":ye(-1);break;case".":ye(1);break;default:return}k.preventDefault()};jt.useEffect(()=>{T.current?.focus({preventScroll:!0})},[]),jt.useEffect(()=>{let k=T.current;if(!k)return;let W=requestAnimationFrame(()=>{eH(k,j,o,s,b,{width:M,selection:l,hoverId:w?.hit.kind==="span"?w.hit.span.id:null,search:d,hits:B})});return()=>cancelAnimationFrame(W)},[j,o,s,b,M,l,w,d]);let He=w?tH(w,g):null;return xt.jsxDEV("div",{ref:v,className:"stats-trace-timeline",children:[xt.jsxDEV("div",{style:{width:NR,flexShrink:0,position:"relative",height:j.totalHeight},children:j.blocks.map((k)=>xt.jsxDEV("div",{children:[xt.jsxDEV("div",{style:{position:"absolute",top:k.headerY,left:4+k.depth*14,right:8,height:l0,display:"flex",alignItems:"center",gap:5,minWidth:0},children:[k.hasChildren?xt.jsxDEV("button",{type:"button",onClick:()=>h(k.track.id),"aria-label":p.has(k.track.id)?`Expand ${k.track.label}`:`Collapse ${k.track.label}`,className:"stats-trace-chevron",children:p.has(k.track.id)?xt.jsxDEV(hl,{size:12},void 0,!1,void 0,this):xt.jsxDEV(Xs,{size:12},void 0,!1,void 0,this)},void 0,!1,void 0,this):xt.jsxDEV("span",{style:{width:12,flexShrink:0}},void 0,!1,void 0,this),xt.jsxDEV("span",{className:"stats-trace-gutter-track truncate",style:{minWidth:0},children:k.track.label},void 0,!1,void 0,this),k.track.model&&xt.jsxDEV("span",{className:"stats-trace-gutter-model truncate",style:{flexShrink:1,minWidth:0},children:k.track.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k.lanes.map((W)=>xt.jsxDEV("div",{className:"stats-trace-gutter-lane",style:{top:W.y,left:20+k.depth*14,lineHeight:`${So}px`},children:W.label},`${W.track.id}:${W.kind}`,!1,void 0,this))]},k.track.id,!0,void 0,this))},void 0,!1,void 0,this),xt.jsxDEV("canvas",{ref:T,className:"stats-trace-canvas",width:Math.floor(M*devicePixelRatio),height:Math.floor(j.totalHeight*devicePixelRatio),style:{width:M,height:j.totalHeight},tabIndex:0,role:"application","aria-label":"Trace timeline. W and S zoom, A and D pan, 0 fits all, F focuses the selection.",onPointerDown:be,onPointerMove:Se,onPointerUp:K,onPointerLeave:()=>{H.current=null,A(null)},onDoubleClick:pe,onKeyDown:Ue},void 0,!1,void 0,this),He]},void 0,!0,void 0,this)}function Af(a,o,s,r,l){if(a.beginPath(),r>=zR*2+1)a.roundRect(o,s,r,l,zR);else a.rect(o,s,r,l)}function eH(a,o,s,r,l,u){let d=a.getContext("2d");if(!d)return;let{width:p,selection:h,hoverId:g,search:y,hits:b}=u,v=o.totalHeight,T=devicePixelRatio;d.setTransform(T,0,0,T,0,0),d.clearRect(0,0,p,v);let{u0:M,u1:I}=r,w=Math.max(I-M,0.000000001),A=(H)=>(H-M)/w*p,B=y.trim().toLowerCase(),z=[];for(let H of o.blocks){let q=H.track.spans.filter((j)=>j.kind==="turn");for(let j=0;j<q.length;j++){let G=A(s.toU(q[j].start)),Y=j+1<q.length?A(s.toU(q[j+1].start)):p;if(Y<0||G>p)continue;if(j%2===1)d.fillStyle=l.turnBand,d.fillRect(Math.max(0,G),H.y0,Math.min(p,Y)-Math.max(0,G),H.y1-H.y0);if(G>=0&&G<=p)d.strokeStyle=l.grid,d.beginPath(),d.moveTo(Math.round(G)+0.5,H.y0),d.lineTo(Math.round(G)+0.5,H.y1),d.stroke()}}for(let H of s.gaps){let q=A(H.uMid);if(q<-24||q>p+24)continue;d.save(),d.strokeStyle=l.grid,d.setLineDash([2,4]),d.beginPath(),d.moveTo(q,Qs),d.lineTo(q,v),d.stroke(),d.restore(),d.fillStyle=l.tick,d.font="9px system-ui, sans-serif",d.textAlign="center",d.fillText(`⋯ ${rt(H.t1-H.t0)}`,q,Qs-4),d.textAlign="left"}d.font="9px system-ui, sans-serif";for(let H of PR(s,M,I,p)){let q=Math.round(A(H.u))+0.5;if(d.strokeStyle=l.grid,d.beginPath(),H.major)d.moveTo(q,4),d.lineTo(q,v);else d.moveTo(q,Qs-8),d.lineTo(q,Qs);if(d.stroke(),d.fillStyle=l.tick,H.major)d.fillText(H.label,q+4,11);else d.globalAlpha=0.75,d.fillText(H.label,q+3,Qs-10),d.globalAlpha=1}d.strokeStyle=l.grid,d.beginPath(),d.moveTo(0,Qs+0.5),d.lineTo(p,Qs+0.5),d.stroke();for(let H of o.lanes){let q=H.kind==="turn";for(let j of H.spans){let G=s.toU(j.start);if(G>I)break;let Y=s.toU(j.end);if(Y<M)continue;let J=A(G),X=Math.max(Wz,A(Y)-J),se=H.y,ge=B===""||`${j.label} ${j.detail??""}`.toLowerCase().includes(B),be=l.category[j.kind];if(d.globalAlpha=ge?1:0.3,q)d.fillStyle=`${be}3a`,Af(d,J,se,X,So),d.fill(),d.fillStyle=be,d.fillRect(J,se,2,So);else d.fillStyle=be,Af(d,J,se,X,So),d.fill();if(j.isError)d.fillStyle=`${l.error}55`,Af(d,J,se,X,So),d.fill(),d.fillStyle=l.error,d.fillRect(J,se,2,So);if(j.kind==="model"&&typeof j.ttft==="number"&&j.ttft>0&&X>20){let K=A(s.toU(j.start+j.ttft));if(K>J+1&&K<J+X-1)d.fillStyle="rgba(0,0,0,0.5)",d.fillRect(K,se+3,1,So-6)}if(j.unterminated)d.save(),d.strokeStyle=l.tick,d.setLineDash([2,2]),d.beginPath(),d.moveTo(J+X-0.5,se),d.lineTo(J+X-0.5,se+So),d.stroke(),d.restore();if(g===j.id)d.fillStyle="rgba(255,255,255,0.16)",Af(d,J,se,X,So),d.fill();if(h===j.id)d.strokeStyle=l.selection,d.lineWidth=1.5,Af(d,J-1,se-1,X+2,So+2),d.stroke(),d.lineWidth=1;if(X>Qz)d.save(),d.beginPath(),d.rect(J+3,se,X-6,So),d.clip(),d.fillStyle=q?l.tick:l.spanText,d.font="10px system-ui, sans-serif",d.fillText(j.label,J+5,se+So-5),d.restore();d.globalAlpha=1;let Se=Math.max(X,Zz);z.push({kind:"span",x:J-(Se-X)/2,y:se,w:Se,h:So,span:j,track:H.track})}}for(let H of o.blocks)for(let q of H.track.markers){let j=A(s.toU(q.time));if(j<-6||j>p+6)continue;let G=H.headerY+l0/2;d.fillStyle=l.marker,d.beginPath(),d.moveTo(j,G-4),d.lineTo(j+4,G),d.lineTo(j,G+4),d.lineTo(j-4,G),d.closePath(),d.fill(),z.push({kind:"marker",x:j-5,y:G-5,w:10,h:10,marker:q,track:H.track})}b.current=z}function tH(a,o){let s=Math.min(a.clientX+14,window.innerWidth-320),r=a.clientY+16>window.innerHeight-140?a.clientY-120:a.clientY+16,l={position:"fixed",left:s,top:r,zIndex:60,maxWidth:300,pointerEvents:"none",background:"var(--surface-2)",border:"1px solid var(--border-strong)",borderRadius:6,padding:"7px 10px",fontSize:11,lineHeight:1.5,boxShadow:"0 1px 2px rgba(0,0,0,0.2), 0 4px 16px rgba(0,0,0,0.25)"};if(a.hit.kind==="marker"){let{marker:d}=a.hit;return xt.jsxDEV("div",{style:l,children:[xt.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:d.label},void 0,!1,void 0,this),xt.jsxDEV("div",{className:"stats-text-muted",children:[new Date(d.time).toLocaleTimeString()," (",Zu(d.time-o),")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let{span:u}=a.hit;return xt.jsxDEV("div",{style:l,children:[xt.jsxDEV("div",{className:"stats-font-medium stats-text-primary truncate",children:u.label},void 0,!1,void 0,this),xt.jsxDEV("div",{className:"stats-text-muted",children:[rt(u.end-u.start)," · ",new Date(u.start).toLocaleTimeString()," (",Zu(u.start-o),")",u.unterminated?" · unterminated":""]},void 0,!0,void 0,this),u.kind==="model"&&xt.jsxDEV("div",{className:"stats-text-muted",children:[u.tokens!==void 0&&xt.jsxDEV(xt.Fragment,{children:[u.tokens.toLocaleString()," tok"]},void 0,!0,void 0,this),u.cost!==void 0&&xt.jsxDEV(xt.Fragment,{children:[" · $",u.cost.toFixed(4)]},void 0,!0,void 0,this),u.ttft!==void 0&&xt.jsxDEV(xt.Fragment,{children:[" · TTFT ",rt(u.ttft)]},void 0,!0,void 0,this),u.isError&&xt.jsxDEV(xt.Fragment,{children:" · error"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u.kind==="subagent"&&u.model&&xt.jsxDEV("div",{className:"stats-text-muted",children:u.model},void 0,!1,void 0,this),u.detail&&xt.jsxDEV("div",{className:"stats-text-secondary",style:{wordBreak:"break-word"},children:u.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ks=Q(dt(),1);var Aa=Q(de(),1),Qu=28,UR=20,aH=340;function oH(a){let o=[];for(let s of a){let r=s.id==="main"?0:s.id.split("/").length;for(let l of s.spans)o.push({key:l.id,time:l.start,span:l,track:s,depth:r});for(let l=0;l<s.markers.length;l++){let u=s.markers[l];o.push({key:`${s.id}:marker:${l}`,time:u.time,marker:u,track:s,depth:r})}}return o.sort((s,r)=>s.time-r.time),o}function FR({tracks:a,selection:o,onSelect:s,search:r,traceStart:l}){let u=$t(),d=$u[u],p=Ks.useRef(null),[h,g]=Ks.useState(0),y=Ks.useMemo(()=>oH(a),[a]),b=Ks.useMemo(()=>{let I=r.trim().toLowerCase();if(!I)return y;return y.filter((w)=>(w.span?`${w.span.label} ${w.span.detail??""}`:w.marker?.label??"").toLowerCase().includes(I))},[y,r]);Ks.useEffect(()=>{if(!o)return;let I=p.current;if(!I)return;let w=b.findIndex((B)=>B.span?.id===o);if(w===-1)return;let A=w*Qu;if(A<I.scrollTop||A+Qu>I.scrollTop+I.clientHeight)I.scrollTop=Math.max(0,A-I.clientHeight/2)},[o,b]);let v=Math.max(0,Math.floor(h/Qu)-UR),T=Math.min(b.length,Math.ceil((h+aH)/Qu)+UR),M=b.slice(v,T);return Aa.jsxDEV("div",{ref:p,onScroll:(I)=>g(I.currentTarget.scrollTop),className:"stats-trace-list",children:[Aa.jsxDEV("div",{style:{height:b.length*Qu,position:"relative"},children:Aa.jsxDEV("div",{style:{position:"absolute",top:v*Qu,left:0,right:0},children:M.map((I)=>{let w=I.span,A=w!==void 0&&w.id===o,B=I.span?d.category[I.span.kind]:d.marker,z=I.span?.label??I.marker?.label??"",H=I.span?.detail,q=I.span?rt(I.span.end-I.span.start):"",j=I.span?.kind??I.marker?.kind??"",G=Aa.jsxDEV(Aa.Fragment,{children:[Aa.jsxDEV("span",{className:"stats-trace-kind",style:{color:B,background:`${B}1c`},children:j},void 0,!1,void 0,this),I.depth>0&&Aa.jsxDEV("span",{className:"stats-text-muted truncate",style:{flexShrink:0,maxWidth:90,fontSize:9},title:I.track.label,children:I.track.id},void 0,!1,void 0,this),Aa.jsxDEV("span",{className:"stats-text-primary truncate",style:{fontSize:11,minWidth:0,flexShrink:1},children:z},void 0,!1,void 0,this),H&&Aa.jsxDEV("span",{className:"stats-text-muted truncate",style:{fontSize:10,minWidth:0,flex:1},children:H},void 0,!1,void 0,this),Aa.jsxDEV("span",{className:"stats-trace-row-meta",children:[I.span?.isError&&Aa.jsxDEV("span",{style:{color:d.error},children:"error"},void 0,!1,void 0,this),Aa.jsxDEV("span",{children:q},void 0,!1,void 0,this),Aa.jsxDEV("span",{children:Zu(I.time-l)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y={paddingLeft:12+I.depth*12};return w?Aa.jsxDEV("button",{type:"button",onClick:()=>s(w.id),className:"stats-trace-row","data-selected":A?"true":"false",style:Y,children:G},I.key,!1,void 0,this):Aa.jsxDEV("div",{className:"stats-trace-row stats-trace-row-static",style:Y,children:G},I.key,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),b.length===0&&Aa.jsxDEV("div",{className:"stats-text-muted",style:{padding:16,fontSize:12},children:"No matching events"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ft=Q(de(),1),nH=[{value:"time",label:"Duration",title:"Real wall-clock time"},{value:"turns",label:"Turns",title:"Equal width per user turn"},{value:"calls",label:"Calls",title:"Equal width per model/tool call boundary"}];function qR({file:a,active:o,onBack:s}){let{data:r,error:l,loading:u,refetch:d,refreshing:p}=Vt(["trace",a],(te)=>xA(a,te),{pollMs:15000,enabled:o}),[h,g]=wt.useState("time"),[y,b]=wt.useState(!0),[v,T]=wt.useState(null),[M,I]=wt.useState(!1),[w,A]=wt.useState(""),[B,z]=wt.useState(0),[H,q]=wt.useState(new Set),[j,G]=wt.useState(null),Y=wt.useMemo(()=>r?.tracks??[],[r]),J=wt.useMemo(()=>OR(Y,h,y),[Y,h,y]),X=wt.useRef(J),se=wt.useRef(null);wt.useEffect(()=>{if(!r)return;if(se.current===r.file)return;se.current=r.file,T(null),A(""),G(null);let te=new Set;for(let le of r.tracks)if((le.id==="main"?0:le.id.split("/").length)>=1)te.add(le.id);q(te)},[r]),wt.useEffect(()=>{let te=X.current;X.current=J,G((le)=>{if(!le)return le;let fe=te.toT(le.u0),et=te.toT(le.u1),tt=J.toU(fe),Gt=J.toU(et);return Gt-tt>0?{u0:tt,u1:Gt}:null})},[J]);let ge=j??{u0:J.domain[0],u1:J.domain[1]},be=wt.useMemo(()=>{let te=[];for(let le of Y)for(let fe of le.spans)te.push({span:fe,track:le});return te.sort((le,fe)=>le.span.start-fe.span.start),te},[Y]),Se=wt.useMemo(()=>{let te=w.trim().toLowerCase();if(!te)return[];return be.filter(({span:le})=>`${le.label} ${le.detail??""}`.toLowerCase().includes(te))},[be,w]),K=wt.useCallback((te)=>{let le=J.toU(te.start),fe=J.toU(te.end);G((et)=>{let tt=et??{u0:J.domain[0],u1:J.domain[1]};if(le>=tt.u0&&fe<=tt.u1)return et;let Gt=tt.u1-tt.u0,er=(le+fe)/2,[me,cs]=J.domain,oo=er-Gt/2;if(oo<me)oo=me;if(oo+Gt>cs)oo=Math.max(me,cs-Gt);return{u0:oo,u1:oo+Gt}})},[J]),pe=wt.useCallback((te)=>{T(te);let le=be.find(({span:fe})=>fe.id===te);if(le)K(le.span)},[be,K]),ye=wt.useCallback((te)=>{T(te),I(te!==null)},[]),Ue=wt.useCallback((te)=>{if(Se.length===0)return;let le=((B+te)%Se.length+Se.length)%Se.length;z(le),pe(Se[le].span.id)},[Se,B,pe]),He=wt.useCallback((te)=>{q((le)=>{let fe=new Set(le);if(fe.has(te))fe.delete(te);else fe.add(te);return fe})},[]),k=wt.useMemo(()=>{if(!v)return null;return be.find(({span:te})=>te.id===v)??null},[v,be]),W=wt.useCallback((te)=>{let le=Y.find((et)=>et.id===te),fe=le?.spans[0];if(q((et)=>{let tt=new Set(et),Gt=le;while(Gt?.parentId)tt.delete(Gt.parentId),Gt=Y.find((er)=>er.id===Gt?.parentId);return tt}),fe)pe(fe.id)},[Y,pe]),ee=wt.useCallback((te)=>{if(!te){q(new Set);return}let le=new Set;for(let fe of Y)if(fe.id!=="main")le.add(fe.id);q(le)},[Y]),ne=r?.startedAt??0;return ft.jsxDEV("div",{className:"stats-trace-view",children:[ft.jsxDEV("div",{className:"stats-trace-header",children:[ft.jsxDEV("button",{type:"button",onClick:s,className:"stats-trace-back",children:[ft.jsxDEV(tf,{size:13,"aria-hidden":"true"},void 0,!1,void 0,this),"Sessions"]},void 0,!0,void 0,this),ft.jsxDEV("h2",{className:"stats-trace-title",style:{maxWidth:480,margin:0},children:r?.title??a.split("/").pop()},void 0,!1,void 0,this),r?.cwd&&ft.jsxDEV("span",{className:"stats-trace-cwd",children:r.cwd},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>void d(),className:"stats-trace-icon-btn","aria-label":"Refresh trace",title:"Refresh trace",style:{marginLeft:"auto"},children:ft.jsxDEV(bl,{size:14,className:p?"stats-spin":void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&ft.jsxDEV(ft.Fragment,{children:[ft.jsxDEV(_R,{summary:r.summary},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"stats-trace-toolbar",children:[ft.jsxDEV(Ws,{options:nH,value:h,onChange:g},void 0,!1,void 0,this),h==="time"&&ft.jsxDEV("label",{className:"stats-trace-check",children:[ft.jsxDEV("input",{type:"checkbox",checked:y,onChange:(te)=>b(te.target.checked)},void 0,!1,void 0,this),"Compress idle"]},void 0,!0,void 0,this),ft.jsxDEV("div",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[ft.jsxDEV("input",{type:"search",value:w,onChange:(te)=>{A(te.target.value),z(0)},placeholder:"Search spans…","aria-label":"Search spans",spellCheck:!1,className:"stats-trace-input",style:{width:190}},void 0,!1,void 0,this),w.trim()&&ft.jsxDEV(ft.Fragment,{children:[ft.jsxDEV("span",{className:"stats-text-muted",style:{fontSize:11,fontVariantNumeric:"tabular-nums"},children:Se.length===0?"0":`${B%Math.max(Se.length,1)+1}/${Se.length}`},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>Ue(-1),className:"stats-trace-icon-btn","aria-label":"Previous match",disabled:Se.length===0,children:"‹"},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>Ue(1),className:"stats-trace-icon-btn","aria-label":"Next match",disabled:Se.length===0,children:"›"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV("div",{style:{marginLeft:"auto",display:"inline-flex",gap:6},children:[ft.jsxDEV("button",{type:"button",onClick:()=>ee(!1),className:"stats-trace-back",children:"Expand all"},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>ee(!0),className:"stats-trace-back",children:"Collapse all"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV("div",{className:"stats-trace-timeline-card",children:[ft.jsxDEV(AR,{tracks:Y,scale:J,viewport:ge,onViewportChange:G},void 0,!1,void 0,this),ft.jsxDEV(HR,{tracks:Y,scale:J,viewport:ge,onViewportChange:G,selection:v,onSelect:ye,search:w,collapsed:H,onToggleCollapse:He,traceStart:ne},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"stats-trace-toolbar-hint",style:{marginLeft:0},children:"W/S zoom · A/D pan · drag pan · wheel zoom · 0 fit · F focus selection · dbl-click focus · Esc deselect"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV(FR,{tracks:Y,selection:v,onSelect:(te)=>{pe(te),I(!0)},search:w,traceStart:ne},void 0,!1,void 0,this),ft.jsxDEV(MR,{toolStats:r.summary.toolStats},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),ft.jsxDEV(DR,{span:M?k?.span??null:null,track:k?.track??null,onClose:()=>I(!1),onOpenChildTrack:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var kt=Q(de(),1);function sH({models:a}){let o=a.slice(0,3);return kt.jsxDEV("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[o.map((s)=>kt.jsxDEV("span",{className:"stats-text-muted truncate",style:{fontSize:10,border:"1px solid var(--border)",borderRadius:999,padding:"1px 6px",maxWidth:140},children:s},s,!1,void 0,this)),a.length>3&&kt.jsxDEV("span",{className:"stats-text-muted",style:{fontSize:10},children:["+",a.length-3]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function VR({active:a,session:o,onOpenSession:s,refreshTrigger:r}){let[l,u]=Rf.useState(""),{data:d,error:p,loading:h}=Vt(["sessions",r],(v)=>yA(200,void 0,v),{pollMs:30000,enabled:a&&o===null}),g=Rf.useMemo(()=>{if(!d)return[];let v=l.trim().toLowerCase();if(!v)return d;return d.filter((T)=>(T.title??"").toLowerCase().includes(v)||T.folder.toLowerCase().includes(v)||T.models.some((M)=>M.toLowerCase().includes(v)))},[d,l]),y=Rf.useMemo(()=>[{key:"title",header:"Title",render:(v)=>kt.jsxDEV("div",{className:"stats-font-medium stats-text-primary truncate",style:{maxWidth:280},children:v.title??v.file.split("/").pop()},void 0,!1,void 0,this)},{key:"folder",header:"Project",render:(v)=>kt.jsxDEV("span",{className:"stats-text-muted truncate",style:{maxWidth:160,display:"inline-block"},children:v.folder.split("/").slice(-2).join("/")},void 0,!1,void 0,this)},{key:"started",header:"Started",render:(v)=>za(v.startedAt)},{key:"duration",header:"Duration",numeric:!0,render:(v)=>rt(v.endedAt-v.startedAt)},{key:"requests",header:"Requests",numeric:!0,render:(v)=>v.requests},{key:"toolCalls",header:"Tools",numeric:!0,render:(v)=>v.toolCalls},{key:"subagents",header:"Agents",numeric:!0,render:(v)=>v.subagents},{key:"tokens",header:"Tokens",numeric:!0,render:(v)=>lt(v.totalTokens)},{key:"cost",header:"Cost",numeric:!0,render:(v)=>ea(v.costTotal,v.unpricedRequests)},{key:"models",header:"Models",render:(v)=>kt.jsxDEV(sH,{models:v.models},void 0,!1,void 0,this)}],[]),b=(v,T)=>kt.jsxDEV("div",{className:"stats-mobile-card",onClick:T,children:[kt.jsxDEV("div",{className:"stats-mobile-card-header",children:kt.jsxDEV("div",{className:"stats-font-semibold stats-text-primary truncate",children:v.title??v.file.split("/").pop()},void 0,!1,void 0,this)},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-grid",children:[kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Started"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:za(v.startedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(v.endedAt-v.startedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Requests"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:v.requests},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Cost"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:ea(v.costTotal,v.unpricedRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(o!==null)return kt.jsxDEV(qR,{file:o,active:a,onBack:()=>s(null)},void 0,!1,void 0,this);return kt.jsxDEV("div",{className:"stats-route-container",children:kt.jsxDEV(ut,{title:"Sessions",subtitle:"Recent sessions with subagent activity folded in — click one to open its trace",actions:kt.jsxDEV("input",{type:"search",value:l,onChange:(v)=>u(v.target.value),placeholder:"Filter by title, project, model…","aria-label":"Filter sessions",spellCheck:!1,className:"stats-trace-input",style:{width:220}},void 0,!1,void 0,this),children:kt.jsxDEV(Rt,{loading:h,error:p,data:d,children:kt.jsxDEV(Ma,{columns:y,data:g,keyExtractor:(v)=>v.file,onRowClick:(v)=>s(v.file),renderMobileCard:b,emptyText:"No sessions found — run a Sync to index recent activity"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Ra=Q(de(),1);function u0(){let{section:a,setSection:o,range:s,setRange:r,session:l,setSession:u}=EA(),[d,p]=Js.useState(0),[h,g]=Js.useState(null),[y,b]=Js.useState(()=>Date.now()),v=Js.useCallback((A)=>{if(A.success)p((B)=>B+1),b(Date.now())},[]),T=Js.useCallback(()=>g(null),[]),M=a,I=Js.useRef(new Set);I.current.add(M);let w=(A)=>{let B=A===M;switch(A){case"overview":return Ra.jsxDEV(SR,{active:B,range:s,refreshTrigger:d,onRequestClick:g},void 0,!1,void 0,this);case"requests":return Ra.jsxDEV(wR,{active:B,range:s,refreshTrigger:d,onRequestClick:g},void 0,!1,void 0,this);case"traces":return Ra.jsxDEV(VR,{active:B,session:l,onOpenSession:u,refreshTrigger:d},void 0,!1,void 0,this);case"errors":return Ra.jsxDEV(mR,{active:B,range:s,refreshTrigger:d,onRequestClick:g},void 0,!1,void 0,this);case"models":return Ra.jsxDEV(yR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"providers":return Ra.jsxDEV(CR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"tools":return Ra.jsxDEV(kR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"costs":return Ra.jsxDEV(pR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"behavior":return Ra.jsxDEV(fR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"projects":return Ra.jsxDEV(LR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"gain":return Ra.jsxDEV(gR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this)}};return Ra.jsxDEV(Ra.Fragment,{children:[Ra.jsxDEV(DA,{activeSection:M,onSectionChange:o,range:s,onRangeChange:r,updatedAt:y,onSyncComplete:v,children:[...I.current].map((A)=>Ra.jsxDEV("div",{hidden:A!==M,children:w(A)},A,!1,void 0,this))},void 0,!1,void 0,this),Ra.jsxDEV(rR,{id:h,onClose:T},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var GR=Q(de(),1),rH=jR.createRoot(document.getElementById("root"));rH.render(GR.jsxDEV(u0,{},void 0,!1,void 0,this));
|
|
257
|
+
`);return a}function lN(a,o){let{element:s,datasetIndex:r,index:l}=o,u=a.getDatasetMeta(r).controller,{label:d,value:p}=u.getLabelAndValue(l);return{chart:a,label:d,parsed:u.getParsed(l),raw:a.data.datasets[r].data[l],formattedValue:p,dataset:u.getDataset(),dataIndex:l,datasetIndex:r,element:s}}function MM(a,o){let s=a.chart.ctx,{body:r,footer:l,title:u}=a,{boxWidth:d,boxHeight:p}=o,h=ha(o.bodyFont),g=ha(o.titleFont),y=ha(o.footerFont),b=u.length,v=l.length,T=r.length,M=Na(o.padding),I=M.height,w=0,A=r.reduce((H,q)=>H+q.before.length+q.lines.length+q.after.length,0);if(A+=a.beforeBody.length+a.afterBody.length,b)I+=b*g.lineHeight+(b-1)*o.titleSpacing+o.titleMarginBottom;if(A){let H=o.displayColors?Math.max(p,h.lineHeight):h.lineHeight;I+=T*H+(A-T)*h.lineHeight+(A-1)*o.bodySpacing}if(v)I+=o.footerMarginTop+v*y.lineHeight+(v-1)*o.footerSpacing;let B=0,z=function(H){w=Math.max(w,s.measureText(H).width+B)};return s.save(),s.font=g.string,Lt(a.title,z),s.font=h.string,Lt(a.beforeBody.concat(a.afterBody),z),B=o.displayColors?d+2+o.boxPadding:0,Lt(r,(H)=>{Lt(H.before,z),Lt(H.lines,z),Lt(H.after,z)}),B=0,s.font=y.string,Lt(a.footer,z),s.restore(),w+=M.width,{width:w,height:I}}function uN(a,o){let{y:s,height:r}=o;if(s<r/2)return"top";else if(s>a.height-r/2)return"bottom";return"center"}function cN(a,o,s,r){let{x:l,width:u}=r,d=s.caretSize+s.caretPadding;if(a==="left"&&l+u+d>o.width)return!0;if(a==="right"&&l-u-d<0)return!0}function dN(a,o,s,r){let{x:l,width:u}=s,{width:d,chartArea:{left:p,right:h}}=a,g="center";if(r==="center")g=l<=(p+h)/2?"left":"right";else if(l<=u/2)g="left";else if(l>=d-u/2)g="right";if(cN(g,a,o,s))g="center";return g}function IM(a,o,s){let r=s.yAlign||o.yAlign||uN(a,s);return{xAlign:s.xAlign||o.xAlign||dN(a,o,s,r),yAlign:r}}function fN(a,o){let{x:s,width:r}=a;if(o==="right")s-=r;else if(o==="center")s-=r/2;return s}function pN(a,o,s){let{y:r,height:l}=a;if(o==="top")r+=s;else if(o==="bottom")r-=l+s;else r-=l/2;return r}function AM(a,o,s,r){let{caretSize:l,caretPadding:u,cornerRadius:d}=a,{xAlign:p,yAlign:h}=s,g=l+u,{topLeft:y,topRight:b,bottomLeft:v,bottomRight:T}=ei(d),M=fN(o,p),I=pN(o,h,g);if(h==="center"){if(p==="left")M+=g;else if(p==="right")M-=g}else if(p==="left")M-=Math.max(y,v)+l;else if(p==="right")M+=Math.max(b,T)+l;return{x:mo(M,0,r.width-o.width),y:mo(I,0,r.height-o.height)}}function bm(a,o,s){let r=Na(s.padding);return o==="center"?a.x+a.width/2:o==="right"?a.x+a.width-r.right:a.x+r.left}function RM(a){return ns([],js(a))}function hN(a,o,s){return qs(a,{tooltip:o,tooltipItems:s,type:"tooltip"})}function DM(a,o){let s=o&&o.dataset&&o.dataset.tooltip&&o.dataset.tooltip.callbacks;return s?a.override(s):a}var pI={beforeTitle:os,title(a){if(a.length>0){let o=a[0],s=o.chart.data.labels,r=s?s.length:0;if(this&&this.options&&this.options.mode==="dataset")return o.dataset.label||"";else if(o.label)return o.label;else if(r>0&&o.dataIndex<r)return s[o.dataIndex]}return""},afterTitle:os,beforeBody:os,beforeLabel:os,label(a){if(this&&this.options&&this.options.mode==="dataset")return a.label+": "+a.formattedValue||a.formattedValue;let o=a.dataset.label||"";if(o)o+=": ";let s=a.formattedValue;if(!ht(s))o+=s;return o},labelColor(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{borderColor:s.borderColor,backgroundColor:s.backgroundColor,borderWidth:s.borderWidth,borderDash:s.borderDash,borderDashOffset:s.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(a){let s=a.chart.getDatasetMeta(a.datasetIndex).controller.getStyle(a.dataIndex);return{pointStyle:s.pointStyle,rotation:s.rotation}},afterLabel:os,afterBody:os,beforeFooter:os,footer:os,afterFooter:os};function bo(a,o,s,r){let l=a[o].call(s,r);if(typeof l>"u")return pI[o].call(s,r);return l}class kv extends Gs{static positioners=Yd;constructor(a){super();this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=a.chart,this.options=a.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(a){this.options=a,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let a=this._cachedAnimations;if(a)return a;let o=this.chart,s=this.options.setContext(this.getContext()),r=s.enabled&&o.options.animation&&s.animations,l=new Av(this.chart,r);if(r._cacheable)this._cachedAnimations=Object.freeze(l);return l}getContext(){return this.$context||(this.$context=hN(this.chart.getContext(),this,this._tooltipItems))}getTitle(a,o){let{callbacks:s}=o,r=bo(s,"beforeTitle",this,a),l=bo(s,"title",this,a),u=bo(s,"afterTitle",this,a),d=[];return d=ns(d,js(r)),d=ns(d,js(l)),d=ns(d,js(u)),d}getBeforeBody(a,o){return RM(bo(o.callbacks,"beforeBody",this,a))}getBody(a,o){let{callbacks:s}=o,r=[];return Lt(a,(l)=>{let u={before:[],lines:[],after:[]},d=DM(s,l);ns(u.before,js(bo(d,"beforeLabel",this,l))),ns(u.lines,bo(d,"label",this,l)),ns(u.after,js(bo(d,"afterLabel",this,l))),r.push(u)}),r}getAfterBody(a,o){return RM(bo(o.callbacks,"afterBody",this,a))}getFooter(a,o){let{callbacks:s}=o,r=bo(s,"beforeFooter",this,a),l=bo(s,"footer",this,a),u=bo(s,"afterFooter",this,a),d=[];return d=ns(d,js(r)),d=ns(d,js(l)),d=ns(d,js(u)),d}_createItems(a){let o=this._active,s=this.chart.data,r=[],l=[],u=[],d=[],p,h;for(p=0,h=o.length;p<h;++p)d.push(lN(this.chart,o[p]));if(a.filter)d=d.filter((g,y,b)=>a.filter(g,y,b,s));if(a.itemSort)d=d.sort((g,y)=>a.itemSort(g,y,s));return Lt(d,(g)=>{let y=DM(a.callbacks,g);r.push(bo(y,"labelColor",this,g)),l.push(bo(y,"labelPointStyle",this,g)),u.push(bo(y,"labelTextColor",this,g))}),this.labelColors=r,this.labelPointStyles=l,this.labelTextColors=u,this.dataPoints=d,d}update(a,o){let s=this.options.setContext(this.getContext()),r=this._active,l,u=[];if(!r.length){if(this.opacity!==0)l={opacity:0}}else{let d=Yd[s.position].call(this,r,this._eventPosition);u=this._createItems(s),this.title=this.getTitle(u,s),this.beforeBody=this.getBeforeBody(u,s),this.body=this.getBody(u,s),this.afterBody=this.getAfterBody(u,s),this.footer=this.getFooter(u,s);let p=this._size=MM(this,s),h=Object.assign({},d,p),g=IM(this.chart,s,h),y=AM(s,h,g,this.chart);this.xAlign=g.xAlign,this.yAlign=g.yAlign,l={opacity:1,x:y.x,y:y.y,width:p.width,height:p.height,caretX:d.x,caretY:d.y}}if(this._tooltipItems=u,this.$context=void 0,l)this._resolveAnimations().update(this,l);if(a&&s.external)s.external.call(this,{chart:this.chart,tooltip:this,replay:o})}drawCaret(a,o,s,r){let l=this.getCaretPosition(a,s,r);o.lineTo(l.x1,l.y1),o.lineTo(l.x2,l.y2),o.lineTo(l.x3,l.y3)}getCaretPosition(a,o,s){let{xAlign:r,yAlign:l}=this,{caretSize:u,cornerRadius:d}=s,{topLeft:p,topRight:h,bottomLeft:g,bottomRight:y}=ei(d),{x:b,y:v}=a,{width:T,height:M}=o,I,w,A,B,z,H;if(l==="center"){if(z=v+M/2,r==="left")I=b,w=I-u,B=z+u,H=z-u;else I=b+T,w=I+u,B=z-u,H=z+u;A=I}else{if(r==="left")w=b+Math.max(p,g)+u;else if(r==="right")w=b+T-Math.max(h,y)-u;else w=this.caretX;if(l==="top")B=v,z=B-u,I=w-u,A=w+u;else B=v+M,z=B+u,I=w+u,A=w-u;H=B}return{x1:I,x2:w,x3:A,y1:B,y2:z,y3:H}}drawTitle(a,o,s){let r=this.title,l=r.length,u,d,p;if(l){let h=il(s.rtl,this.x,this.width);a.x=bm(this,s.titleAlign,s),o.textAlign=h.textAlign(s.titleAlign),o.textBaseline="middle",u=ha(s.titleFont),d=s.titleSpacing,o.fillStyle=s.titleColor,o.font=u.string;for(p=0;p<l;++p)if(o.fillText(r[p],h.x(a.x),a.y+u.lineHeight/2),a.y+=u.lineHeight+d,p+1===l)a.y+=s.titleMarginBottom-d}}_drawColorBox(a,o,s,r,l){let u=this.labelColors[s],d=this.labelPointStyles[s],{boxHeight:p,boxWidth:h}=l,g=ha(l.bodyFont),y=bm(this,"left",l),b=r.x(y),v=p<g.lineHeight?(g.lineHeight-p)/2:0,T=o.y+v;if(l.usePointStyle){let M={radius:Math.min(h,p)/2,pointStyle:d.pointStyle,rotation:d.rotation,borderWidth:1},I=r.leftForLtr(b,h)+h/2,w=T+p/2;a.strokeStyle=l.multiKeyBackground,a.fillStyle=l.multiKeyBackground,um(a,M,I,w),a.strokeStyle=u.borderColor,a.fillStyle=u.backgroundColor,um(a,M,I,w)}else{a.lineWidth=it(u.borderWidth)?Math.max(...Object.values(u.borderWidth)):u.borderWidth||1,a.strokeStyle=u.borderColor,a.setLineDash(u.borderDash||[]),a.lineDashOffset=u.borderDashOffset||0;let M=r.leftForLtr(b,h),I=r.leftForLtr(r.xPlus(b,1),h-2),w=ei(u.borderRadius);if(Object.values(w).some((A)=>A!==0))a.beginPath(),a.fillStyle=l.multiKeyBackground,zu(a,{x:M,y:T,w:h,h:p,radius:w}),a.fill(),a.stroke(),a.fillStyle=u.backgroundColor,a.beginPath(),zu(a,{x:I,y:T+1,w:h-2,h:p-2,radius:w}),a.fill();else a.fillStyle=l.multiKeyBackground,a.fillRect(M,T,h,p),a.strokeRect(M,T,h,p),a.fillStyle=u.backgroundColor,a.fillRect(I,T+1,h-2,p-2)}a.fillStyle=this.labelTextColors[s]}drawBody(a,o,s){let{body:r}=this,{bodySpacing:l,bodyAlign:u,displayColors:d,boxHeight:p,boxWidth:h,boxPadding:g}=s,y=ha(s.bodyFont),b=y.lineHeight,v=0,T=il(s.rtl,this.x,this.width),M=function(G){o.fillText(G,T.x(a.x+v),a.y+b/2),a.y+=b+l},I=T.textAlign(u),w,A,B,z,H,q,j;o.textAlign=u,o.textBaseline="middle",o.font=y.string,a.x=bm(this,I,s),o.fillStyle=s.bodyColor,Lt(this.beforeBody,M),v=d&&I!=="right"?u==="center"?h/2+g:h+2+g:0;for(z=0,q=r.length;z<q;++z){if(w=r[z],A=this.labelTextColors[z],o.fillStyle=A,Lt(w.before,M),B=w.lines,d&&B.length)this._drawColorBox(o,a,z,T,s),b=Math.max(y.lineHeight,p);for(H=0,j=B.length;H<j;++H)M(B[H]),b=y.lineHeight;Lt(w.after,M)}v=0,b=y.lineHeight,Lt(this.afterBody,M),a.y-=l}drawFooter(a,o,s){let r=this.footer,l=r.length,u,d;if(l){let p=il(s.rtl,this.x,this.width);a.x=bm(this,s.footerAlign,s),a.y+=s.footerMarginTop,o.textAlign=p.textAlign(s.footerAlign),o.textBaseline="middle",u=ha(s.footerFont),o.fillStyle=s.footerColor,o.font=u.string;for(d=0;d<l;++d)o.fillText(r[d],p.x(a.x),a.y+u.lineHeight/2),a.y+=u.lineHeight+s.footerSpacing}}drawBackground(a,o,s,r){let{xAlign:l,yAlign:u}=this,{x:d,y:p}=a,{width:h,height:g}=s,{topLeft:y,topRight:b,bottomLeft:v,bottomRight:T}=ei(r.cornerRadius);if(o.fillStyle=r.backgroundColor,o.strokeStyle=r.borderColor,o.lineWidth=r.borderWidth,o.beginPath(),o.moveTo(d+y,p),u==="top")this.drawCaret(a,o,s,r);if(o.lineTo(d+h-b,p),o.quadraticCurveTo(d+h,p,d+h,p+b),u==="center"&&l==="right")this.drawCaret(a,o,s,r);if(o.lineTo(d+h,p+g-T),o.quadraticCurveTo(d+h,p+g,d+h-T,p+g),u==="bottom")this.drawCaret(a,o,s,r);if(o.lineTo(d+v,p+g),o.quadraticCurveTo(d,p+g,d,p+g-v),u==="center"&&l==="left")this.drawCaret(a,o,s,r);if(o.lineTo(d,p+y),o.quadraticCurveTo(d,p,d+y,p),o.closePath(),o.fill(),r.borderWidth>0)o.stroke()}_updateAnimationTarget(a){let o=this.chart,s=this.$animations,r=s&&s.x,l=s&&s.y;if(r||l){let u=Yd[a.position].call(this,this._active,this._eventPosition);if(!u)return;let d=this._size=MM(this,a),p=Object.assign({},u,this._size),h=IM(o,a,p),g=AM(a,p,h,o);if(r._to!==g.x||l._to!==g.y)this.xAlign=h.xAlign,this.yAlign=h.yAlign,this.width=d.width,this.height=d.height,this.caretX=u.x,this.caretY=u.y,this._resolveAnimations().update(this,g)}}_willRender(){return!!this.opacity}draw(a){let o=this.options.setContext(this.getContext()),s=this.opacity;if(!s)return;this._updateAnimationTarget(o);let r={width:this.width,height:this.height},l={x:this.x,y:this.y};s=Math.abs(s)<0.001?0:s;let u=Na(o.padding),d=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;if(o.enabled&&d)a.save(),a.globalAlpha=s,this.drawBackground(l,a,r,o),sv(a,o.textDirection),l.y+=u.top,this.drawTitle(l,a,o),this.drawBody(l,a,o),this.drawFooter(l,a,o),rv(a,o.textDirection),a.restore()}getActiveElements(){return this._active||[]}setActiveElements(a,o){let s=this._active,r=a.map(({datasetIndex:d,index:p})=>{let h=this.chart.getDatasetMeta(d);if(!h)throw Error("Cannot find a dataset at index "+d);return{datasetIndex:d,element:h.data[p],index:p}}),l=!Pd(s,r),u=this._positionChanged(r,o);if(l||u)this._active=r,this._eventPosition=o,this._ignoreReplayEvents=!0,this.update(!0)}handleEvent(a,o,s=!0){if(o&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let r=this.options,l=this._active||[],u=this._getActiveElements(a,l,o,s),d=this._positionChanged(u,a),p=o||!Pd(u,l)||d;if(p){if(this._active=u,r.enabled||r.external)this._eventPosition={x:a.x,y:a.y},this.update(!0,o)}return p}_getActiveElements(a,o,s,r){let l=this.options;if(a.type==="mouseout")return[];if(!r)return o.filter((d)=>this.chart.data.datasets[d.datasetIndex]&&this.chart.getDatasetMeta(d.datasetIndex).controller.getParsed(d.index)!==void 0);let u=this.chart.getElementsAtEventForMode(a,l.mode,l,s);if(l.reverse)u.reverse();return u}_positionChanged(a,o){let{caretX:s,caretY:r,options:l}=this,u=Yd[l.position].call(this,a,o);return u!==!1&&(s!==u.x||r!==u.y)}}var hI={id:"tooltip",_element:kv,positioners:Yd,afterInit(a,o,s){if(s)a.tooltip=new kv({chart:a,options:s})},beforeUpdate(a,o,s){if(a.tooltip)a.tooltip.initialize(s)},reset(a,o,s){if(a.tooltip)a.tooltip.initialize(s)},afterDraw(a){let o=a.tooltip;if(o&&o._willRender()){let s={tooltip:o};if(a.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0})===!1)return;o.draw(a.ctx),a.notifyPlugins("afterTooltipDraw",s)}},afterEvent(a,o){if(a.tooltip){let s=o.replay;if(a.tooltip.handleEvent(o.event,s,o.inChartArea))o.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:(a,o)=>o.bodyFont.size,boxWidth:(a,o)=>o.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:pI},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:(a)=>a!=="filter"&&a!=="itemSort"&&a!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};var mN=(a,o,s,r)=>{if(typeof o==="string")s=a.push(o)-1,r.unshift({index:s,label:o});else if(isNaN(o))s=null;return s};function gN(a,o,s,r){let l=a.indexOf(o);if(l===-1)return mN(a,o,s,r);let u=a.lastIndexOf(o);return l!==u?s:l}var bN=(a,o)=>a===null?null:mo(Math.round(a),0,o);function _M(a){let o=this.getLabels();if(a>=0&&a<o.length)return o[a];return a}class zv extends cl{static id="category";static defaults={ticks:{callback:_M}};constructor(a){super(a);this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(a){let o=this._addedLabels;if(o.length){let s=this.getLabels();for(let{index:r,label:l}of o)if(s[r]===l)s.splice(r,1);this._addedLabels=[]}super.init(a)}parse(a,o){if(ht(a))return null;let s=this.getLabels();return o=isFinite(o)&&s[o]===a?o:gN(s,a,Ke(o,a),this._addedLabels),bN(o,s.length-1)}determineDataLimits(){let{minDefined:a,maxDefined:o}=this.getUserBounds(),{min:s,max:r}=this.getMinMax(!0);if(this.options.bounds==="ticks"){if(!a)s=0;if(!o)r=this.getLabels().length-1}this.min=s,this.max=r}buildTicks(){let a=this.min,o=this.max,s=this.options.offset,r=[],l=this.getLabels();l=a===0&&o===l.length-1?l:l.slice(a,o+1),this._valueRange=Math.max(l.length-(s?0:1),1),this._startValue=this.min-(s?0.5:0);for(let u=a;u<=o;u++)r.push({value:u});return r}getLabelForValue(a){return _M.call(this,a)}configure(){if(super.configure(),!this.isHorizontal())this._reversePixels=!this._reversePixels}getPixelForValue(a){if(typeof a!=="number")a=this.parse(a);return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getPixelForTick(a){let o=this.ticks;if(a<0||a>o.length-1)return null;return this.getPixelForValue(o[a].value)}getValueForPixel(a){return Math.round(this._startValue+this.getDecimalForPixel(a)*this._valueRange)}getBasePixel(){return this.bottom}}function yN(a,o){let s=[],r=0.00000000000001,{bounds:l,step:u,min:d,max:p,precision:h,count:g,maxTicks:y,maxDigits:b,includeBounds:v}=a,T=u||1,M=y-1,{min:I,max:w}=o,A=!ht(d),B=!ht(p),z=!ht(g),H=(w-I)/(b+1),q=Ux((w-I)/M/T)*T,j,G,Y,J;if(q<0.00000000000001&&!A&&!B)return[{value:I},{value:w}];if(J=Math.ceil(w/q)-Math.floor(I/q),J>M)q=Ux(J*q/M/T)*T;if(!ht(h))j=Math.pow(10,h),q=Math.ceil(q*j)/j;if(l==="ticks")G=Math.floor(I/q)*q,Y=Math.ceil(w/q)*q;else G=I,Y=w;if(A&&B&&u&&yk((p-d)/u,q/1000))J=Math.round(Math.min((p-d)/q,y)),q=(p-d)/J,G=d,Y=p;else if(z)G=A?d:G,Y=B?p:Y,J=g-1,q=(Y-G)/J;else if(J=(Y-G)/q,Bu(J,Math.round(J),q/1000))J=Math.round(J);else J=Math.ceil(J);let X=Math.max(qx(q),qx(G));j=Math.pow(10,ht(h)?X:h),G=Math.round(G*j)/j,Y=Math.round(Y*j)/j;let se=0;if(A){if(v&&G!==d){if(s.push({value:d}),G<d)se++;if(Bu(Math.round((G+se*q)*j)/j,d,EM(d,H,a)))se++}else if(G<d)se++}for(;se<J;++se){let ge=Math.round((G+se*q)*j)/j;if(B&&ge>p)break;s.push({value:ge})}if(B&&v&&Y!==p)if(s.length&&Bu(s[s.length-1].value,p,EM(p,H,a)))s[s.length-1].value=p;else s.push({value:p});else if(!B||Y===p)s.push({value:Y});return s}function EM(a,o,{horizontal:s,minRotation:r}){let l=Us(r),u=(s?Math.sin(l):Math.cos(l))||0.001,d=0.75*o*(""+a).length;return Math.min(o/u,d)}class Wd extends cl{constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(a,o){if(ht(a))return null;if((typeof a==="number"||a instanceof Number)&&!isFinite(+a))return null;return+a}handleTickRangeOptions(){let{beginAtZero:a}=this.options,{minDefined:o,maxDefined:s}=this.getUserBounds(),{min:r,max:l}=this,u=(p)=>r=o?r:p,d=(p)=>l=s?l:p;if(a){let p=Ln(r),h=Ln(l);if(p<0&&h<0)d(0);else if(p>0&&h>0)u(0)}if(r===l){let p=l===0?1:Math.abs(l*0.05);if(d(l+p),!a)u(r-p)}this.min=r,this.max=l}getTickLimit(){let a=this.options.ticks,{maxTicksLimit:o,stepSize:s}=a,r;if(s){if(r=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,r>1000)console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${r} ticks. Limiting to 1000.`),r=1000}else r=this.computeTickLimit(),o=o||11;if(o)r=Math.min(o,r);return r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let a=this.options,o=a.ticks,s=this.getTickLimit();s=Math.max(2,s);let r={maxTicks:s,bounds:a.bounds,min:a.min,max:a.max,precision:o.precision,step:o.stepSize,count:o.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:o.minRotation||0,includeBounds:o.includeBounds!==!1},l=this._range||this,u=yN(r,l);if(a.bounds==="ticks")Fx(u,this,"value");if(a.reverse)u.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return u}configure(){let a=this.ticks,o=this.min,s=this.max;if(super.configure(),this.options.offset&&a.length){let r=(s-o)/Math.max(a.length-1,1)/2;o-=r,s+=r}this._startValue=o,this._endValue=s,this._valueRange=s-o}getLabelForValue(a){return im(a,this.chart.options.locale,this.options.ticks.format)}}class Hv extends Wd{static id="linear";static defaults={ticks:{callback:Bd.formatters.numeric}};determineDataLimits(){let{min:a,max:o}=this.getMinMax(!0);this.min=Kt(a)?a:0,this.max=Kt(o)?o:1,this.handleTickRangeOptions()}computeTickLimit(){let a=this.isHorizontal(),o=a?this.width:this.height,s=Us(this.options.ticks.minRotation),r=(a?Math.sin(s):Math.cos(s))||0.001,l=this._resolveTickFontOptions(0);return Math.ceil(o/Math.min(40,l.lineHeight/r))}getPixelForValue(a){return a===null?NaN:this.getPixelForDecimal((a-this._startValue)/this._valueRange)}getValueForPixel(a){return this._startValue+this.getDecimalForPixel(a)*this._valueRange}}var Zd=(a)=>Math.floor(Hs(a)),ul=(a,o)=>Math.pow(10,Zd(a)+o);function OM(a){return a/Math.pow(10,Zd(a))===1}function PM(a,o,s){let r=Math.pow(10,s),l=Math.floor(a/r);return Math.ceil(o/r)-l}function xN(a,o){let s=o-a,r=Zd(s);while(PM(a,o,r)>10)r++;while(PM(a,o,r)<10)r--;return Math.min(r,Zd(a))}function vN(a,{min:o,max:s}){o=go(a.min,o);let r=[],l=Zd(o),u=xN(o,s),d=u<0?Math.pow(10,Math.abs(u)):1,p=Math.pow(10,u),h=l>u?Math.pow(10,l):0,g=Math.round((o-h)*d)/d,y=Math.floor((o-h)/p/10)*p*10,b=Math.floor((g-y)/Math.pow(10,u)),v=go(a.min,Math.round((h+y+b*Math.pow(10,u))*d)/d);while(v<s){if(r.push({value:v,major:OM(v),significand:b}),b>=10)b=b<15?15:20;else b++;if(b>=20)u++,b=2,d=u>=0?1:d;v=Math.round((h+y+b*Math.pow(10,u))*d)/d}let T=go(a.max,v);return r.push({value:T,major:OM(T),significand:b}),r}class SN extends cl{static id="logarithmic";static defaults={ticks:{callback:Bd.formatters.logarithmic,major:{enabled:!0}}};constructor(a){super(a);this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(a,o){let s=Wd.prototype.parse.apply(this,[a,o]);if(s===0){this._zero=!0;return}return Kt(s)&&s>0?s:null}determineDataLimits(){let{min:a,max:o}=this.getMinMax(!0);if(this.min=Kt(a)?Math.max(0,a):null,this.max=Kt(o)?Math.max(0,o):null,this.options.beginAtZero)this._zero=!0;if(this._zero&&this.min!==this._suggestedMin&&!Kt(this._userMin))this.min=a===ul(this.min,0)?ul(this.min,-1):ul(this.min,0);this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:a,maxDefined:o}=this.getUserBounds(),s=this.min,r=this.max,l=(d)=>s=a?s:d,u=(d)=>r=o?r:d;if(s===r)if(s<=0)l(1),u(10);else l(ul(s,-1)),u(ul(r,1));if(s<=0)l(ul(r,-1));if(r<=0)u(ul(s,1));this.min=s,this.max=r}buildTicks(){let a=this.options,o={min:this._userMin,max:this._userMax},s=vN(o,this);if(a.bounds==="ticks")Fx(s,this,"value");if(a.reverse)s.reverse(),this.start=this.max,this.end=this.min;else this.start=this.min,this.end=this.max;return s}getLabelForValue(a){return a===void 0?"0":im(a,this.chart.options.locale,this.options.ticks.format)}configure(){let a=this.min;super.configure(),this._startValue=Hs(a),this._valueRange=Hs(this.max)-Hs(a)}getPixelForValue(a){if(a===void 0||a===0)a=this.min;if(a===null||isNaN(a))return NaN;return this.getPixelForDecimal(a===this.min?0:(Hs(a)-this._startValue)/this._valueRange)}getValueForPixel(a){let o=this.getDecimalForPixel(a);return Math.pow(10,this._startValue+o*this._valueRange)}}function Mv(a){let o=a.ticks;if(o.display&&a.display){let s=Na(o.backdropPadding);return Ke(o.font&&o.font.size,Jt.font.size)+s.height}return 0}function LN(a,o,s){return s=zt(s)?s:[s],{w:Dk(a,o.string,s),h:s.length*o.lineHeight}}function BM(a,o,s,r,l){if(a===r||a===l)return{start:o-s/2,end:o+s/2};else if(a<r||a>l)return{start:o-s,end:o};return{start:o,end:o+s}}function CN(a){let o={l:a.left+a._padding.left,r:a.right-a._padding.right,t:a.top+a._padding.top,b:a.bottom-a._padding.bottom},s=Object.assign({},o),r=[],l=[],u=a._pointLabels.length,d=a.options.pointLabels,p=d.centerPointLabels?sa/u:0;for(let h=0;h<u;h++){let g=d.setContext(a.getPointLabelContext(h));l[h]=g.padding;let y=a.getPointPosition(h,a.drawingArea+l[h],p),b=ha(g.font),v=LN(a.ctx,b,a._pointLabels[h]);r[h]=v;let T=fo(a.getIndexAngle(h)+p),M=Math.round(nm(T)),I=BM(M,y.x,v.w,0,180),w=BM(M,y.y,v.h,90,270);TN(s,o,T,I,w)}a.setCenterPoint(o.l-s.l,s.r-o.r,o.t-s.t,s.b-o.b),a._pointLabelItems=MN(a,r,l)}function TN(a,o,s,r,l){let u=Math.abs(Math.sin(s)),d=Math.abs(Math.cos(s)),p=0,h=0;if(r.start<o.l)p=(o.l-r.start)/u,a.l=Math.min(a.l,o.l-p);else if(r.end>o.r)p=(r.end-o.r)/u,a.r=Math.max(a.r,o.r+p);if(l.start<o.t)h=(o.t-l.start)/d,a.t=Math.min(a.t,o.t-h);else if(l.end>o.b)h=(l.end-o.b)/d,a.b=Math.max(a.b,o.b+h)}function wN(a,o,s){let r=a.drawingArea,{extra:l,additionalAngle:u,padding:d,size:p}=s,h=a.getPointPosition(o,r+l+d,u),g=Math.round(nm(fo(h.angle+po))),y=RN(h.y,p.h,g),b=IN(g),v=AN(h.x,p.w,b);return{visible:!0,x:h.x,y,textAlign:b,left:v,top:y,right:v+p.w,bottom:y+p.h}}function kN(a,o){if(!o)return!0;let{left:s,top:r,right:l,bottom:u}=a;return!(as({x:s,y:r},o)||as({x:s,y:u},o)||as({x:l,y:r},o)||as({x:l,y:u},o))}function MN(a,o,s){let r=[],l=a._pointLabels.length,u=a.options,{centerPointLabels:d,display:p}=u.pointLabels,h={extra:Mv(u)/2,additionalAngle:d?sa/l:0},g;for(let y=0;y<l;y++){h.padding=s[y],h.size=o[y];let b=wN(a,y,h);if(r.push(b),p==="auto"){if(b.visible=kN(b,g),b.visible)g=b}}return r}function IN(a){if(a===0||a===180)return"center";else if(a<180)return"left";return"right"}function AN(a,o,s){if(s==="right")a-=o;else if(s==="center")a-=o/2;return a}function RN(a,o,s){if(s===90||s===270)a-=o/2;else if(s>270||s<90)a-=o;return a}function DN(a,o,s){let{left:r,top:l,right:u,bottom:d}=s,{backdropColor:p}=o;if(!ht(p)){let h=ei(o.borderRadius),g=Na(o.backdropPadding);a.fillStyle=p;let y=r-g.left,b=l-g.top,v=u-r+g.width,T=d-l+g.height;if(Object.values(h).some((M)=>M!==0))a.beginPath(),zu(a,{x:y,y:b,w:v,h:T,radius:h}),a.fill();else a.fillRect(y,b,v,T)}}function _N(a,o){let{ctx:s,options:{pointLabels:r}}=a;for(let l=o-1;l>=0;l--){let u=a._pointLabelItems[l];if(!u.visible)continue;let d=r.setContext(a.getPointLabelContext(l));DN(s,d,u);let p=ha(d.font),{x:h,y:g,textAlign:y}=u;Jr(s,a._pointLabels[l],h,g+p.lineHeight/2,p,{color:d.color,textAlign:y,textBaseline:"middle"})}}function mI(a,o,s,r){let{ctx:l}=a;if(s)l.arc(a.xCenter,a.yCenter,o,0,ho);else{let u=a.getPointPosition(0,o);l.moveTo(u.x,u.y);for(let d=1;d<r;d++)u=a.getPointPosition(d,o),l.lineTo(u.x,u.y)}}function EN(a,o,s,r,l){let u=a.ctx,d=o.circular,{color:p,lineWidth:h}=o;if(!d&&!r||!p||!h||s<0)return;u.save(),u.strokeStyle=p,u.lineWidth=h,u.setLineDash(l.dash||[]),u.lineDashOffset=l.dashOffset,u.beginPath(),mI(a,s,d,r),u.closePath(),u.stroke(),u.restore()}function ON(a,o,s){return qs(a,{label:s,index:o,type:"pointLabel"})}class PN extends Wd{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Bd.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(a){return a},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(a){super(a);this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){let a=this._padding=Na(Mv(this.options)/2),o=this.width=this.maxWidth-a.width,s=this.height=this.maxHeight-a.height;this.xCenter=Math.floor(this.left+o/2+a.left),this.yCenter=Math.floor(this.top+s/2+a.top),this.drawingArea=Math.floor(Math.min(o,s)/2)}determineDataLimits(){let{min:a,max:o}=this.getMinMax(!1);this.min=Kt(a)&&!isNaN(a)?a:0,this.max=Kt(o)&&!isNaN(o)?o:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Mv(this.options))}generateTickLabels(a){Wd.prototype.generateTickLabels.call(this,a),this._pointLabels=this.getLabels().map((o,s)=>{let r=Ot(this.options.pointLabels.callback,[o,s],this);return r||r===0?r:""}).filter((o,s)=>this.chart.getDataVisibility(s))}fit(){let a=this.options;if(a.display&&a.pointLabels.display)CN(this);else this.setCenterPoint(0,0,0,0)}setCenterPoint(a,o,s,r){this.xCenter+=Math.floor((a-o)/2),this.yCenter+=Math.floor((s-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(a,o,s,r))}getIndexAngle(a){let o=ho/(this._pointLabels.length||1),s=this.options.startAngle||0;return fo(a*o+Us(s))}getDistanceFromCenterForValue(a){if(ht(a))return NaN;let o=this.drawingArea/(this.max-this.min);if(this.options.reverse)return(this.max-a)*o;return(a-this.min)*o}getValueForDistanceFromCenter(a){if(ht(a))return NaN;let o=a/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-o:this.min+o}getPointLabelContext(a){let o=this._pointLabels||[];if(a>=0&&a<o.length){let s=o[a];return ON(this.getContext(),a,s)}}getPointPosition(a,o,s=0){let r=this.getIndexAngle(a)-po+s;return{x:Math.cos(r)*o+this.xCenter,y:Math.sin(r)*o+this.yCenter,angle:r}}getPointPositionForValue(a,o){return this.getPointPosition(a,this.getDistanceFromCenterForValue(o))}getBasePosition(a){return this.getPointPositionForValue(a||0,this.getBaseValue())}getPointLabelPosition(a){let{left:o,top:s,right:r,bottom:l}=this._pointLabelItems[a];return{left:o,top:s,right:r,bottom:l}}drawBackground(){let{backgroundColor:a,grid:{circular:o}}=this.options;if(a){let s=this.ctx;s.save(),s.beginPath(),mI(this,this.getDistanceFromCenterForValue(this._endValue),o,this._pointLabels.length),s.closePath(),s.fillStyle=a,s.fill(),s.restore()}}drawGrid(){let a=this.ctx,o=this.options,{angleLines:s,grid:r,border:l}=o,u=this._pointLabels.length,d,p,h;if(o.pointLabels.display)_N(this,u);if(r.display)this.ticks.forEach((g,y)=>{if(y!==0||y===0&&this.min<0){p=this.getDistanceFromCenterForValue(g.value);let b=this.getContext(y),v=r.setContext(b),T=l.setContext(b);EN(this,v,p,u,T)}});if(s.display){a.save();for(d=u-1;d>=0;d--){let g=s.setContext(this.getPointLabelContext(d)),{color:y,lineWidth:b}=g;if(!b||!y)continue;a.lineWidth=b,a.strokeStyle=y,a.setLineDash(g.borderDash),a.lineDashOffset=g.borderDashOffset,p=this.getDistanceFromCenterForValue(o.reverse?this.min:this.max),h=this.getPointPosition(d,p),a.beginPath(),a.moveTo(this.xCenter,this.yCenter),a.lineTo(h.x,h.y),a.stroke()}a.restore()}}drawBorder(){}drawLabels(){let a=this.ctx,o=this.options,s=o.ticks;if(!s.display)return;let r=this.getIndexAngle(0),l,u;a.save(),a.translate(this.xCenter,this.yCenter),a.rotate(r),a.textAlign="center",a.textBaseline="middle",this.ticks.forEach((d,p)=>{if(p===0&&this.min>=0&&!o.reverse)return;let h=s.setContext(this.getContext(p)),g=ha(h.font);if(l=this.getDistanceFromCenterForValue(this.ticks[p].value),h.showLabelBackdrop){a.font=g.string,u=a.measureText(d.label).width,a.fillStyle=h.backdropColor;let y=Na(h.backdropPadding);a.fillRect(-u/2-y.left,-l-g.size/2-y.top,u+y.width,g.size+y.height)}Jr(a,d.label,0,-l,g,{color:h.color,strokeColor:h.textStrokeColor,strokeWidth:h.textStrokeWidth})}),a.restore()}drawTitle(){}}var Tm={millisecond:{common:!0,size:1,steps:1000},second:{common:!0,size:1000,steps:60},minute:{common:!0,size:60000,steps:60},hour:{common:!0,size:3600000,steps:24},day:{common:!0,size:86400000,steps:30},week:{common:!1,size:604800000,steps:4},month:{common:!0,size:2628000000,steps:12},quarter:{common:!1,size:7884000000,steps:4},year:{common:!0,size:31540000000}},yo=Object.keys(Tm);function NM(a,o){return a-o}function zM(a,o){if(ht(o))return null;let s=a._adapter,{parser:r,round:l,isoWeekday:u}=a._parseOpts,d=o;if(typeof r==="function")d=r(d);if(!Kt(d))d=typeof r==="string"?s.parse(d,r):s.parse(d);if(d===null)return null;if(l)d=l==="week"&&(Nu(u)||u===!0)?s.startOf(d,"isoWeek",u):s.startOf(d,l);return+d}function HM(a,o,s,r){let l=yo.length;for(let u=yo.indexOf(a);u<l-1;++u){let d=Tm[yo[u]],p=d.steps?d.steps:Number.MAX_SAFE_INTEGER;if(d.common&&Math.ceil((s-o)/(p*d.size))<=r)return yo[u]}return yo[l-1]}function BN(a,o,s,r,l){for(let u=yo.length-1;u>=yo.indexOf(s);u--){let d=yo[u];if(Tm[d].common&&a._adapter.diff(l,r,d)>=o-1)return d}return yo[s?yo.indexOf(s):0]}function NN(a){for(let o=yo.indexOf(a)+1,s=yo.length;o<s;++o)if(Tm[yo[o]].common)return yo[o]}function UM(a,o,s){if(!s)a[o]=!0;else if(s.length){let{lo:r,hi:l}=sm(s,o),u=s[r]>=o?s[r]:s[l];a[u]=!0}}function zN(a,o,s,r){let l=a._adapter,u=+l.startOf(o[0].value,r),d=o[o.length-1].value,p,h;for(p=u;p<=d;p=+l.add(p,1,r))if(h=s[p],h>=0)o[h].major=!0;return o}function FM(a,o,s){let r=[],l={},u=o.length,d,p;for(d=0;d<u;++d)p=o[d],l[p]=d,r.push({value:p,major:!1});return u===0||!s?r:zN(a,r,l,s)}class Iv extends cl{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(a){super(a);this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(a,o={}){let s=a.time||(a.time={}),r=this._adapter=new xP._date(a.adapters.date);r.init(o),Ou(s.displayFormats,r.formats()),this._parseOpts={parser:s.parser,round:s.round,isoWeekday:s.isoWeekday},super.init(a),this._normalized=o.normalized}parse(a,o){if(a===void 0)return null;return zM(this,a)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let a=this.options,o=this._adapter,s=a.time.unit||"day",{min:r,max:l,minDefined:u,maxDefined:d}=this.getUserBounds();function p(h){if(!u&&!isNaN(h.min))r=Math.min(r,h.min);if(!d&&!isNaN(h.max))l=Math.max(l,h.max)}if(!u||!d){if(p(this._getLabelBounds()),a.bounds!=="ticks"||a.ticks.source!=="labels")p(this.getMinMax(!1))}r=Kt(r)&&!isNaN(r)?r:+o.startOf(Date.now(),s),l=Kt(l)&&!isNaN(l)?l:+o.endOf(Date.now(),s)+1,this.min=Math.min(r,l-1),this.max=Math.max(r+1,l)}_getLabelBounds(){let a=this.getLabelTimestamps(),{POSITIVE_INFINITY:o,NEGATIVE_INFINITY:s}=Number;if(a.length)o=a[0],s=a[a.length-1];return{min:o,max:s}}buildTicks(){let a=this.options,{time:o,ticks:s}=a,r=s.source==="labels"?this.getLabelTimestamps():this._generate();if(a.bounds==="ticks"&&r.length)this.min=this._userMin||r[0],this.max=this._userMax||r[r.length-1];let l=this.min,u=this.max,d=Lk(r,l,u);if(this._unit=o.unit||(s.autoSkip?HM(o.minUnit,this.min,this.max,this._getLabelCapacity(l)):BN(this,d.length,o.minUnit,this.min,this.max)),this._majorUnit=!s.major.enabled||this._unit==="year"?void 0:NN(this._unit),this.initOffsets(r),a.reverse)d.reverse();return FM(this,d,this._majorUnit)}afterAutoSkip(){if(this.options.offsetAfterAutoskip)this.initOffsets(this.ticks.map((a)=>+a.value))}initOffsets(a=[]){let o=0,s=0,r,l;if(this.options.offset&&a.length){if(r=this.getDecimalForValue(a[0]),a.length===1)o=1-r;else o=(this.getDecimalForValue(a[1])-r)/2;if(l=this.getDecimalForValue(a[a.length-1]),a.length===1)s=l;else s=(l-this.getDecimalForValue(a[a.length-2]))/2}let u=a.length<3?0.5:0.25;o=mo(o,0,u),s=mo(s,0,u),this._offsets={start:o,end:s,factor:1/(o+1+s)}}_generate(){let a=this._adapter,o=this.min,s=this.max,r=this.options,l=r.time,u=l.unit||HM(l.minUnit,o,s,this._getLabelCapacity(o)),d=Ke(r.ticks.stepSize,1),p=u==="week"?l.isoWeekday:!1,h=Nu(p)||p===!0,g={},y=o,b,v;if(h)y=+a.startOf(y,"isoWeek",p);if(y=+a.startOf(y,h?"day":u),a.diff(s,o,u)>1e5*d)throw Error(o+" and "+s+" are too far apart with stepSize of "+d+" "+u);let T=r.ticks.source==="data"&&this.getDataTimestamps();for(b=y,v=0;b<s;b=+a.add(b,d,u),v++)UM(g,b,T);if(b===s||r.bounds==="ticks"||v===1)UM(g,b,T);return Object.keys(g).sort(NM).map((M)=>+M)}getLabelForValue(a){let o=this._adapter,s=this.options.time;if(s.tooltipFormat)return o.format(a,s.tooltipFormat);return o.format(a,s.displayFormats.datetime)}format(a,o){let r=this.options.time.displayFormats,l=this._unit,u=o||r[l];return this._adapter.format(a,u)}_tickFormatFunction(a,o,s,r){let l=this.options,u=l.ticks.callback;if(u)return Ot(u,[a,o,s],this);let d=l.time.displayFormats,p=this._unit,h=this._majorUnit,g=p&&d[p],y=h&&d[h],b=s[o],v=h&&y&&b&&b.major;return this._adapter.format(a,r||(v?y:g))}generateTickLabels(a){let o,s,r;for(o=0,s=a.length;o<s;++o)r=a[o],r.label=this._tickFormatFunction(r.value,o,a)}getDecimalForValue(a){return a===null?NaN:(a-this.min)/(this.max-this.min)}getPixelForValue(a){let o=this._offsets,s=this.getDecimalForValue(a);return this.getPixelForDecimal((o.start+s)*o.factor)}getValueForPixel(a){let o=this._offsets,s=this.getDecimalForPixel(a)/o.factor-o.end;return this.min+s*(this.max-this.min)}_getLabelSize(a){let o=this.options.ticks,s=this.ctx.measureText(a).width,r=Us(this.isHorizontal()?o.maxRotation:o.minRotation),l=Math.cos(r),u=Math.sin(r),d=this._resolveTickFontOptions(0).size;return{w:s*l+d*u,h:s*u+d*l}}_getLabelCapacity(a){let o=this.options.time,s=o.displayFormats,r=s[o.unit]||s.millisecond,l=this._tickFormatFunction(a,0,FM(this,[a],this._majorUnit),r),u=this._getLabelSize(l),d=Math.floor(this.isHorizontal()?this.width/u.w:this.height/u.h)-1;return d>0?d:1}getDataTimestamps(){let a=this._cache.data||[],o,s;if(a.length)return a;let r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(o=0,s=r.length;o<s;++o)a=a.concat(r[o].controller.getAllParsedValues(this));return this._cache.data=this.normalize(a)}getLabelTimestamps(){let a=this._cache.labels||[],o,s;if(a.length)return a;let r=this.getLabels();for(o=0,s=r.length;o<s;++o)a.push(zM(this,r[o]));return this._cache.labels=this._normalized?a:this.normalize(a)}normalize(a){return Gx(a.sort(NM))}}function ym(a,o,s){let r=0,l=a.length-1,u,d,p,h;if(s){if(o>=a[r].pos&&o<=a[l].pos)({lo:r,hi:l}=Wr(a,"pos",o));({pos:u,time:p}=a[r]),{pos:d,time:h}=a[l]}else{if(o>=a[r].time&&o<=a[l].time)({lo:r,hi:l}=Wr(a,"time",o));({time:u,pos:p}=a[r]),{time:d,pos:h}=a[l]}let g=d-u;return g?p+(h-p)*(o-u)/g:p}class HN extends Iv{static id="timeseries";static defaults=Iv.defaults;constructor(a){super(a);this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let a=this._getTimestampsForTable(),o=this._table=this.buildLookupTable(a);this._minPos=ym(o,this.min),this._tableRange=ym(o,this.max)-this._minPos,super.initOffsets(a)}buildLookupTable(a){let{min:o,max:s}=this,r=[],l=[],u,d,p,h,g;for(u=0,d=a.length;u<d;++u)if(h=a[u],h>=o&&h<=s)r.push(h);if(r.length<2)return[{time:o,pos:0},{time:s,pos:1}];for(u=0,d=r.length;u<d;++u)if(g=r[u+1],p=r[u-1],h=r[u],Math.round((g+p)/2)!==h)l.push({time:h,pos:u/(d-1)});return l}_generate(){let a=this.min,o=this.max,s=super.getDataTimestamps();if(!s.includes(a)||!s.length)s.splice(0,0,a);if(!s.includes(o)||s.length===1)s.push(o);return s.sort((r,l)=>r-l)}_getTimestampsForTable(){let a=this._cache.all||[];if(a.length)return a;let o=this.getDataTimestamps(),s=this.getLabelTimestamps();if(o.length&&s.length)a=this.normalize(o.concat(s));else a=o.length?o:s;return a=this._cache.all=a,a}getDecimalForValue(a){return(ym(this._table,a)-this._minPos)/this._tableRange}getValueForPixel(a){let o=this._offsets,s=this.getDecimalForPixel(a)/o.factor-o.end;return ym(this._table,s*this._tableRange+this._minPos,!0)}}dl.register(zv,Hv,Pv,Hu,Ov,fI,hI,dI,uI);var jR=Q(vI(),1);var Js=Q(dt(),1);var Im=Q(dt(),1);var SI=(a)=>a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();function LI(a,o,s=[]){if(o==null)throw Error("[lucide]: iconNode is required when icon name is used");return{name:SI(a),size:24,node:o,...s.length>0?{aliases:s}:{}}}var CI=(a)=>{let o="",s=!1;for(let r of a){if(r==="-"||r==="_"||r<=" "){s=o.length>0;continue}if(o.length===0)o+=r.toLowerCase();else o+=s?r.toUpperCase():r;s=!1}return o};var TI=(a)=>{let o=CI(a);return o.charAt(0).toUpperCase()+o.slice(1)};var Jd=Q(dt(),1);var Kd=(...a)=>a.filter((o,s,r)=>Boolean(o)&&o.trim()!==""&&r.indexOf(o)===s).join(" ").trim();var oi={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"};function qv(a){return a!==null&&a!==void 0}function wI(a,o={}){let s=o.attributeNames??{},r=(v)=>s[v]??v,l=a.size??a.width??oi.width,u=a.size??a.height??oi.height,d=a.aliases?.filter((v)=>typeof v==="string"&&v.trim()!=="").map((v)=>`lucide-${v}`)??[],p=[...a.name?[`lucide-${a.name}`]:[],...d],h=o.className?.split(" ").filter(Boolean)??[],g=o.includeDefaultClasses===!1?Kd(...h):Kd("lucide",...p,...h),y=o.absoluteStrokeWidth?Number(o.strokeWidth??oi["stroke-width"])*Number(a.size??a.width??oi.width)/Number(o.size??o.width??oi.width):o.strokeWidth??oi["stroke-width"];return["svg",{...Object.entries(oi).reduce((v,[T,M])=>(v[r(T)]=M,v),{}),..."color"in o&&o.color&&{[r("stroke")]:o.color},..."size"in o&&qv(o.size)&&{[r("width")]:o.size,[r("height")]:o.size},..."width"in o&&qv(o.width)&&{[r("width")]:o.width},..."height"in o&&qv(o.height)&&{[r("height")]:o.height},[r("stroke-width")]:y,...g&&{[r("class")]:g},[r("viewBox")]:`0 0 ${l} ${u}`,...o.hasA11yProp===!1?{[r("aria-hidden")]:"true"}:{},..."attributes"in o&&o.attributes},a.node.map((v)=>{let[T,M,I]=v,w=o.nonScalingStroke?{[r("vector-effect")]:"non-scaling-stroke",...M}:M;return I?[T,w,I]:[T,w]})]}function kI(a,o={}){return wI(a,{...o,attributeNames:{...o.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}var MI=(a)=>{for(let o in a)if(o.startsWith("aria-")||o==="role"||o==="title")return!0;return!1};var qu=Q(dt(),1),GN=qu.createContext({});var II=()=>qu.useContext(GN);var AI=Jd.forwardRef(({color:a,size:o,width:s,height:r,strokeWidth:l,absoluteStrokeWidth:u,nonScalingStroke:d,className:p="",children:h,iconNode:g=[],icon:y={node:g,aliases:[],size:24},...b},v)=>{let{size:T=24,strokeWidth:M=2,absoluteStrokeWidth:I=!1,nonScalingStroke:w=!1,color:A="currentColor",className:B=""}=II()??{},z=Boolean(h)||MI(b),[H,q,j=[]]=kI(y,{color:a??A,width:s??o??T,height:r??o??T,strokeWidth:l??M,absoluteStrokeWidth:u??I,nonScalingStroke:d??w,className:Kd(B,p),hasA11yProp:z,attributes:b});return Jd.createElement(H,{ref:v,...q},[...j.map(([G,Y])=>Jd.createElement(G,Y)),...Array.isArray(h)?h:[h]])});function we(a,o=[],s=[]){let r=typeof a==="string"?LI(a,o,s):a,l=Im.forwardRef(({className:u,...d},p)=>Im.createElement(AI,{ref:p,icon:r,className:u,...d}));if(r.name)l.displayName=TI(r.name);return l}var RI={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};RI.node;var ni=we(RI);var DI={name:"face-slightly-smiling",size:24,node:[["path",{d:"M15 10V9",key:"4dkmfx"}],["path",{d:"M16.472 15a6 6 0 01-8.943 0",key:"7qomzy"}],["path",{d:"M9 10V9",key:"1lazqi"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],aliases:["smile"]};DI.node;var si=we(DI);var _I={name:"activity",size:24,node:[["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",key:"169zse"}]]};_I.node;var ef=we(_I);var EI={name:"arrow-left",size:24,node:[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]};EI.node;var tf=we(EI);var OI={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};OI.node;var pl=we(OI);var PI={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]};PI.node;var Xs=we(PI);var BI={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};BI.node;var hl=we(BI);var NI={name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]};NI.node;var af=we(NI);var zI={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};zI.node;var of=we(zI);var HI={name:"coins",size:24,node:[["path",{d:"M13.744 17.736a6 6 0 1 1-7.48-7.48",key:"bq4yh3"}],["path",{d:"M15 6h1v4",key:"11y1tn"}],["path",{d:"m6.134 14.768.866-.5 2 3.464",key:"17snzx"}],["circle",{cx:"16",cy:"8",r:"6",key:"14bfc9"}]]};HI.node;var ml=we(HI);var UI={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};UI.node;var gl=we(UI);var FI={name:"cpu",size:24,node:[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]};FI.node;var nf=we(FI);var qI={name:"folder",size:24,node:[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]};qI.node;var sf=we(qI);var VI={name:"gauge",size:24,node:[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]};VI.node;var rf=we(VI);var jI={name:"hash",size:24,node:[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]};jI.node;var lf=we(jI);var GI={name:"inbox",size:24,node:[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["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",key:"oot6mr"}]]};GI.node;var uf=we(GI);var XI={name:"layout-dashboard",size:24,node:[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]};XI.node;var cf=we(XI);var YI={name:"list-tree",size:24,node:[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]};YI.node;var df=we(YI);var $I={name:"menu",size:24,node:[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]};$I.node;var ff=we($I);var WI={name:"monitor",size:24,node:[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]};WI.node;var pf=we(WI);var ZI={name:"moon",size:24,node:[["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",key:"kfwtm"}]]};ZI.node;var hf=we(ZI);var QI={name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["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",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]};QI.node;var mf=we(QI);var KI={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};KI.node;var bl=we(KI);var JI={name:"star",size:24,node:[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]};JI.node;var gf=we(JI);var eA={name:"sun",size:24,node:[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]};eA.node;var bf=we(eA);var tA={name:"trending-up",size:24,node:[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]};tA.node;var yf=we(tA);var aA={name:"wrench",size:24,node:[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]};aA.node;var xf=we(aA);var oA={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};oA.node;var vf=we(oA);var nA={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};nA.node;var Ys=we(nA);var RA=Q(dt(),1);var Am=[{id:"overview",label:"Overview",icon:cf},{id:"requests",label:"Requests",icon:ef},{id:"traces",label:"Traces",icon:df},{id:"errors",label:"Errors",icon:ni},{id:"models",label:"Models",icon:nf},{id:"providers",label:"Providers",icon:mf},{id:"tools",label:"Tools",icon:xf},{id:"costs",label:"Costs",icon:ml},{id:"behavior",label:"Behavior",shortLabel:"Behavior",icon:si},{id:"projects",label:"Projects",icon:sf},{id:"gain",label:"Gain",icon:yf}];var sn=Q(de(),1);function Vv({activeSection:a,onSectionChange:o,className:s=""}){return sn.jsxDEV("aside",{className:`stats-nav-rail ${s}`,children:[sn.jsxDEV("div",{className:"stats-nav-rail-header",children:sn.jsxDEV("div",{className:"stats-logo-container",children:[sn.jsxDEV("span",{className:"stats-logo-text",children:"OH MY PI"},void 0,!1,void 0,this),sn.jsxDEV("span",{className:"stats-logo-subtext",children:"Observability"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),sn.jsxDEV("nav",{className:"stats-nav-rail-menu",children:Am.map((r)=>{let l=r.id===a,u=r.icon;return sn.jsxDEV("button",{type:"button",onClick:()=>o(r.id),className:"stats-nav-rail-item","data-active":l?"true":"false","aria-current":l?"page":void 0,children:[sn.jsxDEV(u,{size:16,className:"stats-nav-rail-item-icon"},void 0,!1,void 0,this),sn.jsxDEV("span",{className:"stats-nav-rail-item-label",children:r.label},void 0,!1,void 0,this)]},r.id,!0,void 0,this)})},void 0,!1,void 0,this),sn.jsxDEV("div",{className:"stats-nav-rail-footer",children:sn.jsxDEV("span",{className:"stats-version-tag",children:"OMP Stats v1.0.0"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var jv=Q(de(),1),YN=[{value:"1h",label:"1h"},{value:"24h",label:"24h"},{value:"7d",label:"7d"},{value:"30d",label:"30d"},{value:"90d",label:"90d"},{value:"all",label:"All"}];function sA({value:a,onChange:o,className:s=""}){return jv.jsxDEV("div",{className:`stats-range-control ${s}`,role:"radiogroup","aria-label":"Select time range",children:YN.map((r)=>{let l=r.value===a;return jv.jsxDEV("button",{type:"button",role:"radio","aria-checked":l,"data-active":l?"true":"false",className:"stats-range-control-btn",onClick:()=>o(r.value),children:r.label},r.value,!1,void 0,this)})},void 0,!1,void 0,this)}var Gv=Q(dt(),1);class rA extends Error{status;endpoint;constructor(a,o,s){super(s);this.name="ApiError",this.status=a,this.endpoint=o}}async function ao(a,o){let s=await fetch(a,o);if(!s.ok)throw new rA(s.status,a,`HTTP error ${s.status} on ${a}`);return s.json()}async function iA(a="24h",o){return ao(`/api/stats/overview?range=${encodeURIComponent(a)}`,{signal:o})}async function lA(a="24h",o){return ao(`/api/stats/model-dashboard?range=${encodeURIComponent(a)}`,{signal:o})}async function uA(a="24h",o){return ao(`/api/stats/costs?range=${encodeURIComponent(a)}`,{signal:o})}async function Rm(a=50,o){return ao(`/api/stats/recent?limit=${a}`,{signal:o})}async function cA(a="24h",o=50,s){return ao(`/api/stats/errors?range=${encodeURIComponent(a)}&limit=${o}`,{signal:s})}async function dA(a,o){return ao(`/api/request/${a}`,{signal:o})}async function fA(a){return ao("/api/sync",{signal:a})}async function pA(a="24h",o){return ao(`/api/stats/behavior?range=${encodeURIComponent(a)}`,{signal:o})}async function hA(a="24h",o){return ao(`/api/stats/folders?range=${encodeURIComponent(a)}`,{signal:o})}async function mA(a="24h",o,s){let r=new URLSearchParams({range:a});if(o)r.set("project",o);return ao(`/api/stats/gain?${r}`,{signal:s})}async function gA(a="24h",o){return ao(`/api/stats/tools?range=${encodeURIComponent(a)}`,{signal:o})}async function bA(a="24h",o){return ao(`/api/stats/providers?range=${encodeURIComponent(a)}`,{signal:o})}async function yA(a=100,o,s){let r=new URLSearchParams({limit:String(a)});if(o)r.set("q",o);return ao(`/api/sessions?${r}`,{signal:s})}async function xA(a,o){return ao(`/api/session/trace?file=${encodeURIComponent(a)}`,{signal:o})}async function vA(a,o,s){return ao(`/api/session/entry?file=${encodeURIComponent(a)}&id=${encodeURIComponent(o)}`,{signal:s})}var Sf=Q(de(),1);function SA({onSyncStart:a,onSyncComplete:o,className:s=""}){let[r,l]=Gv.useState(!1),[u,d]=Gv.useState(null),p=async()=>{if(r)return;if(l(!0),d(null),a)a();try{let h=await fA(),g={processed:typeof h?.processed==="number"?h.processed:0,files:typeof h?.files==="number"?h.files:0,totalMessages:typeof h?.totalMessages==="number"?h.totalMessages:0};if(d({type:"success",message:`Synced: ${g.processed} new request${g.processed===1?"":"s"} found.`}),o)o({success:!0,data:g})}catch(h){let g=h instanceof Error?h.message:String(h);if(d({type:"error",message:`Sync failed: ${g}`}),o)o({success:!1,error:g})}finally{l(!1)}};return Sf.jsxDEV("div",{className:`stats-sync-container ${s}`,children:[u&&Sf.jsxDEV("span",{className:"stats-sync-status-msg","data-type":u.type,children:u.message},void 0,!1,void 0,this),Sf.jsxDEV("button",{type:"button",onClick:p,disabled:r,className:"stats-button stats-button-primary stats-sync-btn","aria-busy":r,children:[Sf.jsxDEV(bl,{size:14,className:`stats-sync-icon ${r?"stats-spin":""}`},void 0,!1,void 0,this),r?"Syncing...":"Sync DB"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Dm=Q(dt(),1),LA="omp-stats-theme",CA="(prefers-color-scheme: dark)";function $N(){if(typeof localStorage>"u")return"system";let a=localStorage.getItem(LA);return a==="light"||a==="dark"||a==="system"?a:"system"}function TA(){if(typeof window>"u")return"dark";return window.matchMedia(CA).matches?"dark":"light"}var xl=$N(),Lf=xl==="system"?TA():xl,Xv=new Set;function wA(){for(let a of Xv)a()}function Yv(){if(Lf=xl==="system"?TA():xl,typeof document<"u")document.documentElement.dataset.theme=Lf,document.documentElement.style.colorScheme=Lf}if(typeof window<"u")Yv(),window.matchMedia(CA).addEventListener("change",()=>{if(xl==="system")Yv(),wA()});function WN(a){if(xl=a,typeof localStorage<"u")localStorage.setItem(LA,a);Yv(),wA()}function $v(a){return Xv.add(a),()=>Xv.delete(a)}function $t(){return Dm.useSyncExternalStore($v,()=>Lf,()=>"dark")}function kA(){let a=Dm.useSyncExternalStore($v,()=>xl,()=>"system"),o=Dm.useSyncExternalStore($v,()=>Lf,()=>"dark");return{preference:a,resolved:o,setPreference:WN}}var Wv=Q(de(),1),ZN={system:"light",light:"dark",dark:"system"},QN={system:pf,light:bf,dark:hf},MA={system:"System theme",light:"Light theme",dark:"Dark theme"};function IA(){let{preference:a,setPreference:o}=kA(),s=QN[a];return Wv.jsxDEV("button",{type:"button",className:"stats-theme-toggle",onClick:()=>o(ZN[a]),"aria-label":`${MA[a]} (click to switch)`,title:`${MA[a]} — click to switch`,children:Wv.jsxDEV(s,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var rn=Q(de(),1);function AA({activeSection:a,range:o,onRangeChange:s,updatedAt:r,onSyncStart:l,onSyncComplete:u,onMenuToggle:d,className:p=""}){let g=Am.find((b)=>b.id===a)?.label||"Observability",y=(b)=>{if(!b)return"Not updated";return`Updated ${new Date(b).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}`};return rn.jsxDEV("header",{className:`stats-top-bar ${p}`,children:[rn.jsxDEV("div",{className:"stats-top-bar-left",children:[d&&rn.jsxDEV("button",{type:"button",onClick:d,className:"stats-mobile-menu-btn","aria-label":"Open navigation menu",children:rn.jsxDEV(ff,{size:20},void 0,!1,void 0,this)},void 0,!1,void 0,this),rn.jsxDEV("h1",{className:"stats-page-title",children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rn.jsxDEV("div",{className:"stats-top-bar-right",children:[rn.jsxDEV("div",{className:"stats-top-bar-meta",children:rn.jsxDEV("span",{className:"stats-last-updated",title:r?new Date(r).toLocaleString():void 0,children:y(r)},void 0,!1,void 0,this)},void 0,!1,void 0,this),rn.jsxDEV(sA,{value:o,onChange:s},void 0,!1,void 0,this),rn.jsxDEV(IA,{},void 0,!1,void 0,this),rn.jsxDEV(SA,{onSyncStart:l,onSyncComplete:u},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Ga=Q(de(),1);function DA({activeSection:a,onSectionChange:o,range:s,onRangeChange:r,updatedAt:l,onSyncStart:u,onSyncComplete:d,children:p}){let[h,g]=RA.useState(!1),y=(b)=>{o(b),g(!1)};return Ga.jsxDEV("div",{className:"stats-app-container",children:[Ga.jsxDEV(Vv,{activeSection:a,onSectionChange:y,className:"stats-desktop-nav"},void 0,!1,void 0,this),h&&Ga.jsxDEV("div",{className:"stats-mobile-drawer-overlay",onClick:()=>g(!1),role:"presentation",children:Ga.jsxDEV("div",{className:"stats-mobile-drawer",onClick:(b)=>b.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Navigation menu",children:[Ga.jsxDEV("div",{className:"stats-mobile-drawer-header",children:[Ga.jsxDEV("div",{className:"stats-logo-container",children:[Ga.jsxDEV("span",{className:"stats-logo-text",children:"OH MY PI"},void 0,!1,void 0,this),Ga.jsxDEV("span",{className:"stats-logo-subtext",children:"Observability"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ga.jsxDEV("button",{type:"button",onClick:()=>g(!1),className:"stats-drawer-close-btn","aria-label":"Close navigation menu",children:Ga.jsxDEV(Ys,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ga.jsxDEV(Vv,{activeSection:a,onSectionChange:y,className:"stats-mobile-nav"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),Ga.jsxDEV("div",{className:"stats-main-pane",children:[Ga.jsxDEV(AA,{activeSection:a,range:s,onRangeChange:r,updatedAt:l,onSyncStart:u,onSyncComplete:d,onMenuToggle:()=>g(!0)},void 0,!1,void 0,this),Ga.jsxDEV("main",{className:"stats-content-area",children:Ga.jsxDEV("div",{className:"stats-content-inner",children:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var rs=Q(dt(),1),KN=["overview","requests","traces","errors","models","providers","tools","costs","behavior","projects","gain"],_A=["1h","24h","7d","30d","90d","all"];function Zv(a){let o=a.replace(/^#\/?/,""),[s,r]=o.split("?"),l=KN.includes(s)?s:"overview",u="24h",d=null;if(r){let p=new URLSearchParams(r),h=p.get("range");if(_A.includes(h))u=h;d=p.get("s")}return{section:l,range:u,session:d}}function Qv(a,o,s){let r=s?`&s=${encodeURIComponent(s)}`:"";return`/${a}?range=${o}${r}`}function EA(){let[a,o]=rs.useState(()=>Zv(window.location.hash));rs.useEffect(()=>{let d=()=>{o(Zv(window.location.hash))};return window.addEventListener("hashchange",d),()=>{window.removeEventListener("hashchange",d)}},[]);let s=rs.useCallback((d,p,h)=>{window.location.hash=Qv(d,p,h)},[]),r=rs.useCallback((d)=>{s(d,a.range,d==="traces"?a.session:null)},[a.range,a.session,s]),l=rs.useCallback((d)=>{let p=_A.includes(d)?d:"24h";s(a.section,p,a.session)},[a.section,a.session,s]),u=rs.useCallback((d)=>{s(a.section,a.range,d)},[a.section,a.range,s]);return rs.useEffect(()=>{let d=window.location.hash,p=Zv(d),h=`#${Qv(p.section,p.range,p.session)}`;if(d!==h)window.location.hash=Qv(p.section,p.range,p.session)},[]),{section:a.section,setSection:r,range:a.range,setRange:l,session:a.session,setSession:u}}var OA=["January","February","March","April","May","June","July","August","September","October","November","December"],PA=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],JN=["MMMM","yyyy","EEEE","MMM","EEE","yy","MM","dd","HH","hh","mm","ss","M","d","H","h","m","s","a"];function ri(a,o=2){return String(a).padStart(o,"0")}function ez(a,o){let s=a.getMonth(),r=a.getDay(),l=a.getHours(),u=l%12||12;switch(o){case"yyyy":return ri(a.getFullYear(),4);case"yy":return ri(a.getFullYear()%100);case"MMMM":return OA[s];case"MMM":return OA[s].slice(0,3);case"MM":return ri(s+1);case"M":return String(s+1);case"dd":return ri(a.getDate());case"d":return String(a.getDate());case"EEEE":return PA[r];case"EEE":return PA[r].slice(0,3);case"HH":return ri(l);case"H":return String(l);case"hh":return ri(u);case"h":return String(u);case"mm":return ri(a.getMinutes());case"m":return String(a.getMinutes());case"ss":return ri(a.getSeconds());case"s":return String(a.getSeconds());case"a":return l<12?"AM":"PM"}}function NA(a){let o=a instanceof Date?new Date(a.getTime()):new Date(a);if(Number.isNaN(o.getTime()))throw RangeError("Invalid time value");return o}function Cn(a,o){let s=NA(a),r="";for(let l=0;l<o.length;){if(o[l]==="'"){if(o[l+1]==="'"){r+="'",l+=2;continue}l++;while(l<o.length){if(o[l]!=="'"){r+=o[l++];continue}if(o[l+1]==="'"){r+="'",l+=2;continue}l++;break}continue}let u=o.slice(l),d=JN.find((h)=>u.startsWith(h));if(d){r+=ez(s,d),l+=d.length;continue}let p=o[l++];if(/[A-Za-z]/.test(p))throw RangeError(`Format string contains an unescaped latin alphabet character \`${p}\``);r+=p}return r}function ii(a,o){return`${a} ${a===1?o:`${o}s`}`}function tz(a,o){let s=(o.getFullYear()-a.getFullYear())*12+o.getMonth()-a.getMonth();if(s===0)return 0;let r=new Date(a);r.setDate(1),r.setFullYear(a.getFullYear(),a.getMonth()+s,1);let l=new Date(r.getFullYear(),r.getMonth()+1,0).getDate();if(r.setDate(Math.min(a.getDate(),l)),r.getTime()>o.getTime())s--;return s}function BA(a,o){let s=(o.getTime()-a.getTime())/1000,r=(o.getTimezoneOffset()-a.getTimezoneOffset())*60,l=Math.round((s-r)/60);if(l<2)return l===0?"less than a minute":"1 minute";if(l<45)return ii(l,"minute");if(l<90)return"about 1 hour";if(l<1440)return`about ${ii(Math.round(l/60),"hour")}`;if(l<2520)return"1 day";if(l<43200)return ii(Math.round(l/1440),"day");if(l<86400)return`about ${ii(Math.round(l/43200),"month")}`;let u=tz(a,o);if(u<12)return ii(Math.round(l/43200),"month");let d=Math.trunc(u/12),p=u%12;if(p<3)return`about ${ii(d,"year")}`;if(p<9)return`over ${ii(d,"year")}`;return`almost ${ii(d+1,"year")}`}function zA(a,o={}){let s=NA(a),r=new Date(Date.now()),l=s.getTime()>r.getTime(),u=l?BA(r,s):BA(s,r);if(!o.addSuffix)return u;return l?`in ${u}`:`${u} ago`}var xa=Q(dt(),1);var Kv=Q(HA(),1),Ho=Q(dt(),1);var FA="label";function UA(a,o){if(typeof a==="function")a(o);else if(a)a.current=o}function oz(a,o){let s=a.options;if(s&&o)Object.assign(s,o)}function qA(a,o){a.labels=o}function VA(a,o,s=FA){let r=[];a.datasets=o.map((l)=>{let u=a.datasets.find((d)=>d[s]===l[s]);if(!u||!l.data||r.includes(u))return{...l};return r.push(u),Object.assign(u,l),u})}function nz(a,o=FA){let s={labels:[],datasets:[]};return qA(s,a.labels),VA(s,a.datasets,o),s}function sz(a,o){let{height:s=150,width:r=300,redraw:l=!1,datasetIdKey:u,type:d,data:p,options:h,plugins:g=[],fallbackContent:y,updateMode:b,...v}=a,T=Ho.useRef(null),M=Ho.useRef(null),I=()=>{if(!T.current)return;M.current=new dl(T.current,{type:d,data:nz(p,u),options:h&&{...h},plugins:g}),UA(o,M.current)},w=()=>{if(UA(o,null),M.current)M.current.destroy(),M.current=null};return Ho.useEffect(()=>{if(!l&&M.current&&h)oz(M.current,h)},[l,h]),Ho.useEffect(()=>{if(!l&&M.current)qA(M.current.config.data,p.labels)},[l,p.labels]),Ho.useEffect(()=>{if(!l&&M.current&&p.datasets)VA(M.current.config.data,p.datasets,u)},[l,p.datasets]),Ho.useEffect(()=>{if(!M.current)return;if(l)w(),setTimeout(I);else M.current.update(b)},[l,h,p.labels,p.datasets,b]),Ho.useEffect(()=>{if(!M.current)return;w(),setTimeout(I)},[d]),Ho.useEffect(()=>(I(),()=>w()),[]),Kv.jsx("canvas",{ref:T,role:"img",height:s,width:r,...v,children:y})}var rz=Ho.forwardRef(sz);function jA(a,o){return dl.register(o),Ho.forwardRef((s,r)=>Kv.jsx(rz,{...s,ref:r,type:a}))}var Xa=jA("line",Dv),li=jA("bar",Rv);var yt=["#ed4abf","#9b4dff","#5ad8e6","#62d394","#c77dff","#ff8fd1","#f5c14b","#ff6b7d"];function GA(a){let o=[...a].sort((s,r)=>r.totalRequests-s.totalRequests||`${s.model}::${s.provider}`.localeCompare(`${r.model}::${r.provider}`));return new Map(o.map((s,r)=>[`${s.model}::${s.provider}`,yt[r%yt.length]]))}var ra={dark:{legendLabel:"#a89fb3",tooltipBackground:"#241a2e",tooltipTitle:"#eae5ef",tooltipBody:"#a89fb3",tooltipBorder:"rgba(255, 255, 255, 0.12)",grid:"rgba(255, 255, 255, 0.06)",tick:"#867a93"},light:{legendLabel:"#5a5462",tooltipBackground:"#ffffff",tooltipTitle:"#241a2e",tooltipBody:"#5a5462",tooltipBorder:"rgba(20, 12, 28, 0.15)",grid:"rgba(20, 12, 28, 0.08)",tick:"#6a6275"}};function is(a){let{chartTheme:o,showLegend:s,defaultLabel:r,formatValue:l,footer:u}=a;return{legend:{display:s,position:"top",align:"start",labels:{color:o.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:o.tooltipBackground,titleColor:o.tooltipTitle,bodyColor:o.tooltipBody,borderColor:o.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(d)=>{let p=d.dataset.label??r,h=d.parsed.y??0;return`${p}: ${l(h)}`},...u?{footer:u}:{}}}}}function ls(a){let{chartTheme:o,formatY:s}=a,r={grid:{color:o.grid,drawBorder:!1},ticks:{color:o.tick,font:{size:11}}},l={...r,ticks:{...r.ticks,callback:(u)=>s(Number(u))},min:0};return{sharedScaleBase:r,yScale:l}}function Vu(a){return{borderColor:a,backgroundColor:`${a}20`,fill:!0,tension:0,pointRadius:3,pointHoverRadius:4,borderWidth:2}}function Sl(a){return{backgroundColor:a,borderColor:a,borderWidth:0,borderRadius:4,maxBarThickness:56}}function ui(a,o){return a.datasets.map((s,r)=>({label:s.label,data:s.data,...o(r)}))}function _m(a,o,s){if(a.length===0)return{labels:[],datasets:[]};let{initBucket:r,accumulate:l,bucketToValue:u}=s,d=new Map;for(let h of a){let g=d.get(h.timestamp)??r();l(g,h),d.set(h.timestamp,g)}let p=[...d.entries()].sort((h,g)=>h[0]-g[0]);return{labels:p.map(([h])=>Cn(new Date(h),"MMM d")),datasets:[{label:o,data:p.map(([,h])=>u(h))}]}}function ju(a,o){if(a.length===0)return{labels:[],datasets:[]};let{topN:s=5,rankWeight:r,initBucket:l,accumulate:u,bucketToValue:d}=o,p=new Map;for(let A of a){let B=`${A.model}::${A.provider}`,z=p.get(B);if(z)z.weight+=r(A);else p.set(B,{model:A.model,provider:A.provider,weight:r(A)})}let g=[...p.entries()].sort((A,B)=>B[1].weight-A[1].weight).slice(0,s),y=new Set(g.map(([A])=>A)),b=new Map;for(let[,{model:A}]of g)b.set(A,(b.get(A)??0)+1);let v=new Map;for(let[A,{model:B,provider:z}]of g)v.set(A,(b.get(B)??0)>1?`${B} (${z})`:B);let T=[...new Set(a.map((A)=>A.timestamp))].sort((A,B)=>A-B),M=g.map(([A])=>v.get(A)??A);if(a.some((A)=>!y.has(`${A.model}::${A.provider}`)))M.push("Other");let w=new Map;for(let A of T)w.set(A,{});for(let A of a){let B=`${A.model}::${A.provider}`,z=y.has(B)?v.get(B)??A.model:"Other",H=w.get(A.timestamp);if(!H)continue;let q=H[z]??l();u(q,A),H[z]=q}return{labels:T.map((A)=>Cn(new Date(A),"MMM d")),datasets:M.map((A)=>({label:A,data:T.map((B)=>{let z=w.get(B)?.[A];return z?d(z):0})}))}}var Wt=Q(de(),1);function $s(a){return{borderColor:a,backgroundColor:"transparent",tension:0.4,pointRadius:0,borderWidth:2}}function Em({timestamps:a,values:o,color:s}){let r={labels:a.map((u)=>Cn(new Date(u),"MMM d")),datasets:[{data:o,...$s(s)}]};return Wt.jsxDEV(Xa,{data:r,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1,min:0}}}},void 0,!1,void 0,this)}function Om(a){return{legend:{display:!0,position:"top",labels:{color:a.legendLabel,usePointStyle:!0,padding:16,font:{size:12}}},tooltip:{backgroundColor:a.tooltipBackground,titleColor:a.tooltipTitle,bodyColor:a.tooltipBody,borderColor:a.tooltipBorder,borderWidth:1,cornerRadius:8}}}function XA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}},min:0}}}function YA(a){return{x:{grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y:{type:"linear",display:!0,position:"left",grid:{color:a.grid},ticks:{color:a.tick,font:{size:11}}},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1},ticks:{color:a.tick,font:{size:11}}}}}function Pm({title:a,subtitle:o,children:s}){return Wt.jsxDEV("div",{className:"stats-panel overflow-hidden",children:[Wt.jsxDEV("div",{className:"px-5 py-4 border-b border-[var(--border-subtle)]",children:[Wt.jsxDEV("h3",{className:"text-sm font-semibold text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),o?Wt.jsxDEV("p",{className:"text-xs text-[var(--text-muted)] mt-1",children:o},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),Wt.jsxDEV("div",{className:"overflow-x-auto",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function iz(a){if(a==="right")return"text-right";if(a==="center")return"text-center";return""}function Bm({columns:a,gridTemplate:o}){return Wt.jsxDEV("div",{className:"grid gap-3 px-5 py-3 text-[var(--text-muted)] text-xs uppercase tracking-wider font-semibold",style:{gridTemplateColumns:o},children:[a.map((s)=>Wt.jsxDEV("div",{className:iz(s.align),children:s.label},s.label,!1,void 0,this)),Wt.jsxDEV("div",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Nm({children:a}){return Wt.jsxDEV("div",{className:"max-h-[calc(100vh-300px)] overflow-y-auto",children:a},void 0,!1,void 0,this)}function zm({model:a,provider:o}){return Wt.jsxDEV("div",{children:[Wt.jsxDEV("div",{className:"font-medium text-[var(--text-primary)]",children:a},void 0,!1,void 0,this),Wt.jsxDEV("div",{className:"text-xs text-[var(--text-muted)]",children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Hm({gridTemplate:a,cells:o,trendCell:s,isExpanded:r,onToggle:l,expandedContent:u}){return Wt.jsxDEV("div",{className:"border-t border-[var(--border-subtle)]",children:[Wt.jsxDEV("button",{type:"button",onClick:l,className:"w-full bg-transparent border-none text-left px-5 py-3 cursor-pointer hover:bg-[var(--bg-hover)] transition-colors",children:Wt.jsxDEV("div",{className:"grid gap-3 items-center",style:{gridTemplateColumns:a},children:[o,Wt.jsxDEV("div",{className:"h-10",children:s},void 0,!1,void 0,this),Wt.jsxDEV("div",{className:"flex justify-center text-[var(--text-muted)]",children:r?Wt.jsxDEV(af,{size:16},void 0,!1,void 0,this):Wt.jsxDEV(Xs,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r?Wt.jsxDEV("div",{className:"px-5 py-4 bg-[var(--bg-elevated)] border-t border-[var(--border-subtle)]",children:u},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function Um(){return Wt.jsxDEV("div",{className:"text-[var(--text-muted)] text-center text-sm",children:"-"},void 0,!1,void 0,this)}function Fm({message:a="No data available"}){return Wt.jsxDEV("div",{className:"h-full flex items-center justify-center text-[var(--text-muted)] text-sm",children:a},void 0,!1,void 0,this)}function Ce(a){return a.toLocaleString()}function lt(a){return a.toLocaleString(void 0,{notation:"compact"})}function Cf(a,o){if(a===0)return"$0";let s=o!==void 0?o:a>0&&a<0.01?4:2;return`$${a.toLocaleString(void 0,{minimumFractionDigits:s,maximumFractionDigits:s})}`}function ea(a,o,s){return a===0&&o>0?"N/A":Cf(a,s)}function ln(a,o){let s=a.usage.totalTokens>0&&a.usage.cost.total===0&&(a.provider==="xai-oauth"||a.costUnpriced===!0)?1:0;return ea(a.usage.cost.total,s,o)}function Ht(a,o=1){return`${(a*100).toFixed(o)}%`}function rt(a,o){if(a===null)return"-";let s=a/1000,r=o!==void 0?o:s<1?2:1;return`${s.toFixed(r)}s`}function qm(a){if(a===null)return"-";return a.toFixed(1)}function za(a){return zA(new Date(a),{addSuffix:!0})}function Jv(a){if(a>=1e9)return`${(a/1e9).toFixed(1)} GB`;if(a>=1e6)return`${(a/1e6).toFixed(1)} MB`;if(a>=1000)return`${(a/1000).toFixed(1)} KB`;return`${a} B`}var Ha=Q(dt(),1),ci=new Map,lz=64;function Vt(a,o,s){let r=JSON.stringify(a),[l,u]=Ha.useState(()=>ci.get(r)?.data??null),[d,p]=Ha.useState(null),[h,g]=Ha.useState(()=>!ci.has(r)),[y,b]=Ha.useState(!1),[v,T]=Ha.useState(()=>ci.get(r)?.updatedAt??null),M=Ha.useRef(o);M.current=o;let I=Ha.useRef(r);I.current=r;let w=s?.enabled??!0,A=s?.pollMs,B=Ha.useRef(null),z=Ha.useRef(!1);z.current=l!==null;let H=Ha.useCallback(async(j)=>{if(B.current)B.current.abort();let G=new AbortController;if(B.current=G,j)b(!0);else g(!0),u(null);p(null);try{let Y=await M.current(G.signal);if(G.signal.aborted)return;if(ci.set(I.current,{data:Y,updatedAt:Date.now()}),ci.size>lz){let J=ci.keys().next().value;if(J!==void 0)ci.delete(J)}u(Y),T(Date.now()),p(null)}catch(Y){if(G.signal.aborted)return;p(Y instanceof Error?Y:Error(String(Y)))}finally{if(!G.signal.aborted){if(g(!1),b(!1),B.current===G)B.current=null}}},[]);Ha.useEffect(()=>{if(!w){g(!1),b(!1);return}let j=ci.get(r);if(j)u(j.data),T(j.updatedAt),g(!1),H(!0);else H(z.current);return()=>{if(B.current)B.current.abort(),B.current=null}},[r,w,H]),Ha.useEffect(()=>{if(!w||!A)return;let j=setInterval(()=>{if(document.hidden)return;H(!0)},A);return()=>{clearInterval(j)}},[w,A,H]);let q=Ha.useCallback(async()=>{await H(!0)},[H]);return{data:l,error:d,loading:h,refreshing:y,refetch:q,updatedAt:v}}var $A=3600000,Vm=24*$A,uz=300000,WA={"1h":{windowLabel:"the last hour",trendLabel:"1h Trend",bucketMs:uz,bucketCount:12,tickFormat:"HH:mm"},"24h":{windowLabel:"the last 24 hours",trendLabel:"24h Trend",bucketMs:$A,bucketCount:24,tickFormat:"HH:mm"},"7d":{windowLabel:"the last 7 days",trendLabel:"7d Trend",bucketMs:Vm,bucketCount:7,tickFormat:"MMM d"},"30d":{windowLabel:"the last 30 days",trendLabel:"30d Trend",bucketMs:Vm,bucketCount:30,tickFormat:"MMM d"},"90d":{windowLabel:"the last 90 days",trendLabel:"90d Trend",bucketMs:Vm,bucketCount:90,tickFormat:"MMM d"},all:{windowLabel:"all time",trendLabel:"Trend",bucketMs:Vm,bucketCount:0,tickFormat:"MMM d"}};function Ll(a){return WA[a]}function Tf(a,o){return Cn(new Date(a),WA[o].tickFormat)}var cz=["main","subagent","advisor"];function jm(a){return a.totalInputTokens+a.totalOutputTokens+a.totalCacheReadTokens+a.totalCacheWriteTokens}function ZA(a){let o=new Map;for(let d of a)o.set(d.agentType,d);let s=cz.map((d)=>o.get(d)).filter((d)=>d!==void 0),r=s.reduce((d,p)=>d+jm(p),0),l=s.reduce((d,p)=>d+p.totalCost,0),u=s.map((d)=>{let p=jm(d);return{agentType:d.agentType,tokens:p,requests:d.totalRequests,cost:d.totalCost,share:r>0?p/r:0}});return{totalTokens:r,totalCost:l,segments:u}}function QA(a){let o=a.reduce((h,g)=>h+g.cost,0),s=a.reduce((h,g)=>h+g.unpricedRequests,0),r=new Set(a.map((h)=>h.timestamp)).size,l=r>0?o/r:0,u=new Map;for(let h of a)u.set(h.model,(u.get(h.model)??0)+h.cost);let d="",p=0;for(let[h,g]of u)if(g>p)d=h,p=g;return{totalCost:o,unpricedRequests:s,avgDailyCost:l,topModelName:d,topModelCost:p}}function KA(a,o){if(a.length===0)return new Map;let s=Ll(o),{bucketMs:r,bucketCount:l}=s,u=l>0?(()=>{let h=a.reduce((b,v)=>Math.max(b,v.timestamp),0),y=(h>0?h:Math.floor(Date.now()/r)*r)-(l-1)*r;return Array.from({length:l},(b,v)=>y+v*r)})():Array.from(new Set(a.map((h)=>h.timestamp))).sort((h,g)=>h-g),d=new Map(u.map((h,g)=>[h,g])),p=new Map;for(let h of a){let g=`${h.model}::${h.provider}`,y=p.get(g);if(!y)y={label:`${h.model} (${h.provider})`,data:u.map((v)=>({timestamp:v,avgTtftSeconds:null,avgTokensPerSecond:null,requests:0}))},p.set(g,y);let b=d.get(h.timestamp);if(b===void 0)continue;y.data[b]={timestamp:h.timestamp,avgTtftSeconds:h.avgTtft!==null?h.avgTtft/1000:null,avgTokensPerSecond:h.avgTokensPerSecond,requests:h.requests}}return p}function JA(a,o){let s=a.totalNegation+a.totalRepetition+a.totalBlame,r=new Map;for(let u of o){let d=`${u.model}::${u.provider}`,p=r.get(d),h=u.yelling+u.profanity+u.anguish+u.negation+u.repetition+u.blame;if(p)p.score+=h;else r.set(d,{model:u.model,provider:u.provider,score:h})}let l=null;for(let u of r.values())if(!l||u.score>l.score)l=u;return{totalMessages:a.totalMessages,totalYelling:a.totalYelling,totalProfanity:a.totalProfanity,totalAnguish:a.totalAnguish,totalFrustration:s,highestFrictionModel:l}}function eR(a){let o=[...a].sort((l,u)=>{if(u.totalCost!==l.totalCost)return u.totalCost-l.totalCost;return u.totalRequests-l.totalRequests}),s=o.reduce((l,u)=>Math.max(l,u.totalCost),0),r=o.reduce((l,u)=>Math.max(l,u.totalRequests),0);return o.map((l)=>({...l,costPercentage:s>0?l.totalCost/s*100:0,requestsPercentage:r>0?l.totalRequests/r*100:0}))}function tR(a){let o=a.reduce((s,r)=>Math.max(s,r.calls),0);return a.map((s)=>({...s,errorRate:s.calls>0?s.errors/s.calls:0,callsPercentage:o>0?s.calls/o*100:0}))}var Gm=Q(de(),1);function Gu({message:a="No data available",icon:o=uf,className:s=""}){return Gm.jsxDEV("div",{className:`stats-empty-state ${s}`,children:[Gm.jsxDEV(o,{size:24,className:"stats-empty-state-icon","aria-hidden":"true"},void 0,!1,void 0,this),Gm.jsxDEV("p",{className:"stats-empty-state-message",children:a},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Xu=Q(de(),1);function aR({error:a,onRetry:o,className:s=""}){return Xu.jsxDEV("div",{className:`stats-error-state ${s}`,children:Xu.jsxDEV("div",{className:"stats-error-state-content",children:[Xu.jsxDEV("h4",{className:"stats-error-state-title",children:"Failed to load data"},void 0,!1,void 0,this),a&&Xu.jsxDEV("p",{className:"stats-error-state-message",children:a.message},void 0,!1,void 0,this),o&&Xu.jsxDEV("button",{type:"button",onClick:o,className:"stats-button stats-button-secondary stats-error-state-btn",children:"Retry"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var oR=Q(de(),1);function Ua({variant:a="text",width:o,height:s,className:r=""}){let l={width:o!==void 0?typeof o==="number"?`${o}px`:o:void 0,height:s!==void 0?typeof s==="number"?`${s}px`:s:void 0};return oR.jsxDEV("div",{className:`stats-skeleton ${r}`,"data-variant":a,style:l},void 0,!1,void 0,this)}var Uo=Q(de(),1);function Rt({loading:a,error:o,data:s,empty:r=!1,emptyText:l="No data available",fallback:u,onRetry:d,children:p}){if(o&&s===null)return Uo.jsxDEV(aR,{error:o,onRetry:d},void 0,!1,void 0,this);if(a&&s===null){if(u)return Uo.jsxDEV(Uo.Fragment,{children:u},void 0,!1,void 0,this);return Uo.jsxDEV("div",{className:"stats-boundary-skeleton",children:[Uo.jsxDEV(Ua,{variant:"text",width:"60%",height:24,className:"mb-4"},void 0,!1,void 0,this),Uo.jsxDEV(Ua,{variant:"rect",width:"100%",height:160,className:"mb-4"},void 0,!1,void 0,this),Uo.jsxDEV(Ua,{variant:"text",width:"80%",height:20,className:"mb-2"},void 0,!1,void 0,this),Uo.jsxDEV(Ua,{variant:"text",width:"40%",height:20},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(!a&&(r||s===null))return Uo.jsxDEV(Gu,{message:l},void 0,!1,void 0,this);return Uo.jsxDEV(Uo.Fragment,{children:p},void 0,!1,void 0,this)}var xo=Q(de(),1);function Ma({columns:a,data:o,keyExtractor:s,onRowClick:r,renderMobileCard:l,emptyText:u="No data available"}){let d=(p,h)=>{if(r&&(p.key==="Enter"||p.key===" "))p.preventDefault(),r(h)};if(o.length===0)return xo.jsxDEV("div",{className:"stats-table-empty",children:u},void 0,!1,void 0,this);return xo.jsxDEV("div",{className:"stats-table-wrapper",children:[l&&xo.jsxDEV("div",{className:"stats-table-mobile-only",children:xo.jsxDEV("div",{className:"stats-table-mobile-list",children:o.map((p)=>{let h=String(s(p));return xo.jsxDEV("div",{className:"stats-table-mobile-card-wrapper",children:l(p,r?()=>r(p):void 0)},h,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),xo.jsxDEV("div",{className:l?"stats-table-desktop-only":"stats-table-container",children:xo.jsxDEV("table",{className:"stats-table",children:[xo.jsxDEV("thead",{children:xo.jsxDEV("tr",{children:a.map((p)=>{let h=["stats-table-th",p.numeric?"stats-text-right":"stats-text-left",p.className||""].filter(Boolean).join(" ");return xo.jsxDEV("th",{className:h,children:p.header},p.key,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),xo.jsxDEV("tbody",{children:o.map((p)=>{let h=String(s(p)),g=typeof r==="function",y=["stats-table-tr",g?"stats-table-tr-clickable":""].filter(Boolean).join(" ");return xo.jsxDEV("tr",{className:y,onClick:g?()=>r(p):void 0,onKeyDown:g?(b)=>d(b,p):void 0,tabIndex:g?0:void 0,role:g?"button":void 0,children:a.map((b)=>{let v=["stats-table-td",b.numeric?"stats-text-right":"stats-text-left",b.className||""].filter(Boolean).join(" ");return xo.jsxDEV("td",{className:v,children:b.render?b.render(p):p[b.key]},b.key,!1,void 0,this)})},h,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Cl=Q(dt(),1),un=Q(de(),1);function wf({data:a,title:o,initialCollapsed:s=!1}){let[r,l]=Cl.useState(s),[u,d]=Cl.useState(!1),p=Cl.useRef(0),h=JSON.stringify(a,null,2);return Cl.useEffect(()=>()=>window.clearTimeout(p.current),[]),un.jsxDEV("div",{className:"stats-json-block",children:[un.jsxDEV("div",{className:"stats-json-block-header",onClick:()=>l(!r),onKeyDown:(b)=>{if(b.key==="Enter"||b.key===" ")b.preventDefault(),l(!r)},tabIndex:0,role:"button","aria-expanded":!r,children:[un.jsxDEV("span",{className:"stats-json-block-title",children:o||"JSON"},void 0,!1,void 0,this),un.jsxDEV("div",{className:"stats-json-actions",children:[un.jsxDEV("button",{type:"button",className:"stats-json-copy-btn",onClick:async(b)=>{b.stopPropagation();try{await navigator.clipboard.writeText(h),d(!0),window.clearTimeout(p.current),p.current=window.setTimeout(()=>d(!1),1500)}catch{}},"aria-label":u?"Copied to clipboard":"Copy JSON to clipboard",children:[u?un.jsxDEV(pl,{size:13},void 0,!1,void 0,this):un.jsxDEV(gl,{size:13},void 0,!1,void 0,this),u?"Copied":"Copy"]},void 0,!0,void 0,this),un.jsxDEV("span",{className:"stats-json-block-toggle-indicator","data-collapsed":r,children:r?"▶ Show":"▼ Hide"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!r&&un.jsxDEV("div",{className:"stats-json-block-content-wrapper",children:un.jsxDEV("pre",{className:"stats-json-block-content",children:un.jsxDEV("code",{children:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var qe=Q(de(),1);function nR({stats:a}){let o=jm(a);return qe.jsxDEV("div",{className:"stats-metric-cluster",children:[qe.jsxDEV("div",{className:"stats-metric-primary-grid",children:[qe.jsxDEV("div",{className:"stats-metric-card primary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:ea(a.totalCost,a.unpricedRequests,a.totalCost>0&&a.totalCost<0.01?4:2)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Requests"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ce(a.totalRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",title:"Prompt-input cost saved versus billing the same tokens uncached; cache writes can make this negative",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Cache Savings"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ht(a.cacheSavings)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",title:"Prompt input served from cache: cache reads / (uncached input + cache reads)",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Cache Rate"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ht(a.cacheRate)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card primary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Error Rate"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ht(a.errorRate)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-secondary-grid",children:[qe.jsxDEV("div",{className:"stats-metric-card secondary",title:"Conversation input not served from cache",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Uncached Input"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(a.totalInputTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",title:"Conversation input read from the prompt cache",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Cache Read"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(a.totalCacheReadTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Output Tokens"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(a.totalOutputTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",title:"Uncached input + cache reads + cache writes + output",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Conversation Total"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:lt(o)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Premium Requests"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:Ce(a.totalPremiumRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Tokens/s"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:qm(a.avgTokensPerSecond)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Avg Latency"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:rt(a.avgDuration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),qe.jsxDEV("div",{className:"stats-metric-card secondary",children:[qe.jsxDEV("div",{className:"stats-metric-label",children:"Avg TTFT"},void 0,!1,void 0,this),qe.jsxDEV("div",{className:"stats-metric-value",children:rt(a.avgTtft)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var di=Q(de(),1);function ut({title:a,subtitle:o,actions:s,children:r,className:l="",...u}){return di.jsxDEV("div",{className:`stats-panel ${l}`,...u,children:[(a||o||s)&&di.jsxDEV("div",{className:"stats-panel-header",children:[di.jsxDEV("div",{className:"stats-panel-header-titles",children:[a&&di.jsxDEV("h3",{className:"stats-panel-title",children:a},void 0,!1,void 0,this),o&&di.jsxDEV("p",{className:"stats-panel-subtitle",children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&di.jsxDEV("div",{className:"stats-panel-actions",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),di.jsxDEV("div",{className:"stats-panel-body",children:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var us=Q(dt(),1);var sR=Q(de(),1);function ya({variant:a,children:o,className:s=""}){return sR.jsxDEV("span",{className:`stats-status-pill ${s}`,"data-variant":a,children:o},void 0,!1,void 0,this)}var ke=Q(de(),1);function rR({id:a,onClose:o}){let[s,r]=us.useState(null),[l,u]=us.useState(!1),[d,p]=us.useState(null),h=us.useRef(null),g=us.useRef(null);if(us.useEffect(()=>{if(a===null){r(null);return}h.current=document.activeElement,u(!0),p(null),r(null);let b=new AbortController;return dA(a,b.signal).then((v)=>{if(b.signal.aborted)return;r(v),setTimeout(()=>g.current?.focus(),50)}).catch((v)=>{if(b.signal.aborted)return;p(v instanceof Error?v:Error(String(v)))}).finally(()=>{if(!b.signal.aborted)u(!1)}),()=>b.abort()},[a]),us.useEffect(()=>{if(a===null)return;let b=(v)=>{if(v.key==="Escape")o()};return window.addEventListener("keydown",b),()=>{if(window.removeEventListener("keydown",b),h.current)h.current.focus()}},[a,o]),a===null)return null;return ke.jsxDEV("div",{className:"stats-drawer-overlay",onClick:(b)=>{if(b.target===b.currentTarget)o()},role:"presentation",children:ke.jsxDEV("div",{className:"stats-drawer",role:"dialog","aria-modal":"true","aria-label":"Request details",children:[ke.jsxDEV("div",{className:"stats-drawer-header",children:[ke.jsxDEV("div",{className:"stats-drawer-header-left",children:[ke.jsxDEV("h2",{className:"stats-drawer-title",children:"Request Details"},void 0,!1,void 0,this),s&&ke.jsxDEV("span",{className:"stats-drawer-id",children:["ID: ",a]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("button",{ref:g,type:"button",onClick:o,className:"stats-drawer-close-btn","aria-label":"Close request details",children:ke.jsxDEV(Ys,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-body",children:[l&&ke.jsxDEV("div",{className:"stats-drawer-loading",children:[ke.jsxDEV(Ua,{variant:"text",width:"60%",height:24,className:"mb-4"},void 0,!1,void 0,this),ke.jsxDEV(Ua,{variant:"rect",width:"100%",height:80,className:"mb-4"},void 0,!1,void 0,this),ke.jsxDEV(Ua,{variant:"rect",width:"100%",height:120,className:"mb-4"},void 0,!1,void 0,this),ke.jsxDEV(Ua,{variant:"rect",width:"100%",height:200},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d&&ke.jsxDEV("div",{className:"stats-drawer-error",children:[ke.jsxDEV("p",{className:"stats-drawer-error-title",children:"Failed to load request details"},void 0,!1,void 0,this),ke.jsxDEV("p",{className:"stats-drawer-error-message",children:d.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&ke.jsxDEV("div",{className:"stats-drawer-content",children:[ke.jsxDEV("div",{className:"stats-drawer-status-card",children:[ke.jsxDEV("div",{className:"stats-drawer-status-row",children:[ke.jsxDEV("div",{children:[ke.jsxDEV("div",{className:"stats-drawer-model",children:s.model},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-provider",children:s.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV(ya,{variant:s.errorMessage?"danger":"success",children:s.errorMessage?"Error":"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.errorMessage&&ke.jsxDEV("div",{className:"stats-drawer-error-block",children:[ke.jsxDEV("div",{className:"stats-drawer-error-label",children:"Error Message"},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-error-text",children:s.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metrics-grid",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(ml,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"API-equivalent estimate"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:ln(s,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(gf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Premium"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:Ce(s.usage.premiumRequests??0)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(lf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Total Tokens"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:Ce(s.usage.totalTokens)},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-sub",children:[Ce(s.usage.input)," in · ",Ce(s.usage.output)," out"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(of,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Duration"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(s.duration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(vf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"TTFT"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(s.ttft)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.duration&&s.usage.output>0&&ke.jsxDEV("div",{className:"stats-drawer-metric-card",children:[ke.jsxDEV("div",{className:"stats-drawer-metric-label",children:[ke.jsxDEV(rf,{size:14,className:"stats-drawer-metric-icon"},void 0,!1,void 0,this),"Throughput"]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-value",children:(s.usage.output*1000/s.duration).toFixed(1)},void 0,!1,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-metric-sub",children:"tokens/second"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ke.jsxDEV("div",{className:"stats-drawer-json-blocks",children:[ke.jsxDEV(wf,{data:s.output,title:"Output Payload",initialCollapsed:!1},void 0,!1,void 0,this),ke.jsxDEV(wf,{data:s,title:"Raw Request Metadata",initialCollapsed:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var e0=Q(de(),1);function Ws({options:a,value:o,onChange:s,className:r=""}){return e0.jsxDEV("div",{className:`stats-segmented-control ${r}`,role:"radiogroup",children:a.map((l)=>{let u=l.value===o;return e0.jsxDEV("button",{type:"button",role:"radio","aria-checked":u,"data-active":u?"true":"false",className:"stats-segmented-control-btn",title:l.title,onClick:()=>s(l.value),children:l.label},String(l.value),!1,void 0,this)})},void 0,!1,void 0,this)}var Me=Q(de(),1);function fR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["behavior",o,s],(d)=>pA(o,d),{pollMs:30000,enabled:a});return Me.jsxDEV("div",{className:"stats-route-container space-y-6",children:Me.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&Me.jsxDEV(Me.Fragment,{children:[Me.jsxDEV(dz,{overall:r.overall,behaviorSeries:r.behaviorSeries},void 0,!1,void 0,this),Me.jsxDEV(fz,{behaviorSeries:r.behaviorSeries},void 0,!1,void 0,this),Me.jsxDEV(pz,{models:r.byModel,behaviorSeries:r.behaviorSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Xm(a,o){if(o<=0)return;return`${(a/o).toFixed(2)} / msg`}function dz({overall:a,behaviorSeries:o}){let s=xa.useMemo(()=>JA(a,o),[a,o]),r=a.totalMessages,l=[{label:"User Messages",value:Ce(a.totalMessages),sub:r>0?"in range":void 0},{label:"Yelling (CAPS)",value:Ce(a.totalYelling),sub:Xm(a.totalYelling,r)},{label:"Profanity Hits",value:Ce(a.totalProfanity),sub:Xm(a.totalProfanity,r)},{label:"Anguish Signals",value:Ce(a.totalAnguish),sub:Xm(a.totalAnguish,r)},{label:"Friction Signals",value:Ce(s.totalFrustration),sub:Xm(s.totalFrustration,r)},{label:"Highest Friction Model",value:s.highestFrictionModel?.model??"—",sub:s.highestFrictionModel?`${Ce(s.highestFrictionModel.score)} hits`:void 0}];return Me.jsxDEV("div",{className:"grid grid-cols-2 md:grid-cols-6 gap-4",children:l.map((u)=>Me.jsxDEV(ut,{className:"stats-behavior-summary-card py-3 px-4",children:[Me.jsxDEV("p",{className:"text-xs stats-text-muted mb-1 font-medium truncate",children:u.label},void 0,!1,void 0,this),Me.jsxDEV("p",{className:"text-lg font-bold stats-text-primary truncate",title:u.value,children:u.value},void 0,!1,void 0,this),u.sub&&Me.jsxDEV("p",{className:"text-xs stats-text-muted mt-0.5",children:u.sub},void 0,!1,void 0,this)]},u.label,!0,void 0,this))},void 0,!1,void 0,this)}var t0=[{value:"yelling",label:"CAPS",title:"Yelling (CAPS)"},{value:"profanity",label:"Profanity",title:"Profanity"},{value:"anguish",label:"Anguish",title:"Anguish (!!!, nooo, ugh, dude, ':(')"},{value:"negation",label:"Negation",title:"Negation (no/nope/wrong, makes no sense)"},{value:"repetition",label:"Repetition",title:"Repetition (i meant, still doesnt)"},{value:"blame",label:"Blame",title:"Blame (you didnt, why did you, stop X-ing)"},{value:"frustration",label:"Frustration",title:"Frustration (neg + rep + blame)"},{value:"total",label:"All",title:"All signals combined"}];function iR(a){if(!Number.isFinite(a))return"-";if(a===0)return"0%";if(Math.abs(a)<1)return`${a.toFixed(1)}%`;return`${a.toFixed(0)}%`}function lR(a,o){if(o==="frustration")return a.negation+a.repetition+a.blame;if(o==="total")return a.yelling+a.profanity+a.anguish+a.negation+a.repetition+a.blame;return a[o]}function uR(a,o){if(o<=0)return 0;return a/o*100}function fz({behaviorSeries:a}){let[o,s]=xa.useState(!1),[r,l]=xa.useState("total"),u=$t(),d=ra[u],p=xa.useMemo(()=>{if(o)return ju(a,{rankWeight:(B)=>B.messages,initBucket:()=>({hits:0,messages:0}),accumulate:(B,z)=>{B.hits+=lR(z,r),B.messages+=z.messages},bucketToValue:(B)=>uR(B.hits,B.messages)});let A=t0.find((B)=>B.value===r)?.title??"Hits";return _m(a,A,{initBucket:()=>({hits:0,messages:0}),accumulate:(B,z)=>{B.hits+=lR(z,r),B.messages+=z.messages},bucketToValue:(B)=>uR(B.hits,B.messages)})},[a,o,r]),h=xa.useMemo(()=>is({chartTheme:d,showLegend:o,defaultLabel:"Hits",formatValue:iR}),[d,o]),{sharedScaleBase:g,yScale:y}=xa.useMemo(()=>ls({chartTheme:d,formatY:iR}),[d]),b=xa.useMemo(()=>t0.find((A)=>A.value===r)?.title??"",[r]),v=xa.useMemo(()=>{if(!o)return null;return{labels:p.labels,datasets:ui(p,(A)=>Vu(yt[A%yt.length]))}},[p,o]),T=xa.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:h,scales:{x:g,y}}),[h,g,y]),M=xa.useMemo(()=>{if(o)return null;return{labels:p.labels,datasets:ui(p,(A)=>Sl(yt[A%yt.length]))}},[p,o]),I=xa.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:h,scales:{x:{...g,stacked:!0},y:{...y,stacked:!0}},layout:{padding:{top:8}}}),[h,g,y]),w=[{value:!1,label:"All Models"},{value:!0,label:"By Model"}];return Me.jsxDEV(ut,{title:"User Friction Signals",subtitle:`${b} as % of user messages per day`,actions:Me.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[Me.jsxDEV(Ws,{options:t0.map((A)=>({value:A.value,label:A.label,title:A.title})),value:r,onChange:l},void 0,!1,void 0,this),Me.jsxDEV(Ws,{options:w,value:o,onChange:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:Me.jsxDEV("div",{className:"h-[300px]",children:p.labels.length===0?Me.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No friction signal data available"},void 0,!1,void 0,this):o&&v?Me.jsxDEV(Xa,{data:v,options:T},void 0,!1,void 0,this):M?Me.jsxDEV(li,{data:M,options:I},void 0,!1,void 0,this):null},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var cR="2fr 0.9fr 0.8fr 0.8fr 0.8fr 0.9fr 0.8fr 140px 40px";function dR(a){if(a.totalMessages===0)return 0;return(a.totalYelling+a.totalProfanity+a.totalAnguish+a.totalNegation+a.totalRepetition+a.totalBlame)/a.totalMessages}function Yu(a,o){if(o===0)return"-";let s=a/o*100;if(s===0)return"0%";if(s<1)return`${s.toFixed(1)}%`;return`${s.toFixed(0)}%`}function pz({models:a,behaviorSeries:o}){let[s,r]=xa.useState(null),l=$t(),u=ra[l],d=xa.useMemo(()=>mz(o),[o]),p=xa.useMemo(()=>[...a].sort((h,g)=>{if(g.totalMessages!==h.totalMessages)return g.totalMessages-h.totalMessages;return dR(g)-dR(h)}),[a]);return Me.jsxDEV(Pm,{title:"Behavior Signals by Model",subtitle:"Rates are per user message",children:[Me.jsxDEV(Bm,{gridTemplate:cR,columns:[{label:"Model"},{label:"Messages",align:"right"},{label:"CAPS %",align:"right"},{label:"Profanity %",align:"right"},{label:"Anguish %",align:"right"},{label:"Frustration %",align:"right"},{label:"Hits %",align:"right"},{label:"Trend",align:"center"}]},void 0,!1,void 0,this),Me.jsxDEV(Nm,{children:[p.map((h,g)=>{let y=`${h.model}::${h.provider}`,b=d.get(y)?.data??[],v=yt[g%yt.length],T=s===y,M=h.totalNegation+h.totalRepetition+h.totalBlame,I=h.totalYelling+h.totalProfanity+h.totalAnguish+M;return Me.jsxDEV(Hm,{gridTemplate:cR,isExpanded:T,onToggle:()=>r(T?null:y),cells:[Me.jsxDEV(zm,{model:h.model,provider:h.provider},"name",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Ce(h.totalMessages)},"messages",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(h.totalYelling,h.totalMessages)},"caps",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(h.totalProfanity,h.totalMessages)},"profanity",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(h.totalAnguish,h.totalMessages)},"anguish",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(M,h.totalMessages)},"frustration",!1,void 0,this),Me.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:Yu(I,h.totalMessages)},"hits",!1,void 0,this)],trendCell:b.length===0?Me.jsxDEV(Um,{},void 0,!1,void 0,this):Me.jsxDEV(Em,{timestamps:b.map((w)=>w.timestamp),values:b.map((w)=>w.total),color:v},void 0,!1,void 0,this),expandedContent:Me.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"220px 1fr"},children:[Me.jsxDEV("div",{className:"space-y-4 text-sm",children:[Me.jsxDEV(Tl,{label:"Yelling (CAPS)",total:h.totalYelling,messages:h.totalMessages,valueClass:"text-[#ed4abf]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Profanity",total:h.totalProfanity,messages:h.totalMessages,valueClass:"text-[#ff6b7d]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Anguish (!!!, nooo, dude, ..)",total:h.totalAnguish,messages:h.totalMessages,valueClass:"text-[#9b4dff]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Negation (no/nope/wrong)",total:h.totalNegation,messages:h.totalMessages,valueClass:"text-[#5ad8e6]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Repetition (i meant, still doesnt)",total:h.totalRepetition,messages:h.totalMessages,valueClass:"text-[#5ad8e6]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Blame (you didnt, stop X-ing)",total:h.totalBlame,messages:h.totalMessages,valueClass:"text-[#5ad8e6]"},void 0,!1,void 0,this),Me.jsxDEV(Tl,{label:"Avg chars / msg",total:h.totalChars,messages:h.totalMessages,valueClass:"stats-text-secondary",mode:"average"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Me.jsxDEV("div",{className:"h-[200px]",children:b.length===0?Me.jsxDEV(Fm,{},void 0,!1,void 0,this):Me.jsxDEV(hz,{data:b,chartTheme:u},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},y,!1,void 0,this)}),p.length===0?Me.jsxDEV("div",{className:"border-t border-[var(--border-subtle)] px-5 py-8 text-center text-[var(--text-muted)] text-sm",children:"No user behavior recorded for this range yet."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Tl({label:a,total:o,messages:s,valueClass:r,mode:l="rate"}){let u=l==="rate"?"% of msgs":"Per msg",d=xa.useMemo(()=>{if(s===0)return"-";return l==="rate"?Yu(o,s):(o/s).toFixed(0)},[o,s,l]);return Me.jsxDEV("div",{children:[Me.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-1",children:a},void 0,!1,void 0,this),Me.jsxDEV("div",{className:"space-y-0.5 text-[var(--text-secondary)]",children:[Me.jsxDEV("div",{className:"flex items-center justify-between",children:[Me.jsxDEV("span",{className:"stats-text-muted text-xs",children:"Total"},void 0,!1,void 0,this),Me.jsxDEV("span",{className:`font-mono text-xs ${r}`,children:Ce(o)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Me.jsxDEV("div",{className:"flex items-center justify-between",children:[Me.jsxDEV("span",{className:"stats-text-muted text-xs",children:u},void 0,!1,void 0,this),Me.jsxDEV("span",{className:"font-mono text-xs stats-text-primary",children:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Ym={yelling:"#ed4abf",profanity:"#ff6b7d",anguish:"#9b4dff",frustration:"#5ad8e6"};function hz({data:a,chartTheme:o}){let s=xa.useMemo(()=>({labels:a.map((l)=>Cn(new Date(l.timestamp),"MMM d")),datasets:[{label:"CAPS",data:a.map((l)=>l.yelling),...$s(Ym.yelling)},{label:"Profanity",data:a.map((l)=>l.profanity),...$s(Ym.profanity)},{label:"Anguish",data:a.map((l)=>l.anguish),...$s(Ym.anguish)},{label:"Frustration",data:a.map((l)=>l.frustration),...$s(Ym.frustration)}]}),[a]),r=xa.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,plugins:Om(o),scales:XA(o)}),[o]);return Me.jsxDEV(Xa,{data:s,options:r},void 0,!1,void 0,this)}function mz(a){if(a.length===0)return new Map;let o=[...new Set(a.map((l)=>l.timestamp))].sort((l,u)=>l-u),s=new Map;for(let l of a){let u=`${l.model}::${l.provider}`,d=s.get(u);if(!d)d=new Map,s.set(u,d);let p=d.get(l.timestamp)??{timestamp:l.timestamp,yelling:0,profanity:0,anguish:0,frustration:0,total:0};p.yelling+=l.yelling,p.profanity+=l.profanity,p.anguish+=l.anguish,p.frustration+=l.negation+l.repetition+l.blame,p.total=p.yelling+p.profanity+p.anguish+p.frustration,d.set(l.timestamp,p)}let r=new Map;for(let[l,u]of s){let d=o.map((p)=>u.get(p)??{timestamp:p,yelling:0,profanity:0,anguish:0,frustration:0,total:0});r.set(l,{data:d})}return r}var Fo=Q(dt(),1);var va=Q(de(),1);function pR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["costs",o,s],(d)=>uA(o,d),{pollMs:30000,enabled:a});return va.jsxDEV("div",{className:"stats-route-container space-y-6",children:va.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&va.jsxDEV(va.Fragment,{children:[va.jsxDEV(gz,{costSeries:r.costSeries},void 0,!1,void 0,this),va.jsxDEV(xz,{costSeries:r.costSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function gz({costSeries:a}){let o=Fo.useMemo(()=>QA(a),[a]),s=[{label:"API-equivalent estimate",value:ea(o.totalCost,o.unpricedRequests),sub:o.unpricedRequests>0?`Excludes ${o.unpricedRequests.toLocaleString()} unpriced subscription request${o.unpricedRequests===1?"":"s"}`:void 0},{label:"Average estimate / Day",value:ea(o.avgDailyCost,o.unpricedRequests)},{label:"Top Model",value:o.topModelName||"—",sub:o.topModelName?`API-equivalent estimate: ${Cf(o.topModelCost)}`:void 0}];return va.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:s.map((r)=>va.jsxDEV(ut,{className:"stats-cost-overview-card py-4 px-5",children:[va.jsxDEV("p",{className:"text-xs stats-text-muted mb-1 font-medium uppercase tracking-wider",children:r.label},void 0,!1,void 0,this),va.jsxDEV("p",{className:"text-2xl font-bold stats-text-primary truncate",title:r.value,children:r.value},void 0,!1,void 0,this),r.sub&&va.jsxDEV("p",{className:"text-xs stats-text-muted mt-1 font-medium",children:r.sub},void 0,!1,void 0,this)]},r.label,!0,void 0,this))},void 0,!1,void 0,this)}var bz={dark:"rgba(248, 250, 252, 0.7)",light:"rgba(15, 23, 42, 0.6)"};function yz(a){return{id:"costBarLabels",afterDatasetsDraw(o){let{ctx:s}=o;if(!o.data.datasets[0])return;let l=o.getDatasetMeta(0);s.save(),s.font="11px system-ui, sans-serif",s.fillStyle=a,s.textAlign="center",s.textBaseline="bottom";for(let u of l.data){let d=u.$context.parsed.y;if(!d)continue;let p=`$${Math.round(d)}`,{x:h,y:g}=u.getProps(["x","y"],!0);s.fillText(p,h,g-3)}s.restore()}}}function xz({costSeries:a}){let[o,s]=Fo.useState(!1),r=$t(),l=ra[r],u=Fo.useMemo(()=>a.reduce((w,A)=>w+A.unpricedRequests,0),[a]),d=Fo.useMemo(()=>{if(o)return ju(a,{rankWeight:(w)=>w.cost,initBucket:()=>({total:0}),accumulate:(w,A)=>{w.total+=A.cost},bucketToValue:(w)=>w.total});return _m(a,"API-equivalent estimate",{initBucket:()=>({total:0}),accumulate:(w,A)=>{w.total+=A.cost},bucketToValue:(w)=>w.total})},[a,o]),p=Fo.useMemo(()=>is({chartTheme:l,showLegend:o,defaultLabel:"API-equivalent estimate",formatValue:(w)=>`$${w.toFixed(2)}`,footer:(w)=>{if(!o||w.length<2)return;return`Total: $${w.reduce((B,z)=>B+(z.parsed.y??0),0).toFixed(2)}`}}),[l,o]),{sharedScaleBase:h,yScale:g}=Fo.useMemo(()=>ls({chartTheme:l,formatY:(w)=>`$${Math.round(w)}`}),[l]),y=Fo.useMemo(()=>yz(bz[r]),[r]),b=Fo.useMemo(()=>{if(!o)return null;return{labels:d.labels,datasets:ui(d,(w)=>Vu(yt[w%yt.length]))}},[d,o]),v=Fo.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:p,scales:{x:h,y:g}}),[p,h,g]),T=Fo.useMemo(()=>{if(o)return null;return{labels:d.labels,datasets:ui(d,(w)=>Sl(yt[w%yt.length]))}},[d,o]),M=Fo.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{...p,costBarLabels:{}},scales:{x:{...h,stacked:!0},y:{...g,stacked:!0}},layout:{padding:{top:24}}}),[p,h,g]),I=[{value:!1,label:"All Models"},{value:!0,label:"By Model"}];return va.jsxDEV(ut,{title:"Daily API-equivalent estimate",subtitle:u>0?`Public API rate-card value over time; excludes ${u.toLocaleString()} unpriced subscription request${u===1?"":"s"}`:"Public API rate-card value over time",actions:va.jsxDEV(Ws,{options:I,value:o,onChange:s},void 0,!1,void 0,this),children:va.jsxDEV("div",{className:"h-[300px]",children:d.labels.length===0?va.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No API-equivalent estimate data available"},void 0,!1,void 0,this):o&&b?va.jsxDEV(Xa,{data:b,options:v},void 0,!1,void 0,this):T?va.jsxDEV(li,{data:T,options:M,plugins:[y]},void 0,!1,void 0,this):null},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var hR=Q(dt(),1);var Ut=Q(de(),1);function mR({active:a,range:o,refreshTrigger:s,onRequestClick:r}){let{data:l,error:u,loading:d}=Vt(["recent-errors-dense",o,s],(g)=>cA(o,50,g),{pollMs:30000,enabled:a}),p=hR.useMemo(()=>[{key:"model",header:"Model",render:(g)=>Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:g.model},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:g.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"timestamp",header:"Time",render:(g)=>za(g.timestamp)},{key:"errorMessage",header:"Error Message",render:(g)=>Ut.jsxDEV("div",{className:"stats-text-xs stats-text-danger stats-truncate stats-max-w-md stats-font-mono",title:g.errorMessage||"",children:g.errorMessage||"Unknown error"},void 0,!1,void 0,this)},{key:"tokens",header:"Tokens",numeric:!0,render:(g)=>Ce(g.usage.totalTokens)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(g)=>ln(g,4)}],[]);return Ut.jsxDEV("div",{className:"stats-route-container",children:Ut.jsxDEV(ut,{title:"Recent Errors",subtitle:"Up to 50 most recent failed requests in the stats database",children:Ut.jsxDEV(Rt,{loading:d,error:u,data:l,emptyText:"No recent failures in the local stats database",children:Ut.jsxDEV(Ma,{columns:p,data:l||[],keyExtractor:(g)=>g.id||`${g.sessionFile}-${g.entryId}`,onRowClick:(g)=>g.id&&r(g.id),renderMobileCard:(g,y)=>Ut.jsxDEV("div",{className:"stats-mobile-card stats-border-danger",onClick:y,children:[Ut.jsxDEV("div",{className:"stats-mobile-card-header",children:[Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:g.model},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:g.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV(ya,{variant:"danger",children:"Failed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-grid",children:[Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-mobile-card-label",children:"Time"},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-value",children:za(g.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-value",children:ln(g,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ut.jsxDEV("div",{children:[Ut.jsxDEV("div",{className:"stats-mobile-card-label",children:"Tokens"},void 0,!1,void 0,this),Ut.jsxDEV("div",{className:"stats-mobile-card-value",children:Ce(g.usage.totalTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),g.errorMessage&&Ut.jsxDEV("div",{className:"stats-mobile-card-error mt-2 stats-font-mono",children:g.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),emptyText:"No recent failures in the local stats database"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var $m=Q(dt(),1);var _e=Q(de(),1);function gR({active:a,range:o,refreshTrigger:s}){let[r,l]=$m.useState(null),{data:u,error:d,loading:p}=Vt(["gain",o,s,r],(h)=>mA(o,r,h),{pollMs:30000,enabled:a});return _e.jsxDEV("div",{className:"stats-route-container space-y-6",children:_e.jsxDEV(Rt,{loading:p,error:d,data:u,children:u&&_e.jsxDEV(_e.Fragment,{children:[_e.jsxDEV(vz,{projects:u.projects,selected:r,onChange:l},void 0,!1,void 0,this),_e.jsxDEV(Sz,{overall:u.overall},void 0,!1,void 0,this),_e.jsxDEV(Cz,{bySource:u.bySource},void 0,!1,void 0,this),_e.jsxDEV(wz,{timeSeries:u.timeSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function vz({projects:a,selected:o,onChange:s}){if(a.length===0)return null;return _e.jsxDEV("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[_e.jsxDEV("span",{className:"stats-text-secondary",style:{fontSize:"0.875rem",whiteSpace:"nowrap"},children:"Project"},void 0,!1,void 0,this),_e.jsxDEV("select",{className:"stats-select",value:o??"",onChange:(r)=>s(r.target.value||null),style:{maxWidth:"480px",flex:1},children:[_e.jsxDEV("option",{value:"",children:"All projects"},void 0,!1,void 0,this),a.map((r)=>_e.jsxDEV("option",{value:r,children:r},r,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Sz({overall:a}){return _e.jsxDEV(ut,{title:"Overall Gain",subtitle:"Aggregate snapcompact savings",children:_e.jsxDEV("div",{className:"stats-metric-primary-grid",children:[_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Tokens"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:lt(a.savedTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Bytes"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:Jv(a.savedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Reduction"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:a.reductionPercent!==null?Ht(a.reductionPercent):"—"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{className:"stats-metric-card primary",children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Total Hits"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",children:Ce(a.hits)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Lz({title:a,totals:o}){return _e.jsxDEV("div",{className:"stats-metric-card secondary",style:{flex:1},children:[_e.jsxDEV("div",{className:"stats-metric-label",style:{fontWeight:600,marginBottom:8},children:a},void 0,!1,void 0,this),_e.jsxDEV("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Tokens"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:lt(o.savedTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Saved Bytes"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:Jv(o.savedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Hits"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:Ce(o.hits)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_e.jsxDEV("div",{children:[_e.jsxDEV("div",{className:"stats-metric-label",children:"Reduction"},void 0,!1,void 0,this),_e.jsxDEV("div",{className:"stats-metric-value",style:{fontSize:"1rem"},children:o.reductionPercent!==null?Ht(o.reductionPercent):"—"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Cz({bySource:a}){return _e.jsxDEV(ut,{title:"By Source",subtitle:"Savings breakdown per subsystem",children:_e.jsxDEV("div",{style:{display:"flex",gap:16,flexWrap:"wrap"},children:_e.jsxDEV(Lz,{title:"Snapcompact",totals:a.snapcompact},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Tz={snapcompact:"rgb(34, 197, 94)"};function wz({timeSeries:a}){let o=$t(),s=ra[o],{data:r,options:l}=$m.useMemo(()=>{let u=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",timeZone:"UTC"}),p={labels:a.map((b)=>u.format(new Date(`${b.date}T00:00:00.000Z`))),datasets:[{label:"Snapcompact",data:a.map((b)=>b.snapcompact),...Vu(Tz.snapcompact)}]},{sharedScaleBase:h,yScale:g}=ls({chartTheme:s,formatY:(b)=>lt(b)}),y={responsive:!0,maintainAspectRatio:!1,plugins:is({chartTheme:s,showLegend:!0,defaultLabel:"Tokens Saved",formatValue:lt}),scales:{x:{...h,stacked:!0},y:{...g,stacked:!0}}};return{data:p,options:y}},[a,s]);return _e.jsxDEV(ut,{title:"Savings Over Time",subtitle:"Daily token savings",children:_e.jsxDEV("div",{style:{height:240},children:a.length===0?_e.jsxDEV("div",{className:"stats-table-empty",children:"No time series data yet"},void 0,!1,void 0,this):_e.jsxDEV(Xa,{data:r,options:l},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Tn=Q(dt(),1);var Ee=Q(de(),1);function yR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["models",o,s],(p)=>lA(o,p),{pollMs:30000,enabled:a}),d=Tn.useMemo(()=>GA(r?.byModel??[]),[r?.byModel]);return Ee.jsxDEV("div",{className:"stats-route-container space-y-6",children:Ee.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&Ee.jsxDEV(Ee.Fragment,{children:[Ee.jsxDEV(kz,{modelSeries:r.modelSeries,timeRange:o,colorLookup:d},void 0,!1,void 0,this),Ee.jsxDEV(Iz,{models:r.byModel,performanceSeries:r.modelPerformanceSeries,timeRange:o,colorLookup:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function kz({modelSeries:a,timeRange:o,colorLookup:s}){let r=$t(),l=ra[r],u=Ll(o),d=Tn.useMemo(()=>Mz(a),[a]),p=Tn.useMemo(()=>({labels:d.data.map((g)=>Tf(g.timestamp,o)),datasets:d.series.map((g,y)=>{let b=yt[y%yt.length],v=g.key?s.get(g.key)??b:b,T=g.key??g.label;return{label:g.label,data:d.data.map((M)=>M[T]??0),borderColor:v,backgroundColor:`${v}20`,fill:!0,tension:0.4,pointRadius:0,pointHoverRadius:4,borderWidth:2}})}),[d,s,o]),h=Tn.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",align:"start",labels:{color:l.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:l.tooltipBackground,titleColor:l.tooltipTitle,bodyColor:l.tooltipBody,borderColor:l.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(g)=>{let y=g.dataset.label??"",b=g.parsed.y;return`${y}: ${(b??0).toFixed(1)}%`}}}},scales:{x:{grid:{color:l.grid,drawBorder:!1},ticks:{color:l.tick,font:{size:11}}},y:{grid:{color:l.grid,drawBorder:!1},ticks:{color:l.tick,font:{size:11},callback:(g)=>`${g}%`},min:0,max:100}}}),[l]);return Ee.jsxDEV(ut,{title:"Model Preference",subtitle:`Share of requests over ${u.windowLabel}`,children:Ee.jsxDEV("div",{className:"h-[280px]",children:d.data.length===0?Ee.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No data available"},void 0,!1,void 0,this):Ee.jsxDEV(Xa,{data:p,options:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Mz(a,o=5){if(a.length===0)return{data:[],series:[]};let s=new Map;for(let b of a){let v=`${b.model}::${b.provider}`,T=s.get(v);if(T)T.total+=b.requests;else s.set(v,{model:b.model,provider:b.provider,total:b.requests})}let l=[...s.entries()].map(([b,v])=>({key:b,...v})).sort((b,v)=>v.total-b.total).slice(0,o),u=new Set(l.map((b)=>b.key)),d=new Map;for(let b of l)d.set(b.model,(d.get(b.model)??0)+1);let p=new Map;for(let b of l){let v=(d.get(b.model)??0)>1;p.set(b.key,v?`${b.model} (${b.provider})`:b.model)}let h=new Map;for(let b of a){let v=`${b.model}::${b.provider}`,T=h.get(b.timestamp)??{timestamp:b.timestamp,total:0};T.total+=b.requests;let M=u.has(v)?v:"Other";T[M]=(T[M]??0)+b.requests,h.set(b.timestamp,T)}let g=l.map((b)=>({key:b.key,label:p.get(b.key)??b.model}));if([...h.values()].some((b)=>(b.Other??0)>0))g.push({label:"Other"});return{data:[...h.values()].sort((b,v)=>(b.timestamp??0)-(v.timestamp??0)).map((b)=>{let v=b.total??0;for(let T of g){let M=T.key??T.label;b[M]=v>0?(b[M]??0)/v*100:0}return b}),series:g}}var bR="2fr 0.9fr 0.9fr 1fr 0.8fr 0.8fr 140px 40px";function Iz({models:a,performanceSeries:o,timeRange:s,colorLookup:r}){let[l,u]=Tn.useState(null),d=Ll(s),p=Tn.useMemo(()=>KA(o,s),[o,s]),h=$t(),g=ra[h],y=Tn.useMemo(()=>[...a].sort((b,v)=>v.totalInputTokens+v.totalOutputTokens-(b.totalInputTokens+b.totalOutputTokens)),[a]);return Ee.jsxDEV(Pm,{title:"Model Statistics",children:[Ee.jsxDEV(Bm,{gridTemplate:bR,columns:[{label:"Model"},{label:"Requests",align:"right"},{label:"API-equivalent estimate",align:"right"},{label:"Tokens",align:"right"},{label:"Tokens/s",align:"right"},{label:"TTFT",align:"right"},{label:d.trendLabel,align:"center"}]},void 0,!1,void 0,this),Ee.jsxDEV(Nm,{children:y.map((b,v)=>{let T=`${b.model}::${b.provider}`,I=p.get(T)?.data??[],w=r.get(T)??yt[v%yt.length],A=l===T,B=b.errorRate*100;return Ee.jsxDEV(Hm,{gridTemplate:bR,isExpanded:A,onToggle:()=>u(A?null:T),cells:[Ee.jsxDEV(zm,{model:b.model,provider:b.provider},"name",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.totalRequests.toLocaleString()},"requests",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:ea(b.totalCost,b.unpricedRequests)},"cost",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:(b.totalInputTokens+b.totalOutputTokens).toLocaleString()},"tokens",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTokensPerSecond?.toFixed(1)??"-"},"tps",!1,void 0,this),Ee.jsxDEV("div",{className:"text-right text-[var(--text-secondary)] font-mono text-sm",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},"ttft",!1,void 0,this)],trendCell:I.length===0?Ee.jsxDEV(Um,{},void 0,!1,void 0,this):Ee.jsxDEV(Em,{timestamps:I.map((z)=>z.timestamp),values:I.map((z)=>z.avgTokensPerSecond??0),color:w},void 0,!1,void 0,this),expandedContent:Ee.jsxDEV("div",{className:"grid gap-4",style:{gridTemplateColumns:"200px 1fr"},children:[Ee.jsxDEV("div",{className:"space-y-4 text-sm",children:[Ee.jsxDEV("div",{children:[Ee.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Efficiency"},void 0,!1,void 0,this),Ee.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Error rate"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:B>5?"text-[var(--accent-red)]":"text-[var(--accent-green)]",children:[B.toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Cache rate"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:"font-mono",children:[(b.cacheRate*100).toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Cache savings"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:b.cacheSavings<0?"text-[var(--accent-red)]":"text-[var(--accent-green)]",children:[(b.cacheSavings*100).toFixed(1),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{children:[Ee.jsxDEV("div",{className:"text-[var(--text-primary)] font-medium mb-2",children:"Latency"},void 0,!1,void 0,this),Ee.jsxDEV("div",{className:"space-y-1 text-[var(--text-secondary)]",children:[Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Avg duration"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:"font-mono",children:b.avgDuration?`${(b.avgDuration/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"flex items-center justify-between",children:[Ee.jsxDEV("span",{children:"Avg TTFT"},void 0,!1,void 0,this),Ee.jsxDEV("span",{className:"font-mono",children:b.avgTtft?`${(b.avgTtft/1000).toFixed(2)}s`:"-"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Ee.jsxDEV("div",{className:"h-[200px]",children:I.length===0?Ee.jsxDEV(Fm,{},void 0,!1,void 0,this):Ee.jsxDEV(Az,{data:I,color:w,chartTheme:g,timeRange:s},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},T,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Az({data:a,color:o,chartTheme:s,timeRange:r}){let l=Tn.useMemo(()=>({labels:a.map((d)=>Tf(d.timestamp,r)),datasets:[{label:"TTFT",data:a.map((d)=>d.avgTtftSeconds??null),...$s("#5ad8e6"),yAxisID:"y"},{label:"Tokens/s",data:a.map((d)=>d.avgTokensPerSecond??null),...$s(o),yAxisID:"y1"}]}),[a,o,r]),u=Tn.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,plugins:Om(s),scales:YA(s)}),[s]);return Ee.jsxDEV(Xa,{data:l,options:u},void 0,!1,void 0,this)}var kf=Q(dt(),1);var xR=Q(dt(),1);var vo=Q(de(),1),Wm={main:{label:"Main agent",color:"#ed4abf"},subagent:{label:"Subagents",color:"#9b4dff"},advisor:{label:"Advisor",color:"#5ad8e6"}};function vR({stats:a}){let o=xR.useMemo(()=>ZA(a),[a]);if(o.totalTokens===0)return vo.jsxDEV("div",{className:"py-8 text-center stats-text-muted text-sm",children:"No token usage in this range"},void 0,!1,void 0,this);return vo.jsxDEV("div",{className:"space-y-4",children:[vo.jsxDEV("div",{className:"flex h-3 w-full overflow-hidden rounded-full",style:{background:"var(--surface-2)"},children:o.segments.map((s)=>s.share>0&&vo.jsxDEV("div",{className:"h-full",style:{width:`${s.share*100}%`,background:Wm[s.agentType].color},title:`${Wm[s.agentType].label}: ${Ht(s.share)}`},s.agentType,!1,void 0,this))},void 0,!1,void 0,this),vo.jsxDEV("div",{className:"space-y-2",children:o.segments.map((s)=>vo.jsxDEV("div",{className:"flex items-center justify-between gap-3 text-sm",children:[vo.jsxDEV("div",{className:"flex items-center gap-2 min-w-0",children:[vo.jsxDEV("span",{className:"w-2.5 h-2.5 rounded-full flex-shrink-0",style:{background:Wm[s.agentType].color}},void 0,!1,void 0,this),vo.jsxDEV("span",{className:"stats-text-primary truncate",children:Wm[s.agentType].label},void 0,!1,void 0,this),vo.jsxDEV("span",{className:"stats-text-muted stats-text-xs whitespace-nowrap",children:[Ce(s.requests)," req"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),vo.jsxDEV("div",{className:"flex items-center gap-3 whitespace-nowrap",children:[vo.jsxDEV("span",{className:"stats-text-secondary",children:[lt(s.tokens)," tok"]},void 0,!0,void 0,this),vo.jsxDEV("span",{className:"stats-font-semibold stats-text-primary tabular-nums",children:Ht(s.share)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},s.agentType,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ve=Q(de(),1);function SR({active:a,range:o,refreshTrigger:s,onRequestClick:r}){let{data:l,error:u,loading:d}=Vt(["overview",o,s],(A)=>iA(o,A),{pollMs:30000,enabled:a}),{data:p,error:h,loading:g}=Vt(["recent-requests",s],(A)=>Rm(50,A),{pollMs:30000,enabled:a}),y=$t(),b=ra[y],v=kf.useMemo(()=>{if(!l?.timeSeries)return{labels:[],datasets:[]};let A=l.timeSeries.map((z)=>Cn(new Date(z.timestamp),o==="1h"||o==="24h"?"HH:mm":"MMM d")),B=l.timeSeries.length<=2?3:0;return{labels:A,datasets:[{label:"Requests",data:l.timeSeries.map((z)=>z.requests),borderColor:"#5ad8e6",backgroundColor:"rgba(90, 216, 230, 0.12)",tension:0.2,borderWidth:2,pointRadius:B,pointHoverRadius:4,fill:!0},{label:"Errors",data:l.timeSeries.map((z)=>z.errors),borderColor:"#ff6b7d",backgroundColor:"rgba(255, 107, 125, 0.12)",tension:0.2,borderWidth:2,pointRadius:B,pointHoverRadius:4,fill:!0}]}},[l?.timeSeries,o]),T=kf.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!0,position:"top",align:"end",labels:{color:b.legendLabel,boxWidth:8,usePointStyle:!0,font:{size:11}}},tooltip:{backgroundColor:b.tooltipBackground,titleColor:b.tooltipTitle,bodyColor:b.tooltipBody,borderColor:b.tooltipBorder,borderWidth:1,cornerRadius:8,padding:10}},scales:{x:{grid:{color:b.grid,drawBorder:!1},ticks:{color:b.tick,font:{size:10}}},y:{grid:{color:b.grid,drawBorder:!1},ticks:{color:b.tick,font:{size:10}},min:0}}}),[b]),M=kf.useMemo(()=>[{key:"model",header:"Model",render:(A)=>ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:A.model},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:A.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"timestamp",header:"Time",render:(A)=>za(A.timestamp)},{key:"tokens",header:"Tokens",numeric:!0,render:(A)=>Ce(A.usage.totalTokens)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(A)=>ln(A,4)},{key:"duration",header:"Duration",numeric:!0,render:(A)=>rt(A.duration)},{key:"status",header:"Status",className:"stats-text-center",render:(A)=>ve.jsxDEV(ya,{variant:A.errorMessage?"danger":"success",children:A.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)}],[]),I=(A,B)=>ve.jsxDEV("div",{className:"stats-mobile-card",onClick:B,children:[ve.jsxDEV("div",{className:"stats-mobile-card-header",children:[ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:A.model},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:A.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV(ya,{variant:A.errorMessage?"danger":"success",children:A.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-grid",children:[ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"Time"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:za(A.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:ln(A,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"Tokens"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:Ce(A.usage.totalTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{children:[ve.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(A.duration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A.errorMessage&&ve.jsxDEV("div",{className:"stats-mobile-card-error truncate mt-2",children:A.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w=kf.useMemo(()=>{if(!p)return[];return p.slice(0,10)},[p]);return ve.jsxDEV("div",{className:"stats-route-container space-y-6",children:[ve.jsxDEV(Rt,{loading:d,error:u,data:l,children:l&&ve.jsxDEV(nR,{stats:l.overall},void 0,!1,void 0,this)},void 0,!1,void 0,this),ve.jsxDEV(ut,{title:"Conversation Tokens by Agent",subtitle:"Uncached input + cache reads + cache writes + output, grouped by agent type",children:ve.jsxDEV(Rt,{loading:d,error:u,data:l,children:l&&ve.jsxDEV(vR,{stats:l.byAgentType},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[ve.jsxDEV("div",{className:"lg:col-span-2",children:ve.jsxDEV(ut,{title:"System Throughput",subtitle:"Request volume and errors over time",children:ve.jsxDEV(Rt,{loading:d,error:u,data:l,children:ve.jsxDEV("div",{className:"h-[280px]",children:l?.timeSeries&&l.timeSeries.length>0?ve.jsxDEV(Xa,{data:v,options:T},void 0,!1,void 0,this):ve.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No time-series data available"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),ve.jsxDEV("div",{children:ve.jsxDEV(ut,{title:"Operational Feed",subtitle:"Real-time request log",children:ve.jsxDEV(Rt,{loading:g,error:h,data:p,fallback:ve.jsxDEV("div",{className:"space-y-4",children:Array.from({length:5}).map((A,B)=>ve.jsxDEV("div",{className:"flex items-center gap-3",children:[ve.jsxDEV(Ua,{variant:"circle",width:10,height:10},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"flex-1",children:[ve.jsxDEV(Ua,{variant:"text",width:"60%",height:16},void 0,!1,void 0,this),ve.jsxDEV(Ua,{variant:"text",width:"40%",height:12},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},B,!0,void 0,this))},void 0,!1,void 0,this),children:ve.jsxDEV("div",{className:"stats-feed-ledger overflow-y-auto max-h-[280px] pr-2",children:[w.map((A)=>{let B=!!A.errorMessage;return ve.jsxDEV("div",{className:"stats-feed-item flex items-start gap-3 p-2 rounded hover:bg-stats-surface-2 cursor-pointer transition-colors",onClick:()=>A.id&&r(A.id),children:[ve.jsxDEV("div",{className:`w-2 h-2 mt-1.5 rounded-full flex-shrink-0 ${B?"bg-stats-danger":"bg-stats-success"}`},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"flex-1 min-w-0",children:[ve.jsxDEV("div",{className:"flex justify-between items-baseline gap-2",children:[ve.jsxDEV("div",{className:"stats-font-medium stats-text-primary text-sm truncate",children:A.model},void 0,!1,void 0,this),ve.jsxDEV("div",{className:"stats-text-xs stats-text-muted whitespace-nowrap",children:za(A.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV("div",{className:"flex justify-between items-center text-xs stats-text-muted mt-0.5",children:[ve.jsxDEV("div",{children:A.provider},void 0,!1,void 0,this),ve.jsxDEV("div",{children:[A.duration?rt(A.duration):""," ",A.usage.totalTokens>0?`· ${ln(A,4)}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B&&ve.jsxDEV("div",{className:"text-xs text-stats-danger truncate mt-1",children:A.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},A.id||`${A.sessionFile}-${A.entryId}`,!0,void 0,this)}),w.length===0&&ve.jsxDEV("div",{className:"py-8 text-center stats-text-muted text-sm",children:"No recent requests found"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ve.jsxDEV(ut,{title:"Recent Requests Preview",subtitle:"Latest transactions processed by the proxy",actions:ve.jsxDEV("a",{href:`#/requests?range=${o}`,className:"stats-button stats-button-secondary text-xs",children:"View All Requests"},void 0,!1,void 0,this),children:ve.jsxDEV(Rt,{loading:g,error:h,data:p,children:ve.jsxDEV(Ma,{columns:M,data:w,keyExtractor:(A)=>A.id||`${A.sessionFile}-${A.entryId}`,onRowClick:(A)=>A.id&&r(A.id),renderMobileCard:I,emptyText:"No recent requests found"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var a0=Q(dt(),1);var ot=Q(de(),1);function LR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["projects",o,s],(g)=>hA(o,g),{pollMs:30000,enabled:a}),d=a0.useMemo(()=>{if(!r)return[];return eR(r)},[r]),p=a0.useMemo(()=>[{key:"folder",header:"Project/Folder",render:(g)=>ot.jsxDEV("div",{className:"stats-font-medium stats-text-primary truncate max-w-[440px]",title:g.folder||"(root)",children:g.folder||"(root)"},void 0,!1,void 0,this)},{key:"totalRequests",header:"Requests",numeric:!0,render:(g)=>ot.jsxDEV("div",{className:"stats-text-right",children:[ot.jsxDEV("div",{className:"font-mono",children:Ce(g.totalRequests)},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-progress-bar-track mt-1 ml-auto w-24 h-1",children:ot.jsxDEV("div",{className:"stats-progress-bar-fill","data-variant":"link",style:{width:`${g.requestsPercentage}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"totalCost",header:"API-equivalent estimate",numeric:!0,render:(g)=>ot.jsxDEV("div",{className:"stats-text-right",children:[ot.jsxDEV("div",{className:"font-mono",children:ea(g.totalCost,g.unpricedRequests)},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-progress-bar-track mt-1 ml-auto w-24 h-1",children:ot.jsxDEV("div",{className:"stats-progress-bar-fill","data-variant":"success",style:{width:`${g.costPercentage}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"totalTokens",header:"Tokens",numeric:!0,render:(g)=>ot.jsxDEV("div",{className:"font-mono",children:Ce(g.totalInputTokens+g.totalOutputTokens)},void 0,!1,void 0,this)},{key:"cacheRate",header:"Cache Rate",numeric:!0,render:(g)=>ot.jsxDEV("span",{className:"font-mono",children:Ht(g.cacheRate)},void 0,!1,void 0,this)},{key:"cacheSavings",header:"Cache Savings",numeric:!0,render:(g)=>ot.jsxDEV("span",{className:`${g.cacheSavings<0?"stats-text-danger":"stats-text-success"} font-medium`,children:Ht(g.cacheSavings)},void 0,!1,void 0,this)},{key:"errorRate",header:"Error Rate",numeric:!0,render:(g)=>ot.jsxDEV(ya,{variant:g.errorRate>0.1?"danger":g.errorRate>0?"warning":"success",children:Ht(g.errorRate)},void 0,!1,void 0,this)},{key:"avgDuration",header:"Avg Duration",numeric:!0,render:(g)=>rt(g.avgDuration)}],[]);return ot.jsxDEV("div",{className:"stats-route-container",children:ot.jsxDEV(ut,{title:"Projects & Folders",subtitle:"Aggregate proxy metrics grouped by folder path",children:ot.jsxDEV(Rt,{loading:u,error:l,data:r,emptyText:"No project folders recorded for this range.",children:ot.jsxDEV(Ma,{columns:p,data:d,keyExtractor:(g)=>g.folder,renderMobileCard:(g)=>ot.jsxDEV("div",{className:"stats-mobile-card",children:[ot.jsxDEV("div",{className:"stats-mobile-card-header mb-2",children:[ot.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:g.folder||"(root)"},void 0,!1,void 0,this),ot.jsxDEV(ya,{variant:g.errorRate>0.1?"danger":g.errorRate>0?"warning":"success",children:[Ht(g.errorRate)," Err"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-grid",children:[ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Requests"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:Ce(g.totalRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:ea(g.totalCost,g.unpricedRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Cache Rate"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value",children:Ht(g.cacheRate)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Cache Savings"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value",children:Ht(g.cacheSavings)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ot.jsxDEV("div",{children:[ot.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),ot.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(g.avgDuration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),emptyText:"No project folders recorded for this range."},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Ia=Q(dt(),1);var $e=Q(de(),1);function CR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["providers",o,s],(d)=>bA(o,d),{pollMs:30000,enabled:a});return $e.jsxDEV("div",{className:"stats-route-container space-y-6",children:$e.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&$e.jsxDEV($e.Fragment,{children:[$e.jsxDEV(Rz,{providers:r.providers},void 0,!1,void 0,this),$e.jsxDEV(Dz,{stats:r},void 0,!1,void 0,this),$e.jsxDEV(_z,{hourly:r.hourly,providers:r.providers},void 0,!1,void 0,this),$e.jsxDEV(Ez,{insights:r.windowInsights},void 0,!1,void 0,this),$e.jsxDEV(Oz,{usageSeries:r.usageSeries},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Rz({providers:a}){let o=Ia.useMemo(()=>a.reduce((l,u)=>l+u.totalTokens,0),[a]),s=Ia.useMemo(()=>a.reduce((l,u)=>l+u.unpricedRequests,0),[a]),r=[{key:"provider",header:"Provider",render:(l)=>$e.jsxDEV("span",{className:"font-medium",children:l.provider},void 0,!1,void 0,this)},{key:"requests",header:"Requests",numeric:!0,render:(l)=>Ce(l.totalRequests)},{key:"errors",header:"Error Rate",numeric:!0,render:(l)=>Ht(l.totalRequests>0?l.failedRequests/l.totalRequests:0)},{key:"models",header:"Models",numeric:!0,render:(l)=>Ce(l.models)},{key:"tokens",header:"Tokens",numeric:!0,render:(l)=>$e.jsxDEV("span",{title:`Input ${lt(l.totalInputTokens)} · Output ${lt(l.totalOutputTokens)} · Cache read ${lt(l.totalCacheReadTokens)} · Cache write ${lt(l.totalCacheWriteTokens)}`,children:lt(l.totalTokens)},void 0,!1,void 0,this)},{key:"share",header:"Share",numeric:!0,render:(l)=>Ht(o>0?l.totalTokens/o:0)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(l)=>ea(l.totalCost,l.unpricedRequests)},{key:"tps",header:"Tok/s",numeric:!0,render:(l)=>qm(l.avgTokensPerSecond)}];return $e.jsxDEV(ut,{title:"Provider Totals",subtitle:s>0?`Token, request, and API-equivalent estimates; excludes ${s.toLocaleString()} unpriced subscription request${s===1?"":"s"}`:"Token, request, and API-equivalent estimates over the active range",children:$e.jsxDEV(Ma,{columns:r,data:a,keyExtractor:(l)=>l.provider,emptyText:"No requests recorded in this range"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Dz({stats:a}){let[o,s]=Ia.useState("tokens"),r=$t(),l=ra[r],u=Ia.useMemo(()=>a.providers.reduce((y,b)=>y+b.unpricedRequests,0),[a.providers]),d=Ia.useMemo(()=>{let y=a.series.map((b)=>({...b,model:b.provider}));return ju(y,{topN:6,rankWeight:(b)=>o==="tokens"?b.totalTokens:b.cost,initBucket:()=>({total:0}),accumulate:(b,v)=>{b.total+=o==="tokens"?v.totalTokens:v.cost},bucketToValue:(b)=>b.total})},[a.series,o]),p=o==="tokens"?lt:(y)=>Cf(y),h=Ia.useMemo(()=>{let{sharedScaleBase:y,yScale:b}=ls({chartTheme:l,formatY:p});return{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:is({chartTheme:l,showLegend:!0,defaultLabel:o==="tokens"?"Tokens":"API-equivalent estimate",formatValue:p,footer:(v)=>{if(v.length<2)return;let T=v.reduce((M,I)=>M+(I.parsed.y??0),0);return`Total: ${p(T)}`}}),scales:{x:{...y,stacked:!0},y:{...b,stacked:!0}}}},[l,o,p]),g=Ia.useMemo(()=>({labels:d.labels,datasets:ui(d,(y)=>Sl(yt[y%yt.length]))}),[d]);return $e.jsxDEV(ut,{title:"Burn by Provider",subtitle:o==="cost"&&u>0?`API-equivalent estimates over time; excludes ${u.toLocaleString()} unpriced subscription request${u===1?"":"s"}`:"Stacked token or API-equivalent estimate burn over time",actions:$e.jsxDEV(Ws,{options:[{value:"tokens",label:"Tokens"},{value:"cost",label:"API-equivalent estimate"}],value:o,onChange:s},void 0,!1,void 0,this),children:$e.jsxDEV("div",{className:"h-[300px]",children:d.labels.length===0?$e.jsxDEV(Gu,{message:"No provider activity in this range"},void 0,!1,void 0,this):$e.jsxDEV(li,{data:g,options:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var o0="__all__";function _z({hourly:a,providers:o}){let[s,r]=Ia.useState(o0),l=$t(),u=ra[l],{tokensByHour:d,peakHour:p}=Ia.useMemo(()=>{let b=Array(24).fill(0);for(let T of a){if(s!==o0&&T.provider!==s)continue;b[T.hour]+=T.totalTokens}let v=0;for(let T=1;T<24;T++)if(b[T]>b[v])v=T;return{tokensByHour:b,peakHour:v}},[a,s]),h=d.some((b)=>b>0),g=Ia.useMemo(()=>({labels:Array.from({length:24},(b,v)=>`${String(v).padStart(2,"0")}:00`),datasets:[{label:"Tokens",data:d,...Sl(yt[2]),backgroundColor:d.map((b,v)=>v===p?yt[0]:yt[2])}]}),[d,p]),y=Ia.useMemo(()=>{let{sharedScaleBase:b,yScale:v}=ls({chartTheme:u,formatY:lt});return{responsive:!0,maintainAspectRatio:!1,plugins:is({chartTheme:u,showLegend:!1,defaultLabel:"Tokens",formatValue:lt}),scales:{x:b,y:v}}},[u]);return $e.jsxDEV(ut,{title:"Peak Burn Hours",subtitle:h?`Token burn by local hour of day — peak at ${String(p).padStart(2,"0")}:00`:"Token burn by local hour of day",actions:$e.jsxDEV("select",{className:"stats-select",value:s,onChange:(b)=>r(b.target.value),"aria-label":"Provider",children:[$e.jsxDEV("option",{value:o0,children:"All providers"},void 0,!1,void 0,this),o.map((b)=>$e.jsxDEV("option",{value:b.provider,children:b.provider},b.provider,!1,void 0,this))]},void 0,!0,void 0,this),children:$e.jsxDEV("div",{className:"h-[260px]",children:h?$e.jsxDEV(li,{data:g,options:y},void 0,!1,void 0,this):$e.jsxDEV(Gu,{message:"No activity in this range"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Ez({insights:a}){return $e.jsxDEV(ut,{title:"Subscription Windows",subtitle:"What each usage window buys you, and how many accounts peak demand needs",children:$e.jsxDEV(Ma,{columns:[{key:"provider",header:"Provider",render:(s)=>$e.jsxDEV("span",{className:"font-medium",children:s.provider},void 0,!1,void 0,this)},{key:"window",header:"Window",render:(s)=>s.windowLabel},{key:"accounts",header:"Accounts",numeric:!0,render:(s)=>Ce(s.accounts)},{key:"consumed",header:"Windows Burned",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Subscription-window equivalents consumed in range (sum of used-fraction increases across accounts)",children:s.fractionConsumed.toFixed(2)},void 0,!1,void 0,this)},{key:"capacity",header:"Est. Tokens / Window",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Provider tokens burned in range ÷ windows burned — what one full window is worth",children:s.estTokensPerWindow!==null?lt(s.estTokensPerWindow):"—"},void 0,!1,void 0,this)},{key:"peak",header:"Peak Utilization",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Peak of summed used fraction across accounts at any sampled instant",children:Ht(s.peakConcurrentFraction)},void 0,!1,void 0,this)},{key:"ideal",header:"Ideal Accounts",numeric:!0,render:(s)=>$e.jsxDEV("span",{title:"Accounts needed to keep peak demand under 90% of fleet capacity",className:s.idealAccounts>s.accounts?"stats-text-warning font-semibold":void 0,children:[Ce(s.idealAccounts),s.idealAccounts>s.accounts?` (have ${s.accounts})`:""]},void 0,!0,void 0,this)},{key:"exhausted",header:"Exhaustions",numeric:!0,render:(s)=>$e.jsxDEV("span",{className:s.exhaustedEvents>0?"stats-text-warning":void 0,children:Ce(s.exhaustedEvents)},void 0,!1,void 0,this)}],data:a,keyExtractor:(s)=>`${s.provider}::${s.windowKey}`,emptyText:"No usage snapshots recorded yet — they accumulate whenever usage is fetched (TUI footer, /usage, omp usage)"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n0={ok:"#62d394",warning:"#f5c14b",exhausted:"#ff6b7d"};function Oz({usageSeries:a}){let o=Ia.useMemo(()=>[...new Set(a.map((y)=>y.provider))],[a]),[s,r]=Ia.useState(null),l=s!==null&&o.includes(s)?s:o[0]??null,u=$t(),d=ra[u],p=Ia.useMemo(()=>a.filter((y)=>y.provider===l).map((y)=>{let b=[...y.points].reverse().find((v)=>v.usedFraction!==null);return b?{label:`${y.windowLabel} · ${y.accountLabel}`,fraction:b.usedFraction??0,exhausted:b.exhausted,recordedAt:b.timestamp}:null}).filter((y)=>y!==null).sort((y,b)=>b.fraction-y.fraction),[a,l]),h=Ia.useMemo(()=>({labels:p.map((y)=>y.label),datasets:[{label:"Used",data:p.map((y)=>y.fraction*100),backgroundColor:p.map((y)=>y.exhausted?n0.exhausted:y.fraction>=0.8?n0.warning:n0.ok),borderWidth:0,borderRadius:4,barThickness:18}]}),[p]),g=Ia.useMemo(()=>{let{sharedScaleBase:y,yScale:b}=ls({chartTheme:d,formatY:(M)=>`${Math.round(M)}%`}),v=Math.max(100,...p.map((M)=>M.fraction*100)),T=is({chartTheme:d,showLegend:!1,defaultLabel:"Used",formatValue:(M)=>`${M.toFixed(1)}%`});return{indexAxis:"y",responsive:!0,maintainAspectRatio:!1,plugins:{...T,tooltip:{...T.tooltip,callbacks:{label:(M)=>{let I=p[M.dataIndex],w=`${(M.parsed.x??0).toFixed(1)}% used`;return I?`${w} · recorded ${za(I.recordedAt)}`:w}}}},scales:{x:{...b,max:v},y:{...y,grid:{display:!1}}}}},[d,p]);return $e.jsxDEV(ut,{title:"Window Utilization",subtitle:"Latest recorded limit utilization per account and window — red bars are exhausted, amber above 80%",actions:o.length>1?$e.jsxDEV("select",{className:"stats-select",value:l??"",onChange:(y)=>r(y.target.value),"aria-label":"Provider",children:o.map((y)=>$e.jsxDEV("option",{value:y,children:y},y,!1,void 0,this))},void 0,!1,void 0,this):void 0,children:$e.jsxDEV("div",{style:{height:Math.max(160,p.length*34+60)},children:p.length===0?$e.jsxDEV(Gu,{message:"No usage snapshots recorded yet — they accumulate whenever usage is fetched"},void 0,!1,void 0,this):$e.jsxDEV(li,{data:h,options:g},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var TR=Q(dt(),1);var Tt=Q(de(),1);function wR({active:a,refreshTrigger:o,onRequestClick:s}){let{data:r,error:l,loading:u}=Vt(["recent-requests-dense",o],(h)=>Rm(50,h),{pollMs:30000,enabled:a}),d=TR.useMemo(()=>[{key:"model",header:"Model",render:(h)=>Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:h.model},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:h.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"timestamp",header:"Time",render:(h)=>za(h.timestamp)},{key:"tokens",header:"Tokens",numeric:!0,render:(h)=>Ce(h.usage.totalTokens)},{key:"cost",header:"API-equivalent estimate",numeric:!0,render:(h)=>ln(h,4)},{key:"duration",header:"Duration",numeric:!0,render:(h)=>rt(h.duration)},{key:"status",header:"Status",className:"stats-text-center",render:(h)=>Tt.jsxDEV(ya,{variant:h.errorMessage?"danger":"success",children:h.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)}],[]);return Tt.jsxDEV("div",{className:"stats-route-container",children:Tt.jsxDEV(ut,{title:"All Recent Requests",subtitle:"Up to 50 most recent requests processed by OMP",children:Tt.jsxDEV(Rt,{loading:u,error:l,data:r,children:Tt.jsxDEV(Ma,{columns:d,data:r||[],keyExtractor:(h)=>h.id||`${h.sessionFile}-${h.entryId}`,onRowClick:(h)=>h.id&&s(h.id),renderMobileCard:(h,g)=>Tt.jsxDEV("div",{className:"stats-mobile-card",onClick:g,children:[Tt.jsxDEV("div",{className:"stats-mobile-card-header",children:[Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-font-semibold stats-text-primary",children:h.model},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-text-xs stats-text-muted",children:h.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV(ya,{variant:h.errorMessage?"danger":"success",children:h.errorMessage?"Failed":"Success"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-grid",children:[Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Time"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:za(h.timestamp)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"API-equivalent estimate"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:ln(h,4)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Tokens"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:Ce(h.usage.totalTokens)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Tt.jsxDEV("div",{children:[Tt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),Tt.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(h.duration)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),h.errorMessage&&Tt.jsxDEV("div",{className:"stats-mobile-card-error truncate mt-2",children:h.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),emptyText:"No recent requests found"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var cn=Q(dt(),1);var re=Q(de(),1);function kR({active:a,range:o,refreshTrigger:s}){let{data:r,error:l,loading:u}=Vt(["tools",o,s],(d)=>gA(o,d),{pollMs:30000,enabled:a});return re.jsxDEV("div",{className:"stats-route-container space-y-6",children:re.jsxDEV(Rt,{loading:u,error:l,data:r,emptyText:"No tool calls recorded for this range.",children:r&&re.jsxDEV(re.Fragment,{children:[re.jsxDEV(Pz,{byTool:r.byTool},void 0,!1,void 0,this),re.jsxDEV(zz,{series:r.series,timeRange:o},void 0,!1,void 0,this),re.jsxDEV(Hz,{byTool:r.byTool},void 0,!1,void 0,this),re.jsxDEV(Uz,{byToolModel:r.byToolModel},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Pz({byTool:a}){let o=cn.useMemo(()=>{let s=0,r=0,l=0,u=0,d=0,p=0,h=0,g=0;for(let y of a)s+=y.calls,r+=y.errors,l+=y.totalTokensShare,u+=y.outputTokensShare,d+=y.costShare,p+=y.unpricedRequestsShare,h+=y.resultChars,g+=y.argsChars;return{calls:s,errors:r,tokens:l,output:u,cost:d,unpricedRequests:p,resultChars:h,argsChars:g,tools:a.length}},[a]);return re.jsxDEV(ut,{title:"Tool Usage",subtitle:"Tokens and API-equivalent estimates are split from invoking turns across each turn's tool calls",children:re.jsxDEV("div",{className:"stats-metric-cluster",children:[re.jsxDEV("div",{className:"stats-metric-primary-grid",children:[re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Tool Calls"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:Ce(o.calls)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Tools Used"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:Ce(o.tools)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Error Rate"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:Ht(o.calls>0?o.errors/o.calls:0)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card primary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Attributed API-equivalent estimate"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:ea(o.cost,o.unpricedRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-secondary-grid",children:[re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Attributed Tokens"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:lt(Math.round(o.tokens))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Attributed Output"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:lt(Math.round(o.output))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Result Text"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:[lt(o.resultChars)," chars"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-metric-card secondary",children:[re.jsxDEV("div",{className:"stats-metric-label",children:"Call Arguments"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-metric-value",children:[lt(o.argsChars)," chars"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var Bz=6;function Nz(a){let o=new Map;for(let g of a)o.set(g.tool,(o.get(g.tool)??0)+g.calls);let s=[...o.entries()].sort((g,y)=>y[1]-g[1]),r=s.slice(0,Bz).map(([g])=>g),l=new Set(r),d=s.length>r.length?[...r,"Other"]:r,p=[...new Set(a.map((g)=>g.timestamp))].sort((g,y)=>g-y),h=new Map;for(let g of p)h.set(g,{});for(let g of a){let y=l.has(g.tool)?g.tool:"Other",b=h.get(g.timestamp);if(b)b[y]=(b[y]??0)+g.calls}return{buckets:p,tools:d,data:h}}function zz({series:a,timeRange:o}){let s=$t(),r=ra[s],l=Ll(o),u=cn.useMemo(()=>Nz(a),[a]),d=cn.useMemo(()=>({labels:u.buckets.map((h)=>Tf(h,o)),datasets:u.tools.map((h,g)=>({label:h,data:u.buckets.map((y)=>u.data.get(y)?.[h]??0),borderColor:yt[g%yt.length],backgroundColor:`${yt[g%yt.length]}30`,fill:!0,tension:0.4,pointRadius:0,pointHoverRadius:4,borderWidth:2}))}),[u,o]),p=cn.useMemo(()=>({responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{position:"top",align:"start",labels:{color:r.legendLabel,usePointStyle:!0,padding:16,font:{size:12},boxWidth:8}},tooltip:{backgroundColor:r.tooltipBackground,titleColor:r.tooltipTitle,bodyColor:r.tooltipBody,borderColor:r.tooltipBorder,borderWidth:1,padding:12,cornerRadius:8,callbacks:{label:(h)=>`${h.dataset.label??""}: ${Ce(h.parsed.y??0)} calls`}}},scales:{x:{stacked:!0,grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11}}},y:{stacked:!0,grid:{color:r.grid,drawBorder:!1},ticks:{color:r.tick,font:{size:11},precision:0},min:0}}}),[r]);return re.jsxDEV(ut,{title:"Calls Over Time",subtitle:`Tool calls over ${l.windowLabel}, stacked by tool`,children:re.jsxDEV("div",{className:"h-[280px]",children:u.buckets.length===0?re.jsxDEV("div",{className:"h-full flex items-center justify-center text-stats-muted text-sm",children:"No data available"},void 0,!1,void 0,this):re.jsxDEV(Xa,{data:d,options:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function s0(a){return a>0.1?"danger":a>0?"warning":"success"}function Hz({byTool:a}){let o=cn.useMemo(()=>tR(a),[a]),s=cn.useMemo(()=>[{key:"tool",header:"Tool",render:(l)=>re.jsxDEV("div",{className:"stats-font-medium stats-text-primary font-mono truncate max-w-[280px]",title:l.tool,children:l.tool},void 0,!1,void 0,this)},{key:"calls",header:"Calls",numeric:!0,render:(l)=>re.jsxDEV("div",{className:"stats-text-right",children:[re.jsxDEV("div",{className:"font-mono",children:Ce(l.calls)},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-progress-bar-track mt-1 ml-auto w-24 h-1",children:re.jsxDEV("div",{className:"stats-progress-bar-fill","data-variant":"link",style:{width:`${l.callsPercentage}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"errorRate",header:"Error Rate",numeric:!0,render:(l)=>re.jsxDEV(ya,{variant:s0(l.errorRate),children:Ht(l.errorRate)},void 0,!1,void 0,this)},{key:"tokens",header:"Attr. Tokens",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"font-mono",title:"Invoking turns' total tokens, split across each turn's calls",children:lt(Math.round(l.totalTokensShare))},void 0,!1,void 0,this)},{key:"cost",header:"Attr. API-equivalent estimate",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"font-mono",children:ea(l.costShare,l.unpricedRequestsShare)},void 0,!1,void 0,this)},{key:"resultChars",header:"Result Text",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"font-mono",title:"Characters of tool-result text fed back into context",children:lt(l.resultChars)},void 0,!1,void 0,this)},{key:"lastUsed",header:"Last Used",numeric:!0,render:(l)=>re.jsxDEV("span",{className:"stats-text-secondary",children:za(l.lastUsed)},void 0,!1,void 0,this)}],[]);return re.jsxDEV(ut,{title:"By Tool",subtitle:"Usage per tool, most called first",children:re.jsxDEV(Ma,{columns:s,data:o,keyExtractor:(l)=>l.tool,renderMobileCard:(l)=>re.jsxDEV("div",{className:"stats-mobile-card",children:[re.jsxDEV("div",{className:"stats-mobile-card-header mb-2",children:[re.jsxDEV("div",{className:"stats-font-semibold stats-text-primary font-mono",children:l.tool},void 0,!1,void 0,this),re.jsxDEV(ya,{variant:s0(l.errorRate),children:[Ht(l.errorRate)," Err"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-grid",children:[re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Calls"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:Ce(l.calls)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Attr. Tokens"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:lt(Math.round(l.totalTokensShare))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Attr. API-equivalent estimate"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:ea(l.costShare,l.unpricedRequestsShare)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-mobile-card-label",children:"Result Text"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-mobile-card-value font-mono",children:lt(l.resultChars)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),emptyText:"No tool calls recorded for this range."},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Uz({byToolModel:a}){let[o,s]=cn.useState(null),r=cn.useMemo(()=>[...new Set(a.map((d)=>d.tool))].sort(),[a]),l=cn.useMemo(()=>(o?a.filter((p)=>p.tool===o):a).map((p)=>({...p,errorRate:p.calls>0?p.errors/p.calls:0})),[a,o]),u=cn.useMemo(()=>[{key:"tool",header:"Tool",render:(d)=>re.jsxDEV("span",{className:"stats-font-medium stats-text-primary font-mono",children:d.tool},void 0,!1,void 0,this)},{key:"model",header:"Model",render:(d)=>re.jsxDEV("div",{children:[re.jsxDEV("div",{className:"stats-text-primary",children:d.model||"(unknown)"},void 0,!1,void 0,this),re.jsxDEV("div",{className:"stats-text-secondary text-xs",children:d.provider},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},{key:"calls",header:"Calls",numeric:!0,render:(d)=>re.jsxDEV("span",{className:"font-mono",children:Ce(d.calls)},void 0,!1,void 0,this)},{key:"errorRate",header:"Error Rate",numeric:!0,render:(d)=>re.jsxDEV(ya,{variant:s0(d.errorRate),children:Ht(d.errorRate)},void 0,!1,void 0,this)},{key:"tokens",header:"Attr. Tokens",numeric:!0,render:(d)=>re.jsxDEV("span",{className:"font-mono",children:lt(Math.round(d.totalTokensShare))},void 0,!1,void 0,this)},{key:"cost",header:"Attr. API-equivalent estimate",numeric:!0,render:(d)=>re.jsxDEV("span",{className:"font-mono",children:ea(d.costShare,d.unpricedRequestsShare)},void 0,!1,void 0,this)}],[]);return re.jsxDEV(ut,{title:"By Model",subtitle:"Which models call which tools",children:[re.jsxDEV("div",{className:"mb-4",style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[re.jsxDEV("span",{className:"stats-text-secondary",style:{fontSize:"0.875rem",whiteSpace:"nowrap"},children:"Tool"},void 0,!1,void 0,this),re.jsxDEV("select",{className:"stats-select",value:o??"",onChange:(d)=>s(d.target.value||null),style:{maxWidth:"320px",flex:1},children:[re.jsxDEV("option",{value:"",children:"All tools"},void 0,!1,void 0,this),r.map((d)=>re.jsxDEV("option",{value:d,children:d},d,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),re.jsxDEV(Ma,{columns:u,data:l,keyExtractor:(d)=>`${d.tool}::${d.model}::${d.provider}`,emptyText:"No tool calls recorded for this range."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Rf=Q(dt(),1);var wt=Q(dt(),1);var Zm=Q(dt(),1);var Zs=Q(de(),1);function MR({toolStats:a}){let[o,s]=Zm.useState(!1),r=Zm.useMemo(()=>[{key:"tool",header:"Tool",render:(l)=>l.tool},{key:"calls",header:"Calls",numeric:!0,render:(l)=>Ce(l.calls)},{key:"errors",header:"Errors",numeric:!0,render:(l)=>Ce(l.errors)},{key:"total",header:"Total",numeric:!0,render:(l)=>rt(l.totalMs)},{key:"avg",header:"Avg",numeric:!0,render:(l)=>rt(l.calls>0?l.totalMs/l.calls:0)},{key:"max",header:"Max",numeric:!0,render:(l)=>rt(l.maxMs)}],[]);if(a.length===0)return null;return Zs.jsxDEV("div",{className:"stats-panel",children:[Zs.jsxDEV("button",{type:"button",onClick:()=>s((l)=>!l),"aria-expanded":o,style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",padding:"10px 14px",cursor:"pointer",textAlign:"left"},children:[o?Zs.jsxDEV(Xs,{size:14,className:"stats-text-muted","aria-hidden":"true"},void 0,!1,void 0,this):Zs.jsxDEV(hl,{size:14,className:"stats-text-muted","aria-hidden":"true"},void 0,!1,void 0,this),Zs.jsxDEV("span",{className:"stats-panel-title",children:"Tool Aggregates"},void 0,!1,void 0,this),Zs.jsxDEV("span",{className:"stats-text-muted",style:{fontSize:11},children:[a.length," tools"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),o&&Zs.jsxDEV("div",{className:"stats-panel-body",children:Zs.jsxDEV(Ma,{columns:r,data:a,keyExtractor:(l)=>l.tool,emptyText:"No tool calls"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var wn=Q(dt(),1);var $u={dark:{category:{turn:"#34d399",model:"#a78bfa",tool:"#fbbf24",subagent:"#38bdf8",background:"#94a3b8"},error:"#f87171",marker:"#facc15",turnBand:"rgba(255, 255, 255, 0.035)",surface:"transparent",grid:"rgba(255, 255, 255, 0.06)",tick:"#867a93",spanText:"#16121c",selection:"#5ad8e6",tooltipBackground:"#241a2e",tooltipTitle:"#eae5ef",tooltipBody:"#a89fb3",tooltipBorder:"rgba(255, 255, 255, 0.12)"},light:{category:{turn:"#059669",model:"#7c3aed",tool:"#d97706",subagent:"#0284c7",background:"#64748b"},error:"#ef4444",marker:"#ca8a04",turnBand:"rgba(0, 0, 0, 0.04)",surface:"transparent",grid:"rgba(20, 12, 28, 0.08)",tick:"#6a6275",spanText:"#ffffff",selection:"#0e7490",tooltipBackground:"#ffffff",tooltipTitle:"#241a2e",tooltipBody:"#5a5462",tooltipBorder:"rgba(20, 12, 28, 0.15)"}};var RR=Q(de(),1),fi=44,r0=["turn","model","tool","subagent"],IR=6,Wu=10;function AR({tracks:a,scale:o,viewport:s,onViewportChange:r}){let l=$t(),u=$u[l],d=wn.useRef(null),[p,h]=wn.useState(800),g=wn.useRef(null);wn.useEffect(()=>{let B=d.current;if(!B)return;let z=new ResizeObserver((H)=>{h(Math.max(100,Math.floor(H[0].contentRect.width)))});return z.observe(B),()=>z.disconnect()},[]);let[y,b]=o.domain,v=Math.max(b-y,0.000000001),T=wn.useCallback((B)=>(B-y)/v*p,[y,v,p]),M=wn.useCallback((B)=>y+B/Math.max(p,1)*v,[y,v,p]);wn.useEffect(()=>{let B=d.current;if(!B)return;let z=B.getContext("2d");if(!z)return;let H=devicePixelRatio;z.setTransform(H,0,0,H,0,0),z.clearRect(0,0,p,fi);let q=fi/r0.length;for(let Y=0;Y<r0.length;Y++){let J=r0[Y],X=new Float32Array(p);for(let se of a)for(let ge of se.spans){if(ge.kind!==J)continue;let be=Math.max(0,Math.floor(T(o.toU(ge.start)))),Se=Math.min(p-1,Math.ceil(T(o.toU(ge.end))));for(let K=be;K<=Se;K++)X[K]=Math.min(1,X[K]+0.34)}z.fillStyle=u.category[J];for(let se=0;se<p;se++){if(X[se]<=0)continue;z.globalAlpha=0.25+X[se]*0.75,z.fillRect(se,Y*q+1,1,q-2)}z.globalAlpha=1}let j=T(s.u0),G=T(s.u1);z.fillStyle=l==="dark"?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)",z.fillRect(j,0,G-j,fi),z.strokeStyle=u.selection,z.strokeRect(j+0.5,0.5,G-j-1,fi-1),z.fillStyle=u.selection,z.fillRect(j,0,2,fi),z.fillRect(G-2,0,2,fi)},[a,o,s,u,l,p,T]);let I=(B)=>{let z=B.currentTarget.getBoundingClientRect(),H=B.clientX-z.left,q=T(s.u0),j=T(s.u1),G;if(Math.abs(H-q)<=IR)G="left";else if(Math.abs(H-j)<=IR)G="right";else if(H>q&&H<j)G="move";else{G="create";let Y=M(H);r(Mf({u0:Y,u1:Y+Wu},y,b))}g.current={mode:G,startX:H,startViewport:s},B.currentTarget.setPointerCapture(B.pointerId)},w=(B)=>{let z=g.current;if(!z)return;let H=B.currentTarget.getBoundingClientRect(),q=B.clientX-H.left,j=M(q)-M(z.startX),{u0:G,u1:Y}=z.startViewport;if(z.mode==="move")r(Mf({u0:G+j,u1:Y+j},y,b));else if(z.mode==="left")r(Mf({u0:Math.min(G+j,Y-Wu),u1:Y},y,b));else if(z.mode==="right")r(Mf({u0:G,u1:Math.max(Y+j,G+Wu)},y,b));else{let J=M(z.startX),X=M(q);r(Mf({u0:Math.min(J,X),u1:Math.max(J,X,Math.min(J,X)+Wu)},y,b))}},A=()=>{g.current=null};return RR.jsxDEV("canvas",{ref:d,width:Math.floor(p*devicePixelRatio),height:Math.floor(fi*devicePixelRatio),style:{width:"100%",height:fi,display:"block",cursor:"crosshair",borderRadius:4,border:"1px solid var(--border)",touchAction:"none"},role:"slider","aria-label":"Timeline overview brush","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round((s.u0-y)/v*100),tabIndex:-1,onPointerDown:I,onPointerMove:w,onPointerUp:A},void 0,!1,void 0,this)}function Mf(a,o,s){let r=Math.max(Wu,a.u1-a.u0);r=Math.min(r,s-o||Wu);let l=a.u0;if(l<o)l=o;if(l+r>s)l=s-r;return{u0:l,u1:l+r}}var kn=Q(dt(),1);var Te=Q(de(),1);function Fz(a){let o=[];if(typeof a==="string"){if(a.trim())o.push({kind:"text",text:a});return o}if(!Array.isArray(a))return o;for(let s of a){if(!s||typeof s!=="object"||!("type"in s))continue;if((s.type==="text"||s.type==="thinking")&&"text"in s&&typeof s.text==="string")o.push({kind:String(s.type),text:s.text})}return o}function DR({span:a,track:o,onClose:s,onOpenChildTrack:r}){let[l,u]=kn.useState(null),[d,p]=kn.useState(!1),[h,g]=kn.useState(null),[y,b]=kn.useState(!1),v=kn.useRef(null),T=kn.useRef(null);if(kn.useEffect(()=>{if(u(null),g(null),b(!1),!a||!o||!a.entryId)return;T.current=document.activeElement instanceof HTMLElement?document.activeElement:null,p(!0);let z=new AbortController;return vA(o.file,a.entryId,z.signal).then((H)=>{if(z.signal.aborted)return;u(H.entry),setTimeout(()=>v.current?.focus(),50)}).catch((H)=>{if(z.signal.aborted)return;g(H instanceof Error?H:Error(String(H)))}).finally(()=>{if(!z.signal.aborted)p(!1)}),()=>z.abort()},[a,o]),kn.useEffect(()=>{if(!a)return;let z=(H)=>{if(H.key==="Escape")s()};return window.addEventListener("keydown",z),()=>{window.removeEventListener("keydown",z),T.current?.focus()}},[a,s]),!a)return null;let M=(z)=>{if(z.target===z.currentTarget)s()},I=async()=>{try{await navigator.clipboard.writeText(JSON.stringify(l??a,null,2)),b(!0),setTimeout(()=>b(!1),1500)}catch{}},A=(l&&typeof l==="object"?l:{}).message,B=A?.usage;return Te.jsxDEV("div",{className:"stats-drawer-overlay",onClick:M,role:"presentation",children:Te.jsxDEV("div",{className:"stats-drawer",role:"dialog","aria-modal":"true","aria-label":"Span details",children:[Te.jsxDEV("div",{className:"stats-drawer-header",children:[Te.jsxDEV("div",{className:"stats-drawer-header-left",children:[Te.jsxDEV("h2",{className:"stats-drawer-title truncate",style:{maxWidth:320},children:a.label},void 0,!1,void 0,this),Te.jsxDEV(ya,{variant:a.isError?"danger":"success",children:a.kind},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{style:{display:"flex",gap:8},children:[Te.jsxDEV("button",{type:"button",onClick:I,className:"stats-drawer-close-btn","aria-label":"Copy raw JSON",title:"Copy raw JSON",children:y?Te.jsxDEV(pl,{size:16},void 0,!1,void 0,this):Te.jsxDEV(gl,{size:16},void 0,!1,void 0,this)},void 0,!1,void 0,this),Te.jsxDEV("button",{ref:v,type:"button",onClick:s,className:"stats-drawer-close-btn","aria-label":"Close span details",children:Te.jsxDEV(Ys,{size:18},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-body",children:Te.jsxDEV("div",{className:"stats-drawer-content",children:[Te.jsxDEV("div",{className:"stats-drawer-metrics-grid",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Duration"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(a.end-a.start)},void 0,!1,void 0,this),a.unterminated&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:"unterminated"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Start"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",style:{fontSize:13},children:new Date(a.start).toLocaleTimeString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a.kind==="model"&&Te.jsxDEV(Te.Fragment,{children:[Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Tokens"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:Ce(a.tokens??0)},void 0,!1,void 0,this),B&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:[Ce(B.input??0)," in · ",Ce(B.output??0)," out ·"," ",Ce(B.cacheRead??0)," cached"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Cost"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:["$",(a.cost??0).toFixed(4)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"TTFT"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",children:rt(a.ttft??null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-card",children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Model"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-metric-value",style:{fontSize:12},children:A?.model??a.model??"-"},void 0,!1,void 0,this),A?.provider&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:A.provider},void 0,!1,void 0,this),A?.stopReason&&Te.jsxDEV("div",{className:"stats-drawer-metric-sub",children:["stop: ",A.stopReason]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A?.errorMessage&&Te.jsxDEV("div",{className:"stats-drawer-error-block",children:[Te.jsxDEV("div",{className:"stats-drawer-error-label",children:"Error Message"},void 0,!1,void 0,this),Te.jsxDEV("div",{className:"stats-drawer-error-text",children:A.errorMessage},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a.kind==="subagent"&&Te.jsxDEV("div",{children:[a.detail&&Te.jsxDEV("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:12,background:"var(--surface-2)",borderRadius:6,padding:10},children:a.detail},void 0,!1,void 0,this),a.childTrackId&&r&&Te.jsxDEV("button",{type:"button",className:"stats-segmented-control-btn",style:{marginTop:8,border:"1px solid var(--border)",borderRadius:6},onClick:()=>r(a.childTrackId??""),children:["Open child track ",a.childTrackId]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a.kind==="tool"&&a.detail&&Te.jsxDEV("div",{children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",children:"Args"},void 0,!1,void 0,this),Te.jsxDEV("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:12,background:"var(--surface-2)",borderRadius:6,padding:10},children:a.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d&&Te.jsxDEV("div",{children:[Te.jsxDEV(Ua,{variant:"rect",width:"100%",height:80,className:"mb-4"},void 0,!1,void 0,this),Te.jsxDEV(Ua,{variant:"rect",width:"100%",height:160},void 0,!1,void 0,this)]},void 0,!0,void 0,this),h&&Te.jsxDEV("div",{className:"stats-drawer-error",children:[Te.jsxDEV("p",{className:"stats-drawer-error-title",children:"Failed to load entry"},void 0,!1,void 0,this),Te.jsxDEV("p",{className:"stats-drawer-error-message",children:h.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!d&&l!==null&&Fz(A?.content).map((z,H)=>Te.jsxDEV("div",{children:[Te.jsxDEV("div",{className:"stats-drawer-metric-label",style:{textTransform:"capitalize"},children:z.kind},void 0,!1,void 0,this),Te.jsxDEV("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:12,background:"var(--surface-2)",borderRadius:6,padding:10,maxHeight:360,overflowY:"auto"},children:z.text},void 0,!1,void 0,this)]},`${z.kind}-${H}`,!0,void 0,this)),!d&&l!==null&&Te.jsxDEV("div",{className:"stats-drawer-json-blocks",children:Te.jsxDEV(wf,{data:l,title:"Raw Entry",initialCollapsed:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var If=Q(de(),1);function _R({summary:a}){let o=[{label:"Wall",value:rt(a.wallMs)},{label:"Model",value:rt(a.modelMs)},{label:"Tools",value:rt(a.toolMs)},{label:"Idle",value:rt(a.idleMs)},{label:"Turns",value:Ce(a.turns)},{label:"Requests",value:Ce(a.requests)},{label:"Tool Calls",value:Ce(a.toolCalls)},{label:"Agents",value:Ce(a.subagents)},{label:"Tokens",value:lt(a.totalTokens)},{label:"Cost",value:ea(a.costTotal,a.unpricedRequests)}];return If.jsxDEV("div",{className:"stats-trace-summary",children:o.map((s)=>If.jsxDEV("div",{className:"stats-trace-summary-cell",children:[If.jsxDEV("span",{className:"stats-trace-summary-label",children:s.label},void 0,!1,void 0,this),If.jsxDEV("span",{className:"stats-trace-summary-value",children:s.value},void 0,!1,void 0,this)]},s.label,!0,void 0,this))},void 0,!1,void 0,this)}var jt=Q(dt(),1);function Qm(a,o){let s=a.length,r=[o[0],o[s-1]],l=(u,d)=>{let p=0,h=s-1;while(p<h){let g=p+h+1>>1;if(u[g]<=d)p=g;else h=g-1}return Math.min(p,s-2)};return{toU(u){if(u<=a[0])return o[0];if(u>=a[s-1])return o[s-1];let d=l(a,u),p=a[d+1]-a[d];if(p<=0)return o[d];return o[d]+(u-a[d])/p*(o[d+1]-o[d])},toT(u){if(u<=o[0])return a[0];if(u>=o[s-1])return a[s-1];let d=l(o,u),p=o[d+1]-o[d];if(p<=0)return a[d];return a[d]+(u-o[d])/p*(a[d+1]-a[d])},domain:r,gaps:[]}}function qz(a){let o=[];for(let s of a)for(let r of s.spans)o.push([r.start,r.end]);return o.sort((s,r)=>s[0]-r[0]),o}function Vz(a){let{POSITIVE_INFINITY:o,NEGATIVE_INFINITY:s}=Number;for(let r of a)for(let l of r.spans){if(l.start<o)o=l.start;if(l.end>s)s=l.end}if(!Number.isFinite(o))return[0,1];return[o,Math.max(s,o+1)]}function ER(a,o,s){let r=[...new Set(a.filter((p)=>p>=o&&p<=s))].sort((p,h)=>p-h);if(r[0]!==o)r.unshift(o);if(r[r.length-1]!==s)r.push(s);if(r.length<2)return Qm([o,s],[o,s]);let u=(s-o)/(r.length-1),d=r.map((p,h)=>o+h*u);return Qm(r,d)}function jz(a,o,s){let r=qz(a),l=[];for(let[y,b]of r){let v=y-2000,T=b+2000,M=l[l.length-1];if(M&&v<=M[1]){if(T>M[1])M[1]=T}else l.push([v,T])}if(l.length===0)l.push([o,s]);l[0][0]=Math.max(l[0][0],o),l[l.length-1][1]=Math.min(Math.max(l[l.length-1][1],l[l.length-1][0]),s);let u=[],d=[],p=[],h=l[0][0];for(let y=0;y<l.length;y++){let[b,v]=l[y];if(y===0)u.push(b),d.push(h);else{let T=l[y-1][1],M=b-T;if(M>30000)h+=8000,p.push({t0:T,t1:b,uMid:h-4000});else h+=M;u.push(b),d.push(h)}h+=Math.max(0,v-b),u.push(v),d.push(h)}return{...Qm(u,d),gaps:p}}function OR(a,o,s){let[r,l]=Vz(a);if(o==="turns"){let d=(a.find((p)=>p.id==="main")?.spans??[]).filter((p)=>p.kind==="turn").map((p)=>p.start);return ER(d,r,l)}if(o==="calls"){let u=[];for(let d of a)for(let p of d.spans)if(p.kind==="model"||p.kind==="tool"||p.kind==="background")u.push(p.start,p.end);return ER(u,r,l)}if(s)return jz(a,r,l);return Qm([r,l],[r,l])}var Gz=90;function Xz(a){let o=10**Math.floor(Math.log10(Math.max(a,1)));for(let s of[1,2,5,10])if(o*s>=a)return o*s;return o*10}function Yz(a){let o=new Date(a),s=String(o.getHours()).padStart(2,"0"),r=String(o.getMinutes()).padStart(2,"0"),l=String(o.getSeconds()).padStart(2,"0");return`${s}:${r}:${l}`}function Zu(a){let o=a<0?"-":"+",s=Math.abs(a),r=Math.floor(s/3600000),l=Math.floor(s%3600000/60000),u=Math.floor(s%60000/1000),d=Math.floor(s%1000),p=s%1000!==0,h=`${String(l).padStart(2,"0")}:${String(u).padStart(2,"0")}${p?".":""}${p?String(d).padStart(3,"0"):""}`;return r>0?`${o}${r}:${h}`:`${o}${h}`}function PR(a,o,s,r){let l=s-o;if(l<=0||r<=0)return[];let u=[],d=a.domain[0],p=Xz(l*Gz/r),h=d+Math.ceil((o-d)/p)*p,g=0;for(let y=h;y<=s&&g<200;y+=p,g++){let b=a.toT(y),v=Math.round((y-d)/p)%5===0;u.push({u:y,label:v?Yz(b):Zu(y-d),major:v})}return u}var xt=Q(de(),1),Qs=28,l0=22,So=18,BR=3,$z=14,NR=200,i0=10,Wz=2,Zz=4,Qz=56,zR=3,Kz=[{kind:"turn",label:"Input"},{kind:"model",label:"Model"},{kind:"tool",label:"Tools"},{kind:"subagent",label:"Agents"},{kind:"background",label:"Bg"}];function Jz(a,o){let s=new Map(a.map((h)=>[h.id,h])),r=new Set;for(let h of a)if(h.parentId)r.add(h.parentId);let l=(h)=>{let g=h.parentId;while(g){if(o.has(g))return!0;g=s.get(g)?.parentId??null}return!1},u=[],d=[],p=Qs+6;for(let h of a){if(l(h))continue;let g=h.id==="main"?0:h.id.split("/").length,y={track:h,depth:g,hasChildren:r.has(h.id),headerY:p,lanes:[],y0:p,y1:p};p+=l0;for(let{kind:b,label:v}of Kz){let T=h.spans.filter((w)=>w.kind===b),M=b==="turn"||b==="model"||b==="tool";if(T.length===0&&!(h.id==="main"&&M))continue;let I={track:h,kind:b,label:v,y:p,spans:T};y.lanes.push(I),d.push(I),p+=So+BR}y.y1=p-BR,u.push(y),p+=$z}return{blocks:u,lanes:d,totalHeight:Math.max(p,Qs+48)}}function HR({tracks:a,scale:o,viewport:s,onViewportChange:r,selection:l,onSelect:u,search:d,collapsed:p,onToggleCollapse:h,traceStart:g}){let y=$t(),b=$u[y],v=jt.useRef(null),T=jt.useRef(null),[M,I]=jt.useState(800),[w,A]=jt.useState(null),B=jt.useRef([]),z=jt.useRef(null),H=jt.useRef(null),q=jt.useRef(s);q.current=s;let j=jt.useMemo(()=>Jz(a,p),[a,p]);jt.useEffect(()=>{let k=v.current;if(!k)return;let W=new ResizeObserver((ee)=>{let ne=Math.max(100,Math.floor(ee[0].contentRect.width-NR));I(ne)});return W.observe(k),()=>W.disconnect()},[]);let G=jt.useCallback((k,W)=>{let[ee,ne]=o.domain,te=Math.max(i0,W-k);te=Math.min(te,ne-ee||i0);let le=k;if(le<ee)le=ee;if(le+te>ne)le=ne-te;return{u0:le,u1:le+te}},[o]),Y=jt.useCallback((k)=>{q.current=k,r(k)},[r]),J=jt.useCallback((k,W)=>{let ee=M,{u0:ne,u1:te}=q.current,le=te-ne,fe=W===null?0.5:Math.min(1,Math.max(0,W/ee)),et=ne+le*fe,tt=le*k;Y(G(et-tt*fe,et+tt*(1-fe)))},[M,Y,G]),X=jt.useCallback((k)=>{let{u0:W,u1:ee}=q.current;Y(G(W+k,ee+k))},[Y,G]),se=jt.useCallback((k)=>{let W=o.toU(k.start),ee=o.toU(k.end),ne=Math.max((ee-W)*0.1,i0/2);Y(G(W-ne,ee+ne))},[o,Y,G]);jt.useEffect(()=>{let k=T.current;if(!k)return;let W=(ee)=>{ee.preventDefault();let ne=k.getBoundingClientRect(),te=ee.clientX-ne.left;H.current=te,A(null);let le=k.clientWidth||1,fe=()=>q.current.u1-q.current.u0;if(ee.shiftKey){let et=Math.abs(ee.deltaY)>=Math.abs(ee.deltaX)?ee.deltaY:ee.deltaX;X(et/le*fe());return}if(ee.deltaX!==0)X(ee.deltaX/le*fe());if(ee.deltaY!==0)J(1.0015**ee.deltaY,te)};return k.addEventListener("wheel",W,{passive:!1}),()=>k.removeEventListener("wheel",W)},[J,X]);let ge=jt.useCallback((k,W)=>{let ee=T.current;if(!ee)return null;let ne=ee.getBoundingClientRect(),te=k-ne.left,le=W-ne.top,fe=B.current;for(let et=fe.length-1;et>=0;et--){let tt=fe[et];if(te>=tt.x&&te<=tt.x+tt.w&&le>=tt.y&&le<=tt.y+tt.h)return tt}return null},[]),be=(k)=>{k.currentTarget.setPointerCapture(k.pointerId),z.current={pointerId:k.pointerId,lastX:k.clientX,moved:!1},k.currentTarget.focus()},Se=(k)=>{let W=k.currentTarget.getBoundingClientRect();H.current=k.clientX-W.left;let ee=z.current;if(ee&&ee.pointerId===k.pointerId){let te=k.clientX-ee.lastX;if(Math.abs(te)>0){if(Math.abs(te)>2)ee.moved=!0;ee.lastX=k.clientX;let le=q.current.u1-q.current.u0;X(-te/(M||1)*le)}A(null);return}let ne=ge(k.clientX,k.clientY);A(ne?{hit:ne,clientX:k.clientX,clientY:k.clientY}:null)},K=(k)=>{let W=z.current;if(z.current=null,W?.moved)return;let ee=ge(k.clientX,k.clientY);if(ee?.kind==="span")u(ee.span.id);else u(null)},pe=(k)=>{let W=ge(k.clientX,k.clientY);if(W?.kind==="span")se(W.span)},ye=jt.useCallback((k)=>{if(!l)return;for(let W of j.lanes){let ee=W.spans.findIndex((le)=>le.id===l);if(ee===-1)continue;let ne=W.spans[ee+k];if(!ne)return;u(ne.id);let te=o.toU(ne.start);if(te<s.u0||te>s.u1){let le=s.u1-s.u0;r(G(te-le/2,te+le/2))}return}},[l,j,u,o,s,r,G]),Ue=(k)=>{let W=s.u1-s.u0;switch(k.key){case"w":case"W":J(0.7692307692307692,H.current);break;case"s":case"S":J(1.3,H.current);break;case"a":case"A":X(-W*0.2);break;case"d":case"D":X(W*0.2);break;case"0":r({u0:o.domain[0],u1:o.domain[1]});break;case"f":case"F":{if(!l)break;let ee=a.flatMap((ne)=>ne.spans).find((ne)=>ne.id===l);if(ee)se(ee);break}case"Escape":u(null);break;case",":ye(-1);break;case".":ye(1);break;default:return}k.preventDefault()};jt.useEffect(()=>{T.current?.focus({preventScroll:!0})},[]),jt.useEffect(()=>{let k=T.current;if(!k)return;let W=requestAnimationFrame(()=>{eH(k,j,o,s,b,{width:M,selection:l,hoverId:w?.hit.kind==="span"?w.hit.span.id:null,search:d,hits:B})});return()=>cancelAnimationFrame(W)},[j,o,s,b,M,l,w,d]);let He=w?tH(w,g):null;return xt.jsxDEV("div",{ref:v,className:"stats-trace-timeline",children:[xt.jsxDEV("div",{style:{width:NR,flexShrink:0,position:"relative",height:j.totalHeight},children:j.blocks.map((k)=>xt.jsxDEV("div",{children:[xt.jsxDEV("div",{style:{position:"absolute",top:k.headerY,left:4+k.depth*14,right:8,height:l0,display:"flex",alignItems:"center",gap:5,minWidth:0},children:[k.hasChildren?xt.jsxDEV("button",{type:"button",onClick:()=>h(k.track.id),"aria-label":p.has(k.track.id)?`Expand ${k.track.label}`:`Collapse ${k.track.label}`,className:"stats-trace-chevron",children:p.has(k.track.id)?xt.jsxDEV(hl,{size:12},void 0,!1,void 0,this):xt.jsxDEV(Xs,{size:12},void 0,!1,void 0,this)},void 0,!1,void 0,this):xt.jsxDEV("span",{style:{width:12,flexShrink:0}},void 0,!1,void 0,this),xt.jsxDEV("span",{className:"stats-trace-gutter-track truncate",style:{minWidth:0},children:k.track.label},void 0,!1,void 0,this),k.track.model&&xt.jsxDEV("span",{className:"stats-trace-gutter-model truncate",style:{flexShrink:1,minWidth:0},children:k.track.model},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k.lanes.map((W)=>xt.jsxDEV("div",{className:"stats-trace-gutter-lane",style:{top:W.y,left:20+k.depth*14,lineHeight:`${So}px`},children:W.label},`${W.track.id}:${W.kind}`,!1,void 0,this))]},k.track.id,!0,void 0,this))},void 0,!1,void 0,this),xt.jsxDEV("canvas",{ref:T,className:"stats-trace-canvas",width:Math.floor(M*devicePixelRatio),height:Math.floor(j.totalHeight*devicePixelRatio),style:{width:M,height:j.totalHeight},tabIndex:0,role:"application","aria-label":"Trace timeline. W and S zoom, A and D pan, 0 fits all, F focuses the selection.",onPointerDown:be,onPointerMove:Se,onPointerUp:K,onPointerLeave:()=>{H.current=null,A(null)},onDoubleClick:pe,onKeyDown:Ue},void 0,!1,void 0,this),He]},void 0,!0,void 0,this)}function Af(a,o,s,r,l){if(a.beginPath(),r>=zR*2+1)a.roundRect(o,s,r,l,zR);else a.rect(o,s,r,l)}function eH(a,o,s,r,l,u){let d=a.getContext("2d");if(!d)return;let{width:p,selection:h,hoverId:g,search:y,hits:b}=u,v=o.totalHeight,T=devicePixelRatio;d.setTransform(T,0,0,T,0,0),d.clearRect(0,0,p,v);let{u0:M,u1:I}=r,w=Math.max(I-M,0.000000001),A=(H)=>(H-M)/w*p,B=y.trim().toLowerCase(),z=[];for(let H of o.blocks){let q=H.track.spans.filter((j)=>j.kind==="turn");for(let j=0;j<q.length;j++){let G=A(s.toU(q[j].start)),Y=j+1<q.length?A(s.toU(q[j+1].start)):p;if(Y<0||G>p)continue;if(j%2===1)d.fillStyle=l.turnBand,d.fillRect(Math.max(0,G),H.y0,Math.min(p,Y)-Math.max(0,G),H.y1-H.y0);if(G>=0&&G<=p)d.strokeStyle=l.grid,d.beginPath(),d.moveTo(Math.round(G)+0.5,H.y0),d.lineTo(Math.round(G)+0.5,H.y1),d.stroke()}}for(let H of s.gaps){let q=A(H.uMid);if(q<-24||q>p+24)continue;d.save(),d.strokeStyle=l.grid,d.setLineDash([2,4]),d.beginPath(),d.moveTo(q,Qs),d.lineTo(q,v),d.stroke(),d.restore(),d.fillStyle=l.tick,d.font="9px system-ui, sans-serif",d.textAlign="center",d.fillText(`⋯ ${rt(H.t1-H.t0)}`,q,Qs-4),d.textAlign="left"}d.font="9px system-ui, sans-serif";for(let H of PR(s,M,I,p)){let q=Math.round(A(H.u))+0.5;if(d.strokeStyle=l.grid,d.beginPath(),H.major)d.moveTo(q,4),d.lineTo(q,v);else d.moveTo(q,Qs-8),d.lineTo(q,Qs);if(d.stroke(),d.fillStyle=l.tick,H.major)d.fillText(H.label,q+4,11);else d.globalAlpha=0.75,d.fillText(H.label,q+3,Qs-10),d.globalAlpha=1}d.strokeStyle=l.grid,d.beginPath(),d.moveTo(0,Qs+0.5),d.lineTo(p,Qs+0.5),d.stroke();for(let H of o.lanes){let q=H.kind==="turn";for(let j of H.spans){let G=s.toU(j.start);if(G>I)break;let Y=s.toU(j.end);if(Y<M)continue;let J=A(G),X=Math.max(Wz,A(Y)-J),se=H.y,ge=B===""||`${j.label} ${j.detail??""}`.toLowerCase().includes(B),be=l.category[j.kind];if(d.globalAlpha=ge?1:0.3,q)d.fillStyle=`${be}3a`,Af(d,J,se,X,So),d.fill(),d.fillStyle=be,d.fillRect(J,se,2,So);else d.fillStyle=be,Af(d,J,se,X,So),d.fill();if(j.isError)d.fillStyle=`${l.error}55`,Af(d,J,se,X,So),d.fill(),d.fillStyle=l.error,d.fillRect(J,se,2,So);if(j.kind==="model"&&typeof j.ttft==="number"&&j.ttft>0&&X>20){let K=A(s.toU(j.start+j.ttft));if(K>J+1&&K<J+X-1)d.fillStyle="rgba(0,0,0,0.5)",d.fillRect(K,se+3,1,So-6)}if(j.unterminated)d.save(),d.strokeStyle=l.tick,d.setLineDash([2,2]),d.beginPath(),d.moveTo(J+X-0.5,se),d.lineTo(J+X-0.5,se+So),d.stroke(),d.restore();if(g===j.id)d.fillStyle="rgba(255,255,255,0.16)",Af(d,J,se,X,So),d.fill();if(h===j.id)d.strokeStyle=l.selection,d.lineWidth=1.5,Af(d,J-1,se-1,X+2,So+2),d.stroke(),d.lineWidth=1;if(X>Qz)d.save(),d.beginPath(),d.rect(J+3,se,X-6,So),d.clip(),d.fillStyle=q?l.tick:l.spanText,d.font="10px system-ui, sans-serif",d.fillText(j.label,J+5,se+So-5),d.restore();d.globalAlpha=1;let Se=Math.max(X,Zz);z.push({kind:"span",x:J-(Se-X)/2,y:se,w:Se,h:So,span:j,track:H.track})}}for(let H of o.blocks)for(let q of H.track.markers){let j=A(s.toU(q.time));if(j<-6||j>p+6)continue;let G=H.headerY+l0/2;d.fillStyle=l.marker,d.beginPath(),d.moveTo(j,G-4),d.lineTo(j+4,G),d.lineTo(j,G+4),d.lineTo(j-4,G),d.closePath(),d.fill(),z.push({kind:"marker",x:j-5,y:G-5,w:10,h:10,marker:q,track:H.track})}b.current=z}function tH(a,o){let s=Math.min(a.clientX+14,window.innerWidth-320),r=a.clientY+16>window.innerHeight-140?a.clientY-120:a.clientY+16,l={position:"fixed",left:s,top:r,zIndex:60,maxWidth:300,pointerEvents:"none",background:"var(--surface-2)",border:"1px solid var(--border-strong)",borderRadius:6,padding:"7px 10px",fontSize:11,lineHeight:1.5,boxShadow:"0 1px 2px rgba(0,0,0,0.2), 0 4px 16px rgba(0,0,0,0.25)"};if(a.hit.kind==="marker"){let{marker:d}=a.hit;return xt.jsxDEV("div",{style:l,children:[xt.jsxDEV("div",{className:"stats-font-medium stats-text-primary",children:d.label},void 0,!1,void 0,this),xt.jsxDEV("div",{className:"stats-text-muted",children:[new Date(d.time).toLocaleTimeString()," (",Zu(d.time-o),")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let{span:u}=a.hit;return xt.jsxDEV("div",{style:l,children:[xt.jsxDEV("div",{className:"stats-font-medium stats-text-primary truncate",children:u.label},void 0,!1,void 0,this),xt.jsxDEV("div",{className:"stats-text-muted",children:[rt(u.end-u.start)," · ",new Date(u.start).toLocaleTimeString()," (",Zu(u.start-o),")",u.unterminated?" · unterminated":""]},void 0,!0,void 0,this),u.kind==="model"&&xt.jsxDEV("div",{className:"stats-text-muted",children:[u.tokens!==void 0&&xt.jsxDEV(xt.Fragment,{children:[u.tokens.toLocaleString()," tok"]},void 0,!0,void 0,this),u.cost!==void 0&&xt.jsxDEV(xt.Fragment,{children:[" · $",u.cost.toFixed(4)]},void 0,!0,void 0,this),u.ttft!==void 0&&xt.jsxDEV(xt.Fragment,{children:[" · TTFT ",rt(u.ttft)]},void 0,!0,void 0,this),u.isError&&xt.jsxDEV(xt.Fragment,{children:" · error"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u.kind==="subagent"&&u.model&&xt.jsxDEV("div",{className:"stats-text-muted",children:u.model},void 0,!1,void 0,this),u.detail&&xt.jsxDEV("div",{className:"stats-text-secondary",style:{wordBreak:"break-word"},children:u.detail},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ks=Q(dt(),1);var Aa=Q(de(),1),Qu=28,UR=20,aH=340;function oH(a){let o=[];for(let s of a){let r=s.id==="main"?0:s.id.split("/").length;for(let l of s.spans)o.push({key:l.id,time:l.start,span:l,track:s,depth:r});for(let l=0;l<s.markers.length;l++){let u=s.markers[l];o.push({key:`${s.id}:marker:${l}`,time:u.time,marker:u,track:s,depth:r})}}return o.sort((s,r)=>s.time-r.time),o}function FR({tracks:a,selection:o,onSelect:s,search:r,traceStart:l}){let u=$t(),d=$u[u],p=Ks.useRef(null),[h,g]=Ks.useState(0),y=Ks.useMemo(()=>oH(a),[a]),b=Ks.useMemo(()=>{let I=r.trim().toLowerCase();if(!I)return y;return y.filter((w)=>(w.span?`${w.span.label} ${w.span.detail??""}`:w.marker?.label??"").toLowerCase().includes(I))},[y,r]);Ks.useEffect(()=>{if(!o)return;let I=p.current;if(!I)return;let w=b.findIndex((B)=>B.span?.id===o);if(w===-1)return;let A=w*Qu;if(A<I.scrollTop||A+Qu>I.scrollTop+I.clientHeight)I.scrollTop=Math.max(0,A-I.clientHeight/2)},[o,b]);let v=Math.max(0,Math.floor(h/Qu)-UR),T=Math.min(b.length,Math.ceil((h+aH)/Qu)+UR),M=b.slice(v,T);return Aa.jsxDEV("div",{ref:p,onScroll:(I)=>g(I.currentTarget.scrollTop),className:"stats-trace-list",children:[Aa.jsxDEV("div",{style:{height:b.length*Qu,position:"relative"},children:Aa.jsxDEV("div",{style:{position:"absolute",top:v*Qu,left:0,right:0},children:M.map((I)=>{let w=I.span,A=w!==void 0&&w.id===o,B=I.span?d.category[I.span.kind]:d.marker,z=I.span?.label??I.marker?.label??"",H=I.span?.detail,q=I.span?rt(I.span.end-I.span.start):"",j=I.span?.kind??I.marker?.kind??"",G=Aa.jsxDEV(Aa.Fragment,{children:[Aa.jsxDEV("span",{className:"stats-trace-kind",style:{color:B,background:`${B}1c`},children:j},void 0,!1,void 0,this),I.depth>0&&Aa.jsxDEV("span",{className:"stats-text-muted truncate",style:{flexShrink:0,maxWidth:90,fontSize:9},title:I.track.label,children:I.track.id},void 0,!1,void 0,this),Aa.jsxDEV("span",{className:"stats-text-primary truncate",style:{fontSize:11,minWidth:0,flexShrink:1},children:z},void 0,!1,void 0,this),H&&Aa.jsxDEV("span",{className:"stats-text-muted truncate",style:{fontSize:10,minWidth:0,flex:1},children:H},void 0,!1,void 0,this),Aa.jsxDEV("span",{className:"stats-trace-row-meta",children:[I.span?.isError&&Aa.jsxDEV("span",{style:{color:d.error},children:"error"},void 0,!1,void 0,this),Aa.jsxDEV("span",{children:q},void 0,!1,void 0,this),Aa.jsxDEV("span",{children:Zu(I.time-l)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y={paddingLeft:12+I.depth*12};return w?Aa.jsxDEV("button",{type:"button",onClick:()=>s(w.id),className:"stats-trace-row","data-selected":A?"true":"false",style:Y,children:G},I.key,!1,void 0,this):Aa.jsxDEV("div",{className:"stats-trace-row stats-trace-row-static",style:Y,children:G},I.key,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),b.length===0&&Aa.jsxDEV("div",{className:"stats-text-muted",style:{padding:16,fontSize:12},children:"No matching events"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var ft=Q(de(),1),nH=[{value:"time",label:"Duration",title:"Real wall-clock time"},{value:"turns",label:"Turns",title:"Equal width per user turn"},{value:"calls",label:"Calls",title:"Equal width per model/tool call boundary"}];function qR({file:a,active:o,onBack:s}){let{data:r,error:l,loading:u,refetch:d,refreshing:p}=Vt(["trace",a],(te)=>xA(a,te),{pollMs:15000,enabled:o}),[h,g]=wt.useState("time"),[y,b]=wt.useState(!0),[v,T]=wt.useState(null),[M,I]=wt.useState(!1),[w,A]=wt.useState(""),[B,z]=wt.useState(0),[H,q]=wt.useState(new Set),[j,G]=wt.useState(null),Y=wt.useMemo(()=>r?.tracks??[],[r]),J=wt.useMemo(()=>OR(Y,h,y),[Y,h,y]),X=wt.useRef(J),se=wt.useRef(null);wt.useEffect(()=>{if(!r)return;if(se.current===r.file)return;se.current=r.file,T(null),A(""),G(null);let te=new Set;for(let le of r.tracks)if((le.id==="main"?0:le.id.split("/").length)>=1)te.add(le.id);q(te)},[r]),wt.useEffect(()=>{let te=X.current;X.current=J,G((le)=>{if(!le)return le;let fe=te.toT(le.u0),et=te.toT(le.u1),tt=J.toU(fe),Gt=J.toU(et);return Gt-tt>0?{u0:tt,u1:Gt}:null})},[J]);let ge=j??{u0:J.domain[0],u1:J.domain[1]},be=wt.useMemo(()=>{let te=[];for(let le of Y)for(let fe of le.spans)te.push({span:fe,track:le});return te.sort((le,fe)=>le.span.start-fe.span.start),te},[Y]),Se=wt.useMemo(()=>{let te=w.trim().toLowerCase();if(!te)return[];return be.filter(({span:le})=>`${le.label} ${le.detail??""}`.toLowerCase().includes(te))},[be,w]),K=wt.useCallback((te)=>{let le=J.toU(te.start),fe=J.toU(te.end);G((et)=>{let tt=et??{u0:J.domain[0],u1:J.domain[1]};if(le>=tt.u0&&fe<=tt.u1)return et;let Gt=tt.u1-tt.u0,er=(le+fe)/2,[me,cs]=J.domain,oo=er-Gt/2;if(oo<me)oo=me;if(oo+Gt>cs)oo=Math.max(me,cs-Gt);return{u0:oo,u1:oo+Gt}})},[J]),pe=wt.useCallback((te)=>{T(te);let le=be.find(({span:fe})=>fe.id===te);if(le)K(le.span)},[be,K]),ye=wt.useCallback((te)=>{T(te),I(te!==null)},[]),Ue=wt.useCallback((te)=>{if(Se.length===0)return;let le=((B+te)%Se.length+Se.length)%Se.length;z(le),pe(Se[le].span.id)},[Se,B,pe]),He=wt.useCallback((te)=>{q((le)=>{let fe=new Set(le);if(fe.has(te))fe.delete(te);else fe.add(te);return fe})},[]),k=wt.useMemo(()=>{if(!v)return null;return be.find(({span:te})=>te.id===v)??null},[v,be]),W=wt.useCallback((te)=>{let le=Y.find((et)=>et.id===te),fe=le?.spans[0];if(q((et)=>{let tt=new Set(et),Gt=le;while(Gt?.parentId)tt.delete(Gt.parentId),Gt=Y.find((er)=>er.id===Gt?.parentId);return tt}),fe)pe(fe.id)},[Y,pe]),ee=wt.useCallback((te)=>{if(!te){q(new Set);return}let le=new Set;for(let fe of Y)if(fe.id!=="main")le.add(fe.id);q(le)},[Y]),ne=r?.startedAt??0;return ft.jsxDEV("div",{className:"stats-trace-view",children:[ft.jsxDEV("div",{className:"stats-trace-header",children:[ft.jsxDEV("button",{type:"button",onClick:s,className:"stats-trace-back",children:[ft.jsxDEV(tf,{size:13,"aria-hidden":"true"},void 0,!1,void 0,this),"Sessions"]},void 0,!0,void 0,this),ft.jsxDEV("h2",{className:"stats-trace-title",style:{maxWidth:480,margin:0},children:r?.title??a.split("/").pop()},void 0,!1,void 0,this),r?.cwd&&ft.jsxDEV("span",{className:"stats-trace-cwd",children:r.cwd},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>void d(),className:"stats-trace-icon-btn","aria-label":"Refresh trace",title:"Refresh trace",style:{marginLeft:"auto"},children:ft.jsxDEV(bl,{size:14,className:p?"stats-spin":void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV(Rt,{loading:u,error:l,data:r,children:r&&ft.jsxDEV(ft.Fragment,{children:[ft.jsxDEV(_R,{summary:r.summary},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"stats-trace-toolbar",children:[ft.jsxDEV(Ws,{options:nH,value:h,onChange:g},void 0,!1,void 0,this),h==="time"&&ft.jsxDEV("label",{className:"stats-trace-check",children:[ft.jsxDEV("input",{type:"checkbox",checked:y,onChange:(te)=>b(te.target.checked)},void 0,!1,void 0,this),"Compress idle"]},void 0,!0,void 0,this),ft.jsxDEV("div",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[ft.jsxDEV("input",{type:"search",value:w,onChange:(te)=>{A(te.target.value),z(0)},placeholder:"Search spans…","aria-label":"Search spans",spellCheck:!1,className:"stats-trace-input",style:{width:190}},void 0,!1,void 0,this),w.trim()&&ft.jsxDEV(ft.Fragment,{children:[ft.jsxDEV("span",{className:"stats-text-muted",style:{fontSize:11,fontVariantNumeric:"tabular-nums"},children:Se.length===0?"0":`${B%Math.max(Se.length,1)+1}/${Se.length}`},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>Ue(-1),className:"stats-trace-icon-btn","aria-label":"Previous match",disabled:Se.length===0,children:"‹"},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>Ue(1),className:"stats-trace-icon-btn","aria-label":"Next match",disabled:Se.length===0,children:"›"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV("div",{style:{marginLeft:"auto",display:"inline-flex",gap:6},children:[ft.jsxDEV("button",{type:"button",onClick:()=>ee(!1),className:"stats-trace-back",children:"Expand all"},void 0,!1,void 0,this),ft.jsxDEV("button",{type:"button",onClick:()=>ee(!0),className:"stats-trace-back",children:"Collapse all"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV("div",{className:"stats-trace-timeline-card",children:[ft.jsxDEV(AR,{tracks:Y,scale:J,viewport:ge,onViewportChange:G},void 0,!1,void 0,this),ft.jsxDEV(HR,{tracks:Y,scale:J,viewport:ge,onViewportChange:G,selection:v,onSelect:ye,search:w,collapsed:H,onToggleCollapse:He,traceStart:ne},void 0,!1,void 0,this),ft.jsxDEV("div",{className:"stats-trace-toolbar-hint",style:{marginLeft:0},children:"W/S zoom · A/D pan · drag pan · wheel zoom · 0 fit · F focus selection · dbl-click focus · Esc deselect"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ft.jsxDEV(FR,{tracks:Y,selection:v,onSelect:(te)=>{pe(te),I(!0)},search:w,traceStart:ne},void 0,!1,void 0,this),ft.jsxDEV(MR,{toolStats:r.summary.toolStats},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),ft.jsxDEV(DR,{span:M?k?.span??null:null,track:k?.track??null,onClose:()=>I(!1),onOpenChildTrack:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var kt=Q(de(),1);function sH({models:a}){let o=a.slice(0,3);return kt.jsxDEV("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[o.map((s)=>kt.jsxDEV("span",{className:"stats-text-muted truncate",style:{fontSize:10,border:"1px solid var(--border)",borderRadius:999,padding:"1px 6px",maxWidth:140},children:s},s,!1,void 0,this)),a.length>3&&kt.jsxDEV("span",{className:"stats-text-muted",style:{fontSize:10},children:["+",a.length-3]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function VR({active:a,session:o,onOpenSession:s,refreshTrigger:r}){let[l,u]=Rf.useState(""),{data:d,error:p,loading:h}=Vt(["sessions",r],(v)=>yA(200,void 0,v),{pollMs:30000,enabled:a&&o===null}),g=Rf.useMemo(()=>{if(!d)return[];let v=l.trim().toLowerCase();if(!v)return d;return d.filter((T)=>(T.title??"").toLowerCase().includes(v)||T.folder.toLowerCase().includes(v)||T.models.some((M)=>M.toLowerCase().includes(v)))},[d,l]),y=Rf.useMemo(()=>[{key:"title",header:"Title",render:(v)=>kt.jsxDEV("div",{className:"stats-font-medium stats-text-primary truncate",style:{maxWidth:280},children:v.title??v.file.split("/").pop()},void 0,!1,void 0,this)},{key:"folder",header:"Project",render:(v)=>kt.jsxDEV("span",{className:"stats-text-muted truncate",style:{maxWidth:160,display:"inline-block"},children:v.folder.split("/").slice(-2).join("/")},void 0,!1,void 0,this)},{key:"started",header:"Started",render:(v)=>za(v.startedAt)},{key:"duration",header:"Duration",numeric:!0,render:(v)=>rt(v.endedAt-v.startedAt)},{key:"requests",header:"Requests",numeric:!0,render:(v)=>v.requests},{key:"toolCalls",header:"Tools",numeric:!0,render:(v)=>v.toolCalls},{key:"subagents",header:"Agents",numeric:!0,render:(v)=>v.subagents},{key:"tokens",header:"Tokens",numeric:!0,render:(v)=>lt(v.totalTokens)},{key:"cost",header:"Cost",numeric:!0,render:(v)=>ea(v.costTotal,v.unpricedRequests)},{key:"models",header:"Models",render:(v)=>kt.jsxDEV(sH,{models:v.models},void 0,!1,void 0,this)}],[]),b=(v,T)=>kt.jsxDEV("div",{className:"stats-mobile-card",onClick:T,children:[kt.jsxDEV("div",{className:"stats-mobile-card-header",children:kt.jsxDEV("div",{className:"stats-font-semibold stats-text-primary truncate",children:v.title??v.file.split("/").pop()},void 0,!1,void 0,this)},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-grid",children:[kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Started"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:za(v.startedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Duration"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:rt(v.endedAt-v.startedAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Requests"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:v.requests},void 0,!1,void 0,this)]},void 0,!0,void 0,this),kt.jsxDEV("div",{children:[kt.jsxDEV("div",{className:"stats-mobile-card-label",children:"Cost"},void 0,!1,void 0,this),kt.jsxDEV("div",{className:"stats-mobile-card-value",children:ea(v.costTotal,v.unpricedRequests)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(o!==null)return kt.jsxDEV(qR,{file:o,active:a,onBack:()=>s(null)},void 0,!1,void 0,this);return kt.jsxDEV("div",{className:"stats-route-container",children:kt.jsxDEV(ut,{title:"Sessions",subtitle:"Recent sessions with subagent activity folded in — click one to open its trace",actions:kt.jsxDEV("input",{type:"search",value:l,onChange:(v)=>u(v.target.value),placeholder:"Filter by title, project, model…","aria-label":"Filter sessions",spellCheck:!1,className:"stats-trace-input",style:{width:220}},void 0,!1,void 0,this),children:kt.jsxDEV(Rt,{loading:h,error:p,data:d,children:kt.jsxDEV(Ma,{columns:y,data:g,keyExtractor:(v)=>v.file,onRowClick:(v)=>s(v.file),renderMobileCard:b,emptyText:"No sessions found — run a Sync to index recent activity"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Ra=Q(de(),1);function u0(){let{section:a,setSection:o,range:s,setRange:r,session:l,setSession:u}=EA(),[d,p]=Js.useState(0),[h,g]=Js.useState(null),[y,b]=Js.useState(()=>Date.now()),v=Js.useCallback((A)=>{if(A.success)p((B)=>B+1),b(Date.now())},[]),T=Js.useCallback(()=>g(null),[]),M=a,I=Js.useRef(new Set);I.current.add(M);let w=(A)=>{let B=A===M;switch(A){case"overview":return Ra.jsxDEV(SR,{active:B,range:s,refreshTrigger:d,onRequestClick:g},void 0,!1,void 0,this);case"requests":return Ra.jsxDEV(wR,{active:B,range:s,refreshTrigger:d,onRequestClick:g},void 0,!1,void 0,this);case"traces":return Ra.jsxDEV(VR,{active:B,session:l,onOpenSession:u,refreshTrigger:d},void 0,!1,void 0,this);case"errors":return Ra.jsxDEV(mR,{active:B,range:s,refreshTrigger:d,onRequestClick:g},void 0,!1,void 0,this);case"models":return Ra.jsxDEV(yR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"providers":return Ra.jsxDEV(CR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"tools":return Ra.jsxDEV(kR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"costs":return Ra.jsxDEV(pR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"behavior":return Ra.jsxDEV(fR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"projects":return Ra.jsxDEV(LR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this);case"gain":return Ra.jsxDEV(gR,{active:B,range:s,refreshTrigger:d},void 0,!1,void 0,this)}};return Ra.jsxDEV(Ra.Fragment,{children:[Ra.jsxDEV(DA,{activeSection:M,onSectionChange:o,range:s,onRangeChange:r,updatedAt:y,onSyncComplete:v,children:[...I.current].map((A)=>Ra.jsxDEV("div",{hidden:A!==M,children:w(A)},A,!1,void 0,this))},void 0,!1,void 0,this),Ra.jsxDEV(rR,{id:h,onClose:T},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var GR=Q(de(),1),rH=jR.createRoot(document.getElementById("root"));rH.render(GR.jsxDEV(u0,{},void 0,!1,void 0,this));
|