zen-gitsync 2.19.3 → 2.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/package.json +1 -1
  2. package/src/aiCommit.js +1 -28
  3. package/src/cli/ai/tools.js +35 -2
  4. package/src/cli/ai/tools.test.js +30 -0
  5. package/src/config.js +35 -3
  6. package/src/peer/store.js +17 -2
  7. package/src/ui/public/assets/AgentView-B4p1C7vE.js +15 -0
  8. package/src/ui/public/assets/{AgentView-DzYcmZ80.css → AgentView-BIehoDwa.css} +1 -1
  9. package/src/ui/public/assets/{AppVersionBadge-Clw0AO_V.js → AppVersionBadge-B-6BT87B.js} +2 -2
  10. package/src/ui/public/assets/{BranchSelector-WG_dzJ1z.js → BranchSelector-C1Kct7NG.js} +1 -1
  11. package/src/ui/public/assets/{CommitForm-Bai-xBwV.js → CommitForm-DoC-6rft.js} +2 -2
  12. package/src/ui/public/assets/{CommonDialog-DTWEVQih.js → CommonDialog-D8XaOcNX.js} +1 -1
  13. package/src/ui/public/assets/{EditorView-6KTavOcm.css → EditorView-B666I1pz.css} +1 -1
  14. package/src/ui/public/assets/EditorView-DrhO2YSI.js +1 -0
  15. package/src/ui/public/assets/{FlowExecutionViewer-D_rQjstg.js → FlowExecutionViewer-CKMH34Br.js} +1 -1
  16. package/src/ui/public/assets/{FlowOrchestrationWorkspace-B982yExF.js → FlowOrchestrationWorkspace-CAFDGDim.js} +1 -1
  17. package/src/ui/public/assets/{LogList-BG9RlR5V.js → LogList-DB6A2R6o.js} +3 -3
  18. package/src/ui/public/assets/{MindmapView-CfF3dnO9.js → MindmapView-C4L5u3S9.js} +1 -1
  19. package/src/ui/public/assets/{MonitorView-C6NkhaTu.js → MonitorView-BjUS__Ze.js} +1 -1
  20. package/src/ui/public/assets/ProjectManagerView-CWX1sSgn.js +1 -0
  21. package/src/ui/public/assets/{ProjectStartupButton-PZDHhzaY.js → ProjectStartupButton-DdMFVPYI.js} +1 -1
  22. package/src/ui/public/assets/{RemoteManagerDialog-CGbTl8Nf.js → RemoteManagerDialog-fSp9IiCs.js} +1 -1
  23. package/src/ui/public/assets/{RemoteRepoCard-DIbrkSSq.js → RemoteRepoCard-Bs01mtmx.js} +1 -1
  24. package/src/ui/public/assets/{SourceMapView-dmFzB7XF.js → SourceMapView-tdQu2qjL.js} +2 -2
  25. package/src/ui/public/assets/{SvgIcon-DqzYKNo_.js → SvgIcon-D5bT7QEj.js} +1 -1
  26. package/src/ui/public/assets/{UserInputNode-DzWmUMwd.js → UserInputNode-DbP3PjQX.js} +1 -1
  27. package/src/ui/public/assets/WorkbenchView-Ahoq6RyI.js +6 -0
  28. package/src/ui/public/assets/{WorkbenchView-sHes69m3.css → WorkbenchView-BcG-GrWp.css} +1 -1
  29. package/src/ui/public/assets/{_plugin-vue_export-helper-DlU9e1mk.js → _plugin-vue_export-helper-BRUY9DoQ.js} +3 -3
  30. package/src/ui/public/assets/clipboard-DTy2aO_N.js +1 -0
  31. package/src/ui/public/assets/{configStore-BNFH8Gjg.js → configStore-1qv5tdrb.js} +1 -1
  32. package/src/ui/public/assets/{dagre-DYyfV0Dg.js → dagre-DcqvOjeb.js} +3 -3
  33. package/src/ui/public/assets/{element-plus-CkMnLwcU.js → element-plus-D8LubGQe.js} +1 -1
  34. package/src/ui/public/assets/{flow-mindmap-DCYEzp78.js → flow-mindmap-DwG2RDXe.js} +1 -1
  35. package/src/ui/public/assets/index-C4masR7z.js +58 -0
  36. package/src/ui/public/assets/index-D9Bza0ac.css +1 -0
  37. package/src/ui/public/assets/{monaco-DpvA3Mh0.js → monaco-CuYd4DgX.js} +1 -1
  38. package/src/ui/public/assets/{office-docx-DoXwhA36.js → office-docx-C4TeE_9M.js} +1 -1
  39. package/src/ui/public/assets/{office-excel-B7HFZyu_.js → office-excel-C7zhprUF.js} +1 -1
  40. package/src/ui/public/assets/{office-pptx-3hKSBbWe.js → office-pptx-DYLwEk0L.js} +1 -1
  41. package/src/ui/public/assets/{relativeTime-DVKGdz_G.js → relativeTime-nh6F0rop.js} +1 -1
  42. package/src/ui/public/assets/taskExecutionExport-PEcuZQo1.js +15 -0
  43. package/src/ui/public/assets/useWorkbenchProjects-CDT0eWCI.js +1 -0
  44. package/src/ui/public/assets/{vendor-2SbNafIY.css → vendor-CHUY5AXG.css} +1 -1
  45. package/src/ui/public/assets/{vendor-LCbsk86d.js → vendor-CUQALT_x.js} +5 -5
  46. package/src/ui/public/assets/{vue-flow-D7nVv56X.js → vue-flow-BEVz6_7M.js} +1 -1
  47. package/src/ui/public/index.html +13 -13
  48. package/src/ui/server/routes/codeAnalysis.js +4 -2
  49. package/src/ui/server/routes/config.js +20 -27
  50. package/src/ui/server/routes/git/aiDiffSummary.js +3 -1
  51. package/src/ui/server/routes/npm.js +4 -44
  52. package/src/ui/server/routes/peerSettings.js +21 -2
  53. package/src/ui/server/routes/projectStartupAi.js +3 -1
  54. package/src/ui/server/routes/projectStartupAi.test.js +7 -4
  55. package/src/ui/server/routes/recentDirectoriesAiSummary.js +3 -1
  56. package/src/ui/server/routes/recentDirectoriesAiSummary.test.js +4 -2
  57. package/src/ui/server/routes/workbench/agentRoutes.js +6 -1
  58. package/src/ui/server/routes/workbench/agentRoutes.test.js +57 -0
  59. package/src/ui/server/routes/workbench/dispatchInstruction.js +4 -2
  60. package/src/ui/server/routes/workbench/imageDescribe.js +4 -2
  61. package/src/ui/server/routes/workbench/index.js +3 -1
  62. package/src/ui/server/routes/workbench/scheduler.js +3 -1
  63. package/src/utils/skipPatterns.js +74 -0
  64. package/src/ui/public/assets/AgentView-DdZB5M3K.js +0 -15
  65. package/src/ui/public/assets/EditorView-DYznT1et.js +0 -1
  66. package/src/ui/public/assets/ProjectManagerView-DfFtI8I9.js +0 -1
  67. package/src/ui/public/assets/WorkbenchView-oGjBJIT6.js +0 -6
  68. package/src/ui/public/assets/index-BVe9erMn.css +0 -1
  69. package/src/ui/public/assets/index-Bz3MwUuu.js +0 -58
  70. package/src/ui/public/assets/taskExecutionExport-0qwbiZRh.js +0 -15
  71. package/src/ui/public/assets/useWorkbenchProjects-flU0ll2K.js +0 -1
@@ -1,4 +1,4 @@
1
- import{$n as e,An as t,Ar as n,Bn as r,Cn as i,En as a,Gn as o,Gr as s,Hn as c,In as l,Jn as u,Jr as d,Kn as f,Ln as p,Mn as m,Nn as h,Pn as g,Qn as _,Rn as v,Sn as y,Sr as b,Tn as x,Un as S,Ur as C,Wr as w,Xn as T,Yn as E,Zn as D,_n as O,_r as k,br as A,cr as j,dr as M,fr as N,gr as P,hr as F,ir as I,kn as L,lr as R,mr as ee,nr as z,or as B,pr as V,qn as H,rr as te,sr as U,tr as ne,wn as W,xn as G,xr as K,yr as q,zn as re}from"./element-plus-CkMnLwcU.js";R(),l(),n();function ie(e){return j()?(V(e),!0):!1}function ae(e){return typeof e==`function`?e():b(e)}var oe=typeof window<`u`&&typeof document<`u`,se=e=>e!==void 0,ce=Object.prototype.toString,le=e=>ce.call(e)===`[object Object]`,ue=()=>{};function de(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}var fe=e=>e();function pe(e=fe){let t=P(!0);function n(){t.value=!1}function r(){t.value=!0}return{isActive:F(t),pause:n,resume:r,eventFilter:(...n)=>{t.value&&e(...n)}}}function me(e,t=!1,n=`Timeout`){return new Promise((r,i)=>{setTimeout(t?()=>i(n):r,e)})}function he(e,t,n={}){let{eventFilter:r=fe,...i}=n;return z(e,de(r,t),i)}function ge(e,t,n={}){let{eventFilter:r,...i}=n,{eventFilter:a,pause:o,resume:s,isActive:c}=pe(r);return{stop:he(e,t,{...i,eventFilter:a}),pause:o,resume:s,isActive:c}}function _e(e,t={}){if(!M(e))return A(e);let n=Array.isArray(e.value)?Array.from({length:e.value.length}):{};for(let r in e.value)n[r]=B(()=>({get(){return e.value[r]},set(n){if(ae(t.replaceRef)??!0){if(Array.isArray(e.value)){let t=[...e.value];t[r]=n,e.value=t}else{let t={...e.value,[r]:n};Object.setPrototypeOf(t,Object.getPrototypeOf(e.value)),e.value=t}}else e.value[r]=n}}));return n}function ve(e,t=!1){function n(n,{flush:r=`sync`,deep:i=!1,timeout:a,throwOnTimeout:o}={}){let s=null,c=[new Promise(a=>{s=z(e,e=>{n(e)!==t&&(s?.(),a(e))},{flush:r,deep:i,immediate:!0})})];return a!=null&&c.push(me(a,o).then(()=>ae(e)).finally(()=>s?.())),Promise.race(c)}function r(r,i){if(!M(r))return n(e=>e===r,i);let{flush:a=`sync`,deep:o=!1,timeout:s,throwOnTimeout:c}=i??{},l=null,u=[new Promise(n=>{l=z([e,r],([e,r])=>{t!==(e===r)&&(l?.(),n(e))},{flush:a,deep:o,immediate:!0})})];return s!=null&&u.push(me(s,c).then(()=>ae(e)).finally(()=>(l?.(),ae(e)))),Promise.race(u)}function i(e){return n(e=>!!e,e)}function a(e){return r(null,e)}function o(e){return r(void 0,e)}function s(e){return n(Number.isNaN,e)}function c(e,t){return n(t=>{let n=Array.from(t);return n.includes(e)||n.includes(ae(e))},t)}function l(e){return u(1,e)}function u(e=1,t){let r=-1;return n(()=>(r+=1,r>=e),t)}return Array.isArray(ae(e))?{toMatch:n,toContains:c,changed:l,changedTimes:u,get not(){return ve(e,!t)}}:{toMatch:n,toBe:r,toBeTruthy:i,toBeNull:a,toBeNaN:s,toBeUndefined:o,changed:l,changedTimes:u,get not(){return ve(e,!t)}}}function ye(e){return ve(e)}function be(e){let t=ae(e);return t?.$el??t}var xe=oe?window:void 0;function Se(...e){let t,n,r,i;if(typeof e[0]==`string`||Array.isArray(e[0])?([n,r,i]=e,t=xe):[t,n,r,i]=e,!t)return ue;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);let a=[],o=()=>{a.forEach(e=>e()),a.length=0},s=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),c=z(()=>[be(t),ae(i)],([e,t])=>{if(o(),!e)return;let i=le(t)?{...t}:t;a.push(...n.flatMap(t=>r.map(n=>s(e,t,n,i))))},{immediate:!0,flush:`post`}),l=()=>{c(),o()};return ie(l),l}function Ce(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function we(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=xe,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=Ce(t);return Se(i,a,e=>{e.repeat&&ae(s)||c(e)&&n(e)},o)}function Te(e){return JSON.parse(JSON.stringify(e))}function Ee(e,t,n,i={}){let{clone:a=!1,passive:o=!1,eventName:s,deep:c=!1,defaultValue:l,shouldEmit:u}=i,d=h(),f=n||d?.emit||(d?.$emit)?.bind(d)||(d?.proxy?.$emit)?.bind(d?.proxy),p=s;t||=`modelValue`,p||=`update:${t.toString()}`;let m=e=>a?typeof a==`function`?a(e):Te(e):e,g=()=>se(e[t])?m(e[t]):l,_=e=>{u?u(e)&&f(p,e):f(p,e)};if(o){let n=g(),i=P(n),a=!1;return z(()=>e[t],e=>{a||(a=!0,i.value=m(e),r(()=>a=!1))}),z(i,n=>{!a&&(n!==e[t]||c)&&_(n)},{deep:c}),i}return G({get(){return g()},set(e){_(e)}})}var De={value:()=>{}};function Oe(){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 ke(n)}function ke(e){this._=e}function Ae(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}})}ke.prototype=Oe.prototype={constructor:ke,on:function(e,t){var n=this._,r=Ae(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=je(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]=Me(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Me(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 ke(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 je(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Me(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=De,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Ne=`http://www.w3.org/1999/xhtml`,Pe={svg:`http://www.w3.org/2000/svg`,xhtml:Ne,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function Fe(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Pe.hasOwnProperty(t)?{space:Pe[t],local:e}:e}function Ie(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ne&&t.documentElement.namespaceURI===Ne?t.createElement(e):t.createElementNS(n,e)}}function Le(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Re(e){var t=Fe(e);return(t.local?Le:Ie)(t)}function ze(){}function Be(e){return e==null?ze:function(){return this.querySelector(e)}}function Ve(e){typeof e!=`function`&&(e=Be(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 An(r,this._parents)}function He(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Ue(){return[]}function We(e){return e==null?Ue:function(){return this.querySelectorAll(e)}}function Ge(e){return function(){return He(e.apply(this,arguments))}}function Ke(e){e=typeof e==`function`?Ge(e):We(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 An(r,i)}function qe(e){return function(){return this.matches(e)}}function Je(e){return function(t){return t.matches(e)}}var Ye=Array.prototype.find;function Xe(e){return function(){return Ye.call(this.children,e)}}function Ze(){return this.firstElementChild}function Qe(e){return this.select(e==null?Ze:Xe(typeof e==`function`?e:Je(e)))}var $e=Array.prototype.filter;function et(){return Array.from(this.children)}function tt(e){return function(){return $e.call(this.children,e)}}function nt(e){return this.selectAll(e==null?et:tt(typeof e==`function`?e:Je(e)))}function rt(e){typeof e!=`function`&&(e=qe(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 An(r,this._parents)}function it(e){return Array(e.length)}function at(){return new An(this._enter||this._groups.map(it),this._parents)}function ot(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}ot.prototype={constructor:ot,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 st(e){return function(){return e}}function ct(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 ot(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function lt(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 ot(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function ut(e){return e.__data__}function dt(e,t){if(!arguments.length)return Array.from(this,ut);var n=t?lt:ct,r=this._parents,i=this._groups;typeof e!=`function`&&(e=st(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=ft(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 An(o,r),o._enter=s,o._exit=c,o}function ft(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function pt(){return new An(this._exit||this._groups.map(it),this._parents)}function mt(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 ht(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 An(s,this._parents)}function gt(){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 _t(e){e||=vt;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 An(i,this._parents).order()}function vt(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function yt(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function bt(){return Array.from(this)}function xt(){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 St(){let e=0;for(let t of this)++e;return e}function Ct(){return!this.node()}function wt(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 Tt(e){return function(){this.removeAttribute(e)}}function Et(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Dt(e,t){return function(){this.setAttribute(e,t)}}function Ot(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function kt(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function At(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 jt(e,t){var n=Fe(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?Et:Tt:typeof t==`function`?n.local?At:kt:n.local?Ot:Dt)(n,t))}function Mt(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Nt(e){return function(){this.style.removeProperty(e)}}function Pt(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ft(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function It(e,t,n){return arguments.length>1?this.each((t==null?Nt:typeof t==`function`?Ft:Pt)(e,t,n??``)):Lt(this.node(),e)}function Lt(e,t){return e.style.getPropertyValue(t)||Mt(e).getComputedStyle(e,null).getPropertyValue(t)}function Rt(e){return function(){delete this[e]}}function zt(e,t){return function(){this[e]=t}}function Bt(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Vt(e,t){return arguments.length>1?this.each((t==null?Rt:typeof t==`function`?Bt:zt)(e,t)):this.node()[e]}function Ht(e){return e.trim().split(/^|\s+/)}function Ut(e){return e.classList||new Wt(e)}function Wt(e){this._node=e,this._names=Ht(e.getAttribute(`class`)||``)}Wt.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 Gt(e,t){for(var n=Ut(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function Kt(e,t){for(var n=Ut(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function qt(e){return function(){Gt(this,e)}}function Jt(e){return function(){Kt(this,e)}}function Yt(e,t){return function(){(t.apply(this,arguments)?Gt:Kt)(this,e)}}function Xt(e,t){var n=Ht(e+``);if(arguments.length<2){for(var r=Ut(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?Yt:t?qt:Jt)(n,t))}function Zt(){this.textContent=``}function Qt(e){return function(){this.textContent=e}}function $t(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function en(e){return arguments.length?this.each(e==null?Zt:(typeof e==`function`?$t:Qt)(e)):this.node().textContent}function tn(){this.innerHTML=``}function nn(e){return function(){this.innerHTML=e}}function rn(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function an(e){return arguments.length?this.each(e==null?tn:(typeof e==`function`?rn:nn)(e)):this.node().innerHTML}function on(){this.nextSibling&&this.parentNode.appendChild(this)}function sn(){return this.each(on)}function cn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ln(){return this.each(cn)}function un(e){var t=typeof e==`function`?e:Re(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function dn(){return null}function fn(e,t){var n=typeof e==`function`?e:Re(e),r=t==null?dn:typeof t==`function`?t:Be(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function pn(){var e=this.parentNode;e&&e.removeChild(this)}function mn(){return this.each(pn)}function hn(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function gn(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function _n(e){return this.select(e?gn:hn)}function vn(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function yn(e){return function(t){e.call(this,t,this.__data__)}}function bn(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 xn(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 Sn(e,t,n){return function(){var r=this.__on,i,a=yn(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 Cn(e,t,n){var r=bn(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?Sn:xn,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function wn(e,t,n){var r=Mt(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 Tn(e,t){return function(){return wn(this,e,t)}}function En(e,t){return function(){return wn(this,e,t.apply(this,arguments))}}function Dn(e,t){return this.each((typeof t==`function`?En:Tn)(e,t))}function*On(){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 kn=[null];function An(e,t){this._groups=e,this._parents=t}function jn(){return new An([[document.documentElement]],kn)}function Mn(){return this}An.prototype=jn.prototype={constructor:An,select:Ve,selectAll:Ke,selectChild:Qe,selectChildren:nt,filter:rt,data:dt,enter:at,exit:pt,join:mt,merge:ht,selection:Mn,order:gt,sort:_t,call:yt,nodes:bt,node:xt,size:St,empty:Ct,each:wt,attr:jt,style:It,property:Vt,classed:Xt,text:en,html:an,raise:sn,lower:ln,append:un,insert:fn,remove:mn,clone:_n,datum:vn,on:Cn,dispatch:Dn,[Symbol.iterator]:On};function Nn(e){return typeof e==`string`?new An([[document.querySelector(e)]],[document.documentElement]):new An([[e]],kn)}function Pn(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Fn(e,t){if(e=Pn(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var In={passive:!1},Ln={capture:!0,passive:!1};function Rn(e){e.stopImmediatePropagation()}function zn(e){e.preventDefault(),e.stopImmediatePropagation()}function Bn(e){var t=e.document.documentElement,n=Nn(e).on(`dragstart.drag`,zn,Ln);`onselectstart`in t?n.on(`selectstart.drag`,zn,Ln):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function Vn(e,t){var n=e.document.documentElement,r=Nn(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,zn,Ln),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var Hn=e=>()=>e;function Un(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}Un.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Wn(e){return!e.ctrlKey&&!e.button}function Gn(){return this.parentNode}function Kn(e,t){return t??{x:e.x,y:e.y}}function qn(){return navigator.maxTouchPoints||`ontouchstart`in this}function Jn(){var e=Wn,t=Gn,n=Kn,r=qn,i={},a=Oe(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,In).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!u&&e.call(this,n,r)){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(Nn(n.view).on(`mousemove.drag`,m,Ln).on(`mouseup.drag`,h,Ln),Bn(n.view),Rn(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(zn(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){Nn(e.view).on(`mousemove.drag mouseup.drag`,null),Vn(e.view,l),zn(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r))for(var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s=0,c;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(Rn(n),c(`start`,n,i[s]))}function _(e){for(var t=e.changedTouches,n=t.length,r=0,a;r<n;++r)(a=i[t[r].identifier])&&(zn(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(Rn(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=Fn(l||r,t),p,m,h;if((h=n.call(e,new Un(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=Fn(l||a,t),_=o}u.call(r,e,new Un(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:Hn(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:Hn(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:Hn(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:Hn(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function Yn(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Xn(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Zn(){}var Qn=.7,$n=1/Qn,er=`\\s*([+-]?\\d+)\\s*`,tr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,nr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,rr=/^#([0-9a-f]{3,8})$/,ir=RegExp(`^rgb\\(${er},${er},${er}\\)$`),ar=RegExp(`^rgb\\(${nr},${nr},${nr}\\)$`),or=RegExp(`^rgba\\(${er},${er},${er},${tr}\\)$`),sr=RegExp(`^rgba\\(${nr},${nr},${nr},${tr}\\)$`),cr=RegExp(`^hsl\\(${tr},${nr},${nr}\\)$`),lr=RegExp(`^hsla\\(${tr},${nr},${nr},${tr}\\)$`),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};Yn(Zn,hr,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:dr,formatHex:dr,formatHex8:fr,formatHsl:pr,formatRgb:mr,toString:mr});function dr(){return this.rgb().formatHex()}function fr(){return this.rgb().formatHex8()}function pr(){return Or(this).formatHsl()}function mr(){return this.rgb().formatRgb()}function hr(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=rr.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?gr(t):n===3?new br(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?_r(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?_r(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=ir.exec(e))?new br(t[1],t[2],t[3],1):(t=ar.exec(e))?new br(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=or.exec(e))?_r(t[1],t[2],t[3],t[4]):(t=sr.exec(e))?_r(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=cr.exec(e))?Dr(t[1],t[2]/100,t[3]/100,1):(t=lr.exec(e))?Dr(t[1],t[2]/100,t[3]/100,t[4]):ur.hasOwnProperty(e)?gr(ur[e]):e===`transparent`?new br(NaN,NaN,NaN,0):null}function gr(e){return new br(e>>16&255,e>>8&255,e&255,1)}function _r(e,t,n,r){return r<=0&&(e=t=n=NaN),new br(e,t,n,r)}function vr(e){return e instanceof Zn||(e=hr(e)),e?(e=e.rgb(),new br(e.r,e.g,e.b,e.opacity)):new br}function yr(e,t,n,r){return arguments.length===1?vr(e):new br(e,t,n,r??1)}function br(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Yn(br,yr,Xn(Zn,{brighter(e){return e=e==null?$n:$n**+e,new br(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Qn:Qn**+e,new br(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new br(Tr(this.r),Tr(this.g),Tr(this.b),wr(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:xr,formatHex:xr,formatHex8:Sr,formatRgb:Cr,toString:Cr}));function xr(){return`#${Er(this.r)}${Er(this.g)}${Er(this.b)}`}function Sr(){return`#${Er(this.r)}${Er(this.g)}${Er(this.b)}${Er((isNaN(this.opacity)?1:this.opacity)*255)}`}function Cr(){let e=wr(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Tr(this.r)}, ${Tr(this.g)}, ${Tr(this.b)}${e===1?`)`:`, ${e})`}`}function wr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Tr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Er(e){return e=Tr(e),(e<16?`0`:``)+e.toString(16)}function Dr(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ar(e,t,n,r)}function Or(e){if(e instanceof Ar)return new Ar(e.h,e.s,e.l,e.opacity);if(e instanceof Zn||(e=hr(e)),!e)return new Ar;if(e instanceof Ar)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 Ar(o,s,c,e.opacity)}function kr(e,t,n,r){return arguments.length===1?Or(e):new Ar(e,t,n,r??1)}function Ar(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Yn(Ar,kr,Xn(Zn,{brighter(e){return e=e==null?$n:$n**+e,new Ar(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Qn:Qn**+e,new Ar(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 br(Nr(e>=240?e-240:e+120,i,r),Nr(e,i,r),Nr(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ar(jr(this.h),Mr(this.s),Mr(this.l),wr(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=wr(this.opacity);return`${e===1?`hsl(`:`hsla(`}${jr(this.h)}, ${Mr(this.s)*100}%, ${Mr(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function jr(e){return e=(e||0)%360,e<0?e+360:e}function Mr(e){return Math.max(0,Math.min(1,e||0))}function Nr(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 Pr=e=>()=>e;function Fr(e,t){return function(n){return e+n*t}}function Ir(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Lr(e){return(e=+e)==1?Rr:function(t,n){return n-t?Ir(t,n,e):Pr(isNaN(t)?n:t)}}function Rr(e,t){var n=t-e;return n?Fr(e,n):Pr(isNaN(e)?t:e)}var zr=function e(t){var n=Lr(t);function r(e,t){var r=n((e=yr(e)).r,(t=yr(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Rr(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 Br(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Vr(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Hr(e,t){for(var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o=0;o<r;++o)i[o]=Zr(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Ur(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Wr(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Gr(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Zr(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Kr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,qr=new RegExp(Kr.source,`g`);function Jr(e){return function(){return e}}function Yr(e){return function(t){return e(t)+``}}function Xr(e,t){var n=Kr.lastIndex=qr.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Kr.exec(e))&&(i=qr.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:Wr(r,i)})),n=qr.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Yr(c[0].x):Jr(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(``)})}function Zr(e,t){var n=typeof t,r;return t==null||n===`boolean`?Pr(t):(n===`number`?Wr:n===`string`?(r=hr(t))?(t=r,zr):Xr:t instanceof hr?zr:t instanceof Date?Ur:Vr(t)?Br:Array.isArray(t)?Hr:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Gr:Wr)(e,t)}var Qr=180/Math.PI,$r={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ei(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)*Qr,skewX:Math.atan(c)*Qr,scaleX:o,scaleY:s}}var ti;function ni(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?$r:ei(t.a,t.b,t.c,t.d,t.e,t.f)}function ri(e){return e==null||(ti||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),ti.setAttribute(`transform`,e),!(e=ti.transform.baseVal.consolidate()))?$r:(e=e.matrix,ei(e.a,e.b,e.c,e.d,e.e,e.f))}function ii(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:Wr(e,i)},{i:c-2,x:Wr(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:Wr(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:Wr(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:Wr(e,n)},{i:s-2,x:Wr(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 ai=ii(ni,`px, `,`px)`,`deg)`),oi=ii(ri,`, `,`)`,`)`),si=1e-12;function ci(e){return((e=Math.exp(e))+1/e)/2}function li(e){return((e=Math.exp(e))-1/e)/2}function ui(e){return((e=Math.exp(2*e))-1)/(e+1)}var di=function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<si)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=ci(y),c=s/(n*g)*(i*ui(t*r+y)-li(y));return[a+c*d,o+c*f,s*i/ci(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i}(Math.SQRT2,2,4),fi=0,pi=0,mi=0,hi=1e3,gi,_i,vi=0,yi=0,bi=0,xi=typeof performance==`object`&&performance.now?performance:Date,Si=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ci(){return yi||=(Si(wi),xi.now()+bi)}function wi(){yi=0}function Ti(){this._call=this._time=this._next=null}Ti.prototype=Ei.prototype={constructor:Ti,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Ci():+n)+(t==null?0:+t),!this._next&&_i!==this&&(_i?_i._next=this:gi=this,_i=this),this._call=e,this._time=n,ji()},stop:function(){this._call&&(this._call=null,this._time=1/0,ji())}};function Ei(e,t,n){var r=new Ti;return r.restart(e,t,n),r}function Di(){Ci(),++fi;for(var e=gi,t;e;)(t=yi-e._time)>=0&&e._call.call(void 0,t),e=e._next;--fi}function Oi(){yi=(vi=xi.now())+bi,fi=pi=0;try{Di()}finally{fi=0,Ai(),yi=0}}function ki(){var e=xi.now(),t=e-vi;t>hi&&(bi-=t,vi=e)}function Ai(){for(var e,t=gi,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:gi=n);_i=e,ji(r)}function ji(e){fi||(pi&&=clearTimeout(pi),e-yi>24?(e<1/0&&(pi=setTimeout(Oi,e-xi.now()-bi)),mi&&=clearInterval(mi)):(mi||=(vi=xi.now(),setInterval(ki,hi)),fi=1,Si(Oi)))}function Mi(e,t,n){var r=new Ti;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Ni=Oe(`start`,`end`,`cancel`,`interrupt`),Pi=[],Fi=0,Ii=1,Li=2,Ri=3,zi=4,Bi=5,Vi=6;function Hi(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Ki(e,n,{name:t,index:r,group:i,on:Ni,tween:Pi,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:Fi})}function Ui(e,t){var n=Gi(e,t);if(n.state>Fi)throw Error(`too late; already scheduled`);return n}function Wi(e,t){var n=Gi(e,t);if(n.state>Ri)throw Error(`too late; already running`);return n}function Gi(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Ki(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Ei(a,0,n.time);function a(e){n.state=Ii,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!==Ii)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===Ri)return Mi(o);f.state===zi?(f.state=Vi,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=Vi,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Mi(function(){n.state===Ri&&(n.state=zi,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=Li,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===Li){for(n.state=Ri,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=Bi,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===Bi&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=Vi,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function qi(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>Li&&r.state<Bi,r.state=Vi,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Ji(e){return this.each(function(){qi(this,e)})}function Yi(e,t){var n,r;return function(){var i=Wi(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 Xi(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Wi(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 Zi(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=Gi(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?Yi:Xi)(n,e,t))}function Qi(e,t,n){var r=e._id;return e.each(function(){var e=Wi(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return Gi(e,r).value[t]}}function $i(e,t){var n;return(typeof t==`number`?Wr:t instanceof hr?zr:(n=hr(t))?(t=n,zr):Xr)(e,t)}function ea(e){return function(){this.removeAttribute(e)}}function ta(e){return function(){this.removeAttributeNS(e.space,e.local)}}function na(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 ra(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 ia(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 aa(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 oa(e,t){var n=Fe(e),r=n===`transform`?oi:$i;return this.attrTween(e,typeof t==`function`?(n.local?aa:ia)(n,r,Qi(this,`attr.`+e,t)):t==null?(n.local?ta:ea)(n):(n.local?ra:na)(n,r,t))}function sa(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function ca(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function la(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&ca(e,i)),n}return i._value=t,i}function ua(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&sa(e,i)),n}return i._value=t,i}function da(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=Fe(e);return this.tween(n,(r.local?la:ua)(r,t))}function fa(e,t){return function(){Ui(this,e).delay=+t.apply(this,arguments)}}function pa(e,t){return t=+t,function(){Ui(this,e).delay=t}}function ma(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?fa:pa)(t,e)):Gi(this.node(),t).delay}function ha(e,t){return function(){Wi(this,e).duration=+t.apply(this,arguments)}}function ga(e,t){return t=+t,function(){Wi(this,e).duration=t}}function _a(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?ha:ga)(t,e)):Gi(this.node(),t).duration}function va(e,t){if(typeof t!=`function`)throw Error();return function(){Wi(this,e).ease=t}}function ya(e){var t=this._id;return arguments.length?this.each(va(t,e)):Gi(this.node(),t).ease}function ba(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Wi(this,e).ease=n}}function xa(e){if(typeof e!=`function`)throw Error();return this.each(ba(this._id,e))}function Sa(e){typeof e!=`function`&&(e=qe(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 Za(r,this._parents,this._name,this._id)}function Ca(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 Za(o,this._parents,this._name,this._id)}function wa(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 Ta(e,t,n){var r,i,a=wa(t)?Ui:Wi;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Ea(e,t){var n=this._id;return arguments.length<2?Gi(this.node(),n).on.on(e):this.each(Ta(n,e,t))}function Da(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Oa(){return this.on(`end.remove`,Da(this._id))}function ka(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Be(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,Hi(l[f],t,n,f,l,Gi(u,n)));return new Za(a,this._parents,t,n)}function Aa(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=We(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=Gi(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Hi(p,t,n,h,f,m);a.push(f),o.push(u)}return new Za(a,o,t,n)}var ja=jn.prototype.constructor;function Ma(){return new ja(this._groups,this._parents)}function Na(e,t){var n,r,i;return function(){var a=Lt(this,e),o=(this.style.removeProperty(e),Lt(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function Pa(e){return function(){this.style.removeProperty(e)}}function Fa(e,t,n){var r,i=n+``,a;return function(){var o=Lt(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Ia(e,t,n){var r,i,a;return function(){var o=Lt(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),Lt(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function La(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Wi(this,e),l=c.on,u=c.value[a]==null?s||=Pa(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Ra(e,t,n){var r=(e+=``)==`transform`?ai:$i;return t==null?this.styleTween(e,Na(e,r)).on(`end.style.`+e,Pa(e)):typeof t==`function`?this.styleTween(e,Ia(e,r,Qi(this,`style.`+e,t))).each(La(this._id,e)):this.styleTween(e,Fa(e,r,t),n).on(`end.style.`+e,null)}function za(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Ba(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&za(e,a,n)),r}return a._value=t,a}function Va(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,Ba(e,t,n??``))}function Ha(e){return function(){this.textContent=e}}function Ua(e){return function(){var t=e(this);this.textContent=t??``}}function Wa(e){return this.tween(`text`,typeof e==`function`?Ua(Qi(this,`text`,e)):Ha(e==null?``:e+``))}function Ga(e){return function(t){this.textContent=e.call(this,t)}}function Ka(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Ga(r)),t}return r._value=e,r}function qa(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,Ka(e))}function Ja(){for(var e=this._name,t=this._id,n=Qa(),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=Gi(c,t);Hi(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Za(r,this._parents,e,n)}function Ya(){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=Wi(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 Xa=0;function Za(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Qa(){return++Xa}var $a=jn.prototype;Za.prototype={constructor:Za,select:ka,selectAll:Aa,selectChild:$a.selectChild,selectChildren:$a.selectChildren,filter:Sa,merge:Ca,selection:Ma,transition:Ja,call:$a.call,nodes:$a.nodes,node:$a.node,size:$a.size,empty:$a.empty,each:$a.each,on:Ea,attr:oa,attrTween:da,style:Ra,styleTween:Va,text:Wa,textTween:qa,remove:Oa,tween:Zi,delay:ma,duration:_a,ease:ya,easeVarying:xa,end:Ya,[Symbol.iterator]:$a[Symbol.iterator]};function eo(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var to={time:null,delay:0,duration:250,ease:eo};function no(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function ro(e){var t,n;e instanceof Za?(t=e._id,e=e._name):(t=Qa(),(n=to).time=Ci(),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])&&Hi(c,e,t,l,o,n||no(c,t));return new Za(r,this._parents,e,t)}jn.prototype.interrupt=Ji,jn.prototype.transition=ro;var io=e=>()=>e;function ao(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function oo(e,t,n){this.k=e,this.x=t,this.y=n}oo.prototype={constructor:oo,scale:function(e){return e===1?this:new oo(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new oo(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 so=new oo(1,0,0);oo.prototype;function co(e){e.stopImmediatePropagation()}function lo(e){e.preventDefault(),e.stopImmediatePropagation()}function uo(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function fo(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function po(){return this.__zoom||so}function mo(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function ho(){return navigator.maxTouchPoints||`ontouchstart`in this}function go(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function _o(){var e=uo,t=fo,n=go,r=mo,i=ho,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=di,l=Oe(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,po).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,po),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(so.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new oo(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new oo(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new oo(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=Nn(this.that).datum();l.call(e,this.that,new ao(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Fn(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],qi(this),s.start();lo(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=Nn(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Fn(t,i),l=t.clientX,u=t.clientY;Bn(t.view),co(t),a.mouse=[c,this.__zoom.invert(c)],qi(this),a.start();function d(e){if(lo(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Fn(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Vn(e.view,a.moved),lo(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Fn(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);lo(r),s>0?Nn(this).transition().duration(s).call(x,d,c,r):Nn(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(co(t),s=0;s<i;++s)c=r[s],l=Fn(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),qi(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(lo(e),s=0;s<a;++s)c=i[s],l=Fn(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(co(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=Fn(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=Nn(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:io(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:io(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:io(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:io([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var J=(e=>(e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`,e))(J||{}),vo=(e=>(e.Partial=`partial`,e.Full=`full`,e))(vo||{}),yo=(e=>(e.Bezier=`default`,e.SimpleBezier=`simple-bezier`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e))(yo||{}),bo=(e=>(e.Strict=`strict`,e.Loose=`loose`,e))(bo||{}),xo=(e=>(e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`,e))(xo||{}),So=(e=>(e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`,e))(So||{}),Co=(e=>(e.TopLeft=`top-left`,e.TopCenter=`top-center`,e.TopRight=`top-right`,e.BottomLeft=`bottom-left`,e.BottomCenter=`bottom-center`,e.BottomRight=`bottom-right`,e))(Co||{}),wo=[`INPUT`,`SELECT`,`TEXTAREA`],To=typeof document<`u`?document:null;function Eo(e){let t=e.composedPath?.call(e)?.[0]||e.target,n=typeof t?.hasAttribute==`function`&&t.hasAttribute(`contenteditable`),r=typeof t?.closest==`function`?t.closest(`.nokey`):null;return wo.includes(t?.nodeName)||n||!!r}function Do(e){return e.ctrlKey||e.metaKey||e.shiftKey||e.altKey}function Oo(e,t,n,r){let i=t.replace(`+`,`
1
+ import{$n as e,An as t,Ar as n,Bn as r,Cn as i,En as a,Gn as o,Gr as s,Hn as c,In as l,Jn as u,Jr as d,Kn as f,Ln as p,Mn as m,Nn as h,Pn as g,Qn as _,Rn as v,Sn as y,Sr as b,Tn as x,Un as S,Ur as C,Wr as w,Xn as T,Yn as E,Zn as D,_n as O,_r as k,br as A,cr as j,dr as M,fr as N,gr as P,hr as F,ir as I,kn as L,lr as R,mr as ee,nr as z,or as B,pr as V,qn as H,rr as te,sr as U,tr as ne,wn as W,xn as G,xr as K,yr as q,zn as re}from"./element-plus-D8LubGQe.js";R(),l(),n();function ie(e){return j()?(V(e),!0):!1}function ae(e){return typeof e==`function`?e():b(e)}var oe=typeof window<`u`&&typeof document<`u`,se=e=>e!==void 0,ce=Object.prototype.toString,le=e=>ce.call(e)===`[object Object]`,ue=()=>{};function de(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}var fe=e=>e();function pe(e=fe){let t=P(!0);function n(){t.value=!1}function r(){t.value=!0}return{isActive:F(t),pause:n,resume:r,eventFilter:(...n)=>{t.value&&e(...n)}}}function me(e,t=!1,n=`Timeout`){return new Promise((r,i)=>{setTimeout(t?()=>i(n):r,e)})}function he(e,t,n={}){let{eventFilter:r=fe,...i}=n;return z(e,de(r,t),i)}function ge(e,t,n={}){let{eventFilter:r,...i}=n,{eventFilter:a,pause:o,resume:s,isActive:c}=pe(r);return{stop:he(e,t,{...i,eventFilter:a}),pause:o,resume:s,isActive:c}}function _e(e,t={}){if(!M(e))return A(e);let n=Array.isArray(e.value)?Array.from({length:e.value.length}):{};for(let r in e.value)n[r]=B(()=>({get(){return e.value[r]},set(n){if(ae(t.replaceRef)??!0){if(Array.isArray(e.value)){let t=[...e.value];t[r]=n,e.value=t}else{let t={...e.value,[r]:n};Object.setPrototypeOf(t,Object.getPrototypeOf(e.value)),e.value=t}}else e.value[r]=n}}));return n}function ve(e,t=!1){function n(n,{flush:r=`sync`,deep:i=!1,timeout:a,throwOnTimeout:o}={}){let s=null,c=[new Promise(a=>{s=z(e,e=>{n(e)!==t&&(s?.(),a(e))},{flush:r,deep:i,immediate:!0})})];return a!=null&&c.push(me(a,o).then(()=>ae(e)).finally(()=>s?.())),Promise.race(c)}function r(r,i){if(!M(r))return n(e=>e===r,i);let{flush:a=`sync`,deep:o=!1,timeout:s,throwOnTimeout:c}=i??{},l=null,u=[new Promise(n=>{l=z([e,r],([e,r])=>{t!==(e===r)&&(l?.(),n(e))},{flush:a,deep:o,immediate:!0})})];return s!=null&&u.push(me(s,c).then(()=>ae(e)).finally(()=>(l?.(),ae(e)))),Promise.race(u)}function i(e){return n(e=>!!e,e)}function a(e){return r(null,e)}function o(e){return r(void 0,e)}function s(e){return n(Number.isNaN,e)}function c(e,t){return n(t=>{let n=Array.from(t);return n.includes(e)||n.includes(ae(e))},t)}function l(e){return u(1,e)}function u(e=1,t){let r=-1;return n(()=>(r+=1,r>=e),t)}return Array.isArray(ae(e))?{toMatch:n,toContains:c,changed:l,changedTimes:u,get not(){return ve(e,!t)}}:{toMatch:n,toBe:r,toBeTruthy:i,toBeNull:a,toBeNaN:s,toBeUndefined:o,changed:l,changedTimes:u,get not(){return ve(e,!t)}}}function ye(e){return ve(e)}function be(e){let t=ae(e);return t?.$el??t}var xe=oe?window:void 0;function Se(...e){let t,n,r,i;if(typeof e[0]==`string`||Array.isArray(e[0])?([n,r,i]=e,t=xe):[t,n,r,i]=e,!t)return ue;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);let a=[],o=()=>{a.forEach(e=>e()),a.length=0},s=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),c=z(()=>[be(t),ae(i)],([e,t])=>{if(o(),!e)return;let i=le(t)?{...t}:t;a.push(...n.flatMap(t=>r.map(n=>s(e,t,n,i))))},{immediate:!0,flush:`post`}),l=()=>{c(),o()};return ie(l),l}function Ce(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function we(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=xe,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=Ce(t);return Se(i,a,e=>{e.repeat&&ae(s)||c(e)&&n(e)},o)}function Te(e){return JSON.parse(JSON.stringify(e))}function Ee(e,t,n,i={}){let{clone:a=!1,passive:o=!1,eventName:s,deep:c=!1,defaultValue:l,shouldEmit:u}=i,d=h(),f=n||d?.emit||(d?.$emit)?.bind(d)||(d?.proxy?.$emit)?.bind(d?.proxy),p=s;t||=`modelValue`,p||=`update:${t.toString()}`;let m=e=>a?typeof a==`function`?a(e):Te(e):e,g=()=>se(e[t])?m(e[t]):l,_=e=>{u?u(e)&&f(p,e):f(p,e)};if(o){let n=g(),i=P(n),a=!1;return z(()=>e[t],e=>{a||(a=!0,i.value=m(e),r(()=>a=!1))}),z(i,n=>{!a&&(n!==e[t]||c)&&_(n)},{deep:c}),i}return G({get(){return g()},set(e){_(e)}})}var De={value:()=>{}};function Oe(){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 ke(n)}function ke(e){this._=e}function Ae(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}})}ke.prototype=Oe.prototype={constructor:ke,on:function(e,t){var n=this._,r=Ae(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=je(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]=Me(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Me(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 ke(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 je(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Me(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=De,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Ne=`http://www.w3.org/1999/xhtml`,Pe={svg:`http://www.w3.org/2000/svg`,xhtml:Ne,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function Fe(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Pe.hasOwnProperty(t)?{space:Pe[t],local:e}:e}function Ie(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ne&&t.documentElement.namespaceURI===Ne?t.createElement(e):t.createElementNS(n,e)}}function Le(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Re(e){var t=Fe(e);return(t.local?Le:Ie)(t)}function ze(){}function Be(e){return e==null?ze:function(){return this.querySelector(e)}}function Ve(e){typeof e!=`function`&&(e=Be(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 An(r,this._parents)}function He(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Ue(){return[]}function We(e){return e==null?Ue:function(){return this.querySelectorAll(e)}}function Ge(e){return function(){return He(e.apply(this,arguments))}}function Ke(e){e=typeof e==`function`?Ge(e):We(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 An(r,i)}function qe(e){return function(){return this.matches(e)}}function Je(e){return function(t){return t.matches(e)}}var Ye=Array.prototype.find;function Xe(e){return function(){return Ye.call(this.children,e)}}function Ze(){return this.firstElementChild}function Qe(e){return this.select(e==null?Ze:Xe(typeof e==`function`?e:Je(e)))}var $e=Array.prototype.filter;function et(){return Array.from(this.children)}function tt(e){return function(){return $e.call(this.children,e)}}function nt(e){return this.selectAll(e==null?et:tt(typeof e==`function`?e:Je(e)))}function rt(e){typeof e!=`function`&&(e=qe(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 An(r,this._parents)}function it(e){return Array(e.length)}function at(){return new An(this._enter||this._groups.map(it),this._parents)}function ot(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}ot.prototype={constructor:ot,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 st(e){return function(){return e}}function ct(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 ot(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function lt(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 ot(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function ut(e){return e.__data__}function dt(e,t){if(!arguments.length)return Array.from(this,ut);var n=t?lt:ct,r=this._parents,i=this._groups;typeof e!=`function`&&(e=st(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=ft(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 An(o,r),o._enter=s,o._exit=c,o}function ft(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function pt(){return new An(this._exit||this._groups.map(it),this._parents)}function mt(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 ht(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 An(s,this._parents)}function gt(){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 _t(e){e||=vt;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 An(i,this._parents).order()}function vt(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function yt(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function bt(){return Array.from(this)}function xt(){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 St(){let e=0;for(let t of this)++e;return e}function Ct(){return!this.node()}function wt(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 Tt(e){return function(){this.removeAttribute(e)}}function Et(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Dt(e,t){return function(){this.setAttribute(e,t)}}function Ot(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function kt(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function At(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 jt(e,t){var n=Fe(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?Et:Tt:typeof t==`function`?n.local?At:kt:n.local?Ot:Dt)(n,t))}function Mt(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Nt(e){return function(){this.style.removeProperty(e)}}function Pt(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ft(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function It(e,t,n){return arguments.length>1?this.each((t==null?Nt:typeof t==`function`?Ft:Pt)(e,t,n??``)):Lt(this.node(),e)}function Lt(e,t){return e.style.getPropertyValue(t)||Mt(e).getComputedStyle(e,null).getPropertyValue(t)}function Rt(e){return function(){delete this[e]}}function zt(e,t){return function(){this[e]=t}}function Bt(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Vt(e,t){return arguments.length>1?this.each((t==null?Rt:typeof t==`function`?Bt:zt)(e,t)):this.node()[e]}function Ht(e){return e.trim().split(/^|\s+/)}function Ut(e){return e.classList||new Wt(e)}function Wt(e){this._node=e,this._names=Ht(e.getAttribute(`class`)||``)}Wt.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 Gt(e,t){for(var n=Ut(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function Kt(e,t){for(var n=Ut(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function qt(e){return function(){Gt(this,e)}}function Jt(e){return function(){Kt(this,e)}}function Yt(e,t){return function(){(t.apply(this,arguments)?Gt:Kt)(this,e)}}function Xt(e,t){var n=Ht(e+``);if(arguments.length<2){for(var r=Ut(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?Yt:t?qt:Jt)(n,t))}function Zt(){this.textContent=``}function Qt(e){return function(){this.textContent=e}}function $t(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function en(e){return arguments.length?this.each(e==null?Zt:(typeof e==`function`?$t:Qt)(e)):this.node().textContent}function tn(){this.innerHTML=``}function nn(e){return function(){this.innerHTML=e}}function rn(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function an(e){return arguments.length?this.each(e==null?tn:(typeof e==`function`?rn:nn)(e)):this.node().innerHTML}function on(){this.nextSibling&&this.parentNode.appendChild(this)}function sn(){return this.each(on)}function cn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ln(){return this.each(cn)}function un(e){var t=typeof e==`function`?e:Re(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function dn(){return null}function fn(e,t){var n=typeof e==`function`?e:Re(e),r=t==null?dn:typeof t==`function`?t:Be(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function pn(){var e=this.parentNode;e&&e.removeChild(this)}function mn(){return this.each(pn)}function hn(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function gn(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function _n(e){return this.select(e?gn:hn)}function vn(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function yn(e){return function(t){e.call(this,t,this.__data__)}}function bn(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 xn(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 Sn(e,t,n){return function(){var r=this.__on,i,a=yn(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 Cn(e,t,n){var r=bn(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?Sn:xn,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function wn(e,t,n){var r=Mt(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 Tn(e,t){return function(){return wn(this,e,t)}}function En(e,t){return function(){return wn(this,e,t.apply(this,arguments))}}function Dn(e,t){return this.each((typeof t==`function`?En:Tn)(e,t))}function*On(){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 kn=[null];function An(e,t){this._groups=e,this._parents=t}function jn(){return new An([[document.documentElement]],kn)}function Mn(){return this}An.prototype=jn.prototype={constructor:An,select:Ve,selectAll:Ke,selectChild:Qe,selectChildren:nt,filter:rt,data:dt,enter:at,exit:pt,join:mt,merge:ht,selection:Mn,order:gt,sort:_t,call:yt,nodes:bt,node:xt,size:St,empty:Ct,each:wt,attr:jt,style:It,property:Vt,classed:Xt,text:en,html:an,raise:sn,lower:ln,append:un,insert:fn,remove:mn,clone:_n,datum:vn,on:Cn,dispatch:Dn,[Symbol.iterator]:On};function Nn(e){return typeof e==`string`?new An([[document.querySelector(e)]],[document.documentElement]):new An([[e]],kn)}function Pn(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Fn(e,t){if(e=Pn(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var In={passive:!1},Ln={capture:!0,passive:!1};function Rn(e){e.stopImmediatePropagation()}function zn(e){e.preventDefault(),e.stopImmediatePropagation()}function Bn(e){var t=e.document.documentElement,n=Nn(e).on(`dragstart.drag`,zn,Ln);`onselectstart`in t?n.on(`selectstart.drag`,zn,Ln):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function Vn(e,t){var n=e.document.documentElement,r=Nn(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,zn,Ln),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var Hn=e=>()=>e;function Un(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}Un.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Wn(e){return!e.ctrlKey&&!e.button}function Gn(){return this.parentNode}function Kn(e,t){return t??{x:e.x,y:e.y}}function qn(){return navigator.maxTouchPoints||`ontouchstart`in this}function Jn(){var e=Wn,t=Gn,n=Kn,r=qn,i={},a=Oe(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,In).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!u&&e.call(this,n,r)){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(Nn(n.view).on(`mousemove.drag`,m,Ln).on(`mouseup.drag`,h,Ln),Bn(n.view),Rn(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(zn(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){Nn(e.view).on(`mousemove.drag mouseup.drag`,null),Vn(e.view,l),zn(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r))for(var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s=0,c;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(Rn(n),c(`start`,n,i[s]))}function _(e){for(var t=e.changedTouches,n=t.length,r=0,a;r<n;++r)(a=i[t[r].identifier])&&(zn(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(Rn(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=Fn(l||r,t),p,m,h;if((h=n.call(e,new Un(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=Fn(l||a,t),_=o}u.call(r,e,new Un(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:Hn(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:Hn(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:Hn(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:Hn(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function Yn(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Xn(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Zn(){}var Qn=.7,$n=1/Qn,er=`\\s*([+-]?\\d+)\\s*`,tr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,nr=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,rr=/^#([0-9a-f]{3,8})$/,ir=RegExp(`^rgb\\(${er},${er},${er}\\)$`),ar=RegExp(`^rgb\\(${nr},${nr},${nr}\\)$`),or=RegExp(`^rgba\\(${er},${er},${er},${tr}\\)$`),sr=RegExp(`^rgba\\(${nr},${nr},${nr},${tr}\\)$`),cr=RegExp(`^hsl\\(${tr},${nr},${nr}\\)$`),lr=RegExp(`^hsla\\(${tr},${nr},${nr},${tr}\\)$`),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};Yn(Zn,hr,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:dr,formatHex:dr,formatHex8:fr,formatHsl:pr,formatRgb:mr,toString:mr});function dr(){return this.rgb().formatHex()}function fr(){return this.rgb().formatHex8()}function pr(){return Or(this).formatHsl()}function mr(){return this.rgb().formatRgb()}function hr(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=rr.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?gr(t):n===3?new br(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?_r(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?_r(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=ir.exec(e))?new br(t[1],t[2],t[3],1):(t=ar.exec(e))?new br(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=or.exec(e))?_r(t[1],t[2],t[3],t[4]):(t=sr.exec(e))?_r(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=cr.exec(e))?Dr(t[1],t[2]/100,t[3]/100,1):(t=lr.exec(e))?Dr(t[1],t[2]/100,t[3]/100,t[4]):ur.hasOwnProperty(e)?gr(ur[e]):e===`transparent`?new br(NaN,NaN,NaN,0):null}function gr(e){return new br(e>>16&255,e>>8&255,e&255,1)}function _r(e,t,n,r){return r<=0&&(e=t=n=NaN),new br(e,t,n,r)}function vr(e){return e instanceof Zn||(e=hr(e)),e?(e=e.rgb(),new br(e.r,e.g,e.b,e.opacity)):new br}function yr(e,t,n,r){return arguments.length===1?vr(e):new br(e,t,n,r??1)}function br(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Yn(br,yr,Xn(Zn,{brighter(e){return e=e==null?$n:$n**+e,new br(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Qn:Qn**+e,new br(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new br(Tr(this.r),Tr(this.g),Tr(this.b),wr(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:xr,formatHex:xr,formatHex8:Sr,formatRgb:Cr,toString:Cr}));function xr(){return`#${Er(this.r)}${Er(this.g)}${Er(this.b)}`}function Sr(){return`#${Er(this.r)}${Er(this.g)}${Er(this.b)}${Er((isNaN(this.opacity)?1:this.opacity)*255)}`}function Cr(){let e=wr(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Tr(this.r)}, ${Tr(this.g)}, ${Tr(this.b)}${e===1?`)`:`, ${e})`}`}function wr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Tr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Er(e){return e=Tr(e),(e<16?`0`:``)+e.toString(16)}function Dr(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ar(e,t,n,r)}function Or(e){if(e instanceof Ar)return new Ar(e.h,e.s,e.l,e.opacity);if(e instanceof Zn||(e=hr(e)),!e)return new Ar;if(e instanceof Ar)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 Ar(o,s,c,e.opacity)}function kr(e,t,n,r){return arguments.length===1?Or(e):new Ar(e,t,n,r??1)}function Ar(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Yn(Ar,kr,Xn(Zn,{brighter(e){return e=e==null?$n:$n**+e,new Ar(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Qn:Qn**+e,new Ar(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 br(Nr(e>=240?e-240:e+120,i,r),Nr(e,i,r),Nr(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ar(jr(this.h),Mr(this.s),Mr(this.l),wr(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=wr(this.opacity);return`${e===1?`hsl(`:`hsla(`}${jr(this.h)}, ${Mr(this.s)*100}%, ${Mr(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function jr(e){return e=(e||0)%360,e<0?e+360:e}function Mr(e){return Math.max(0,Math.min(1,e||0))}function Nr(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 Pr=e=>()=>e;function Fr(e,t){return function(n){return e+n*t}}function Ir(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Lr(e){return(e=+e)==1?Rr:function(t,n){return n-t?Ir(t,n,e):Pr(isNaN(t)?n:t)}}function Rr(e,t){var n=t-e;return n?Fr(e,n):Pr(isNaN(e)?t:e)}var zr=function e(t){var n=Lr(t);function r(e,t){var r=n((e=yr(e)).r,(t=yr(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Rr(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 Br(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Vr(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Hr(e,t){for(var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o=0;o<r;++o)i[o]=Zr(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Ur(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Wr(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function Gr(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Zr(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Kr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,qr=new RegExp(Kr.source,`g`);function Jr(e){return function(){return e}}function Yr(e){return function(t){return e(t)+``}}function Xr(e,t){var n=Kr.lastIndex=qr.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Kr.exec(e))&&(i=qr.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:Wr(r,i)})),n=qr.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Yr(c[0].x):Jr(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(``)})}function Zr(e,t){var n=typeof t,r;return t==null||n===`boolean`?Pr(t):(n===`number`?Wr:n===`string`?(r=hr(t))?(t=r,zr):Xr:t instanceof hr?zr:t instanceof Date?Ur:Vr(t)?Br:Array.isArray(t)?Hr:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?Gr:Wr)(e,t)}var Qr=180/Math.PI,$r={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ei(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)*Qr,skewX:Math.atan(c)*Qr,scaleX:o,scaleY:s}}var ti;function ni(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?$r:ei(t.a,t.b,t.c,t.d,t.e,t.f)}function ri(e){return e==null||(ti||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),ti.setAttribute(`transform`,e),!(e=ti.transform.baseVal.consolidate()))?$r:(e=e.matrix,ei(e.a,e.b,e.c,e.d,e.e,e.f))}function ii(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:Wr(e,i)},{i:c-2,x:Wr(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:Wr(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:Wr(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:Wr(e,n)},{i:s-2,x:Wr(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 ai=ii(ni,`px, `,`px)`,`deg)`),oi=ii(ri,`, `,`)`,`)`),si=1e-12;function ci(e){return((e=Math.exp(e))+1/e)/2}function li(e){return((e=Math.exp(e))-1/e)/2}function ui(e){return((e=Math.exp(2*e))-1)/(e+1)}var di=function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<si)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=ci(y),c=s/(n*g)*(i*ui(t*r+y)-li(y));return[a+c*d,o+c*f,s*i/ci(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i}(Math.SQRT2,2,4),fi=0,pi=0,mi=0,hi=1e3,gi,_i,vi=0,yi=0,bi=0,xi=typeof performance==`object`&&performance.now?performance:Date,Si=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Ci(){return yi||=(Si(wi),xi.now()+bi)}function wi(){yi=0}function Ti(){this._call=this._time=this._next=null}Ti.prototype=Ei.prototype={constructor:Ti,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Ci():+n)+(t==null?0:+t),!this._next&&_i!==this&&(_i?_i._next=this:gi=this,_i=this),this._call=e,this._time=n,ji()},stop:function(){this._call&&(this._call=null,this._time=1/0,ji())}};function Ei(e,t,n){var r=new Ti;return r.restart(e,t,n),r}function Di(){Ci(),++fi;for(var e=gi,t;e;)(t=yi-e._time)>=0&&e._call.call(void 0,t),e=e._next;--fi}function Oi(){yi=(vi=xi.now())+bi,fi=pi=0;try{Di()}finally{fi=0,Ai(),yi=0}}function ki(){var e=xi.now(),t=e-vi;t>hi&&(bi-=t,vi=e)}function Ai(){for(var e,t=gi,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:gi=n);_i=e,ji(r)}function ji(e){fi||(pi&&=clearTimeout(pi),e-yi>24?(e<1/0&&(pi=setTimeout(Oi,e-xi.now()-bi)),mi&&=clearInterval(mi)):(mi||=(vi=xi.now(),setInterval(ki,hi)),fi=1,Si(Oi)))}function Mi(e,t,n){var r=new Ti;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Ni=Oe(`start`,`end`,`cancel`,`interrupt`),Pi=[],Fi=0,Ii=1,Li=2,Ri=3,zi=4,Bi=5,Vi=6;function Hi(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Ki(e,n,{name:t,index:r,group:i,on:Ni,tween:Pi,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:Fi})}function Ui(e,t){var n=Gi(e,t);if(n.state>Fi)throw Error(`too late; already scheduled`);return n}function Wi(e,t){var n=Gi(e,t);if(n.state>Ri)throw Error(`too late; already running`);return n}function Gi(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Ki(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Ei(a,0,n.time);function a(e){n.state=Ii,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!==Ii)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===Ri)return Mi(o);f.state===zi?(f.state=Vi,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=Vi,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Mi(function(){n.state===Ri&&(n.state=zi,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=Li,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===Li){for(n.state=Ri,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=Bi,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===Bi&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=Vi,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function qi(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>Li&&r.state<Bi,r.state=Vi,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Ji(e){return this.each(function(){qi(this,e)})}function Yi(e,t){var n,r;return function(){var i=Wi(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 Xi(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Wi(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 Zi(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=Gi(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?Yi:Xi)(n,e,t))}function Qi(e,t,n){var r=e._id;return e.each(function(){var e=Wi(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return Gi(e,r).value[t]}}function $i(e,t){var n;return(typeof t==`number`?Wr:t instanceof hr?zr:(n=hr(t))?(t=n,zr):Xr)(e,t)}function ea(e){return function(){this.removeAttribute(e)}}function ta(e){return function(){this.removeAttributeNS(e.space,e.local)}}function na(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 ra(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 ia(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 aa(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 oa(e,t){var n=Fe(e),r=n===`transform`?oi:$i;return this.attrTween(e,typeof t==`function`?(n.local?aa:ia)(n,r,Qi(this,`attr.`+e,t)):t==null?(n.local?ta:ea)(n):(n.local?ra:na)(n,r,t))}function sa(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function ca(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function la(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&ca(e,i)),n}return i._value=t,i}function ua(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&sa(e,i)),n}return i._value=t,i}function da(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=Fe(e);return this.tween(n,(r.local?la:ua)(r,t))}function fa(e,t){return function(){Ui(this,e).delay=+t.apply(this,arguments)}}function pa(e,t){return t=+t,function(){Ui(this,e).delay=t}}function ma(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?fa:pa)(t,e)):Gi(this.node(),t).delay}function ha(e,t){return function(){Wi(this,e).duration=+t.apply(this,arguments)}}function ga(e,t){return t=+t,function(){Wi(this,e).duration=t}}function _a(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?ha:ga)(t,e)):Gi(this.node(),t).duration}function va(e,t){if(typeof t!=`function`)throw Error();return function(){Wi(this,e).ease=t}}function ya(e){var t=this._id;return arguments.length?this.each(va(t,e)):Gi(this.node(),t).ease}function ba(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Wi(this,e).ease=n}}function xa(e){if(typeof e!=`function`)throw Error();return this.each(ba(this._id,e))}function Sa(e){typeof e!=`function`&&(e=qe(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 Za(r,this._parents,this._name,this._id)}function Ca(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 Za(o,this._parents,this._name,this._id)}function wa(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 Ta(e,t,n){var r,i,a=wa(t)?Ui:Wi;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Ea(e,t){var n=this._id;return arguments.length<2?Gi(this.node(),n).on.on(e):this.each(Ta(n,e,t))}function Da(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Oa(){return this.on(`end.remove`,Da(this._id))}function ka(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Be(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,Hi(l[f],t,n,f,l,Gi(u,n)));return new Za(a,this._parents,t,n)}function Aa(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=We(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=Gi(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Hi(p,t,n,h,f,m);a.push(f),o.push(u)}return new Za(a,o,t,n)}var ja=jn.prototype.constructor;function Ma(){return new ja(this._groups,this._parents)}function Na(e,t){var n,r,i;return function(){var a=Lt(this,e),o=(this.style.removeProperty(e),Lt(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function Pa(e){return function(){this.style.removeProperty(e)}}function Fa(e,t,n){var r,i=n+``,a;return function(){var o=Lt(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Ia(e,t,n){var r,i,a;return function(){var o=Lt(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),Lt(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function La(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Wi(this,e),l=c.on,u=c.value[a]==null?s||=Pa(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Ra(e,t,n){var r=(e+=``)==`transform`?ai:$i;return t==null?this.styleTween(e,Na(e,r)).on(`end.style.`+e,Pa(e)):typeof t==`function`?this.styleTween(e,Ia(e,r,Qi(this,`style.`+e,t))).each(La(this._id,e)):this.styleTween(e,Fa(e,r,t),n).on(`end.style.`+e,null)}function za(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Ba(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&za(e,a,n)),r}return a._value=t,a}function Va(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,Ba(e,t,n??``))}function Ha(e){return function(){this.textContent=e}}function Ua(e){return function(){var t=e(this);this.textContent=t??``}}function Wa(e){return this.tween(`text`,typeof e==`function`?Ua(Qi(this,`text`,e)):Ha(e==null?``:e+``))}function Ga(e){return function(t){this.textContent=e.call(this,t)}}function Ka(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&Ga(r)),t}return r._value=e,r}function qa(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,Ka(e))}function Ja(){for(var e=this._name,t=this._id,n=Qa(),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=Gi(c,t);Hi(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Za(r,this._parents,e,n)}function Ya(){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=Wi(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 Xa=0;function Za(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Qa(){return++Xa}var $a=jn.prototype;Za.prototype={constructor:Za,select:ka,selectAll:Aa,selectChild:$a.selectChild,selectChildren:$a.selectChildren,filter:Sa,merge:Ca,selection:Ma,transition:Ja,call:$a.call,nodes:$a.nodes,node:$a.node,size:$a.size,empty:$a.empty,each:$a.each,on:Ea,attr:oa,attrTween:da,style:Ra,styleTween:Va,text:Wa,textTween:qa,remove:Oa,tween:Zi,delay:ma,duration:_a,ease:ya,easeVarying:xa,end:Ya,[Symbol.iterator]:$a[Symbol.iterator]};function eo(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var to={time:null,delay:0,duration:250,ease:eo};function no(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function ro(e){var t,n;e instanceof Za?(t=e._id,e=e._name):(t=Qa(),(n=to).time=Ci(),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])&&Hi(c,e,t,l,o,n||no(c,t));return new Za(r,this._parents,e,t)}jn.prototype.interrupt=Ji,jn.prototype.transition=ro;var io=e=>()=>e;function ao(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function oo(e,t,n){this.k=e,this.x=t,this.y=n}oo.prototype={constructor:oo,scale:function(e){return e===1?this:new oo(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new oo(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 so=new oo(1,0,0);oo.prototype;function co(e){e.stopImmediatePropagation()}function lo(e){e.preventDefault(),e.stopImmediatePropagation()}function uo(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function fo(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function po(){return this.__zoom||so}function mo(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function ho(){return navigator.maxTouchPoints||`ontouchstart`in this}function go(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function _o(){var e=uo,t=fo,n=go,r=mo,i=ho,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=di,l=Oe(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,po).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,po),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(so.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new oo(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new oo(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new oo(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=Nn(this.that).datum();l.call(e,this.that,new ao(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Fn(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],qi(this),s.start();lo(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=Nn(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Fn(t,i),l=t.clientX,u=t.clientY;Bn(t.view),co(t),a.mouse=[c,this.__zoom.invert(c)],qi(this),a.start();function d(e){if(lo(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Fn(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Vn(e.view,a.moved),lo(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Fn(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);lo(r),s>0?Nn(this).transition().duration(s).call(x,d,c,r):Nn(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(co(t),s=0;s<i;++s)c=r[s],l=Fn(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),qi(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(lo(e),s=0;s<a;++s)c=i[s],l=Fn(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(co(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=Fn(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=Nn(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:io(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:io(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:io(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:io([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var J=(e=>(e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`,e))(J||{}),vo=(e=>(e.Partial=`partial`,e.Full=`full`,e))(vo||{}),yo=(e=>(e.Bezier=`default`,e.SimpleBezier=`simple-bezier`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e))(yo||{}),bo=(e=>(e.Strict=`strict`,e.Loose=`loose`,e))(bo||{}),xo=(e=>(e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`,e))(xo||{}),So=(e=>(e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`,e))(So||{}),Co=(e=>(e.TopLeft=`top-left`,e.TopCenter=`top-center`,e.TopRight=`top-right`,e.BottomLeft=`bottom-left`,e.BottomCenter=`bottom-center`,e.BottomRight=`bottom-right`,e))(Co||{}),wo=[`INPUT`,`SELECT`,`TEXTAREA`],To=typeof document<`u`?document:null;function Eo(e){let t=e.composedPath?.call(e)?.[0]||e.target,n=typeof t?.hasAttribute==`function`&&t.hasAttribute(`contenteditable`),r=typeof t?.closest==`function`?t.closest(`.nokey`):null;return wo.includes(t?.nodeName)||n||!!r}function Do(e){return e.ctrlKey||e.metaKey||e.shiftKey||e.altKey}function Oo(e,t,n,r){let i=t.replace(`+`,`
2
2
  `).replace(`
3
3
 
4
4
  `,`
@@ -10,27 +10,27 @@
10
10
  <meta name="theme-color" content="#141820" media="(prefers-color-scheme: dark)" />
11
11
  <title>Zen GitSync</title>
12
12
  <!-- 字体改为自托管(@font-face 见 src/main.css),不再依赖 Google Fonts 外链 -->
13
- <script type="module" crossorigin src="/assets/index-Bz3MwUuu.js"></script>
13
+ <script type="module" crossorigin src="/assets/index-C4masR7z.js"></script>
14
14
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-C0FnF6B9.js">
15
- <link rel="modulepreload" crossorigin href="/assets/dagre-DYyfV0Dg.js">
16
- <link rel="modulepreload" crossorigin href="/assets/element-plus-CkMnLwcU.js">
17
- <link rel="modulepreload" crossorigin href="/assets/vendor-LCbsk86d.js">
18
- <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-DlU9e1mk.js">
19
- <link rel="modulepreload" crossorigin href="/assets/SvgIcon-DqzYKNo_.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/dagre-DcqvOjeb.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/element-plus-D8LubGQe.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/vendor-CUQALT_x.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BRUY9DoQ.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/SvgIcon-D5bT7QEj.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/socket-io-TBtw0msS.js">
21
- <link rel="modulepreload" crossorigin href="/assets/configStore-BNFH8Gjg.js">
22
- <link rel="modulepreload" crossorigin href="/assets/monaco-DpvA3Mh0.js">
23
- <link rel="modulepreload" crossorigin href="/assets/flow-mindmap-DCYEzp78.js">
24
- <link rel="modulepreload" crossorigin href="/assets/CommonDialog-DTWEVQih.js">
25
- <link rel="modulepreload" crossorigin href="/assets/vue-flow-D7nVv56X.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/configStore-1qv5tdrb.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/monaco-CuYd4DgX.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/flow-mindmap-DwG2RDXe.js">
24
+ <link rel="modulepreload" crossorigin href="/assets/CommonDialog-D8XaOcNX.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/vue-flow-BEVz6_7M.js">
26
26
  <link rel="stylesheet" crossorigin href="/assets/element-plus-D-6gla1z.css">
27
- <link rel="stylesheet" crossorigin href="/assets/vendor-2SbNafIY.css">
27
+ <link rel="stylesheet" crossorigin href="/assets/vendor-CHUY5AXG.css">
28
28
  <link rel="stylesheet" crossorigin href="/assets/SvgIcon-BQ6bR7l0.css">
29
29
  <link rel="stylesheet" crossorigin href="/assets/monaco-B2lPvkrc.css">
30
30
  <link rel="stylesheet" crossorigin href="/assets/flow-mindmap-BwYC4xxV.css">
31
31
  <link rel="stylesheet" crossorigin href="/assets/CommonDialog-Bzi5ISqT.css">
32
32
  <link rel="stylesheet" crossorigin href="/assets/vue-flow-CavUTEzp.css">
33
- <link rel="stylesheet" crossorigin href="/assets/index-BVe9erMn.css">
33
+ <link rel="stylesheet" crossorigin href="/assets/index-D9Bza0ac.css">
34
34
  </head>
35
35
  <body>
36
36
  <div id="app"></div>
@@ -17,6 +17,8 @@ import fs from 'fs/promises';
17
17
  import path from 'path';
18
18
  import { buildAiChatRequest } from '../../../utils/aiEndpoint.js';
19
19
  import { buildModelFallbackChain, modelLabel, runWithModelFallback } from '../../../utils/aiModelFallback.js';
20
+ // 运行期取模型的唯一入口(内置默认模型不落盘,直读 raw.models 会判成"未配置模型")
21
+ import { resolveModels } from '../../../config.js';
20
22
 
21
23
  // 代码文件扩展名
22
24
  const CODE_EXTENSIONS = [
@@ -531,7 +533,7 @@ export function registerCodeAnalysisRoutes({ app, configManager, getCurrentProje
531
533
  let chain;
532
534
  try {
533
535
  const rawConfig = await configManager.readRawConfigFile();
534
- const models = Array.isArray(rawConfig.models) ? rawConfig.models : [];
536
+ const models = resolveModels(rawConfig);
535
537
  const picked = modelId ? models.find(m => m.id === modelId) : null;
536
538
  chain = buildModelFallbackChain(
537
539
  picked ? [picked, ...models.filter(m => m !== picked)] : models,
@@ -997,7 +999,7 @@ ${hubContentText || '(无)'}
997
999
  let chain;
998
1000
  try {
999
1001
  const rawConfig = await configManager.readRawConfigFile();
1000
- const models = Array.isArray(rawConfig.models) ? rawConfig.models : [];
1002
+ const models = resolveModels(rawConfig);
1001
1003
  const picked = modelId ? models.find(m => m.id === modelId) : null;
1002
1004
  chain = buildModelFallbackChain(
1003
1005
  picked ? [picked, ...models.filter(m => m !== picked)] : models,
@@ -18,6 +18,8 @@ import path from 'path';
18
18
  import fs from 'fs/promises';
19
19
  import open from 'open';
20
20
  import logger from '../utils/logger.js';
21
+ // 运行期取模型的唯一入口(内置默认模型不落盘,直读 raw.models 会判成"未配置模型")
22
+ import { resolveModels } from '../../../config.js';
21
23
  import { CONFIG_FILE } from '../../../paths.js';
22
24
  // AI 请求的地址/请求头统一走这里:OpenCode 网关要求自报 User-Agent 并带
23
25
  // x-opencode-session,否则直接 4xx(见 src/utils/aiEndpoint.js 顶部说明)
@@ -26,28 +28,8 @@ import { buildModelFallbackChain, modelLabel, runWithModelFallback } from '../..
26
28
  // 请求预算的解析公式住在 cli/ai/context.js —— 前端拿"解析后的三参数"做超长输入
27
29
  // 预警时,服务端下发同一份解析结果,不在前端重算(口径只有一处)。
28
30
  import { resolveRequestBudget } from '../../../cli/ai/context.js';
29
-
30
- // 跳过的产物/资源/lock 文件(用 stat 一行带过,不打 patch)
31
- const SKIP_FILE_PATTERNS = [
32
- /(^|[\\/])dist[\\/]/,
33
- /(^|[\\/])build[\\/]/,
34
- /(^|[\\/])\.next[\\/]/,
35
- /(^|[\\/])coverage[\\/]/,
36
- /(^|[\\/])node_modules[\\/]/,
37
- /\.lock$/,
38
- /package-lock\.json$/,
39
- /yarn\.lock$/,
40
- /pnpm-lock\.yaml$/,
41
- /min\.js$/,
42
- /min\.css$/,
43
- /\.bundle\.js$/,
44
- /\.map$/,
45
- /\.(png|jpe?g|gif|webp|svg|ico|bmp|tiff)$/,
46
- /\.(mp4|mov|avi|mkv|webm)$/,
47
- /\.(mp3|wav|ogg|flac)$/,
48
- /\.(woff2?|ttf|otf|eot)$/,
49
- /\.(pdf|zip|tar|gz|7z|rar)$/
50
- ]
31
+ // 产物/资源/lock 的跳过硬口径与 CLI 侧 aiCommit.js 共用一份(原来这里有一份逐字相同的副本)
32
+ import { isSkippedFile } from '../../../utils/skipPatterns.js';
51
33
 
52
34
  // 文件优先级:数字越大越重要
53
35
  function filePriority(p) {
@@ -59,10 +41,6 @@ function filePriority(p) {
59
41
  return 3 // 其它(资源、未知)
60
42
  }
61
43
 
62
- function isSkippedFile(path) {
63
- return SKIP_FILE_PATTERNS.some(re => re.test(path))
64
- }
65
-
66
44
  // 从 git diff 文本解析出 per-file 块
67
45
  // git diff 输出格式: "diff --git a/path b/path\n...一系列 header...\n--- a/path\n+++ b/path\n@@ ...\n<patch>"
68
46
  function parseDiffByFile(diffText) {
@@ -1206,11 +1184,26 @@ export function registerConfigRoutes({
1206
1184
  return res.status(400).json({ success: false, error: '缺少 models 参数' })
1207
1185
  }
1208
1186
  const rawConfig = await configManager.readRawConfigFile()
1187
+ // 改之前先记下"谁是默认",写完比对一次 —— 见下面的日志说明
1188
+ const prevDefault = (Array.isArray(rawConfig.models) ? rawConfig.models : [])
1189
+ .find(m => m && m.isDefault) || null
1209
1190
  rawConfig.models = models
1210
1191
  // 清空 = 明确的"不要再给我内置默认模型",记一笔(读取侧见 src/config.js 的
1211
1192
  // resolveModels)。不记的话删光重启又长回来,等于删不掉。
1212
1193
  if (models.length === 0) rawConfig.modelsSeeded = true
1213
1194
  await configManager.writeRawConfigFile(rawConfig)
1195
+ // 默认模型换了就落一行日志。这是**事后唯一可追溯的凭据**:用户报
1196
+ // "我的默认模型被自动换掉了"时,只有这里能回答"什么时候、换成了谁"。
1197
+ // 换默认目前只有设置页那个按钮一条路(列表为空时新增第一条会自动当默认),
1198
+ // 但少了这行日志,任何一次改动在事后都无从对账(2026-11-02 用户报障时
1199
+ // 只能靠翻 config.json 的历史备份才看出是哪个字段被改了)。
1200
+ const nextDefault = models.find(m => m && m.isDefault) || null
1201
+ if ((prevDefault?.id || '') !== (nextDefault?.id || '')) {
1202
+ logger.info(
1203
+ `[config] 默认模型: ${prevDefault ? modelLabel(prevDefault) : '(未设置)'}`
1204
+ + ` → ${nextDefault ? modelLabel(nextDefault) : '(未设置)'}`
1205
+ )
1206
+ }
1214
1207
  res.json({ success: true })
1215
1208
  } catch (error) {
1216
1209
  res.status(500).json({ success: false, error: error.message })
@@ -1260,7 +1253,7 @@ export function registerConfigRoutes({
1260
1253
  try {
1261
1254
  const rawConfig = await configManager.readRawConfigFile()
1262
1255
  const userLocale = reqLocale || rawConfig.locale || 'zh-CN'
1263
- const models = Array.isArray(rawConfig.models) ? rawConfig.models : []
1256
+ const models = resolveModels(rawConfig)
1264
1257
  // 候选链 = 默认模型打头 + 其余已配置模型:默认模型额度用完 / 限流时自动换下一个,
1265
1258
  // 而不是让「AI 生成提交信息」直接报错(这几个功能是最常按的按钮)
1266
1259
  const chain = buildModelFallbackChain(models)
@@ -39,6 +39,8 @@ import path from 'node:path';
39
39
  import express from 'express';
40
40
  import { callLlmStream } from '../workbench/llmClient.js';
41
41
  import { buildModelFallbackChain, modelLabel, runWithModelFallback } from '../../../../utils/aiModelFallback.js';
42
+ // 运行期取模型的唯一入口(内置默认模型不落盘,直读 raw.models 会判成"未配置模型")
43
+ import { resolveModels } from '../../../../config.js';
42
44
  import { ensureWithinCwd } from '../../utils/pathGuard.js';
43
45
  import logger from '../../utils/logger.js';
44
46
  import { createThinkFilter } from '../../../../cli/ai/streamFilter.js';
@@ -371,7 +373,7 @@ export function registerAiDiffSummaryRoutes({
371
373
  let chain;
372
374
  try {
373
375
  const rawConfig = await configManager.readRawConfigFile();
374
- const models = Array.isArray(rawConfig.models) ? rawConfig.models : [];
376
+ const models = resolveModels(rawConfig);
375
377
  chain = buildModelFallbackChain(models);
376
378
  } catch (err) {
377
379
  send({ type: 'error', error: '读取 AI 配置失败: ' + err.message, code: 'CONFIG_ERR' });
@@ -22,6 +22,8 @@ import { exec, spawn } from 'child_process';
22
22
  import https from 'https';
23
23
  import { fileURLToPath } from 'url';
24
24
  import { getRegistryPath } from '../utils/instanceRegistry.js';
25
+ // 目录剪枝清单与 AI 侧共用一份;这里保留原名 IGNORED_DIRS,两处使用点不必改
26
+ import { SCAN_IGNORED_DIRS as IGNORED_DIRS } from '../../../utils/skipPatterns.js';
25
27
 
26
28
  const __filename = fileURLToPath(import.meta.url);
27
29
  const __dirname = path.dirname(__filename);
@@ -795,28 +797,7 @@ export function registerNpmRoutes({
795
797
  const startTime = Date.now();
796
798
 
797
799
 
798
- // 需要忽略的目录列表(更全面)
799
- const IGNORED_DIRS = new Set([
800
- 'node_modules',
801
- '.git',
802
- '.svn',
803
- '.hg',
804
- 'dist',
805
- 'build',
806
- 'coverage',
807
- 'out',
808
- 'target',
809
- 'vendor',
810
- '__pycache__',
811
- '.next',
812
- '.nuxt',
813
- '.vscode',
814
- '.idea',
815
- 'tmp',
816
- 'temp',
817
- 'cache',
818
- '.cache'
819
- ]);
800
+ // 目录剪枝清单见 src/utils/skipPatterns.js(与另一处扫描共用)
820
801
 
821
802
  // 优先扫描的子目录(monorepo常见结构)
822
803
  const PRIORITY_DIRS = ['packages', 'apps', 'libs', 'services', 'modules'];
@@ -1016,28 +997,7 @@ export function registerNpmRoutes({
1016
997
  const packageFiles = [];
1017
998
  const startTime = Date.now();
1018
999
 
1019
- // 需要忽略的目录列表
1020
- const IGNORED_DIRS = new Set([
1021
- 'node_modules',
1022
- '.git',
1023
- '.svn',
1024
- '.hg',
1025
- 'dist',
1026
- 'build',
1027
- 'coverage',
1028
- 'out',
1029
- 'target',
1030
- 'vendor',
1031
- '__pycache__',
1032
- '.next',
1033
- '.nuxt',
1034
- '.vscode',
1035
- '.idea',
1036
- 'tmp',
1037
- 'temp',
1038
- 'cache',
1039
- '.cache'
1040
- ]);
1000
+ // 目录剪枝清单见 src/utils/skipPatterns.js(与另一处扫描共用)
1041
1001
 
1042
1002
  let scannedCount = 0;
1043
1003
  let fileReadCount = 0;
@@ -48,7 +48,7 @@ const PROBE_TIMEOUT_MS = 2500;
48
48
  async function probe(peer) {
49
49
  try {
50
50
  const info = await fetchPeerInfo(peer, { timeoutMs: PROBE_TIMEOUT_MS });
51
- return { online: true, remoteName: info.name || '', version: info.version || '', remoteId: info.id || '' };
51
+ return { online: true, remoteName: info.name || '', remoteAvatar: info.avatar || '', version: info.version || '', remoteId: info.id || '' };
52
52
  } catch (err) {
53
53
  return { online: false, error: String(err?.message || err) };
54
54
  }
@@ -121,6 +121,7 @@ export function registerPeerSettingsRoutes({
121
121
  return {
122
122
  id: p.id,
123
123
  name: remoteName || p.name,
124
+ avatar: p.online ? String(p.remoteAvatar || '') : '',
124
125
  url: p.url,
125
126
  online: p.online,
126
127
  version: p.version || '',
@@ -147,7 +148,9 @@ export function registerPeerSettingsRoutes({
147
148
  }
148
149
  const state = await updateSelf({
149
150
  name: typeof body.name === 'string' ? body.name : undefined,
150
- avatar: typeof body.avatar === 'string' ? body.avatar.slice(0, 200) : undefined,
151
+ // 上传的头像在客户端已裁成 256×256 并转成 data URL(约 10~30KB),所以这里放宽到 400KB。
152
+ // 超过这个量级基本是误传原图 —— 前端已经拒绝过 8MB 以上的源文件。
153
+ avatar: typeof body.avatar === 'string' ? body.avatar.slice(0, 400_000) : undefined,
151
154
  port: body.port !== undefined ? Number(body.port) : undefined,
152
155
  enabled: typeof body.enabled === 'boolean' ? body.enabled : undefined
153
156
  });
@@ -235,6 +238,22 @@ export function registerPeerSettingsRoutes({
235
238
  res.json({ success: true, ...result });
236
239
  }));
237
240
 
241
+ /**
242
+ * GET /api/agent-identity —— 这个 g ai 叫什么、长什么样。
243
+ *
244
+ * 单独一条极小的接口,是因为它要用在**每个**对话容器和悬浮 dock 上:让它们都去调
245
+ * /api/peer-settings 会连带做一遍对端探活(每台 2.5s 超时),代价完全没必要。
246
+ * 也不返回令牌 —— 界面只需要名字和头像。
247
+ */
248
+ app.get('/api/agent-identity', asyncRoute(async (req, res) => {
249
+ const state = await ensureSelf();
250
+ res.json({
251
+ success: true,
252
+ name: state.self.name || '',
253
+ avatar: state.self.avatar || ''
254
+ });
255
+ }));
256
+
238
257
  /** GET /api/peer-settings/defaults —— 面板第一次打开时给默认值(端口号)。 */
239
258
  app.get('/api/peer-settings/defaults', (req, res) => {
240
259
  res.json({ success: true, port: PEER_DEFAULT_PORT });
@@ -42,6 +42,8 @@ import path from 'path';
42
42
  import { callLlmJson } from './workbench/llmClient.js';
43
43
  import { stripThinkingBlocks } from './workbench/jsonParse.js';
44
44
  import { buildProjectEntries, canonicalProjectPath } from './workbench/projectRegistry.js';
45
+ // 运行期取模型的唯一入口(内置默认模型不落盘,直读 raw.models 会判成"未配置模型")
46
+ import { resolveModels } from '../../../config.js';
45
47
  import { TASKS_FILE, readJson } from './workbench/shared.js';
46
48
  import { buildModelFallbackChain, modelLabel, runWithModelFallback } from '../../../utils/aiModelFallback.js';
47
49
  import logger from '../utils/logger.js';
@@ -550,7 +552,7 @@ export function registerProjectStartupAiRoutes({ app, configManager, getCurrentP
550
552
  let chain;
551
553
  try {
552
554
  const rawConfig = await configManager.readRawConfigFile();
553
- const models = Array.isArray(rawConfig.models) ? rawConfig.models : [];
555
+ const models = resolveModels(rawConfig);
554
556
  chain = buildModelFallbackChain(models);
555
557
  } catch (err) {
556
558
  return res.status(500).json({ success: false, code: 'CONFIG_ERR', error: '读取 AI 配置失败: ' + err.message });