@serifpersia/dango 3.5.0 → 3.5.1

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 (72) hide show
  1. package/README.md +1 -15
  2. package/client/dist/assets/{AnimeCard-CpMObnqU.js → AnimeCard-B2ErWl4t.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-DkDW8o1k.js → AnimeInfo-Dfd4zWTx.js} +1 -1
  4. package/client/dist/assets/AnimeInfoPage-_DAHOnnx.js +2 -0
  5. package/client/dist/assets/{Asmr-B08Aimrk.js → Asmr-CppKRwf3.js} +2 -2
  6. package/client/dist/assets/{AsmrResetProgressModal-CZMbyJZz.js → AsmrResetProgressModal-DqZ8um_v.js} +1 -1
  7. package/client/dist/assets/{AvSyncCalibrator-VoOEtoX9.js → AvSyncCalibrator-DH6KEsbi.js} +1 -1
  8. package/client/dist/assets/{Home-C3Vck_99.js → Home-bqn1BmP7.js} +1 -1
  9. package/client/dist/assets/Insights-KlshyXuf.js +1 -0
  10. package/client/dist/assets/{LibraryListPage-CUzEUs5k.js → LibraryListPage-Ba7501DJ.js} +1 -1
  11. package/client/dist/assets/{ListeningList-CoeQ17lz.js → ListeningList-CycltWkq.js} +1 -1
  12. package/client/dist/assets/Manga-C3foLd_W.js +1 -0
  13. package/client/dist/assets/{MangaInfoPage-wqYZN_sT.js → MangaInfoPage-CKgBcwjP.js} +1 -1
  14. package/client/dist/assets/{MangaReadPage-BbyExwBN.js → MangaReadPage-B0Nr5zbg.js} +1 -1
  15. package/client/dist/assets/{MangaResetProgressModal-Dg0xhJQI.js → MangaResetProgressModal-C9YlH9oi.js} +1 -1
  16. package/client/dist/assets/{Mature-ZKR5vMIv.js → Mature-DVvlLfAy.js} +1 -1
  17. package/client/dist/assets/{MediaCard-9NGAjN3E.js → MediaCard-Auk42bqx.js} +1 -1
  18. package/client/dist/assets/Music-BeCMeHS7.js +1 -0
  19. package/client/dist/assets/{OptionListMenu-DcHg1QsF.js → OptionListMenu-AHGTsUIM.js} +1 -1
  20. package/client/dist/assets/{Player-V9IueAzT.js → Player-Diz4QXSs.js} +6 -6
  21. package/client/dist/assets/{PlayerSettings-BZtjBWWq.js → PlayerSettings-B8CsR3hI.js} +1 -1
  22. package/client/dist/assets/QueueOptionsButton-tpZ79_8s.js +1 -0
  23. package/client/dist/assets/{QueueRail-CO2ocUNx.js → QueueRail-CvrVAD_w.js} +1 -1
  24. package/client/dist/assets/{Radio-CJ-ra4vb.js → Radio-s_2zeYYn.js} +1 -1
  25. package/client/dist/assets/{ReadingList-CSvUUtZ3.js → ReadingList-DLKfiYLy.js} +1 -1
  26. package/client/dist/assets/{ResetProgressModal-5FOWMuqi.js → ResetProgressModal-jPtyfyf0.js} +1 -1
  27. package/client/dist/assets/{Search-q0GUdNMS.js → Search-UfzxfJ8k.js} +1 -1
  28. package/client/dist/assets/Settings-CLP_y7EE.js +21 -0
  29. package/client/dist/assets/{Settings-AuFxQcJF.css → Settings-CwIWLSfY.css} +1 -1
  30. package/client/dist/assets/{SkeletonGrid-DY_7CXpX.js → SkeletonGrid-21to5FX0.js} +1 -1
  31. package/client/dist/assets/ToggleSwitch-BPil0d_k.css +1 -0
  32. package/client/dist/assets/ToggleSwitch-CN_ppEc9.js +1 -0
  33. package/client/dist/assets/{Trackers-Dn7P6AfI.js → Trackers-QqnmwIKk.js} +1 -1
  34. package/client/dist/assets/{Tv-BfaWoR72.js → Tv-D3yVtdDx.js} +4 -4
  35. package/client/dist/assets/{TvInfo-CgEVN57T.js → TvInfo-gue0nYi0.js} +1 -1
  36. package/client/dist/assets/{TvPopup-B-vYyDQF.js → TvPopup-CkXBuHHD.js} +1 -1
  37. package/client/dist/assets/{TvSearch-CnnVkms6.js → TvSearch-DLP_3Nf2.js} +1 -1
  38. package/client/dist/assets/{TvWatchlist-BLVF_row.js → TvWatchlist-DzgVXuh9.js} +1 -1
  39. package/client/dist/assets/{Watchlist-wd9cCDOK.js → Watchlist-DeO4iNhW.js} +1 -1
  40. package/client/dist/assets/{hls-Bej65gvf.js → hls-D3SWhYIU.js} +1 -1
  41. package/client/dist/assets/index-BGCpLf49.js +178 -0
  42. package/client/dist/assets/index-w_r2lTCe.css +1 -0
  43. package/client/dist/assets/{useAnimeInfoData-ZmMruFBq.js → useAnimeInfoData-CWRGC9fX.js} +1 -1
  44. package/client/dist/assets/{useAsmr-z-txLq1s.js → useAsmr-5n3wPm5z.js} +1 -1
  45. package/client/dist/assets/{useAsmrPopup-DU55UhPN.js → useAsmrPopup-BxGzhLmJ.js} +1 -1
  46. package/client/dist/assets/{useMangaLibrary-D92WQbf5.js → useMangaLibrary-DUteTFgU.js} +1 -1
  47. package/client/dist/assets/{useMangaPopup-TJOA229J.js → useMangaPopup-BWU1Tz5e.js} +1 -1
  48. package/client/dist/assets/{useProviders-fmZrOyDC.js → useProviders-mkl-w-e4.js} +1 -1
  49. package/client/dist/assets/{useTv-CmfxzpS-.js → useTv-Dl-E6HBp.js} +1 -1
  50. package/client/dist/assets/{useTvLibrary-0y9NZnsk.js → useTvLibrary-BVECcmlW.js} +1 -1
  51. package/client/dist/index.html +2 -2
  52. package/package.json +2 -2
  53. package/server/dist/app-hono.js +0 -6
  54. package/server/dist/config.js +0 -1
  55. package/server/dist/lib/{discord-roles-sync.service.js → recommendations.service.js} +0 -149
  56. package/server/dist/server.js +0 -2
  57. package/server/dist/shipped-defaults.js +0 -1
  58. package/server/dist/trpc/routers/discord.js +0 -4
  59. package/server/dist/trpc/routers/insights.js +1 -31
  60. package/server/dist/trpc/routers/settings.js +0 -10
  61. package/server/package.json +1 -1
  62. package/client/dist/assets/AnimeInfoPage-l0wIHS7j.js +0 -2
  63. package/client/dist/assets/Insights-nW34Wbg1.js +0 -1
  64. package/client/dist/assets/Manga-CeSb5K2w.js +0 -1
  65. package/client/dist/assets/Map-BtXwpBOC.js +0 -1
  66. package/client/dist/assets/Map-CXFqXmsZ.css +0 -1
  67. package/client/dist/assets/Music-CljVJFCj.js +0 -1
  68. package/client/dist/assets/QueueOptionsButton-CzzisJ3N.js +0 -1
  69. package/client/dist/assets/Settings-CyT9Lyhz.js +0 -21
  70. package/client/dist/assets/index-Cc1Up_NI.css +0 -1
  71. package/client/dist/assets/index-Dk0ASzEz.js +0 -178
  72. package/server/dist/utils/machine-id.js +0 -39
@@ -1 +0,0 @@
1
- import{D as qt,g as Q,N as kr,T as ee,q as Eo,x as So,d as Ot,h as Qt,X as ra,S as Mo,A as Bt,u as X}from"./vendor-core-DfaOB3Rn.js";import{I as Qr}from"./vendor-icons-DrybRNxP.js";class rt{constructor(){this._partials=new Float64Array(32),this._n=0}add(n){const e=this._partials;let r=0;for(let i=0;i<this._n&&i<32;i++){const a=e[i],o=n+a,u=Math.abs(n)<Math.abs(a)?n-(o-a):a-(o-n);u&&(e[r++]=u),n=o}return e[r]=n,this._n=r+1,this}valueOf(){const n=this._partials;let e=this._n,r,i,a,o=0;if(e>0){for(o=n[--e];e>0&&(r=o,i=n[--e],o=r+i,a=i-(o-r),!a););e>0&&(a<0&&n[e-1]<0||a>0&&n[e-1]>0)&&(i=a*2,r=o+i,i==r-o&&(o=r))}return o}}function*ko(t){for(const n of t)yield*n}function ia(t){return Array.from(ko(t))}function jt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=Math.max(0,Math.ceil((n-t)/e))|0,a=new Array(i);++r<i;)a[r]=t+r*e;return a}var C=1e-6,Sn=1e-12,B=Math.PI,Z=B/2,re=B/4,ut=B*2,Y=180/B,R=B/180,G=Math.abs,cn=Math.atan,ct=Math.atan2,b=Math.cos,Bn=Math.ceil,aa=Math.exp,Ve=Math.hypot,ie=Math.log,Be=Math.pow,P=Math.sin,mt=Math.sign||function(t){return t>0?1:t<0?-1:0},nt=Math.sqrt,Nr=Math.tan;function oa(t){return t>1?0:t<-1?B:Math.acos(t)}function st(t){return t>1?Z:t<-1?-Z:Math.asin(t)}function ti(t){return(t=P(t/2))*t}function V(){}function ae(t,n){t&&ei.hasOwnProperty(t.type)&&ei[t.type](t,n)}var ni={Feature:function(t,n){ae(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)ae(e[r].geometry,n)}},ei={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){We(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)We(e[r],n,0)},Polygon:function(t,n){ri(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)ri(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)ae(e[r],n)}};function We(t,n,e){var r=-1,i=t.length-e,a;for(n.lineStart();++r<i;)a=t[r],n.point(a[0],a[1],a[2]);n.lineEnd()}function ri(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)We(t[e],n,1);n.polygonEnd()}function yt(t,n){t&&ni.hasOwnProperty(t.type)?ni[t.type](t,n):ae(t,n)}var oe=new rt,ue=new rt,ua,ca,Ue,Ze,je,Mt={point:V,lineStart:V,lineEnd:V,polygonStart:function(){oe=new rt,Mt.lineStart=No,Mt.lineEnd=Po},polygonEnd:function(){var t=+oe;ue.add(t<0?ut+t:t),this.lineStart=this.lineEnd=this.point=V},sphere:function(){ue.add(ut)}};function No(){Mt.point=$o}function Po(){sa(ua,ca)}function $o(t,n){Mt.point=sa,ua=t,ca=n,t*=R,n*=R,Ue=t,Ze=b(n=n/2+re),je=P(n)}function sa(t,n){t*=R,n*=R,n=n/2+re;var e=t-Ue,r=e>=0?1:-1,i=r*e,a=b(n),o=P(n),u=je*o,s=Ze*a+u*b(i),l=u*r*P(i);oe.add(ct(l,s)),Ue=t,Ze=a,je=o}function bo(t){return ue=new rt,yt(t,Mt),ue*2}function ce(t){return[ct(t[1],t[0]),st(t[2])]}function Vt(t){var n=t[0],e=t[1],r=b(e);return[r*b(n),r*P(n),P(e)]}function Gn(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function en(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Ge(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function Fn(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function se(t){var n=nt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var K,lt,U,pt,Xt,la,fa,tn,An,Gt,It,Ct={point:Je,lineStart:ii,lineEnd:ai,polygonStart:function(){Ct.point=pa,Ct.lineStart=Co,Ct.lineEnd=Ro,An=new rt,Mt.polygonStart()},polygonEnd:function(){Mt.polygonEnd(),Ct.point=Je,Ct.lineStart=ii,Ct.lineEnd=ai,oe<0?(K=-(U=180),lt=-(pt=90)):An>C?pt=90:An<-C&&(lt=-90),It[0]=K,It[1]=U},sphere:function(){K=-(U=180),lt=-(pt=90)}};function Je(t,n){Gt.push(It=[K=t,U=t]),n<lt&&(lt=n),n>pt&&(pt=n)}function ha(t,n){var e=Vt([t*R,n*R]);if(tn){var r=en(tn,e),i=[r[1],-r[0],0],a=en(i,r);se(a),a=ce(a);var o=t-Xt,u=o>0?1:-1,s=a[0]*Y*u,l,c=G(o)>180;c^(u*Xt<s&&s<u*t)?(l=a[1]*Y,l>pt&&(pt=l)):(s=(s+360)%360-180,c^(u*Xt<s&&s<u*t)?(l=-a[1]*Y,l<lt&&(lt=l)):(n<lt&&(lt=n),n>pt&&(pt=n))),c?t<Xt?ht(K,t)>ht(K,U)&&(U=t):ht(t,U)>ht(K,U)&&(K=t):U>=K?(t<K&&(K=t),t>U&&(U=t)):t>Xt?ht(K,t)>ht(K,U)&&(U=t):ht(t,U)>ht(K,U)&&(K=t)}else Gt.push(It=[K=t,U=t]);n<lt&&(lt=n),n>pt&&(pt=n),tn=e,Xt=t}function ii(){Ct.point=ha}function ai(){It[0]=K,It[1]=U,Ct.point=Je,tn=null}function pa(t,n){if(tn){var e=t-Xt;An.add(G(e)>180?e+(e>0?360:-360):e)}else la=t,fa=n;Mt.point(t,n),ha(t,n)}function Co(){Mt.lineStart()}function Ro(){pa(la,fa),Mt.lineEnd(),G(An)>C&&(K=-(U=180)),It[0]=K,It[1]=U,tn=null}function ht(t,n){return(n-=t)<0?n+360:n}function zo(t,n){return t[0]-n[0]}function oi(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}function To(t){var n,e,r,i,a,o,u;if(pt=U=-(K=lt=1/0),Gt=[],yt(t,Ct),e=Gt.length){for(Gt.sort(zo),n=1,r=Gt[0],a=[r];n<e;++n)i=Gt[n],oi(r,i[0])||oi(r,i[1])?(ht(r[0],i[1])>ht(r[0],r[1])&&(r[1]=i[1]),ht(i[0],r[1])>ht(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=a.length-1,n=0,r=a[e];n<=e;r=i,++n)i=a[n],(u=ht(r[1],i[0]))>o&&(o=u,K=i[0],U=r[1])}return Gt=It=null,K===1/0||lt===1/0?[[NaN,NaN],[NaN,NaN]]:[[K,lt],[U,pt]]}var fn,le,fe,he,pe,ge,de,me,Qe,tr,nr,ga,da,it,at,ot,wt={sphere:V,point:Pr,lineStart:ui,lineEnd:ci,polygonStart:function(){wt.lineStart=qo,wt.lineEnd=Do},polygonEnd:function(){wt.lineStart=ui,wt.lineEnd=ci}};function Pr(t,n){t*=R,n*=R;var e=b(n);zn(e*b(t),e*P(t),P(n))}function zn(t,n,e){++fn,fe+=(t-fe)/fn,he+=(n-he)/fn,pe+=(e-pe)/fn}function ui(){wt.point=Io}function Io(t,n){t*=R,n*=R;var e=b(n);it=e*b(t),at=e*P(t),ot=P(n),wt.point=Lo,zn(it,at,ot)}function Lo(t,n){t*=R,n*=R;var e=b(n),r=e*b(t),i=e*P(t),a=P(n),o=ct(nt((o=at*a-ot*i)*o+(o=ot*r-it*a)*o+(o=it*i-at*r)*o),it*r+at*i+ot*a);le+=o,ge+=o*(it+(it=r)),de+=o*(at+(at=i)),me+=o*(ot+(ot=a)),zn(it,at,ot)}function ci(){wt.point=Pr}function qo(){wt.point=Bo}function Do(){ma(ga,da),wt.point=Pr}function Bo(t,n){ga=t,da=n,t*=R,n*=R,wt.point=ma;var e=b(n);it=e*b(t),at=e*P(t),ot=P(n),zn(it,at,ot)}function ma(t,n){t*=R,n*=R;var e=b(n),r=e*b(t),i=e*P(t),a=P(n),o=at*a-ot*i,u=ot*r-it*a,s=it*i-at*r,l=Ve(o,u,s),c=st(l),f=l&&-c/l;Qe.add(f*o),tr.add(f*u),nr.add(f*s),le+=c,ge+=c*(it+(it=r)),de+=c*(at+(at=i)),me+=c*(ot+(ot=a)),zn(it,at,ot)}function Go(t){fn=le=fe=he=pe=ge=de=me=0,Qe=new rt,tr=new rt,nr=new rt,yt(t,wt);var n=+Qe,e=+tr,r=+nr,i=Ve(n,e,r);return i<Sn&&(n=ge,e=de,r=me,le<C&&(n=fe,e=he,r=pe),i=Ve(n,e,r),i<Sn)?[NaN,NaN]:[ct(e,n)*Y,st(r/i)*Y]}function Zt(t){return function(){return t}}function er(t,n){function e(r,i){return r=t(r,i),n(r[0],r[1])}return t.invert&&n.invert&&(e.invert=function(r,i){return r=n.invert(r,i),r&&t.invert(r[0],r[1])}),e}function rr(t,n){return G(t)>B&&(t-=Math.round(t/ut)*ut),[t,n]}rr.invert=rr;function $r(t,n,e){return(t%=ut)?n||e?er(li(t),fi(n,e)):li(t):n||e?fi(n,e):rr}function si(t){return function(n,e){return n+=t,G(n)>B&&(n-=Math.round(n/ut)*ut),[n,e]}}function li(t){var n=si(t);return n.invert=si(-t),n}function fi(t,n){var e=b(t),r=P(t),i=b(n),a=P(n);function o(u,s){var l=b(s),c=b(u)*l,f=P(u)*l,h=P(s),p=h*e+c*r;return[ct(f*i-p*a,c*e-h*r),st(p*i+f*a)]}return o.invert=function(u,s){var l=b(s),c=b(u)*l,f=P(u)*l,h=P(s),p=h*i-f*a;return[ct(f*i+h*a,c*e+p*r),st(p*e-c*r)]},o}function va(t){t=$r(t[0]*R,t[1]*R,t.length>2?t[2]*R:0);function n(e){return e=t(e[0]*R,e[1]*R),e[0]*=Y,e[1]*=Y,e}return n.invert=function(e){return e=t.invert(e[0]*R,e[1]*R),e[0]*=Y,e[1]*=Y,e},n}function ya(t,n,e,r,i,a){if(e){var o=b(n),u=P(n),s=r*e;i==null?(i=n+r*ut,a=n-s/2):(i=hi(o,i),a=hi(o,a),(r>0?i<a:i>a)&&(i+=r*ut));for(var l,c=i;r>0?c>a:c<a;c-=s)l=ce([o,-u*b(c),-u*P(c)]),t.point(l[0],l[1])}}function hi(t,n){n=Vt(n),n[0]-=t,se(n);var e=oa(-n[1]);return((-n[2]<0?-e:e)+ut-C)%ut}function Fo(){var t=Zt([0,0]),n=Zt(90),e=Zt(2),r,i,a={point:o};function o(s,l){r.push(s=i(s,l)),s[0]*=Y,s[1]*=Y}function u(){var s=t.apply(this,arguments),l=n.apply(this,arguments)*R,c=e.apply(this,arguments)*R;return r=[],i=$r(-s[0]*R,-s[1]*R,0).invert,ya(a,l,c,1),s={type:"Polygon",coordinates:[r]},r=i=null,s}return u.center=function(s){return arguments.length?(t=typeof s=="function"?s:Zt([+s[0],+s[1]]),u):t},u.radius=function(s){return arguments.length?(n=typeof s=="function"?s:Zt(+s),u):n},u.precision=function(s){return arguments.length?(e=typeof s=="function"?s:Zt(+s),u):e},u}function Aa(){var t=[],n;return{point:function(e,r,i){n.push([e,r,i])},lineStart:function(){t.push(n=[])},lineEnd:V,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var e=t;return t=[],n=null,e}}}function Un(t,n){return G(t[0]-n[0])<C&&G(t[1]-n[1])<C}function Hn(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function wa(t,n,e,r,i){var a=[],o=[],u,s;if(t.forEach(function(g){if(!((_=g.length-1)<=0)){var _,w=g[0],y=g[_],E;if(Un(w,y)){if(!w[2]&&!y[2]){for(i.lineStart(),u=0;u<_;++u)i.point((w=g[u])[0],w[1]);i.lineEnd();return}y[0]+=2*C}a.push(E=new Hn(w,g,null,!0)),o.push(E.o=new Hn(w,null,E,!1)),a.push(E=new Hn(y,g,null,!1)),o.push(E.o=new Hn(y,null,E,!0))}}),!!a.length){for(o.sort(n),pi(a),pi(o),u=0,s=o.length;u<s;++u)o[u].e=e=!e;for(var l=a[0],c,f;;){for(var h=l,p=!0;h.v;)if((h=h.n)===l)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(p)for(u=0,s=c.length;u<s;++u)i.point((f=c[u])[0],f[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(p)for(c=h.p.z,u=c.length-1;u>=0;--u)i.point((f=c[u])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}h=h.o,c=h.z,p=!p}while(!h.v);i.lineEnd()}}}function pi(t){if(n=t.length){for(var n,e=0,r=t[0],i;++e<n;)r.n=i=t[e],i.p=r,r=i;r.n=i=t[0],i.p=r}}function Fe(t){return G(t[0])<=B?t[0]:mt(t[0])*((G(t[0])+B)%ut-B)}function _a(t,n){var e=Fe(n),r=n[1],i=P(r),a=[P(e),-b(e),0],o=0,u=0,s=new rt;i===1?r=Z+C:i===-1&&(r=-Z-C);for(var l=0,c=t.length;l<c;++l)if(h=(f=t[l]).length)for(var f,h,p=f[h-1],g=Fe(p),_=p[1]/2+re,w=P(_),y=b(_),E=0;E<h;++E,g=x,w=N,y=T,p=A){var A=f[E],x=Fe(A),S=A[1]/2+re,N=P(S),T=b(S),L=x-g,q=L>=0?1:-1,F=q*L,z=F>B,j=w*N;if(s.add(ct(j*q*P(F),y*T+j*b(F))),o+=z?L+q*ut:L,z^g>=e^x>=e){var O=en(Vt(p),Vt(A));se(O);var m=en(a,O);se(m);var d=(z^L>=0?-1:1)*st(m[2]);(r>d||r===d&&(O[0]||O[1]))&&(u+=z^L>=0?1:-1)}}return(o<-C||o<C&&s<-Sn)^u&1}function xa(t,n,e,r){return function(i){var a=n(i),o=Aa(),u=n(o),s=!1,l,c,f,h={point:p,lineStart:_,lineEnd:w,polygonStart:function(){h.point=y,h.lineStart=E,h.lineEnd=A,c=[],l=[]},polygonEnd:function(){h.point=p,h.lineStart=_,h.lineEnd=w,c=ia(c);var x=_a(l,r);c.length?(s||(i.polygonStart(),s=!0),wa(c,Xo,x,e,i)):x&&(s||(i.polygonStart(),s=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),s&&(i.polygonEnd(),s=!1),c=l=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function p(x,S){t(x,S)&&i.point(x,S)}function g(x,S){a.point(x,S)}function _(){h.point=g,a.lineStart()}function w(){h.point=p,a.lineEnd()}function y(x,S){f.push([x,S]),u.point(x,S)}function E(){u.lineStart(),f=[]}function A(){y(f[0][0],f[0][1]),u.lineEnd();var x=u.clean(),S=o.result(),N,T=S.length,L,q,F;if(f.pop(),l.push(f),f=null,!!T){if(x&1){if(q=S[0],(L=q.length-1)>0){for(s||(i.polygonStart(),s=!0),i.lineStart(),N=0;N<L;++N)i.point((F=q[N])[0],F[1]);i.lineEnd()}return}T>1&&x&2&&S.push(S.pop().concat(S.shift())),c.push(S.filter(Ho))}}return h}}function Ho(t){return t.length>1}function Xo(t,n){return((t=t.x)[0]<0?t[1]-Z-C:Z-t[1])-((n=n.x)[0]<0?n[1]-Z-C:Z-n[1])}const ir=xa(function(){return!0},Oo,Ko,[-B,-Z]);function Oo(t){var n=NaN,e=NaN,r=NaN,i;return{lineStart:function(){t.lineStart(),i=1},point:function(a,o){var u=a>0?B:-B,s=G(a-n);G(s-B)<C?(t.point(n,e=(e+o)/2>0?Z:-Z),t.point(r,e),t.lineEnd(),t.lineStart(),t.point(u,e),t.point(a,e),i=0):r!==u&&s>=B&&(G(n-r)<C&&(n-=r*C),G(a-u)<C&&(a-=u*C),e=Yo(n,e,a,o),t.point(r,e),t.lineEnd(),t.lineStart(),t.point(u,e),i=0),t.point(n=a,e=o),r=u},lineEnd:function(){t.lineEnd(),n=e=NaN},clean:function(){return 2-i}}}function Yo(t,n,e,r){var i,a,o=P(t-e);return G(o)>C?cn((P(n)*(a=b(r))*P(e)-P(r)*(i=b(n))*P(t))/(i*a*o)):(n+r)/2}function Ko(t,n,e,r){var i;if(t==null)i=e*Z,r.point(-B,i),r.point(0,i),r.point(B,i),r.point(B,0),r.point(B,-i),r.point(0,-i),r.point(-B,-i),r.point(-B,0),r.point(-B,i);else if(G(t[0]-n[0])>C){var a=t[0]<n[0]?B:-B;i=e*a/2,r.point(-a,i),r.point(0,i),r.point(a,i)}else r.point(n[0],n[1])}function Ea(t){var n=b(t),e=2*R,r=n>0,i=G(n)>C;function a(c,f,h,p){ya(p,t,e,h,c,f)}function o(c,f){return b(c)*b(f)>n}function u(c){var f,h,p,g,_;return{lineStart:function(){g=p=!1,_=1},point:function(w,y){var E=[w,y],A,x=o(w,y),S=r?x?0:l(w,y):x?l(w+(w<0?B:-B),y):0;if(!f&&(g=p=x)&&c.lineStart(),x!==p&&(A=s(f,E),(!A||Un(f,A)||Un(E,A))&&(E[2]=1)),x!==p)_=0,x?(c.lineStart(),A=s(E,f),c.point(A[0],A[1])):(A=s(f,E),c.point(A[0],A[1],2),c.lineEnd()),f=A;else if(i&&f&&r^x){var N;!(S&h)&&(N=s(E,f,!0))&&(_=0,r?(c.lineStart(),c.point(N[0][0],N[0][1]),c.point(N[1][0],N[1][1]),c.lineEnd()):(c.point(N[1][0],N[1][1]),c.lineEnd(),c.lineStart(),c.point(N[0][0],N[0][1],3)))}x&&(!f||!Un(f,E))&&c.point(E[0],E[1]),f=E,p=x,h=S},lineEnd:function(){p&&c.lineEnd(),f=null},clean:function(){return _|(g&&p)<<1}}}function s(c,f,h){var p=Vt(c),g=Vt(f),_=[1,0,0],w=en(p,g),y=Gn(w,w),E=w[0],A=y-E*E;if(!A)return!h&&c;var x=n*y/A,S=-n*E/A,N=en(_,w),T=Fn(_,x),L=Fn(w,S);Ge(T,L);var q=N,F=Gn(T,q),z=Gn(q,q),j=F*F-z*(Gn(T,T)-1);if(!(j<0)){var O=nt(j),m=Fn(q,(-F-O)/z);if(Ge(m,T),m=ce(m),!h)return m;var d=c[0],v=f[0],M=c[1],k=f[1],$;v<d&&($=d,d=v,v=$);var I=v-d,D=G(I-B)<C,H=D||I<C;if(!D&&k<M&&($=M,M=k,k=$),H?D?M+k>0^m[1]<(G(m[0]-d)<C?M:k):M<=m[1]&&m[1]<=k:I>B^(d<=m[0]&&m[0]<=v)){var J=Fn(q,(-F+O)/z);return Ge(J,T),[m,ce(J)]}}}function l(c,f){var h=r?t:B-t,p=0;return c<-h?p|=1:c>h&&(p|=2),f<-h?p|=4:f>h&&(p|=8),p}return xa(o,u,a,r?[0,-t]:[-B,t-B])}function Vo(t,n,e,r,i,a){var o=t[0],u=t[1],s=n[0],l=n[1],c=0,f=1,h=s-o,p=l-u,g;if(g=e-o,!(!h&&g>0)){if(g/=h,h<0){if(g<c)return;g<f&&(f=g)}else if(h>0){if(g>f)return;g>c&&(c=g)}if(g=i-o,!(!h&&g<0)){if(g/=h,h<0){if(g>f)return;g>c&&(c=g)}else if(h>0){if(g<c)return;g<f&&(f=g)}if(g=r-u,!(!p&&g>0)){if(g/=p,p<0){if(g<c)return;g<f&&(f=g)}else if(p>0){if(g>f)return;g>c&&(c=g)}if(g=a-u,!(!p&&g<0)){if(g/=p,p<0){if(g>f)return;g>c&&(c=g)}else if(p>0){if(g<c)return;g<f&&(f=g)}return c>0&&(t[0]=o+c*h,t[1]=u+c*p),f<1&&(n[0]=o+f*h,n[1]=u+f*p),!0}}}}}var hn=1e9,Xn=-hn;function ze(t,n,e,r){function i(l,c){return t<=l&&l<=e&&n<=c&&c<=r}function a(l,c,f,h){var p=0,g=0;if(l==null||(p=o(l,f))!==(g=o(c,f))||s(l,c)<0^f>0)do h.point(p===0||p===3?t:e,p>1?r:n);while((p=(p+f+4)%4)!==g);else h.point(c[0],c[1])}function o(l,c){return G(l[0]-t)<C?c>0?0:3:G(l[0]-e)<C?c>0?2:1:G(l[1]-n)<C?c>0?1:0:c>0?3:2}function u(l,c){return s(l.x,c.x)}function s(l,c){var f=o(l,1),h=o(c,1);return f!==h?f-h:f===0?c[1]-l[1]:f===1?l[0]-c[0]:f===2?l[1]-c[1]:c[0]-l[0]}return function(l){var c=l,f=Aa(),h,p,g,_,w,y,E,A,x,S,N,T={point:L,lineStart:j,lineEnd:O,polygonStart:F,polygonEnd:z};function L(d,v){i(d,v)&&c.point(d,v)}function q(){for(var d=0,v=0,M=p.length;v<M;++v)for(var k=p[v],$=1,I=k.length,D=k[0],H,J,W=D[0],tt=D[1];$<I;++$)H=W,J=tt,D=k[$],W=D[0],tt=D[1],J<=r?tt>r&&(W-H)*(r-J)>(tt-J)*(t-H)&&++d:tt<=r&&(W-H)*(r-J)<(tt-J)*(t-H)&&--d;return d}function F(){c=f,h=[],p=[],N=!0}function z(){var d=q(),v=N&&d,M=(h=ia(h)).length;(v||M)&&(l.polygonStart(),v&&(l.lineStart(),a(null,null,1,l),l.lineEnd()),M&&wa(h,u,d,a,l),l.polygonEnd()),c=l,h=p=g=null}function j(){T.point=m,p&&p.push(g=[]),S=!0,x=!1,E=A=NaN}function O(){h&&(m(_,w),y&&x&&f.rejoin(),h.push(f.result())),T.point=L,x&&c.lineEnd()}function m(d,v){var M=i(d,v);if(p&&g.push([d,v]),S)_=d,w=v,y=M,S=!1,M&&(c.lineStart(),c.point(d,v));else if(M&&x)c.point(d,v);else{var k=[E=Math.max(Xn,Math.min(hn,E)),A=Math.max(Xn,Math.min(hn,A))],$=[d=Math.max(Xn,Math.min(hn,d)),v=Math.max(Xn,Math.min(hn,v))];Vo(k,$,t,n,e,r)?(x||(c.lineStart(),c.point(k[0],k[1])),c.point($[0],$[1]),M||c.lineEnd(),N=!1):M&&(c.lineStart(),c.point(d,v),N=!1)}E=d,A=v,x=M}return T}}function Wo(){var t=0,n=0,e=960,r=500,i,a,o;return o={stream:function(u){return i&&a===u?i:i=ze(t,n,e,r)(a=u)},extent:function(u){return arguments.length?(t=+u[0][0],n=+u[0][1],e=+u[1][0],r=+u[1][1],i=a=null,o):[[t,n],[e,r]]}}}var ar,or,Zn,jn,rn={sphere:V,point:V,lineStart:Uo,lineEnd:V,polygonStart:V,polygonEnd:V};function Uo(){rn.point=jo,rn.lineEnd=Zo}function Zo(){rn.point=rn.lineEnd=V}function jo(t,n){t*=R,n*=R,or=t,Zn=P(n),jn=b(n),rn.point=Jo}function Jo(t,n){t*=R,n*=R;var e=P(n),r=b(n),i=G(t-or),a=b(i),o=P(i),u=r*o,s=jn*e-Zn*r*a,l=Zn*e+jn*r*a;ar.add(ct(nt(u*u+s*s),l)),or=t,Zn=e,jn=r}function Sa(t){return ar=new rt,yt(t,rn),+ar}var ur=[null,null],Qo={type:"LineString",coordinates:ur};function ve(t,n){return ur[0]=t,ur[1]=n,Sa(Qo)}var gi={Feature:function(t,n){return ye(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(ye(e[r].geometry,n))return!0;return!1}},di={Sphere:function(){return!0},Point:function(t,n){return mi(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(mi(e[r],n))return!0;return!1},LineString:function(t,n){return vi(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(vi(e[r],n))return!0;return!1},Polygon:function(t,n){return yi(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(yi(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(ye(e[r],n))return!0;return!1}};function ye(t,n){return t&&di.hasOwnProperty(t.type)?di[t.type](t,n):!1}function mi(t,n){return ve(t,n)===0}function vi(t,n){for(var e,r,i,a=0,o=t.length;a<o;a++){if(r=ve(t[a],n),r===0||a>0&&(i=ve(t[a],t[a-1]),i>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<Sn*i))return!0;e=r}return!1}function yi(t,n){return!!_a(t.map(tu),Ma(n))}function tu(t){return t=t.map(Ma),t.pop(),t}function Ma(t){return[t[0]*R,t[1]*R]}function nu(t,n){return(t&&gi.hasOwnProperty(t.type)?gi[t.type]:ye)(t,n)}function Ai(t,n,e){var r=jt(t,n-C,e).concat(n);return function(i){return r.map(function(a){return[i,a]})}}function wi(t,n,e){var r=jt(t,n-C,e).concat(n);return function(i){return r.map(function(a){return[a,i]})}}function br(){var t,n,e,r,i,a,o,u,s=10,l=s,c=90,f=360,h,p,g,_,w=2.5;function y(){return{type:"MultiLineString",coordinates:E()}}function E(){return jt(Bn(r/c)*c,e,c).map(g).concat(jt(Bn(u/f)*f,o,f).map(_)).concat(jt(Bn(n/s)*s,t,s).filter(function(A){return G(A%c)>C}).map(h)).concat(jt(Bn(a/l)*l,i,l).filter(function(A){return G(A%f)>C}).map(p))}return y.lines=function(){return E().map(function(A){return{type:"LineString",coordinates:A}})},y.outline=function(){return{type:"Polygon",coordinates:[g(r).concat(_(o).slice(1),g(e).reverse().slice(1),_(u).reverse().slice(1))]}},y.extent=function(A){return arguments.length?y.extentMajor(A).extentMinor(A):y.extentMinor()},y.extentMajor=function(A){return arguments.length?(r=+A[0][0],e=+A[1][0],u=+A[0][1],o=+A[1][1],r>e&&(A=r,r=e,e=A),u>o&&(A=u,u=o,o=A),y.precision(w)):[[r,u],[e,o]]},y.extentMinor=function(A){return arguments.length?(n=+A[0][0],t=+A[1][0],a=+A[0][1],i=+A[1][1],n>t&&(A=n,n=t,t=A),a>i&&(A=a,a=i,i=A),y.precision(w)):[[n,a],[t,i]]},y.step=function(A){return arguments.length?y.stepMajor(A).stepMinor(A):y.stepMinor()},y.stepMajor=function(A){return arguments.length?(c=+A[0],f=+A[1],y):[c,f]},y.stepMinor=function(A){return arguments.length?(s=+A[0],l=+A[1],y):[s,l]},y.precision=function(A){return arguments.length?(w=+A,h=Ai(a,i,90),p=wi(n,t,w),g=Ai(u,o,90),_=wi(r,e,w),y):w},y.extentMajor([[-180,-90+C],[180,90-C]]).extentMinor([[-180,-80-C],[180,80+C]])}function eu(){return br()()}function ru(t,n){var e=t[0]*R,r=t[1]*R,i=n[0]*R,a=n[1]*R,o=b(r),u=P(r),s=b(a),l=P(a),c=o*b(e),f=o*P(e),h=s*b(i),p=s*P(i),g=2*st(nt(ti(a-r)+o*s*ti(i-e))),_=P(g),w=g?function(y){var E=P(y*=g)/_,A=P(g-y)/_,x=A*c+E*h,S=A*f+E*p,N=A*u+E*l;return[ct(S,x)*Y,ct(N,nt(x*x+S*S))*Y]}:function(){return[e*Y,r*Y]};return w.distance=g,w}const Mn=t=>t;var He=new rt,cr=new rt,ka,Na,sr,lr,Rt={point:V,lineStart:V,lineEnd:V,polygonStart:function(){Rt.lineStart=iu,Rt.lineEnd=ou},polygonEnd:function(){Rt.lineStart=Rt.lineEnd=Rt.point=V,He.add(G(cr)),cr=new rt},result:function(){var t=He/2;return He=new rt,t}};function iu(){Rt.point=au}function au(t,n){Rt.point=Pa,ka=sr=t,Na=lr=n}function Pa(t,n){cr.add(lr*t-sr*n),sr=t,lr=n}function ou(){Pa(ka,Na)}var an=1/0,Ae=an,kn=-an,we=kn,_e={point:uu,lineStart:V,lineEnd:V,polygonStart:V,polygonEnd:V,result:function(){var t=[[an,Ae],[kn,we]];return kn=we=-(Ae=an=1/0),t}};function uu(t,n){t<an&&(an=t),t>kn&&(kn=t),n<Ae&&(Ae=n),n>we&&(we=n)}var fr=0,hr=0,pn=0,xe=0,Ee=0,Jt=0,pr=0,gr=0,gn=0,$a,ba,xt,Et,dt={point:Wt,lineStart:_i,lineEnd:xi,polygonStart:function(){dt.lineStart=lu,dt.lineEnd=fu},polygonEnd:function(){dt.point=Wt,dt.lineStart=_i,dt.lineEnd=xi},result:function(){var t=gn?[pr/gn,gr/gn]:Jt?[xe/Jt,Ee/Jt]:pn?[fr/pn,hr/pn]:[NaN,NaN];return fr=hr=pn=xe=Ee=Jt=pr=gr=gn=0,t}};function Wt(t,n){fr+=t,hr+=n,++pn}function _i(){dt.point=cu}function cu(t,n){dt.point=su,Wt(xt=t,Et=n)}function su(t,n){var e=t-xt,r=n-Et,i=nt(e*e+r*r);xe+=i*(xt+t)/2,Ee+=i*(Et+n)/2,Jt+=i,Wt(xt=t,Et=n)}function xi(){dt.point=Wt}function lu(){dt.point=hu}function fu(){Ca($a,ba)}function hu(t,n){dt.point=Ca,Wt($a=xt=t,ba=Et=n)}function Ca(t,n){var e=t-xt,r=n-Et,i=nt(e*e+r*r);xe+=i*(xt+t)/2,Ee+=i*(Et+n)/2,Jt+=i,i=Et*t-xt*n,pr+=i*(xt+t),gr+=i*(Et+n),gn+=i*3,Wt(xt=t,Et=n)}function Ra(t){this._context=t}Ra.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:{this._context.moveTo(t,n),this._point=1;break}case 1:{this._context.lineTo(t,n);break}default:{this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,ut);break}}},result:V};var dr=new rt,Xe,za,Ta,dn,mn,Nn={point:V,lineStart:function(){Nn.point=pu},lineEnd:function(){Xe&&Ia(za,Ta),Nn.point=V},polygonStart:function(){Xe=!0},polygonEnd:function(){Xe=null},result:function(){var t=+dr;return dr=new rt,t}};function pu(t,n){Nn.point=Ia,za=dn=t,Ta=mn=n}function Ia(t,n){dn-=t,mn-=n,dr.add(nt(dn*dn+mn*mn)),dn=t,mn=n}let Ei,Se,Si,Mi;class ki{constructor(n){this._append=n==null?La:gu(n),this._radius=4.5,this._=""}pointRadius(n){return this._radius=+n,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(n,e){switch(this._point){case 0:{this._append`M${n},${e}`,this._point=1;break}case 1:{this._append`L${n},${e}`;break}default:{if(this._append`M${n},${e}`,this._radius!==Si||this._append!==Se){const r=this._radius,i=this._;this._="",this._append`m0,${r}a${r},${r} 0 1,1 0,${-2*r}a${r},${r} 0 1,1 0,${2*r}z`,Si=r,Se=this._append,Mi=this._,this._=i}this._+=Mi;break}}}result(){const n=this._;return this._="",n.length?n:null}}function La(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function gu(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return La;if(n!==Ei){const e=10**n;Ei=n,Se=function(i){let a=1;this._+=i[0];for(const o=i.length;a<o;++a)this._+=Math.round(arguments[a]*e)/e+i[a]}}return Se}function du(t,n){let e=3,r=4.5,i,a;function o(u){return u&&(typeof r=="function"&&a.pointRadius(+r.apply(this,arguments)),yt(u,i(a))),a.result()}return o.area=function(u){return yt(u,i(Rt)),Rt.result()},o.measure=function(u){return yt(u,i(Nn)),Nn.result()},o.bounds=function(u){return yt(u,i(_e)),_e.result()},o.centroid=function(u){return yt(u,i(dt)),dt.result()},o.projection=function(u){return arguments.length?(i=u==null?(t=null,Mn):(t=u).stream,o):t},o.context=function(u){return arguments.length?(a=u==null?(n=null,new ki(e)):new Ra(n=u),typeof r!="function"&&a.pointRadius(r),o):n},o.pointRadius=function(u){return arguments.length?(r=typeof u=="function"?u:(a.pointRadius(+u),+u),o):r},o.digits=function(u){if(!arguments.length)return e;if(u==null)e=null;else{const s=Math.floor(u);if(!(s>=0))throw new RangeError(`invalid digits: ${u}`);e=s}return n===null&&(a=new ki(e)),o},o.projection(t).digits(e).context(n)}function mu(t){return{stream:Tn(t)}}function Tn(t){return function(n){var e=new mr;for(var r in t)e[r]=t[r];return e.stream=n,e}}function mr(){}mr.prototype={constructor:mr,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Cr(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),r!=null&&t.clipExtent(null),yt(e,t.stream(_e)),n(_e.result()),r!=null&&t.clipExtent(r),t}function Te(t,n,e){return Cr(t,function(r){var i=n[1][0]-n[0][0],a=n[1][1]-n[0][1],o=Math.min(i/(r[1][0]-r[0][0]),a/(r[1][1]-r[0][1])),u=+n[0][0]+(i-o*(r[1][0]+r[0][0]))/2,s=+n[0][1]+(a-o*(r[1][1]+r[0][1]))/2;t.scale(150*o).translate([u,s])},e)}function Rr(t,n,e){return Te(t,[[0,0],n],e)}function zr(t,n,e){return Cr(t,function(r){var i=+n,a=i/(r[1][0]-r[0][0]),o=(i-a*(r[1][0]+r[0][0]))/2,u=-a*r[0][1];t.scale(150*a).translate([o,u])},e)}function Tr(t,n,e){return Cr(t,function(r){var i=+n,a=i/(r[1][1]-r[0][1]),o=-a*r[0][0],u=(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,u])},e)}var Ni=16,vu=b(30*R);function Pi(t,n){return+n?Au(t,n):yu(t)}function yu(t){return Tn({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}function Au(t,n){function e(r,i,a,o,u,s,l,c,f,h,p,g,_,w){var y=l-r,E=c-i,A=y*y+E*E;if(A>4*n&&_--){var x=o+h,S=u+p,N=s+g,T=nt(x*x+S*S+N*N),L=st(N/=T),q=G(G(N)-1)<C||G(a-f)<C?(a+f)/2:ct(S,x),F=t(q,L),z=F[0],j=F[1],O=z-r,m=j-i,d=E*O-y*m;(d*d/A>n||G((y*O+E*m)/A-.5)>.3||o*h+u*p+s*g<vu)&&(e(r,i,a,o,u,s,z,j,q,x/=T,S/=T,N,_,w),w.point(z,j),e(z,j,q,x,S,N,l,c,f,h,p,g,_,w))}}return function(r){var i,a,o,u,s,l,c,f,h,p,g,_,w={point:y,lineStart:E,lineEnd:x,polygonStart:function(){r.polygonStart(),w.lineStart=S},polygonEnd:function(){r.polygonEnd(),w.lineStart=E}};function y(L,q){L=t(L,q),r.point(L[0],L[1])}function E(){f=NaN,w.point=A,r.lineStart()}function A(L,q){var F=Vt([L,q]),z=t(L,q);e(f,h,c,p,g,_,f=z[0],h=z[1],c=L,p=F[0],g=F[1],_=F[2],Ni,r),r.point(f,h)}function x(){w.point=y,r.lineEnd()}function S(){E(),w.point=N,w.lineEnd=T}function N(L,q){A(i=L,q),a=f,o=h,u=p,s=g,l=_,w.point=A}function T(){e(f,h,c,p,g,_,a,o,i,u,s,l,Ni,r),w.lineEnd=x,x()}return w}}var wu=Tn({point:function(t,n){this.stream.point(t*R,n*R)}});function _u(t){return Tn({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}function xu(t,n,e,r,i){function a(o,u){return o*=r,u*=i,[n+t*o,e-t*u]}return a.invert=function(o,u){return[(o-n)/t*r,(e-u)/t*i]},a}function $i(t,n,e,r,i,a){if(!a)return xu(t,n,e,r,i);var o=b(a),u=P(a),s=o*t,l=u*t,c=o/t,f=u/t,h=(u*e-o*n)/t,p=(u*n+o*e)/t;function g(_,w){return _*=r,w*=i,[s*_-l*w+n,e-l*_-s*w]}return g.invert=function(_,w){return[r*(c*_-f*w+h),i*(p-f*_-c*w)]},g}function kt(t){return Ir(function(){return t})()}function Ir(t){var n,e=150,r=480,i=250,a=0,o=0,u=0,s=0,l=0,c,f=0,h=1,p=1,g=null,_=ir,w=null,y,E,A,x=Mn,S=.5,N,T,L,q,F;function z(d){return L(d[0]*R,d[1]*R)}function j(d){return d=L.invert(d[0],d[1]),d&&[d[0]*Y,d[1]*Y]}z.stream=function(d){return q&&F===d?q:q=wu(_u(c)(_(N(x(F=d)))))},z.preclip=function(d){return arguments.length?(_=d,g=void 0,m()):_},z.postclip=function(d){return arguments.length?(x=d,w=y=E=A=null,m()):x},z.clipAngle=function(d){return arguments.length?(_=+d?Ea(g=d*R):(g=null,ir),m()):g*Y},z.clipExtent=function(d){return arguments.length?(x=d==null?(w=y=E=A=null,Mn):ze(w=+d[0][0],y=+d[0][1],E=+d[1][0],A=+d[1][1]),m()):w==null?null:[[w,y],[E,A]]},z.scale=function(d){return arguments.length?(e=+d,O()):e},z.translate=function(d){return arguments.length?(r=+d[0],i=+d[1],O()):[r,i]},z.center=function(d){return arguments.length?(a=d[0]%360*R,o=d[1]%360*R,O()):[a*Y,o*Y]},z.rotate=function(d){return arguments.length?(u=d[0]%360*R,s=d[1]%360*R,l=d.length>2?d[2]%360*R:0,O()):[u*Y,s*Y,l*Y]},z.angle=function(d){return arguments.length?(f=d%360*R,O()):f*Y},z.reflectX=function(d){return arguments.length?(h=d?-1:1,O()):h<0},z.reflectY=function(d){return arguments.length?(p=d?-1:1,O()):p<0},z.precision=function(d){return arguments.length?(N=Pi(T,S=d*d),m()):nt(S)},z.fitExtent=function(d,v){return Te(z,d,v)},z.fitSize=function(d,v){return Rr(z,d,v)},z.fitWidth=function(d,v){return zr(z,d,v)},z.fitHeight=function(d,v){return Tr(z,d,v)};function O(){var d=$i(e,0,0,h,p,f).apply(null,n(a,o)),v=$i(e,r-d[0],i-d[1],h,p,f);return c=$r(u,s,l),T=er(n,v),L=er(c,T),N=Pi(T,S),m()}function m(){return q=F=null,z}return function(){return n=t.apply(this,arguments),z.invert=n.invert&&j,O()}}function Lr(t){var n=0,e=B/3,r=Ir(t),i=r(n,e);return i.parallels=function(a){return arguments.length?r(n=a[0]*R,e=a[1]*R):[n*Y,e*Y]},i}function Eu(t){var n=b(t);function e(r,i){return[r*n,P(i)/n]}return e.invert=function(r,i){return[r/n,st(i*n)]},e}function qa(t,n){var e=P(t),r=(e+P(n))/2;if(G(r)<C)return Eu(t);var i=1+e*(2*r-e),a=nt(i)/r;function o(u,s){var l=nt(i-2*r*P(s))/r;return[l*P(u*=r),a-l*b(u)]}return o.invert=function(u,s){var l=a-s,c=ct(u,G(l))*mt(l);return l*r<0&&(c-=B*mt(u)*mt(l)),[c/r,st((i-(u*u+l*l)*r*r)/(2*r))]},o}function Me(){return Lr(qa).scale(155.424).center([0,33.6442])}function Da(){return Me().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Su(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i<n;)t[i].point(e,r)},sphere:function(){for(var e=-1;++e<n;)t[e].sphere()},lineStart:function(){for(var e=-1;++e<n;)t[e].lineStart()},lineEnd:function(){for(var e=-1;++e<n;)t[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<n;)t[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<n;)t[e].polygonEnd()}}}function Mu(){var t,n,e=Da(),r,i=Me().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a,o=Me().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u,s,l={point:function(h,p){s=[h,p]}};function c(h){var p=h[0],g=h[1];return s=null,r.point(p,g),s||(a.point(p,g),s)||(u.point(p,g),s)}c.invert=function(h){var p=e.scale(),g=e.translate(),_=(h[0]-g[0])/p,w=(h[1]-g[1])/p;return(w>=.12&&w<.234&&_>=-.425&&_<-.214?i:w>=.166&&w<.234&&_>=-.214&&_<-.115?o:e).invert(h)},c.stream=function(h){return t&&n===h?t:t=Su([e.stream(n=h),i.stream(h),o.stream(h)])},c.precision=function(h){return arguments.length?(e.precision(h),i.precision(h),o.precision(h),f()):e.precision()},c.scale=function(h){return arguments.length?(e.scale(h),i.scale(h*.35),o.scale(h),c.translate(e.translate())):e.scale()},c.translate=function(h){if(!arguments.length)return e.translate();var p=e.scale(),g=+h[0],_=+h[1];return r=e.translate(h).clipExtent([[g-.455*p,_-.238*p],[g+.455*p,_+.238*p]]).stream(l),a=i.translate([g-.307*p,_+.201*p]).clipExtent([[g-.425*p+C,_+.12*p+C],[g-.214*p-C,_+.234*p-C]]).stream(l),u=o.translate([g-.205*p,_+.212*p]).clipExtent([[g-.214*p+C,_+.166*p+C],[g-.115*p-C,_+.234*p-C]]).stream(l),f()},c.fitExtent=function(h,p){return Te(c,h,p)},c.fitSize=function(h,p){return Rr(c,h,p)},c.fitWidth=function(h,p){return zr(c,h,p)},c.fitHeight=function(h,p){return Tr(c,h,p)};function f(){return t=n=null,c}return c.scale(1070)}function Ba(t){return function(n,e){var r=b(n),i=b(e),a=t(r*i);return a===1/0?[2,0]:[a*i*P(n),a*P(e)]}}function In(t){return function(n,e){var r=nt(n*n+e*e),i=t(r),a=P(i),o=b(i);return[ct(n*a,r*o),st(r&&e*a/r)]}}var qr=Ba(function(t){return nt(2/(1+t))});qr.invert=In(function(t){return 2*st(t/2)});function ku(){return kt(qr).scale(124.75).clipAngle(180-.001)}var Dr=Ba(function(t){return(t=oa(t))&&t/P(t)});Dr.invert=In(function(t){return t});function Nu(){return kt(Dr).scale(79.4188).clipAngle(180-.001)}function Ln(t,n){return[t,ie(Nr((Z+n)/2))]}Ln.invert=function(t,n){return[t,2*cn(aa(n))-Z]};function Pu(){return Ga(Ln).scale(961/ut)}function Ga(t){var n=kt(t),e=n.center,r=n.scale,i=n.translate,a=n.clipExtent,o=null,u,s,l;n.scale=function(f){return arguments.length?(r(f),c()):r()},n.translate=function(f){return arguments.length?(i(f),c()):i()},n.center=function(f){return arguments.length?(e(f),c()):e()},n.clipExtent=function(f){return arguments.length?(f==null?o=u=s=l=null:(o=+f[0][0],u=+f[0][1],s=+f[1][0],l=+f[1][1]),c()):o==null?null:[[o,u],[s,l]]};function c(){var f=B*r(),h=n(va(n.rotate()).invert([0,0]));return a(o==null?[[h[0]-f,h[1]-f],[h[0]+f,h[1]+f]]:t===Ln?[[Math.max(h[0]-f,o),u],[Math.min(h[0]+f,s),l]]:[[o,Math.max(h[1]-f,u)],[s,Math.min(h[1]+f,l)]])}return c()}function On(t){return Nr((Z+t)/2)}function Fa(t,n){var e=b(t),r=t===n?P(t):ie(e/b(n))/ie(On(n)/On(t)),i=e*Be(On(t),r)/r;if(!r)return Ln;function a(o,u){i>0?u<-Z+C&&(u=-Z+C):u>Z-C&&(u=Z-C);var s=i/Be(On(u),r);return[s*P(r*o),i-s*b(r*o)]}return a.invert=function(o,u){var s=i-u,l=mt(r)*nt(o*o+s*s),c=ct(o,G(s))*mt(s);return s*r<0&&(c-=B*mt(o)*mt(s)),[c/r,2*cn(Be(i/l,1/r))-Z]},a}function $u(){return Lr(Fa).scale(109.5).parallels([30,30])}function Pn(t,n){return[t,n]}Pn.invert=Pn;function bu(){return kt(Pn).scale(152.63)}function Ha(t,n){var e=b(t),r=t===n?P(t):(e-b(n))/(n-t),i=e/r+t;if(G(r)<C)return Pn;function a(o,u){var s=i-u,l=r*o;return[s*P(l),i-s*b(l)]}return a.invert=function(o,u){var s=i-u,l=ct(o,G(s))*mt(s);return s*r<0&&(l-=B*mt(o)*mt(s)),[l/r,i-mt(r)*nt(o*o+s*s)]},a}function Cu(){return Lr(Ha).scale(131.154).center([0,13.9389])}var wn=1.340264,_n=-.081106,xn=893e-6,En=.003796,ke=nt(3)/2,Ru=12;function Br(t,n){var e=st(ke*P(n)),r=e*e,i=r*r*r;return[t*b(e)/(ke*(wn+3*_n*r+i*(7*xn+9*En*r))),e*(wn+_n*r+i*(xn+En*r))]}Br.invert=function(t,n){for(var e=n,r=e*e,i=r*r*r,a=0,o,u,s;a<Ru&&(u=e*(wn+_n*r+i*(xn+En*r))-n,s=wn+3*_n*r+i*(7*xn+9*En*r),e-=o=u/s,r=e*e,i=r*r*r,!(G(o)<Sn));++a);return[ke*t*(wn+3*_n*r+i*(7*xn+9*En*r))/b(e),st(P(e)/ke)]};function zu(){return kt(Br).scale(177.158)}function Gr(t,n){var e=b(n),r=b(t)*e;return[e*P(t)/r,P(n)/r]}Gr.invert=In(cn);function Tu(){return kt(Gr).scale(144.049).clipAngle(60)}function Iu(){var t=1,n=0,e=0,r=1,i=1,a=0,o,u,s=null,l,c,f,h=1,p=1,g=Tn({point:function(x,S){var N=A([x,S]);this.stream.point(N[0],N[1])}}),_=Mn,w,y;function E(){return h=t*r,p=t*i,w=y=null,A}function A(x){var S=x[0]*h,N=x[1]*p;if(a){var T=N*o-S*u;S=S*o+N*u,N=T}return[S+n,N+e]}return A.invert=function(x){var S=x[0]-n,N=x[1]-e;if(a){var T=N*o+S*u;S=S*o-N*u,N=T}return[S/h,N/p]},A.stream=function(x){return w&&y===x?w:w=g(_(y=x))},A.postclip=function(x){return arguments.length?(_=x,s=l=c=f=null,E()):_},A.clipExtent=function(x){return arguments.length?(_=x==null?(s=l=c=f=null,Mn):ze(s=+x[0][0],l=+x[0][1],c=+x[1][0],f=+x[1][1]),E()):s==null?null:[[s,l],[c,f]]},A.scale=function(x){return arguments.length?(t=+x,E()):t},A.translate=function(x){return arguments.length?(n=+x[0],e=+x[1],E()):[n,e]},A.angle=function(x){return arguments.length?(a=x%360*R,u=P(a),o=b(a),E()):a*Y},A.reflectX=function(x){return arguments.length?(r=x?-1:1,E()):r<0},A.reflectY=function(x){return arguments.length?(i=x?-1:1,E()):i<0},A.fitExtent=function(x,S){return Te(A,x,S)},A.fitSize=function(x,S){return Rr(A,x,S)},A.fitWidth=function(x,S){return zr(A,x,S)},A.fitHeight=function(x,S){return Tr(A,x,S)},A}function Fr(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(-.013791+r*(.003971*e-.001529*r))),n*(1.007226+e*(.015085+r*(-.044475+.028874*e-.005916*r)))]}Fr.invert=function(t,n){var e=n,r=25,i;do{var a=e*e,o=a*a;e-=i=(e*(1.007226+a*(.015085+o*(-.044475+.028874*a-.005916*o)))-n)/(1.007226+a*(.015085*3+o*(-.044475*7+.028874*9*a-.005916*11*o)))}while(G(i)>C&&--r>0);return[t/(.8707+(a=e*e)*(-.131979+a*(-.013791+a*a*a*(.003971-.001529*a)))),e]};function Lu(){return kt(Fr).scale(175.295)}function Hr(t,n){return[b(n)*P(t),P(n)]}Hr.invert=In(st);function qu(){return kt(Hr).scale(249.5).clipAngle(90+C)}function Xr(t,n){var e=b(n),r=1+b(t)*e;return[e*P(t)/r,P(n)/r]}Xr.invert=In(function(t){return 2*cn(t)});function Du(){return kt(Xr).scale(250).clipAngle(142)}function Or(t,n){return[ie(Nr((Z+n)/2)),-t]}Or.invert=function(t,n){return[-n,2*cn(aa(t))-Z]};function Bu(){var t=Ga(Or),n=t.center,e=t.rotate;return t.center=function(r){return arguments.length?n([-r[1],r[0]]):(r=n(),[r[1],-r[0]])},t.rotate=function(r){return arguments.length?e([r[0],r[1],r.length>2?r[2]+90:90]):(r=e(),[r[0],r[1],r[2]-90])},e([0,0,90]).scale(159.155)}const Gu=Object.freeze(Object.defineProperty({__proto__:null,geoAlbers:Da,geoAlbersUsa:Mu,geoArea:bo,geoAzimuthalEqualArea:ku,geoAzimuthalEqualAreaRaw:qr,geoAzimuthalEquidistant:Nu,geoAzimuthalEquidistantRaw:Dr,geoBounds:To,geoCentroid:Go,geoCircle:Fo,geoClipAntimeridian:ir,geoClipCircle:Ea,geoClipExtent:Wo,geoClipRectangle:ze,geoConicConformal:$u,geoConicConformalRaw:Fa,geoConicEqualArea:Me,geoConicEqualAreaRaw:qa,geoConicEquidistant:Cu,geoConicEquidistantRaw:Ha,geoContains:nu,geoDistance:ve,geoEqualEarth:zu,geoEqualEarthRaw:Br,geoEquirectangular:bu,geoEquirectangularRaw:Pn,geoGnomonic:Tu,geoGnomonicRaw:Gr,geoGraticule:br,geoGraticule10:eu,geoIdentity:Iu,geoInterpolate:ru,geoLength:Sa,geoMercator:Pu,geoMercatorRaw:Ln,geoNaturalEarth1:Lu,geoNaturalEarth1Raw:Fr,geoOrthographic:qu,geoOrthographicRaw:Hr,geoPath:du,geoProjection:kt,geoProjectionMutator:Ir,geoRotation:va,geoStereographic:Du,geoStereographicRaw:Xr,geoStream:yt,geoTransform:mu,geoTransverseMercator:Bu,geoTransverseMercatorRaw:Or},Symbol.toStringTag,{value:"Module"}));function Fu(t){return t}function Hu(t){if(t==null)return Fu;var n,e,r=t.scale[0],i=t.scale[1],a=t.translate[0],o=t.translate[1];return function(u,s){s||(n=e=0);var l=2,c=u.length,f=new Array(c);for(f[0]=(n+=u[0])*r+a,f[1]=(e+=u[1])*i+o;l<c;)f[l]=u[l],++l;return f}}function Xu(t,n){for(var e,r=t.length,i=r-n;i<--r;)e=t[i],t[i++]=t[r],t[r]=e}function Ou(t,n){return typeof n=="string"&&(n=t.objects[n]),n.type==="GeometryCollection"?{type:"FeatureCollection",features:n.geometries.map(function(e){return bi(t,e)})}:bi(t,n)}function bi(t,n){var e=n.id,r=n.bbox,i=n.properties==null?{}:n.properties,a=Xa(t,n);return e==null&&r==null?{type:"Feature",properties:i,geometry:a}:r==null?{type:"Feature",id:e,properties:i,geometry:a}:{type:"Feature",id:e,bbox:r,properties:i,geometry:a}}function Xa(t,n){var e=Hu(t.transform),r=t.arcs;function i(c,f){f.length&&f.pop();for(var h=r[c<0?~c:c],p=0,g=h.length;p<g;++p)f.push(e(h[p],p));c<0&&Xu(f,g)}function a(c){return e(c)}function o(c){for(var f=[],h=0,p=c.length;h<p;++h)i(c[h],f);return f.length<2&&f.push(f[0]),f}function u(c){for(var f=o(c);f.length<4;)f.push(f[0]);return f}function s(c){return c.map(u)}function l(c){var f=c.type,h;switch(f){case"GeometryCollection":return{type:f,geometries:c.geometries.map(l)};case"Point":h=a(c.coordinates);break;case"MultiPoint":h=c.coordinates.map(a);break;case"LineString":h=o(c.arcs);break;case"MultiLineString":h=c.arcs.map(o);break;case"Polygon":h=s(c.arcs);break;case"MultiPolygon":h=c.arcs.map(s);break;default:return null}return{type:f,coordinates:h}}return l(n)}function Yu(t,n){var e={},r={},i={},a=[],o=-1;n.forEach(function(l,c){var f=t.arcs[l<0?~l:l],h;f.length<3&&!f[1][0]&&!f[1][1]&&(h=n[++o],n[o]=l,n[c]=h)}),n.forEach(function(l){var c=u(l),f=c[0],h=c[1],p,g;if(p=i[f])if(delete i[p.end],p.push(l),p.end=h,g=r[h]){delete r[g.start];var _=g===p?p:p.concat(g);r[_.start=p.start]=i[_.end=g.end]=_}else r[p.start]=i[p.end]=p;else if(p=r[h])if(delete r[p.start],p.unshift(l),p.start=f,g=i[f]){delete i[g.end];var w=g===p?p:g.concat(p);r[w.start=g.start]=i[w.end=p.end]=w}else r[p.start]=i[p.end]=p;else p=[l],r[p.start=f]=i[p.end=h]=p});function u(l){var c=t.arcs[l<0?~l:l],f=c[0],h;return t.transform?(h=[0,0],c.forEach(function(p){h[0]+=p[0],h[1]+=p[1]})):h=c[c.length-1],l<0?[h,f]:[f,h]}function s(l,c){for(var f in l){var h=l[f];delete c[h.start],delete h.start,delete h.end,h.forEach(function(p){e[p<0?~p:p]=1}),a.push(h)}}return s(i,r),s(r,i),n.forEach(function(l){e[l<0?~l:l]||a.push([l])}),a}function Ci(t){return Xa(t,Ku.apply(this,arguments))}function Ku(t,n,e){var r,i,a;if(arguments.length>1)r=Vu(t,n,e);else for(i=0,r=new Array(a=t.arcs.length);i<a;++i)r[i]=i;return{type:"MultiLineString",arcs:Yu(t,r)}}function Vu(t,n,e){var r=[],i=[],a;function o(f){var h=f<0?~f:f;(i[h]||(i[h]=[])).push({i:f,g:a})}function u(f){f.forEach(o)}function s(f){f.forEach(u)}function l(f){f.forEach(s)}function c(f){switch(a=f,f.type){case"GeometryCollection":f.geometries.forEach(c);break;case"LineString":u(f.arcs);break;case"MultiLineString":case"Polygon":s(f.arcs);break;case"MultiPolygon":l(f.arcs);break}}return c(n),i.forEach(e==null?function(f){r.push(f[0].i)}:function(f){e(f[0].g,f[f.length-1].g)&&r.push(f[0].i)}),r}const{geoPath:Wu,...Uu}=Gu,Zu=Uu,Oa=ra(void 0),ju=({width:t=800,height:n=600,projection:e="geoEqualEarth",projectionConfig:r={},children:i})=>{const[a,o]=r.center||[],[u,s,l]=r.rotate||[],[c,f]=r.parallels||[],h=r.scale||null,p=ee(()=>(({projectionConfig:w={},projection:y="geoEqualEarth",width:E=800,height:A=600})=>{if(typeof y=="function")return y;const x=Zu[y]().translate([E/2,A/2]);if(w.center&&x.center(w.center),w.rotate){const[S,N,T]=w.rotate;x.rotate(T===void 0?[S,N]:[S,N,T])}return w.scale&&x.scale(w.scale),w.parallels&&(function(S){return"parallels"in S})(x)&&x.parallels(w.parallels),x})({projectionConfig:{center:typeof a=="number"&&typeof o=="number"?[a,o]:void 0,rotate:typeof u=="number"&&typeof s=="number"?[u,s,l]:void 0,parallels:typeof c=="number"&&typeof f=="number"?[c,f]:void 0,scale:h||void 0},projection:e,width:t,height:n}),[t,n,e,a,o,u,s,l,c,f,h]),g=Eo(p,[p]),_=ee(()=>({width:t,height:n,projection:g,path:Wu().projection(g)}),[t,n,g]);return Q.createElement(Oa.Provider,{value:_},i)},Dt=()=>{const t=So(Oa);if(!t)throw new Error("useMapContext must be used within MapProvider");return t},Ya=qt(({width:t=800,height:n=600,projection:e="geoEqualEarth",projectionConfig:r={},className:i="",children:a,...o},u)=>Q.createElement(ju,{width:t,height:n,projection:e,projectionConfig:r},Q.createElement("svg",{ref:u,viewBox:`0 0 ${t} ${n}`,className:`rsm-svg ${i}`,...o,children:a})));function Ri(t,n){if(!Array.isArray(t)&&"type"in t&&t.type==="Topology"){const r=t.objects[Object.keys(t.objects)[0]],i=Ou(t,r).features;return n?n(i):i}const e=!Array.isArray(t)&&"features"in t?t.features:t;return n?n(e):e}function zi(t){if(Array.isArray(t)||!("type"in t)||t.type!=="Topology")return null;const n=t.objects[Object.keys(t.objects)[0]];return{outline:Ci(t,n,(e,r)=>e===r),borders:Ci(t,n,(e,r)=>e!==r)}}function Ju(t,n){return t?t.map((e,r)=>({...e,rsmKey:`geo-${r}`,svgPath:n(e)})):[]}function Ti(t){return typeof t=="string"}function Qu({geography:t,parseGeographies:n}){const{path:e}=Dt(),[r,i]=Ot({}),a=Ti(t)?t:JSON.stringify(t);Qt(()=>{var l;typeof window<"u"&&t&&(Ti(t)?(l=t,fetch(l).then(c=>{if(!c.ok)throw Error(c.statusText);return c.json()}).catch(c=>{console.log("There was a problem when fetching the data: ",c)})).then(c=>{c&&i({geographies:Ri(c,n),mesh:zi(c)})}):i({geographies:Ri(t,n),mesh:zi(t)}))},[a,n]);const{geographies:o,outline:u,borders:s}=ee(()=>{const l=(function(c,f,h){return c&&f?{outline:{...c,rsmKey:"outline",svgPath:h(c)},borders:{...f,rsmKey:"borders",svgPath:h(f)}}:{}})(r.mesh?.outline,r.mesh?.borders,e);return{geographies:Ju(r.geographies,e),outline:l.outline,borders:l.borders}},[r,e]);return{geographies:o,outline:u,borders:s}}Ya.displayName="ComposableMap";const Ka=qt(({geography:t,children:n,parseGeographies:e,className:r="",...i},a)=>{const{path:o,projection:u}=Dt(),{geographies:s,outline:l,borders:c}=Qu({geography:t,parseGeographies:e});return Q.createElement("g",{ref:a,className:`rsm-geographies ${r}`,...i},s&&s.length>0&&n({geographies:s,outline:l,borders:c,path:o,projection:u}))});Ka.displayName="Geographies";const Va=qt(({geography:t,className:n="",...e},r)=>Q.createElement("path",{ref:r,tabIndex:0,className:`rsm-geography ${n}`,d:t.svgPath,...e}));Va.displayName="Geography";var tc=kr(Va);const Wa=qt(({fill:t="transparent",stroke:n="currentcolor",step:e=[10,10],className:r="",...i},a)=>{const{path:o}=Dt();return Q.createElement("path",{ref:a,d:o(br().step(e)()),fill:t,stroke:n,className:`rsm-graticule ${r}`,...i})});Wa.displayName="Graticule";kr(Wa);const Ua=qt(({id:t="rsm-sphere",fill:n="transparent",stroke:e="currentcolor",strokeWidth:r=.5,className:i="",...a},o)=>{const{path:u}=Dt(),s=ee(()=>u({type:"Sphere"}),[u]);return Q.createElement(Mo,null,Q.createElement("defs",null,Q.createElement("clipPath",{id:t},Q.createElement("path",{d:s}))),Q.createElement("path",{ref:o,d:s,fill:n,stroke:e,strokeWidth:r,style:{pointerEvents:"none"},className:`rsm-sphere ${i}`,...a}))});Ua.displayName="Sphere";kr(Ua);const Za=qt(({coordinates:t,children:n,className:e="",...r},i)=>{const{projection:a}=Dt(),o=a(t);if(!o)return null;const[u,s]=o;return Q.createElement("g",{ref:i,transform:`translate(${u}, ${s})`,className:`rsm-marker ${e}`,...r},n)});Za.displayName="Marker";const nc=qt(({from:t=[0,0],to:n=[0,0],coordinates:e,stroke:r="currentcolor",strokeWidth:i=3,fill:a="transparent",className:o="",...u},s)=>{const{path:l}=Dt(),c={type:"LineString",coordinates:e||[t,n]};return Q.createElement("path",{ref:s,d:l(c),className:`rsm-line ${o}`,stroke:r,strokeWidth:i,fill:a,...u})});nc.displayName="Line";const ec=qt(({subject:t,children:n,connectorProps:e,dx:r=30,dy:i=30,curve:a=0,className:o="",...u},s)=>{const{projection:l}=Dt(),c=l(t),f=(function(g=30,_=30,w=.5){const y=Array.isArray(w)?w:[w,w];return`M0,0 Q${-g/2-g/2*y[0]},${-_/2+_/2*y[1]} ${-g},${-_}`})(r,i,a);if(!c)return null;const[h,p]=c;return Q.createElement("g",{ref:s,transform:`translate(${h+r}, ${p+i})`,className:`rsm-annotation ${o}`,...u},Q.createElement("path",{d:f,fill:"transparent",stroke:"#000",...e}),n)});ec.displayName="Annotation";var rc={value:()=>{}};function Yr(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new Jn(e)}function Jn(t){this._=t}function ic(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}Jn.prototype=Yr.prototype={constructor:Jn,on:function(t,n){var e=this._,r=ic(t+"",e),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(t=r[a]).type)&&(i=ac(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++a<o;)if(i=(t=r[a]).type)e[i]=Ii(e[i],t.name,n);else if(n==null)for(i in e)e[i]=Ii(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new Jn(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,a;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=this._[t],r=0,i=a.length;r<i;++r)a[r].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(n,e)}};function ac(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function Ii(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=rc,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var vr="http://www.w3.org/1999/xhtml";const Li={svg:"http://www.w3.org/2000/svg",xhtml:vr,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Ie(t){var n=t+="",e=n.indexOf(":");return e>=0&&(n=t.slice(0,e))!=="xmlns"&&(t=t.slice(e+1)),Li.hasOwnProperty(n)?{space:Li[n],local:t}:t}function oc(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===vr&&n.documentElement.namespaceURI===vr?n.createElement(t):n.createElementNS(e,t)}}function uc(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ja(t){var n=Ie(t);return(n.local?uc:oc)(n)}function cc(){}function Kr(t){return t==null?cc:function(){return this.querySelector(t)}}function sc(t){typeof t!="function"&&(t=Kr(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var a=n[i],o=a.length,u=r[i]=new Array(o),s,l,c=0;c<o;++c)(s=a[c])&&(l=t.call(s,s.__data__,c,a))&&("__data__"in s&&(l.__data__=s.__data__),u[c]=l);return new gt(r,this._parents)}function lc(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function fc(){return[]}function Ja(t){return t==null?fc:function(){return this.querySelectorAll(t)}}function hc(t){return function(){return lc(t.apply(this,arguments))}}function pc(t){typeof t=="function"?t=hc(t):t=Ja(t);for(var n=this._groups,e=n.length,r=[],i=[],a=0;a<e;++a)for(var o=n[a],u=o.length,s,l=0;l<u;++l)(s=o[l])&&(r.push(t.call(s,s.__data__,l,o)),i.push(s));return new gt(r,i)}function Qa(t){return function(){return this.matches(t)}}function to(t){return function(n){return n.matches(t)}}var gc=Array.prototype.find;function dc(t){return function(){return gc.call(this.children,t)}}function mc(){return this.firstElementChild}function vc(t){return this.select(t==null?mc:dc(typeof t=="function"?t:to(t)))}var yc=Array.prototype.filter;function Ac(){return Array.from(this.children)}function wc(t){return function(){return yc.call(this.children,t)}}function _c(t){return this.selectAll(t==null?Ac:wc(typeof t=="function"?t:to(t)))}function xc(t){typeof t!="function"&&(t=Qa(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var a=n[i],o=a.length,u=r[i]=[],s,l=0;l<o;++l)(s=a[l])&&t.call(s,s.__data__,l,a)&&u.push(s);return new gt(r,this._parents)}function no(t){return new Array(t.length)}function Ec(){return new gt(this._enter||this._groups.map(no),this._parents)}function Ne(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}Ne.prototype={constructor:Ne,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Sc(t){return function(){return t}}function Mc(t,n,e,r,i,a){for(var o=0,u,s=n.length,l=a.length;o<l;++o)(u=n[o])?(u.__data__=a[o],r[o]=u):e[o]=new Ne(t,a[o]);for(;o<s;++o)(u=n[o])&&(i[o]=u)}function kc(t,n,e,r,i,a,o){var u,s,l=new Map,c=n.length,f=a.length,h=new Array(c),p;for(u=0;u<c;++u)(s=n[u])&&(h[u]=p=o.call(s,s.__data__,u,n)+"",l.has(p)?i[u]=s:l.set(p,s));for(u=0;u<f;++u)p=o.call(t,a[u],u,a)+"",(s=l.get(p))?(r[u]=s,s.__data__=a[u],l.delete(p)):e[u]=new Ne(t,a[u]);for(u=0;u<c;++u)(s=n[u])&&l.get(h[u])===s&&(i[u]=s)}function Nc(t){return t.__data__}function Pc(t,n){if(!arguments.length)return Array.from(this,Nc);var e=n?kc:Mc,r=this._parents,i=this._groups;typeof t!="function"&&(t=Sc(t));for(var a=i.length,o=new Array(a),u=new Array(a),s=new Array(a),l=0;l<a;++l){var c=r[l],f=i[l],h=f.length,p=$c(t.call(c,c&&c.__data__,l,r)),g=p.length,_=u[l]=new Array(g),w=o[l]=new Array(g),y=s[l]=new Array(h);e(c,f,_,w,y,p,n);for(var E=0,A=0,x,S;E<g;++E)if(x=_[E]){for(E>=A&&(A=E+1);!(S=w[A])&&++A<g;);x._next=S||null}}return o=new gt(o,r),o._enter=u,o._exit=s,o}function $c(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function bc(){return new gt(this._exit||this._groups.map(no),this._parents)}function Cc(t,n,e){var r=this.enter(),i=this,a=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),n!=null&&(i=n(i),i&&(i=i.selection())),e==null?a.remove():e(a),r&&i?r.merge(i).order():i}function Rc(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,a=r.length,o=Math.min(i,a),u=new Array(i),s=0;s<o;++s)for(var l=e[s],c=r[s],f=l.length,h=u[s]=new Array(f),p,g=0;g<f;++g)(p=l[g]||c[g])&&(h[g]=p);for(;s<i;++s)u[s]=e[s];return new gt(u,this._parents)}function zc(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r=t[n],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 Tc(t){t||(t=Ic);function n(f,h){return f&&h?t(f.__data__,h.__data__):!f-!h}for(var e=this._groups,r=e.length,i=new Array(r),a=0;a<r;++a){for(var o=e[a],u=o.length,s=i[a]=new Array(u),l,c=0;c<u;++c)(l=o[c])&&(s[c]=l);s.sort(n)}return new gt(i,this._parents).order()}function Ic(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function Lc(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function qc(){return Array.from(this)}function Dc(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function Bc(){let t=0;for(const n of this)++t;return t}function Gc(){return!this.node()}function Fc(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i=n[e],a=0,o=i.length,u;a<o;++a)(u=i[a])&&t.call(u,u.__data__,a,i);return this}function Hc(t){return function(){this.removeAttribute(t)}}function Xc(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Oc(t,n){return function(){this.setAttribute(t,n)}}function Yc(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Kc(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}}function Vc(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function Wc(t,n){var e=Ie(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((n==null?e.local?Xc:Hc:typeof n=="function"?e.local?Vc:Kc:e.local?Yc:Oc)(e,n))}function eo(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Uc(t){return function(){this.style.removeProperty(t)}}function Zc(t,n,e){return function(){this.style.setProperty(t,n,e)}}function jc(t,n,e){return function(){var r=n.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Jc(t,n,e){return arguments.length>1?this.each((n==null?Uc:typeof n=="function"?jc:Zc)(t,n,e??"")):on(this.node(),t)}function on(t,n){return t.style.getPropertyValue(n)||eo(t).getComputedStyle(t,null).getPropertyValue(n)}function Qc(t){return function(){delete this[t]}}function ts(t,n){return function(){this[t]=n}}function ns(t,n){return function(){var e=n.apply(this,arguments);e==null?delete this[t]:this[t]=e}}function es(t,n){return arguments.length>1?this.each((n==null?Qc:typeof n=="function"?ns:ts)(t,n)):this.node()[t]}function ro(t){return t.trim().split(/^|\s+/)}function Vr(t){return t.classList||new io(t)}function io(t){this._node=t,this._names=ro(t.getAttribute("class")||"")}io.prototype={add:function(t){var n=this._names.indexOf(t);n<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function ao(t,n){for(var e=Vr(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function oo(t,n){for(var e=Vr(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function rs(t){return function(){ao(this,t)}}function is(t){return function(){oo(this,t)}}function as(t,n){return function(){(n.apply(this,arguments)?ao:oo)(this,t)}}function os(t,n){var e=ro(t+"");if(arguments.length<2){for(var r=Vr(this.node()),i=-1,a=e.length;++i<a;)if(!r.contains(e[i]))return!1;return!0}return this.each((typeof n=="function"?as:n?rs:is)(e,n))}function us(){this.textContent=""}function cs(t){return function(){this.textContent=t}}function ss(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function ls(t){return arguments.length?this.each(t==null?us:(typeof t=="function"?ss:cs)(t)):this.node().textContent}function fs(){this.innerHTML=""}function hs(t){return function(){this.innerHTML=t}}function ps(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function gs(t){return arguments.length?this.each(t==null?fs:(typeof t=="function"?ps:hs)(t)):this.node().innerHTML}function ds(){this.nextSibling&&this.parentNode.appendChild(this)}function ms(){return this.each(ds)}function vs(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ys(){return this.each(vs)}function As(t){var n=typeof t=="function"?t:ja(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function ws(){return null}function _s(t,n){var e=typeof t=="function"?t:ja(t),r=n==null?ws:typeof n=="function"?n:Kr(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})}function xs(){var t=this.parentNode;t&&t.removeChild(this)}function Es(){return this.each(xs)}function Ss(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Ms(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ks(t){return this.select(t?Ms:Ss)}function Ns(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Ps(t){return function(n){t.call(this,n,this.__data__)}}function $s(t){return t.trim().split(/^|\s+/).map(function(n){var e="",r=n.indexOf(".");return r>=0&&(e=n.slice(r+1),n=n.slice(0,r)),{type:n,name:e}})}function bs(t){return function(){var n=this.__on;if(n){for(var e=0,r=-1,i=n.length,a;e<i;++e)a=n[e],(!t.type||a.type===t.type)&&a.name===t.name?this.removeEventListener(a.type,a.listener,a.options):n[++r]=a;++r?n.length=r:delete this.__on}}}function Cs(t,n,e){return function(){var r=this.__on,i,a=Ps(n);if(r){for(var o=0,u=r.length;o<u;++o)if((i=r[o]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=e),i.value=n;return}}this.addEventListener(t.type,a,e),i={type:t.type,name:t.name,value:n,listener:a,options:e},r?r.push(i):this.__on=[i]}}function Rs(t,n,e){var r=$s(t+""),i,a=r.length,o;if(arguments.length<2){var u=this.node().__on;if(u){for(var s=0,l=u.length,c;s<l;++s)for(i=0,c=u[s];i<a;++i)if((o=r[i]).type===c.type&&o.name===c.name)return c.value}return}for(u=n?Cs:bs,i=0;i<a;++i)this.each(u(r[i],n,e));return this}function uo(t,n,e){var r=eo(t),i=r.CustomEvent;typeof i=="function"?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function zs(t,n){return function(){return uo(this,t,n)}}function Ts(t,n){return function(){return uo(this,t,n.apply(this,arguments))}}function Is(t,n){return this.each((typeof n=="function"?Ts:zs)(t,n))}function*Ls(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var co=[null];function gt(t,n){this._groups=t,this._parents=n}function qn(){return new gt([[document.documentElement]],co)}function qs(){return this}gt.prototype=qn.prototype={constructor:gt,select:sc,selectAll:pc,selectChild:vc,selectChildren:_c,filter:xc,data:Pc,enter:Ec,exit:bc,join:Cc,merge:Rc,selection:qs,order:zc,sort:Tc,call:Lc,nodes:qc,node:Dc,size:Bc,empty:Gc,each:Fc,attr:Wc,style:Jc,property:es,classed:os,text:ls,html:gs,raise:ms,lower:ys,append:As,insert:_s,remove:Es,clone:ks,datum:Ns,on:Rs,dispatch:Is,[Symbol.iterator]:Ls};function zt(t){return typeof t=="string"?new gt([[document.querySelector(t)]],[document.documentElement]):new gt([[t]],co)}function Ds(t){let n;for(;n=t.sourceEvent;)t=n;return t}function Ht(t,n){if(t=Ds(t),n===void 0&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}const yr={capture:!0,passive:!1};function Ar(t){t.preventDefault(),t.stopImmediatePropagation()}function Bs(t){var n=t.document.documentElement,e=zt(t).on("dragstart.drag",Ar,yr);"onselectstart"in n?e.on("selectstart.drag",Ar,yr):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function Gs(t,n){var e=t.document.documentElement,r=zt(t).on("dragstart.drag",null);n&&(r.on("click.drag",Ar,yr),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}function Wr(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function so(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Dn(){}var $n=.7,Pe=1/$n,nn="\\s*([+-]?\\d+)\\s*",bn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",St="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Fs=/^#([0-9a-f]{3,8})$/,Hs=new RegExp(`^rgb\\(${nn},${nn},${nn}\\)$`),Xs=new RegExp(`^rgb\\(${St},${St},${St}\\)$`),Os=new RegExp(`^rgba\\(${nn},${nn},${nn},${bn}\\)$`),Ys=new RegExp(`^rgba\\(${St},${St},${St},${bn}\\)$`),Ks=new RegExp(`^hsl\\(${bn},${St},${St}\\)$`),Vs=new RegExp(`^hsla\\(${bn},${St},${St},${bn}\\)$`),qi={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};Wr(Dn,Cn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Di,formatHex:Di,formatHex8:Ws,formatHsl:Us,formatRgb:Bi,toString:Bi});function Di(){return this.rgb().formatHex()}function Ws(){return this.rgb().formatHex8()}function Us(){return lo(this).formatHsl()}function Bi(){return this.rgb().formatRgb()}function Cn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=Fs.exec(t))?(e=n[1].length,n=parseInt(n[1],16),e===6?Gi(n):e===3?new ft(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):e===8?Yn(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):e===4?Yn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=Hs.exec(t))?new ft(n[1],n[2],n[3],1):(n=Xs.exec(t))?new ft(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=Os.exec(t))?Yn(n[1],n[2],n[3],n[4]):(n=Ys.exec(t))?Yn(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=Ks.exec(t))?Xi(n[1],n[2]/100,n[3]/100,1):(n=Vs.exec(t))?Xi(n[1],n[2]/100,n[3]/100,n[4]):qi.hasOwnProperty(t)?Gi(qi[t]):t==="transparent"?new ft(NaN,NaN,NaN,0):null}function Gi(t){return new ft(t>>16&255,t>>8&255,t&255,1)}function Yn(t,n,e,r){return r<=0&&(t=n=e=NaN),new ft(t,n,e,r)}function Zs(t){return t instanceof Dn||(t=Cn(t)),t?(t=t.rgb(),new ft(t.r,t.g,t.b,t.opacity)):new ft}function wr(t,n,e,r){return arguments.length===1?Zs(t):new ft(t,n,e,r??1)}function ft(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}Wr(ft,wr,so(Dn,{brighter(t){return t=t==null?Pe:Math.pow(Pe,t),new ft(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?$n:Math.pow($n,t),new ft(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ft(Kt(this.r),Kt(this.g),Kt(this.b),$e(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:Fi,formatHex:Fi,formatHex8:js,formatRgb:Hi,toString:Hi}));function Fi(){return`#${Yt(this.r)}${Yt(this.g)}${Yt(this.b)}`}function js(){return`#${Yt(this.r)}${Yt(this.g)}${Yt(this.b)}${Yt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Hi(){const t=$e(this.opacity);return`${t===1?"rgb(":"rgba("}${Kt(this.r)}, ${Kt(this.g)}, ${Kt(this.b)}${t===1?")":`, ${t})`}`}function $e(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Kt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Yt(t){return t=Kt(t),(t<16?"0":"")+t.toString(16)}function Xi(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new At(t,n,e,r)}function lo(t){if(t instanceof At)return new At(t.h,t.s,t.l,t.opacity);if(t instanceof Dn||(t=Cn(t)),!t)return new At;if(t instanceof At)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),a=Math.max(n,e,r),o=NaN,u=a-i,s=(a+i)/2;return u?(n===a?o=(e-r)/u+(e<r)*6:e===a?o=(r-n)/u+2:o=(n-e)/u+4,u/=s<.5?a+i:2-a-i,o*=60):u=s>0&&s<1?0:o,new At(o,u,s,t.opacity)}function Js(t,n,e,r){return arguments.length===1?lo(t):new At(t,n,e,r??1)}function At(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}Wr(At,Js,so(Dn,{brighter(t){return t=t==null?Pe:Math.pow(Pe,t),new At(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?$n:Math.pow($n,t),new At(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new ft(Oe(t>=240?t-240:t+120,i,r),Oe(t,i,r),Oe(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new At(Oi(this.h),Kn(this.s),Kn(this.l),$e(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(){const t=$e(this.opacity);return`${t===1?"hsl(":"hsla("}${Oi(this.h)}, ${Kn(this.s)*100}%, ${Kn(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Oi(t){return t=(t||0)%360,t<0?t+360:t}function Kn(t){return Math.max(0,Math.min(1,t||0))}function Oe(t,n,e){return(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)*255}const fo=t=>()=>t;function Qs(t,n){return function(e){return t+e*n}}function tl(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}function nl(t){return(t=+t)==1?ho:function(n,e){return e-n?tl(n,e,t):fo(isNaN(n)?e:n)}}function ho(t,n){var e=n-t;return e?Qs(t,e):fo(isNaN(t)?n:t)}const Yi=(function t(n){var e=nl(n);function r(i,a){var o=e((i=wr(i)).r,(a=wr(a)).r),u=e(i.g,a.g),s=e(i.b,a.b),l=ho(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=u(c),i.b=s(c),i.opacity=l(c),i+""}}return r.gamma=t,r})(1);function Ft(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var _r=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ye=new RegExp(_r.source,"g");function el(t){return function(){return t}}function rl(t){return function(n){return t(n)+""}}function il(t,n){var e=_r.lastIndex=Ye.lastIndex=0,r,i,a,o=-1,u=[],s=[];for(t=t+"",n=n+"";(r=_r.exec(t))&&(i=Ye.exec(n));)(a=i.index)>e&&(a=n.slice(e,a),u[o]?u[o]+=a:u[++o]=a),(r=r[0])===(i=i[0])?u[o]?u[o]+=i:u[++o]=i:(u[++o]=null,s.push({i:o,x:Ft(r,i)})),e=Ye.lastIndex;return e<n.length&&(a=n.slice(e),u[o]?u[o]+=a:u[++o]=a),u.length<2?s[0]?rl(s[0].x):el(n):(n=s.length,function(l){for(var c=0,f;c<n;++c)u[(f=s[c]).i]=f.x(l);return u.join("")})}var Ki=180/Math.PI,xr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function po(t,n,e,r,i,a){var o,u,s;return(o=Math.sqrt(t*t+n*n))&&(t/=o,n/=o),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,s/=u),t*r<n*e&&(t=-t,n=-n,s=-s,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(n,t)*Ki,skewX:Math.atan(s)*Ki,scaleX:o,scaleY:u}}var Vn;function al(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?xr:po(n.a,n.b,n.c,n.d,n.e,n.f)}function ol(t){return t==null||(Vn||(Vn=document.createElementNS("http://www.w3.org/2000/svg","g")),Vn.setAttribute("transform",t),!(t=Vn.transform.baseVal.consolidate()))?xr:(t=t.matrix,po(t.a,t.b,t.c,t.d,t.e,t.f))}function go(t,n,e,r){function i(l){return l.length?l.pop()+" ":""}function a(l,c,f,h,p,g){if(l!==f||c!==h){var _=p.push("translate(",null,n,null,e);g.push({i:_-4,x:Ft(l,f)},{i:_-2,x:Ft(c,h)})}else(f||h)&&p.push("translate("+f+n+h+e)}function o(l,c,f,h){l!==c?(l-c>180?c+=360:c-l>180&&(l+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:Ft(l,c)})):c&&f.push(i(f)+"rotate("+c+r)}function u(l,c,f,h){l!==c?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:Ft(l,c)}):c&&f.push(i(f)+"skewX("+c+r)}function s(l,c,f,h,p,g){if(l!==f||c!==h){var _=p.push(i(p)+"scale(",null,",",null,")");g.push({i:_-4,x:Ft(l,f)},{i:_-2,x:Ft(c,h)})}else(f!==1||h!==1)&&p.push(i(p)+"scale("+f+","+h+")")}return function(l,c){var f=[],h=[];return l=t(l),c=t(c),a(l.translateX,l.translateY,c.translateX,c.translateY,f,h),o(l.rotate,c.rotate,f,h),u(l.skewX,c.skewX,f,h),s(l.scaleX,l.scaleY,c.scaleX,c.scaleY,f,h),l=c=null,function(p){for(var g=-1,_=h.length,w;++g<_;)f[(w=h[g]).i]=w.x(p);return f.join("")}}}var ul=go(al,"px, ","px)","deg)"),cl=go(ol,", ",")",")"),sl=1e-12;function Vi(t){return((t=Math.exp(t))+1/t)/2}function ll(t){return((t=Math.exp(t))-1/t)/2}function fl(t){return((t=Math.exp(2*t))-1)/(t+1)}const hl=(function t(n,e,r){function i(a,o){var u=a[0],s=a[1],l=a[2],c=o[0],f=o[1],h=o[2],p=c-u,g=f-s,_=p*p+g*g,w,y;if(_<sl)y=Math.log(h/l)/n,w=function(T){return[u+T*p,s+T*g,l*Math.exp(n*T*y)]};else{var E=Math.sqrt(_),A=(h*h-l*l+r*_)/(2*l*e*E),x=(h*h-l*l-r*_)/(2*h*e*E),S=Math.log(Math.sqrt(A*A+1)-A),N=Math.log(Math.sqrt(x*x+1)-x);y=(N-S)/n,w=function(T){var L=T*y,q=Vi(S),F=l/(e*E)*(q*fl(n*L+S)-ll(S));return[u+F*p,s+F*g,l*q/Vi(n*L+S)]}}return w.duration=y*1e3*n/Math.SQRT2,w}return i.rho=function(a){var o=Math.max(.001,+a),u=o*o,s=u*u;return t(o,u,s)},i})(Math.SQRT2,2,4);var un=0,vn=0,sn=0,mo=1e3,be,yn,Ce=0,Ut=0,Le=0,Rn=typeof performance=="object"&&performance.now?performance:Date,vo=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ur(){return Ut||(vo(pl),Ut=Rn.now()+Le)}function pl(){Ut=0}function Re(){this._call=this._time=this._next=null}Re.prototype=yo.prototype={constructor:Re,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?Ur():+e)+(n==null?0:+n),!this._next&&yn!==this&&(yn?yn._next=this:be=this,yn=this),this._call=t,this._time=e,Er()},stop:function(){this._call&&(this._call=null,this._time=1/0,Er())}};function yo(t,n,e){var r=new Re;return r.restart(t,n,e),r}function gl(){Ur(),++un;for(var t=be,n;t;)(n=Ut-t._time)>=0&&t._call.call(void 0,n),t=t._next;--un}function Wi(){Ut=(Ce=Rn.now())+Le,un=vn=0;try{gl()}finally{un=0,ml(),Ut=0}}function dl(){var t=Rn.now(),n=t-Ce;n>mo&&(Le-=n,Ce=t)}function ml(){for(var t,n=be,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:be=e);yn=t,Er(r)}function Er(t){if(!un){vn&&(vn=clearTimeout(vn));var n=t-Ut;n>24?(t<1/0&&(vn=setTimeout(Wi,t-Rn.now()-Le)),sn&&(sn=clearInterval(sn))):(sn||(Ce=Rn.now(),sn=setInterval(dl,mo)),un=1,vo(Wi))}}function Ui(t,n,e){var r=new Re;return n=n==null?0:+n,r.restart(i=>{r.stop(),t(i+n)},n,e),r}var vl=Yr("start","end","cancel","interrupt"),yl=[],Ao=0,Zi=1,Sr=2,Qn=3,ji=4,Mr=5,te=6;function qe(t,n,e,r,i,a){var o=t.__transition;if(!o)t.__transition={};else if(e in o)return;Al(t,e,{name:n,index:r,group:i,on:vl,tween:yl,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:Ao})}function Zr(t,n){var e=_t(t,n);if(e.state>Ao)throw new Error("too late; already scheduled");return e}function Nt(t,n){var e=_t(t,n);if(e.state>Qn)throw new Error("too late; already running");return e}function _t(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Al(t,n,e){var r=t.__transition,i;r[n]=e,e.timer=yo(a,0,e.time);function a(l){e.state=Zi,e.timer.restart(o,e.delay,e.time),e.delay<=l&&o(l-e.delay)}function o(l){var c,f,h,p;if(e.state!==Zi)return s();for(c in r)if(p=r[c],p.name===e.name){if(p.state===Qn)return Ui(o);p.state===ji?(p.state=te,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete r[c]):+c<n&&(p.state=te,p.timer.stop(),p.on.call("cancel",t,t.__data__,p.index,p.group),delete r[c])}if(Ui(function(){e.state===Qn&&(e.state=ji,e.timer.restart(u,e.delay,e.time),u(l))}),e.state=Sr,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Sr){for(e.state=Qn,i=new Array(h=e.tween.length),c=0,f=-1;c<h;++c)(p=e.tween[c].value.call(t,t.__data__,e.index,e.group))&&(i[++f]=p);i.length=f+1}}function u(l){for(var c=l<e.duration?e.ease.call(null,l/e.duration):(e.timer.restart(s),e.state=Mr,1),f=-1,h=i.length;++f<h;)i[f].call(t,c);e.state===Mr&&(e.on.call("end",t,t.__data__,e.index,e.group),s())}function s(){e.state=te,e.timer.stop(),delete r[n];for(var l in r)return;delete t.__transition}}function ne(t,n){var e=t.__transition,r,i,a=!0,o;if(e){n=n==null?null:n+"";for(o in e){if((r=e[o]).name!==n){a=!1;continue}i=r.state>Sr&&r.state<Mr,r.state=te,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete e[o]}a&&delete t.__transition}}function wl(t){return this.each(function(){ne(this,t)})}function _l(t,n){var e,r;return function(){var i=Nt(this,t),a=i.tween;if(a!==e){r=e=a;for(var o=0,u=r.length;o<u;++o)if(r[o].name===n){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function xl(t,n,e){var r,i;if(typeof e!="function")throw new Error;return function(){var a=Nt(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var u={name:n,value:e},s=0,l=i.length;s<l;++s)if(i[s].name===n){i[s]=u;break}s===l&&i.push(u)}a.tween=i}}function El(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r=_t(this.node(),e).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===t)return o.value;return null}return this.each((n==null?_l:xl)(e,t,n))}function jr(t,n,e){var r=t._id;return t.each(function(){var i=Nt(this,r);(i.value||(i.value={}))[n]=e.apply(this,arguments)}),function(i){return _t(i,r).value[n]}}function wo(t,n){var e;return(typeof n=="number"?Ft:n instanceof Cn?Yi:(e=Cn(n))?(n=e,Yi):il)(t,n)}function Sl(t){return function(){this.removeAttribute(t)}}function Ml(t){return function(){this.removeAttributeNS(t.space,t.local)}}function kl(t,n,e){var r,i=e+"",a;return function(){var o=this.getAttribute(t);return o===i?null:o===r?a:a=n(r=o,e)}}function Nl(t,n,e){var r,i=e+"",a;return function(){var o=this.getAttributeNS(t.space,t.local);return o===i?null:o===r?a:a=n(r=o,e)}}function Pl(t,n,e){var r,i,a;return function(){var o,u=e(this),s;return u==null?void this.removeAttribute(t):(o=this.getAttribute(t),s=u+"",o===s?null:o===r&&s===i?a:(i=s,a=n(r=o,u)))}}function $l(t,n,e){var r,i,a;return function(){var o,u=e(this),s;return u==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),s=u+"",o===s?null:o===r&&s===i?a:(i=s,a=n(r=o,u)))}}function bl(t,n){var e=Ie(t),r=e==="transform"?cl:wo;return this.attrTween(t,typeof n=="function"?(e.local?$l:Pl)(e,r,jr(this,"attr."+t,n)):n==null?(e.local?Ml:Sl)(e):(e.local?Nl:kl)(e,r,n))}function Cl(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function Rl(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function zl(t,n){var e,r;function i(){var a=n.apply(this,arguments);return a!==r&&(e=(r=a)&&Rl(t,a)),e}return i._value=n,i}function Tl(t,n){var e,r;function i(){var a=n.apply(this,arguments);return a!==r&&(e=(r=a)&&Cl(t,a)),e}return i._value=n,i}function Il(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(n==null)return this.tween(e,null);if(typeof n!="function")throw new Error;var r=Ie(t);return this.tween(e,(r.local?zl:Tl)(r,n))}function Ll(t,n){return function(){Zr(this,t).delay=+n.apply(this,arguments)}}function ql(t,n){return n=+n,function(){Zr(this,t).delay=n}}function Dl(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?Ll:ql)(n,t)):_t(this.node(),n).delay}function Bl(t,n){return function(){Nt(this,t).duration=+n.apply(this,arguments)}}function Gl(t,n){return n=+n,function(){Nt(this,t).duration=n}}function Fl(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?Bl:Gl)(n,t)):_t(this.node(),n).duration}function Hl(t,n){if(typeof n!="function")throw new Error;return function(){Nt(this,t).ease=n}}function Xl(t){var n=this._id;return arguments.length?this.each(Hl(n,t)):_t(this.node(),n).ease}function Ol(t,n){return function(){var e=n.apply(this,arguments);if(typeof e!="function")throw new Error;Nt(this,t).ease=e}}function Yl(t){if(typeof t!="function")throw new Error;return this.each(Ol(this._id,t))}function Kl(t){typeof t!="function"&&(t=Qa(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var a=n[i],o=a.length,u=r[i]=[],s,l=0;l<o;++l)(s=a[l])&&t.call(s,s.__data__,l,a)&&u.push(s);return new Lt(r,this._parents,this._name,this._id)}function Vl(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,a=Math.min(r,i),o=new Array(r),u=0;u<a;++u)for(var s=n[u],l=e[u],c=s.length,f=o[u]=new Array(c),h,p=0;p<c;++p)(h=s[p]||l[p])&&(f[p]=h);for(;u<r;++u)o[u]=n[u];return new Lt(o,this._parents,this._name,this._id)}function Wl(t){return(t+"").trim().split(/^|\s+/).every(function(n){var e=n.indexOf(".");return e>=0&&(n=n.slice(0,e)),!n||n==="start"})}function Ul(t,n,e){var r,i,a=Wl(n)?Zr:Nt;return function(){var o=a(this,t),u=o.on;u!==r&&(i=(r=u).copy()).on(n,e),o.on=i}}function Zl(t,n){var e=this._id;return arguments.length<2?_t(this.node(),e).on.on(t):this.each(Ul(e,t,n))}function jl(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Jl(){return this.on("end.remove",jl(this._id))}function Ql(t){var n=this._name,e=this._id;typeof t!="function"&&(t=Kr(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var u=r[o],s=u.length,l=a[o]=new Array(s),c,f,h=0;h<s;++h)(c=u[h])&&(f=t.call(c,c.__data__,h,u))&&("__data__"in c&&(f.__data__=c.__data__),l[h]=f,qe(l[h],n,e,h,l,_t(c,e)));return new Lt(a,this._parents,n,e)}function tf(t){var n=this._name,e=this._id;typeof t!="function"&&(t=Ja(t));for(var r=this._groups,i=r.length,a=[],o=[],u=0;u<i;++u)for(var s=r[u],l=s.length,c,f=0;f<l;++f)if(c=s[f]){for(var h=t.call(c,c.__data__,f,s),p,g=_t(c,e),_=0,w=h.length;_<w;++_)(p=h[_])&&qe(p,n,e,_,h,g);a.push(h),o.push(c)}return new Lt(a,o,n,e)}var nf=qn.prototype.constructor;function ef(){return new nf(this._groups,this._parents)}function rf(t,n){var e,r,i;return function(){var a=on(this,t),o=(this.style.removeProperty(t),on(this,t));return a===o?null:a===e&&o===r?i:i=n(e=a,r=o)}}function _o(t){return function(){this.style.removeProperty(t)}}function af(t,n,e){var r,i=e+"",a;return function(){var o=on(this,t);return o===i?null:o===r?a:a=n(r=o,e)}}function of(t,n,e){var r,i,a;return function(){var o=on(this,t),u=e(this),s=u+"";return u==null&&(s=u=(this.style.removeProperty(t),on(this,t))),o===s?null:o===r&&s===i?a:(i=s,a=n(r=o,u))}}function uf(t,n){var e,r,i,a="style."+n,o="end."+a,u;return function(){var s=Nt(this,t),l=s.on,c=s.value[a]==null?u||(u=_o(n)):void 0;(l!==e||i!==c)&&(r=(e=l).copy()).on(o,i=c),s.on=r}}function cf(t,n,e){var r=(t+="")=="transform"?ul:wo;return n==null?this.styleTween(t,rf(t,r)).on("end.style."+t,_o(t)):typeof n=="function"?this.styleTween(t,of(t,r,jr(this,"style."+t,n))).each(uf(this._id,t)):this.styleTween(t,af(t,r,n),e).on("end.style."+t,null)}function sf(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function lf(t,n,e){var r,i;function a(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&sf(t,o,e)),r}return a._value=n,a}function ff(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(n==null)return this.tween(r,null);if(typeof n!="function")throw new Error;return this.tween(r,lf(t,n,e??""))}function hf(t){return function(){this.textContent=t}}function pf(t){return function(){var n=t(this);this.textContent=n??""}}function gf(t){return this.tween("text",typeof t=="function"?pf(jr(this,"text",t)):hf(t==null?"":t+""))}function df(t){return function(n){this.textContent=t.call(this,n)}}function mf(t){var n,e;function r(){var i=t.apply(this,arguments);return i!==e&&(n=(e=i)&&df(i)),n}return r._value=t,r}function vf(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,mf(t))}function yf(){for(var t=this._name,n=this._id,e=xo(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],u=o.length,s,l=0;l<u;++l)if(s=o[l]){var c=_t(s,n);qe(s,t,e,l,o,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new Lt(r,this._parents,t,e)}function Af(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(a,o){var u={value:o},s={value:function(){--i===0&&a()}};e.each(function(){var l=Nt(this,r),c=l.on;c!==t&&(n=(t=c).copy(),n._.cancel.push(u),n._.interrupt.push(u),n._.end.push(s)),l.on=n}),i===0&&a()})}var wf=0;function Lt(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function xo(){return++wf}var bt=qn.prototype;Lt.prototype={constructor:Lt,select:Ql,selectAll:tf,selectChild:bt.selectChild,selectChildren:bt.selectChildren,filter:Kl,merge:Vl,selection:ef,transition:yf,call:bt.call,nodes:bt.nodes,node:bt.node,size:bt.size,empty:bt.empty,each:bt.each,on:Zl,attr:bl,attrTween:Il,style:cf,styleTween:ff,text:gf,textTween:vf,remove:Jl,tween:El,delay:Dl,duration:Fl,ease:Xl,easeVarying:Yl,end:Af,[Symbol.iterator]:bt[Symbol.iterator]};function _f(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var xf={time:null,delay:0,duration:250,ease:_f};function Ef(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function Sf(t){var n,e;t instanceof Lt?(n=t._id,t=t._name):(n=xo(),(e=xf).time=Ur(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],u=o.length,s,l=0;l<u;++l)(s=o[l])&&qe(s,t,n,l,o,e||Ef(s,n));return new Lt(r,this._parents,t,n)}qn.prototype.interrupt=wl;qn.prototype.transition=Sf;const Wn=t=>()=>t;function Mf(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Tt(t,n,e){this.k=t,this.x=n,this.y=e}Tt.prototype={constructor:Tt,scale:function(t){return t===1?this:new Tt(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new Tt(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Jr=new Tt(1,0,0);Tt.prototype;function Ke(t){t.stopImmediatePropagation()}function ln(t){t.preventDefault(),t.stopImmediatePropagation()}function kf(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Nf(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function Ji(){return this.__zoom||Jr}function Pf(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function $f(){return navigator.maxTouchPoints||"ontouchstart"in this}function bf(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],a=t.invertY(n[0][1])-e[0][1],o=t.invertY(n[1][1])-e[1][1];return t.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 Cf(){var t=kf,n=Nf,e=bf,r=Pf,i=$f,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],u=250,s=hl,l=Yr("start","zoom","end"),c,f,h,p=500,g=150,_=0,w=10;function y(m){m.property("__zoom",Ji).on("wheel.zoom",L,{passive:!1}).on("mousedown.zoom",q).on("dblclick.zoom",F).filter(i).on("touchstart.zoom",z).on("touchmove.zoom",j).on("touchend.zoom touchcancel.zoom",O).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}y.transform=function(m,d,v,M){var k=m.selection?m.selection():m;k.property("__zoom",Ji),m!==k?S(m,d,v,M):k.interrupt().each(function(){N(this,arguments).event(M).start().zoom(null,typeof d=="function"?d.apply(this,arguments):d).end()})},y.scaleBy=function(m,d,v,M){y.scaleTo(m,function(){var k=this.__zoom.k,$=typeof d=="function"?d.apply(this,arguments):d;return k*$},v,M)},y.scaleTo=function(m,d,v,M){y.transform(m,function(){var k=n.apply(this,arguments),$=this.__zoom,I=v==null?x(k):typeof v=="function"?v.apply(this,arguments):v,D=$.invert(I),H=typeof d=="function"?d.apply(this,arguments):d;return e(A(E($,H),I,D),k,o)},v,M)},y.translateBy=function(m,d,v,M){y.transform(m,function(){return e(this.__zoom.translate(typeof d=="function"?d.apply(this,arguments):d,typeof v=="function"?v.apply(this,arguments):v),n.apply(this,arguments),o)},null,M)},y.translateTo=function(m,d,v,M,k){y.transform(m,function(){var $=n.apply(this,arguments),I=this.__zoom,D=M==null?x($):typeof M=="function"?M.apply(this,arguments):M;return e(Jr.translate(D[0],D[1]).scale(I.k).translate(typeof d=="function"?-d.apply(this,arguments):-d,typeof v=="function"?-v.apply(this,arguments):-v),$,o)},M,k)};function E(m,d){return d=Math.max(a[0],Math.min(a[1],d)),d===m.k?m:new Tt(d,m.x,m.y)}function A(m,d,v){var M=d[0]-v[0]*m.k,k=d[1]-v[1]*m.k;return M===m.x&&k===m.y?m:new Tt(m.k,M,k)}function x(m){return[(+m[0][0]+ +m[1][0])/2,(+m[0][1]+ +m[1][1])/2]}function S(m,d,v,M){m.on("start.zoom",function(){N(this,arguments).event(M).start()}).on("interrupt.zoom end.zoom",function(){N(this,arguments).event(M).end()}).tween("zoom",function(){var k=this,$=arguments,I=N(k,$).event(M),D=n.apply(k,$),H=v==null?x(D):typeof v=="function"?v.apply(k,$):v,J=Math.max(D[1][0]-D[0][0],D[1][1]-D[0][1]),W=k.__zoom,tt=typeof d=="function"?d.apply(k,$):d,Pt=s(W.invert(H).concat(J/W.k),tt.invert(H).concat(J/tt.k));return function(vt){if(vt===1)vt=tt;else{var $t=Pt(vt),De=J/$t[2];vt=new Tt(De,H[0]-$t[0]*De,H[1]-$t[1]*De)}I.zoom(null,vt)}})}function N(m,d,v){return!v&&m.__zooming||new T(m,d)}function T(m,d){this.that=m,this.args=d,this.active=0,this.sourceEvent=null,this.extent=n.apply(m,d),this.taps=0}T.prototype={event:function(m){return m&&(this.sourceEvent=m),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(m,d){return this.mouse&&m!=="mouse"&&(this.mouse[1]=d.invert(this.mouse[0])),this.touch0&&m!=="touch"&&(this.touch0[1]=d.invert(this.touch0[0])),this.touch1&&m!=="touch"&&(this.touch1[1]=d.invert(this.touch1[0])),this.that.__zoom=d,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(m){var d=zt(this.that).datum();l.call(m,this.that,new Mf(m,{sourceEvent:this.sourceEvent,target:y,transform:this.that.__zoom,dispatch:l}),d)}};function L(m,...d){if(!t.apply(this,arguments))return;var v=N(this,d).event(m),M=this.__zoom,k=Math.max(a[0],Math.min(a[1],M.k*Math.pow(2,r.apply(this,arguments)))),$=Ht(m);if(v.wheel)(v.mouse[0][0]!==$[0]||v.mouse[0][1]!==$[1])&&(v.mouse[1]=M.invert(v.mouse[0]=$)),clearTimeout(v.wheel);else{if(M.k===k)return;v.mouse=[$,M.invert($)],ne(this),v.start()}ln(m),v.wheel=setTimeout(I,g),v.zoom("mouse",e(A(E(M,k),v.mouse[0],v.mouse[1]),v.extent,o));function I(){v.wheel=null,v.end()}}function q(m,...d){if(h||!t.apply(this,arguments))return;var v=m.currentTarget,M=N(this,d,!0).event(m),k=zt(m.view).on("mousemove.zoom",H,!0).on("mouseup.zoom",J,!0),$=Ht(m,v),I=m.clientX,D=m.clientY;Bs(m.view),Ke(m),M.mouse=[$,this.__zoom.invert($)],ne(this),M.start();function H(W){if(ln(W),!M.moved){var tt=W.clientX-I,Pt=W.clientY-D;M.moved=tt*tt+Pt*Pt>_}M.event(W).zoom("mouse",e(A(M.that.__zoom,M.mouse[0]=Ht(W,v),M.mouse[1]),M.extent,o))}function J(W){k.on("mousemove.zoom mouseup.zoom",null),Gs(W.view,M.moved),ln(W),M.event(W).end()}}function F(m,...d){if(t.apply(this,arguments)){var v=this.__zoom,M=Ht(m.changedTouches?m.changedTouches[0]:m,this),k=v.invert(M),$=v.k*(m.shiftKey?.5:2),I=e(A(E(v,$),M,k),n.apply(this,d),o);ln(m),u>0?zt(this).transition().duration(u).call(S,I,M,m):zt(this).call(y.transform,I,M,m)}}function z(m,...d){if(t.apply(this,arguments)){var v=m.touches,M=v.length,k=N(this,d,m.changedTouches.length===M).event(m),$,I,D,H;for(Ke(m),I=0;I<M;++I)D=v[I],H=Ht(D,this),H=[H,this.__zoom.invert(H),D.identifier],k.touch0?!k.touch1&&k.touch0[2]!==H[2]&&(k.touch1=H,k.taps=0):(k.touch0=H,$=!0,k.taps=1+!!c);c&&(c=clearTimeout(c)),$&&(k.taps<2&&(f=H[0],c=setTimeout(function(){c=null},p)),ne(this),k.start())}}function j(m,...d){if(this.__zooming){var v=N(this,d).event(m),M=m.changedTouches,k=M.length,$,I,D,H;for(ln(m),$=0;$<k;++$)I=M[$],D=Ht(I,this),v.touch0&&v.touch0[2]===I.identifier?v.touch0[0]=D:v.touch1&&v.touch1[2]===I.identifier&&(v.touch1[0]=D);if(I=v.that.__zoom,v.touch1){var J=v.touch0[0],W=v.touch0[1],tt=v.touch1[0],Pt=v.touch1[1],vt=(vt=tt[0]-J[0])*vt+(vt=tt[1]-J[1])*vt,$t=($t=Pt[0]-W[0])*$t+($t=Pt[1]-W[1])*$t;I=E(I,Math.sqrt(vt/$t)),D=[(J[0]+tt[0])/2,(J[1]+tt[1])/2],H=[(W[0]+Pt[0])/2,(W[1]+Pt[1])/2]}else if(v.touch0)D=v.touch0[0],H=v.touch0[1];else return;v.zoom("touch",e(A(I,D,H),v.extent,o))}}function O(m,...d){if(this.__zooming){var v=N(this,d).event(m),M=m.changedTouches,k=M.length,$,I;for(Ke(m),h&&clearTimeout(h),h=setTimeout(function(){h=null},p),$=0;$<k;++$)I=M[$],v.touch0&&v.touch0[2]===I.identifier?delete v.touch0:v.touch1&&v.touch1[2]===I.identifier&&delete v.touch1;if(v.touch1&&!v.touch0&&(v.touch0=v.touch1,delete v.touch1),v.touch0)v.touch0[1]=this.__zoom.invert(v.touch0[0]);else if(v.end(),v.taps===2&&(I=Ht(I,this),Math.hypot(f[0]-I[0],f[1]-I[1])<w)){var D=zt(this).on("dblclick.zoom");D&&D.apply(this,arguments)}}}return y.wheelDelta=function(m){return arguments.length?(r=typeof m=="function"?m:Wn(+m),y):r},y.filter=function(m){return arguments.length?(t=typeof m=="function"?m:Wn(!!m),y):t},y.touchable=function(m){return arguments.length?(i=typeof m=="function"?m:Wn(!!m),y):i},y.extent=function(m){return arguments.length?(n=typeof m=="function"?m:Wn([[+m[0][0],+m[0][1]],[+m[1][0],+m[1][1]]]),y):n},y.scaleExtent=function(m){return arguments.length?(a[0]=+m[0],a[1]=+m[1],y):[a[0],a[1]]},y.translateExtent=function(m){return arguments.length?(o[0][0]=+m[0][0],o[1][0]=+m[1][0],o[0][1]=+m[0][1],o[1][1]=+m[1][1],y):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},y.constrain=function(m){return arguments.length?(e=m,y):e},y.duration=function(m){return arguments.length?(u=+m,y):u},y.interpolate=function(m){return arguments.length?(s=m,y):s},y.on=function(){var m=l.on.apply(l,arguments);return m===l?y:m},y.clickDistance=function(m){return arguments.length?(_=(m=+m)*m,y):Math.sqrt(_)},y.tapDistance=function(m){return arguments.length?(w=+m,y):w},y}const Rf=ra(void 0),zf={x:0,y:0,k:1,transformString:"translate(0 0) scale(1)"},Tf=({value:t=zf,children:n})=>Q.createElement(Rf.Provider,{value:t},n);function Qi(t,n,e){const r=(t*e.k-t)/2,i=(n*e.k-n)/2;return[t/2-(r+e.x)/e.k,n/2-(i+e.y)/e.k]}function ta(t,n,e,r,i,a){const o=t([r,i]);return o?{x:n/2-o[0]*a,y:e/2-o[1]*a,k:a}:null}function If({center:t=[0,0],filterZoomEvent:n,onMoveStart:e,onMoveEnd:r,onMove:i,translateExtent:a=[[-1/0,-1/0],[1/0,1/0]],scaleExtent:o=[1,8],zoom:u=1}){const{width:s,height:l,projection:c}=Dt(),[f,h]=t,[p,g]=Ot(()=>ta(c,s,l,f,h,u)??{x:0,y:0,k:1}),_=Bt(null),w=Bt(null),y=Bt(null),E=Bt(!1),[A,x]=a,[S,N]=A,[T,L]=x,[q,F]=o,z=Bt(e),j=Bt(i),O=Bt(r),m=Bt(n);return Qt(()=>{z.current=e,j.current=i,O.current=r,m.current=n}),Qt(()=>{const d=w.current;if(!d)return;const v=zt(d),M=Cf().extent([[0,0],[s,l]]).filter(k=>{if(m.current)return m.current(k);const $=k;return!!k&&!$.ctrlKey&&!$.button}).scaleExtent([q,F]).translateExtent([[S,N],[T,L]]).on("start",k=>{if(!z.current||E.current)return;const $=c.invert?.(Qi(s,l,k.transform));z.current({coordinates:$??void 0,zoom:k.transform.k},k)}).on("zoom",k=>{if(E.current)return;const{transform:$,sourceEvent:I}=k;g({x:$.x,y:$.y,k:$.k,dragging:I}),j.current&&j.current({x:$.x,y:$.y,zoom:$.k,dragging:I},k)}).on("end",k=>{if(E.current)return void(E.current=!1);const $=c.invert?.(Qi(s,l,k.transform));if($){const[I,D]=$;_.current={x:I,y:D,k:k.transform.k}}O.current&&O.current({coordinates:$??void 0,zoom:k.transform.k},k)});y.current=M,v.call(M)},[s,l,S,N,T,L,q,F,c]),Qt(()=>{if(_.current&&f===_.current.x&&h===_.current.y&&u===_.current.k)return;const d=ta(c,s,l,f,h,u);if(!d||!w.current||!y.current)return;const v=zt(w.current);E.current=!0,v.call(y.current.transform,Jr.translate(d.x,d.y).scale(d.k)),g(M=>M.x===d.x&&M.y===d.y&&M.k===d.k?M:d),_.current={x:f,y:h,k:u}},[f,h,u,s,l,c]),{mapRef:w,position:p,transformString:`translate(${p.x} ${p.y}) scale(${p.k})`}}const Lf=qt(({center:t=[0,0],zoom:n=1,minZoom:e=1,maxZoom:r=8,translateExtent:i,filterZoomEvent:a,onMoveStart:o,onMove:u,onMoveEnd:s,className:l="",children:c,...f},h)=>{const{width:p,height:g}=Dt(),{mapRef:_,transformString:w,position:y}=If({center:t,filterZoomEvent:a,onMoveStart:o,onMove:u,onMoveEnd:s,scaleExtent:[e,r],translateExtent:i,zoom:n});return Q.createElement(Tf,{value:{x:y.x,y:y.y,k:y.k,transformString:w}},Q.createElement("g",{ref:_},Q.createElement("rect",{width:p,height:g,fill:"transparent"}),Q.createElement("g",{ref:h,transform:w,className:`rsm-zoomable-group ${l}`,...f},c)))});Lf.displayName="ZoomableGroup";const qf="_header_lm0yk_1",Df="_subtitle_lm0yk_10",Bf="_mapCard_lm0yk_17",Gf="_canvasWrap_lm0yk_28",Ff="_mapSvg_lm0yk_33",Hf="_tooltip_lm0yk_39",Xf="_statsGrid_lm0yk_63",Of="_statCard_lm0yk_73",Yf="_statValue_lm0yk_96",Kf="_statLabel_lm0yk_104",Vf="_loading_lm0yk_111",Wf="_error_lm0yk_118",Uf="_glow_lm0yk_161",et={header:qf,subtitle:Df,mapCard:Bf,canvasWrap:Gf,mapSvg:Ff,tooltip:Hf,statsGrid:Xf,statCard:Of,statValue:Yf,statLabel:Kf,loading:Vf,error:Wf,glow:Uf},na={"Africa/Abidjan":[-4.03,5.32],"Africa/Accra":[-.22,5.55],"Africa/Addis_Ababa":[38.7,9.03],"Africa/Algiers":[3.05,36.78],"Africa/Asmara":[38.88,15.33],"Africa/Bamako":[-8,12.65],"Africa/Bangui":[18.58,4.37],"Africa/Banjul":[-16.65,13.47],"Africa/Bissau":[-15.58,11.85],"Africa/Blantyre":[35,-15.78],"Africa/Brazzaville":[15.28,-4.27],"Africa/Bujumbura":[29.37,-3.38],"Africa/Cairo":[31.25,30.05],"Africa/Casablanca":[-7.58,33.65],"Africa/Ceuta":[-5.32,35.88],"Africa/Conakry":[-13.72,9.52],"Africa/Dakar":[-17.43,14.67],"Africa/Dar_es_Salaam":[39.28,-6.8],"Africa/Djibouti":[43.15,11.6],"Africa/Douala":[9.7,4.05],"Africa/El_Aaiun":[-13.2,27.15],"Africa/Freetown":[-13.25,8.5],"Africa/Gaborone":[25.92,-24.65],"Africa/Harare":[31.05,-17.83],"Africa/Johannesburg":[28,-26.25],"Africa/Juba":[31.62,4.85],"Africa/Kampala":[32.42,.32],"Africa/Khartoum":[32.53,15.6],"Africa/Kigali":[30.07,-1.95],"Africa/Kinshasa":[15.3,-4.3],"Africa/Lagos":[3.4,6.45],"Africa/Libreville":[9.45,.38],"Africa/Lome":[1.22,6.13],"Africa/Luanda":[13.23,-8.8],"Africa/Lubumbashi":[27.47,-11.67],"Africa/Lusaka":[28.28,-15.42],"Africa/Malabo":[8.78,3.75],"Africa/Maputo":[32.58,-25.97],"Africa/Maseru":[27.5,-29.47],"Africa/Mbabane":[31.1,-26.3],"Africa/Mogadishu":[45.37,2.07],"Africa/Monrovia":[-10.78,6.3],"Africa/Nairobi":[36.82,-1.28],"Africa/Ndjamena":[15.05,12.12],"Africa/Niamey":[2.12,13.52],"Africa/Nouakchott":[-15.95,18.1],"Africa/Ouagadougou":[-1.52,12.37],"Africa/Porto-Novo":[2.62,6.48],"Africa/Sao_Tome":[6.73,.33],"Africa/Tripoli":[13.18,32.9],"Africa/Tunis":[10.18,36.8],"Africa/Windhoek":[17.1,-22.57],"America/Adak":[-176.66,51.88],"America/Anchorage":[-149.9,61.22],"America/Anguilla":[-63.07,18.2],"America/Antigua":[-61.8,17.05],"America/Araguaina":[-48.2,-7.2],"America/Argentina/Buenos_Aires":[-58.45,-34.6],"America/Argentina/Catamarca":[-65.78,-28.47],"America/Argentina/Cordoba":[-64.18,-31.4],"America/Argentina/Jujuy":[-65.3,-24.18],"America/Argentina/La_Rioja":[-66.85,-29.43],"America/Argentina/Mendoza":[-68.82,-32.88],"America/Argentina/Rio_Gallegos":[-69.22,-51.63],"America/Argentina/Salta":[-65.42,-24.78],"America/Argentina/San_Juan":[-68.52,-31.53],"America/Argentina/San_Luis":[-66.35,-33.32],"America/Argentina/Tucuman":[-65.22,-26.82],"America/Argentina/Ushuaia":[-68.3,-54.8],"America/Aruba":[-69.97,12.5],"America/Asuncion":[-57.67,-25.27],"America/Atikokan":[-91.62,48.76],"America/Bahia":[-38.52,-12.98],"America/Bahia_Banderas":[-105.25,20.8],"America/Barbados":[-59.62,13.1],"America/Belem":[-48.48,-1.45],"America/Belize":[-88.2,17.5],"America/Blanc-Sablon":[-57.12,51.42],"America/Boa_Vista":[-60.67,2.82],"America/Bogota":[-74.08,4.6],"America/Boise":[-116.2,43.61],"America/Cambridge_Bay":[-105.05,69.11],"America/Campo_Grande":[-54.62,-20.45],"America/Cancun":[-86.77,21.08],"America/Caracas":[-66.93,10.5],"America/Cayenne":[-52.33,4.93],"America/Cayman":[-81.38,19.3],"America/Chicago":[-87.65,41.85],"America/Chihuahua":[-106.08,28.63],"America/Ciudad_Juarez":[-106.48,31.73],"America/Costa_Rica":[-84.08,9.93],"America/Coyhaique":[-72.07,-45.57],"America/Creston":[-116.52,49.1],"America/Cuiaba":[-56.08,-15.58],"America/Curacao":[-69,12.18],"America/Danmarkshavn":[-18.67,76.77],"America/Dawson":[-139.42,64.07],"America/Dawson_Creek":[-120.23,55.77],"America/Denver":[-104.98,39.74],"America/Detroit":[-83.05,42.33],"America/Dominica":[-61.4,15.3],"America/Edmonton":[-113.47,53.55],"America/Eirunepe":[-69.87,-6.67],"America/El_Salvador":[-89.2,13.7],"America/Fort_Nelson":[-122.7,58.8],"America/Fortaleza":[-38.5,-3.72],"America/Glace_Bay":[-59.95,46.2],"America/Goose_Bay":[-60.42,53.33],"America/Grand_Turk":[-71.13,21.47],"America/Grenada":[-61.75,12.05],"America/Guadeloupe":[-61.53,16.23],"America/Guatemala":[-90.52,14.63],"America/Guayaquil":[-79.83,-2.17],"America/Guyana":[-58.17,6.8],"America/Halifax":[-63.6,44.65],"America/Havana":[-82.37,23.13],"America/Hermosillo":[-110.97,29.07],"America/Indiana/Indianapolis":[-86.16,39.77],"America/Indiana/Knox":[-86.62,41.3],"America/Indiana/Marengo":[-86.34,38.38],"America/Indiana/Petersburg":[-87.28,38.49],"America/Indiana/Tell_City":[-86.76,37.95],"America/Indiana/Vevay":[-85.07,38.75],"America/Indiana/Vincennes":[-87.53,38.68],"America/Indiana/Winamac":[-86.6,41.05],"America/Inuvik":[-133.72,68.35],"America/Iqaluit":[-68.47,63.73],"America/Jamaica":[-76.79,17.97],"America/Juneau":[-134.42,58.3],"America/Kentucky/Louisville":[-85.76,38.25],"America/Kentucky/Monticello":[-84.85,36.83],"America/Kralendijk":[-68.28,12.15],"America/La_Paz":[-68.15,-16.5],"America/Lima":[-77.05,-12.05],"America/Los_Angeles":[-118.24,34.05],"America/Lower_Princes":[-63.05,18.05],"America/Maceio":[-35.72,-9.67],"America/Managua":[-86.28,12.15],"America/Manaus":[-60.02,-3.13],"America/Marigot":[-63.08,18.07],"America/Martinique":[-61.08,14.6],"America/Matamoros":[-97.5,25.83],"America/Mazatlan":[-106.42,23.22],"America/Menominee":[-87.61,45.11],"America/Merida":[-89.62,20.97],"America/Metlakatla":[-131.58,55.13],"America/Mexico_City":[-99.15,19.4],"America/Miquelon":[-56.33,47.05],"America/Moncton":[-64.78,46.1],"America/Monterrey":[-100.32,25.67],"America/Montevideo":[-56.21,-34.91],"America/Montserrat":[-62.22,16.72],"America/Nassau":[-77.35,25.08],"America/New_York":[-74.01,40.71],"America/Nome":[-165.41,64.5],"America/Noronha":[-32.42,-3.85],"America/North_Dakota/Beulah":[-101.78,47.26],"America/North_Dakota/Center":[-101.3,47.12],"America/North_Dakota/New_Salem":[-101.41,46.85],"America/Nuuk":[-51.73,64.18],"America/Ojinaga":[-104.42,29.57],"America/Panama":[-79.53,8.97],"America/Paramaribo":[-55.17,5.83],"America/Phoenix":[-112.07,33.45],"America/Port-au-Prince":[-72.33,18.53],"America/Port_of_Spain":[-61.52,10.65],"America/Porto_Velho":[-63.9,-8.77],"America/Puerto_Rico":[-66.11,18.47],"America/Punta_Arenas":[-70.92,-53.15],"America/Rankin_Inlet":[-92.08,62.82],"America/Recife":[-34.9,-8.05],"America/Regina":[-104.65,50.4],"America/Resolute":[-94.83,74.7],"America/Rio_Branco":[-67.8,-9.97],"America/Santarem":[-54.87,-2.43],"America/Santiago":[-70.67,-33.45],"America/Santo_Domingo":[-69.9,18.47],"America/Sao_Paulo":[-46.62,-23.53],"America/Scoresbysund":[-21.97,70.48],"America/Sitka":[-135.3,57.18],"America/St_Barthelemy":[-62.85,17.88],"America/St_Johns":[-52.72,47.57],"America/St_Kitts":[-62.72,17.3],"America/St_Lucia":[-61,14.02],"America/St_Thomas":[-64.93,18.35],"America/St_Vincent":[-61.23,13.15],"America/Swift_Current":[-107.83,50.28],"America/Tegucigalpa":[-87.22,14.1],"America/Thule":[-68.78,76.57],"America/Tijuana":[-117.02,32.53],"America/Toronto":[-79.38,43.65],"America/Tortola":[-64.62,18.45],"America/Vancouver":[-123.12,49.27],"America/Whitehorse":[-135.05,60.72],"America/Winnipeg":[-97.15,49.88],"America/Yakutat":[-139.73,59.55],"Antarctica/Casey":[110.52,-66.28],"Antarctica/Davis":[77.97,-68.58],"Antarctica/DumontDUrville":[140.02,-66.67],"Antarctica/Macquarie":[158.95,-54.5],"Antarctica/Mawson":[62.88,-67.6],"Antarctica/McMurdo":[166.6,-77.83],"Antarctica/Palmer":[-64.1,-64.8],"Antarctica/Rothera":[-68.13,-67.57],"Antarctica/Syowa":[39.59,-69.01],"Antarctica/Troll":[2.53,-72.01],"Antarctica/Vostok":[106.9,-78.4],"Arctic/Longyearbyen":[16,78],"Asia/Aden":[45.2,12.75],"Asia/Almaty":[76.95,43.25],"Asia/Amman":[35.93,31.95],"Asia/Anadyr":[177.48,64.75],"Asia/Aqtau":[50.27,44.52],"Asia/Aqtobe":[57.17,50.28],"Asia/Ashgabat":[58.38,37.95],"Asia/Atyrau":[51.93,47.12],"Asia/Baghdad":[44.42,33.35],"Asia/Bahrain":[50.58,26.38],"Asia/Baku":[49.85,40.38],"Asia/Bangkok":[100.52,13.75],"Asia/Barnaul":[83.75,53.37],"Asia/Beirut":[35.5,33.88],"Asia/Bishkek":[74.6,42.9],"Asia/Brunei":[114.92,4.93],"Asia/Chita":[113.47,52.05],"Asia/Colombo":[79.85,6.93],"Asia/Damascus":[36.3,33.5],"Asia/Dhaka":[90.42,23.72],"Asia/Dili":[125.58,-8.55],"Asia/Dubai":[55.3,25.3],"Asia/Dushanbe":[68.8,38.58],"Asia/Famagusta":[33.95,35.12],"Asia/Gaza":[34.47,31.5],"Asia/Hebron":[35.1,31.53],"Asia/Ho_Chi_Minh":[106.67,10.75],"Asia/Hong_Kong":[114.15,22.28],"Asia/Hovd":[91.65,48.02],"Asia/Irkutsk":[104.33,52.27],"Asia/Jakarta":[106.8,-6.17],"Asia/Jayapura":[140.7,-2.53],"Asia/Jerusalem":[35.22,31.78],"Asia/Kabul":[69.2,34.52],"Asia/Kamchatka":[158.65,53.02],"Asia/Karachi":[67.05,24.87],"Asia/Kathmandu":[85.32,27.72],"Asia/Khandyga":[135.55,62.66],"Asia/Kolkata":[88.37,22.53],"Asia/Krasnoyarsk":[92.83,56.02],"Asia/Kuala_Lumpur":[101.7,3.17],"Asia/Kuching":[110.33,1.55],"Asia/Kuwait":[47.98,29.33],"Asia/Macau":[113.54,22.2],"Asia/Magadan":[150.8,59.57],"Asia/Makassar":[119.4,-5.12],"Asia/Manila":[120.97,14.59],"Asia/Muscat":[58.58,23.6],"Asia/Nicosia":[33.37,35.17],"Asia/Novokuznetsk":[87.12,53.75],"Asia/Novosibirsk":[82.92,55.03],"Asia/Omsk":[73.4,55],"Asia/Oral":[51.35,51.22],"Asia/Phnom_Penh":[104.92,11.55],"Asia/Pontianak":[109.33,-.03],"Asia/Pyongyang":[125.75,39.02],"Asia/Qatar":[51.53,25.28],"Asia/Qostanay":[63.62,53.2],"Asia/Qyzylorda":[65.47,44.8],"Asia/Riyadh":[46.72,24.63],"Asia/Sakhalin":[142.7,46.97],"Asia/Samarkand":[66.8,39.67],"Asia/Seoul":[126.97,37.55],"Asia/Shanghai":[121.47,31.23],"Asia/Singapore":[103.85,1.28],"Asia/Srednekolymsk":[153.72,67.47],"Asia/Taipei":[121.5,25.05],"Asia/Tashkent":[69.3,41.33],"Asia/Tbilisi":[44.82,41.72],"Asia/Tehran":[51.43,35.67],"Asia/Thimphu":[89.65,27.47],"Asia/Tokyo":[139.74,35.65],"Asia/Tomsk":[84.97,56.5],"Asia/Ulaanbaatar":[106.88,47.92],"Asia/Urumqi":[87.58,43.8],"Asia/Ust-Nera":[143.23,64.56],"Asia/Vientiane":[102.6,17.97],"Asia/Vladivostok":[131.93,43.17],"Asia/Yakutsk":[129.67,62],"Asia/Yangon":[96.17,16.78],"Asia/Yekaterinburg":[60.6,56.85],"Asia/Yerevan":[44.5,40.18],"Atlantic/Azores":[-25.67,37.73],"Atlantic/Bermuda":[-64.77,32.28],"Atlantic/Canary":[-15.4,28.1],"Atlantic/Cape_Verde":[-23.52,14.92],"Atlantic/Faroe":[-6.77,62.02],"Atlantic/Madeira":[-16.9,32.63],"Atlantic/Reykjavik":[-21.85,64.15],"Atlantic/South_Georgia":[-36.53,-54.27],"Atlantic/St_Helena":[-5.7,-15.92],"Atlantic/Stanley":[-57.85,-51.7],"Australia/Adelaide":[138.58,-34.92],"Australia/Brisbane":[153.03,-27.47],"Australia/Broken_Hill":[141.45,-31.95],"Australia/Darwin":[130.83,-12.47],"Australia/Eucla":[128.87,-31.72],"Australia/Hobart":[147.32,-42.88],"Australia/Lindeman":[149,-20.27],"Australia/Lord_Howe":[159.08,-31.55],"Australia/Melbourne":[144.97,-37.82],"Australia/Perth":[115.85,-31.95],"Australia/Sydney":[151.22,-33.87],"Europe/Amsterdam":[4.9,52.37],"Europe/Andorra":[1.52,42.5],"Europe/Astrakhan":[48.05,46.35],"Europe/Athens":[23.72,37.97],"Europe/Belgrade":[20.5,44.83],"Europe/Berlin":[13.37,52.5],"Europe/Bratislava":[17.12,48.15],"Europe/Brussels":[4.33,50.83],"Europe/Bucharest":[26.1,44.43],"Europe/Budapest":[19.08,47.5],"Europe/Busingen":[8.68,47.7],"Europe/Chisinau":[28.83,47],"Europe/Copenhagen":[12.58,55.67],"Europe/Dublin":[-6.25,53.33],"Europe/Gibraltar":[-5.35,36.13],"Europe/Guernsey":[-2.54,49.45],"Europe/Helsinki":[24.97,60.17],"Europe/Isle_of_Man":[-4.47,54.15],"Europe/Istanbul":[28.97,41.02],"Europe/Jersey":[-2.11,49.18],"Europe/Kaliningrad":[20.5,54.72],"Europe/Kirov":[49.65,58.6],"Europe/Kyiv":[30.52,50.43],"Europe/Lisbon":[-9.13,38.72],"Europe/Ljubljana":[14.52,46.05],"Europe/London":[-.13,51.51],"Europe/Luxembourg":[6.15,49.6],"Europe/Madrid":[-3.68,40.4],"Europe/Malta":[14.52,35.9],"Europe/Mariehamn":[19.95,60.1],"Europe/Minsk":[27.57,53.9],"Europe/Monaco":[7.38,43.7],"Europe/Moscow":[37.62,55.76],"Europe/Oslo":[10.75,59.92],"Europe/Paris":[2.33,48.87],"Europe/Podgorica":[19.27,42.43],"Europe/Prague":[14.43,50.08],"Europe/Riga":[24.1,56.95],"Europe/Rome":[12.48,41.9],"Europe/Samara":[50.15,53.2],"Europe/San_Marino":[12.47,43.92],"Europe/Sarajevo":[18.42,43.87],"Europe/Saratov":[46.03,51.57],"Europe/Simferopol":[34.1,44.95],"Europe/Skopje":[21.43,41.98],"Europe/Sofia":[23.32,42.68],"Europe/Stockholm":[18.05,59.33],"Europe/Tallinn":[24.75,59.42],"Europe/Tirane":[19.83,41.33],"Europe/Ulyanovsk":[48.4,54.33],"Europe/Vaduz":[9.52,47.15],"Europe/Vatican":[12.45,41.9],"Europe/Vienna":[16.33,48.22],"Europe/Vilnius":[25.32,54.68],"Europe/Volgograd":[44.42,48.73],"Europe/Warsaw":[21,52.25],"Europe/Zagreb":[15.97,45.8],"Europe/Zurich":[8.53,47.38],"Indian/Antananarivo":[47.52,-18.92],"Indian/Chagos":[72.42,-7.33],"Indian/Christmas":[105.72,-10.42],"Indian/Cocos":[96.92,-12.17],"Indian/Comoro":[43.27,-11.68],"Indian/Kerguelen":[70.22,-49.35],"Indian/Mahe":[55.47,-4.67],"Indian/Maldives":[73.5,4.17],"Indian/Mauritius":[57.5,-20.17],"Indian/Mayotte":[45.23,-12.78],"Indian/Reunion":[55.47,-20.87],"Pacific/Apia":[-171.73,-13.83],"Pacific/Auckland":[174.77,-36.87],"Pacific/Bougainville":[155.57,-6.22],"Pacific/Chatham":[-176.55,-43.95],"Pacific/Chuuk":[151.78,7.42],"Pacific/Easter":[-109.43,-27.15],"Pacific/Efate":[168.42,-17.67],"Pacific/Fakaofo":[-171.23,-9.37],"Pacific/Fiji":[178.42,-18.13],"Pacific/Funafuti":[179.22,-8.52],"Pacific/Galapagos":[-89.6,-.9],"Pacific/Gambier":[-134.95,-23.13],"Pacific/Guadalcanal":[160.2,-9.53],"Pacific/Guam":[144.75,13.47],"Pacific/Honolulu":[-157.86,21.31],"Pacific/Kanton":[-171.72,-2.78],"Pacific/Kiritimati":[-157.33,1.87],"Pacific/Kosrae":[162.98,5.32],"Pacific/Kwajalein":[167.33,9.08],"Pacific/Majuro":[171.2,7.15],"Pacific/Marquesas":[-139.5,-9],"Pacific/Midway":[-177.37,28.22],"Pacific/Nauru":[166.92,-.52],"Pacific/Niue":[-169.92,-19.02],"Pacific/Norfolk":[167.97,-29.05],"Pacific/Noumea":[166.45,-22.27],"Pacific/Pago_Pago":[-170.7,-14.27],"Pacific/Palau":[134.48,7.33],"Pacific/Pitcairn":[-130.08,-25.07],"Pacific/Pohnpei":[158.22,6.97],"Pacific/Port_Moresby":[147.17,-9.5],"Pacific/Rarotonga":[-159.77,-21.23],"Pacific/Saipan":[145.75,15.2],"Pacific/Tahiti":[-149.57,-17.53],"Pacific/Tarawa":[173,1.42],"Pacific/Tongatapu":[-175.2,-21.13],"Pacific/Wake":[166.62,19.28],"Pacific/Wallis":[-176.17,-13.3]},ea="https://script.google.com/macros/s/AKfycbxpllCbhqNjqFN02er9WV-0Tv-Y9br13UqXZqGHzSMetAgqKaFX5oFKGHgxji1fxJ6udw/exec",Zf="https://cdn.jsdelivr.net/npm/world-atlas@2/countries-110m.json",Qf=()=>{const[t,n]=Ot(null),[e,r]=Ot(!0),[i,a]=Ot(""),[o,u]=Ot(null),[s,l]=Ot({x:0,y:0});Qt(()=>{document.title="Map - dango"},[]),Qt(()=>{(async()=>{try{const[h,p]=await Promise.all([fetch(`${ea}?type=locations`),fetch(ea)]),g=await h.json(),_=await p.json(),w=g&&g.locations||{},y={};for(const[E,A]of Object.entries(w))!E||E==="Unknown"||na[E]&&(y[E]=A);n({locations:y,total:(_&&_.total)??0,active:(_&&_.active)??0})}catch(h){console.error("Map fetch failed:",h),a("Failed to load map data. Please try again later.")}finally{r(!1)}})()},[]);const c=[];if(t){Math.max(1,...Object.values(t.locations));for(const[f,h]of Object.entries(t.locations)){const p=na[f];if(!p)continue;const g=1.5+Math.min(3,Math.sqrt(h+1)*.6-.8);c.push({tz:f,count:h,coordinates:p,r:g})}}return e?X("div",{className:et.loading,children:"Loading global map..."}):i?X("div",{className:et.error,children:i}):t?X("div",{className:"page-container",children:[X("div",{className:et.header,children:X("div",{children:[X("h2",{className:"section-title",children:"Global User Map"}),X("p",{className:et.subtitle,children:"Purple dots show where installations are located, derived from the timezone each device reports. Hover a dot for details."})]})}),X("div",{className:et.mapCard,children:X("div",{className:et.canvasWrap,children:[X(Ya,{projection:"geoEqualEarth",projectionConfig:{rotate:[0,0,0],scale:105},className:et.mapSvg,children:[X(Ka,{geography:Zf,children:({geographies:f})=>f.map(h=>X(tc,{geography:h,fill:"#1a1a2e",stroke:"#2a2a4a",strokeWidth:.5,style:{default:{outline:"none"},hover:{outline:"none",fill:"#252545"},pressed:{outline:"none"}}},h.rsmKey))}),c.map(f=>X(Za,{coordinates:f.coordinates,onMouseEnter:h=>{u(f),l({x:h.clientX,y:h.clientY})},onMouseMove:h=>{l({x:h.clientX,y:h.clientY})},onMouseLeave:()=>u(null),children:[X("circle",{r:f.r+3,fill:"#a855f7",className:et.glow}),X("circle",{r:f.r,fill:"#a855f7",stroke:"#a855f7",strokeWidth:.8})]},f.tz))]}),o&&X("div",{className:et.tooltip,style:{left:s.x+14,top:s.y-40,position:"fixed"},children:[X("strong",{children:o.tz}),X("span",{children:[o.count," user",o.count===1?"":"s"]})]}),X("div",{className:et.statsGrid,children:[X("div",{className:et.statCard,children:[X(Qr,{name:"users"}),X("div",{children:[X("span",{className:et.statValue,children:t.total}),X("span",{className:et.statLabel,children:"Total Users"})]})]}),X("div",{className:et.statCard,children:[X(Qr,{name:"user-clock"}),X("div",{children:[X("span",{className:et.statValue,children:t.active}),X("span",{className:et.statLabel,children:"Active (24h)"})]})]})]})]})})]}):null};export{Qf as default};
@@ -1 +0,0 @@
1
- ._header_lm0yk_1{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-6);margin-bottom:var(--space-8);animation:_fadeIn_lm0yk_1 .8s var(--ease-smooth)}._subtitle_lm0yk_10{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:var(--space-2) 0 0;max-width:560px}._mapCard_lm0yk_17{background:var(--glass-bg);border:1px solid var(--border-primary);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow);padding:var(--space-2);overflow:hidden;margin-bottom:var(--space-16);animation:_slideUpIn_lm0yk_1 .8s var(--ease-smooth)}._canvasWrap_lm0yk_28{position:relative;width:100%}._mapSvg_lm0yk_33{width:100%;height:auto;display:block}._tooltip_lm0yk_39{pointer-events:none;background:#0a0a0eeb;border:1px solid var(--border-accent);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);box-shadow:var(--glass-shadow);display:flex;flex-direction:column;gap:2px;z-index:10}._tooltip_lm0yk_39 strong{color:var(--accent-light);font-size:var(--font-size-xs);letter-spacing:.3px}._tooltip_lm0yk_39 span{color:var(--text-secondary);font-size:var(--font-size-xs)}._statsGrid_lm0yk_63{display:flex;flex-direction:column;gap:var(--space-2);position:absolute;right:var(--space-3);bottom:var(--space-3);z-index:10}._statCard_lm0yk_73{display:flex;align-items:center;gap:var(--space-3);background:var(--glass-bg);border:1px solid var(--border-primary);border-radius:var(--radius-md);box-shadow:var(--glass-shadow);padding:var(--space-3) var(--space-4);transition:all var(--transition-base);white-space:nowrap}._statCard_lm0yk_73:hover{border-color:var(--border-accent);transform:translateY(-2px)}._statCard_lm0yk_73>svg{font-size:1.1rem;color:var(--accent)}._statValue_lm0yk_96{display:block;font-size:var(--font-size-lg);font-weight:800;color:var(--text-primary);line-height:1.1}._statLabel_lm0yk_104{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:1px;color:var(--text-tertiary)}._loading_lm0yk_111{padding:var(--space-16);text-align:center;color:var(--text-tertiary);animation:_fadeIn_lm0yk_1 .6s var(--ease-smooth)}._error_lm0yk_118{padding:var(--space-16);text-align:center;color:var(--color-danger);animation:_fadeIn_lm0yk_1 .6s var(--ease-smooth)}@media(max-width:600px){._statsGrid_lm0yk_63{flex-direction:row;right:var(--space-2);bottom:var(--space-2);gap:var(--space-1)}._statCard_lm0yk_73{padding:var(--space-2) var(--space-3);gap:var(--space-2)}._statCard_lm0yk_73>svg{font-size:.9rem}._statValue_lm0yk_96{font-size:var(--font-size-sm)}._statLabel_lm0yk_104{font-size:.6rem}}@keyframes _glowPulse_lm0yk_1{0%,to{opacity:.15}50%{opacity:.5}}._glow_lm0yk_161{animation:_glowPulse_lm0yk_1 3s ease-in-out infinite;filter:blur(2px)}
@@ -1 +0,0 @@
1
- import{A as L,d as b,g as Ce,h as F,u as e,S as w,$ as Ze,p as je,T as G}from"./vendor-core-DfaOB3Rn.js";import{t as Pe,W as Je,h as O,z as P}from"./index-Dk0ASzEz.js";import{I as g}from"./vendor-icons-DrybRNxP.js";import{a}from"./Asmr.module-CdWlioTY.js";import{r as h}from"./Radio.module-DGSZLpKM.js";import{b as K,u as Re,a as Ie}from"./vendor-query-BBT5_sHx.js";import{p as J}from"./page.module-C1MlZzf3.js";function Fe(n){if(!Number.isFinite(n)||n<0)return"0:00";const s=Math.floor(n/60),f=Math.floor(n%60);return`${s}:${String(f).padStart(2,"0")}`}const Ke=({track:n,shuffle:s,onToggleShuffle:f,onTrackStep:R,onTrackFailed:ve,onClose:re,liked:W,likeVisible:X,likePending:oe,onToggleLike:ee})=>{const M=L(null),te=L(!1),[H,I]=b(!1),[pe,u]=b(!0),[k,U]=b(!1),[$,A]=b(0),[z,le]=b(0),[T,Y]=b(()=>{const r=parseFloat(localStorage.getItem("musicVolume")||"");return Number.isFinite(r)?r:1}),[E,ce]=b(()=>localStorage.getItem("musicAutoplay")!=="false"),V=L(T);V.current=T;const N=L(E);N.current=E;const y=L(0),D=L(0),B=L(null),Q=L("");Q.current||(Q.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`music-${Date.now()}-${Math.random().toString(36).slice(2)}`);const ne=`/api/music/audio?videoId=${encodeURIComponent(n.id)}`,q=Ce.useCallback(()=>{B.current&&(window.clearTimeout(B.current),B.current=null)},[]),Z=Ce.useCallback(r=>{const o=M.current;if(!o)return;q(),u(!0),U(!1);const v=()=>{if(o.removeEventListener("loadedmetadata",v),r>5&&Number.isFinite(o.duration)&&r<o.duration-5)try{o.currentTime=r}catch{}};o.addEventListener("loadedmetadata",v),o.src=ne,o.load(),o.volume=V.current,o.play().catch(()=>{})},[ne,q]),ke=()=>{u(!1),U(!0),ve?.(n),N.current&&R(1)},ue=()=>{if(!B.current){if(D.current>=3){ke();return}D.current+=1,B.current=window.setTimeout(()=>{B.current=null,Z(y.current)},5e3)}},Ne=()=>{D.current=0,Z(y.current)};F(()=>{y.current=0,D.current=0,I(!1),A(0),le(0);const r=M.current;return Z(y.current),()=>{q(),r&&r.removeAttribute("src")}},[Z,q]),F(()=>{const r=M.current;r&&(r.volume=T)},[T]),F(()=>(document.body.classList.add("asmr-player-open"),()=>document.body.classList.remove("asmr-player-open")),[]);const _=n.thumbnails?.[n.thumbnails.length-1]?.url??null,ae=Ce.useCallback(r=>{const o=M.current;Pe.discord.musicPresence.mutate({title:n.title,artistLabel:n.artists,isPlaying:r,thumbnail:_||"",currentTime:o?.currentTime??0,duration:Number.isFinite(o?.duration??NaN)?o?.duration:0,sessionId:Q.current}).catch(()=>{}),Pe.discord.heartbeat.mutate({sessionId:Q.current}).catch(()=>{})},[n,_]);F(()=>{ae(H)},[ae,H,n.id]),F(()=>{if(!H)return;const r=window.setInterval(()=>ae(!0),15e3);return()=>window.clearInterval(r)},[H,ae]),F(()=>{const r=Q.current,o=()=>Je(r),v=()=>o(),ie=()=>{document.visibilityState==="hidden"&&o()};return window.addEventListener("pagehide",v),window.addEventListener("beforeunload",v),document.addEventListener("visibilitychange",ie),()=>{window.removeEventListener("pagehide",v),window.removeEventListener("beforeunload",v),document.removeEventListener("visibilitychange",ie),o()}},[]);const ge=()=>{const r=M.current;r&&(r.paused?r.play().catch(()=>{}):r.pause())},[we,fe]=b(!1);F(()=>{fe(!1)},[_]);const de=`${n.title} — ${n.artists}`,Se=e(w,{children:[e("div",{className:a.playerButtons,children:[e("button",{className:a.playerBtn,onClick:()=>R(-1),"aria-label":"Previous track",children:e(g,{name:"step-backward"})}),e("button",{className:`${a.playerBtn} ${a.playBtn}`,onClick:ge,"aria-label":H?"Pause":"Play",children:H?e(g,{name:"pause"}):e(g,{name:"play"})}),e("button",{className:a.playerBtn,onClick:()=>R(1),"aria-label":"Next track",children:e(g,{name:"step-forward"})}),k&&e("button",{className:a.playerBtn,onClick:Ne,title:"Retry playback","aria-label":"Retry playback",children:e(g,{name:"redo"})})]}),e("div",{className:a.seekRow,children:[e("span",{className:a.timeLabel,children:Fe($)}),e("input",{className:a.seekBar,type:"range",min:0,max:z||0,step:.1,value:Math.min($,z||0),onChange:r=>{const o=M.current;!o||!Number.isFinite(o.duration)||(o.currentTime=parseFloat(r.target.value),A(o.currentTime))},onPointerDown:()=>{te.current=!0},onPointerUp:()=>{te.current=!1},style:{"--played-percent":`${z>0?$/z*100:0}%`},"aria-label":"Seek"}),e("span",{className:a.timeLabel,children:Fe(z)}),pe&&!k&&e("span",{className:a.timeLabel,children:"loading…"})]})]}),ye=e(w,{children:[n.thumbnails?.[0]?.url&&!we&&e("img",{src:n.thumbnails[0].url,alt:"",className:h.stationThumb,loading:"lazy",decoding:"async",onError:()=>fe(!0)}),e("div",{className:a.playerInfo,children:[e("p",{className:a.playerTitle,title:de,children:de}),e("p",{className:a.playerTrack,children:n.artists})]}),e("div",{className:a.playerControls,children:Se}),e("div",{className:a.playerRight,children:[T===0?e(g,{name:"volume-mute",className:a.volumeIcon}):T<.5?e(g,{name:"volume-down",className:a.volumeIcon}):e(g,{name:"volume-up",className:a.volumeIcon}),e("input",{className:a.volumeBar,type:"range",min:0,max:1,step:.01,value:T,onChange:r=>{const o=parseFloat(r.target.value);Y(o),localStorage.setItem("musicVolume",String(o))},style:{"--volume-percent":`${T*100}%`},"aria-label":"Volume"})]}),e("div",{className:a.playerActions,children:[X&&ee&&e("button",{className:`${a.playerBtn} ${W?a.playerBtnActive:""}`,onClick:ee,disabled:oe,title:W?"Remove from Liked Music":"Add to Liked Music","aria-label":W?"Remove from Liked Music":"Add to Liked Music","aria-pressed":!!W,children:e(g,{name:"heart"})}),e("button",{className:`${a.playerBtn} ${s?a.playerBtnActive:""}`,onClick:f,title:s?"Shuffle on":"Shuffle off","aria-label":"Toggle shuffle","aria-pressed":s,children:e(g,{name:"shuffle"})}),e("button",{className:`${a.playerBtn} ${E?a.playerBtnActive:""}`,onClick:()=>{ce(r=>(localStorage.setItem("musicAutoplay",String(!r)),!r))},title:E?"Autoplay on: next track plays automatically":"Autoplay off","aria-label":"Toggle autoplay","aria-pressed":E,children:e(g,{name:"forward"})}),e("a",{href:`https://music.youtube.com/watch?v=${encodeURIComponent(n.id)}`,target:"_blank",rel:"noreferrer",title:"Open in YouTube Music","aria-label":"Open in YouTube Music",className:a.playerBtn,style:{display:"inline-flex",alignItems:"center"},children:e(g,{name:"external-link-alt"})}),e("button",{className:a.playerBtn,onClick:re,"aria-label":"Close player",children:e(g,{name:"times"})})]})]});return Ze(e(w,{children:[e("audio",{ref:M,preload:"none",onPlay:()=>{I(!0),u(!1),U(!1),D.current=0,q()},onPause:()=>I(!1),onWaiting:()=>{k||u(!0)},onPlaying:()=>{u(!1),D.current=0,q()},onTimeUpdate:r=>{const o=r.target.currentTime;y.current=o,q(),te.current||A(o)},onStalled:()=>{ue()},onLoadedMetadata:r=>{const o=r.target.duration;Number.isFinite(o)&&le(o)},onDurationChange:r=>{const o=r.target.duration;Number.isFinite(o)&&le(o)},onError:()=>{ue()},onEnded:()=>{N.current&&R(1)}}),e("div",{className:a.playerBar,children:ye})]}),document.body)},Xe=()=>e("div",{style:{marginTop:"0.9rem",paddingTop:"0.9rem",borderTop:"1px dashed var(--border-color)"},children:[e("h4",{style:{margin:"0 0 0.35rem",fontSize:"0.95rem"},children:"Where to get the cookie"}),e("p",{style:{margin:"0 0 0.6rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Google marks its login cookies unreadable to page scripts, so this has to come from DevTools — it takes about 20 seconds:"}),e("ol",{style:{margin:"0 0 0.75rem",paddingLeft:"1.25rem",fontSize:"0.85rem",color:"var(--text-secondary)",display:"grid",gap:"0.3rem"},children:[e("li",{children:["Open"," ",e("a",{href:"https://music.youtube.com/",target:"_blank",rel:"noopener noreferrer",children:"music.youtube.com"})," ","and make sure you are logged in."]}),e("li",{children:["Press ",e("kbd",{children:"F12"}),", go to the ",e("strong",{children:"Network"})," tab, and type ",e("kbd",{children:"browse"})," ","in the filter box."]}),e("li",{children:["Click any ",e("kbd",{children:"POST"})," browse entry, then scroll to Request Headers."]}),e("li",{children:[e("strong",{children:"Right-click"})," the ",e("kbd",{children:"Cookie"})," value and choose"," ",e("strong",{children:"Copy value"})," — right-click copies the full unwrapped value, selecting the text by hand truncates it."]}),e("li",{children:"Paste it into the sign-in box above and press Sign in."})]})]}),he=300*1e3,et=()=>{const n=O();return K({...n.music.authStatus.queryOptions(),staleTime:30*1e3,refetchInterval:s=>s.state.data?.authenticated?!1:3e3,retry:1})},tt=()=>{const n=O(),s=Re();return Ie(n.music.authStart.mutationOptions({onSuccess:(f,R)=>{localStorage.setItem("ytmusic_cookie",R.cookie??""),s.invalidateQueries(n.music.pathFilter())}}))},nt=()=>{const n=O(),s=Re();return Ie(n.music.signOut.mutationOptions({onSuccess:()=>{s.invalidateQueries(n.music.pathFilter())}}))},at=n=>{const s=O();return K({...s.music.search.queryOptions({q:n}),enabled:n.trim().length>0,staleTime:he,retry:1})},it=n=>{const s=O();return K({...s.music.library.queryOptions(),enabled:n,staleTime:he,retry:1})},st=n=>{const s=O();return K({...s.music.track.queryOptions({id:n||void 0}),enabled:!!n,staleTime:he,retry:1})},rt=n=>{const s=O();return K({...s.music.playlist.queryOptions({id:n||void 0}),enabled:!!n,staleTime:he,retry:1})},ot=n=>{const s=O();return K({...s.music.upnext.queryOptions({id:n||void 0}),enabled:!!n,staleTime:he,retry:1})},lt=n=>{const s=O();return K({...s.music.likes.queryOptions(),enabled:n,staleTime:120*1e3,retry:1})},ct=()=>{const n=O(),s=Re();return Ie(n.music.like.mutationOptions({onSuccess:()=>{s.invalidateQueries(n.music.pathFilter())}}))},ut="_authRow_10tvv_1",dt="_btn_10tvv_9",mt="_btnGhost_10tvv_42",ht="_cookieForm_10tvv_74",pt="_cookieInput_10tvv_83",gt="_link_10tvv_99",ft="_contentLayout_10tvv_109",yt="_mainCol_10tvv_116",bt="_upnextAside_10tvv_120",vt="_upnextHeader_10tvv_131",kt="_upnextTitle_10tvv_139",Nt="_upnextActions_10tvv_149",wt="_nowPlayingLabel_10tvv_156",St="_nowPlayingWrap_10tvv_168",Tt="_likeBtn_10tvv_172",xt="_likeActive_10tvv_196",p={authRow:ut,btn:dt,btnGhost:mt,cookieForm:ht,cookieInput:pt,link:gt,contentLayout:ft,mainCol:yt,upnextAside:bt,upnextHeader:vt,upnextTitle:kt,upnextActions:Nt,nowPlayingLabel:wt,nowPlayingWrap:St,likeBtn:Tt,likeActive:xt};function Oe(n){const s=n.trim();if(!s)return null;const f=s.match(/[?&]v=([A-Za-z0-9_-]{11})/)?.[1]??s.match(/youtu\.be\/([A-Za-z0-9_-]{11})/)?.[1]??null;return f||(/^[A-Za-z0-9_-]{11}$/.test(s)?s:null)}const Lt="https://github.com/serifpersia/dango/releases/latest/download/dango-extension.zip",At=()=>{const[n,s]=je(),f=Oe(n.get("v")??""),[R,ve]=b(""),[re,W]=b(""),[X,oe]=b(()=>{try{return localStorage.getItem("ytmusic_cookie")??""}catch{return""}}),[ee,M]=b(!1),[te,H]=b(()=>localStorage.getItem("musicShuffle")==="true"),[I,pe]=b(()=>localStorage.getItem("musicRadio")!=="false"),[u,k]=b(null),[U,$]=b([]),[A,z]=b(null),[le,T]=b({}),Y=L([]);Y.current=U;const E=L(null);E.current=u;const ce=L(!1),V=L(new Set),{data:N}=et(),y=tt(),D=nt(),B=typeof navigator<"u"?navigator.userAgent:"",Q=/android/i.test(B),ne=/firefox|fxios/i.test(B)&&!Q,q=!ne&&!Q&&/chrome|chromium|edg|brave/i.test(B),Z=ne||q,ke=()=>{if(ee)return;M(!0);const t=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,i=window.setTimeout(()=>{window.removeEventListener("dango:ytmusic-cookie",c),M(!1),P.error("Helper not detected — install the Dango Helper extension first.")},3e3),c=d=>{let m;try{m=JSON.parse(d.detail)}catch{return}if(!(!m||m.requestId!==t))if(window.clearTimeout(i),window.removeEventListener("dango:ytmusic-cookie",c),M(!1),m?.ok&&m.cookie){const l=m.cookie.replace(/^cookie\s*:\s*/i,"").replace(/^["']+|["']+$/g,"").trim();if(l.includes("…")||l.includes("...")){P.error(`Helper returned a truncated cookie (${l.length} chars) — reload music.youtube.com and Extract again.`);return}oe(l),P.success("Cookie extracted from helper — signing in…"),y.mutate({cookie:l})}else m?.error==="NO_COOKIE"?P.error("Helper found no YouTube login — log in on a music.youtube.com tab first."):P.error("Helper request failed — try again.")};window.addEventListener("dango:ytmusic-cookie",c),window.dispatchEvent(new CustomEvent("dango:get-ytmusic-cookie",{detail:{requestId:t}}))},{data:ue,isLoading:Ne}=at(re),{data:_,isLoading:ae,isFetching:ge,error:we,refetch:fe}=it(N?.authenticated===!0),{data:de,isLoading:Se}=rt(A?.id??null),{data:ye,isLoading:Te}=ot(u?.id??null),{data:r}=lt(N?.authenticated===!0),o=ct(),v=G(()=>ue?.tracks||[],[ue]),ie=G(()=>_?.playlists||[],[_]),C=G(()=>_?.tracks||[],[_]),j=G(()=>de?.tracks||[],[de]),S=G(()=>{const t=ye?.tracks||[];return u?t.filter(i=>i.id!==u.id):t},[ye,u]),De=G(()=>new Set(r?.likedIds||[]),[r]),xe=t=>le[t.id]??(De.has(t.id)||t.liked===!0);F(()=>{N?.authenticated!==!0&&T({})},[N?.authenticated]);const qe=G(()=>[...v,...j,...C,...S],[v,j,C,S]),He=f&&u?.id!==f&&!qe.some(t=>t.id===f)?f:null,{data:$e}=st(He),Le=u?.id;F(()=>{document.title=u?`${u.title} - dango`:"Music - dango"},[u]),F(()=>{if(!f){Le&&k(null);return}if(Le===f)return;const t=d=>{const m=d.find(l=>l.id===f);return m?(k(m),$(l=>l.some(se=>se.id===f)?l:d.length>0?d:[m]),!0):!1};if(t(v)||t(j)||t(C))return;const i=S.find(d=>d.id===f);if(i){k(i),$(d=>d.some(m=>m.id===i.id)?d:[i]);return}const c=$e?.track;c&&c.id===f&&(k(c),$(d=>d.some(m=>m.id===c.id)?d:[c]))},[f,Le,v,j,C,S,$e]);const Me=(t,i)=>{V.current.delete(t.id),k(t),$(i.length>0?i:[t]),s({v:t.id})},Ue=t=>{V.current.add(t.id),P.error(`Couldn't play “${t.title}” — skipped.`)},ze=async()=>{if(ce.current)return;const t=Y.current,i=t[t.length-1]??E.current;if(i){ce.current=!0;try{const c=await Pe.music.upnext.query({id:i.id}),d=new Set(t.map(l=>l.id)),m=(c.tracks||[]).filter(l=>!d.has(l.id)&&!V.current.has(l.id));if(m.length===0){const l=Y.current[0];l&&(k(l),s({v:l.id}));return}$([...Y.current,...m]),k(m[0]),s({v:m[0].id})}catch{const c=Y.current[0];c&&(k(c),s({v:c.id}))}finally{ce.current=!1}}},Ye=t=>{const i=Y.current,c=E.current;if(!c||i.length===0)return;const d=i.findIndex(x=>x.id===c.id);if(t>0&&I&&(d<0||d===i.length-1)){ze();return}const m=x=>V.current.has(x.id),l=i.length;let se;if(te&&l>1){let x=Math.floor(Math.random()*l);for(let _e=0;_e<l&&(x===d||m(i[x]));_e++)x=Math.floor(Math.random()*l);se=i[x]}else{const x=t>0?1:-1;let be=(((d<0?x>0?-1:0:d)+x)%l+l)%l;for(let Be=1;Be<l&&m(i[be]);Be++)be=((be+x)%l+l)%l;se=i[be]}k(se),s({v:se.id})},Qe=()=>{if(I){pe(!1),localStorage.setItem("musicRadio","false");return}const t=E.current;if(!t)return;if(S.length===0){P.error("No radio suggestions for this song yet.");return}const i=new Set,c=[];for(const d of[t,...S])i.has(d.id)||(i.add(d.id),c.push(d));pe(!0),localStorage.setItem("musicRadio","true"),$(c),P.success(`Radio started — ${S.length} songs queued.`)},Ae=t=>{if(N?.authenticated!==!0){P.error("Sign in to like songs.");return}const i=!xe(t);T(c=>({...c,[t.id]:i})),o.mutate({id:t.id,like:i},{onError:()=>{T(c=>{const d={...c};return delete d[t.id],d}),P.error("Like action failed — try again.")}})},Ge=()=>{H(t=>(localStorage.setItem("musicShuffle",String(!t)),!t))},We=t=>e("button",{className:h.stationRow,onClick:()=>z(t),"aria-label":`Open ${t.title}`,children:[t.thumbnails?.[0]?.url?e("img",{src:t.thumbnails[0].url,alt:"",className:h.stationThumb,loading:"lazy",decoding:"async"}):e("span",{className:h.stationThumbPlaceholder,children:e(g,{name:"headphones"})}),e("span",{className:h.stationMeta,children:[e("span",{className:h.stationName,children:t.title}),t.subtitle&&e("span",{className:h.stationSub,children:t.subtitle})]})]},t.id),me=(t,i,c)=>{const d=u?.id===t.id,m=xe(t),l=[t.album,t.duration].filter(Boolean).join(" · ");return e("div",{className:`${h.stationRow} ${d?h.stationRowActive:""}`,style:{cursor:"default"},children:[e("button",{onClick:()=>c?c(t):Me(t,i),className:h.stationRow,style:{flex:1,minWidth:0,background:"transparent",border:0,padding:0},"aria-label":`Play ${t.title}`,children:[t.thumbnails?.[0]?.url?e("img",{src:t.thumbnails[0].url,alt:"",className:h.stationThumb,loading:"lazy",decoding:"async"}):e("span",{className:h.stationThumbPlaceholder,children:e(g,{name:"headphones"})}),e("span",{className:h.stationMeta,children:[e("span",{className:h.stationName,children:t.title}),e("span",{className:h.stationSub,children:[t.artists,l?` · ${l}`:""]})]})]}),N?.authenticated===!0&&e("button",{className:`${p.likeBtn} ${m?p.likeActive:""}`,onClick:()=>Ae(t),disabled:o.isPending,title:m?"Remove from Liked Music":"Add to Liked Music","aria-label":m?`Remove ${t.title} from Liked Music`:`Add ${t.title} to Liked Music`,"aria-pressed":m,children:e(g,{name:"heart"})}),e("a",{href:`https://music.youtube.com/watch?v=${encodeURIComponent(t.id)}`,target:"_blank",rel:"noreferrer",title:"Open in YouTube Music","aria-label":`Open ${t.title} in YouTube Music`,style:{padding:8,color:"inherit",opacity:.7,flexShrink:0},children:e(g,{name:"external-link-alt"})})]},t.id)},Ee=G(()=>{if(!u)return S;const t=new Set,i=[];for(const c of[u,...S])t.has(c.id)||(t.add(c.id),i.push(c));return i},[u,S]),Ve=t=>{Me(t,Ee)};return e("div",{className:`${J.page} ${u?J.pageWithPlayer:""}`,children:[e("div",{className:J.header,children:[e("h1",{className:J.pageTitle,children:[e(g,{name:"headphones"})," Music"]}),e("form",{className:J.searchForm,onSubmit:t=>{t.preventDefault();const i=Oe(R);i?(W(""),s({v:i})):W(R)},children:[e("input",{className:J.searchInput,value:R,onChange:t=>ve(t.target.value),placeholder:"Search YouTube Music…","aria-label":"Search music"}),e("button",{className:J.searchBtn,type:"submit","aria-label":"Search",children:e(g,{name:"search"})})]})]}),e("div",{className:p.authRow,children:[N?.authenticated?e(w,{children:[e("span",{className:a.statusMsg,children:["Signed in to YouTube Music",_&&` — ${_.tracks.length} songs, ${_.playlists.length} playlists`]}),e("button",{className:p.btnGhost,onClick:()=>D.mutate(),disabled:D.isPending,children:"Sign out"})]}):e(w,{children:[e("form",{onSubmit:t=>{t.preventDefault();const i=X.replace(/^cookie\s*:\s*/i,"").replace(/^["']+|["']+$/g,"").trim();if(i){if(i.includes("…")||i.includes("...")){P.error("That cookie is truncated (contains …). Right-click the Cookie header → Copy value, not the wrapped preview.");return}i!==X&&oe(i),y.mutate({cookie:i})}},className:p.cookieForm,children:[e("input",{className:p.cookieInput,value:X,onChange:t=>oe(t.target.value),placeholder:"Paste music.youtube.com Cookie header…","aria-label":"YouTube Music cookie",type:"password"}),e("button",{className:p.btn,type:"submit",disabled:y.isPending||!X.trim(),children:y.isPending?"Checking…":"Sign in"}),Z&&e("button",{className:p.btnGhost,type:"button",onClick:ke,disabled:ee||y.isPending,title:"Read the YouTube Music cookie via the Dango Helper extension (same zip as AnimePahe/JapaneseASMR)",children:ee?"Extracting…":"Extract from helper"})]}),Z&&e("p",{className:a.statusMsg,children:["Two ways to sign in: paste the Cookie header manually (steps below), or download"," ",e("a",{href:Lt,target:"_blank",rel:"noreferrer",className:p.link,children:"dango-extension.zip"})," ","then"," ",ne?e(w,{children:[e("code",{children:"about:debugging"})," → ",e("strong",{children:"This Firefox"})," →"," ",e("strong",{children:"Load Temporary Add-on"})," →"," ",e("code",{children:"dango-extension/firefox/manifest.json"})]}):e(w,{children:[e("code",{children:"chrome://extensions"})," → ",e("strong",{children:"Developer mode"})," →"," ",e("strong",{children:"Load unpacked"})," → ",e("code",{children:"dango-extension/chrome"})]}),", log in on a music.youtube.com tab, and click Extract."]}),e(Xe,{})]}),y.isSuccess&&e("p",{className:a.statusMsg,children:["Signed in — found ",y.data.tracks," songs and ",y.data.playlists," ","playlists."]}),y.isError&&e("p",{className:a.statusMsg,children:y.error?.message||"Sign-in failed. Paste a fresh Cookie header from music.youtube.com."}),!N?.authenticated&&!y.isError&&!y.isSuccess&&e("p",{className:a.statusMsg,children:"Sign in with your YouTube Music cookie to see your library. Search and playback work without sign-in."})]}),e("div",{className:u?p.contentLayout:void 0,children:[e("div",{className:p.mainCol,children:re?e(w,{children:[e("h2",{className:h.sectionTitle,children:["Results for “",re,"”"]}),Ne?e("p",{className:a.statusMsg,children:"Searching…"}):v.length===0?e("p",{className:a.statusMsg,children:"No tracks found."}):e("div",{className:h.stationList,children:v.map(t=>me(t,v))})]}):N?.authenticated?e(w,{children:[e("h2",{className:h.sectionTitle,children:"Your library"}),ae?e("p",{className:a.statusMsg,children:"Loading library…"}):ie.length===0&&C.length===0&&!A?e(w,{children:[e("p",{className:a.statusMsg,children:we?"Library failed to load.":"Your library came back empty — YouTube sometimes drops the saved session."}),e("div",{style:{marginBottom:8},children:e("button",{className:p.btnGhost,onClick:()=>{fe()},disabled:ge,"aria-label":"Retry loading library",children:ge?"Retrying…":"Retry"})}),e("p",{className:a.statusMsg,children:"If it keeps happening, sign out and paste a fresh cookie."})]}):e(w,{children:[ie.length>0&&!A&&e(w,{children:[e("h3",{className:h.sectionTitle,children:"Playlists"}),e("div",{className:h.stationList,children:ie.map(t=>We(t))})]}),C.length>0&&!A&&e(w,{children:[e("h3",{className:h.sectionTitle,children:["Liked songs (",C.length,")"]}),e("div",{style:{marginBottom:8},children:e("button",{className:p.btnGhost,onClick:()=>Me(C[0],C),"aria-label":"Play all liked songs",children:[e(g,{name:"play"})," Play all"]})}),e("div",{className:h.stationList,children:C.map(t=>me(t,C))})]}),A?e(w,{children:[e("button",{className:p.btnGhost,onClick:()=>z(null),style:{marginBottom:8},children:"← Back to library"}),e("h3",{className:h.sectionTitle,children:A.title}),Se?e("p",{className:a.statusMsg,children:"Loading playlist…"}):j.length===0?e("p",{className:a.statusMsg,children:"No tracks in this playlist."}):e("div",{className:h.stationList,children:j.map(t=>me(t,j))})]}):null]})]}):e("p",{className:a.statusMsg,children:"Search above, or sign in to see your library."})}),u&&e("aside",{className:p.upnextAside,"aria-label":"Up next",children:[e("div",{className:p.upnextHeader,children:e("span",{className:p.upnextTitle,children:[e(g,{name:"list-ul"})," Up Next"]})}),e("div",{className:p.nowPlayingWrap,children:[e("p",{className:p.nowPlayingLabel,children:"Now playing"}),me(u,U.length>0?U:[u])]}),e("div",{className:p.upnextActions,children:e("button",{className:p.btnGhost,onClick:Qe,disabled:!I&&(Te||S.length===0),"aria-pressed":I,title:I?"Stop the radio — the queue will loop instead of fetching more songs":"Queue these suggestions after the current song and keep the mix going",children:I?"Stop radio":"Start radio"})}),Te?e("p",{className:a.statusMsg,children:"Loading suggestions…"}):S.length===0?e("p",{className:a.statusMsg,children:"No suggestions for this song."}):e("div",{className:h.stationList,children:S.map(t=>me(t,Ee,Ve))})]})]}),u&&e(Ke,{track:u,queue:U,shuffle:te,onToggleShuffle:Ge,onTrackStep:Ye,onTrackFailed:Ue,onClose:()=>{k(null),s({})},liked:u?xe(u):!1,likeVisible:N?.authenticated===!0,likePending:o.isPending,onToggleLike:()=>Ae(u)})]})};export{At as default};
@@ -1 +0,0 @@
1
- import{b as F}from"./vendor-query-BBT5_sHx.js";import{t as T,l as H,a3 as J,a4 as W,a5 as X}from"./index-Dk0ASzEz.js";import{d as Y,T as R,q as r,u as t,$ as Z,S as w}from"./vendor-core-DfaOB3Rn.js";import{a as ee,c as te,d as ne,b as se,o as ae,f as oe,s as ie}from"./vendor-ui-3qrARCPr.js";import{I as u}from"./vendor-icons-DrybRNxP.js";function Pe(n){return F({queryKey:["show-meta",n],queryFn:async()=>n?T.data.showMeta.query({id:n}):{},enabled:!!n,staleTime:3e4})}async function re(n){try{return await T.watchlist.queueSuggested.query({showId:n})}catch{throw new Error("Failed to resolve suggested episode")}}const ue="_trigger_1vova_6",le="_triggerBtn_1vova_11",me="_chevron_1vova_25",ce="_menu_1vova_34",de="_menuTitle_1vova_51",pe="_menuItem_1vova_60",ge="_removeItem_1vova_91",fe="_menuEmpty_1vova_99",o={trigger:ue,triggerBtn:le,chevron:me,menu:ce,menuTitle:de,menuItem:pe,removeItem:ge,menuEmpty:fe},ve=8,qe=({showId:n,showName:v,showThumbnail:h,nativeName:y,englishName:_,showType:b,className:z="",activeClassName:A="",align:D="right",onMenuOpenChange:p})=>{const{data:E=[]}=H(),P=J(),q=W(),[l,f]=Y(!1),{refs:Q,floatingStyles:M,context:S}=ee({open:l,onOpenChange:e=>{e||(f(!1),p?.(!1))},placement:D==="left"?"bottom-start":"bottom-end",middleware:[ae(ve),oe({padding:8}),ie({padding:8})],whileElementsMounted:se}),x=te(S,{outsidePress:!0,escapeKey:!0,referencePress:!1}),{getReferenceProps:C,getFloatingProps:I}=ne([x]),m=R(()=>E.filter(e=>e.showId===n),[E,n]),{data:K}=F({queryKey:["suggestedEpisode",n],queryFn:()=>re(n),enabled:!!n}),{data:$,isFetching:N}=X(n,l),s=R(()=>$?.episodes||[],[$]),k=r(()=>{f(!0),p?.(!0)},[p]),c=r(()=>{f(!1),p?.(!1)},[p]),d=m.length>0,a=s.length>0,g=K?.episodeNumber,i=r(e=>{!n||e.length===0||(P.mutate({showId:n,episodeNumbers:e,showName:v,showThumbnail:h,nativeName:y,englishName:_,type:b}),c())},[n,v,h,y,_,b,P,c]),L=r(()=>{!n||m.length===0||(q.mutate({showId:n,episodeNumbers:m.map(e=>e.episodeNumber)}),c())},[n,m,q,c]),O=r(()=>{a?i([s[0]]):g&&i([String(g)])},[a,s,g,i]),U=r(()=>{a&&i(s.slice(0,3))},[a,s,i]),G=r(()=>{a&&i([...s])},[a,s,i]),B=s[0],V=s[Math.min(2,s.length-1)],j=t("div",{className:o.trigger,ref:Q.setReference,children:t("span",{className:`${o.triggerBtn} ${z} ${d?A:""}`,role:"button",tabIndex:0,"aria-haspopup":"menu","aria-expanded":l,"aria-label":d?"Queued":"Queue",...C(),onClick:e=>{e.preventDefault(),e.stopPropagation(),l?c():k()},onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.stopPropagation(),l?c():k())},children:[d?t(u,{name:"check",size:14}):t(u,{name:"plus",size:14}),d?"Queued":"Queue",t(u,{name:"chevron-down",size:10,className:o.chevron})]})});return t(w,{children:[j,l&&Z(t("div",{ref:Q.setFloating,className:o.menu,style:M,role:"menu",...I(),onMouseDown:e=>e.stopPropagation(),onClick:e=>{e.preventDefault(),e.stopPropagation()},children:[t("div",{className:o.menuTitle,children:"Queue episodes"}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a&&!g,onClick:e=>{e.stopPropagation(),O()},children:[t(u,{name:"plus",size:11}),t("span",{children:a?`+1 — EP ${B}`:`+1 — EP ${g||"?"}`})]}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a,onClick:e=>{e.stopPropagation(),U()},children:[t(u,{name:"plus",size:11}),t("span",{children:a?`+3 — EP ${B}${s.length>1?`-${V}`:""}`:"+3"})]}),t("button",{className:o.menuItem,role:"menuitem",type:"button",disabled:!a,onClick:e=>{e.stopPropagation(),G()},children:[t(u,{name:"plus",size:11}),t("span",{children:["All Remaining",N?"":` (${Math.max(s.length,0)})`]})]}),!N&&s.length===0&&t("div",{className:o.menuEmpty,children:d?"All episodes are already queued":"No remaining unwatched episodes"}),d&&t("button",{className:`${o.menuItem} ${o.removeItem}`,role:"menuitem",type:"button",onClick:e=>{e.stopPropagation(),L()},children:[t(u,{name:"times",size:11}),t("span",{children:["Remove from Queue",m.length>0?` (${m.length})`:""]})]})]}),document.body)]})};export{qe as Q,Pe as u};
@@ -1,21 +0,0 @@
1
- import{d as r,A as V,h as A,u as e,q as ae,S as te,T as Le,p as xe,a as Pe,g as pe,_ as Ae}from"./vendor-core-DfaOB3Rn.js";import{d as Oe,t as b,B as I,M as F,j as ve,h as Ue,T as H,z as ye,F as oe,G as Me,H as Ee,u as $e,e as Ge,I as Fe,y as fe,A as Ke,J as He,K as Be,V as ze,L as qe,N as je,O as We}from"./index-Dk0ASzEz.js";import{u as ue}from"./vendor-query-BBT5_sHx.js";import{I as W}from"./vendor-icons-DrybRNxP.js";const ce={"title-preference-container":"_title-preference-container_sdqgs_1","toggle-button":"_toggle-button_sdqgs_21","toggle-label":"_toggle-label_sdqgs_51"},le=["name","nativeName","englishName"],de={name:"Default (Romaji)",nativeName:"Native",englishName:"English"},Ve=()=>{const{titlePreference:t,setTitlePreference:s,loading:i}=Oe(),[c,h]=r(de[t]),[d,_]=r(!1),m=V(null);A(()=>{i||h(de[t])},[t,i]);const a=async()=>{if(d)return;_(!0);const f=(le.indexOf(t)+1)%le.length,p=le[f],l=de[p];m.current&&(m.current.style.transform="translateX(-100%)",m.current.style.opacity="0"),setTimeout(async()=>{h(l),s(p),m.current&&(m.current.style.transition="none",m.current.style.transform="translateX(100%)",m.current.style.opacity="0",m.current.offsetWidth,m.current.style.transition="transform 0.3s ease-out, opacity 0.3s ease-out",m.current.style.transform="translateX(0)",m.current.style.opacity="1");try{await b.settings.set.mutate({key:"titlePreference",value:p})}catch(T){console.error("Error saving title preference:",T)}finally{_(!1)}},300)};return i?e("p",{children:"Loading title preference..."}):e("div",{className:ce["title-preference-container"],children:[e("h4",{children:"Anime Title Display Preference"}),e("button",{onClick:a,className:ce["toggle-button"],disabled:d,children:e("span",{ref:m,className:ce["toggle-label"],children:c})})]})},Ye="_settingsHeader_14a5d_1",Je="_pageTitle_14a5d_6",Qe="_pageSubtitle_14a5d_14",Xe="_settingsLayout_14a5d_20",Ze="_sidebar_14a5d_27",et="_sidebarIndicator_14a5d_35",tt="_sidebarItem_14a5d_50",at="_active_14a5d_72",nt="_mainContent_14a5d_80",st="_tabContent_14a5d_85",rt="_sectionCard_14a5d_103",it="_settingItem_14a5d_127",ot="_settingRow_14a5d_132",ct="_controls_14a5d_145",lt="_status_14a5d_151",g={settingsHeader:Ye,pageTitle:Je,pageSubtitle:Qe,settingsLayout:Xe,sidebar:Ze,sidebarIndicator:et,sidebarItem:tt,active:at,mainContent:nt,tabContent:st,sectionCard:rt,settingItem:it,settingRow:ot,controls:ct,status:lt},dt="_sectionCard_wt900_12",ut="_title_wt900_22",ht="_signIn_wt900_29",gt="_userInfo_wt900_36",mt="_warning_wt900_58",pt="_formGroup_wt900_65",yt="_label_wt900_69",ft="_inputWrapper_wt900_79",wt="_input_wt900_79",vt="_select_wt900_103",bt="_actions_wt900_140",_t="_hr_wt900_148",y={sectionCard:dt,title:ut,signIn:ht,userInfo:gt,warning:mt,formGroup:pt,label:yt,inputWrapper:ft,input:wt,select:vt,actions:bt,hr:_t},kt=()=>{const[t,s]=r(!0),[i,c]=r(!1),[h,d]=r(!1),[_,m]=r(null),[a,u]=r({status:"idle"}),[f,p]=r(!1),[l,T]=r(""),[w,C]=r(!1),x=V(null),[L,D]=r({show:!1,message:"",type:"info"}),O=()=>{x.current&&(window.clearInterval(x.current),x.current=null)},N=ae(S=>{d(S.authenticated),m(S.user||S.device.user||null),u(S.device),p(!!S.hasCustomClientId)},[]),R=ae(async()=>{const S=await b.auth.githubStatus.query();N(S)},[N]),M=async()=>{try{const S=await b.auth.githubPoll.query();u(S),S.status==="success"?(O(),await R(),D({show:!0,message:"GitHub authentication complete. Sync has been initialized.",type:"success"})):S.status==="error"&&(O(),D({show:!0,message:S.error||"GitHub authentication failed.",type:"error"}))}catch{O(),D({show:!0,message:"Failed to poll GitHub authentication status.",type:"error"})}},v=(S=5)=>{O(),x.current=window.setInterval(M,Math.max(S,5)*1e3)};A(()=>(R().catch(()=>{D({show:!0,message:"Failed to load GitHub sync status.",type:"error"})}).finally(()=>s(!1)),O),[R]);const k=async()=>{c(!0);try{const S=await b.auth.githubStart.mutate();u(S),v(S.verification?.interval)}catch(S){D({show:!0,message:S instanceof Error?S.message:"Failed to start GitHub authentication.",type:"error"})}finally{c(!1)}},U=async()=>{try{await b.auth.githubLogout.mutate(),d(!1),m(null),u({status:"idle"}),D({show:!0,message:"Signed out of GitHub sync.",type:"success"})}catch{D({show:!0,message:"Failed to sign out of GitHub.",type:"error"})}},E=async()=>{C(!0);try{await b.auth.saveGithubAuth.mutate({clientId:l}),T(""),await R(),D({show:!0,message:"Custom GitHub auth saved.",type:"success"})}catch{D({show:!0,message:"Failed to save override.",type:"error"})}finally{C(!1)}},z=async()=>{C(!0);try{await b.auth.saveGithubAuth.mutate({clientId:""}),T(""),await R(),D({show:!0,message:"Custom auth cleared. Using dango defaults.",type:"success"})}catch{D({show:!0,message:"Failed to clear override.",type:"error"})}finally{C(!1)}};return t?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:y.sectionCard,children:[e("h3",{className:y.title,children:"GitHub Cloud Sync"}),e("p",{className:y.signIn,children:"Sync local data through a private GitHub repository named dango-sync-data."}),h&&_?e("div",{className:y.userInfo,children:[e("p",{children:["Signed in as: ",e("strong",{children:_.name||_.login})]}),e(I,{variant:"danger",onClick:U,children:"Sign Out"})]}):e("div",{className:y.signIn,children:e(I,{onClick:k,disabled:i||a.status==="pending",children:i||a.status==="pending"?"Waiting for GitHub...":"Sign in with GitHub"})}),a.status==="pending"&&a.verification&&e(te,{children:[e("hr",{className:y.hr}),e("div",{className:y.formGroup,children:[e("label",{className:y.label,children:"Verification URL"}),e("div",{className:y.inputWrapper,children:[e("input",{className:y.input,value:a.verification.verification_uri,readOnly:!0}),e(I,{onClick:()=>{const S=a.verification?.verification_uri;S&&/^https?:\/\//i.test(S)&&window.open(S,"_blank","noopener,noreferrer")},children:"Open"})]})]}),e("div",{className:y.formGroup,children:[e("label",{className:y.label,children:"Device Code"}),e("input",{className:y.input,value:a.verification.user_code,readOnly:!0})]})]}),a.status==="error"&&e("p",{className:y.warning,children:a.error}),e("details",{style:{marginTop:"1rem",fontSize:"var(--font-size-sm)"},children:[e("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"},children:["Advanced: use your own auth ",f?"(override active)":""]}),e("div",{className:y.formGroup,style:{marginTop:"0.75rem"},children:[e("label",{className:y.label,children:"Client ID (optional)"}),e("input",{className:y.input,value:l,onChange:S=>T(S.currentTarget.value),placeholder:"Your GitHub OAuth app ID"})]}),e("div",{className:y.actions,children:[e(I,{onClick:E,disabled:w,children:"Save override"}),e(I,{variant:"secondary",onClick:z,disabled:w,children:"Use dango defaults"})]})]}),e(F,{isOpen:L.show,onClose:()=>D(S=>({...S,show:!1})),width:"sm",children:[e(F.Body,{children:e("p",{children:L.message})}),e(F.Actions,{children:e(I,{onClick:()=>D(S=>({...S,show:!1})),children:"OK"})})]})]})},St=()=>{const[t,s]=r(!0),[i,c]=r(null),[h,d]=r(!1),[_,m]=r(!1),[a,u]=r(""),[f,p]=r(""),[l,T]=r(""),[w,C]=r(!1),[x,L]=r({show:!1,message:"",type:"info"}),D=async()=>{try{const k=await b.auth.user.query();c(k?.email?k:null)}catch{c(null)}},O=async()=>{try{const[k,U]=await Promise.all([b.auth.configStatus.query(),b.auth.googleAuth.query()]);d(!!k.hasConfig),m(!!(U.hasCustomWorkerUrl||U.hasCustomClientId||U.hasClientSecret))}catch(k){console.error("Failed to fetch config status",k)}};A(()=>{(async()=>{s(!0),await Promise.all([D(),O()]);try{new URLSearchParams(window.location.search).get("google_auth")==="success"&&(await D(),window.history.replaceState(null,"",window.location.pathname))}catch{}s(!1)})();const U=E=>{E.origin===window.location.origin&&typeof E.data=="object"&&E.data!==null&&E.data.type==="GOOGLE_AUTH_SUCCESS"&&(c(E.data.user),window.location.reload())};return window.addEventListener("message",U),()=>window.removeEventListener("message",U)},[]);const N=async()=>{try{const k=await b.auth.googleLogin.mutate();if(k.authenticated){window.location.reload();return}if(k.url){if(typeof window.DangoBridge<"u"){window.location.href=k.url;return}const E=600,z=700,S=window.innerWidth/2-E/2,ne=window.innerHeight/2-z/2;window.open(k.url,"GoogleAuth",`width=${E},height=${z},top=${ne},left=${S}`)}else throw new Error("Auth URL not available")}catch{L({show:!0,message:"Authentication failed. Ensure server is configured correctly.",type:"error"})}},R=async()=>{try{await b.auth.logout.mutate(),c(null),L({show:!0,message:"Successfully signed out.",type:"success"}),window.location.reload()}catch(k){console.error("Sign out failed",k),L({show:!0,message:"Failed to sign out.",type:"error"})}},M=async()=>{C(!0);try{await b.auth.saveGoogleAuth.mutate({workerUrl:a,clientId:f,clientSecret:l}),u(""),p(""),T(""),await O(),L({show:!0,message:"Custom auth saved. Restart may be required.",type:"success"})}catch{L({show:!0,message:"Failed to save override.",type:"error"})}finally{C(!1)}},v=async()=>{C(!0);try{await b.auth.saveGoogleAuth.mutate({workerUrl:"",clientId:"",clientSecret:""}),u(""),p(""),T(""),await O(),L({show:!0,message:"Custom auth cleared. Using dango defaults.",type:"success"})}catch{L({show:!0,message:"Failed to clear override.",type:"error"})}finally{C(!1)}};return t?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:y.sectionCard,children:[e("h3",{className:y.title,children:"Google Drive Sync"}),i?e("div",{className:y.userInfo,children:[e("p",{children:["Signed in as: ",e("strong",{children:i.name})," (",i.email,")"]}),e(I,{variant:"danger",onClick:R,children:"Sign Out"})]}):e("div",{className:y.signIn,children:[e("p",{children:"Sign in with your Google account to enable synchronization features."}),e(I,{onClick:N,disabled:!h,children:"Sign in with Google"}),!h&&e("p",{className:y.warning,children:"Google sync is not configured on the server."})]}),e("details",{style:{marginTop:"1rem",fontSize:"var(--font-size-sm)"},children:[e("summary",{style:{cursor:"pointer",color:"var(--text-secondary)"},children:["Advanced: use your own auth ",_?"(override active)":""]}),e("div",{className:y.formGroup,style:{marginTop:"0.75rem"},children:[e("label",{className:y.label,children:"Worker URL (optional)"}),e("input",{className:y.input,value:a,onChange:k=>u(k.currentTarget.value),placeholder:"https://your-worker.workers.dev"})]}),e("div",{className:y.formGroup,children:[e("label",{className:y.label,children:"Client ID (optional)"}),e("input",{className:y.input,value:f,onChange:k=>p(k.currentTarget.value),placeholder:"Your Google OAuth client ID"})]}),e("div",{className:y.formGroup,children:[e("label",{className:y.label,children:"Client Secret (optional)"}),e("input",{type:"password",className:y.input,value:l,onChange:k=>T(k.currentTarget.value),placeholder:"Your Google OAuth secret"})]}),e("div",{className:y.actions,children:[e(I,{onClick:M,disabled:w,children:"Save override"}),e(I,{variant:"secondary",onClick:v,disabled:w,children:"Use dango defaults"})]})]}),e(F,{isOpen:x.show,onClose:()=>L(k=>({...k,show:!1})),width:"sm",children:[e(F.Body,{children:e("p",{children:x.message})}),e(F.Actions,{children:e(I,{onClick:()=>L(k=>({...k,show:!1})),children:"OK"})})]})]})},Ct="_sectionCard_1pqo4_1",Nt="_settingItem_1pqo4_26",Tt="_settingRow_1pqo4_31",Rt="_modalOverlay_1pqo4_38",Dt="_modal_1pqo4_38",It="_modalActions_1pqo4_73",Lt="_modalSecondary_1pqo4_79",xt="_modalPrimary_1pqo4_89",G={sectionCard:Ct,settingItem:Nt,settingRow:Tt,modalOverlay:Rt,modal:Dt,modalActions:It,modalSecondary:Lt,modalPrimary:xt},Pt={anime:{heading:"Watchlist Preferences",blurb:"Customize your experience when managing your watchlist and series entries.",skipKey:"skipRemoveConfirmation",ignoreKey:"ignoreAdultContent",listOnlyKey:"cwWatchlistOnly",skipLabel:"Skip confirmation when removing from watchlist",ignoreLabel:"Hide adult content from continue watching",listOnlyLabel:"Only show continue watching for shows in watchlist",listNoun:"watchlist",continueNoun:"continue watching",adultCountUrl:"/api/continue-watching/adult-count",purgeUrl:"/api/continue-watching/purge-adult",purgeDoneText:t=>`Removed ${t??0} entries from continue watching`,invalidateKeys:[["allContinueWatching"]]},manga:{heading:"Reading List Preferences",blurb:"Customize your experience when managing your reading list and manga entries.",skipKey:"mangaSkipRemoveConfirmation",ignoreKey:"mangaIgnoreAdultContent",listOnlyKey:"mangaCwWatchlistOnly",skipLabel:"Skip confirmation when removing from reading list",ignoreLabel:"Hide adult content from continue reading",listOnlyLabel:"Only show continue reading for manga in reading list",listNoun:"reading list",continueNoun:"continue reading",adultCountUrl:"/api/manga/continue-reading/adult-count",purgeUrl:"/api/manga/continue-reading/purge-adult",purgeDoneText:t=>`Removed ${t??0} entries from continue reading`,invalidateKeys:[["manga-continue-reading"]]},tv:{heading:"TV Watchlist Preferences",blurb:"Customize your experience when managing your TV watchlist and series entries.",skipKey:"tvSkipRemoveConfirmation",ignoreKey:"tvIgnoreAdultContent",listOnlyKey:"tvCwWatchlistOnly",skipLabel:"Skip confirmation when removing from TV watchlist",ignoreLabel:"Hide adult content from continue watching",listOnlyLabel:"Only show continue watching for shows in TV watchlist",listNoun:"TV watchlist",continueNoun:"continue watching",adultCountUrl:"/api/tv/continue-watching/adult-count",purgeUrl:"/api/tv/continue-watching/purge-adult",purgeDoneText:t=>`Removed ${t??0} entries from continue watching`,invalidateKeys:[["tv-continue-watching"]]},asmr:{heading:"Listening List Preferences",blurb:"Customize your experience when managing your listening list and work entries.",skipKey:"asmrSkipRemoveConfirmation",ignoreKey:"asmrIgnoreAdultContent",listOnlyKey:"asmrCwWatchlistOnly",skipLabel:"Skip confirmation when removing from listening list",ignoreLabel:"Hide adult content from continue listening",listOnlyLabel:"Only show continue listening for works in listening list",listNoun:"listening list",continueNoun:"continue listening",adultCountUrl:"/api/asmr/continue-listening/adult-count",purgeUrl:"/api/asmr/continue-listening/purge-adult",purgeDoneText:t=>`Removed ${t??0} entries from continue listening`,invalidateKeys:[["asmr-continue-listening"]]}},At=(t,s)=>{if(t==null)return s;const i=String(t);return i==="true"||i==="1"?!0:i==="false"||i==="0"?!1:s},we=(t,s,i)=>{const[c,h]=r(s),[d,_]=r(!1),m=ue();return A(()=>{(async()=>{try{const f=await b.settings.getByKey.query({key:t});h(At(f.value,s))}catch(f){console.error("Failed to fetch setting",f)}})()},[t,s]),{value:c,setValue:h,isUpdating:d,toggle:async()=>{if(d)return;_(!0);const u=!c;h(u);try{await b.settings.set.mutate({key:t,value:u});for(const f of i)m.invalidateQueries({queryKey:f})}catch(f){console.error("Error saving setting:",f),h(!u)}finally{_(!1)}}}},Ot=()=>{const{contentType:t}=ve(),s=Pt[t],[i,c]=r(!1),[h,d]=r(!0),[_,m]=r(!1),a=we(s.ignoreKey,!0,s.invalidateKeys),u=we(s.listOnlyKey,!1,s.invalidateKeys),[f,p]=r(null),[l,T]=r(!1),w=ue(),C=Ue();A(()=>{d(!0),(async()=>{try{const R=await b.settings.getByKey.query({key:s.skipKey});String(R.value)==="true"||String(R.value)==="1"?c(!0):c(!1)}catch(R){console.error("Failed to fetch setting",R)}finally{d(!1)}})()},[s.skipKey]);const x=async()=>{if(_)return;m(!0);const N=!i;c(N);try{await b.settings.set.mutate({key:s.skipKey,value:N})}catch(R){console.error("Error saving setting:",R),c(!N)}finally{m(!1)}},L=async()=>{if(!a.isUpdating){if(a.value)try{let N;if(t==="anime"?N=(await b.continueWatching.adultCount.query()).count:t==="manga"?N=(await b.mangaProgress.adultCount.query()).count:t==="asmr"?N=(await b.asmrProgress.adultCount.query()).count:N=(await b.tvProgress.adultCount.query()).count,typeof N=="number"&&N>0){p(N);return}}catch(N){console.error("Failed to fetch adult count",N)}a.toggle()}},D=()=>{p(null),a.toggle()},O=async()=>{if(!l){T(!0);try{let N;t==="anime"?N=(await b.continueWatching.purgeAdult.mutate()).removed:t==="manga"?N=(await b.mangaProgress.purgeAdult.mutate()).removed:t==="asmr"?N=(await b.asmrProgress.purgeAdult.mutate()).removed:N=(await b.tvProgress.purgeAdult.mutate()).removed,ye.success(s.purgeDoneText(N??0));for(const R of s.invalidateKeys)w.invalidateQueries({queryKey:R});t==="anime"&&w.invalidateQueries(C.continueWatching.pathFilter()),t==="manga"&&w.invalidateQueries(C.mangaProgress.pathFilter()),t==="asmr"&&w.invalidateQueries(C.asmrProgress.pathFilter()),t==="tv"&&w.invalidateQueries(C.tvProgress.pathFilter())}catch(N){console.error("Failed to purge adult entries",N),ye.error("Failed to remove adult entries")}finally{T(!1),p(null)}a.toggle()}};return h?e("div",{children:"Loading settings..."}):e("div",{className:G.sectionCard,children:[e("h3",{children:s.heading}),e("p",{children:s.blurb}),e("div",{className:G.settingItem,children:e("div",{className:G.settingRow,children:[e("label",{htmlFor:"skip-confirmation-toggle",children:s.skipLabel}),e(H,{isChecked:i,onChange:x,id:"skip-confirmation-toggle",disabled:_})]})}),e("div",{className:G.settingItem,children:e("div",{className:G.settingRow,children:[e("label",{htmlFor:"ignore-adult-toggle",children:s.ignoreLabel}),e(H,{isChecked:a.value,onChange:L,id:"ignore-adult-toggle",disabled:a.isUpdating})]})}),e("div",{className:G.settingItem,children:e("div",{className:G.settingRow,children:[e("label",{htmlFor:"cw-watchlist-only-toggle",children:s.listOnlyLabel}),e(H,{isChecked:u.value,onChange:u.toggle,id:"cw-watchlist-only-toggle",disabled:u.isUpdating})]})}),f!==null&&e("div",{className:G.modalOverlay,onClick:()=>p(null),children:e("div",{className:G.modal,onClick:N=>N.stopPropagation(),children:[e("h4",{children:"Show adult entries?"}),e("p",{children:[f," adult ",f===1?"entry":"entries"," not in your"," ",s.listNoun," ",f===1?"is":"are"," currently hidden from"," ",s.continueNoun,". You can purge ",f===1?"it":"them"," from the database instead of showing ",f===1?"it":"them","."]}),e("div",{className:G.modalActions,children:[e("button",{type:"button",className:G.modalSecondary,onClick:D,disabled:l,children:"Show them"}),e("button",{type:"button",className:G.modalPrimary,onClick:O,disabled:l,children:l?"Purging...":`Purge ${f}`})]})]})})]})},Ut="_sectionCard_jkggs_1",Mt="_statsGrid_jkggs_26",Et="_statCard_jkggs_33",$t="_statLabel_jkggs_43",Gt="_statValue_jkggs_51",Ft="_statMeta_jkggs_57",Kt="_statusBanner_jkggs_63",Ht="_statusSuccess_jkggs_74",Bt="_statusUpdating_jkggs_80",zt="_statusError_jkggs_86",qt="_sha_jkggs_92",jt="_settingItem_jkggs_99",Wt="_settingRow_jkggs_104",Vt="_settingTitle_jkggs_111",Yt="_settingSubtitle_jkggs_117",Jt="_actionsRow_jkggs_124",P={sectionCard:Ut,statsGrid:Mt,statCard:Et,statLabel:$t,statValue:Gt,statMeta:Ft,statusBanner:Kt,statusSuccess:Ht,statusUpdating:Bt,statusError:zt,sha:qt,settingItem:jt,settingRow:Wt,settingTitle:Vt,settingSubtitle:Yt,actionsRow:Jt},Qt=()=>{const[t,s]=r(null),[i,c]=r(!0),[h,d]=r(!1),[_,m]=r(!1),a=V(null),u=async()=>{try{const w=await b.settings.offlineDbInfo.query();return s(w),w}catch(w){console.error("Failed to fetch offline DB info:",w)}finally{c(!1)}return null};A(()=>(u(),()=>{a.current&&window.clearInterval(a.current)}),[]),A(()=>{t?.isRefreshing?a.current||(a.current=window.setInterval(async()=>{const w=await u();w&&!w.isRefreshing&&a.current&&(window.clearInterval(a.current),a.current=null)},2e3)):a.current&&(window.clearInterval(a.current),a.current=null)},[t?.isRefreshing]);const f=async()=>{if(!t||h)return;const w=!t.autoUpdateEnabled;d(!0),s({...t,autoUpdateEnabled:w});try{await b.settings.setOfflineDbAutoUpdate.mutate({enabled:w})}catch(C){console.error("Failed to update auto update setting:",C),s({...t,autoUpdateEnabled:!w})}finally{d(!1)}},p=async()=>{if(!(t?.isRefreshing||_)){m(!0);try{await b.settings.triggerOfflineDbUpdate.mutate(),s(w=>w?{...w,isRefreshing:!0,lastStatus:"updating",lastMessage:"Downloading database..."}:null)}catch(w){console.error("Failed to trigger offline DB update:",w)}finally{m(!1)}}},l=w=>{if(!w)return"Never";try{return new Date(w).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}catch{return w}},T=t?.isRefreshing||_;return e("div",{className:P.sectionCard,children:[e("h3",{children:"Offline Metadata Database"}),e("p",{children:"Local MAL to AniList ID map used for instant imports and metadata enrichment without hitting rate-limited APIs. Updates automatically every Saturday in the background."}),e("div",{className:P.statsGrid,children:[e("div",{className:P.statCard,children:[e("span",{className:P.statLabel,children:"MAL Mapped"}),e("span",{className:P.statValue,children:i?"—":(t?.totalMalMapped??0).toLocaleString()})]}),e("div",{className:P.statCard,children:[e("span",{className:P.statLabel,children:"Release"}),e("span",{className:P.statMeta,children:i?"—":t?.releaseTag??"Never"})]}),e("div",{className:P.statCard,children:[e("span",{className:P.statLabel,children:"Last Checked"}),e("span",{className:P.statMeta,children:i?"—":l(t?.lastCheckedAt??null)})]}),e("div",{className:P.statCard,children:[e("span",{className:P.statLabel,children:"Last Updated"}),e("span",{className:P.statMeta,children:i?"—":l(t?.lastUpdatedAt??null)})]})]}),t?.lastMessage&&e("div",{className:`${P.statusBanner} ${t.lastStatus==="failed"?P.statusError:t.lastStatus==="updating"?P.statusUpdating:P.statusSuccess}`,children:[e("span",{children:t.lastMessage}),t.contentSha256&&e("span",{className:P.sha,children:["sha:",t.contentSha256.slice(0,12)]})]}),e("div",{className:P.settingItem,children:e("div",{className:P.settingRow,children:[e("div",{children:[e("span",{className:P.settingTitle,children:"Weekly Automatic Updates (Saturdays)"}),e("div",{className:P.settingSubtitle,children:"Download and index new database releases in the background. Catches up on startup if the server was offline."})]}),e(H,{id:"offline-db-auto-update-toggle",isChecked:t?t.autoUpdateEnabled:!0,onChange:f,disabled:i||h})]})}),e("div",{className:P.actionsRow,children:e(I,{onClick:p,disabled:i||T,children:T?"Updating Database...":"Update Offline Database Now"})})]})},Xt="_sectionCard_1g4qx_1",Zt="_dangerCard_1g4qx_26",ea="_status_1g4qx_34",ta="_warningText_1g4qx_40",aa="_ackLabel_1g4qx_44",ee={sectionCard:Xt,dangerCard:Zt,status:ea,warningText:ta,ackLabel:aa},na=()=>{const t=ue(),[s,i]=r(!1),[c,h]=r(!1),[d,_]=r(!1),[m,a]=r(""),u=()=>{h(!1),a(""),i(!0)},f=()=>{d||(i(!1),h(!1))},p=async()=>{if(!(!c||d)){_(!0),a("");try{const l=await fetch("/api/database/clear",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({confirm:!0})}),T=await l.json();if(!l.ok)throw new Error(T.error||"Failed to clear database");const w=T.deleted,C=T.deletedManga,x=T.deletedTv,L=T.deletedAsmr,D=Object.values(w).reduce((M,v)=>M+(v||0),0)+Object.values(C??{}).reduce((M,v)=>M+(v||0),0)+Object.values(x??{}).reduce((M,v)=>M+(v||0),0)+Object.values(L??{}).reduce((M,v)=>M+(v||0),0),O=(C?.manga_library??0)+(C?.manga_progress??0),N=(x?.tv_library??0)+(x?.tv_progress??0),R=(L?.asmr_library??0)+(L?.asmr_progress??0);a(`Library cleared — ${w.watchlist??0} watchlist entries, ${O} manga rows, ${N} TV rows, ${R} ASMR rows and ${D} total rows removed.`),t.invalidateQueries({queryKey:["watchlist"]}),t.invalidateQueries({queryKey:["allContinueWatching"]}),t.invalidateQueries({queryKey:["manga-library"]}),t.invalidateQueries({queryKey:["manga-continue-reading"]}),t.invalidateQueries({queryKey:["tv-library"]}),t.invalidateQueries({queryKey:["tv-continue-watching"]}),t.invalidateQueries({queryKey:["asmr-library"]}),t.invalidateQueries({queryKey:["asmr-continue-listening"]}),i(!1)}catch(l){a(l.message)}finally{_(!1),h(!1)}}};return e("div",{className:`${ee.sectionCard} ${ee.dangerCard}`,children:[e("h3",{children:"Danger Zone"}),e("p",{children:"Permanently delete your library (watchlist, watched episodes, queue, cached show metadata, manga reading list and reading progress, TV watchlist and watch progress, ASMR listening list and listening progress) to start fresh. Your settings, sync state and the offline metadata cache are preserved."}),e(I,{variant:"danger",onClick:u,children:"Clear Library Data"}),m&&e("p",{className:ee.status,children:m}),e(F,{isOpen:s,onClose:f,title:"Clear library data?",width:"sm",children:[e(F.Body,{children:[e("p",{className:ee.warningText,children:"This permanently deletes everything in your library. It acts on the active database (dev or prod, per server config) and cannot be undone. Settings, sync state and the offline metadata cache are kept."}),e("label",{className:ee.ackLabel,children:[e("input",{type:"checkbox",checked:c,onChange:l=>h(l.target.checked),disabled:d}),e("span",{children:"I understand this permanently deletes my library"})]})]}),e(F.Actions,{children:[e(I,{variant:"secondary",onClick:f,disabled:d,children:"Cancel"}),e(I,{variant:"danger",onClick:p,disabled:!c||d,children:d?"Clearing...":"Yes, delete everything"})]})]})]})},sa=()=>{const[t,s]=r(""),[i,c]=r([]),[h,d]=r(null),[_,m]=r(!0),[a,u]=r({show:!1,message:"",type:"info"}),f=async()=>{try{m(!0);const T=await(await fetch("/api/auth/settings/rclone")).json();s(T.remote||""),c(T.availableRemotes||[]),d(T.activeRemote||null)}catch(l){console.error("Failed to fetch Rclone settings",l)}finally{m(!1)}};A(()=>{f()},[]);const p=async()=>{try{if((await fetch("/api/auth/settings/rclone",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({remote:t})})).ok)u({show:!0,message:"Rclone configuration saved successfully. You must restart the server for these changes to take effect.",type:"success"}),f();else throw new Error("Failed to save")}catch{u({show:!0,message:"Failed to save Rclone configuration.",type:"error"})}};return _?e("div",{style:{color:"var(--text-secondary)",padding:"1.5rem"},children:"Loading..."}):e("div",{className:y.sectionCard,children:[e("h3",{className:y.title,children:"Rclone Cloud Sync"}),e("p",{className:y.signIn,children:"Configure which Rclone remote to use for database synchronization."}),h?e("div",{className:y.userInfo,children:e("p",{children:["Current Active Remote: ",e("strong",{children:h})]})}):e("p",{className:y.warning,style:{marginBottom:"1.5rem"},children:"Rclone sync is not currently active. Ensure rclone is installed and a remote is configured."}),e("div",{className:y.formGroup,children:[e("label",{className:y.label,children:"Remote Name"}),e("div",{className:y.inputWrapper,children:e("select",{className:y.select,value:t,onChange:l=>s(l.target.value),children:[e("option",{value:"",children:"(Disabled / None)"}),i.map(l=>e("option",{value:l,children:l},l)),t&&!i.includes(t)&&e("option",{value:t,children:[t," (Manual)"]})]})}),e("p",{className:y.warning,style:{marginTop:"12px"},children:[e("strong",{children:"Note:"})," You can choose which provider is active using the selector at the top of the page."]})]}),e("div",{className:y.actions,children:e(I,{onClick:p,children:"Save Rclone Settings"})}),e(F,{isOpen:a.show,onClose:()=>u(l=>({...l,show:!1})),width:"sm",children:[e(F.Body,{children:e("p",{children:a.message})}),e(F.Actions,{children:e(I,{onClick:()=>u(l=>({...l,show:!1})),children:"OK"})})]})]})},ra=()=>{const[t,s]=r(null),[i,c]=r(!0),h=async()=>{try{const u=await(await fetch("/api/auth/settings/sync")).json();s(u)}catch(a){console.error("Failed to fetch sync settings",a)}finally{c(!1)}};A(()=>{h()},[]);const d=async a=>{const u=a.target.value;try{const f=await fetch("/api/auth/settings/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:u})});if(f.ok){const p=await f.json();s(l=>l?{...l,activeProvider:p.activeProvider}:null),await h(),oe.success(`Sync provider updated to ${u==="default"?"Default Order":u}`)}else oe.error("Failed to update sync provider")}catch{oe.error("Error updating sync provider")}};if(i||!t)return null;const _=[{value:"default",label:"Default (Priority Based)"}];t.authenticatedProviders.github&&_.push({value:"github",label:"GitHub"}),t.authenticatedProviders.google&&_.push({value:"google",label:"Google Drive"}),t.authenticatedProviders.rclone&&_.push({value:"rclone",label:"Rclone"}),_.push({value:"none",label:"None (Local Only)"});const m=a=>a==="none"?"Local Only (No Sync)":a==="google"?"Google Drive":a==="github"?"GitHub":a==="rclone"?"Rclone":a;return e("div",{className:g.sectionCard,children:[e("h3",{children:"Active Sync Provider"}),e("p",{children:'Choose which provider to use for synchronization. "Default" uses the first available provider you are logged into.'}),e("div",{style:{marginBottom:"1.5rem",padding:"0.75rem",background:"rgba(255, 255, 255, 0.03)",borderRadius:"var(--radius-md)",borderLeft:"4px solid var(--accent)",fontSize:"var(--font-size-sm)"},children:["Current Status:"," ",e("strong",{style:{color:"var(--accent-light)",textTransform:"capitalize"},children:m(t.actualActiveProvider)})]}),e("div",{className:g.settingRow,children:[e("label",{htmlFor:"sync-provider-select",children:"Selected Preference"}),e("select",{id:"sync-provider-select",value:t.activeProvider,onChange:d,style:{padding:"0.5rem",borderRadius:"var(--radius-md)",background:"rgba(255, 255, 255, 0.05)",color:"var(--text-primary)",border:"1px solid var(--glass-border)",fontSize:"var(--font-size-sm)",minWidth:"220px",outline:"none",cursor:"pointer"},children:_.map(a=>e("option",{value:a.value,children:a.label},a.value))})]})]})};function ia(){return"javascript:"+encodeURIComponent(`(function(){
2
- if(!/(^|\\.)discord\\.com$/.test(location.hostname)){alert('Dango: use this bookmarklet while on discord.com');return}
3
- var t=null;
4
- try{
5
- window.webpackChunkdiscord_app.push([[Symbol()],{},function(req){
6
- if(!req.c)return;
7
- var ms=Object.values(req.c);
8
- for(var i=0;i<ms.length;i++){var m=ms[i];
9
- try{
10
- if(!m.exports||m.exports===window)continue;
11
- if(typeof m.exports.getToken==='function'){var x=m.exports.getToken();if(x){t=x;return}}
12
- for(var k in m.exports){try{var ex=m.exports[k];if(ex&&typeof ex.getToken==='function'&&ex[Symbol.toStringTag]!=='IntlMessagesProxy'){var y=ex.getToken();if(y){t=y;return}}}catch(e1){}}
13
- }catch(e2){}}
14
- }]);
15
- window.webpackChunkdiscord_app.pop();
16
- }catch(e3){}
17
- if(!t){alert('Dango: could not grab your token. Make sure you are logged in to Discord in this tab, then run the bookmarklet again.');return}
18
- function copyFallback(){var a=document.createElement('textarea');a.value=t;a.style.position='fixed';a.style.opacity='0';document.body.appendChild(a);a.select();try{document.execCommand('copy')}catch(e4){}document.body.removeChild(a)}
19
- var done=function(){window.close();setTimeout(function(){if(!window.closed){alert('Dango: token copied to clipboard! Could not close this tab, so just close it, go back to Dango Settings, paste the token and press Save.')}},250)};
20
- if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(t).then(done,function(){copyFallback();done()})}else{copyFallback();done()}
21
- })()`)}const oa=()=>{const t=Le(ia,[]);return e("div",{style:{marginTop:"0.9rem",paddingTop:"0.9rem",borderTop:"1px dashed var(--border-color)"},children:[e("h4",{style:{margin:"0 0 0.35rem",fontSize:"0.95rem"},children:"Grab the token automatically (bookmarklet)"}),e("p",{style:{margin:"0 0 0.6rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Set this up once and you never have to dig through DevTools: the bookmarklet copies your Discord token to the clipboard and closes the Discord tab — then you just paste it above and press Save."}),e("ol",{style:{margin:"0 0 0.75rem",paddingLeft:"1.25rem",fontSize:"0.85rem",color:"var(--text-secondary)",display:"grid",gap:"0.3rem"},children:[e("li",{children:["Drag the ",e("strong",{style:{color:"var(--text-primary)"},children:"Dango Token Grabber"})," ","button below onto your bookmarks bar (press ",e("kbd",{children:"Ctrl"}),"+",e("kbd",{children:"Shift"}),"+",e("kbd",{children:"B"})," ","first if the bar is hidden)."]}),e("li",{children:["Click ",e("strong",{style:{color:"var(--text-primary)"},children:"Open Discord"})," and log in (skip this if you are already logged in)."]}),e("li",{children:["On the Discord tab, click the"," ",e("strong",{style:{color:"var(--text-primary)"},children:"Dango Token Grabber"})," bookmark. The token lands in your clipboard and the tab closes on its own — come back here, paste it above and press ",e("strong",{children:"Save"}),"."]})]}),e("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center",flexWrap:"wrap"},children:[e("a",{href:t,onClick:c=>{c.preventDefault(),alert("Drag this button onto your bookmarks bar instead of clicking it, then click it while you are on discord.com.")},title:"Drag me to your bookmarks bar",draggable:!0,style:{display:"inline-flex",alignItems:"center",padding:"0.4rem 0.8rem",borderRadius:"999px",border:"1px dashed var(--accent)",background:"var(--bg-secondary)",color:"var(--text-primary)",fontSize:"0.85rem",textDecoration:"none",cursor:"grab",userSelect:"none"},children:[e(W,{name:"bookmark",style:{marginRight:"0.45rem",color:"var(--accent)"}}),"Dango Token Grabber"]}),e("a",{className:"btn btn-secondary btn-sm",href:"https://discord.com/channels/@me",target:"_blank",rel:"noopener noreferrer",children:"Open Discord"}),e(I,{variant:"ghost",size:"sm",onClick:async()=>{try{await navigator.clipboard.writeText(t),alert('Bookmarklet code copied. Create a new bookmark on your bookmarks bar, name it "Dango Token" and paste the code as its URL.')}catch{alert(`Could not copy automatically. Right-click the "Dango Token Grabber" button and choose "Copy link address" instead, then paste that into a new bookmark's URL.`)}},children:"Copy code"})]}),e("p",{style:{margin:"0.5rem 0 0",fontSize:"0.75rem",color:"var(--text-tertiary)"},children:`"Copy code" is a fallback for browsers that won't drag bookmarklets: create any bookmark, then paste the copied code as its URL.`})]})},ca="_sectionCard_1ag4p_1",la="_settingItem_1ag4p_25",da="_field_1ag4p_30",ua="_input_1ag4p_43",ha="_actions_1ag4p_63",ga="_status_1ag4p_69",B={sectionCard:ca,settingItem:la,field:da,input:ua,actions:ha,status:ga},ma=()=>{const[t,s]=r(!1),[i,c]=r(""),[h,d]=r(""),[_,m]=r(!0),[a,u]=r(!1),[f,p]=r("");A(()=>{(async()=>{try{const L=await(await fetch("/api/auth/app-status")).json();s(L.hasPassword)}catch{console.error("Failed to fetch LAN auth status")}finally{m(!1)}})()},[]);const l=async()=>{if(p(""),i!==h){p("Passwords do not match");return}if(i.length<4){p("Password must be at least 4 characters");return}u(!0);try{const C=await fetch("/api/auth/app-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:i})}),x=await C.json();if(!C.ok){p(x.error||"Failed to update password");return}s(x.hasPassword),c(""),d(""),p(x.hasPassword?"Password set successfully":"Password removed")}catch{p("Network error")}finally{u(!1)}},T=async()=>{u(!0);try{const C=await fetch("/api/auth/app-setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:""})}),x=await C.json();if(!C.ok){p(x.error||"Failed to remove password");return}s(!1),c(""),d(""),p("Password removed")}catch{p("Network error")}finally{u(!1)}},w=async()=>{u(!0);try{await fetch("/api/auth/app-logout",{method:"POST"}),p("Logged out"),window.location.reload()}catch{p("Logout failed")}finally{u(!1)}};return _?e("div",{className:B.sectionCard,children:e("p",{children:"Loading..."})}):e("div",{className:B.sectionCard,children:[e("h3",{children:"LAN Lock"}),e("p",{children:"Require a password to access this instance from any device, including this one. Sessions persist across server restarts until logout or password change."}),e("div",{className:B.settingItem,children:[e("div",{className:B.field,children:[e("label",{htmlFor:"lan-password",children:"New Password"}),e("input",{id:"lan-password",type:"password",value:i,onChange:C=>c(C.target.value),placeholder:t?"Leave empty to keep current password":"Enter a password...",className:B.input})]}),e("div",{className:B.field,children:[e("label",{htmlFor:"lan-confirm-password",children:"Confirm Password"}),e("input",{id:"lan-confirm-password",type:"password",value:h,onChange:C=>d(C.target.value),placeholder:"Confirm password...",className:B.input})]}),e("div",{className:B.actions,children:[e(I,{variant:"primary",onClick:l,loading:a,disabled:a,children:t?"Update Password":"Set Password"}),t&&e(I,{variant:"danger",onClick:w,loading:a,disabled:a,children:"Logout"}),t&&e(I,{variant:"secondary",onClick:T,loading:a,disabled:a,children:"Remove Password"})]}),f&&e("p",{className:B.status,children:f})]})]})},pa=()=>{const{theme:t,setTheme:s,loading:i}=Me();return e("div",{children:[e("h4",{style:{margin:"0 0 0.25rem",fontSize:"1rem"},children:"Palette"}),e("p",{style:{margin:"0 0 0.75rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Taro is the default. Pick a palette that suits you."}),e("div",{role:"radiogroup","aria-label":"Palette",style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:"0.6rem"},children:Ee.map(c=>{const h=t===c.id;return e("button",{role:"radio","aria-checked":h,disabled:i,onClick:()=>s(c.id),style:{display:"flex",gap:"0.6rem",alignItems:"center",textAlign:"left",padding:"0.65rem 0.75rem",borderRadius:"10px",cursor:"pointer",background:h?"var(--accent-subtle)":"var(--bg-tertiary)",border:h?"1px solid var(--accent)":"1px solid var(--border-primary)",color:"var(--text-primary)"},children:[e("span",{"aria-hidden":!0,style:{width:26,height:26,borderRadius:"50%",flex:"none",background:c.swatch,border:"1px solid rgba(0,0,0,0.35)"}}),e("span",{style:{minWidth:0},children:[e("span",{style:{display:"block",fontSize:"0.85rem",fontWeight:700},children:c.label}),e("span",{style:{display:"block",fontSize:"0.75rem",color:"var(--text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:c.blurb})]})]},c.id)})})]})},ya="_card_13wyw_1",fa="_cardHeader_13wyw_9",wa="_discordBadge_13wyw_16",va="_cardTitle_13wyw_27",ba="_cardSub_13wyw_34",_a="_description_13wyw_40",ka="_divider_13wyw_47",Sa="_statsRow_13wyw_54",Ca="_statBox_13wyw_61",Na="_statValue_13wyw_71",Ta="_statLabel_13wyw_78",Ra="_rolePreview_13wyw_86",Da="_badge_13wyw_93",Ia="_badgeRank_13wyw_100",La="_badgeDere_13wyw_106",xa="_progressSection_13wyw_112",Pa="_progressLabel_13wyw_116",Aa="_progressTrack_13wyw_124",Oa="_progressFill_13wyw_132",Ua="_tierList_13wyw_139",Ma="_dereSection_13wyw_147",Ea="_sectionHeading_13wyw_152",$a="_dereGrid_13wyw_161",Ga="_dereCard_13wyw_167",Fa="_dereCardActive_13wyw_178",Ka="_dereName_13wyw_184",Ha="_dereGenre_13wyw_194",Ba="_actions_13wyw_199",za="_btnPrimary_13wyw_205",qa="_btnSecondary_13wyw_234",ja="_statusMsg_13wyw_257",Wa="_statusSuccess_13wyw_264",Va="_statusError_13wyw_270",Ya="_statusInfo_13wyw_276",Ja="_userRow_13wyw_283",Qa="_avatar_13wyw_294",Xa="_avatarPlaceholder_13wyw_302",Za="_userName_13wyw_314",en="_userId_13wyw_320",tn="_notice_13wyw_325",an="_shareList_13wyw_332",nn="_btnUnlink_13wyw_340",o={card:ya,cardHeader:fa,discordBadge:wa,cardTitle:va,cardSub:ba,description:_a,divider:ka,statsRow:Sa,statBox:Ca,statValue:Na,statLabel:Ta,rolePreview:Ra,badge:Da,badgeRank:Ia,badgeDere:La,progressSection:xa,progressLabel:Pa,progressTrack:Aa,progressFill:Oa,tierList:Ua,dereSection:Ma,sectionHeading:Ea,dereGrid:$a,dereCard:Ga,dereCardActive:Fa,dereName:Ka,dereGenre:Ha,actions:Ba,btnPrimary:za,btnSecondary:qa,statusMsg:ja,statusSuccess:Wa,statusError:Va,statusInfo:Ya,userRow:Ja,avatar:Qa,avatarPlaceholder:Xa,userName:Za,userId:en,notice:tn,shareList:an,btnUnlink:nn},q=[{label:"F-Rank",hours:0},{label:"E-Rank",hours:5},{label:"D-Rank",hours:20},{label:"C-Rank",hours:50},{label:"B-Rank",hours:100},{label:"A-Rank",hours:200},{label:"S-Rank",hours:400}],be={fantasy:"Kamidere",action:"Kamidere",isekai:"Kamidere",magic:"Kamidere","super power":"Megadere",adventure:"Himedere","martial arts":"Himedere",family:"Himedere",comedy:"Bakadere",shounen:"Bakadere",parody:"Bakadere",sports:"Undere",music:"Deredere",romance:"Deredere",ecchi:"Deredere",harem:"Deredere",drama:"Dandere","slice of life":"Dandere",yuri:"Dandere","school life":"Dandere","high school":"Tsundere",school:"Tsundere",military:"Tsundere",shoujo:"Tsundere",seinen:"Kuudere","sci-fi":"Kuudere","science fiction":"Kuudere",mystery:"Kuudere",mecha:"Kuudere",josei:"Kuudere",psychological:"Yandere",horror:"Yandere",thriller:"Sadodere",supernatural:"Dorodere",demons:"Dorodere",game:"Oujidere",historical:"Kanedere"};function sn(t){return be[(t||"").toLowerCase().trim()]||"Tsundere"}function rn(t){const s=new Set;for(const i of t){const c=be[i.toLowerCase().trim()];c&&s.add(c)}return[...s]}const on=[{name:"Tsundere",genres:"Romance, School, Shoujo, Military, High School"},{name:"Yandere",genres:"Psychological, Horror"},{name:"Kuudere",genres:"Seinen, Sci-Fi, Mystery, Mecha, Josei"},{name:"Dandere",genres:"Drama, Slice of Life, Yuri, School Life"},{name:"Deredere",genres:"Romance, Ecchi, Harem, Music"},{name:"Bakadere",genres:"Comedy, Shounen, Parody"},{name:"Kamidere",genres:"Fantasy, Action, Isekai, Magic"},{name:"Dorodere",genres:"Supernatural, Demons"},{name:"Himedere",genres:"Adventure, Martial Arts, Family"},{name:"Sadodere",genres:"Thriller"},{name:"Undere",genres:"Sports"},{name:"Megadere",genres:"Super Power"},{name:"Oujidere",genres:"Game"},{name:"Kanedere",genres:"Historical"}];function cn(t){return t>=400?"S-Rank":t>=200?"A-Rank":t>=100?"B-Rank":t>=50?"C-Rank":t>=20?"D-Rank":t>=5?"E-Rank":"F-Rank"}function ln(t){const s=[...q].reverse().findIndex(u=>t>=u.hours),i=s===-1?0:q.length-1-s,c=q[i].label,h=i<q.length-1?q[i+1]:null;if(!h)return{pct:100,current:c,next:"MAX",nextHours:0};const d=q[i].hours,_=q.length-1,m=(t-d)/(h.hours-d);return{pct:Math.min(100,(i+m)/_*100),current:c,next:h.label,nextHours:h.hours-t}}const re="dango_discord_user";function dn({workerUrl:t}){const[s,i]=r(()=>{try{const v=localStorage.getItem(re);if(v)return JSON.parse(v)}catch{}try{const k=new URLSearchParams(window.location.search).get("discord_user");if(k)return JSON.parse(k)}catch{}return null}),[c,h]=r(null),[d,_]=r(!1),[m,a]=r(null),[u,f]=r(()=>!s);A(()=>{const v=new URLSearchParams(window.location.search),k=v.get("discord_user");if(k){try{const U=JSON.parse(k);U&&U.id&&(i(U),f(!1),localStorage.setItem(re,JSON.stringify(U)),b.insights.setDiscordUser.mutate({user:U}).catch(()=>{}))}catch{}v.delete("discord_user"),window.history.replaceState(null,"",window.location.pathname+(v.toString()?`?${v.toString()}`:""))}},[]);const p=ae(async()=>{if(s){f(!1);return}try{const v=await b.insights.discordUser.query();v.user&&(i(v.user),localStorage.setItem(re,JSON.stringify(v.user)))}catch{}finally{f(!1)}},[s]),l=ae(async()=>{try{const v=await b.insights.discordSyncStats.query();h(v)}catch{}},[]);A(()=>{p(),l()},[p,l]);const T=()=>{localStorage.removeItem(re),i(null),a(null),b.insights.setDiscordUser.mutate({user:null}).catch(()=>{})},w=async()=>{if(!(!s||!c)){_(!0),a(null);try{const v=await b.insights.discordSyncNow.mutate();v.success?a({type:"success",text:`✅ ${v.message}`}):a({type:"error",text:`❌ ${v.error||v.message||"Sync failed"}`})}catch{a({type:"error",text:"❌ Network error — check your connection"})}finally{_(!1)}}},C=c?Math.round(c.totalSeconds/3600):0,x=cn(C),L=c?sn(c.topGenre):"—",D=c?.dere||(c?.genres?rn(c.genres):[L]),{pct:O,next:N,nextHours:R}=ln(C),M=s?.avatar?`https://cdn.discordapp.com/avatars/${s.id}/${s.avatar}.${s.avatar.startsWith("a_")?"gif":"png"}?size=80`:null;return e(te,{children:[e("div",{className:o.card,children:[e("div",{className:o.cardHeader,children:[e("div",{className:o.discordBadge,children:e("svg",{width:"20",height:"15",viewBox:"0 0 71 55",fill:"white","aria-hidden":"true",children:e("path",{d:"M60.1 4.9A58.5 58.5 0 0 0 45.5.3a.22.22 0 0 0-.23.11 40.8 40.8 0 0 0-1.8 3.7 54 54 0 0 0-16.2 0 37.5 37.5 0 0 0-1.83-3.7.23.23 0 0 0-.23-.11A58.3 58.3 0 0 0 10.9 4.9a.2.2 0 0 0-.1.08C1.58 18.73-1 32.23.31 45.55a.24.24 0 0 0 .09.17 58.8 58.8 0 0 0 17.7 8.95.23.23 0 0 0 .25-.08 42 42 0 0 0 3.61-5.88.22.22 0 0 0-.12-.31 38.7 38.7 0 0 1-5.53-2.64.23.23 0 0 1-.02-.37 29 29 0 0 0 1.1-.86.22.22 0 0 1 .23-.03c11.6 5.3 24.14 5.3 35.6 0a.22.22 0 0 1 .23.03c.36.3.73.58 1.1.86a.23.23 0 0 1-.02.37 36.4 36.4 0 0 1-5.53 2.64.22.22 0 0 0-.12.31 47.1 47.1 0 0 0 3.61 5.88.22.22 0 0 0 .25.08 58.6 58.6 0 0 0 17.72-8.95.23.23 0 0 0 .09-.16c1.47-15.27-2.47-28.65-10.46-40.47a.18.18 0 0 0-.09-.09ZM23.73 37.55c-3.49 0-6.37-3.21-6.37-7.15s2.82-7.15 6.37-7.15c3.58 0 6.42 3.24 6.37 7.15 0 3.94-2.82 7.15-6.37 7.15Zm23.54 0c-3.49 0-6.37-3.21-6.37-7.15s2.82-7.15 6.37-7.15c3.58 0 6.42 3.24 6.37 7.15 0 3.94-2.79 7.15-6.37 7.15Z"})})}),e("div",{children:[e("p",{className:o.cardTitle,children:"Discord Account"}),e("p",{className:o.cardSub,children:"Link your Discord to earn community roles"})]})]}),u?e("p",{className:o.notice,children:"Loading…"}):s?e(te,{children:[e("div",{className:o.userRow,children:[M?e("img",{className:o.avatar,src:M,alt:s.username}):e("div",{className:o.avatarPlaceholder,children:"👤"}),e("div",{children:[e("p",{className:o.userName,children:s.username}),e("p",{className:o.userId,children:["ID: ",s.id]})]}),e("button",{className:o.btnUnlink,onClick:T,title:"Disconnect your Discord account",children:"Disconnect"})]}),e("p",{className:o.notice,children:"The following data is shared with the Dango community service to assign roles:"}),e("ul",{className:o.shareList,children:[e("li",{children:"Total watch time (hours)"}),e("li",{children:"Top 3 watched genres"}),e("li",{children:"Discord user ID + username"})]})]}):e(te,{children:[e("p",{className:o.description,children:"Sign in with Discord (OAuth) to link your account. Only your public username and ID are stored — no email or DMs."}),e("div",{className:o.actions,children:[e("button",{className:o.btnPrimary,onClick:()=>{const v=encodeURIComponent(window.location.origin+"/settings?tab=community"),k=`${t}/auth/login?return_to=${v}`;window.location.href=k},children:"Login with Discord"}),e("a",{className:o.btnSecondary,href:"https://discord.gg/2FTSPXCsvn",target:"_blank",rel:"noopener noreferrer",children:"Join Server"})]})]})]}),e("div",{className:o.card,children:[e("div",{className:o.cardHeader,children:e("div",{children:[e("p",{className:o.cardTitle,children:"Your Roles"}),e("p",{className:o.cardSub,children:"Based on your current Dango watch history"})]})}),c?e(te,{children:[e("div",{className:o.statsRow,children:[e("div",{className:o.statBox,children:[e("span",{className:o.statValue,children:[C,"h"]}),e("span",{className:o.statLabel,children:"Watch Time"})]}),e("div",{className:o.statBox,children:[e("span",{className:o.statValue,children:c.topGenre||"—"}),e("span",{className:o.statLabel,children:"Top Genre"})]})]}),e("div",{className:o.rolePreview,children:[e("span",{className:`${o.badge} ${o.badgeRank}`,children:x}),e("span",{className:`${o.badge} ${o.badgeDere}`,children:L})]}),e("div",{className:o.progressSection,children:[e("div",{className:o.progressLabel,children:[e("span",{children:["Progress to ",N]}),e("span",{children:N==="MAX"?"MAX":`${R}h remaining`})]}),e("div",{className:o.progressTrack,children:e("div",{className:o.progressFill,style:{width:`${O}%`}})}),e("div",{className:o.tierList,children:[e("span",{children:"0h (F)"}),e("span",{children:"5h (E)"}),e("span",{children:"20h (D)"}),e("span",{children:"50h (C)"}),e("span",{children:"100h (B)"}),e("span",{children:"200h (A)"}),e("span",{children:"400h (S)"})]})]}),e("div",{className:o.dereSection,children:[e("p",{className:o.sectionHeading,children:"Personality Archetypes"}),e("div",{className:o.dereGrid,children:on.map(v=>{const k=D.includes(v.name);return e("div",{className:`${o.dereCard} ${k?o.dereCardActive:""}`,children:[e("span",{className:o.dereName,children:v.name}),e("span",{className:o.dereGenre,children:v.genres})]},v.name)})})]}),e("hr",{className:o.divider}),e("div",{className:o.actions,children:[e("button",{className:o.btnPrimary,onClick:w,disabled:!s||d,id:"discord-roles-sync-btn",children:d?"Syncing…":"Sync Roles"}),!s&&e("span",{style:{fontSize:"0.78rem",color:"var(--text-tertiary)",alignSelf:"center"},children:"Login first to sync"})]}),m&&e("p",{className:`${o.statusMsg} ${m.type==="success"?o.statusSuccess:m.type==="error"?o.statusError:o.statusInfo}`,children:m.text})]}):e("p",{className:o.notice,children:"No watch data yet — start watching to earn roles!"})]}),e("div",{className:o.card,children:[e("div",{className:o.cardHeader,children:e("div",{children:[e("p",{className:o.cardTitle,children:"Dango Discord Server"}),e("p",{className:o.cardSub,children:"Community, announcements and support"})]})}),e("div",{className:o.actions,children:e("a",{className:o.btnPrimary,href:"https://discord.gg/2FTSPXCsvn",target:"_blank",rel:"noopener noreferrer",children:"Join the Server"})})]})]})}function un({variant:t="info",children:s,className:i=""}){return e("div",{className:`alert alert-${t} ${i}`,children:s})}const hn={anime:"Watchlist",manga:"Reading List",tv:"TV Watchlist",asmr:"Listening List"},fn=()=>{const[t,s]=xe(),i=Pe(),{contentType:c}=ve(),h=t.get("tab"),[d,_]=r(h&&["general","sync","watchlist","database","community"].includes(h)?h:"general"),[m,a]=r(""),u=V(null),f=V(null),p=V(new Map),[l,T]=r({top:0,height:0,left:0,width:0}),{lowEndMode:w,setLowEndMode:C}=$e(),{hasConsent:x,revoke:L}=Ge(),[D,O]=r(""),[N,R]=r(localStorage.getItem("telemetry_enabled")!=="false"),[M,v]=r(localStorage.getItem("installation_id")||"");A(()=>{b.settings.installationId.query().then(n=>{n.id&&(v(n.id),localStorage.setItem("installation_id",n.id))}).catch(()=>{})},[]),A(()=>{b.discord.rolesConfig.query().then(n=>{n.workerUrl&&O(n.workerUrl)}).catch(()=>{})},[]);const[k,U]=r(Fe),[E,z]=r(!0),{data:S}=fe("discordRPCEnabled"),ne=Ke(),[_e,he]=r(!0),{data:Y}=fe("discordRPCHideMature"),[ge,se]=r(""),[J,ie]=r(null);A(()=>{b.discord.gatewayStatus.query().then(n=>{ie(n),n.masked&&n.masked!=="none"&&se(n.masked)}).catch(()=>{})},[]),A(()=>{S!==void 0&&z(S==="true"||S===!0||S===null)},[S]),A(()=>{Y!==void 0&&he(Y==="true"||Y===!0||Y===null)},[Y]);const ke=n=>{z(n),ne.mutate({key:"discordRPCEnabled",value:String(n)})},Se=n=>{he(n),ne.mutate({key:"discordRPCHideMature",value:String(n)})},Ce=n=>{R(n),localStorage.setItem("telemetry_enabled",String(n)),n?je():We()},Ne=n=>{U(n),localStorage.setItem(ze,String(n)),window.dispatchEvent(new CustomEvent(qe))};pe.useEffect(()=>{document.title="Settings - dango"},[]),pe.useEffect(()=>{const n=t.get("tab");n&&["general","sync","watchlist","database","community"].includes(n)&&_(n)},[t]);const Q=n=>{_(n),s(n==="general"?{}:{tab:n})},X=ae(()=>{const n=p.current.get(d),$=f.current;if(n&&$){const j=$.getBoundingClientRect(),K=n.getBoundingClientRect(),Z=window.matchMedia("(max-width: 900px)").matches;T(Z?{top:K.top-j.top,height:K.height,left:K.left-j.left,width:K.width}:{top:K.top-j.top,height:K.height,left:0,width:0})}},[d]);Ae(()=>{X()},[d,X]),A(()=>{const n=()=>X();window.addEventListener("resize",n);let $=!1;return document.fonts?.ready&&document.fonts.ready.then(()=>{$||X()}),()=>{$=!0,window.removeEventListener("resize",n)}},[d,X]);const Te=()=>{a("Exporting databases...");const n=window.DangoBridge;if(n?.downloadFile){n.downloadFile("/api/backup-db","dango-backup.json"),setTimeout(()=>{a("Databases exported successfully!")},1500);return}const $=document.createElement("a");$.href="/api/backup-db",$.download="dango-backup.json",document.body.appendChild($),$.click(),$.remove(),setTimeout(()=>{a("Databases exported successfully!")},1500)},Re=async n=>{const $=n.target.files?.[0];if(!$)return;a("Importing databases...");const j=new FormData;j.append("dbfile",$);try{const K=await fetch("/api/restore-db",{method:"POST",body:j}),Z=await K.json();if(K.ok){const me=Array.isArray(Z.restored)?Z.restored.join(", "):null;a(me?`Databases imported successfully (${me})!`:"Database imported successfully!"),setTimeout(()=>window.location.reload(),2e3)}else a(`Import failed: ${Z.error}`)}catch{a("Import failed: An unexpected error occurred.")}finally{n.target.value=""}},De=()=>{u.current?.click()},Ie=()=>{switch(d){case"general":return e("div",{className:g.tabContent,children:e("div",{className:g.sectionCard,children:[e("h3",{children:"Appearance & Preferences"}),e("p",{children:"Configure how titles are displayed and other general preferences."}),e("div",{className:g.settingItem,children:e(Ve,{})}),e("div",{className:g.settingItem,style:{marginTop:"1.5rem"},children:e(pa,{})}),e("div",{className:g.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:g.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Low End Mode"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Disables animations and heavy visual effects for better performance on older hardware."})]}),e(H,{isChecked:w,onChange:n=>C(n.target.checked),id:"low-end-mode"})]})}),e("div",{className:g.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:g.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Virtual Keyboard"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Shows an on-screen keyboard when text search fields are focused."})]}),e(H,{isChecked:k,onChange:n=>Ne(n.target.checked),id:"virtual-keyboard-enabled"})]})}),e("div",{className:g.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:g.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Discord Rich Presence"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Show your current anime and watch progress on your Discord profile status."})]}),e(H,{isChecked:E,onChange:n=>ke(n.target.checked),id:"discord-rpc-enabled"})]})}),e("div",{style:{marginTop:"2rem"},children:e(ma,{})}),E&&e("div",{className:g.settingItem,style:{marginTop:"1rem"},children:e("div",{className:g.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Hide Mature Content"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Hide mature content (18+) from Discord Rich Presence."})]}),e(H,{isChecked:_e,onChange:n=>Se(n.target.checked),id:"discord-hide-mature"})]})}),e("div",{className:g.settingItem,style:{marginTop:"1.5rem",background:"var(--bg-tertiary)",padding:"1rem",borderRadius:"8px",border:"1px solid var(--border-color)"},children:[e("div",{className:g.settingRow,children:e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Discord Mobile Presence (Gateway)"}),e("p",{style:{margin:"0.25rem 0 0.75rem",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Paste your Discord authentication token to enable presence on mobile devices. If no token is saved, the default desktop Rich Presence is used. The token is stored locally in your configuration and never shared."})]})}),e(un,{variant:"warning",style:{marginTop:"1.25rem",paddingTop:"1.25rem"},children:[e("strong",{children:"Use at your own risk."})," This feature uses the Discord Gateway API with your user token, which violates Discord's Terms of Service. Discord may detect this usage and take action against your account, including phone number locks, temporary suspensions, or permanent bans. While the risk is generally low, it is not zero. Only use this if you understand and accept the risks."]}),e("div",{style:{marginTop:"0.75rem",display:"flex",gap:"0.5rem",alignItems:"center",flexWrap:"wrap"},children:[e("input",{type:"password",value:ge,onChange:n=>se(n.target.value),placeholder:"Paste Discord token here...",style:{flex:"1 1 200px",padding:"0.5rem",borderRadius:"4px",border:"1px solid var(--border-color)",background:"var(--bg-primary)",color:"var(--text-primary)",fontFamily:"monospace",minWidth:0}}),e(I,{variant:"primary",size:"sm",onClick:async()=>{try{const n=await b.discord.gatewaySave.mutate({token:ge});ie({hasToken:!0,masked:n.masked,enabled:!0}),se(n.masked)}catch(n){alert(n instanceof Error?n.message:"Failed to save token")}},children:"Save"}),e(I,{variant:"secondary",size:"sm",onClick:async()=>{await b.discord.gatewayRemove.mutate().catch(()=>{}),se(""),ie({hasToken:!1,masked:null,enabled:!1})},children:"Remove"})]}),J&&e("p",{style:{marginTop:"0.5rem",fontSize:"0.8rem",color:J.hasToken?"green":"var(--text-secondary)"},children:["Status:"," ",J.hasToken?`Token saved (${J.masked})`:"No token saved",J.enabled?" - Gateway active":""]}),e(oa,{})]}),e("div",{className:g.settingItem,style:{marginTop:"1.5rem"},children:[e("div",{className:g.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Telemetry Tracking"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"Share anonymous installation data to help track active users. Collected: Browser type and OS (e.g. 'Chrome on Windows'), App Version, First Seen/Last Seen timestamps, and timezone (e.g. 'Europe/Berlin'). No other personal information or usage habits are collected."})]}),e(H,{isChecked:N,onChange:n=>Ce(n.target.checked),id:"telemetry-enabled"})]}),N&&e("div",{style:{marginTop:"0.75rem",fontSize:"0.8rem",color:"var(--text-secondary)"},children:[e("p",{style:{margin:"0 0 0.5rem 0",fontWeight:"bold"},children:"Data currently being shared:"}),e("div",{style:{background:"var(--bg-tertiary)",padding:"0.5rem",borderRadius:"4px",wordBreak:"break-all",fontFamily:"monospace"},children:[e("p",{style:{margin:"0"},children:[e("strong",{children:"ID:"})," ",M||"Loading..."]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Version:"})," ",He.version]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Browser:"})," ",Be()]}),e("p",{style:{margin:"0"},children:[e("strong",{children:"Timezone:"})," ",Intl.DateTimeFormat().resolvedOptions().timeZone]})]})]}),e("div",{style:{marginTop:"1rem"},children:e(I,{variant:"secondary",size:"sm",onClick:()=>i("/map"),children:"View User Map"})})]}),x&&e("div",{className:g.settingItem,style:{marginTop:"1.5rem"},children:e("div",{className:g.settingRow,children:[e("div",{style:{minWidth:0},children:[e("h4",{style:{margin:0,fontSize:"1rem"},children:"Mature Content"}),e("p",{style:{margin:"0.25rem 0 0",fontSize:"0.85rem",color:"var(--text-secondary)"},children:"You have previously agreed to view 18+ content. Toggle this off to re-enable the blur gate and filtering."})]}),e(H,{isChecked:!0,onChange:n=>{n.target.checked||(L(),window.location.reload())},id:"mature-content-enabled"})]})})]})});case"sync":return e("div",{className:g.tabContent,children:[e(ra,{}),e(kt,{}),e(St,{}),e(sa,{})]});case"watchlist":return e("div",{className:g.tabContent,children:e(Ot,{})});case"database":return e("div",{className:g.tabContent,children:[e("div",{className:g.sectionCard,children:[e("h3",{children:"Database Management"}),e("p",{children:"Download a backup of all databases (anime, manga, TV and ASMR) or restore from a backup file. Legacy single-file anime (.db) backups can still be restored."}),e("div",{className:g.controls,children:[e(I,{onClick:Te,children:"Backup Database"}),e(I,{variant:"secondary",onClick:De,children:"Restore Database"})]}),e("input",{type:"file",ref:u,onChange:Re,style:{position:"absolute",width:1,height:1,opacity:0,overflow:"hidden"},accept:".json,.db,application/octet-stream"}),m&&e("p",{className:g.status,children:m})]}),e(Qt,{}),e(na,{})]});case"community":return e("div",{className:g.tabContent,children:D?e(dn,{workerUrl:D}):e("div",{className:g.sectionCard,children:[e("h3",{children:"Discord Community Roles"}),e("p",{children:"Discord Roles integration is not configured on this instance."})]})});default:return null}};return e("div",{className:"page-container",children:[e("div",{className:g.settingsHeader,children:[e("h1",{className:g.pageTitle,children:"Settings"}),e("p",{className:g.pageSubtitle,children:"Manage your preferences and data synchronization"})]}),e("div",{className:g.settingsLayout,children:[e("aside",{className:g.sidebar,ref:f,children:[e("div",{className:g.sidebarIndicator,style:{top:l.top,height:l.height,left:l.left,...l.width?{width:l.width}:{}}}),e("button",{ref:n=>{n&&p.current.set("general",n)},className:`${g.sidebarItem} ${d==="general"?g.active:""}`,onClick:()=>Q("general"),children:[e(W,{name:"cog"})," ",e("span",{children:"General"})]}),e("button",{ref:n=>{n&&p.current.set("sync",n)},className:`${g.sidebarItem} ${d==="sync"?g.active:""}`,onClick:()=>Q("sync"),children:[e(W,{name:"cloud"})," ",e("span",{children:"Synchronization"})]}),e("button",{ref:n=>{n&&p.current.set("watchlist",n)},className:`${g.sidebarItem} ${d==="watchlist"?g.active:""}`,onClick:()=>Q("watchlist"),children:[e(W,{name:"list"})," ",e("span",{children:hn[c]})]}),e("button",{ref:n=>{n&&p.current.set("database",n)},className:`${g.sidebarItem} ${d==="database"?g.active:""}`,onClick:()=>Q("database"),children:[e(W,{name:"database"})," ",e("span",{children:"Database"})]}),D&&e("button",{ref:n=>{n&&p.current.set("community",n)},className:`${g.sidebarItem} ${d==="community"?g.active:""}`,onClick:()=>Q("community"),children:[e(W,{name:"discord"})," ",e("span",{children:"Community"})]})]}),e("main",{className:g.mainContent,children:e("div",{className:g.tabContent,children:Ie()},d)})]})]})};export{fn as default};