Files
infra/ru-vps/mihomo/config/ui/_nuxt/f4M304qm.js
T
Dmitry 59a7749b18
Deploy ru-vps / deploy (push) Successful in 22s
Убрать всё, кроме mihomo
2026-06-08 23:05:05 +03:00

25 lines
80 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{B as e,Ct as t,D as n,G as r,H as i,J as a,P as o,T as s,V as c,Y as l,_ as u,b as d,d as f,lt as p,v as m,vt as h,wt as g,x as _,xt as v,y}from"./CaGtQlYh.js";import{At as b,E as x,G as S,I as C,Ot as ee,S as w,T as te,U as ne,W as T,Wt as E,Z as re,g as ie,k as ae,o as D,ot as oe,rt as se,st as ce,w as le,z as ue}from"#entry";import"./CIa-1CJu.js";import{t as de}from"./CJgAejf_.js";import{t as fe}from"./Ce_uH7zp.js";import{b as pe}from"./DohEsvF1.js";import{f as me,u as O,x as k}from"./CsU6pgHx.js";import{t as he}from"./DhTvfVif.js";import{t as ge}from"./CxiWMChH.js";import{t as _e}from"./Hw_CdiGx.js";var A={class:`relative h-full w-full`},ve={key:0,class:`absolute inset-0 flex items-center justify-center`},j=Object.assign(n({__name:`RealtimeLineChart`,props:{title:{},seriesConfig:{},isLoading:{type:Boolean,default:!1},initialData:{default:()=>[]},valueMode:{default:`bytes`}},emits:[`chartReady`],setup(t,{expose:n,emit:r}){let a=t,o=r,s=(e,t=!1)=>a.valueMode===`number`?String(e):t?`${k(e).toString()}/s`:k(e).toString(),u=p(),f,h,g,y=de();function b(){let e=O();return{chart:{type:`areaspline`,animation:{duration:800,easing:`linear`},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:a.title,style:{color:e.textColor}},legend:{enabled:!0,itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{type:`datetime`,tickPixelInterval:100,labels:{style:{color:e.textColor},formatter(){let e=new Date(this.value);return`${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}`}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{title:{text:void 0},labels:{style:{color:e.textColor},formatter(){return s(this.value)}},gridLineColor:e.gridLineColor,min:0},tooltip:{shared:!0,formatter(){let e=new Date(this.x),t=`<b>${`${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}`}</b><br/>`;return this.points?.forEach(e=>{t+=`<span style="color:${e.color}">\u25CF</span> ${e.series.name}: <b>${s(e.y,!0)}</b><br/>`}),t}},plotOptions:{areaspline:{fillOpacity:.3,marker:{enabled:!1},lineWidth:2,states:{hover:{lineWidth:3}},threshold:null}},series:a.seriesConfig.map((t,n)=>({type:`areaspline`,name:t.name,color:t.color||e.seriesColors[n]||h?.getOptions().colors?.[n]||`hsl(${n*120}, 70%, 50%)`,data:a.initialData?.[n]||[]}))}}let x={addPoint:(e,t,n)=>{if(f?.series[e]){let r=f.series[e].data.length>=30;f.series[e].addPoint([t,n],!0,r,{duration:800,easing:`linear`})}},addPoints:e=>{if(!f)return;let t=new Map;e.forEach(e=>{t.has(e.seriesIndex)||t.set(e.seriesIndex,[]),t.get(e.seriesIndex).push({time:e.time,value:e.value})}),t.forEach((e,t)=>{let n=f?.series[t];n&&e.forEach(e=>{let t=n.data.length>=30;n.addPoint([e.time,e.value],!1,t)})}),f.redraw({duration:800,easing:`linear`})},setSeriesData:(e,t)=>{f?.series[e]&&f.series[e].setData(t,!0,!1,!1)}};return n({chartRef:x}),e(async()=>{u.value&&(h=await ge(),u.value&&(f=h.chart(u.value,b()),o(`chartReady`,x),g=new ResizeObserver(()=>{f&&u.value&&f.setSize(u.value.clientWidth,u.value.clientHeight,!0)}),g.observe(u.value)))}),c(()=>{g?.disconnect(),f?.destroy(),f=void 0}),l(()=>a.title,e=>{f&&f.setTitle({text:e})}),l(()=>a.seriesConfig,e=>{f&&(e.forEach((e,t)=>{f.series[t]&&f.series[t].update({type:`areaspline`,name:e.name,color:e.color},!1)}),f.redraw())},{deep:!0}),l(()=>y.curTheme,()=>{requestAnimationFrame(()=>{if(f){let e=O();f.update({chart:{backgroundColor:e.backgroundColor},title:{style:{color:e.textColor}},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{labels:{style:{color:e.textColor}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{labels:{style:{color:e.textColor}},gridLineColor:e.gridLineColor}},!0,!1,!1)}})}),(e,n)=>(i(),_(`div`,A,[t.isLoading?(i(),_(`div`,ve,[...n[0]||=[m(`span`,{class:`inline-block h-10 w-10 bg-base-content [mask-size:contain] [mask-position:center] [mask-repeat:no-repeat]`,style:{maskImage:`url('data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Ccircle cx=%274%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270%27/%3E%3C/circle%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.15s%27/%3E%3C/circle%3E%3Ccircle cx=%2720%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.3s%27/%3E%3C/circle%3E%3C/svg%3E')`,WebkitMaskImage:`url('data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27%3E%3Ccircle cx=%274%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270%27/%3E%3C/circle%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.15s%27/%3E%3C/circle%3E%3Ccircle cx=%2720%27 cy=%2712%27 r=%272%27 fill=%27currentColor%27%3E%3Canimate attributeName=%27opacity%27 dur=%270.75s%27 values=%271;0.5;1%27 repeatCount=%27indefinite%27 begin=%270.3s%27/%3E%3C/circle%3E%3C/svg%3E')`}},null,-1)]])):d(``,!0),m(`div`,{ref_key:`containerRef`,ref:u,class:v([`h-full w-full transition-opacity duration-200 ease-in-out`,{"opacity-0":t.isLoading}])},null,2)]))}}),{__name:`RealtimeLineChart`}),ye={class:`relative h-full w-full`},be={key:0,class:`absolute inset-0 flex items-center justify-center`},xe=Object.assign(n({__name:`HighchartsAutoSize`,props:{options:{},isLoading:{type:Boolean,default:!1}},setup(t){let n=t,r=p(),a,o,s,u=de();function f(){let e=O();return{chart:{animation:{duration:300},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},title:{style:{color:e.textColor}}}}return e(async()=>{if(!r.value||(o=await ge(),!r.value))return;let e=f(),t={...e,...n.options,chart:{...e.chart,...n.options.chart}};a=o.chart(r.value,t);let i=r.value.clientWidth,c=r.value.clientHeight;s=new ResizeObserver(()=>{if(a&&r.value){let e=r.value.clientWidth,t=r.value.clientHeight;(e!==i||t!==c)&&(i=e,c=t,a.setSize(e,t,!1))}}),s.observe(r.value)}),c(()=>{s?.disconnect(),a?.destroy(),a=void 0}),l(()=>n.options,e=>{a&&a.update(e,!0,!1,!1)},{deep:!0}),l(()=>u.curTheme,()=>{requestAnimationFrame(()=>{if(a){let e=O();a.update({chart:{backgroundColor:e.backgroundColor},title:{style:{color:e.textColor}},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{labels:{style:{color:e.textColor}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{labels:{style:{color:e.textColor}},gridLineColor:e.gridLineColor}},!0,!1,!1)}})}),(e,n)=>(i(),_(`div`,ye,[t.isLoading?(i(),_(`div`,be,[...n[0]||=[m(`span`,{class:`inline-block size-10 bg-base-content [mask-image:url("data:image/svg+xml,%3Csvg_xmlns='http://www.w3.org/2000/svg'_viewBox='0_0_24_24'%3E%3Ccircle_cx='4'_cy='12'_r='2'_fill='currentColor'%3E%3Canimate_attributeName='opacity'_dur='0.75s'_values='1;0.5;1'_repeatCount='indefinite'_begin='0'/%3E%3C/circle%3E%3Ccircle_cx='12'_cy='12'_r='2'_fill='currentColor'%3E%3Canimate_attributeName='opacity'_dur='0.75s'_values='1;0.5;1'_repeatCount='indefinite'_begin='0.15s'/%3E%3C/circle%3E%3Ccircle_cx='20'_cy='12'_r='2'_fill='currentColor'%3E%3Canimate_attributeName='opacity'_dur='0.75s'_values='1;0.5;1'_repeatCount='indefinite'_begin='0.3s'/%3E%3C/circle%3E%3C/svg%3E")] [mask-size:contain] [mask-position:center] [mask-repeat:no-repeat]`},null,-1)]])):d(``,!0),m(`div`,{ref_key:`containerRef`,ref:r,class:v([`h-full w-full transition-opacity duration-200 ease-in-out`,{"opacity-0":t.isLoading}])},null,2)]))}}),{__name:`HighchartsAutoSize`}),Se={"ip.sb":`https://api.ip.sb/geoip`,"ipwho.is":`https://ipwho.is/`,"ipapi.is":`https://api.ipapi.is/`};function Ce(e){return{ip:e.ip,country:e.country,city:e.city,asn:e.asn,org:e.asn_organization}}function we(e){return{ip:e.ip,country:e.country,countryCode:e.country_code,city:e.city,region:e.region,asn:e.connection?.asn,org:e.connection?.org,isp:e.connection?.isp,latitude:e.latitude,longitude:e.longitude,timezone:e.timezone?.id}}function Te(e){return{ip:e.ip,country:e.location?.country,countryCode:e.location?.country_code,city:e.location?.city,region:e.location?.state,asn:e.asn?.asn,org:e.asn?.org,isProxy:e.is_proxy,isVPN:e.is_vpn,latitude:e.location?.latitude,longitude:e.location?.longitude,timezone:e.location?.timezone}}async function Ee(e){let t=Se[e],n=await pe.get(t,{timeout:1e4}).json();switch(e){case`ip.sb`:return Ce(n);case`ipwho.is`:return we(n);case`ipapi.is`:return Te(n);default:throw Error(`Unknown IP provider: ${e}`)}}function De(){let e=p(`ip.sb`),t=p(null),n=p(!1),r=p(null);async function i(i){let a=i??e.value;n.value=!0,r.value=null;try{t.value=await Ee(a),e.value=a}catch(e){r.value=e instanceof Error?e.message:`Failed to fetch IP info`,t.value=null}finally{n.value=!1}}return{currentProvider:e,ipInfo:t,isLoading:n,error:r,fetchIP:i}}var Oe={class:`rounded-xl border p-4 shadow-sm`,style:{background:`color-mix(in oklch, var(--color-base-200) 60%, transparent)`,"border-color":`color-mix(
in oklch,
var(--color-base-content) 10%,
transparent
)`,"box-shadow":`0 2px 8px
color-mix(in oklch, var(--color-base-content) 5%, transparent)`}},ke={class:`mb-3.5 flex items-center justify-between gap-3`},Ae={class:`flex items-center gap-2`},je={class:`flex h-8 w-8 items-center justify-center rounded-lg text-primary`,style:{background:`color-mix(
in oklch,
var(--color-primary) 15%,
transparent
)`}},Me={class:`m-0 text-[0.9375rem] font-semibold text-base-content`},Ne={class:`flex items-center gap-1.5`},Pe=[`value`],Fe=[`value`],Ie=[`disabled`],Le={key:0,class:`flex justify-center py-6`},Re={key:1,class:`rounded-lg p-3 text-[0.8125rem] text-error`,style:{background:`color-mix(in oklch, var(--color-error) 10%, transparent)`,border:`1px solid
color-mix(in oklch, var(--color-error) 20%, transparent)`}},ze={key:2,class:`flex flex-col gap-2.5`},Be={class:`-mx-1 -mt-1 mb-1 flex items-center justify-between gap-3 rounded-lg px-2.5 py-2`,style:{background:`color-mix(in oklch, var(--color-primary) 8%, transparent)`,border:`1px solid
color-mix(in oklch, var(--color-primary) 15%, transparent)`}},Ve={class:`shrink-0 text-[0.8125rem] text-base-content/60`},He=[`title`],Ue={key:0,class:`flex items-center justify-between gap-3`},We={class:`shrink-0 text-[0.8125rem] text-base-content/60`},Ge={class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`},Ke={key:1,class:`flex items-center justify-between gap-3`},qe={class:`shrink-0 text-[0.8125rem] text-base-content/60`},Je={class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`},Ye={key:2,class:`flex items-center justify-between gap-3`},Xe={class:`shrink-0 text-[0.8125rem] text-base-content/60`},Ze=[`title`],Qe={key:3,class:`flex items-center justify-between gap-3`},$e={class:`overflow-hidden text-right font-mono text-[0.8125rem] font-semibold text-ellipsis whitespace-nowrap text-base-content`},et={key:4,class:`flex items-center justify-between gap-3`},tt=[`title`],nt={key:5,class:`flex items-center justify-between gap-3`},rt={class:`shrink-0 text-[0.8125rem] text-base-content/60`},it={class:`flex gap-1`},at={key:0,class:`inline-flex items-center rounded-full px-2 py-0.5 text-[0.6875rem] font-semibold tracking-wide text-warning uppercase`,style:{background:`color-mix(
in oklch,
var(--color-warning) 15%,
transparent
)`}},ot={key:1,class:`inline-flex items-center rounded-full px-2 py-0.5 text-[0.6875rem] font-semibold tracking-wide text-warning uppercase`,style:{background:`color-mix(
in oklch,
var(--color-warning) 15%,
transparent
)`}},st={key:2,class:`inline-flex items-center rounded-full px-2 py-0.5 text-[0.6875rem] font-semibold tracking-wide text-success uppercase`,style:{background:`color-mix(
in oklch,
var(--color-success) 15%,
transparent
)`}},ct={key:3,class:`py-6 text-center text-sm text-base-content/50`},lt=Object.assign(n({__name:`IPInfoCard`,setup(t){let{t:n}=ee(),{currentProvider:a,ipInfo:o,isLoading:c,error:l,fetchIP:u}=De(),p=[{value:`ip.sb`,label:`IP.SB`},{value:`ipwho.is`,label:`ipwho.is`},{value:`ipapi.is`,label:`ipapi.is`}];e(()=>{u()});function y(e){let t=e.target;u(t.value)}return(e,t)=>(i(),_(`div`,Oe,[m(`div`,ke,[m(`div`,Ae,[m(`div`,je,[s(h(D),{size:18})]),m(`h3`,Me,g(h(n)(`currentIP`)),1)]),m(`div`,Ne,[m(`select`,{value:h(a),class:`cursor-pointer appearance-none rounded-md bg-base-100 py-1.5 pr-6 pl-2.5 text-xs text-base-content transition-all duration-200 focus:border-primary focus:outline-none`,style:{border:`1px solid
color-mix(in oklch, var(--color-base-content) 10%, transparent)`,"background-image":`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")`,"background-repeat":`no-repeat`,"background-position":`right 0.375rem center`},onChange:y},[(i(),_(f,null,r(p,e=>m(`option`,{key:e.value,value:e.value},g(e.label),9,Fe)),64))],40,Pe),m(`button`,{class:v([`flex h-7 w-7 cursor-pointer items-center justify-center rounded-md border border-base-content/10 bg-transparent text-base-content/60 transition-all duration-200 hover:bg-base-300 hover:text-base-content disabled:cursor-not-allowed disabled:opacity-50`,{"animate-spin":h(c)}]),disabled:h(c),onClick:t[0]||=e=>h(u)()},[s(h(w),{size:16})],10,Ie)])]),h(c)?(i(),_(`div`,Le,[...t[1]||=[m(`span`,{class:`h-6 w-6 animate-spin rounded-full border-2 border-base-content/10 border-t-primary`},null,-1)]])):h(l)?(i(),_(`div`,Re,[m(`span`,null,g(h(l)),1)])):h(o)?(i(),_(`div`,ze,[m(`div`,Be,[m(`span`,Ve,g(h(n)(`ipAddress`)),1),m(`span`,{class:`overflow-hidden text-right font-mono text-[0.8125rem] font-semibold text-ellipsis whitespace-nowrap text-primary`,title:h(o).ip},g(h(o).ip),9,He)]),h(o).country?(i(),_(`div`,Ue,[m(`span`,We,g(h(n)(`country`)),1),m(`span`,Ge,g(h(o).country),1)])):d(``,!0),h(o).city?(i(),_(`div`,Ke,[m(`span`,qe,g(h(n)(`city`)),1),m(`span`,Je,g(h(o).city),1)])):d(``,!0),h(o).org?(i(),_(`div`,Ye,[m(`span`,Xe,g(h(n)(`organization`)),1),m(`span`,{class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`,title:h(o).org},g(h(o).org),9,Ze)])):d(``,!0),h(o).asn?(i(),_(`div`,Qe,[t[2]||=m(`span`,{class:`shrink-0 text-[0.8125rem] text-base-content/60`},` ASN `,-1),m(`span`,$e,` AS`+g(h(o).asn),1)])):d(``,!0),h(o).isp?(i(),_(`div`,et,[t[3]||=m(`span`,{class:`shrink-0 text-[0.8125rem] text-base-content/60`},` ISP `,-1),m(`span`,{class:`overflow-hidden text-right text-[0.8125rem] font-medium text-ellipsis whitespace-nowrap text-base-content`,title:h(o).isp},g(h(o).isp),9,tt)])):d(``,!0),h(o).isProxy!==void 0||h(o).isVPN!==void 0?(i(),_(`div`,nt,[m(`span`,rt,g(h(n)(`proxyDetection`)),1),m(`div`,it,[h(o).isProxy?(i(),_(`span`,at,` Proxy `)):d(``,!0),h(o).isVPN?(i(),_(`span`,ot,` VPN `)):d(``,!0),!h(o).isProxy&&!h(o).isVPN?(i(),_(`span`,st,g(h(n)(`clean`)),1)):d(``,!0)])])):d(``,!0)])):(i(),_(`div`,ct,g(h(n)(`noData`)),1))]))}}),{__name:`IPInfoCard`}),ut=5e3,dt=[{name:`Google`,url:`https://www.google.com/generate_204`},{name:`Cloudflare`,url:`https://cp.cloudflare.com/generate_204`},{name:`GitHub`,url:`https://github.com`}];async function ft(e){let t=new AbortController,n=setTimeout(()=>t.abort(),ut);try{let n=performance.now();await fetch(e,{method:`HEAD`,mode:`no-cors`,cache:`no-store`,signal:t.signal});let r=performance.now();return Math.round(r-n)}catch{return null}finally{clearTimeout(n)}}function pt(){let e=p(new Map),t=p(!1),n=p(dt);async function r(t,n){e.value.set(n,{url:n,latency:null,status:`pending`,timestamp:Date.now()});let r=await ft(n);return e.value.set(n,{url:n,latency:r,status:r===null?`error`:`success`,timestamp:Date.now()}),r}async function i(){t.value=!0;let e=n.value.map(e=>r(e.name,e.url));await Promise.all(e),t.value=!1}function a(t){return e.value.get(t)}return{results:e,isTestingAll:t,targets:n,testLatency:r,testAllLatencies:i,getResult:a,allResults:u(()=>n.value.map(t=>({name:t.name,url:t.url,result:e.value.get(t.url)}))),averageLatency:u(()=>{let t=Array.from(e.value.values()).filter(e=>e.status===`success`&&e.latency!==null);if(t.length===0)return null;let n=t.reduce((e,t)=>e+(t.latency??0),0);return Math.round(n/t.length)})}}var mt={class:`rounded-xl border border-base-content/10 p-4`,style:{background:`color-mix(in oklch, var(--color-base-200) 60%, transparent)`}},ht={class:`mb-3 flex items-center justify-between gap-2`},gt={class:`flex items-center gap-2`},_t={class:`m-0 text-base font-semibold text-base-content`},vt={class:`flex items-center gap-2`},yt=[`disabled`],bt={class:`flex flex-col gap-3`},xt={class:`w-20 shrink-0 overflow-hidden text-sm text-ellipsis whitespace-nowrap text-base-content`},St={class:`h-2 flex-1 overflow-hidden rounded-full bg-base-content/10`},Ct={class:`w-16 shrink-0 text-right font-mono text-sm text-base-content`},wt={key:0,class:`inline-block h-3 w-3 animate-spin rounded-full border-2 border-base-content/20 border-t-primary`},Tt={key:1},Et={key:2,class:`text-error`},Dt={key:3,class:`text-base-content/40`},Ot=Object.assign(n({__name:`LatencyCard`,setup(n){let{t:a}=ee(),{allResults:o,isTestingAll:c,testAllLatencies:l,averageLatency:u}=pt();e(()=>{l()});function p(e){return e==null?`bg-base-content/10 text-base-content/50`:e<100?`bg-success/15 text-success`:e<300?`bg-warning/15 text-warning`:`bg-error/15 text-error`}function y(e){return e==null?`0%`:`${Math.min(e/500*100,100)}%`}function b(e){return e==null?`bg-base-content/20`:e<100?`bg-success`:e<300?`bg-warning`:`bg-error`}return(e,n)=>(i(),_(`div`,mt,[m(`div`,ht,[m(`div`,gt,[s(h(ce),{class:`h-5 w-5 text-primary`}),m(`h3`,_t,g(h(a)(`networkLatency`)),1)]),m(`div`,vt,[h(u)===null?d(``,!0):(i(),_(`span`,{key:0,class:v([`rounded-md px-2 py-1 text-xs font-semibold`,p(h(u))])},g(h(a)(`average`))+`: `+g(h(u))+`ms `,3)),m(`button`,{class:v([`flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content/60 transition-all duration-200 hover:bg-base-content/10 hover:text-base-content disabled:cursor-not-allowed disabled:opacity-50`,{"animate-spin":h(c)}]),disabled:h(c),onClick:n[0]||=(...e)=>h(l)&&h(l)(...e)},[s(h(w),{class:`h-4 w-4`})],10,yt)])]),m(`div`,bt,[(i(!0),_(f,null,r(h(o),e=>(i(),_(`div`,{key:e.url,class:`flex items-center gap-3`},[m(`span`,xt,g(e.name),1),m(`div`,St,[m(`div`,{class:v([`h-full rounded-full transition-[width] duration-500 ease-out`,b(e.result?.latency)]),style:t({width:y(e.result?.latency)})},null,6)]),m(`span`,Ct,[e.result?.status===`pending`?(i(),_(`span`,wt)):e.result?.status===`success`?(i(),_(`span`,Tt,g(e.result.latency)+`ms `,1)):e.result?.status===`error`?(i(),_(`span`,Et,g(h(a)(`timeout`)),1)):(i(),_(`span`,Dt,`-`))])]))),128))])]))}}),{__name:`LatencyCard`}),kt={value:()=>{}};function At(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new jt(n)}function jt(e){this._=e}function Mt(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}jt.prototype=At.prototype={constructor:jt,on:function(e,t){var n=this._,r=Mt(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=Nt(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=Pt(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Pt(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new jt(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function Nt(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Pt(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=kt,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Ft={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function It(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Ft.hasOwnProperty(t)?{space:Ft[t],local:e}:e}function Lt(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function Rt(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function zt(e){var t=It(e);return(t.local?Rt:Lt)(t)}function Bt(){}function Vt(e){return e==null?Bt:function(){return this.querySelector(e)}}function Ht(e){typeof e!=`function`&&(e=Vt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new N(r,this._parents)}function Ut(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Wt(){return[]}function Gt(e){return e==null?Wt:function(){return this.querySelectorAll(e)}}function Kt(e){return function(){return Ut(e.apply(this,arguments))}}function qt(e){e=typeof e==`function`?Kt(e):Gt(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new N(r,i)}function Jt(e){return function(){return this.matches(e)}}function Yt(e){return function(t){return t.matches(e)}}var Xt=Array.prototype.find;function Zt(e){return function(){return Xt.call(this.children,e)}}function Qt(){return this.firstElementChild}function $t(e){return this.select(e==null?Qt:Zt(typeof e==`function`?e:Yt(e)))}var en=Array.prototype.filter;function tn(){return Array.from(this.children)}function nn(e){return function(){return en.call(this.children,e)}}function rn(e){return this.selectAll(e==null?tn:nn(typeof e==`function`?e:Yt(e)))}function an(e){typeof e!=`function`&&(e=Jt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new N(r,this._parents)}function on(e){return Array(e.length)}function sn(){return new N(this._enter||this._groups.map(on),this._parents)}function cn(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}cn.prototype={constructor:cn,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function ln(e){return function(){return e}}function un(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new cn(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function dn(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new cn(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function fn(e){return e.__data__}function pn(e,t){if(!arguments.length)return Array.from(this,fn);var n=t?dn:un,r=this._parents,i=this._groups;typeof e!=`function`&&(e=ln(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=mn(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new N(o,r),o._enter=s,o._exit=c,o}function mn(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function hn(){return new N(this._exit||this._groups.map(on),this._parents)}function gn(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function _n(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new N(s,this._parents)}function vn(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function yn(e){e||=bn;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new N(i,this._parents).order()}function bn(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function xn(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Sn(){return Array.from(this)}function Cn(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function wn(){let e=0;for(let t of this)++e;return e}function Tn(){return!this.node()}function En(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function Dn(e){return function(){this.removeAttribute(e)}}function On(e){return function(){this.removeAttributeNS(e.space,e.local)}}function kn(e,t){return function(){this.setAttribute(e,t)}}function An(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function jn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Mn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function Nn(e,t){var n=It(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?On:Dn:typeof t==`function`?n.local?Mn:jn:n.local?An:kn)(n,t))}function Pn(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Fn(e){return function(){this.style.removeProperty(e)}}function In(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ln(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Rn(e,t,n){return arguments.length>1?this.each((t==null?Fn:typeof t==`function`?Ln:In)(e,t,n??``)):M(this.node(),e)}function M(e,t){return e.style.getPropertyValue(t)||Pn(e).getComputedStyle(e,null).getPropertyValue(t)}function zn(e){return function(){delete this[e]}}function Bn(e,t){return function(){this[e]=t}}function Vn(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Hn(e,t){return arguments.length>1?this.each((t==null?zn:typeof t==`function`?Vn:Bn)(e,t)):this.node()[e]}function Un(e){return e.trim().split(/^|\s+/)}function Wn(e){return e.classList||new Gn(e)}function Gn(e){this._node=e,this._names=Un(e.getAttribute(`class`)||``)}Gn.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Kn(e,t){for(var n=Wn(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function qn(e,t){for(var n=Wn(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function Jn(e){return function(){Kn(this,e)}}function Yn(e){return function(){qn(this,e)}}function Xn(e,t){return function(){(t.apply(this,arguments)?Kn:qn)(this,e)}}function Zn(e,t){var n=Un(e+``);if(arguments.length<2){for(var r=Wn(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?Xn:t?Jn:Yn)(n,t))}function Qn(){this.textContent=``}function $n(e){return function(){this.textContent=e}}function er(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function tr(e){return arguments.length?this.each(e==null?Qn:(typeof e==`function`?er:$n)(e)):this.node().textContent}function nr(){this.innerHTML=``}function rr(e){return function(){this.innerHTML=e}}function ir(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function ar(e){return arguments.length?this.each(e==null?nr:(typeof e==`function`?ir:rr)(e)):this.node().innerHTML}function or(){this.nextSibling&&this.parentNode.appendChild(this)}function sr(){return this.each(or)}function cr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function lr(){return this.each(cr)}function ur(e){var t=typeof e==`function`?e:zt(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function dr(){return null}function fr(e,t){var n=typeof e==`function`?e:zt(e),r=t==null?dr:typeof t==`function`?t:Vt(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function pr(){var e=this.parentNode;e&&e.removeChild(this)}function mr(){return this.each(pr)}function hr(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function gr(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function _r(e){return this.select(e?gr:hr)}function vr(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function yr(e){return function(t){e.call(this,t,this.__data__)}}function br(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function xr(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function Sr(e,t,n){return function(){var r=this.__on,i,a=yr(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function Cr(e,t,n){var r=br(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?Sr:xr,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function wr(e,t,n){var r=Pn(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Tr(e,t){return function(){return wr(this,e,t)}}function Er(e,t){return function(){return wr(this,e,t.apply(this,arguments))}}function Dr(e,t){return this.each((typeof t==`function`?Er:Tr)(e,t))}function*Or(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var kr=[null];function N(e,t){this._groups=e,this._parents=t}function P(){return new N([[document.documentElement]],kr)}function Ar(){return this}N.prototype=P.prototype={constructor:N,select:Ht,selectAll:qt,selectChild:$t,selectChildren:rn,filter:an,data:pn,enter:sn,exit:hn,join:gn,merge:_n,selection:Ar,order:vn,sort:yn,call:xn,nodes:Sn,node:Cn,size:wn,empty:Tn,each:En,attr:Nn,style:Rn,property:Hn,classed:Zn,text:tr,html:ar,raise:sr,lower:lr,append:ur,insert:fr,remove:mr,clone:_r,datum:vr,on:Cr,dispatch:Dr,[Symbol.iterator]:Or};function jr(e){return typeof e==`string`?new N([[document.querySelector(e)]],[document.documentElement]):new N([[e]],kr)}function Mr(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Nr(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Pr(){}var F=.7,Fr=1/F,I=`\\s*([+-]?\\d+)\\s*`,L=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,R=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,Ir=/^#([0-9a-f]{3,8})$/,Lr=RegExp(`^rgb\\(${I},${I},${I}\\)$`),Rr=RegExp(`^rgb\\(${R},${R},${R}\\)$`),zr=RegExp(`^rgba\\(${I},${I},${I},${L}\\)$`),Br=RegExp(`^rgba\\(${R},${R},${R},${L}\\)$`),Vr=RegExp(`^hsl\\(${L},${R},${R}\\)$`),Hr=RegExp(`^hsla\\(${L},${R},${R},${L}\\)$`),Ur={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Mr(Pr,z,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Wr,formatHex:Wr,formatHex8:Gr,formatHsl:Kr,formatRgb:qr,toString:qr});function Wr(){return this.rgb().formatHex()}function Gr(){return this.rgb().formatHex8()}function Kr(){return ri(this).formatHsl()}function qr(){return this.rgb().formatRgb()}function z(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=Ir.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Jr(t):n===3?new B(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Yr(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Yr(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Lr.exec(e))?new B(t[1],t[2],t[3],1):(t=Rr.exec(e))?new B(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=zr.exec(e))?Yr(t[1],t[2],t[3],t[4]):(t=Br.exec(e))?Yr(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Vr.exec(e))?ni(t[1],t[2]/100,t[3]/100,1):(t=Hr.exec(e))?ni(t[1],t[2]/100,t[3]/100,t[4]):Ur.hasOwnProperty(e)?Jr(Ur[e]):e===`transparent`?new B(NaN,NaN,NaN,0):null}function Jr(e){return new B(e>>16&255,e>>8&255,e&255,1)}function Yr(e,t,n,r){return r<=0&&(e=t=n=NaN),new B(e,t,n,r)}function Xr(e){return e instanceof Pr||(e=z(e)),e?(e=e.rgb(),new B(e.r,e.g,e.b,e.opacity)):new B}function Zr(e,t,n,r){return arguments.length===1?Xr(e):new B(e,t,n,r??1)}function B(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Mr(B,Zr,Nr(Pr,{brighter(e){return e=e==null?Fr:Fr**+e,new B(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?F:F**+e,new B(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new B(V(this.r),V(this.g),V(this.b),ti(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Qr,formatHex:Qr,formatHex8:$r,formatRgb:ei,toString:ei}));function Qr(){return`#${H(this.r)}${H(this.g)}${H(this.b)}`}function $r(){return`#${H(this.r)}${H(this.g)}${H(this.b)}${H((isNaN(this.opacity)?1:this.opacity)*255)}`}function ei(){let e=ti(this.opacity);return`${e===1?`rgb(`:`rgba(`}${V(this.r)}, ${V(this.g)}, ${V(this.b)}${e===1?`)`:`, ${e})`}`}function ti(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function V(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function H(e){return e=V(e),(e<16?`0`:``)+e.toString(16)}function ni(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new U(e,t,n,r)}function ri(e){if(e instanceof U)return new U(e.h,e.s,e.l,e.opacity);if(e instanceof Pr||(e=z(e)),!e)return new U;if(e instanceof U)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new U(o,s,c,e.opacity)}function ii(e,t,n,r){return arguments.length===1?ri(e):new U(e,t,n,r??1)}function U(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Mr(U,ii,Nr(Pr,{brighter(e){return e=e==null?Fr:Fr**+e,new U(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?F:F**+e,new U(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new B(si(e>=240?e-240:e+120,i,r),si(e,i,r),si(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new U(ai(this.h),oi(this.s),oi(this.l),ti(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=ti(this.opacity);return`${e===1?`hsl(`:`hsla(`}${ai(this.h)}, ${oi(this.s)*100}%, ${oi(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function ai(e){return e=(e||0)%360,e<0?e+360:e}function oi(e){return Math.max(0,Math.min(1,e||0))}function si(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var ci=e=>()=>e;function li(e,t){return function(n){return e+n*t}}function ui(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function di(e){return(e=+e)==1?fi:function(t,n){return n-t?ui(t,n,e):ci(isNaN(t)?n:t)}}function fi(e,t){var n=t-e;return n?li(e,n):ci(isNaN(e)?t:e)}var pi=(function e(t){var n=di(t);function r(e,t){var r=n((e=Zr(e)).r,(t=Zr(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=fi(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function W(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var mi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hi=new RegExp(mi.source,`g`);function gi(e){return function(){return e}}function _i(e){return function(t){return e(t)+``}}function vi(e,t){var n=mi.lastIndex=hi.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=mi.exec(e))&&(i=hi.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:W(r,i)})),n=hi.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?_i(c[0].x):gi(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}var yi=180/Math.PI,bi={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function xi(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*yi,skewX:Math.atan(c)*yi,scaleX:o,scaleY:s}}var Si;function Ci(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?bi:xi(t.a,t.b,t.c,t.d,t.e,t.f)}function wi(e){return e==null||(Si||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Si.setAttribute(`transform`,e),!(e=Si.transform.baseVal.consolidate()))?bi:(e=e.matrix,xi(e.a,e.b,e.c,e.d,e.e,e.f))}function Ti(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:W(e,i)},{i:c-2,x:W(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:W(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:W(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:W(e,n)},{i:s-2,x:W(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var Ei=Ti(Ci,`px, `,`px)`,`deg)`),Di=Ti(wi,`, `,`)`,`)`),G=0,Oi=0,ki=0,Ai=1e3,ji,K,Mi=0,q=0,Ni=0,J=typeof performance==`object`&&performance.now?performance:Date,Pi=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Fi(){return q||=(Pi(Ii),J.now()+Ni)}function Ii(){q=0}function Li(){this._call=this._time=this._next=null}Li.prototype=Ri.prototype={constructor:Li,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Fi():+n)+(t==null?0:+t),!this._next&&K!==this&&(K?K._next=this:ji=this,K=this),this._call=e,this._time=n,Ui()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ui())}};function Ri(e,t,n){var r=new Li;return r.restart(e,t,n),r}function zi(){Fi(),++G;for(var e=ji,t;e;)(t=q-e._time)>=0&&e._call.call(void 0,t),e=e._next;--G}function Bi(){q=(Mi=J.now())+Ni,G=Oi=0;try{zi()}finally{G=0,Hi(),q=0}}function Vi(){var e=J.now(),t=e-Mi;t>Ai&&(Ni-=t,Mi=e)}function Hi(){for(var e,t=ji,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:ji=n);K=e,Ui(r)}function Ui(e){G||(Oi&&=clearTimeout(Oi),e-q>24?(e<1/0&&(Oi=setTimeout(Bi,e-J.now()-Ni)),ki&&=clearInterval(ki)):(ki||=(Mi=J.now(),setInterval(Vi,Ai)),G=1,Pi(Bi)))}function Wi(e,t,n){var r=new Li;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Gi=At(`start`,`end`,`cancel`,`interrupt`),Ki=[];function qi(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Yi(e,n,{name:t,index:r,group:i,on:Gi,tween:Ki,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Ji(e,t){var n=X(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Y(e,t){var n=X(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function X(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Yi(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Ri(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return Wi(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Wi(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function Xi(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Zi(e){return this.each(function(){Xi(this,e)})}function Qi(e,t){var n,r;return function(){var i=Y(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function $i(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Y(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function ea(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=X(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?Qi:$i)(n,e,t))}function ta(e,t,n){var r=e._id;return e.each(function(){var e=Y(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return X(e,r).value[t]}}function na(e,t){var n;return(typeof t==`number`?W:t instanceof z?pi:(n=z(t))?(t=n,pi):vi)(e,t)}function ra(e){return function(){this.removeAttribute(e)}}function ia(e){return function(){this.removeAttributeNS(e.space,e.local)}}function aa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function oa(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function sa(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function ca(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function la(e,t){var n=It(e),r=n===`transform`?Di:na;return this.attrTween(e,typeof t==`function`?(n.local?ca:sa)(n,r,ta(this,`attr.`+e,t)):t==null?(n.local?ia:ra)(n):(n.local?oa:aa)(n,r,t))}function ua(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function da(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function fa(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&da(e,i)),n}return i._value=t,i}function pa(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&ua(e,i)),n}return i._value=t,i}function ma(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=It(e);return this.tween(n,(r.local?fa:pa)(r,t))}function ha(e,t){return function(){Ji(this,e).delay=+t.apply(this,arguments)}}function ga(e,t){return t=+t,function(){Ji(this,e).delay=t}}function _a(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?ha:ga)(t,e)):X(this.node(),t).delay}function va(e,t){return function(){Y(this,e).duration=+t.apply(this,arguments)}}function ya(e,t){return t=+t,function(){Y(this,e).duration=t}}function ba(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?va:ya)(t,e)):X(this.node(),t).duration}function xa(e,t){if(typeof t!=`function`)throw Error();return function(){Y(this,e).ease=t}}function Sa(e){var t=this._id;return arguments.length?this.each(xa(t,e)):X(this.node(),t).ease}function Ca(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Y(this,e).ease=n}}function wa(e){if(typeof e!=`function`)throw Error();return this.each(Ca(this._id,e))}function Ta(e){typeof e!=`function`&&(e=Jt(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Z(r,this._parents,this._name,this._id)}function Ea(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new Z(o,this._parents,this._name,this._id)}function Da(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function Oa(e,t,n){var r,i,a=Da(t)?Ji:Y;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function ka(e,t){var n=this._id;return arguments.length<2?X(this.node(),n).on.on(e):this.each(Oa(n,e,t))}function Aa(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function ja(){return this.on(`end.remove`,Aa(this._id))}function Ma(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Vt(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,qi(l[f],t,n,f,l,X(u,n)));return new Z(a,this._parents,t,n)}function Na(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Gt(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=X(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&qi(p,t,n,h,f,m);a.push(f),o.push(u)}return new Z(a,o,t,n)}var Pa=P.prototype.constructor;function Fa(){return new Pa(this._groups,this._parents)}function Ia(e,t){var n,r,i;return function(){var a=M(this,e),o=(this.style.removeProperty(e),M(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function La(e){return function(){this.style.removeProperty(e)}}function Ra(e,t,n){var r,i=n+``,a;return function(){var o=M(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function za(e,t,n){var r,i,a;return function(){var o=M(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),M(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function Ba(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Y(this,e),l=c.on,u=c.value[a]==null?s||=La(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Va(e,t,n){var r=(e+=``)==`transform`?Ei:na;return t==null?this.styleTween(e,Ia(e,r)).on(`end.style.`+e,La(e)):typeof t==`function`?this.styleTween(e,za(e,r,ta(this,`style.`+e,t))).each(Ba(this._id,e)):this.styleTween(e,Ra(e,r,t),n).on(`end.style.`+e,null)}function Ha(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Ua(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Ha(e,a,n)),r}return a._value=t,a}function Wa(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,Ua(e,t,n??``))}function Ga(e){return function(){this.textContent=e}}function Ka(e){return function(){var t=e(this);this.textContent=t??``}}function qa(e){return this.tween(`text`,typeof e==`function`?Ka(ta(this,`text`,e)):Ga(e==null?``:e+``))}function Ja(e){return function(t){this.textContent=e.call(this,t)}}function Ya(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Ja(r)),t}return r._value=e,r}function Xa(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,Ya(e))}function Za(){for(var e=this._name,t=this._id,n=to(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=X(c,t);qi(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Z(r,this._parents,e,n)}function Qa(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Y(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var $a=0;function Z(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function eo(e){return P().transition(e)}function to(){return++$a}var Q=P.prototype;Z.prototype=eo.prototype={constructor:Z,select:Ma,selectAll:Na,selectChild:Q.selectChild,selectChildren:Q.selectChildren,filter:Ta,merge:Ea,selection:Fa,transition:Za,call:Q.call,nodes:Q.nodes,node:Q.node,size:Q.size,empty:Q.empty,each:Q.each,on:ka,attr:la,attrTween:ma,style:Va,styleTween:Wa,text:qa,textTween:Xa,remove:ja,tween:ea,delay:_a,duration:ba,ease:Sa,easeVarying:wa,end:Qa,[Symbol.iterator]:Q[Symbol.iterator]};function no(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var ro={time:null,delay:0,duration:250,ease:no};function io(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function ao(e){var t,n;e instanceof Z?(t=e._id,e=e._name):(t=to(),(n=ro).time=Fi(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&qi(c,e,t,l,o,n||io(c,t));return new Z(r,this._parents,e,t)}P.prototype.interrupt=Zi,P.prototype.transition=ao;var{abs:oo,max:so,min:co}=Math;[`w`,`e`].map(lo),[`n`,`s`].map(lo),[`n`,`w`,`e`,`s`,`nw`,`ne`,`sw`,`se`].map(lo);function lo(e){return{type:e}}function uo(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function fo(){return this.eachAfter(uo)}function po(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function mo(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function ho(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o<s;++o)r.push(a[o]);for(;n=i.pop();)e.call(t,n,++c,this);return this}function go(e,t){let n=-1;for(let r of this)if(e.call(t,r,++n,this))return r}function _o(e){return this.eachAfter(function(t){for(var n=+e(t.data)||0,r=t.children,i=r&&r.length;--i>=0;)n+=r[i].value;t.value=n})}function vo(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function yo(e){for(var t=this,n=bo(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function bo(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function xo(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function So(){return Array.from(this)}function Co(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function wo(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*To(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i<a;++i)n.push(r[i]);while(n.length)}function Eo(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=ko)):t===void 0&&(t=Oo);for(var n=new Mo(e),r,i=[n],a,o,s,c;r=i.pop();)if((o=t(r.data))&&(c=(o=Array.from(o)).length))for(r.children=o,s=c-1;s>=0;--s)i.push(a=o[s]=new Mo(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(jo)}function Do(){return Eo(this).eachBefore(Ao)}function Oo(e){return e.children}function ko(e){return Array.isArray(e)?e[1]:null}function Ao(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function jo(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Mo(e){this.data=e,this.depth=this.height=0,this.parent=null}Mo.prototype=Eo.prototype={constructor:Mo,count:fo,each:po,eachAfter:ho,eachBefore:mo,find:go,sum:_o,sort:vo,path:yo,ancestors:xo,descendants:So,leaves:Co,links:wo,copy:Do,[Symbol.iterator]:To};function No(e,t){return e.parent===t.parent?1:2}function Po(e){var t=e.children;return t?t[0]:e.t}function Fo(e){var t=e.children;return t?t[t.length-1]:e.t}function Io(e,t,n){var r=n/(t.i-e.i);t.c-=r,t.s+=n,e.c+=r,t.z+=n,t.m+=n}function Lo(e){for(var t=0,n=0,r=e.children,i=r.length,a;--i>=0;)a=r[i],a.z+=t,a.m+=t,t+=a.s+(n+=a.c)}function Ro(e,t,n){return e.a.parent===t.parent?e.a:n}function zo(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}zo.prototype=Object.create(Mo.prototype);function Bo(e){for(var t=new zo(e,0),n,r=[t],i,a,o,s;n=r.pop();)if(a=n._.children)for(n.children=Array(s=a.length),o=s-1;o>=0;--o)r.push(i=n.children[o]=new zo(a[o],o)),i.parent=n;return(t.parent=new zo(null,0)).children=[t],t}function Vo(){var e=No,t=1,n=1,r=null;function i(i){var s=Bo(i);if(s.eachAfter(a),s.parent.m=-s.z,s.eachBefore(o),r)i.eachBefore(c);else{var l=i,u=i,d=i;i.eachBefore(function(e){e.x<l.x&&(l=e),e.x>u.x&&(u=e),e.depth>d.depth&&(d=e)});var f=l===u?1:e(l,u)/2,p=f-l.x,m=t/(u.x+f+p),h=n/(d.depth||1);i.eachBefore(function(e){e.x=(e.x+p)*m,e.y=e.depth*h})}return i}function a(t){var n=t.children,r=t.parent.children,i=t.i?r[t.i-1]:null;if(n){Lo(t);var a=(n[0].z+n[n.length-1].z)/2;i?(t.z=i.z+e(t._,i._),t.m=t.z-a):t.z=a}else i&&(t.z=i.z+e(t._,i._));t.parent.A=s(t,i,t.parent.A||r[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function s(t,n,r){if(n){for(var i=t,a=t,o=n,s=i.parent.children[0],c=i.m,l=a.m,u=o.m,d=s.m,f;o=Fo(o),i=Po(i),o&&i;)s=Po(s),a=Fo(a),a.a=t,f=o.z+u-i.z-c+e(o._,i._),f>0&&(Io(Ro(o,t,r),t,f),c+=f,l+=f),u+=o.m,c+=i.m,d+=s.m,l+=a.m;o&&!Fo(a)&&(a.t=o,a.m+=u-l),i&&!Po(s)&&(s.t=i,s.m+=c-d,r=t)}return r}function c(e){e.x*=t,e.y=e.depth*n}return i.separation=function(t){return arguments.length?(e=t,i):e},i.size=function(e){return arguments.length?(r=!1,t=+e[0],n=+e[1],i):r?null:[t,n]},i.nodeSize=function(e){return arguments.length?(r=!0,t=+e[0],n=+e[1],i):r?[t,n]:null},i}function $(e,t,n){this.k=e,this.x=t,this.y=n}$.prototype={constructor:$,scale:function(e){return e===1?this:new $(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new $(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var Ho=new $(1,0,0);Uo.prototype=$.prototype;function Uo(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Ho;return e.__zoom}var Wo={class:`mb-4 flex items-center justify-between`},Go={class:`flex items-center gap-2`},Ko=[`title`],qo={class:`flex flex-wrap gap-2 text-sm text-base-content/60`},Jo={class:`mb-4 flex flex-wrap gap-4 text-xs`},Yo={class:`flex items-center gap-1`},Xo={class:`flex items-center gap-1`},Zo={class:`flex items-center gap-1`},Qo={class:`flex items-center gap-1`},$o={class:`flex items-center gap-1`},es={key:0,class:`flex flex-col items-center justify-center py-8 text-base-content/60`},ts=Object.assign(n({__name:`NetworkTopology`,setup(t){let{t:n}=ee(),r=he(),d=de(),f=p(null),b=p(null),S=p(new Set),T=p(!1),E=p(null),re=u(()=>T.value&&E.value?E.value:r.activeConnections),D=null,oe=null,se=null;function ce(e,t=`600 11px sans-serif`){se||=document.createElement(`canvas`);let n=se.getContext(`2d`);return n?(n.font=t,n.measureText(e).width):e.length*7}let le=!1;function fe(){le||(le=!0,requestAnimationFrame(()=>{le=!1,be()}))}let pe=u(()=>{let e=re.value,t=new Map;e.forEach(e=>{let n=e.metadata.sourceIP||`Unknown`,r=String(e.metadata.sourcePort||`Unknown`),i=e.rule||`Direct`,a=e.rulePayload,o=a?`${i}: ${a}`:i,s=e.chains||[],c=s[0]??`Direct`,l=s.length>1?s[1]??`Direct`:s[0]??`Direct`,u=e.download+e.upload;t.has(l)||t.set(l,{data:{id:`group-${l}`,name:l,type:`group`,connections:0,traffic:0},proxies:new Map});let d=t.get(l);d.data.connections++,d.data.traffic+=u,d.proxies.has(c)||d.proxies.set(c,{data:{id:`proxy-${l}-${c}`,name:c,type:`proxy`,connections:0,traffic:0},rules:new Map});let f=d.proxies.get(c);f.data.connections++,f.data.traffic+=u,f.rules.has(o)||f.rules.set(o,{data:{id:`rule-${l}-${c}-${o}`,name:o,type:`rule`,connections:0,traffic:0},clients:new Map});let p=f.rules.get(o);p.data.connections++,p.data.traffic+=u,p.clients.has(n)||p.clients.set(n,{data:{id:`client-${l}-${c}-${o}-${n}`,name:n,type:`client`,connections:0,traffic:0},ports:new Map});let m=p.clients.get(n);m.data.connections++,m.data.traffic+=u,m.ports.has(r)||m.ports.set(r,{id:`port-${l}-${c}-${o}-${n}-${r}`,name:r,type:`port`,connections:0,traffic:0});let h=m.ports.get(r);h.connections++,h.traffic+=u});let n=[];function r(e,t=!1){return(S.value.has(e.id)||t)&&e.children&&e.children.length>0?{...e,_children:e.children,children:void 0,collapsed:!0}:{...e,collapsed:!1}}return t.forEach(e=>{let t={...e.data,children:[]};e.proxies.forEach(e=>{let n={...e.data,children:[]};e.rules.forEach(e=>{let t={...e.data,children:[]};e.clients.forEach(e=>{let n=Array.from(e.ports.values()),r=S.value.has(`expanded-${e.data.id}`)?{...e.data,children:n,collapsed:!1}:{...e.data,_children:n,children:void 0,collapsed:!0};t.children.push(r)}),!S.value.has(`expanded-${e.data.id}`)&&t.children.length>0?(t._children=t.children,t.children=void 0,t.collapsed=!0):t.collapsed=!1,n.children.push(t)});let i=r(n);t.children.push(i)});let i=r(t);n.push(i)}),{id:`root`,name:`Connections`,type:`root`,connections:e.length,traffic:e.reduce((e,t)=>e+t.download+t.upload,0),children:n}}),O=u(()=>{let e=re.value,t=new Set,n=new Set,r=new Set,i=new Set;return e.forEach(e=>{t.add(e.metadata.sourceIP||`Unknown`),n.add(e.rule||`Direct`);let a=e.chains||[];i.add(a[0]??`Direct`),r.add(a.length>1?a[1]??`Direct`:a[0]??`Direct`)}),{clientCount:t.size,ruleCount:n.size,groupCount:r.size,proxyCount:i.size,totalTraffic:e.reduce((e,t)=>e+t.download+t.upload,0)}});function ge(){let e=me();return{root:{fill:e.neutral,bg:`color-mix(in oklch, ${e.neutral} 15%, transparent)`},client:{fill:e.primary,bg:`color-mix(in oklch, ${e.primary} 15%, transparent)`},port:{fill:e.warning,bg:`color-mix(in oklch, ${e.warning} 15%, transparent)`},rule:{fill:e.secondary,bg:`color-mix(in oklch, ${e.secondary} 15%, transparent)`},group:{fill:e.accent,bg:`color-mix(in oklch, ${e.accent} 15%, transparent)`},proxy:{fill:e.info,bg:`color-mix(in oklch, ${e.info} 15%, transparent)`},baseContent:e.baseContent}}function _e(){let e=d.curTheme;return D&&oe===e?D:(D=ge(),oe=e,D)}function A(e){return _e()[e].fill}function ve(e){return _e()[e].bg}function j(e){switch(e){case`client`:return ne;case`port`:return C;case`rule`:return ue;case`group`:return ae;case`proxy`:return ie;default:return ae}}function ye(e,t){let n=`expanded-${e}`;t?e.startsWith(`rule-`)||e.startsWith(`client-`)?S.value.add(n):S.value.delete(e):e.startsWith(`rule-`)||e.startsWith(`client-`)?S.value.delete(n):S.value.add(e)}function be(){if(!f.value||!b.value)return;let e=pe.value;if(!e.children||e.children.length===0)return;jr(f.value).selectAll(`*`).remove();let t=Eo(e),n=b.value.clientWidth;Vo().nodeSize([50,100]).separation((e,t)=>e.parent===t.parent?1:1.5)(t);let r=new Map,i=t.descendants();for(let e of i)if(e.data.type!==`root`){let t=ce(e.data.name),n=e.data.children&&e.data.children.length>0||e.data._children&&e.data._children.length>0?20:0;r.set(e.data.id,t+32+n)}function a(e){return r.get(e.data.id)??80}let o=new Map;t.descendants().forEach(e=>{if(e.data.type!==`root`){let t=a(e),n=o.get(e.depth)??0;o.set(e.depth,Math.max(n,t))}});let s=new Map,c=0;for(let e=1;e<=o.size;e++){let t=o.get(e)??100;if(e===1)c=t/2;else{let n=o.get(e-1)??100;c+=n/2+40+t/2}s.set(e,c)}t.descendants().forEach(e=>{e.data.type!==`root`&&e.depth>0&&(e.y=s.get(e.depth)??e.y)});let l=1/0,u=-1/0;t.each(e=>{let t=e.x??0;t<l&&(l=t),t>u&&(u=t)});let d=u-l+50,p=Math.max(400,d+25+40),m=0;t.each(e=>{if(e.data.type!==`root`){let t=r.get(e.data.id)??80,n=(e.y??0)+t/2;n>m&&(m=n)}});let h=Math.max(n,m+60+40),g=jr(f.value).attr(`width`,h).attr(`height`,p).append(`g`).attr(`transform`,`translate(60, ${-l+50/2+25})`),_=_e(),v=t.links().filter(e=>e.source.data.type!==`root`);g.selectAll(`.link`).data(v).join(`path`).attr(`class`,`link`).attr(`d`,e=>{let t=e.source,n=e.target,r=a(t),i=a(n),o=t.y-0+r/2,s=t.x,c=n.y-0-i/2,l=n.x,u=(o+c)/2;return`M${o},${s} C${u},${s} ${u},${l} ${c},${l}`}).attr(`fill`,`none`).attr(`stroke`,_.baseContent).attr(`stroke-opacity`,.3).attr(`stroke-width`,e=>Math.max(1,Math.min(4,e.target.data.connections/5)));let y=g.selectAll(`.node`).data(t.descendants().filter(e=>e.data.type!==`root`)).join(`g`).attr(`class`,`node`).attr(`transform`,e=>`translate(${(e.y??0)-0},${e.x})`).style(`cursor`,e=>e.data.children&&e.data.children.length>0||e.data._children&&e.data._children.length>0?`pointer`:`default`).on(`click`,(e,t)=>{(t.data.children&&t.data.children.length>0||t.data._children&&t.data._children.length>0)&&ye(t.data.id,t.data.collapsed??!1)});y.append(`text`).attr(`dy`,-30/2-4).attr(`text-anchor`,`middle`).attr(`fill`,e=>A(e.data.type)).attr(`font-size`,`10px`).attr(`font-weight`,`500`).text(e=>`${e.data.connections}`),y.append(`rect`).attr(`x`,e=>-a(e)/2).attr(`y`,-30/2).attr(`width`,e=>a(e)).attr(`height`,30).attr(`rx`,6).attr(`fill`,e=>ve(e.data.type)).attr(`stroke`,e=>A(e.data.type)).attr(`stroke-width`,2),y.filter(e=>!!(e.data.children&&e.data.children.length>0||e.data._children&&e.data._children.length>0)).append(`text`).attr(`x`,e=>a(e)/2-12).attr(`dy`,`0.35em`).attr(`text-anchor`,`middle`).attr(`fill`,e=>A(e.data.type)).attr(`font-size`,`14px`).attr(`font-weight`,`700`).text(e=>e.data.collapsed?`+`:``),y.append(`text`).attr(`dy`,`0.31em`).attr(`text-anchor`,`middle`).attr(`fill`,e=>A(e.data.type)).attr(`font-size`,`11px`).attr(`font-weight`,`600`).text(e=>e.data.name),y.append(`title`).text(e=>`${e.data.name}\n${e.data.connections} connections\n${k(e.data.traffic).toString()}`)}function xe(){T.value?E.value=null:E.value=[...r.activeConnections],T.value=!T.value}return l([()=>pe.value,()=>d.curTheme],()=>{o(fe)},{deep:!0}),e(()=>{o(fe);let e=new ResizeObserver(()=>fe());b.value&&e.observe(b.value),c(()=>{e.disconnect(),se=null,D=null})}),(e,t)=>(i(),_(`div`,null,[m(`div`,Wo,[m(`div`,Go,[m(`button`,{class:v([`flex h-6 w-6 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content transition-all duration-200 ease-in-out hover:bg-base-content/10`,{"text-warning":h(T)}]),title:h(T)?h(n)(`resume`):h(n)(`pause`),onClick:xe},[h(T)?(i(),y(h(te),{key:0,class:`h-4 w-4`})):(i(),y(h(x),{key:1,class:`h-4 w-4`}))],10,Ko)]),m(`div`,qo,[m(`span`,null,g(h(O).clientCount)+` `+g(h(n)(`clients`)),1),t[0]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(O).ruleCount)+` `+g(h(n)(`rules`)),1),t[1]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(O).groupCount)+` `+g(h(n)(`groups`)),1),t[2]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(O).proxyCount)+` `+g(h(n)(`nodes`)),1),t[3]||=m(`span`,null,`·`,-1),m(`span`,null,g(h(k)(h(O).totalTraffic).toString()),1)])]),m(`div`,Jo,[m(`div`,Yo,[(i(),y(a(j(`group`)),{class:`h-4 w-4 text-accent`})),m(`span`,null,g(h(n)(`proxyGroups`)),1)]),m(`div`,Xo,[(i(),y(a(j(`proxy`)),{class:`h-4 w-4 text-info`})),m(`span`,null,g(h(n)(`proxyNodes`)),1)]),m(`div`,Zo,[(i(),y(a(j(`rule`)),{class:`h-4 w-4 text-secondary`})),m(`span`,null,g(h(n)(`rules`)),1)]),m(`div`,Qo,[(i(),y(a(j(`client`)),{class:`h-4 w-4 text-primary`})),m(`span`,null,g(h(n)(`sourceIP`)),1)]),m(`div`,$o,[(i(),y(a(j(`port`)),{class:`h-4 w-4 text-warning`})),m(`span`,null,g(h(n)(`sourcePort`)),1)])]),h(re).length===0?(i(),_(`div`,es,[s(h(w),{class:`mb-2 h-8 w-8 animate-pulse`}),m(`span`,null,g(h(n)(`waitingForConnections`)),1)])):(i(),_(`div`,{key:1,ref_key:`containerRef`,ref:b,class:`touch-pan-x touch-pan-y overflow-x-auto`},[(i(),_(`svg`,{ref_key:`svgRef`,ref:f,class:`min-h-[25rem]`},null,512))],512))]))}}),{__name:`NetworkTopology`}),ns={class:`flex h-full flex-col gap-4 overflow-x-hidden overflow-y-auto p-2`},rs={class:`grid min-w-0 grid-cols-2 gap-3 sm:grid-cols-3 xl:grid-cols-6`},is={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:0ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},as={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-success/15 text-success`},os={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},ss={class:`text-xs leading-tight break-words text-base-content/60`},cs={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ls={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:50ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},us={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-info/15 text-info`},ds={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},fs={class:`text-xs leading-tight break-words text-base-content/60`},ps={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ms={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:100ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},hs={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-secondary/15 text-secondary`},gs={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},_s={class:`text-xs leading-tight break-words text-base-content/60`},vs={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ys={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:150ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},bs={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-secondary/15 text-secondary`},xs={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},Ss={class:`text-xs leading-tight break-words text-base-content/60`},Cs={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ws={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:200ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},Ts={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-warning/15 text-warning`},Es={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},Ds={class:`text-xs leading-tight break-words text-base-content/60`},Os={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},ks={class:`overview-stat-card animate-fade-slide-in flex min-w-0 items-center gap-3 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-4 transition-all duration-200 [animation-delay:250ms] hover:z-10 hover:-translate-y-0.5 hover:border-base-content/20`},As={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-[0.625rem] bg-error/15 text-error`},js={class:`flex w-full min-w-0 flex-col gap-0.5 overflow-hidden`},Ms={class:`text-xs leading-tight break-words text-base-content/60`},Ns={class:`text-base font-semibold whitespace-nowrap text-base-content tabular-nums`},Ps={key:0,class:`animate-fade-slide-in flex items-center justify-center gap-2 rounded-lg border border-primary/15 bg-primary/8 px-4 py-3 [animation-delay:300ms]`},Fs={class:`text-sm text-base-content/60`},Is={class:`font-mono text-sm font-medium text-base-content`},Ls={class:`grid min-w-0 grid-cols-1 gap-4 lg:grid-cols-2 xl:grid-cols-3`},Rs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:350ms] lg:h-80`},zs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:400ms] lg:h-80`},Bs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:450ms] lg:h-80`},Vs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:500ms] lg:h-80`},Hs={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:550ms] lg:h-80`},Us={class:`animate-fade-slide-in h-72 min-w-0 overflow-hidden rounded-xl border border-base-content/10 bg-base-200 p-2 [animation-delay:600ms] lg:h-80`},Ws={class:`grid grid-cols-1 gap-4 md:grid-cols-2`},Gs={class:`rounded-xl border border-base-content/10 bg-base-200 p-4`},Ks={class:`flex items-center gap-2 font-semibold text-base-content`},qs={class:`flex h-6 w-6 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content transition-colors duration-200 hover:bg-base-content/10`},Js=n({__name:`overview`,setup(t){let{t:n}=ee();E({title:u(()=>n(`overview`))});let r=fe(),a=he(),o=b(),c=de(),f=_e(),x=e=>k(e).toString();e(()=>{f.proxies.length===0&&f.fetchProxies()});let C=u(()=>(c.curTheme,O())),w=p(),te=p(),ne=p(),D=u(()=>[{name:n(`down`),color:C.value.seriesColors[0]},{name:n(`up`),color:C.value.seriesColors[1]}]),ce=u(()=>[[...r.trafficChartHistory.download],[...r.trafficChartHistory.upload]]),ue=u(()=>[{name:n(`memory`),color:C.value.seriesColors[2]}]),pe=u(()=>[[...r.memoryChartHistory]]),me=u(()=>[{name:n(`activeConnections`),color:C.value.seriesColors[3]}]),ge=u(()=>[[...r.connectionCountHistory]]),A=u(()=>({chart:{type:`pie`,backgroundColor:C.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:n(`flow`),style:{color:C.value.textColor}},tooltip:{pointFormatter(){let e=this.y||0,t=this.percentage||0;return`${this.name}<br/>${k(e).toString()} (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:C.value.textColor},itemHoverStyle:{color:C.value.textColorHover}},series:[{type:`pie`,name:n(`flow`),data:[{name:n(`downloadTotal`),y:a.latestConnectionMsg?.downloadTotal||0,color:C.value.seriesColors[0]},{name:n(`uploadTotal`),y:a.latestConnectionMsg?.uploadTotal||0,color:C.value.seriesColors[1]}]}]})),ve=u(()=>{let e=a.activeConnections,t=0,r=0,i=0;return e.forEach(e=>{let n=e.metadata.network?.toLowerCase()||``;n===`tcp`?t++:n===`udp`?r++:i++}),{chart:{type:`pie`,backgroundColor:C.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:n(`networkTypes`),style:{color:C.value.textColor}},tooltip:{pointFormatter(){let e=this.y||0,t=this.percentage||0;return`${this.name}: <b>${e}</b> (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:C.value.textColor},itemHoverStyle:{color:C.value.textColorHover}},series:[{type:`pie`,name:n(`networkTypes`),data:[{name:n(`tcp`),y:t,color:C.value.seriesColors[0]},{name:n(`udp`),y:r,color:C.value.seriesColors[1]},...i>0?[{name:n(`other`),y:i,color:C.value.seriesColors[2]}]:[]]}]}}),ye=u(()=>{let e=a.speedGroupByName,t=Object.entries(e).filter(([e])=>!f.isProxyGroup(e)).sort(([,e],[,t])=>t-e).slice(0,5),r=t.map(([e])=>e),i=t.map(([,e])=>e);return{chart:{type:`bar`,backgroundColor:C.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:n(`topProxies`),style:{color:C.value.textColor}},xAxis:{categories:r,labels:{style:{color:C.value.textColor}},lineColor:C.value.lineColor},yAxis:{title:{text:void 0},labels:{style:{color:C.value.textColor},formatter(){return`${k(this.value).toString()}/s`}},gridLineColor:C.value.gridLineColor,min:0},tooltip:{formatter(){return`<b>${r[this.x]||this.x}</b><br/>${k(this.y).toString()}/s`}},legend:{enabled:!1},plotOptions:{bar:{dataLabels:{enabled:!1},animation:!1}},series:[{type:`bar`,name:n(`traffic`),data:i,color:C.value.seriesColors[0]}]}}),be=r.trafficChartHistory.download.at(-1)?.[0]??0,Se=r.memoryChartHistory.at(-1)?.[0]??0,Ce=r.connectionCountHistory.at(-1)?.[0]??0;return l(()=>r.latestTraffic,e=>{if(e&&w.value?.chartRef){let t=Date.now();t>be&&(w.value.chartRef.addPoints([{seriesIndex:0,time:t,value:e.down},{seriesIndex:1,time:t,value:e.up}]),be=t)}}),l(()=>r.latestMemory?.inuse,e=>{if(e&&te.value?.chartRef){let t=Date.now();t>Se&&(te.value.chartRef.addPoint(0,t,e),Se=t)}}),l(()=>a.latestConnectionMsg?.connections?.length,e=>{if(e!==void 0&&ne.value?.chartRef){let t=Date.now();t>Ce&&(ne.value.chartRef.addPoint(0,t,e),Ce=t)}}),(e,t)=>{let l=j,u=xe,f=lt,p=Ot,b=ts;return i(),_(`div`,ns,[m(`div`,rs,[m(`div`,is,[m(`div`,as,[s(h(se),{size:20})]),m(`div`,os,[m(`span`,ss,g(h(n)(`upload`)),1),m(`span`,cs,g(x(h(r).latestTraffic?.up||0))+`/s `,1)])]),m(`div`,ls,[m(`div`,us,[s(h(oe),{size:20})]),m(`div`,ds,[m(`span`,fs,g(h(n)(`download`)),1),m(`span`,ps,g(x(h(r).latestTraffic?.down||0))+`/s `,1)])]),m(`div`,ms,[m(`div`,hs,[s(h(S),{size:20})]),m(`div`,gs,[m(`span`,_s,g(h(n)(`uploadTotal`)),1),m(`span`,vs,g(x(h(a).latestConnectionMsg?.uploadTotal||0)),1)])]),m(`div`,ys,[m(`div`,bs,[s(h(S),{size:20})]),m(`div`,xs,[m(`span`,Ss,g(h(n)(`downloadTotal`)),1),m(`span`,Cs,g(x(h(a).latestConnectionMsg?.downloadTotal||0)),1)])]),m(`div`,ws,[m(`div`,Ts,[s(h(le),{size:20})]),m(`div`,Es,[m(`span`,Ds,g(h(n)(`activeConnections`)),1),m(`span`,Os,g(h(a).latestConnectionMsg?.connections?.length||0),1)])]),m(`div`,ks,[m(`div`,As,[s(h(T),{size:20})]),m(`div`,js,[m(`span`,Ms,g(h(n)(`memoryUsage`)),1),m(`span`,Ns,g(x(h(r).latestMemory?.inuse||0)),1)])])]),h(o).currentEndpoint?.url?(i(),_(`div`,Ps,[s(h(ie),{size:18,class:`text-primary`}),m(`span`,Fs,g(h(n)(`connectedTo`))+`:`,1),m(`span`,Is,g(h(o).currentEndpoint?.url),1)])):d(``,!0),m(`div`,Ls,[m(`div`,Rs,[s(l,{ref_key:`trafficChartRef`,ref:w,title:h(n)(`traffic`),"series-config":h(D),"initial-data":h(ce),"is-loading":!h(r).latestTraffic},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),m(`div`,zs,[s(u,{options:h(A),"is-loading":!h(a).latestConnectionMsg},null,8,[`options`,`is-loading`])]),m(`div`,Bs,[s(l,{ref_key:`memoryChartRef`,ref:te,title:h(n)(`memory`),"series-config":h(ue),"initial-data":h(pe),"is-loading":!h(r).latestMemory},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),m(`div`,Vs,[s(l,{ref_key:`connectionsChartRef`,ref:ne,title:h(n)(`connectionsChart`),"series-config":h(me),"initial-data":h(ge),"is-loading":!h(a).latestConnectionMsg,"value-mode":`number`},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),m(`div`,Hs,[s(u,{options:h(ve),"is-loading":!h(a).latestConnectionMsg},null,8,[`options`,`is-loading`])]),m(`div`,Us,[s(u,{options:h(ye),"is-loading":!h(a).latestConnectionMsg},null,8,[`options`,`is-loading`])])]),m(`div`,Ws,[s(f),s(p)]),m(`div`,Gs,[m(`div`,{class:`flex cursor-pointer items-center justify-between`,onClick:t[0]||=e=>h(c).showNetworkTopology=!h(c).showNetworkTopology},[m(`div`,Ks,[s(h(ae),{size:20}),m(`h3`,null,g(h(n)(`networkTopology`)),1)]),m(`button`,qs,[s(h(re),{size:20,class:v([`transition-transform duration-300`,{"rotate-180":h(c).showNetworkTopology}])},null,8,[`class`])])]),h(c).showNetworkTopology?(i(),y(b,{key:0,class:`mt-4`})):d(``,!0)])])}}});export{Js as default};