Files
clash-for-linux/dashboard/public/_nuxt/CQh-OLya.js
wnlen eb4a01c1f6 ui
2026-01-18 23:48:32 +08:00

1 line
82 KiB
JavaScript
Raw Permalink 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{$ as e,C as t,Dt as n,E as r,Et as i,G as a,H as o,J as s,K as c,L as l,Mt as u,Ot as d,Q as f,V as p,W as m,Z as h,at as g,ct as _,dt as v,ft as y,ht as b,j as x,kt as S,lt as C,ot as w,pt as ee,q as T,rt as E,st as D,ut as O,x as k,yt as A}from"./B7rlnwkb.js";import{t as j}from"./_v7-ePgP.js";import{t as M}from"./CdlJ_YxQ.js";import{t as N}from"./83RCacat.js";import{B as te,C as P,E as ne,F,O as re,R as I,a as ie,d as ae,g as oe,h as se,k as L,m as ce,n as le,o as ue,t as de,v as fe,x as pe,z as R}from"./ZxKQ9y5G.js";import{t as me}from"./CDMImveV.js";import{n as he,t as z}from"./CcIdf__h.js";import{t as ge}from"./BEgqDXY5.js";import{a as _e,d as ve,i as ye,l as be}from"./BaY9ddW5.js";var xe={class:`stat place-items-center px-2 py-3`},Se={class:`stat-title text-xs text-primary-content sm:text-sm`},Ce={class:`stat-value text-center text-lg whitespace-nowrap text-primary-content sm:text-xl lg:text-2xl`},we=e({__name:`TrafficWidget`,props:{label:{}},setup(e){return(t,n)=>(D(),s(`div`,xe,[a(`div`,Se,S(e.label),1),a(`div`,Ce,[C(t.$slots,`default`)])]))}}),Te=Object.assign(we,{__name:`TrafficWidget`}),Ee=u(ge(),1),De={class:`relative h-full w-full`},Oe={key:0,class:`absolute inset-0 flex items-center justify-center`},ke=e({__name:`RealtimeLineChart`,props:{title:{},seriesConfig:{},isLoading:{type:Boolean,default:!1},initialData:{default:()=>[]},valueMode:{default:`bytes`}},emits:[`chartReady`],setup(e,{expose:t,emit:r}){let i=e,o=r,c=(e,t=!1)=>i.valueMode===`number`?String(e):t?`${z(e).toString()}/s`:z(e).toString(),l=A(),u,d=M();function f(){let e=be();return{chart:{type:`areaspline`,animation:{duration:800,easing:`linear`},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:i.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 c(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>${c(e.y,!0)}</b><br/>`}),t}},plotOptions:{areaspline:{fillOpacity:.3,marker:{enabled:!1},lineWidth:2,states:{hover:{lineWidth:3}},threshold:null}},series:i.seriesConfig.map((t,n)=>({type:`areaspline`,name:t.name,color:t.color||e.seriesColors[n]||Ee.default.getOptions().colors?.[n]||`hsl(${n*120}, 70%, 50%)`,data:i.initialData?.[n]||[]}))}}let p={addPoint:(e,t,n)=>{if(u?.series[e]){let r=u.series[e].data.length>=10;u.series[e].addPoint([t,n],!0,r,{duration:800,easing:`linear`})}},addPoints:e=>{if(!u)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=u?.series[t];n&&e.forEach(e=>{let t=n.data.length>=10;n.addPoint([e.time,e.value],!1,t)})}),u.redraw({duration:800,easing:`linear`})},setSeriesData:(e,t)=>{u?.series[e]&&u.series[e].setData(t,!0,!1,!1)}};return t({chartRef:p}),g(()=>{if(!l.value)return;u=Ee.default.chart(l.value,f()),o(`chartReady`,p);let e=new ResizeObserver(()=>{u&&l.value&&u.setSize(l.value.clientWidth,l.value.clientHeight,!0)});e.observe(l.value),w(()=>{e.disconnect(),u?.destroy()})}),v(()=>i.title,e=>{u&&u.setTitle({text:e})}),v(()=>i.seriesConfig,e=>{u&&(e.forEach((e,t)=>{u.series[t]&&u.series[t].update({type:`areaspline`,name:e.name,color:e.color},!1)}),u.redraw())},{deep:!0}),v(()=>d.curTheme,()=>{requestAnimationFrame(()=>{if(u){let e=be();u.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)}})}),(t,r)=>(D(),s(`div`,De,[e.isLoading?(D(),s(`div`,Oe,[...r[0]||=[a(`span`,{class:`loading loading-lg loading-dots`},null,-1)]])):T(``,!0),a(`div`,{ref_key:`containerRef`,ref:l,class:n([`h-full w-full`,{"opacity-0":e.isLoading}])},null,2)]))}}),Ae=Object.assign(ke,{__name:`RealtimeLineChart`}),je=u(ge(),1),Me={class:`relative h-full w-full`},Ne={key:0,class:`absolute inset-0 flex items-center justify-center`},Pe=e({__name:`HighchartsAutoSize`,props:{options:{},isLoading:{type:Boolean,default:!1}},setup(e){let t=e,r=A(),i,o=M();function c(){let e=be();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 g(()=>{if(!r.value)return;let e=c(),n={...e,...t.options,chart:{...e.chart,...t.options.chart}};i=je.default.chart(r.value,n);let a=r.value.clientWidth,o=r.value.clientHeight,s=new ResizeObserver(()=>{if(i&&r.value){let e=r.value.clientWidth,t=r.value.clientHeight;(e!==a||t!==o)&&(a=e,o=t,i.setSize(e,t,!1))}});s.observe(r.value),w(()=>{s.disconnect(),i?.destroy()})}),v(()=>t.options,e=>{i&&i.update(e,!0,!1,!1)},{deep:!0}),v(()=>o.curTheme,()=>{requestAnimationFrame(()=>{if(i){let e=be();i.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)}})}),(t,i)=>(D(),s(`div`,Me,[e.isLoading?(D(),s(`div`,Ne,[...i[0]||=[a(`span`,{class:`loading loading-lg loading-dots`},null,-1)]])):T(``,!0),a(`div`,{ref_key:`containerRef`,ref:r,class:n([`h-full w-full`,{"opacity-0":e.isLoading}])},null,2)]))}}),Fe=Object.assign(Pe,{__name:`HighchartsAutoSize`}),Ie={"ip.sb":`https://api.ip.sb/geoip`,"ipwho.is":`https://ipwho.is/`,"ipapi.is":`https://api.ipapi.is/`};function Le(e){return{ip:e.ip,country:e.country,city:e.city,asn:e.asn,org:e.asn_organization}}function Re(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 ze(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 Be(e){let t=Ie[e],n=await me.get(t,{timeout:1e4}).json();switch(e){case`ip.sb`:return Le(n);case`ipwho.is`:return Re(n);case`ipapi.is`:return ze(n);default:throw Error(`Unknown IP provider: ${e}`)}}function Ve(){let e=A(`ip.sb`),t=A(null),n=A(!1),r=A(null);async function i(i){let a=i??e.value;n.value=!0,r.value=null;try{t.value=await Be(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 He={class:`card bg-base-200 p-4 shadow-sm`},Ue={class:`mb-3 flex items-center justify-between`},We={class:`flex items-center gap-2`},Ge={class:`font-semibold`},Ke={class:`flex items-center gap-2`},qe=[`value`],Je=[`value`],Ye=[`disabled`],Xe={key:0,class:`flex justify-center py-4`},Ze={key:1,class:`alert alert-error`},Qe={key:2,class:`space-y-2`},$e={class:`flex items-center justify-between gap-2`},et={class:`shrink-0 text-base-content/60`},tt=[`title`],nt={key:0,class:`flex items-center justify-between gap-2`},rt={class:`shrink-0 text-base-content/60`},it={class:`truncate`},at={key:1,class:`flex items-center justify-between gap-2`},ot={class:`shrink-0 text-base-content/60`},st={class:`truncate`},ct={key:2,class:`flex items-center justify-between gap-2`},lt={class:`shrink-0 text-base-content/60`},ut=[`title`],dt={key:3,class:`flex items-center justify-between gap-2`},ft={class:`truncate font-mono`},pt={key:4,class:`flex items-center justify-between gap-2`},mt=[`title`],ht={key:5,class:`flex items-center justify-between`},gt={class:`text-base-content/60`},_t={class:`flex gap-1`},vt={key:0,class:`badge badge-sm badge-warning`},yt={key:1,class:`badge badge-sm badge-warning`},bt={key:2,class:`badge badge-sm badge-success`},xt={key:3,class:`py-4 text-center text-base-content/60`},St=e({__name:`IPInfoCard`,setup(e){let{t}=k(),{currentProvider:r,ipInfo:c,isLoading:l,error:u,fetchIP:d}=Ve(),p=[{value:`ip.sb`,label:`IP.SB`},{value:`ipwho.is`,label:`ipwho.is`},{value:`ipapi.is`,label:`ipapi.is`}];g(()=>{d()});function m(e){let t=e.target;d(t.value)}return(e,h)=>(D(),s(`div`,He,[a(`div`,Ue,[a(`div`,We,[f(i(ie),{class:`h-5 w-5 text-primary`}),a(`h3`,Ge,S(i(t)(`currentIP`)),1)]),a(`div`,Ke,[a(`select`,{value:i(r),class:`select-bordered select select-sm`,onChange:m},[(D(),s(o,null,_(p,e=>a(`option`,{key:e.value,value:e.value},S(e.label),9,Je)),64))],40,qe),a(`button`,{class:n([`btn btn-circle btn-ghost btn-sm`,{"animate-spin":i(l)}]),disabled:i(l),onClick:h[0]||=e=>i(d)()},[f(i(ce),{class:`h-4 w-4`})],10,Ye)])]),i(l)?(D(),s(`div`,Xe,[...h[1]||=[a(`span`,{class:`loading loading-md loading-spinner`},null,-1)]])):i(u)?(D(),s(`div`,Ze,[a(`span`,null,S(i(u)),1)])):i(c)?(D(),s(`div`,Qe,[a(`div`,$e,[a(`span`,et,S(i(t)(`ipAddress`)),1),a(`span`,{class:`truncate font-mono font-semibold`,title:i(c).ip},S(i(c).ip),9,tt)]),i(c).country?(D(),s(`div`,nt,[a(`span`,rt,S(i(t)(`country`)),1),a(`span`,it,S(i(c).country),1)])):T(``,!0),i(c).city?(D(),s(`div`,at,[a(`span`,ot,S(i(t)(`city`)),1),a(`span`,st,S(i(c).city),1)])):T(``,!0),i(c).org?(D(),s(`div`,ct,[a(`span`,lt,S(i(t)(`organization`)),1),a(`span`,{class:`truncate text-right`,title:i(c).org},S(i(c).org),9,ut)])):T(``,!0),i(c).asn?(D(),s(`div`,dt,[h[2]||=a(`span`,{class:`shrink-0 text-base-content/60`},`ASN`,-1),a(`span`,ft,`AS`+S(i(c).asn),1)])):T(``,!0),i(c).isp?(D(),s(`div`,pt,[h[3]||=a(`span`,{class:`shrink-0 text-base-content/60`},`ISP`,-1),a(`span`,{class:`truncate text-right`,title:i(c).isp},S(i(c).isp),9,mt)])):T(``,!0),i(c).isProxy!==void 0||i(c).isVPN!==void 0?(D(),s(`div`,ht,[a(`span`,gt,S(i(t)(`proxyDetection`)),1),a(`div`,_t,[i(c).isProxy?(D(),s(`span`,vt,` Proxy `)):T(``,!0),i(c).isVPN?(D(),s(`span`,yt,` VPN `)):T(``,!0),!i(c).isProxy&&!i(c).isVPN?(D(),s(`span`,bt,S(i(t)(`clean`)),1)):T(``,!0)])])):T(``,!0)])):(D(),s(`div`,xt,S(i(t)(`noData`)),1))]))}}),Ct=Object.assign(St,{__name:`IPInfoCard`}),wt=[{name:`Google`,url:`https://www.google.com/generate_204`},{name:`Cloudflare`,url:`https://www.cloudflare.com/cdn-cgi/trace`},{name:`GitHub`,url:`https://github.com`}];async function Tt(e){try{let t=performance.now();await fetch(e,{method:`HEAD`,mode:`no-cors`,cache:`no-store`});let n=performance.now();return Math.round(n-t)}catch{return null}}function Et(){let e=A(new Map),t=A(!1),n=A(wt);async function r(t,n){e.value.set(n,{url:n,latency:null,status:`pending`,timestamp:Date.now()});let r=await Tt(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:m(()=>n.value.map(t=>({name:t.name,url:t.url,result:e.value.get(t.url)}))),averageLatency:m(()=>{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 Dt={class:`card bg-base-200 p-4 shadow-sm`},Ot={class:`mb-3 flex items-center justify-between`},kt={class:`flex items-center gap-2`},At={class:`font-semibold`},jt={class:`flex items-center gap-2`},Mt=[`disabled`],Nt={class:`space-y-3`},Pt={class:`w-20 shrink-0 truncate text-sm`},Ft={class:`relative h-4 flex-1 overflow-hidden rounded-full bg-base-300`},It={class:`w-16 shrink-0 text-right font-mono text-sm`},Lt={key:0,class:`loading loading-xs loading-spinner`},Rt={key:1},zt={key:2,class:`text-error`},Bt={key:3,class:`text-base-content/40`},Vt=e({__name:`LatencyCard`,setup(e){let{t}=k(),{allResults:r,isTestingAll:c,testAllLatencies:l,averageLatency:u}=Et();g(()=>{l()});function p(e){return e==null?`badge-ghost`:e<100?`badge-success`:e<300?`badge-warning`:`badge-error`}function m(e){return e==null?`0%`:`${Math.min(e/500*100,100)}%`}function h(e){return e==null?`bg-base-300`:e<100?`bg-success`:e<300?`bg-warning`:`bg-error`}return(e,g)=>(D(),s(`div`,Dt,[a(`div`,Ot,[a(`div`,kt,[f(i(te),{class:`h-5 w-5 text-primary`}),a(`h3`,At,S(i(t)(`networkLatency`)),1)]),a(`div`,jt,[i(u)===null?T(``,!0):(D(),s(`span`,{key:0,class:n([`badge`,p(i(u))])},S(i(t)(`average`))+`: `+S(i(u))+`ms `,3)),a(`button`,{class:n([`btn btn-circle btn-ghost btn-sm`,{"animate-spin":i(c)}]),disabled:i(c),onClick:g[0]||=(...e)=>i(l)&&i(l)(...e)},[f(i(ce),{class:`h-4 w-4`})],10,Mt)])]),a(`div`,Nt,[(D(!0),s(o,null,_(i(r),e=>(D(),s(`div`,{key:e.url,class:`flex items-center gap-3`},[a(`span`,Pt,S(e.name),1),a(`div`,Ft,[a(`div`,{class:n([`absolute inset-y-0 left-0 rounded-full transition-all duration-500`,h(e.result?.latency)]),style:d({width:m(e.result?.latency)})},null,6)]),a(`span`,It,[e.result?.status===`pending`?(D(),s(`span`,Lt)):e.result?.status===`success`?(D(),s(`span`,Rt,S(e.result.latency)+`ms `,1)):e.result?.status===`error`?(D(),s(`span`,zt,S(i(t)(`timeout`)),1)):(D(),s(`span`,Bt,`-`))])]))),128))])]))}}),Ht=Object.assign(Vt,{__name:`LatencyCard`}),Ut={value:()=>{}};function Wt(){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 Gt(n)}function Gt(e){this._=e}function Kt(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}})}Gt.prototype=Wt.prototype={constructor:Gt,on:function(e,t){var n=this._,r=Kt(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=qt(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]=Jt(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Jt(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 Gt(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 qt(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Jt(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=Ut,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Yt=Wt,Xt={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 Zt(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Xt.hasOwnProperty(t)?{space:Xt[t],local:e}:e}function Qt(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 $t(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function en(e){var t=Zt(e);return(t.local?$t:Qt)(t)}function tn(){}function nn(e){return e==null?tn:function(){return this.querySelector(e)}}function rn(e){typeof e!=`function`&&(e=nn(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 V(r,this._parents)}function an(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function on(){return[]}function sn(e){return e==null?on:function(){return this.querySelectorAll(e)}}function cn(e){return function(){return an(e.apply(this,arguments))}}function ln(e){e=typeof e==`function`?cn(e):sn(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 V(r,i)}function un(e){return function(){return this.matches(e)}}function dn(e){return function(t){return t.matches(e)}}var fn=Array.prototype.find;function pn(e){return function(){return fn.call(this.children,e)}}function mn(){return this.firstElementChild}function hn(e){return this.select(e==null?mn:pn(typeof e==`function`?e:dn(e)))}var gn=Array.prototype.filter;function _n(){return Array.from(this.children)}function vn(e){return function(){return gn.call(this.children,e)}}function yn(e){return this.selectAll(e==null?_n:vn(typeof e==`function`?e:dn(e)))}function bn(e){typeof e!=`function`&&(e=un(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 V(r,this._parents)}function xn(e){return Array(e.length)}function Sn(){return new V(this._enter||this._groups.map(xn),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 wn(e){return function(){return e}}function Tn(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 En(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 Dn(e){return e.__data__}function On(e,t){if(!arguments.length)return Array.from(this,Dn);var n=t?En:Tn,r=this._parents,i=this._groups;typeof e!=`function`&&(e=wn(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=kn(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 V(o,r),o._enter=s,o._exit=c,o}function kn(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function An(){return new V(this._exit||this._groups.map(xn),this._parents)}function jn(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 Mn(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 V(s,this._parents)}function Nn(){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 Pn(e){e||=Fn;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 V(i,this._parents).order()}function Fn(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function In(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Ln(){return Array.from(this)}function Rn(){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 zn(){let e=0;for(let t of this)++e;return e}function Bn(){return!this.node()}function Vn(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 Hn(e){return function(){this.removeAttribute(e)}}function Un(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Wn(e,t){return function(){this.setAttribute(e,t)}}function Gn(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Kn(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function qn(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 Jn(e,t){var n=Zt(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?Un:Hn:typeof t==`function`?n.local?qn:Kn:n.local?Gn:Wn)(n,t))}function Yn(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Xn(e){return function(){this.style.removeProperty(e)}}function Zn(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Qn(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function $n(e,t,n){return arguments.length>1?this.each((t==null?Xn:typeof t==`function`?Qn:Zn)(e,t,n??``)):B(this.node(),e)}function B(e,t){return e.style.getPropertyValue(t)||Yn(e).getComputedStyle(e,null).getPropertyValue(t)}function er(e){return function(){delete this[e]}}function tr(e,t){return function(){this[e]=t}}function nr(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function rr(e,t){return arguments.length>1?this.each((t==null?er:typeof t==`function`?nr:tr)(e,t)):this.node()[e]}function ir(e){return e.trim().split(/^|\s+/)}function ar(e){return e.classList||new or(e)}function or(e){this._node=e,this._names=ir(e.getAttribute(`class`)||``)}or.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 sr(e,t){for(var n=ar(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function cr(e,t){for(var n=ar(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function lr(e){return function(){sr(this,e)}}function ur(e){return function(){cr(this,e)}}function dr(e,t){return function(){(t.apply(this,arguments)?sr:cr)(this,e)}}function fr(e,t){var n=ir(e+``);if(arguments.length<2){for(var r=ar(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?dr:t?lr:ur)(n,t))}function pr(){this.textContent=``}function mr(e){return function(){this.textContent=e}}function hr(e){return function(){this.textContent=e.apply(this,arguments)??``}}function gr(e){return arguments.length?this.each(e==null?pr:(typeof e==`function`?hr:mr)(e)):this.node().textContent}function _r(){this.innerHTML=``}function vr(e){return function(){this.innerHTML=e}}function yr(e){return function(){this.innerHTML=e.apply(this,arguments)??``}}function br(e){return arguments.length?this.each(e==null?_r:(typeof e==`function`?yr:vr)(e)):this.node().innerHTML}function xr(){this.nextSibling&&this.parentNode.appendChild(this)}function Sr(){return this.each(xr)}function Cr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function wr(){return this.each(Cr)}function Tr(e){var t=typeof e==`function`?e:en(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Er(){return null}function Dr(e,t){var n=typeof e==`function`?e:en(e),r=t==null?Er:typeof t==`function`?t:nn(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Or(){var e=this.parentNode;e&&e.removeChild(this)}function kr(){return this.each(Or)}function Ar(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function jr(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Mr(e){return this.select(e?jr:Ar)}function Nr(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Pr(e){return function(t){e.call(this,t,this.__data__)}}function Fr(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 Ir(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 Lr(e,t,n){return function(){var r=this.__on,i,a=Pr(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 Rr(e,t,n){var r=Fr(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?Lr:Ir,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function zr(e,t,n){var r=Yn(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 Br(e,t){return function(){return zr(this,e,t)}}function Vr(e,t){return function(){return zr(this,e,t.apply(this,arguments))}}function Hr(e,t){return this.each((typeof t==`function`?Vr:Br)(e,t))}function*Ur(){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 Wr=[null];function V(e,t){this._groups=e,this._parents=t}function Gr(){return new V([[document.documentElement]],Wr)}function Kr(){return this}V.prototype=Gr.prototype={constructor:V,select:rn,selectAll:ln,selectChild:hn,selectChildren:yn,filter:bn,data:On,enter:Sn,exit:An,join:jn,merge:Mn,selection:Kr,order:Nn,sort:Pn,call:In,nodes:Ln,node:Rn,size:zn,empty:Bn,each:Vn,attr:Jn,style:$n,property:rr,classed:fr,text:gr,html:br,raise:Sr,lower:wr,append:Tr,insert:Dr,remove:kr,clone:Mr,datum:Nr,on:Rr,dispatch:Hr,[Symbol.iterator]:Ur};var qr=Gr;function Jr(e){return typeof e==`string`?new V([[document.querySelector(e)]],[document.documentElement]):new V([[e]],Wr)}function Yr(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Xr(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Zr(){}var Qr=.7,$r=1/Qr,H=`\\s*([+-]?\\d+)\\s*`,ei=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,U=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,ti=/^#([0-9a-f]{3,8})$/,ni=RegExp(`^rgb\\(${H},${H},${H}\\)$`),ri=RegExp(`^rgb\\(${U},${U},${U}\\)$`),ii=RegExp(`^rgba\\(${H},${H},${H},${ei}\\)$`),ai=RegExp(`^rgba\\(${U},${U},${U},${ei}\\)$`),oi=RegExp(`^hsl\\(${ei},${U},${U}\\)$`),si=RegExp(`^hsla\\(${ei},${U},${U},${ei}\\)$`),ci={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};Yr(Zr,pi,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:li,formatHex:li,formatHex8:ui,formatHsl:di,formatRgb:fi,toString:fi});function li(){return this.rgb().formatHex()}function ui(){return this.rgb().formatHex8()}function di(){return Ci(this).formatHsl()}function fi(){return this.rgb().formatRgb()}function pi(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=ti.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?mi(t):n===3?new W(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?hi(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?hi(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=ni.exec(e))?new W(t[1],t[2],t[3],1):(t=ri.exec(e))?new W(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ii.exec(e))?hi(t[1],t[2],t[3],t[4]):(t=ai.exec(e))?hi(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=oi.exec(e))?Si(t[1],t[2]/100,t[3]/100,1):(t=si.exec(e))?Si(t[1],t[2]/100,t[3]/100,t[4]):ci.hasOwnProperty(e)?mi(ci[e]):e===`transparent`?new W(NaN,NaN,NaN,0):null}function mi(e){return new W(e>>16&255,e>>8&255,e&255,1)}function hi(e,t,n,r){return r<=0&&(e=t=n=NaN),new W(e,t,n,r)}function gi(e){return e instanceof Zr||(e=pi(e)),e?(e=e.rgb(),new W(e.r,e.g,e.b,e.opacity)):new W}function _i(e,t,n,r){return arguments.length===1?gi(e):new W(e,t,n,r??1)}function W(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Yr(W,_i,Xr(Zr,{brighter(e){return e=e==null?$r:$r**+e,new W(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Qr:Qr**+e,new W(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new W(G(this.r),G(this.g),G(this.b),xi(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:vi,formatHex:vi,formatHex8:yi,formatRgb:bi,toString:bi}));function vi(){return`#${K(this.r)}${K(this.g)}${K(this.b)}`}function yi(){return`#${K(this.r)}${K(this.g)}${K(this.b)}${K((isNaN(this.opacity)?1:this.opacity)*255)}`}function bi(){let e=xi(this.opacity);return`${e===1?`rgb(`:`rgba(`}${G(this.r)}, ${G(this.g)}, ${G(this.b)}${e===1?`)`:`, ${e})`}`}function xi(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function G(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function K(e){return e=G(e),(e<16?`0`:``)+e.toString(16)}function Si(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new q(e,t,n,r)}function Ci(e){if(e instanceof q)return new q(e.h,e.s,e.l,e.opacity);if(e instanceof Zr||(e=pi(e)),!e)return new q;if(e instanceof q)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 q(o,s,c,e.opacity)}function wi(e,t,n,r){return arguments.length===1?Ci(e):new q(e,t,n,r??1)}function q(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Yr(q,wi,Xr(Zr,{brighter(e){return e=e==null?$r:$r**+e,new q(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Qr:Qr**+e,new q(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 W(Di(e>=240?e-240:e+120,i,r),Di(e,i,r),Di(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new q(Ti(this.h),Ei(this.s),Ei(this.l),xi(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=xi(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Ti(this.h)}, ${Ei(this.s)*100}%, ${Ei(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Ti(e){return e=(e||0)%360,e<0?e+360:e}function Ei(e){return Math.max(0,Math.min(1,e||0))}function Di(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 Oi=e=>()=>e;function ki(e,t){return function(n){return e+n*t}}function Ai(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function ji(e){return(e=+e)==1?Mi:function(t,n){return n-t?Ai(t,n,e):Oi(isNaN(t)?n:t)}}function Mi(e,t){var n=t-e;return n?ki(e,n):Oi(isNaN(e)?t:e)}var Ni=(function e(t){var n=ji(t);function r(e,t){var r=n((e=_i(e)).r,(t=_i(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Mi(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 J(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var Pi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Fi=new RegExp(Pi.source,`g`);function Ii(e){return function(){return e}}function Li(e){return function(t){return e(t)+``}}function Ri(e,t){var n=Pi.lastIndex=Fi.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Pi.exec(e))&&(i=Fi.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:J(r,i)})),n=Fi.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Li(c[0].x):Ii(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 zi=180/Math.PI,Bi={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Vi(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)*zi,skewX:Math.atan(c)*zi,scaleX:o,scaleY:s}}var Hi;function Ui(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Bi:Vi(t.a,t.b,t.c,t.d,t.e,t.f)}function Wi(e){return e==null||(Hi||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Hi.setAttribute(`transform`,e),!(e=Hi.transform.baseVal.consolidate()))?Bi:(e=e.matrix,Vi(e.a,e.b,e.c,e.d,e.e,e.f))}function Gi(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:J(e,i)},{i:c-2,x:J(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:J(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:J(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:J(e,n)},{i:s-2,x:J(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 Ki=Gi(Ui,`px, `,`px)`,`deg)`),qi=Gi(Wi,`, `,`)`,`)`),Y=0,Ji=0,Yi=0,Xi=1e3,Zi,Qi,$i=0,ea=0,ta=0,na=typeof performance==`object`&&performance.now?performance:Date,ra=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function ia(){return ea||=(ra(aa),na.now()+ta)}function aa(){ea=0}function oa(){this._call=this._time=this._next=null}oa.prototype=sa.prototype={constructor:oa,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?ia():+n)+(t==null?0:+t),!this._next&&Qi!==this&&(Qi?Qi._next=this:Zi=this,Qi=this),this._call=e,this._time=n,fa()},stop:function(){this._call&&(this._call=null,this._time=1/0,fa())}};function sa(e,t,n){var r=new oa;return r.restart(e,t,n),r}function ca(){ia(),++Y;for(var e=Zi,t;e;)(t=ea-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Y}function la(){ea=($i=na.now())+ta,Y=Ji=0;try{ca()}finally{Y=0,da(),ea=0}}function ua(){var e=na.now(),t=e-$i;t>Xi&&(ta-=t,$i=e)}function da(){for(var e,t=Zi,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:Zi=n);Qi=e,fa(r)}function fa(e){Y||(Ji&&=clearTimeout(Ji),e-ea>24?(e<1/0&&(Ji=setTimeout(la,e-na.now()-ta)),Yi&&=clearInterval(Yi)):(Yi||=($i=na.now(),setInterval(ua,Xi)),Y=1,ra(la)))}function pa(e,t,n){var r=new oa;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var ma=Yt(`start`,`end`,`cancel`,`interrupt`),ha=[];function ga(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;va(e,n,{name:t,index:r,group:i,on:ma,tween:ha,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function _a(e,t){var n=Z(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function X(e,t){var n=Z(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function Z(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function va(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=sa(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 pa(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(pa(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 ya(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 ba(e){return this.each(function(){ya(this,e)})}function xa(e,t){var n,r;return function(){var i=X(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 Sa(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=X(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 Ca(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=Z(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?xa:Sa)(n,e,t))}function wa(e,t,n){var r=e._id;return e.each(function(){var e=X(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return Z(e,r).value[t]}}function Ta(e,t){var n;return(typeof t==`number`?J:t instanceof pi?Ni:(n=pi(t))?(t=n,Ni):Ri)(e,t)}function Ea(e){return function(){this.removeAttribute(e)}}function Da(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Oa(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 ka(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 Aa(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 ja(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 Ma(e,t){var n=Zt(e),r=n===`transform`?qi:Ta;return this.attrTween(e,typeof t==`function`?(n.local?ja:Aa)(n,r,wa(this,`attr.`+e,t)):t==null?(n.local?Da:Ea)(n):(n.local?ka:Oa)(n,r,t))}function Na(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Pa(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)&&Pa(e,i)),n}return i._value=t,i}function Ia(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Na(e,i)),n}return i._value=t,i}function La(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=Zt(e);return this.tween(n,(r.local?Fa:Ia)(r,t))}function Ra(e,t){return function(){_a(this,e).delay=+t.apply(this,arguments)}}function za(e,t){return t=+t,function(){_a(this,e).delay=t}}function Ba(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Ra:za)(t,e)):Z(this.node(),t).delay}function Va(e,t){return function(){X(this,e).duration=+t.apply(this,arguments)}}function Ha(e,t){return t=+t,function(){X(this,e).duration=t}}function Ua(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Va:Ha)(t,e)):Z(this.node(),t).duration}function Wa(e,t){if(typeof t!=`function`)throw Error();return function(){X(this,e).ease=t}}function Ga(e){var t=this._id;return arguments.length?this.each(Wa(t,e)):Z(this.node(),t).ease}function Ka(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();X(this,e).ease=n}}function qa(e){if(typeof e!=`function`)throw Error();return this.each(Ka(this._id,e))}function Ja(e){typeof e!=`function`&&(e=un(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 Q(r,this._parents,this._name,this._id)}function Ya(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 Q(o,this._parents,this._name,this._id)}function Xa(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 Za(e,t,n){var r,i,a=Xa(t)?_a:X;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Qa(e,t){var n=this._id;return arguments.length<2?Z(this.node(),n).on.on(e):this.each(Za(n,e,t))}function $a(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function eo(){return this.on(`end.remove`,$a(this._id))}function to(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=nn(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,ga(l[f],t,n,f,l,Z(u,n)));return new Q(a,this._parents,t,n)}function no(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=sn(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=Z(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&ga(p,t,n,h,f,m);a.push(f),o.push(u)}return new Q(a,o,t,n)}var ro=qr.prototype.constructor;function io(){return new ro(this._groups,this._parents)}function ao(e,t){var n,r,i;return function(){var a=B(this,e),o=(this.style.removeProperty(e),B(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function oo(e){return function(){this.style.removeProperty(e)}}function so(e,t,n){var r,i=n+``,a;return function(){var o=B(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function co(e,t,n){var r,i,a;return function(){var o=B(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),B(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function lo(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=X(this,e),l=c.on,u=c.value[a]==null?s||=oo(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function uo(e,t,n){var r=(e+=``)==`transform`?Ki:Ta;return t==null?this.styleTween(e,ao(e,r)).on(`end.style.`+e,oo(e)):typeof t==`function`?this.styleTween(e,co(e,r,wa(this,`style.`+e,t))).each(lo(this._id,e)):this.styleTween(e,so(e,r,t),n).on(`end.style.`+e,null)}function fo(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function po(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&fo(e,a,n)),r}return a._value=t,a}function mo(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,po(e,t,n??``))}function ho(e){return function(){this.textContent=e}}function go(e){return function(){this.textContent=e(this)??``}}function _o(e){return this.tween(`text`,typeof e==`function`?go(wa(this,`text`,e)):ho(e==null?``:e+``))}function vo(e){return function(t){this.textContent=e.call(this,t)}}function yo(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&vo(r)),t}return r._value=e,r}function bo(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,yo(e))}function xo(){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=Z(c,t);ga(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Q(r,this._parents,e,n)}function So(){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=X(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 Co=0;function Q(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function wo(e){return qr().transition(e)}function To(){return++Co}var $=qr.prototype;Q.prototype=wo.prototype={constructor:Q,select:to,selectAll:no,selectChild:$.selectChild,selectChildren:$.selectChildren,filter:Ja,merge:Ya,selection:io,transition:xo,call:$.call,nodes:$.nodes,node:$.node,size:$.size,empty:$.empty,each:$.each,on:Qa,attr:Ma,attrTween:La,style:uo,styleTween:mo,text:_o,textTween:bo,remove:eo,tween:Ca,delay:Ba,duration:Ua,ease:Ga,easeVarying:qa,end:So,[Symbol.iterator]:$[Symbol.iterator]};function Eo(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Do={time:null,delay:0,duration:250,ease:Eo};function Oo(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function ko(e){var t,n;e instanceof Q?(t=e._id,e=e._name):(t=To(),(n=Do).time=ia(),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])&&ga(c,e,t,l,o,n||Oo(c,t));return new Q(r,this._parents,e,t)}qr.prototype.interrupt=ba,qr.prototype.transition=ko;var{abs:Ao,max:jo,min:Mo}=Math;[`w`,`e`].map(No),[`n`,`s`].map(No),[`n`,`w`,`e`,`s`,`nw`,`ne`,`sw`,`se`].map(No);function No(e){return{type:e}}function Po(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(Po)}function Io(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function Lo(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 Ro(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 zo(e,t){let n=-1;for(let r of this)if(e.call(t,r,++n,this))return r}function Bo(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 Ho(e){for(var t=this,n=Uo(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 Uo(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 Wo(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function Go(){return Array.from(this)}function Ko(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function qo(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*Jo(){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 Yo(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=Qo)):t===void 0&&(t=Zo);for(var n=new ts(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 ts(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(es)}function Xo(){return Yo(this).eachBefore($o)}function Zo(e){return e.children}function Qo(e){return Array.isArray(e)?e[1]:null}function $o(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function es(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function ts(e){this.data=e,this.depth=this.height=0,this.parent=null}ts.prototype=Yo.prototype={constructor:ts,count:Fo,each:Io,eachAfter:Ro,eachBefore:Lo,find:zo,sum:Bo,sort:Vo,path:Ho,ancestors:Wo,descendants:Go,leaves:Ko,links:qo,copy:Xo,[Symbol.iterator]:Jo};function ns(e,t){return e.parent===t.parent?1:2}function rs(e){var t=e.children;return t?t[0]:e.t}function is(e){var t=e.children;return t?t[t.length-1]:e.t}function as(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 os(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 ss(e,t,n){return e.a.parent===t.parent?e.a:n}function cs(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}cs.prototype=Object.create(ts.prototype);function ls(e){for(var t=new cs(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 cs(a[o],o)),i.parent=n;return(t.parent=new cs(null,0)).children=[t],t}function us(){var e=ns,t=1,n=1,r=null;function i(i){var s=ls(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){os(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=is(o),i=rs(i),o&&i;)s=rs(s),a=is(a),a.a=t,f=o.z+u-i.z-c+e(o._,i._),f>0&&(as(ss(o,t,r),t,f),c+=f,l+=f),u+=o.m,c+=i.m,d+=s.m,l+=a.m;o&&!is(a)&&(a.t=o,a.m+=u-l),i&&!rs(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 ds(e,t,n){this.k=e,this.x=t,this.y=n}ds.prototype={constructor:ds,scale:function(e){return e===1?this:new ds(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ds(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 fs=new ds(1,0,0);ps.prototype=ds.prototype;function ps(e){for(;!e.__zoom;)if(!(e=e.parentNode))return fs;return e.__zoom}var ms={class:`mb-4 flex items-center justify-between`},hs={class:`flex items-center gap-2`},gs=[`title`],_s={class:`flex flex-wrap gap-2 text-sm text-base-content/60`},vs={class:`mb-4 flex flex-wrap gap-4 text-xs`},ys={class:`flex items-center gap-1`},bs={class:`flex items-center gap-1`},xs={class:`flex items-center gap-1`},Ss={class:`flex items-center gap-1`},Cs={class:`flex items-center gap-1`},ws={key:0,class:`flex flex-col items-center justify-center py-8 text-base-content/60`},Ts=e({__name:`NetworkTopology`,setup(e){let{t}=k(),r=he(),o=M(),l=A(null),u=A(null),d=A(new Set),p=A(!1),h=A(null),_=m(()=>p.value&&h.value?h.value:r.activeConnections),y=null,b=null,x=null;function C(e,t=`600 11px sans-serif`){x||=document.createElement(`canvas`);let n=x.getContext(`2d`);return n?(n.font=t,n.measureText(e).width):e.length*7}let ee=!1;function T(){ee||(ee=!0,requestAnimationFrame(()=>{ee=!1,ue()}))}let j=m(()=>{let e=_.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(d.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=d.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)}),!d.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}}),N=m(()=>{let e=_.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 te(){let e=ve();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 F(){let e=o.curTheme;return y&&b===e?y:(y=te(),b=e,y)}function I(e){return F()[e].fill}function ie(e){return F()[e].bg}function L(e){switch(e){case`client`:return re;case`port`:return P;case`rule`:return ne;case`group`:return fe;case`proxy`:return ae;default:return fe}}function le(e,t){let n=`expanded-${e}`;t?e.startsWith(`rule-`)||e.startsWith(`client-`)?d.value.add(n):d.value.delete(e):e.startsWith(`rule-`)||e.startsWith(`client-`)?d.value.delete(n):d.value.add(e)}function ue(){if(!l.value||!u.value)return;let e=j.value;if(!e.children||e.children.length===0)return;Jr(l.value).selectAll(`*`).remove();let t=Yo(e),n=u.value.clientWidth;us().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=C(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 d=1/0,f=-1/0;t.each(e=>{let t=e.x??0;t<d&&(d=t),t>f&&(f=t)});let p=f-d+50,m=Math.max(400,p+25+40),h=0;t.each(e=>{if(e.data.type!==`root`){let t=r.get(e.data.id)??80,n=(e.y??0)+t/2;n>h&&(h=n)}});let g=Math.max(n,h+60+40),_=Jr(l.value).attr(`width`,g).attr(`height`,m).append(`g`).attr(`transform`,`translate(60, ${-d+50/2+25})`),v=F(),y=t.links().filter(e=>e.source.data.type!==`root`);_.selectAll(`.link`).data(y).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`,v.baseContent).attr(`stroke-opacity`,.3).attr(`stroke-width`,e=>Math.max(1,Math.min(4,e.target.data.connections/5)));let b=_.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)&&le(t.data.id,t.data.collapsed??!1)});b.append(`text`).attr(`dy`,-30/2-4).attr(`text-anchor`,`middle`).attr(`fill`,e=>I(e.data.type)).attr(`font-size`,`10px`).attr(`font-weight`,`500`).text(e=>`${e.data.connections}`),b.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=>ie(e.data.type)).attr(`stroke`,e=>I(e.data.type)).attr(`stroke-width`,2),b.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=>I(e.data.type)).attr(`font-size`,`14px`).attr(`font-weight`,`700`).text(e=>e.data.collapsed?`+`:``),b.append(`text`).attr(`dy`,`0.31em`).attr(`text-anchor`,`middle`).attr(`fill`,e=>I(e.data.type)).attr(`font-size`,`11px`).attr(`font-weight`,`600`).text(e=>e.data.name),b.append(`title`).text(e=>`${e.data.name}\n${e.data.connections} connections\n${z(e.data.traffic).toString()}`)}function de(){p.value?h.value=null:h.value=[...r.activeConnections],p.value=!p.value}return v([()=>j.value,()=>o.curTheme],()=>{E(T)},{deep:!0}),g(()=>{E(T);let e=new ResizeObserver(()=>T());u.value&&e.observe(u.value),w(()=>{e.disconnect(),x=null,y=null})}),(e,r)=>(D(),s(`div`,null,[a(`div`,ms,[a(`div`,hs,[a(`button`,{class:n([`btn btn-circle btn-ghost btn-xs`,{"text-warning":i(p)}]),title:i(p)?i(t)(`resume`):i(t)(`pause`),onClick:de},[i(p)?(D(),c(i(se),{key:0,class:`h-4 w-4`})):(D(),c(i(oe),{key:1,class:`h-4 w-4`}))],10,gs)]),a(`div`,_s,[a(`span`,null,S(i(N).clientCount)+` `+S(i(t)(`clients`)),1),r[0]||=a(`span`,null,`·`,-1),a(`span`,null,S(i(N).ruleCount)+` `+S(i(t)(`rules`)),1),r[1]||=a(`span`,null,`·`,-1),a(`span`,null,S(i(N).groupCount)+` `+S(i(t)(`groups`)),1),r[2]||=a(`span`,null,`·`,-1),a(`span`,null,S(i(N).proxyCount)+` `+S(i(t)(`nodes`)),1),r[3]||=a(`span`,null,`·`,-1),a(`span`,null,S(i(z)(i(N).totalTraffic).toString()),1)])]),a(`div`,vs,[a(`div`,ys,[(D(),c(O(L(`group`)),{class:`h-4 w-4 text-accent`})),a(`span`,null,S(i(t)(`proxyGroups`)),1)]),a(`div`,bs,[(D(),c(O(L(`proxy`)),{class:`h-4 w-4 text-info`})),a(`span`,null,S(i(t)(`proxyNodes`)),1)]),a(`div`,xs,[(D(),c(O(L(`rule`)),{class:`h-4 w-4 text-secondary`})),a(`span`,null,S(i(t)(`rules`)),1)]),a(`div`,Ss,[(D(),c(O(L(`client`)),{class:`h-4 w-4 text-primary`})),a(`span`,null,S(i(t)(`sourceIP`)),1)]),a(`div`,Cs,[(D(),c(O(L(`port`)),{class:`h-4 w-4 text-warning`})),a(`span`,null,S(i(t)(`sourcePort`)),1)])]),i(_).length===0?(D(),s(`div`,ws,[f(i(ce),{class:`mb-2 h-8 w-8 animate-pulse`}),a(`span`,null,S(i(t)(`waitingForConnections`)),1)])):(D(),s(`div`,{key:1,ref_key:`containerRef`,ref:u,class:`touch-pan-x touch-pan-y overflow-x-auto`},[(D(),s(`svg`,{ref_key:`svgRef`,ref:l,class:`min-h-100`},null,512))],512))]))}}),Es=Object.assign(Ts,{__name:`NetworkTopology`}),Ds={class:`rounded-box bg-base-300 p-4`},Os={class:`mb-4 flex flex-col gap-2`},ks={class:`flex items-center justify-between gap-2`},As={class:`flex items-center gap-2`},js={class:`text-xl font-bold text-base-content`},Ms=[`data-tip`],Ns={class:`btn btn-circle text-info btn-ghost btn-xs`},Ps={class:`hidden sm:inline`},Fs={key:0,class:`stats stats-vertical bg-base-200 shadow sm:stats-horizontal`},Is={class:`stat py-2`},Ls={class:`stat-title text-xs`},Rs={class:`stat-value text-lg text-primary`},zs={key:0,class:`stat py-2`},Bs={class:`stat-title text-xs`},Vs=[`title`],Hs={class:`flex items-center gap-1`},Us={class:`stat py-2`},Ws={class:`stat-title text-xs`},Gs={class:`stat-value text-lg`},Ks={class:`stat py-2`},qs={class:`stat-title text-xs`},Js={class:`stat-value text-lg`},Ys={class:`stat py-2`},Xs={class:`stat-title text-xs`},Zs={class:`stat-value text-lg text-secondary`},Qs={class:`hidden overflow-x-auto rounded-md lg:block`},$s={class:`table w-full table-zebra`},ec={class:`bg-base-200`},tc={class:`text-base-content`},nc={class:`flex items-center gap-2`},rc={class:`text-base-content`},ic={class:`text-base-content`},ac={class:`text-base-content`},oc={class:`text-base-content`},sc={class:`text-base-content`},cc={key:0},lc={colspan:`6`,class:`text-center text-base-content/70`},uc=[`onClick`],dc={colspan:`6`,class:`py-2`},fc={class:`flex items-center gap-2`},pc={class:`font-semibold text-primary`},mc={class:`text-xs text-base-content/60`},hc={class:`text-xs text-base-content/60`},gc={class:`font-mono text-base-content`},_c=[`title`],vc={class:`flex items-center gap-1`},yc={class:`text-sm`},bc={class:`text-base-content`},xc={class:`text-base-content`},Sc={class:`font-bold text-primary`},Cc=[`title`,`onClick`],wc={class:`flex flex-col gap-3 lg:hidden`},Tc={key:0,class:`flex flex-col gap-2 rounded-lg bg-base-200 p-3`},Ec={class:`flex items-center gap-2`},Dc={class:`text-xs font-semibold text-base-content/60`},Oc={class:`flex flex-1 gap-2`},kc={class:`flex items-center gap-2`},Ac={class:`text-xs font-semibold text-base-content/60`},jc={class:`flex flex-1 gap-2`},Mc={key:1,class:`rounded-lg bg-base-200 p-4 text-center text-base-content/70`},Nc=[`onClick`],Pc={class:`card-body p-4`},Fc={class:`flex items-center justify-between`},Ic={class:`font-semibold text-primary`},Lc={class:`text-xs text-base-content/60`},Rc={class:`card-body p-4`},zc={class:`mb-2 flex items-start justify-between`},Bc={class:`flex-1`},Vc={class:`text-xs font-semibold text-base-content/60 uppercase`},Hc={class:`font-mono text-sm font-bold text-base-content`},Uc=[`title`,`onClick`],Wc={key:0,class:`mb-2`},Gc={class:`text-xs font-semibold text-base-content/60 uppercase`},Kc={class:`flex items-center gap-1 text-sm text-base-content`},qc={class:`text-xs text-base-content/60`},Jc={class:`grid grid-cols-3 gap-2`},Yc={class:`text-xs font-semibold text-base-content/60 uppercase`},Xc={class:`text-sm font-medium text-base-content`},Zc={class:`text-xs font-semibold text-base-content/60 uppercase`},Qc={class:`text-sm font-medium text-base-content`},$c={class:`text-xs font-semibold text-base-content/60 uppercase`},el={class:`text-sm font-bold text-primary`},tl=e({__name:`DataUsageTable`,setup(e){let{t,locale:u}=k(),g=he(),v=A(`total`),y=A(`desc`),x=A(null),C=A({}),w=r(`showDataUsageTable`,!1),E=e=>z(e).toString();function O(e){v.value===e?y.value=y.value===`asc`?`desc`:`asc`:(v.value=e,y.value=`desc`)}function j(e){x.value===e?(x.value=null,C.value={}):(x.value=e,C.value={})}function M(e){C.value[e]=!C.value[e]}let N=m(()=>{let e=Object.values(g.dataUsageMap),t=v.value,n=y.value;return e.sort((e,r)=>{let i=0;switch(t){case`ip`:i=e.sourceIP.localeCompare(r.sourceIP);break;case`duration`:i=(e.firstSeen?e.lastSeen-e.firstSeen:0)-(r.firstSeen?r.lastSeen-r.firstSeen:0);break;case`upload`:i=e.upload-r.upload;break;case`download`:i=e.download-r.download;break;case`total`:i=e.total-r.total;break}return n===`asc`?i:-i})}),te=m(()=>{let e=N.value;if(!x.value)return e.map(e=>({type:`data`,original:e,depth:0}));let t=new Map;for(let n of e){let e=n.sourceIP,r=t.get(e);r?r.push(n):t.set(e,[n])}let n=[];for(let[e,r]of t)if(n.push({type:`group`,key:e,depth:0,subRows:r}),C.value[e])for(let e of r)n.push({type:`data`,original:e,depth:1});return n}),P=m(()=>{let e=N.value,t=e.reduce((e,t)=>e+t.upload,0),n=e.reduce((e,t)=>e+t.download,0),r=2**53-1,i=0;e.forEach(e=>{e.firstSeen&&e.firstSeen<r&&(r=e.firstSeen),e.lastSeen&&e.lastSeen>i&&(i=e.lastSeen)});let a=r!==2**53-1&&i>0;return{count:e.length,upload:t,download:n,total:t+n,firstSeen:a?r:void 0,lastSeen:a?i:void 0}});function ne(){confirm(t(`confirmClearAll`))&&g.clearDataUsage()}function F(e){g.removeDataUsageEntry(e)}return(e,r)=>(D(),s(`div`,Ds,[a(`div`,Os,[a(`div`,ks,[a(`div`,As,[a(`h2`,js,S(i(t)(`dataUsage`)),1),a(`div`,{class:`tooltip tooltip-top before:ml-4 before:max-w-xs before:rounded-lg before:p-2 before:text-xs before:content-[attr(data-tip)] md:tooltip-right md:before:ml-0 md:before:text-sm lg:before:text-base`,"data-tip":i(t)(`dataUsageInfo`)},[a(`button`,Ns,[f(i(pe),{size:18})])],8,Ms),ee(a(`input`,{"onUpdate:modelValue":r[0]||=e=>b(w)?w.value=e:null,type:`checkbox`,class:`toggle toggle-primary`},null,512),[[l,i(w)]])]),i(w)?(D(),s(`button`,{key:0,class:`btn btn-sm btn-error`,onClick:ne},[f(i(ue),{size:16}),a(`span`,Ps,S(i(t)(`clearAll`)),1)])):T(``,!0)]),i(w)?(D(),s(o,{key:0},[i(P).count>0?(D(),s(`div`,Fs,[a(`div`,Is,[a(`div`,Ls,S(i(t)(`devices`)),1),a(`div`,Rs,S(i(P).count),1)]),i(P).firstSeen&&i(P).lastSeen?(D(),s(`div`,zs,[a(`div`,Bs,S(i(t)(`timeRange`)),1),a(`div`,{class:`stat-value text-sm`,title:i(ye)(i(P).firstSeen,i(P).lastSeen,i(u))},[a(`div`,Hs,[f(i(L),{size:16}),a(`span`,null,S(i(_e)(i(P).firstSeen,i(P).lastSeen)),1)])],8,Vs)])):T(``,!0),a(`div`,Us,[a(`div`,Ws,S(i(t)(`uploadTotal`)),1),a(`div`,Gs,S(E(i(P).upload)),1)]),a(`div`,Ks,[a(`div`,qs,S(i(t)(`downloadTotal`)),1),a(`div`,Js,S(E(i(P).download)),1)]),a(`div`,Ys,[a(`div`,Xs,S(i(t)(`grandTotal`)),1),a(`div`,Zs,S(E(i(P).total)),1)])])):T(``,!0),a(`div`,Qs,[a(`table`,$s,[a(`thead`,null,[a(`tr`,ec,[a(`th`,tc,[a(`div`,nc,[a(`button`,{class:`flex items-center gap-1 hover:text-primary`,onClick:r[1]||=e=>O(`ip`)},[a(`span`,null,S(i(t)(`ipAddress`)),1),i(v)===`ip`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:14})):i(v)===`ip`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:14})):T(``,!0)]),i(x)===`ip`?(D(),s(`button`,{key:1,class:`cursor-pointer text-primary`,onClick:r[3]||=p(e=>j(`ip`),[`stop`])},[f(i(de),{size:16})])):(D(),s(`button`,{key:0,class:`cursor-pointer`,onClick:r[2]||=p(e=>j(`ip`),[`stop`])},[f(i(le),{size:16})]))])]),a(`th`,rc,[a(`button`,{class:`flex items-center gap-1 hover:text-primary`,onClick:r[4]||=e=>O(`duration`)},[a(`span`,null,S(i(t)(`duration`)),1),i(v)===`duration`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:14})):i(v)===`duration`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:14})):T(``,!0)])]),a(`th`,ic,[a(`button`,{class:`flex items-center gap-1 hover:text-primary`,onClick:r[5]||=e=>O(`upload`)},[a(`span`,null,S(i(t)(`upload`)),1),i(v)===`upload`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:14})):i(v)===`upload`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:14})):T(``,!0)])]),a(`th`,ac,[a(`button`,{class:`flex items-center gap-1 hover:text-primary`,onClick:r[6]||=e=>O(`download`)},[a(`span`,null,S(i(t)(`download`)),1),i(v)===`download`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:14})):i(v)===`download`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:14})):T(``,!0)])]),a(`th`,oc,[a(`button`,{class:`flex items-center gap-1 hover:text-primary`,onClick:r[7]||=e=>O(`total`)},[a(`span`,null,S(i(t)(`total`)),1),i(v)===`total`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:14})):i(v)===`total`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:14})):T(``,!0)])]),a(`th`,sc,S(i(t)(`actions`)),1)])]),a(`tbody`,null,[i(N).length===0?(D(),s(`tr`,cc,[a(`td`,lc,S(i(t)(`noDataUsageYet`)),1)])):(D(!0),s(o,{key:1},_(i(te),e=>(D(),s(o,{key:e.type===`group`?`group-${e.key}`:`data-${e.original.sourceIP}`},[e.type===`group`?(D(),s(`tr`,{key:0,class:`cursor-pointer bg-base-200 hover:bg-base-300`,onClick:t=>M(e.key)},[a(`td`,dc,[a(`div`,fc,[a(`span`,pc,S(i(t)(`ipAddress`))+`: `+S(e.key),1),a(`span`,mc,` (`+S(e.subRows.length)+` `+S(e.subRows.length===1?i(t)(`devices`).slice(0,-1):i(t)(`devices`))+`) `,1),a(`span`,hc,S(i(t)(`total`))+`: `+S(E(e.subRows.reduce((e,t)=>e+t.total,0))),1),i(C)[e.key]?(D(),c(i(R),{key:0,size:14,class:`ml-auto`})):(D(),c(i(I),{key:1,size:14,class:`ml-auto`}))])])],8,uc)):e.type===`data`?(D(),s(`tr`,{key:1,class:`hover`,style:d({paddingLeft:`${e.depth*1}rem`})},[a(`td`,gc,S(e.original.sourceIP),1),a(`td`,{class:`text-base-content`,title:e.original.firstSeen?i(ye)(e.original.firstSeen,e.original.lastSeen,i(u)):`-`},[a(`div`,vc,[f(i(L),{size:14,class:`text-base-content/60`}),a(`span`,yc,S(e.original.firstSeen?i(_e)(e.original.firstSeen,e.original.lastSeen):`-`),1)])],8,_c),a(`td`,bc,S(E(e.original.upload)),1),a(`td`,xc,S(E(e.original.download)),1),a(`td`,Sc,S(E(e.original.total)),1),a(`td`,null,[a(`button`,{class:`btn text-error btn-ghost btn-xs hover:bg-error/20`,title:i(t)(`remove`),onClick:p(t=>F(e.original.sourceIP),[`stop`])},[f(i(ue),{size:14})],8,Cc)])],4)):T(``,!0)],64))),128))])])]),a(`div`,wc,[i(N).length>0?(D(),s(`div`,Tc,[a(`div`,Ec,[a(`div`,Dc,S(i(t)(`sortBy`)),1),a(`div`,Oc,[a(`button`,{class:n([`btn flex-1 btn-xs`,i(v)===`ip`?`btn-primary`:`btn-ghost`]),onClick:r[8]||=e=>O(`ip`)},[h(S(i(t)(`ipShort`))+` `,1),i(v)===`ip`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:12})):i(v)===`ip`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:12})):T(``,!0)],2),a(`button`,{class:n([`btn flex-1 btn-xs`,i(v)===`duration`?`btn-primary`:`btn-ghost`]),onClick:r[9]||=e=>O(`duration`)},[h(S(i(t)(`duration`))+` `,1),i(v)===`duration`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:12})):i(v)===`duration`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:12})):T(``,!0)],2),a(`button`,{class:n([`btn flex-1 btn-xs`,i(v)===`upload`?`btn-primary`:`btn-ghost`]),onClick:r[10]||=e=>O(`upload`)},[h(S(i(t)(`upload`))+` `,1),i(v)===`upload`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:12})):i(v)===`upload`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:12})):T(``,!0)],2),a(`button`,{class:n([`btn flex-1 btn-xs`,i(v)===`download`?`btn-primary`:`btn-ghost`]),onClick:r[11]||=e=>O(`download`)},[h(S(i(t)(`download`))+` `,1),i(v)===`download`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:12})):i(v)===`download`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:12})):T(``,!0)],2),a(`button`,{class:n([`btn flex-1 btn-xs`,i(v)===`total`?`btn-primary`:`btn-ghost`]),onClick:r[12]||=e=>O(`total`)},[h(S(i(t)(`total`))+` `,1),i(v)===`total`&&i(y)===`asc`?(D(),c(i(I),{key:0,size:12})):i(v)===`total`&&i(y)===`desc`?(D(),c(i(R),{key:1,size:12})):T(``,!0)],2)])]),a(`div`,kc,[a(`div`,Ac,S(i(t)(`groupBy`)),1),a(`div`,jc,[a(`button`,{class:n([`btn flex-1 btn-xs`,i(x)===`ip`?`btn-primary`:`btn-ghost`]),onClick:r[13]||=e=>j(`ip`)},[h(S(i(t)(`ipShort`))+` `,1),i(x)===`ip`?(D(),c(i(de),{key:0,size:12})):(D(),c(i(le),{key:1,size:12}))],2)])])])):T(``,!0),i(N).length===0?(D(),s(`div`,Mc,S(i(t)(`noDataUsageYet`)),1)):T(``,!0),(D(!0),s(o,null,_(i(te),e=>(D(),s(o,{key:e.type===`group`?`group-${e.key}`:`data-${e.original.sourceIP}`},[e.type===`group`?(D(),s(`div`,{key:0,class:`card cursor-pointer bg-primary/20 shadow-md`,onClick:t=>M(e.key)},[a(`div`,Pc,[a(`div`,Fc,[a(`div`,null,[a(`div`,Ic,S(i(t)(`ipAddress`))+`: `+S(e.key),1),a(`div`,Lc,S(e.subRows.length)+` `+S(e.subRows.length===1?i(t)(`devices`).slice(0,-1):i(t)(`devices`))+` · `+S(i(t)(`total`))+`: `+S(E(e.subRows.reduce((e,t)=>e+t.total,0))),1)]),i(C)[e.key]?(D(),c(i(R),{key:0,size:16})):(D(),c(i(I),{key:1,size:16}))])])],8,Nc)):e.type===`data`?(D(),s(`div`,{key:1,class:`card bg-base-200 shadow-md`,style:d({marginLeft:`${e.depth*1}rem`})},[a(`div`,Rc,[a(`div`,zc,[a(`div`,Bc,[a(`div`,Vc,S(i(t)(`ipAddress`)),1),a(`div`,Hc,S(e.original.sourceIP),1)]),a(`button`,{class:`btn btn-circle text-error btn-ghost btn-xs`,title:i(t)(`remove`),onClick:p(t=>F(e.original.sourceIP),[`stop`])},[f(i(ue),{size:16})],8,Uc)]),e.original.firstSeen?(D(),s(`div`,Wc,[a(`div`,Gc,S(i(t)(`timeRange`)),1),a(`div`,Kc,[f(i(L),{size:14,class:`text-base-content/60`}),a(`span`,null,S(i(_e)(e.original.firstSeen,e.original.lastSeen)),1)]),a(`div`,qc,S(i(ye)(e.original.firstSeen,e.original.lastSeen,i(u))),1)])):T(``,!0),r[14]||=a(`div`,{class:`divider my-2`},null,-1),a(`div`,Jc,[a(`div`,null,[a(`div`,Yc,S(i(t)(`upload`)),1),a(`div`,Xc,S(E(e.original.upload)),1)]),a(`div`,null,[a(`div`,Zc,S(i(t)(`download`)),1),a(`div`,Qc,S(E(e.original.download)),1)]),a(`div`,null,[a(`div`,$c,S(i(t)(`total`)),1),a(`div`,el,S(E(e.original.total)),1)])])])],4)):T(``,!0)],64))),128))])],64)):T(``,!0)])]))}}),nl=Object.assign(tl,{__name:`DataUsageTable`}),rl={class:`flex h-full flex-col gap-4 overflow-y-auto`},il={class:`stats grid w-full shrink-0 stats-vertical grid-cols-2 bg-primary shadow sm:grid-cols-3 xl:grid-cols-6`},al={key:0,class:`flex items-center justify-center gap-2 rounded-lg bg-base-200 px-4 py-2 text-sm`},ol={class:`text-base-content/60`},sl={class:`font-mono font-medium`},cl={class:`grid grid-cols-1 gap-4 lg:grid-cols-2 xl:grid-cols-3`},ll={class:`card h-72 bg-base-200 p-2 shadow-sm lg:h-80`},ul={class:`card h-72 bg-base-200 p-2 shadow-sm lg:h-80`},dl={class:`card h-72 bg-base-200 p-2 shadow-sm lg:h-80`},fl={class:`card h-72 bg-base-200 p-2 shadow-sm lg:h-80`},pl={class:`card h-72 bg-base-200 p-2 shadow-sm lg:h-80`},ml={class:`card h-72 bg-base-200 p-2 shadow-sm lg:h-80`},hl={class:`grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3`},gl={class:`card bg-base-200 p-4 shadow-sm`},_l={class:`font-semibold`},vl={class:`btn btn-circle btn-ghost btn-xs`},yl=e({__name:`overview`,setup(e){let{t:r}=k();x({title:m(()=>r(`overview`))});let o=N(),l=he(),u=t(),d=M(),p=e=>z(e).toString(),g=m(()=>(d.curTheme,be())),_=A(),b=A(),C=A(),w=m(()=>[{name:r(`down`),color:g.value.seriesColors[0]},{name:r(`up`),color:g.value.seriesColors[1]}]),ee=m(()=>[[...o.trafficChartHistory.download],[...o.trafficChartHistory.upload]]),E=m(()=>[{name:r(`memory`),color:g.value.seriesColors[2]}]),O=m(()=>[[...o.memoryChartHistory]]),j=m(()=>[{name:r(`activeConnections`),color:g.value.seriesColors[3]}]),te=m(()=>[[...o.connectionCountHistory]]),P=m(()=>({chart:{type:`pie`,backgroundColor:g.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:r(`flow`),style:{color:g.value.textColor}},tooltip:{pointFormatter(){let e=this.y||0,t=this.percentage||0;return`${this.name}<br/>${z(e).toString()} (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:g.value.textColor},itemHoverStyle:{color:g.value.textColorHover}},series:[{type:`pie`,name:r(`flow`),data:[{name:r(`downloadTotal`),y:l.latestConnectionMsg?.downloadTotal||0,color:g.value.seriesColors[0]},{name:r(`uploadTotal`),y:l.latestConnectionMsg?.uploadTotal||0,color:g.value.seriesColors[1]}]}]})),ne=m(()=>{let e=l.activeConnections,t=0,n=0,i=0;return e.forEach(e=>{let r=e.metadata.network?.toLowerCase()||``;r===`tcp`?t++:r===`udp`?n++:i++}),{chart:{type:`pie`,backgroundColor:g.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:r(`networkTypes`),style:{color:g.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:g.value.textColor},itemHoverStyle:{color:g.value.textColorHover}},series:[{type:`pie`,name:r(`networkTypes`),data:[{name:r(`tcp`),y:t,color:g.value.seriesColors[0]},{name:r(`udp`),y:n,color:g.value.seriesColors[1]},...i>0?[{name:r(`other`),y:i,color:g.value.seriesColors[2]}]:[]]}]}}),re=m(()=>{let e=l.speedGroupByName,t=Object.entries(e).sort(([,e],[,t])=>t-e).slice(0,5),n=t.map(([e])=>e),i=t.map(([,e])=>e);return{chart:{type:`bar`,backgroundColor:g.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:r(`topProxies`),style:{color:g.value.textColor}},xAxis:{categories:n,labels:{style:{color:g.value.textColor}},lineColor:g.value.lineColor},yAxis:{title:{text:void 0},labels:{style:{color:g.value.textColor},formatter(){return`${z(this.value).toString()}/s`}},gridLineColor:g.value.gridLineColor,min:0},tooltip:{formatter(){return`<b>${n[this.x]||this.x}</b><br/>${z(this.y).toString()}/s`}},legend:{enabled:!1},plotOptions:{bar:{dataLabels:{enabled:!1},animation:!1}},series:[{type:`bar`,name:r(`traffic`),data:i,color:g.value.seriesColors[0]}]}}),I=o.trafficChartHistory.download.at(-1)?.[0]??0,ie=o.memoryChartHistory.at(-1)?.[0]??0,ae=o.connectionCountHistory.at(-1)?.[0]??0;return v(()=>o.latestTraffic,e=>{if(e&&_.value?.chartRef){let t=Date.now();t>I&&(_.value.chartRef.addPoints([{seriesIndex:0,time:t,value:e.down},{seriesIndex:1,time:t,value:e.up}]),I=t)}}),v(()=>o.latestMemory?.inuse,e=>{if(e&&b.value?.chartRef){let t=Date.now();t>ie&&(b.value.chartRef.addPoint(0,t,e),ie=t)}}),v(()=>l.latestConnectionMsg?.connections?.length,e=>{if(e!==void 0&&C.value?.chartRef){let t=Date.now();t>ae&&(C.value.chartRef.addPoint(0,t,e),ae=t)}}),(e,t)=>{let m=Te,g=Ae,v=Fe,x=Ct,k=Ht,A=Es,M=nl;return D(),s(`div`,rl,[a(`div`,il,[f(m,{label:i(r)(`upload`)},{default:y(()=>[h(S(p(i(o).latestTraffic?.up||0))+`/s `,1)]),_:1},8,[`label`]),f(m,{label:i(r)(`download`)},{default:y(()=>[h(S(p(i(o).latestTraffic?.down||0))+`/s `,1)]),_:1},8,[`label`]),f(m,{label:i(r)(`uploadTotal`)},{default:y(()=>[h(S(p(i(l).latestConnectionMsg?.uploadTotal||0)),1)]),_:1},8,[`label`]),f(m,{label:i(r)(`downloadTotal`)},{default:y(()=>[h(S(p(i(l).latestConnectionMsg?.downloadTotal||0)),1)]),_:1},8,[`label`]),f(m,{label:i(r)(`activeConnections`)},{default:y(()=>[h(S(i(l).latestConnectionMsg?.connections?.length||0),1)]),_:1},8,[`label`]),f(m,{label:i(r)(`memoryUsage`)},{default:y(()=>[h(S(p(i(o).latestMemory?.inuse||0)),1)]),_:1},8,[`label`])]),i(u).currentEndpoint?.url?(D(),s(`div`,al,[a(`span`,ol,S(i(r)(`connectedTo`))+`:`,1),a(`span`,sl,S(i(u).currentEndpoint?.url),1)])):T(``,!0),a(`div`,cl,[a(`div`,ll,[f(g,{ref_key:`trafficChartRef`,ref:_,title:i(r)(`traffic`),"series-config":i(w),"initial-data":i(ee),"is-loading":!i(o).latestTraffic},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),a(`div`,ul,[f(v,{options:i(P),"is-loading":!i(l).latestConnectionMsg?.connections?.length},null,8,[`options`,`is-loading`])]),a(`div`,dl,[f(g,{ref_key:`memoryChartRef`,ref:b,title:i(r)(`memory`),"series-config":i(E),"initial-data":i(O),"is-loading":!i(o).latestMemory},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),a(`div`,fl,[f(g,{ref_key:`connectionsChartRef`,ref:C,title:i(r)(`connectionsChart`),"series-config":i(j),"initial-data":i(te),"is-loading":!i(l).latestConnectionMsg?.connections?.length,"value-mode":`number`},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),a(`div`,pl,[f(v,{options:i(ne),"is-loading":!i(l).latestConnectionMsg?.connections?.length},null,8,[`options`,`is-loading`])]),a(`div`,ml,[f(v,{options:i(re),"is-loading":Object.keys(i(l).speedGroupByName).length===0},null,8,[`options`,`is-loading`])])]),a(`div`,hl,[f(x),f(k)]),a(`div`,gl,[a(`div`,{class:`flex cursor-pointer items-center justify-between`,onClick:t[0]||=e=>i(d).showNetworkTopology=!i(d).showNetworkTopology},[a(`h3`,_l,S(i(r)(`networkTopology`)),1),a(`button`,vl,[f(i(F),{class:n([`h-5 w-5 transition-transform`,{"rotate-180":i(d).showNetworkTopology}])},null,8,[`class`])])]),i(d).showNetworkTopology?(D(),c(A,{key:0,class:`mt-4`})):T(``,!0)]),f(M)])}}});export{yl as default};