tokentracker-cli 0.77.1 → 0.78.0

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 (83) hide show
  1. package/README.de.md +24 -3
  2. package/README.ja.md +3 -3
  3. package/README.ko.md +3 -3
  4. package/README.md +24 -3
  5. package/README.zh-CN.md +3 -3
  6. package/dashboard/dist/assets/ActivityHeatmap-5352XxLR.js +42 -0
  7. package/dashboard/dist/assets/{Card-DP2HT77t.js → Card-Ca_hYHhx.js} +1 -1
  8. package/dashboard/dist/assets/{ClawdAnimated-ScYRJSG0.js → ClawdAnimated-DSgOS5ND.js} +1 -1
  9. package/dashboard/dist/assets/{CommunityStatsModal-CU46JMkg.js → CommunityStatsModal-o8uQVQxu.js} +1 -1
  10. package/dashboard/dist/assets/ConfirmModal-D1hi9XUf.js +1 -0
  11. package/dashboard/dist/assets/Controls-CwnKP56V.js +1 -0
  12. package/dashboard/dist/assets/DashboardPage-CDv0TIOL.js +19 -0
  13. package/dashboard/dist/assets/{DevicePage-BL9ew9-m.js → DevicePage-BlfIHcZX.js} +1 -1
  14. package/dashboard/dist/assets/DialogClose-CismfYwe.js +1 -0
  15. package/dashboard/dist/assets/DialogDescription-DWKp1yez.js +1 -0
  16. package/dashboard/dist/assets/{DialogTitle-Oqnn_dIL.js → DialogTitle-DuuTVbUb.js} +1 -1
  17. package/dashboard/dist/assets/{FadeIn-CFLwnHqt.js → FadeIn-DpnitRKo.js} +1 -1
  18. package/dashboard/dist/assets/{HeaderGithubStar-B397ELF4.js → HeaderGithubStar-D6zy-ADl.js} +1 -1
  19. package/dashboard/dist/assets/{IpCheckPage-CamsHe6o.js → IpCheckPage-yUNp0VNe.js} +1 -1
  20. package/dashboard/dist/assets/LandingPage-BvmpAaVn.js +4314 -0
  21. package/dashboard/dist/assets/LeaderboardAvatar-2WTIeXye.js +1 -0
  22. package/dashboard/dist/assets/LeaderboardPage-Bq3-VO7w.js +2 -0
  23. package/dashboard/dist/assets/{LeaderboardProfileModal-BIe6gBNu.js → LeaderboardProfileModal-DH0EEK6q.js} +3 -3
  24. package/dashboard/dist/assets/{LeaderboardProfilePage-DeVBEYtg.js → LeaderboardProfilePage-uJAng2JE.js} +3 -3
  25. package/dashboard/dist/assets/{LimitsPage-6I5EU7qe.js → LimitsPage-D8UohgJm.js} +2 -2
  26. package/dashboard/dist/assets/{LocalOnlyNotice-AyYKZloH.js → LocalOnlyNotice-Dv_BnDVV.js} +1 -1
  27. package/dashboard/dist/assets/{LoginPage-D8smF1gU.js → LoginPage-D6b6DZU3.js} +1 -1
  28. package/dashboard/dist/assets/PetPage-DfpBkuCa.js +1 -0
  29. package/dashboard/dist/assets/{PopoverPopup-DRWhz-bY.js → PopoverPopup-CjzdZn-9.js} +1 -1
  30. package/dashboard/dist/assets/{ResetPasswordPage-CzSqJfuA.js → ResetPasswordPage-BnOCFkwe.js} +1 -1
  31. package/dashboard/dist/assets/Select-CHtQAiLD.js +1 -0
  32. package/dashboard/dist/assets/{SelectItemText-DEYadcIK.js → SelectItemText-Vjqvf8wO.js} +1 -1
  33. package/dashboard/dist/assets/SettingsPage-B-iHGL4q.js +1 -0
  34. package/dashboard/dist/assets/SkillsPage-DtG2aV-q.js +1 -0
  35. package/dashboard/dist/assets/WidgetsPage-4kqTtWfK.js +1 -0
  36. package/dashboard/dist/assets/{WrappedPage-BuP9KXqF.js → WrappedPage-DMMRpani.js} +1 -1
  37. package/dashboard/dist/assets/agent-logos-D0vYkEpX.js +1 -0
  38. package/dashboard/dist/assets/{arrow-up-right-cFMBPEVS.js → arrow-up-right-BAQYGZkR.js} +1 -1
  39. package/dashboard/dist/assets/check-C3RPBZiS.js +1 -0
  40. package/dashboard/dist/assets/{copy-DYx8X3ZO.js → copy-gG_BLBs8.js} +1 -1
  41. package/dashboard/dist/assets/{download-B-hXZWKj.js → download-BQOcg3gT.js} +1 -1
  42. package/dashboard/dist/assets/{format-tokens-CngV51wN.js → format-tokens-CGK6lQAf.js} +1 -1
  43. package/dashboard/dist/assets/{info-qVF2hV50.js → info-C_BrDrcq.js} +1 -1
  44. package/dashboard/dist/assets/{link-2-DR-yGZFS.js → link-2-DFwCBbIZ.js} +1 -1
  45. package/dashboard/dist/assets/{loader-circle-0k9uueb5.js → loader-circle-BMFI_BJ8.js} +1 -1
  46. package/dashboard/dist/assets/{main-B8lT0e78.css → main-Dy8Y_qst.css} +1 -1
  47. package/dashboard/dist/assets/main-w0hAaCsy.js +1190 -0
  48. package/dashboard/dist/assets/{trash-2-DpxBaV_1.js → trash-2-GeZ6IzgV.js} +1 -1
  49. package/dashboard/dist/assets/{use-community-stats-Cbij-V8j.js → use-community-stats-pC8cmVof.js} +1 -1
  50. package/dashboard/dist/assets/{use-limits-display-prefs-q0TuryM0.js → use-limits-display-prefs-DnFpPcA3.js} +1 -1
  51. package/dashboard/dist/assets/use-native-settings-CvcOSUhn.js +1 -0
  52. package/dashboard/dist/assets/{use-ordered-list-CH-J7c04.js → use-ordered-list-CbMroVZ8.js} +2 -2
  53. package/dashboard/dist/assets/{use-quality-per-dollar-pref-DKLmkwxe.js → use-quality-per-dollar-pref-Bn3Al6yX.js} +1 -1
  54. package/dashboard/dist/assets/{use-usage-limits-DrmF6I_t.js → use-usage-limits-D08q_Dr8.js} +1 -1
  55. package/dashboard/dist/assets/{useCurrency-DwygZqrs.js → useCurrency-h3kqF52v.js} +1 -1
  56. package/dashboard/dist/assets/{useScrollLock-DVCKuErg.js → useScrollLock-9au2731u.js} +1 -1
  57. package/dashboard/dist/index.html +2 -2
  58. package/dashboard/dist/share.html +2 -2
  59. package/package.json +1 -1
  60. package/src/commands/status.js +293 -30
  61. package/src/commands/sync.js +494 -104
  62. package/src/lib/install-resolver.js +1 -0
  63. package/src/lib/local-api.js +202 -56
  64. package/src/lib/pricing/seed-snapshot.json +1 -1
  65. package/src/lib/rollout.js +1329 -40
  66. package/dashboard/dist/assets/ActivityHeatmap-DTZh551Z.js +0 -42
  67. package/dashboard/dist/assets/ConfirmModal-BYvz0dzg.js +0 -1
  68. package/dashboard/dist/assets/Controls-DPElSq0S.js +0 -1
  69. package/dashboard/dist/assets/DashboardPage-CN0buIso.js +0 -19
  70. package/dashboard/dist/assets/DialogClose-cqXrG903.js +0 -1
  71. package/dashboard/dist/assets/DialogDescription-Bo0iWtYz.js +0 -1
  72. package/dashboard/dist/assets/LandingPage-D4ygTHwO.js +0 -4312
  73. package/dashboard/dist/assets/LeaderboardAvatar-B39rNGCV.js +0 -1
  74. package/dashboard/dist/assets/LeaderboardPage-BFUOxX6P.js +0 -2
  75. package/dashboard/dist/assets/PetPage-BlMYvJn2.js +0 -1
  76. package/dashboard/dist/assets/Select-Cb8n7kQO.js +0 -1
  77. package/dashboard/dist/assets/SettingsPage-DlHXcFdJ.js +0 -1
  78. package/dashboard/dist/assets/SkillsPage--Kcv1pxG.js +0 -1
  79. package/dashboard/dist/assets/WidgetsPage-DwtJ9CKU.js +0 -1
  80. package/dashboard/dist/assets/agent-logos-DbwDXgg1.js +0 -1
  81. package/dashboard/dist/assets/check-t_ltRp2A.js +0 -1
  82. package/dashboard/dist/assets/main-CU04bNYH.js +0 -1172
  83. package/dashboard/dist/assets/use-native-settings-BCzogs1L.js +0 -1
@@ -1,1172 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LimitsPage-6I5EU7qe.js","assets/use-usage-limits-DrmF6I_t.js","assets/use-limits-display-prefs-q0TuryM0.js","assets/Card-DP2HT77t.js","assets/FadeIn-CFLwnHqt.js","assets/LocalOnlyNotice-AyYKZloH.js","assets/arrow-up-right-cFMBPEVS.js","assets/download-B-hXZWKj.js","assets/LeaderboardPage-BFUOxX6P.js","assets/Select-Cb8n7kQO.js","assets/SelectItemText-DEYadcIK.js","assets/useScrollLock-DVCKuErg.js","assets/check-t_ltRp2A.js","assets/use-ordered-list-CH-J7c04.js","assets/useCurrency-DwygZqrs.js","assets/LeaderboardAvatar-B39rNGCV.js","assets/use-community-stats-Cbij-V8j.js","assets/DashboardPage-CN0buIso.js","assets/ActivityHeatmap-DTZh551Z.js","assets/info-qVF2hV50.js","assets/DialogTitle-Oqnn_dIL.js","assets/DialogClose-cqXrG903.js","assets/PopoverPopup-DRWhz-bY.js","assets/loader-circle-0k9uueb5.js","assets/ClawdAnimated-ScYRJSG0.js","assets/use-quality-per-dollar-pref-DKLmkwxe.js","assets/agent-logos-DbwDXgg1.js","assets/LandingPage-D4ygTHwO.js","assets/HeaderGithubStar-B397ELF4.js","assets/copy-DYx8X3ZO.js","assets/format-tokens-CngV51wN.js","assets/LeaderboardProfilePage-DeVBEYtg.js","assets/LeaderboardProfileModal-BIe6gBNu.js","assets/link-2-DR-yGZFS.js","assets/SettingsPage-DlHXcFdJ.js","assets/Controls-DPElSq0S.js","assets/use-native-settings-BCzogs1L.js","assets/ConfirmModal-BYvz0dzg.js","assets/DialogDescription-Bo0iWtYz.js","assets/SkillsPage--Kcv1pxG.js","assets/trash-2-DpxBaV_1.js","assets/WidgetsPage-DwtJ9CKU.js","assets/PetPage-BlMYvJn2.js"])))=>i.map(i=>d[i]);
2
- function UA(t,e){for(var n=0;n<e.length;n++){const r=e[n];if(typeof r!="string"&&!Array.isArray(r)){for(const a in r)if(a!=="default"&&!(a in t)){const s=Object.getOwnPropertyDescriptor(r,a);s&&Object.defineProperty(t,a,s.get?s:{enumerable:!0,get:()=>r[a]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const l of s.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(a){if(a.ep)return;a.ep=!0;const s=n(a);fetch(a.href,s)}})();function _S(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function $A(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){var a=!1;try{a=this instanceof r}catch{}return a?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:function(){return t[r]}})}),n}var wg={exports:{}},Ic={},xg={exports:{}},dt={};var Y1;function BA(){if(Y1)return dt;Y1=1;var t=Symbol.for("react.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.iterator;function v(N){return N===null||typeof N!="object"?null:(N=m&&N[m]||N["@@iterator"],typeof N=="function"?N:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,x={};function P(N,q,pe){this.props=N,this.context=q,this.refs=x,this.updater=pe||y}P.prototype.isReactComponent={},P.prototype.setState=function(N,q){if(typeof N!="object"&&typeof N!="function"&&N!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,N,q,"setState")},P.prototype.forceUpdate=function(N){this.updater.enqueueForceUpdate(this,N,"forceUpdate")};function A(){}A.prototype=P.prototype;function L(N,q,pe){this.props=N,this.context=q,this.refs=x,this.updater=pe||y}var T=L.prototype=new A;T.constructor=L,b(T,P.prototype),T.isPureReactComponent=!0;var E=Array.isArray,D=Object.prototype.hasOwnProperty,$={current:null},I={key:!0,ref:!0,__self:!0,__source:!0};function S(N,q,pe){var ke,de={},be=null,je=null;if(q!=null)for(ke in q.ref!==void 0&&(je=q.ref),q.key!==void 0&&(be=""+q.key),q)D.call(q,ke)&&!I.hasOwnProperty(ke)&&(de[ke]=q[ke]);var $e=arguments.length-2;if($e===1)de.children=pe;else if(1<$e){for(var Le=Array($e),St=0;St<$e;St++)Le[St]=arguments[St+2];de.children=Le}if(N&&N.defaultProps)for(ke in $e=N.defaultProps,$e)de[ke]===void 0&&(de[ke]=$e[ke]);return{$$typeof:t,type:N,key:be,ref:je,props:de,_owner:$.current}}function j(N,q){return{$$typeof:t,type:N.type,key:q,ref:N.ref,props:N.props,_owner:N._owner}}function F(N){return typeof N=="object"&&N!==null&&N.$$typeof===t}function Z(N){var q={"=":"=0",":":"=2"};return"$"+N.replace(/[=:]/g,function(pe){return q[pe]})}var ee=/\/+/g;function ue(N,q){return typeof N=="object"&&N!==null&&N.key!=null?Z(""+N.key):q.toString(36)}function re(N,q,pe,ke,de){var be=typeof N;(be==="undefined"||be==="boolean")&&(N=null);var je=!1;if(N===null)je=!0;else switch(be){case"string":case"number":je=!0;break;case"object":switch(N.$$typeof){case t:case e:je=!0}}if(je)return je=N,de=de(je),N=ke===""?"."+ue(je,0):ke,E(de)?(pe="",N!=null&&(pe=N.replace(ee,"$&/")+"/"),re(de,q,pe,"",function(St){return St})):de!=null&&(F(de)&&(de=j(de,pe+(!de.key||je&&je.key===de.key?"":(""+de.key).replace(ee,"$&/")+"/")+N)),q.push(de)),1;if(je=0,ke=ke===""?".":ke+":",E(N))for(var $e=0;$e<N.length;$e++){be=N[$e];var Le=ke+ue(be,$e);je+=re(be,q,pe,Le,de)}else if(Le=v(N),typeof Le=="function")for(N=Le.call(N),$e=0;!(be=N.next()).done;)be=be.value,Le=ke+ue(be,$e++),je+=re(be,q,pe,Le,de);else if(be==="object")throw q=String(N),Error("Objects are not valid as a React child (found: "+(q==="[object Object]"?"object with keys {"+Object.keys(N).join(", ")+"}":q)+"). If you meant to render a collection of children, use an array instead.");return je}function ae(N,q,pe){if(N==null)return N;var ke=[],de=0;return re(N,ke,"","",function(be){return q.call(pe,be,de++)}),ke}function te(N){if(N._status===-1){var q=N._result;q=q(),q.then(function(pe){(N._status===0||N._status===-1)&&(N._status=1,N._result=pe)},function(pe){(N._status===0||N._status===-1)&&(N._status=2,N._result=pe)}),N._status===-1&&(N._status=0,N._result=q)}if(N._status===1)return N._result.default;throw N._result}var le={current:null},H={transition:null},Q={ReactCurrentDispatcher:le,ReactCurrentBatchConfig:H,ReactCurrentOwner:$};function W(){throw Error("act(...) is not supported in production builds of React.")}return dt.Children={map:ae,forEach:function(N,q,pe){ae(N,function(){q.apply(this,arguments)},pe)},count:function(N){var q=0;return ae(N,function(){q++}),q},toArray:function(N){return ae(N,function(q){return q})||[]},only:function(N){if(!F(N))throw Error("React.Children.only expected to receive a single React element child.");return N}},dt.Component=P,dt.Fragment=n,dt.Profiler=a,dt.PureComponent=L,dt.StrictMode=r,dt.Suspense=d,dt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Q,dt.act=W,dt.cloneElement=function(N,q,pe){if(N==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+N+".");var ke=b({},N.props),de=N.key,be=N.ref,je=N._owner;if(q!=null){if(q.ref!==void 0&&(be=q.ref,je=$.current),q.key!==void 0&&(de=""+q.key),N.type&&N.type.defaultProps)var $e=N.type.defaultProps;for(Le in q)D.call(q,Le)&&!I.hasOwnProperty(Le)&&(ke[Le]=q[Le]===void 0&&$e!==void 0?$e[Le]:q[Le])}var Le=arguments.length-2;if(Le===1)ke.children=pe;else if(1<Le){$e=Array(Le);for(var St=0;St<Le;St++)$e[St]=arguments[St+2];ke.children=$e}return{$$typeof:t,type:N.type,key:de,ref:be,props:ke,_owner:je}},dt.createContext=function(N){return N={$$typeof:l,_currentValue:N,_currentValue2:N,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},N.Provider={$$typeof:s,_context:N},N.Consumer=N},dt.createElement=S,dt.createFactory=function(N){var q=S.bind(null,N);return q.type=N,q},dt.createRef=function(){return{current:null}},dt.forwardRef=function(N){return{$$typeof:c,render:N}},dt.isValidElement=F,dt.lazy=function(N){return{$$typeof:p,_payload:{_status:-1,_result:N},_init:te}},dt.memo=function(N,q){return{$$typeof:h,type:N,compare:q===void 0?null:q}},dt.startTransition=function(N){var q=H.transition;H.transition={};try{N()}finally{H.transition=q}},dt.unstable_act=W,dt.useCallback=function(N,q){return le.current.useCallback(N,q)},dt.useContext=function(N){return le.current.useContext(N)},dt.useDebugValue=function(){},dt.useDeferredValue=function(N){return le.current.useDeferredValue(N)},dt.useEffect=function(N,q){return le.current.useEffect(N,q)},dt.useId=function(){return le.current.useId()},dt.useImperativeHandle=function(N,q,pe){return le.current.useImperativeHandle(N,q,pe)},dt.useInsertionEffect=function(N,q){return le.current.useInsertionEffect(N,q)},dt.useLayoutEffect=function(N,q){return le.current.useLayoutEffect(N,q)},dt.useMemo=function(N,q){return le.current.useMemo(N,q)},dt.useReducer=function(N,q,pe){return le.current.useReducer(N,q,pe)},dt.useRef=function(N){return le.current.useRef(N)},dt.useState=function(N){return le.current.useState(N)},dt.useSyncExternalStore=function(N,q,pe){return le.current.useSyncExternalStore(N,q,pe)},dt.useTransition=function(){return le.current.useTransition()},dt.version="18.3.1",dt}var Z1;function Hu(){return Z1||(Z1=1,xg.exports=BA()),xg.exports}var J1;function VA(){if(J1)return Ic;J1=1;var t=Hu(),e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function l(c,d,h){var p,m={},v=null,y=null;h!==void 0&&(v=""+h),d.key!==void 0&&(v=""+d.key),d.ref!==void 0&&(y=d.ref);for(p in d)r.call(d,p)&&!s.hasOwnProperty(p)&&(m[p]=d[p]);if(c&&c.defaultProps)for(p in d=c.defaultProps,d)m[p]===void 0&&(m[p]=d[p]);return{$$typeof:e,type:c,key:v,ref:y,props:m,_owner:a.current}}return Ic.Fragment=n,Ic.jsx=l,Ic.jsxs=l,Ic}var X1;function HA(){return X1||(X1=1,wg.exports=VA()),wg.exports}var R=HA(),k=Hu();const Pl=_S(k),yS=UA({__proto__:null,default:Pl},[k]);var uh={},Pg={exports:{}},mr={},Sg={exports:{}},Cg={};var Q1;function WA(){return Q1||(Q1=1,(function(t){function e(H,Q){var W=H.length;H.push(Q);e:for(;0<W;){var N=W-1>>>1,q=H[N];if(0<a(q,Q))H[N]=Q,H[W]=q,W=N;else break e}}function n(H){return H.length===0?null:H[0]}function r(H){if(H.length===0)return null;var Q=H[0],W=H.pop();if(W!==Q){H[0]=W;e:for(var N=0,q=H.length,pe=q>>>1;N<pe;){var ke=2*(N+1)-1,de=H[ke],be=ke+1,je=H[be];if(0>a(de,W))be<q&&0>a(je,de)?(H[N]=je,H[be]=W,N=be):(H[N]=de,H[ke]=W,N=ke);else if(be<q&&0>a(je,W))H[N]=je,H[be]=W,N=be;else break e}}return Q}function a(H,Q){var W=H.sortIndex-Q.sortIndex;return W!==0?W:H.id-Q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var l=Date,c=l.now();t.unstable_now=function(){return l.now()-c}}var d=[],h=[],p=1,m=null,v=3,y=!1,b=!1,x=!1,P=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function T(H){for(var Q=n(h);Q!==null;){if(Q.callback===null)r(h);else if(Q.startTime<=H)r(h),Q.sortIndex=Q.expirationTime,e(d,Q);else break;Q=n(h)}}function E(H){if(x=!1,T(H),!b)if(n(d)!==null)b=!0,te(D);else{var Q=n(h);Q!==null&&le(E,Q.startTime-H)}}function D(H,Q){b=!1,x&&(x=!1,A(S),S=-1),y=!0;var W=v;try{for(T(Q),m=n(d);m!==null&&(!(m.expirationTime>Q)||H&&!Z());){var N=m.callback;if(typeof N=="function"){m.callback=null,v=m.priorityLevel;var q=N(m.expirationTime<=Q);Q=t.unstable_now(),typeof q=="function"?m.callback=q:m===n(d)&&r(d),T(Q)}else r(d);m=n(d)}if(m!==null)var pe=!0;else{var ke=n(h);ke!==null&&le(E,ke.startTime-Q),pe=!1}return pe}finally{m=null,v=W,y=!1}}var $=!1,I=null,S=-1,j=5,F=-1;function Z(){return!(t.unstable_now()-F<j)}function ee(){if(I!==null){var H=t.unstable_now();F=H;var Q=!0;try{Q=I(!0,H)}finally{Q?ue():($=!1,I=null)}}else $=!1}var ue;if(typeof L=="function")ue=function(){L(ee)};else if(typeof MessageChannel<"u"){var re=new MessageChannel,ae=re.port2;re.port1.onmessage=ee,ue=function(){ae.postMessage(null)}}else ue=function(){P(ee,0)};function te(H){I=H,$||($=!0,ue())}function le(H,Q){S=P(function(){H(t.unstable_now())},Q)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(H){H.callback=null},t.unstable_continueExecution=function(){b||y||(b=!0,te(D))},t.unstable_forceFrameRate=function(H){0>H||125<H?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):j=0<H?Math.floor(1e3/H):5},t.unstable_getCurrentPriorityLevel=function(){return v},t.unstable_getFirstCallbackNode=function(){return n(d)},t.unstable_next=function(H){switch(v){case 1:case 2:case 3:var Q=3;break;default:Q=v}var W=v;v=Q;try{return H()}finally{v=W}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(H,Q){switch(H){case 1:case 2:case 3:case 4:case 5:break;default:H=3}var W=v;v=H;try{return Q()}finally{v=W}},t.unstable_scheduleCallback=function(H,Q,W){var N=t.unstable_now();switch(typeof W=="object"&&W!==null?(W=W.delay,W=typeof W=="number"&&0<W?N+W:N):W=N,H){case 1:var q=-1;break;case 2:q=250;break;case 5:q=1073741823;break;case 4:q=1e4;break;default:q=5e3}return q=W+q,H={id:p++,callback:Q,priorityLevel:H,startTime:W,expirationTime:q,sortIndex:-1},W>N?(H.sortIndex=W,e(h,H),n(d)===null&&H===n(h)&&(x?(A(S),S=-1):x=!0,le(E,W-N))):(H.sortIndex=q,e(d,H),b||y||(b=!0,te(D))),H},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(H){var Q=v;return function(){var W=v;v=Q;try{return H.apply(this,arguments)}finally{v=W}}}})(Cg)),Cg}var ew;function GA(){return ew||(ew=1,Sg.exports=WA()),Sg.exports}var tw;function qA(){if(tw)return mr;tw=1;var t=Hu(),e=GA();function n(i){for(var o="https://reactjs.org/docs/error-decoder.html?invariant="+i,u=1;u<arguments.length;u++)o+="&args[]="+encodeURIComponent(arguments[u]);return"Minified React error #"+i+"; visit "+o+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var r=new Set,a={};function s(i,o){l(i,o),l(i+"Capture",o)}function l(i,o){for(a[i]=o,i=0;i<o.length;i++)r.add(o[i])}var c=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),d=Object.prototype.hasOwnProperty,h=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},m={};function v(i){return d.call(m,i)?!0:d.call(p,i)?!1:h.test(i)?m[i]=!0:(p[i]=!0,!1)}function y(i,o,u,f){if(u!==null&&u.type===0)return!1;switch(typeof o){case"function":case"symbol":return!0;case"boolean":return f?!1:u!==null?!u.acceptsBooleans:(i=i.toLowerCase().slice(0,5),i!=="data-"&&i!=="aria-");default:return!1}}function b(i,o,u,f){if(o===null||typeof o>"u"||y(i,o,u,f))return!0;if(f)return!1;if(u!==null)switch(u.type){case 3:return!o;case 4:return o===!1;case 5:return isNaN(o);case 6:return isNaN(o)||1>o}return!1}function x(i,o,u,f,g,_,C){this.acceptsBooleans=o===2||o===3||o===4,this.attributeName=f,this.attributeNamespace=g,this.mustUseProperty=u,this.propertyName=i,this.type=o,this.sanitizeURL=_,this.removeEmptyString=C}var P={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(i){P[i]=new x(i,0,!1,i,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(i){var o=i[0];P[o]=new x(o,1,!1,i[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(i){P[i]=new x(i,2,!1,i.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(i){P[i]=new x(i,2,!1,i,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(i){P[i]=new x(i,3,!1,i.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(i){P[i]=new x(i,3,!0,i,null,!1,!1)}),["capture","download"].forEach(function(i){P[i]=new x(i,4,!1,i,null,!1,!1)}),["cols","rows","size","span"].forEach(function(i){P[i]=new x(i,6,!1,i,null,!1,!1)}),["rowSpan","start"].forEach(function(i){P[i]=new x(i,5,!1,i.toLowerCase(),null,!1,!1)});var A=/[\-:]([a-z])/g;function L(i){return i[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(i){var o=i.replace(A,L);P[o]=new x(o,1,!1,i,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(i){var o=i.replace(A,L);P[o]=new x(o,1,!1,i,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(i){var o=i.replace(A,L);P[o]=new x(o,1,!1,i,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(i){P[i]=new x(i,1,!1,i.toLowerCase(),null,!1,!1)}),P.xlinkHref=new x("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(i){P[i]=new x(i,1,!1,i.toLowerCase(),null,!0,!0)});function T(i,o,u,f){var g=P.hasOwnProperty(o)?P[o]:null;(g!==null?g.type!==0:f||!(2<o.length)||o[0]!=="o"&&o[0]!=="O"||o[1]!=="n"&&o[1]!=="N")&&(b(o,u,g,f)&&(u=null),f||g===null?v(o)&&(u===null?i.removeAttribute(o):i.setAttribute(o,""+u)):g.mustUseProperty?i[g.propertyName]=u===null?g.type===3?!1:"":u:(o=g.attributeName,f=g.attributeNamespace,u===null?i.removeAttribute(o):(g=g.type,u=g===3||g===4&&u===!0?"":""+u,f?i.setAttributeNS(f,o,u):i.setAttribute(o,u))))}var E=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,D=Symbol.for("react.element"),$=Symbol.for("react.portal"),I=Symbol.for("react.fragment"),S=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),F=Symbol.for("react.provider"),Z=Symbol.for("react.context"),ee=Symbol.for("react.forward_ref"),ue=Symbol.for("react.suspense"),re=Symbol.for("react.suspense_list"),ae=Symbol.for("react.memo"),te=Symbol.for("react.lazy"),le=Symbol.for("react.offscreen"),H=Symbol.iterator;function Q(i){return i===null||typeof i!="object"?null:(i=H&&i[H]||i["@@iterator"],typeof i=="function"?i:null)}var W=Object.assign,N;function q(i){if(N===void 0)try{throw Error()}catch(u){var o=u.stack.trim().match(/\n( *(at )?)/);N=o&&o[1]||""}return`
3
- `+N+i}var pe=!1;function ke(i,o){if(!i||pe)return"";pe=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(o)if(o=function(){throw Error()},Object.defineProperty(o.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(o,[])}catch(X){var f=X}Reflect.construct(i,[],o)}else{try{o.call()}catch(X){f=X}i.call(o.prototype)}else{try{throw Error()}catch(X){f=X}i()}}catch(X){if(X&&f&&typeof X.stack=="string"){for(var g=X.stack.split(`
4
- `),_=f.stack.split(`
5
- `),C=g.length-1,O=_.length-1;1<=C&&0<=O&&g[C]!==_[O];)O--;for(;1<=C&&0<=O;C--,O--)if(g[C]!==_[O]){if(C!==1||O!==1)do if(C--,O--,0>O||g[C]!==_[O]){var U=`
6
- `+g[C].replace(" at new "," at ");return i.displayName&&U.includes("<anonymous>")&&(U=U.replace("<anonymous>",i.displayName)),U}while(1<=C&&0<=O);break}}}finally{pe=!1,Error.prepareStackTrace=u}return(i=i?i.displayName||i.name:"")?q(i):""}function de(i){switch(i.tag){case 5:return q(i.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return i=ke(i.type,!1),i;case 11:return i=ke(i.type.render,!1),i;case 1:return i=ke(i.type,!0),i;default:return""}}function be(i){if(i==null)return null;if(typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case I:return"Fragment";case $:return"Portal";case j:return"Profiler";case S:return"StrictMode";case ue:return"Suspense";case re:return"SuspenseList"}if(typeof i=="object")switch(i.$$typeof){case Z:return(i.displayName||"Context")+".Consumer";case F:return(i._context.displayName||"Context")+".Provider";case ee:var o=i.render;return i=i.displayName,i||(i=o.displayName||o.name||"",i=i!==""?"ForwardRef("+i+")":"ForwardRef"),i;case ae:return o=i.displayName||null,o!==null?o:be(i.type)||"Memo";case te:o=i._payload,i=i._init;try{return be(i(o))}catch{}}return null}function je(i){var o=i.type;switch(i.tag){case 24:return"Cache";case 9:return(o.displayName||"Context")+".Consumer";case 10:return(o._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return i=o.render,i=i.displayName||i.name||"",o.displayName||(i!==""?"ForwardRef("+i+")":"ForwardRef");case 7:return"Fragment";case 5:return o;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return be(o);case 8:return o===S?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o}return null}function $e(i){switch(typeof i){case"boolean":case"number":case"string":case"undefined":return i;case"object":return i;default:return""}}function Le(i){var o=i.type;return(i=i.nodeName)&&i.toLowerCase()==="input"&&(o==="checkbox"||o==="radio")}function St(i){var o=Le(i)?"checked":"value",u=Object.getOwnPropertyDescriptor(i.constructor.prototype,o),f=""+i[o];if(!i.hasOwnProperty(o)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var g=u.get,_=u.set;return Object.defineProperty(i,o,{configurable:!0,get:function(){return g.call(this)},set:function(C){f=""+C,_.call(this,C)}}),Object.defineProperty(i,o,{enumerable:u.enumerable}),{getValue:function(){return f},setValue:function(C){f=""+C},stopTracking:function(){i._valueTracker=null,delete i[o]}}}}function un(i){i._valueTracker||(i._valueTracker=St(i))}function jt(i){if(!i)return!1;var o=i._valueTracker;if(!o)return!0;var u=o.getValue(),f="";return i&&(f=Le(i)?i.checked?"true":"false":i.value),i=f,i!==u?(o.setValue(i),!0):!1}function _t(i){if(i=i||(typeof document<"u"?document:void 0),typeof i>"u")return null;try{return i.activeElement||i.body}catch{return i.body}}function Zt(i,o){var u=o.checked;return W({},o,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:u??i._wrapperState.initialChecked})}function ta(i,o){var u=o.defaultValue==null?"":o.defaultValue,f=o.checked!=null?o.checked:o.defaultChecked;u=$e(o.value!=null?o.value:u),i._wrapperState={initialChecked:f,initialValue:u,controlled:o.type==="checkbox"||o.type==="radio"?o.checked!=null:o.value!=null}}function In(i,o){o=o.checked,o!=null&&T(i,"checked",o,!1)}function Vt(i,o){In(i,o);var u=$e(o.value),f=o.type;if(u!=null)f==="number"?(u===0&&i.value===""||i.value!=u)&&(i.value=""+u):i.value!==""+u&&(i.value=""+u);else if(f==="submit"||f==="reset"){i.removeAttribute("value");return}o.hasOwnProperty("value")?st(i,o.type,u):o.hasOwnProperty("defaultValue")&&st(i,o.type,$e(o.defaultValue)),o.checked==null&&o.defaultChecked!=null&&(i.defaultChecked=!!o.defaultChecked)}function Qe(i,o,u){if(o.hasOwnProperty("value")||o.hasOwnProperty("defaultValue")){var f=o.type;if(!(f!=="submit"&&f!=="reset"||o.value!==void 0&&o.value!==null))return;o=""+i._wrapperState.initialValue,u||o===i.value||(i.value=o),i.defaultValue=o}u=i.name,u!==""&&(i.name=""),i.defaultChecked=!!i._wrapperState.initialChecked,u!==""&&(i.name=u)}function st(i,o,u){(o!=="number"||_t(i.ownerDocument)!==i)&&(u==null?i.defaultValue=""+i._wrapperState.initialValue:i.defaultValue!==""+u&&(i.defaultValue=""+u))}var It=Array.isArray;function Et(i,o,u,f){if(i=i.options,o){o={};for(var g=0;g<u.length;g++)o["$"+u[g]]=!0;for(u=0;u<i.length;u++)g=o.hasOwnProperty("$"+i[u].value),i[u].selected!==g&&(i[u].selected=g),g&&f&&(i[u].defaultSelected=!0)}else{for(u=""+$e(u),o=null,g=0;g<i.length;g++){if(i[g].value===u){i[g].selected=!0,f&&(i[g].defaultSelected=!0);return}o!==null||i[g].disabled||(o=i[g])}o!==null&&(o.selected=!0)}}function Dn(i,o){if(o.dangerouslySetInnerHTML!=null)throw Error(n(91));return W({},o,{value:void 0,defaultValue:void 0,children:""+i._wrapperState.initialValue})}function xa(i,o){var u=o.value;if(u==null){if(u=o.children,o=o.defaultValue,u!=null){if(o!=null)throw Error(n(92));if(It(u)){if(1<u.length)throw Error(n(93));u=u[0]}o=u}o==null&&(o=""),u=o}i._wrapperState={initialValue:$e(u)}}function tt(i,o){var u=$e(o.value),f=$e(o.defaultValue);u!=null&&(u=""+u,u!==i.value&&(i.value=u),o.defaultValue==null&&i.defaultValue!==u&&(i.defaultValue=u)),f!=null&&(i.defaultValue=""+f)}function et(i){var o=i.textContent;o===i._wrapperState.initialValue&&o!==""&&o!==null&&(i.value=o)}function kt(i){switch(i){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function nn(i,o){return i==null||i==="http://www.w3.org/1999/xhtml"?kt(o):i==="http://www.w3.org/2000/svg"&&o==="foreignObject"?"http://www.w3.org/1999/xhtml":i}var zt,At=(function(i){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(o,u,f,g){MSApp.execUnsafeLocalFunction(function(){return i(o,u,f,g)})}:i})(function(i,o){if(i.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in i)i.innerHTML=o;else{for(zt=zt||document.createElement("div"),zt.innerHTML="<svg>"+o.valueOf().toString()+"</svg>",o=zt.firstChild;i.firstChild;)i.removeChild(i.firstChild);for(;o.firstChild;)i.appendChild(o.firstChild)}});function xt(i,o){if(o){var u=i.firstChild;if(u&&u===i.lastChild&&u.nodeType===3){u.nodeValue=o;return}}i.textContent=o}var na={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Zl=["Webkit","ms","Moz","O"];Object.keys(na).forEach(function(i){Zl.forEach(function(o){o=o+i.charAt(0).toUpperCase()+i.substring(1),na[o]=na[i]})});function Tn(i,o,u){return o==null||typeof o=="boolean"||o===""?"":u||typeof o!="number"||o===0||na.hasOwnProperty(i)&&na[i]?(""+o).trim():o+"px"}function ei(i,o){i=i.style;for(var u in o)if(o.hasOwnProperty(u)){var f=u.indexOf("--")===0,g=Tn(u,o[u],f);u==="float"&&(u="cssFloat"),f?i.setProperty(u,g):i[u]=g}}var Xn=W({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Pa(i,o){if(o){if(Xn[i]&&(o.children!=null||o.dangerouslySetInnerHTML!=null))throw Error(n(137,i));if(o.dangerouslySetInnerHTML!=null){if(o.children!=null)throw Error(n(60));if(typeof o.dangerouslySetInnerHTML!="object"||!("__html"in o.dangerouslySetInnerHTML))throw Error(n(61))}if(o.style!=null&&typeof o.style!="object")throw Error(n(62))}}function Sa(i,o){if(i.indexOf("-")===-1)return typeof o.is=="string";switch(i){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ra=null;function bs(i){return i=i.target||i.srcElement||window,i.correspondingUseElement&&(i=i.correspondingUseElement),i.nodeType===3?i.parentNode:i}var Ri=null,br=null,ti=null;function wo(i){if(i=vc(i)){if(typeof Ri!="function")throw Error(n(280));var o=i.stateNode;o&&(o=Sd(o),Ri(i.stateNode,i.type,o))}}function od(i){br?ti?ti.push(i):ti=[i]:br=i}function Jl(){if(br){var i=br,o=ti;if(ti=br=null,wo(i),o)for(i=0;i<o.length;i++)wo(o[i])}}function ld(i,o){return i(o)}function Xl(){}var Li=!1;function ks(i,o,u){if(Li)return i(o,u);Li=!0;try{return ld(i,o,u)}finally{Li=!1,(br!==null||ti!==null)&&(Xl(),Jl())}}function Ii(i,o){var u=i.stateNode;if(u===null)return null;var f=Sd(u);if(f===null)return null;u=f[o];e:switch(o){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(f=!f.disabled)||(i=i.type,f=!(i==="button"||i==="input"||i==="select"||i==="textarea")),i=!f;break e;default:i=!1}if(i)return null;if(u&&typeof u!="function")throw Error(n(231,o,typeof u));return u}var Ql=!1;if(c)try{var ws={};Object.defineProperty(ws,"passive",{get:function(){Ql=!0}}),window.addEventListener("test",ws,ws),window.removeEventListener("test",ws,ws)}catch{Ql=!1}function z(i,o,u,f,g,_,C,O,U){var X=Array.prototype.slice.call(arguments,3);try{o.apply(u,X)}catch(ce){this.onError(ce)}}var B=!1,K=null,ne=!1,ie=null,ze={onError:function(i){B=!0,K=i}};function Fe(i,o,u,f,g,_,C,O,U){B=!1,K=null,z.apply(ze,arguments)}function Be(i,o,u,f,g,_,C,O,U){if(Fe.apply(this,arguments),B){if(B){var X=K;B=!1,K=null}else throw Error(n(198));ne||(ne=!0,ie=X)}}function Se(i){var o=i,u=i;if(i.alternate)for(;o.return;)o=o.return;else{i=o;do o=i,(o.flags&4098)!==0&&(u=o.return),i=o.return;while(i)}return o.tag===3?u:null}function He(i){if(i.tag===13){var o=i.memoizedState;if(o===null&&(i=i.alternate,i!==null&&(o=i.memoizedState)),o!==null)return o.dehydrated}return null}function Ve(i){if(Se(i)!==i)throw Error(n(188))}function rt(i){var o=i.alternate;if(!o){if(o=Se(i),o===null)throw Error(n(188));return o!==i?null:i}for(var u=i,f=o;;){var g=u.return;if(g===null)break;var _=g.alternate;if(_===null){if(f=g.return,f!==null){u=f;continue}break}if(g.child===_.child){for(_=g.child;_;){if(_===u)return Ve(g),i;if(_===f)return Ve(g),o;_=_.sibling}throw Error(n(188))}if(u.return!==f.return)u=g,f=_;else{for(var C=!1,O=g.child;O;){if(O===u){C=!0,u=g,f=_;break}if(O===f){C=!0,f=g,u=_;break}O=O.sibling}if(!C){for(O=_.child;O;){if(O===u){C=!0,u=_,f=g;break}if(O===f){C=!0,f=_,u=g;break}O=O.sibling}if(!C)throw Error(n(189))}}if(u.alternate!==f)throw Error(n(190))}if(u.tag!==3)throw Error(n(188));return u.stateNode.current===u?i:o}function qe(i){return i=rt(i),i!==null?mt(i):null}function mt(i){if(i.tag===5||i.tag===6)return i;for(i=i.child;i!==null;){var o=mt(i);if(o!==null)return o;i=i.sibling}return null}var Pt=e.unstable_scheduleCallback,dn=e.unstable_cancelCallback,Ht=e.unstable_shouldYield,Ct=e.unstable_requestPaint,ht=e.unstable_now,Bn=e.unstable_getCurrentPriorityLevel,ni=e.unstable_ImmediatePriority,aa=e.unstable_UserBlockingPriority,ia=e.unstable_NormalPriority,Ca=e.unstable_LowPriority,kr=e.unstable_IdlePriority,Di=null,bn=null;function xo(i){if(bn&&typeof bn.onCommitFiberRoot=="function")try{bn.onCommitFiberRoot(Di,i,void 0,(i.current.flags&128)===128)}catch{}}var Vn=Math.clz32?Math.clz32:Hn,Po=Math.log,pt=Math.LN2;function Hn(i){return i>>>=0,i===0?32:31-(Po(i)/pt|0)|0}var Qn=64,cr=4194304;function Mi(i){switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return i&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return i}}function Ni(i,o){var u=i.pendingLanes;if(u===0)return 0;var f=0,g=i.suspendedLanes,_=i.pingedLanes,C=u&268435455;if(C!==0){var O=C&~g;O!==0?f=Mi(O):(_&=C,_!==0&&(f=Mi(_)))}else C=u&~g,C!==0?f=Mi(C):_!==0&&(f=Mi(_));if(f===0)return 0;if(o!==0&&o!==f&&(o&g)===0&&(g=f&-f,_=o&-o,g>=_||g===16&&(_&4194240)!==0))return o;if((f&4)!==0&&(f|=u&16),o=i.entangledLanes,o!==0)for(i=i.entanglements,o&=f;0<o;)u=31-Vn(o),g=1<<u,f|=i[u],o&=~g;return f}function Ft(i,o){switch(i){case 1:case 2:case 4:return o+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ri(i,o){for(var u=i.suspendedLanes,f=i.pingedLanes,g=i.expirationTimes,_=i.pendingLanes;0<_;){var C=31-Vn(_),O=1<<C,U=g[C];U===-1?((O&u)===0||(O&f)!==0)&&(g[C]=Ft(O,o)):U<=o&&(i.expiredLanes|=O),_&=~O}}function So(i){return i=i.pendingLanes&-1073741825,i!==0?i:i&1073741824?1073741824:0}function cd(){var i=Qn;return Qn<<=1,(Qn&4194240)===0&&(Qn=64),i}function Hf(i){for(var o=[],u=0;31>u;u++)o.push(i);return o}function ec(i,o,u){i.pendingLanes|=o,o!==536870912&&(i.suspendedLanes=0,i.pingedLanes=0),i=i.eventTimes,o=31-Vn(o),i[o]=u}function o6(i,o){var u=i.pendingLanes&~o;i.pendingLanes=o,i.suspendedLanes=0,i.pingedLanes=0,i.expiredLanes&=o,i.mutableReadLanes&=o,i.entangledLanes&=o,o=i.entanglements;var f=i.eventTimes;for(i=i.expirationTimes;0<u;){var g=31-Vn(u),_=1<<g;o[g]=0,f[g]=-1,i[g]=-1,u&=~_}}function Wf(i,o){var u=i.entangledLanes|=o;for(i=i.entanglements;u;){var f=31-Vn(u),g=1<<f;g&o|i[f]&o&&(i[f]|=o),u&=~g}}var Tt=0;function Tb(i){return i&=-i,1<i?4<i?(i&268435455)!==0?16:536870912:4:1}var Eb,Gf,Ab,Rb,Lb,qf=!1,ud=[],Oi=null,ji=null,zi=null,tc=new Map,nc=new Map,Fi=[],l6="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Ib(i,o){switch(i){case"focusin":case"focusout":Oi=null;break;case"dragenter":case"dragleave":ji=null;break;case"mouseover":case"mouseout":zi=null;break;case"pointerover":case"pointerout":tc.delete(o.pointerId);break;case"gotpointercapture":case"lostpointercapture":nc.delete(o.pointerId)}}function rc(i,o,u,f,g,_){return i===null||i.nativeEvent!==_?(i={blockedOn:o,domEventName:u,eventSystemFlags:f,nativeEvent:_,targetContainers:[g]},o!==null&&(o=vc(o),o!==null&&Gf(o)),i):(i.eventSystemFlags|=f,o=i.targetContainers,g!==null&&o.indexOf(g)===-1&&o.push(g),i)}function c6(i,o,u,f,g){switch(o){case"focusin":return Oi=rc(Oi,i,o,u,f,g),!0;case"dragenter":return ji=rc(ji,i,o,u,f,g),!0;case"mouseover":return zi=rc(zi,i,o,u,f,g),!0;case"pointerover":var _=g.pointerId;return tc.set(_,rc(tc.get(_)||null,i,o,u,f,g)),!0;case"gotpointercapture":return _=g.pointerId,nc.set(_,rc(nc.get(_)||null,i,o,u,f,g)),!0}return!1}function Db(i){var o=xs(i.target);if(o!==null){var u=Se(o);if(u!==null){if(o=u.tag,o===13){if(o=He(u),o!==null){i.blockedOn=o,Lb(i.priority,function(){Ab(u)});return}}else if(o===3&&u.stateNode.current.memoizedState.isDehydrated){i.blockedOn=u.tag===3?u.stateNode.containerInfo:null;return}}}i.blockedOn=null}function dd(i){if(i.blockedOn!==null)return!1;for(var o=i.targetContainers;0<o.length;){var u=Yf(i.domEventName,i.eventSystemFlags,o[0],i.nativeEvent);if(u===null){u=i.nativeEvent;var f=new u.constructor(u.type,u);ra=f,u.target.dispatchEvent(f),ra=null}else return o=vc(u),o!==null&&Gf(o),i.blockedOn=u,!1;o.shift()}return!0}function Mb(i,o,u){dd(i)&&u.delete(o)}function u6(){qf=!1,Oi!==null&&dd(Oi)&&(Oi=null),ji!==null&&dd(ji)&&(ji=null),zi!==null&&dd(zi)&&(zi=null),tc.forEach(Mb),nc.forEach(Mb)}function ac(i,o){i.blockedOn===o&&(i.blockedOn=null,qf||(qf=!0,e.unstable_scheduleCallback(e.unstable_NormalPriority,u6)))}function ic(i){function o(g){return ac(g,i)}if(0<ud.length){ac(ud[0],i);for(var u=1;u<ud.length;u++){var f=ud[u];f.blockedOn===i&&(f.blockedOn=null)}}for(Oi!==null&&ac(Oi,i),ji!==null&&ac(ji,i),zi!==null&&ac(zi,i),tc.forEach(o),nc.forEach(o),u=0;u<Fi.length;u++)f=Fi[u],f.blockedOn===i&&(f.blockedOn=null);for(;0<Fi.length&&(u=Fi[0],u.blockedOn===null);)Db(u),u.blockedOn===null&&Fi.shift()}var Co=E.ReactCurrentBatchConfig,hd=!0;function d6(i,o,u,f){var g=Tt,_=Co.transition;Co.transition=null;try{Tt=1,Kf(i,o,u,f)}finally{Tt=g,Co.transition=_}}function h6(i,o,u,f){var g=Tt,_=Co.transition;Co.transition=null;try{Tt=4,Kf(i,o,u,f)}finally{Tt=g,Co.transition=_}}function Kf(i,o,u,f){if(hd){var g=Yf(i,o,u,f);if(g===null)hm(i,o,f,pd,u),Ib(i,f);else if(c6(g,i,o,u,f))f.stopPropagation();else if(Ib(i,f),o&4&&-1<l6.indexOf(i)){for(;g!==null;){var _=vc(g);if(_!==null&&Eb(_),_=Yf(i,o,u,f),_===null&&hm(i,o,f,pd,u),_===g)break;g=_}g!==null&&f.stopPropagation()}else hm(i,o,f,null,u)}}var pd=null;function Yf(i,o,u,f){if(pd=null,i=bs(f),i=xs(i),i!==null)if(o=Se(i),o===null)i=null;else if(u=o.tag,u===13){if(i=He(o),i!==null)return i;i=null}else if(u===3){if(o.stateNode.current.memoizedState.isDehydrated)return o.tag===3?o.stateNode.containerInfo:null;i=null}else o!==i&&(i=null);return pd=i,null}function Nb(i){switch(i){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Bn()){case ni:return 1;case aa:return 4;case ia:case Ca:return 16;case kr:return 536870912;default:return 16}default:return 16}}var Ui=null,Zf=null,fd=null;function Ob(){if(fd)return fd;var i,o=Zf,u=o.length,f,g="value"in Ui?Ui.value:Ui.textContent,_=g.length;for(i=0;i<u&&o[i]===g[i];i++);var C=u-i;for(f=1;f<=C&&o[u-f]===g[_-f];f++);return fd=g.slice(i,1<f?1-f:void 0)}function md(i){var o=i.keyCode;return"charCode"in i?(i=i.charCode,i===0&&o===13&&(i=13)):i=o,i===10&&(i=13),32<=i||i===13?i:0}function gd(){return!0}function jb(){return!1}function wr(i){function o(u,f,g,_,C){this._reactName=u,this._targetInst=g,this.type=f,this.nativeEvent=_,this.target=C,this.currentTarget=null;for(var O in i)i.hasOwnProperty(O)&&(u=i[O],this[O]=u?u(_):_[O]);return this.isDefaultPrevented=(_.defaultPrevented!=null?_.defaultPrevented:_.returnValue===!1)?gd:jb,this.isPropagationStopped=jb,this}return W(o.prototype,{preventDefault:function(){this.defaultPrevented=!0;var u=this.nativeEvent;u&&(u.preventDefault?u.preventDefault():typeof u.returnValue!="unknown"&&(u.returnValue=!1),this.isDefaultPrevented=gd)},stopPropagation:function(){var u=this.nativeEvent;u&&(u.stopPropagation?u.stopPropagation():typeof u.cancelBubble!="unknown"&&(u.cancelBubble=!0),this.isPropagationStopped=gd)},persist:function(){},isPersistent:gd}),o}var To={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(i){return i.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Jf=wr(To),sc=W({},To,{view:0,detail:0}),p6=wr(sc),Xf,Qf,oc,vd=W({},sc,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:tm,button:0,buttons:0,relatedTarget:function(i){return i.relatedTarget===void 0?i.fromElement===i.srcElement?i.toElement:i.fromElement:i.relatedTarget},movementX:function(i){return"movementX"in i?i.movementX:(i!==oc&&(oc&&i.type==="mousemove"?(Xf=i.screenX-oc.screenX,Qf=i.screenY-oc.screenY):Qf=Xf=0,oc=i),Xf)},movementY:function(i){return"movementY"in i?i.movementY:Qf}}),zb=wr(vd),f6=W({},vd,{dataTransfer:0}),m6=wr(f6),g6=W({},sc,{relatedTarget:0}),em=wr(g6),v6=W({},To,{animationName:0,elapsedTime:0,pseudoElement:0}),_6=wr(v6),y6=W({},To,{clipboardData:function(i){return"clipboardData"in i?i.clipboardData:window.clipboardData}}),b6=wr(y6),k6=W({},To,{data:0}),Fb=wr(k6),w6={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},x6={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},P6={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function S6(i){var o=this.nativeEvent;return o.getModifierState?o.getModifierState(i):(i=P6[i])?!!o[i]:!1}function tm(){return S6}var C6=W({},sc,{key:function(i){if(i.key){var o=w6[i.key]||i.key;if(o!=="Unidentified")return o}return i.type==="keypress"?(i=md(i),i===13?"Enter":String.fromCharCode(i)):i.type==="keydown"||i.type==="keyup"?x6[i.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:tm,charCode:function(i){return i.type==="keypress"?md(i):0},keyCode:function(i){return i.type==="keydown"||i.type==="keyup"?i.keyCode:0},which:function(i){return i.type==="keypress"?md(i):i.type==="keydown"||i.type==="keyup"?i.keyCode:0}}),T6=wr(C6),E6=W({},vd,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ub=wr(E6),A6=W({},sc,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:tm}),R6=wr(A6),L6=W({},To,{propertyName:0,elapsedTime:0,pseudoElement:0}),I6=wr(L6),D6=W({},vd,{deltaX:function(i){return"deltaX"in i?i.deltaX:"wheelDeltaX"in i?-i.wheelDeltaX:0},deltaY:function(i){return"deltaY"in i?i.deltaY:"wheelDeltaY"in i?-i.wheelDeltaY:"wheelDelta"in i?-i.wheelDelta:0},deltaZ:0,deltaMode:0}),M6=wr(D6),N6=[9,13,27,32],nm=c&&"CompositionEvent"in window,lc=null;c&&"documentMode"in document&&(lc=document.documentMode);var O6=c&&"TextEvent"in window&&!lc,$b=c&&(!nm||lc&&8<lc&&11>=lc),Bb=" ",Vb=!1;function Hb(i,o){switch(i){case"keyup":return N6.indexOf(o.keyCode)!==-1;case"keydown":return o.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Wb(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var Eo=!1;function j6(i,o){switch(i){case"compositionend":return Wb(o);case"keypress":return o.which!==32?null:(Vb=!0,Bb);case"textInput":return i=o.data,i===Bb&&Vb?null:i;default:return null}}function z6(i,o){if(Eo)return i==="compositionend"||!nm&&Hb(i,o)?(i=Ob(),fd=Zf=Ui=null,Eo=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(o.ctrlKey||o.altKey||o.metaKey)||o.ctrlKey&&o.altKey){if(o.char&&1<o.char.length)return o.char;if(o.which)return String.fromCharCode(o.which)}return null;case"compositionend":return $b&&o.locale!=="ko"?null:o.data;default:return null}}var F6={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Gb(i){var o=i&&i.nodeName&&i.nodeName.toLowerCase();return o==="input"?!!F6[i.type]:o==="textarea"}function qb(i,o,u,f){od(f),o=wd(o,"onChange"),0<o.length&&(u=new Jf("onChange","change",null,u,f),i.push({event:u,listeners:o}))}var cc=null,uc=null;function U6(i){dk(i,0)}function _d(i){var o=Do(i);if(jt(o))return i}function $6(i,o){if(i==="change")return o}var Kb=!1;if(c){var rm;if(c){var am="oninput"in document;if(!am){var Yb=document.createElement("div");Yb.setAttribute("oninput","return;"),am=typeof Yb.oninput=="function"}rm=am}else rm=!1;Kb=rm&&(!document.documentMode||9<document.documentMode)}function Zb(){cc&&(cc.detachEvent("onpropertychange",Jb),uc=cc=null)}function Jb(i){if(i.propertyName==="value"&&_d(uc)){var o=[];qb(o,uc,i,bs(i)),ks(U6,o)}}function B6(i,o,u){i==="focusin"?(Zb(),cc=o,uc=u,cc.attachEvent("onpropertychange",Jb)):i==="focusout"&&Zb()}function V6(i){if(i==="selectionchange"||i==="keyup"||i==="keydown")return _d(uc)}function H6(i,o){if(i==="click")return _d(o)}function W6(i,o){if(i==="input"||i==="change")return _d(o)}function G6(i,o){return i===o&&(i!==0||1/i===1/o)||i!==i&&o!==o}var sa=typeof Object.is=="function"?Object.is:G6;function dc(i,o){if(sa(i,o))return!0;if(typeof i!="object"||i===null||typeof o!="object"||o===null)return!1;var u=Object.keys(i),f=Object.keys(o);if(u.length!==f.length)return!1;for(f=0;f<u.length;f++){var g=u[f];if(!d.call(o,g)||!sa(i[g],o[g]))return!1}return!0}function Xb(i){for(;i&&i.firstChild;)i=i.firstChild;return i}function Qb(i,o){var u=Xb(i);i=0;for(var f;u;){if(u.nodeType===3){if(f=i+u.textContent.length,i<=o&&f>=o)return{node:u,offset:o-i};i=f}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=Xb(u)}}function ek(i,o){return i&&o?i===o?!0:i&&i.nodeType===3?!1:o&&o.nodeType===3?ek(i,o.parentNode):"contains"in i?i.contains(o):i.compareDocumentPosition?!!(i.compareDocumentPosition(o)&16):!1:!1}function tk(){for(var i=window,o=_t();o instanceof i.HTMLIFrameElement;){try{var u=typeof o.contentWindow.location.href=="string"}catch{u=!1}if(u)i=o.contentWindow;else break;o=_t(i.document)}return o}function im(i){var o=i&&i.nodeName&&i.nodeName.toLowerCase();return o&&(o==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||o==="textarea"||i.contentEditable==="true")}function q6(i){var o=tk(),u=i.focusedElem,f=i.selectionRange;if(o!==u&&u&&u.ownerDocument&&ek(u.ownerDocument.documentElement,u)){if(f!==null&&im(u)){if(o=f.start,i=f.end,i===void 0&&(i=o),"selectionStart"in u)u.selectionStart=o,u.selectionEnd=Math.min(i,u.value.length);else if(i=(o=u.ownerDocument||document)&&o.defaultView||window,i.getSelection){i=i.getSelection();var g=u.textContent.length,_=Math.min(f.start,g);f=f.end===void 0?_:Math.min(f.end,g),!i.extend&&_>f&&(g=f,f=_,_=g),g=Qb(u,_);var C=Qb(u,f);g&&C&&(i.rangeCount!==1||i.anchorNode!==g.node||i.anchorOffset!==g.offset||i.focusNode!==C.node||i.focusOffset!==C.offset)&&(o=o.createRange(),o.setStart(g.node,g.offset),i.removeAllRanges(),_>f?(i.addRange(o),i.extend(C.node,C.offset)):(o.setEnd(C.node,C.offset),i.addRange(o)))}}for(o=[],i=u;i=i.parentNode;)i.nodeType===1&&o.push({element:i,left:i.scrollLeft,top:i.scrollTop});for(typeof u.focus=="function"&&u.focus(),u=0;u<o.length;u++)i=o[u],i.element.scrollLeft=i.left,i.element.scrollTop=i.top}}var K6=c&&"documentMode"in document&&11>=document.documentMode,Ao=null,sm=null,hc=null,om=!1;function nk(i,o,u){var f=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;om||Ao==null||Ao!==_t(f)||(f=Ao,"selectionStart"in f&&im(f)?f={start:f.selectionStart,end:f.selectionEnd}:(f=(f.ownerDocument&&f.ownerDocument.defaultView||window).getSelection(),f={anchorNode:f.anchorNode,anchorOffset:f.anchorOffset,focusNode:f.focusNode,focusOffset:f.focusOffset}),hc&&dc(hc,f)||(hc=f,f=wd(sm,"onSelect"),0<f.length&&(o=new Jf("onSelect","select",null,o,u),i.push({event:o,listeners:f}),o.target=Ao)))}function yd(i,o){var u={};return u[i.toLowerCase()]=o.toLowerCase(),u["Webkit"+i]="webkit"+o,u["Moz"+i]="moz"+o,u}var Ro={animationend:yd("Animation","AnimationEnd"),animationiteration:yd("Animation","AnimationIteration"),animationstart:yd("Animation","AnimationStart"),transitionend:yd("Transition","TransitionEnd")},lm={},rk={};c&&(rk=document.createElement("div").style,"AnimationEvent"in window||(delete Ro.animationend.animation,delete Ro.animationiteration.animation,delete Ro.animationstart.animation),"TransitionEvent"in window||delete Ro.transitionend.transition);function bd(i){if(lm[i])return lm[i];if(!Ro[i])return i;var o=Ro[i],u;for(u in o)if(o.hasOwnProperty(u)&&u in rk)return lm[i]=o[u];return i}var ak=bd("animationend"),ik=bd("animationiteration"),sk=bd("animationstart"),ok=bd("transitionend"),lk=new Map,ck="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function $i(i,o){lk.set(i,o),s(o,[i])}for(var cm=0;cm<ck.length;cm++){var um=ck[cm],Y6=um.toLowerCase(),Z6=um[0].toUpperCase()+um.slice(1);$i(Y6,"on"+Z6)}$i(ak,"onAnimationEnd"),$i(ik,"onAnimationIteration"),$i(sk,"onAnimationStart"),$i("dblclick","onDoubleClick"),$i("focusin","onFocus"),$i("focusout","onBlur"),$i(ok,"onTransitionEnd"),l("onMouseEnter",["mouseout","mouseover"]),l("onMouseLeave",["mouseout","mouseover"]),l("onPointerEnter",["pointerout","pointerover"]),l("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var pc="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),J6=new Set("cancel close invalid load scroll toggle".split(" ").concat(pc));function uk(i,o,u){var f=i.type||"unknown-event";i.currentTarget=u,Be(f,o,void 0,i),i.currentTarget=null}function dk(i,o){o=(o&4)!==0;for(var u=0;u<i.length;u++){var f=i[u],g=f.event;f=f.listeners;e:{var _=void 0;if(o)for(var C=f.length-1;0<=C;C--){var O=f[C],U=O.instance,X=O.currentTarget;if(O=O.listener,U!==_&&g.isPropagationStopped())break e;uk(g,O,X),_=U}else for(C=0;C<f.length;C++){if(O=f[C],U=O.instance,X=O.currentTarget,O=O.listener,U!==_&&g.isPropagationStopped())break e;uk(g,O,X),_=U}}}if(ne)throw i=ie,ne=!1,ie=null,i}function Wt(i,o){var u=o[_m];u===void 0&&(u=o[_m]=new Set);var f=i+"__bubble";u.has(f)||(hk(o,i,2,!1),u.add(f))}function dm(i,o,u){var f=0;o&&(f|=4),hk(u,i,f,o)}var kd="_reactListening"+Math.random().toString(36).slice(2);function fc(i){if(!i[kd]){i[kd]=!0,r.forEach(function(u){u!=="selectionchange"&&(J6.has(u)||dm(u,!1,i),dm(u,!0,i))});var o=i.nodeType===9?i:i.ownerDocument;o===null||o[kd]||(o[kd]=!0,dm("selectionchange",!1,o))}}function hk(i,o,u,f){switch(Nb(o)){case 1:var g=d6;break;case 4:g=h6;break;default:g=Kf}u=g.bind(null,o,u,i),g=void 0,!Ql||o!=="touchstart"&&o!=="touchmove"&&o!=="wheel"||(g=!0),f?g!==void 0?i.addEventListener(o,u,{capture:!0,passive:g}):i.addEventListener(o,u,!0):g!==void 0?i.addEventListener(o,u,{passive:g}):i.addEventListener(o,u,!1)}function hm(i,o,u,f,g){var _=f;if((o&1)===0&&(o&2)===0&&f!==null)e:for(;;){if(f===null)return;var C=f.tag;if(C===3||C===4){var O=f.stateNode.containerInfo;if(O===g||O.nodeType===8&&O.parentNode===g)break;if(C===4)for(C=f.return;C!==null;){var U=C.tag;if((U===3||U===4)&&(U=C.stateNode.containerInfo,U===g||U.nodeType===8&&U.parentNode===g))return;C=C.return}for(;O!==null;){if(C=xs(O),C===null)return;if(U=C.tag,U===5||U===6){f=_=C;continue e}O=O.parentNode}}f=f.return}ks(function(){var X=_,ce=bs(u),he=[];e:{var oe=lk.get(i);if(oe!==void 0){var Ce=Jf,Ie=i;switch(i){case"keypress":if(md(u)===0)break e;case"keydown":case"keyup":Ce=T6;break;case"focusin":Ie="focus",Ce=em;break;case"focusout":Ie="blur",Ce=em;break;case"beforeblur":case"afterblur":Ce=em;break;case"click":if(u.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":Ce=zb;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":Ce=m6;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":Ce=R6;break;case ak:case ik:case sk:Ce=_6;break;case ok:Ce=I6;break;case"scroll":Ce=p6;break;case"wheel":Ce=M6;break;case"copy":case"cut":case"paste":Ce=b6;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":Ce=Ub}var Me=(o&4)!==0,hn=!Me&&i==="scroll",G=Me?oe!==null?oe+"Capture":null:oe;Me=[];for(var V=X,Y;V!==null;){Y=V;var ve=Y.stateNode;if(Y.tag===5&&ve!==null&&(Y=ve,G!==null&&(ve=Ii(V,G),ve!=null&&Me.push(mc(V,ve,Y)))),hn)break;V=V.return}0<Me.length&&(oe=new Ce(oe,Ie,null,u,ce),he.push({event:oe,listeners:Me}))}}if((o&7)===0){e:{if(oe=i==="mouseover"||i==="pointerover",Ce=i==="mouseout"||i==="pointerout",oe&&u!==ra&&(Ie=u.relatedTarget||u.fromElement)&&(xs(Ie)||Ie[ai]))break e;if((Ce||oe)&&(oe=ce.window===ce?ce:(oe=ce.ownerDocument)?oe.defaultView||oe.parentWindow:window,Ce?(Ie=u.relatedTarget||u.toElement,Ce=X,Ie=Ie?xs(Ie):null,Ie!==null&&(hn=Se(Ie),Ie!==hn||Ie.tag!==5&&Ie.tag!==6)&&(Ie=null)):(Ce=null,Ie=X),Ce!==Ie)){if(Me=zb,ve="onMouseLeave",G="onMouseEnter",V="mouse",(i==="pointerout"||i==="pointerover")&&(Me=Ub,ve="onPointerLeave",G="onPointerEnter",V="pointer"),hn=Ce==null?oe:Do(Ce),Y=Ie==null?oe:Do(Ie),oe=new Me(ve,V+"leave",Ce,u,ce),oe.target=hn,oe.relatedTarget=Y,ve=null,xs(ce)===X&&(Me=new Me(G,V+"enter",Ie,u,ce),Me.target=Y,Me.relatedTarget=hn,ve=Me),hn=ve,Ce&&Ie)t:{for(Me=Ce,G=Ie,V=0,Y=Me;Y;Y=Lo(Y))V++;for(Y=0,ve=G;ve;ve=Lo(ve))Y++;for(;0<V-Y;)Me=Lo(Me),V--;for(;0<Y-V;)G=Lo(G),Y--;for(;V--;){if(Me===G||G!==null&&Me===G.alternate)break t;Me=Lo(Me),G=Lo(G)}Me=null}else Me=null;Ce!==null&&pk(he,oe,Ce,Me,!1),Ie!==null&&hn!==null&&pk(he,hn,Ie,Me,!0)}}e:{if(oe=X?Do(X):window,Ce=oe.nodeName&&oe.nodeName.toLowerCase(),Ce==="select"||Ce==="input"&&oe.type==="file")var Ne=$6;else if(Gb(oe))if(Kb)Ne=W6;else{Ne=V6;var We=B6}else(Ce=oe.nodeName)&&Ce.toLowerCase()==="input"&&(oe.type==="checkbox"||oe.type==="radio")&&(Ne=H6);if(Ne&&(Ne=Ne(i,X))){qb(he,Ne,u,ce);break e}We&&We(i,oe,X),i==="focusout"&&(We=oe._wrapperState)&&We.controlled&&oe.type==="number"&&st(oe,"number",oe.value)}switch(We=X?Do(X):window,i){case"focusin":(Gb(We)||We.contentEditable==="true")&&(Ao=We,sm=X,hc=null);break;case"focusout":hc=sm=Ao=null;break;case"mousedown":om=!0;break;case"contextmenu":case"mouseup":case"dragend":om=!1,nk(he,u,ce);break;case"selectionchange":if(K6)break;case"keydown":case"keyup":nk(he,u,ce)}var Ge;if(nm)e:{switch(i){case"compositionstart":var Ze="onCompositionStart";break e;case"compositionend":Ze="onCompositionEnd";break e;case"compositionupdate":Ze="onCompositionUpdate";break e}Ze=void 0}else Eo?Hb(i,u)&&(Ze="onCompositionEnd"):i==="keydown"&&u.keyCode===229&&(Ze="onCompositionStart");Ze&&($b&&u.locale!=="ko"&&(Eo||Ze!=="onCompositionStart"?Ze==="onCompositionEnd"&&Eo&&(Ge=Ob()):(Ui=ce,Zf="value"in Ui?Ui.value:Ui.textContent,Eo=!0)),We=wd(X,Ze),0<We.length&&(Ze=new Fb(Ze,i,null,u,ce),he.push({event:Ze,listeners:We}),Ge?Ze.data=Ge:(Ge=Wb(u),Ge!==null&&(Ze.data=Ge)))),(Ge=O6?j6(i,u):z6(i,u))&&(X=wd(X,"onBeforeInput"),0<X.length&&(ce=new Fb("onBeforeInput","beforeinput",null,u,ce),he.push({event:ce,listeners:X}),ce.data=Ge))}dk(he,o)})}function mc(i,o,u){return{instance:i,listener:o,currentTarget:u}}function wd(i,o){for(var u=o+"Capture",f=[];i!==null;){var g=i,_=g.stateNode;g.tag===5&&_!==null&&(g=_,_=Ii(i,u),_!=null&&f.unshift(mc(i,_,g)),_=Ii(i,o),_!=null&&f.push(mc(i,_,g))),i=i.return}return f}function Lo(i){if(i===null)return null;do i=i.return;while(i&&i.tag!==5);return i||null}function pk(i,o,u,f,g){for(var _=o._reactName,C=[];u!==null&&u!==f;){var O=u,U=O.alternate,X=O.stateNode;if(U!==null&&U===f)break;O.tag===5&&X!==null&&(O=X,g?(U=Ii(u,_),U!=null&&C.unshift(mc(u,U,O))):g||(U=Ii(u,_),U!=null&&C.push(mc(u,U,O)))),u=u.return}C.length!==0&&i.push({event:o,listeners:C})}var X6=/\r\n?/g,Q6=/\u0000|\uFFFD/g;function fk(i){return(typeof i=="string"?i:""+i).replace(X6,`
7
- `).replace(Q6,"")}function xd(i,o,u){if(o=fk(o),fk(i)!==o&&u)throw Error(n(425))}function Pd(){}var pm=null,fm=null;function mm(i,o){return i==="textarea"||i==="noscript"||typeof o.children=="string"||typeof o.children=="number"||typeof o.dangerouslySetInnerHTML=="object"&&o.dangerouslySetInnerHTML!==null&&o.dangerouslySetInnerHTML.__html!=null}var gm=typeof setTimeout=="function"?setTimeout:void 0,eA=typeof clearTimeout=="function"?clearTimeout:void 0,mk=typeof Promise=="function"?Promise:void 0,tA=typeof queueMicrotask=="function"?queueMicrotask:typeof mk<"u"?function(i){return mk.resolve(null).then(i).catch(nA)}:gm;function nA(i){setTimeout(function(){throw i})}function vm(i,o){var u=o,f=0;do{var g=u.nextSibling;if(i.removeChild(u),g&&g.nodeType===8)if(u=g.data,u==="/$"){if(f===0){i.removeChild(g),ic(o);return}f--}else u!=="$"&&u!=="$?"&&u!=="$!"||f++;u=g}while(u);ic(o)}function Bi(i){for(;i!=null;i=i.nextSibling){var o=i.nodeType;if(o===1||o===3)break;if(o===8){if(o=i.data,o==="$"||o==="$!"||o==="$?")break;if(o==="/$")return null}}return i}function gk(i){i=i.previousSibling;for(var o=0;i;){if(i.nodeType===8){var u=i.data;if(u==="$"||u==="$!"||u==="$?"){if(o===0)return i;o--}else u==="/$"&&o++}i=i.previousSibling}return null}var Io=Math.random().toString(36).slice(2),Ta="__reactFiber$"+Io,gc="__reactProps$"+Io,ai="__reactContainer$"+Io,_m="__reactEvents$"+Io,rA="__reactListeners$"+Io,aA="__reactHandles$"+Io;function xs(i){var o=i[Ta];if(o)return o;for(var u=i.parentNode;u;){if(o=u[ai]||u[Ta]){if(u=o.alternate,o.child!==null||u!==null&&u.child!==null)for(i=gk(i);i!==null;){if(u=i[Ta])return u;i=gk(i)}return o}i=u,u=i.parentNode}return null}function vc(i){return i=i[Ta]||i[ai],!i||i.tag!==5&&i.tag!==6&&i.tag!==13&&i.tag!==3?null:i}function Do(i){if(i.tag===5||i.tag===6)return i.stateNode;throw Error(n(33))}function Sd(i){return i[gc]||null}var ym=[],Mo=-1;function Vi(i){return{current:i}}function Gt(i){0>Mo||(i.current=ym[Mo],ym[Mo]=null,Mo--)}function Ut(i,o){Mo++,ym[Mo]=i.current,i.current=o}var Hi={},Wn=Vi(Hi),ur=Vi(!1),Ps=Hi;function No(i,o){var u=i.type.contextTypes;if(!u)return Hi;var f=i.stateNode;if(f&&f.__reactInternalMemoizedUnmaskedChildContext===o)return f.__reactInternalMemoizedMaskedChildContext;var g={},_;for(_ in u)g[_]=o[_];return f&&(i=i.stateNode,i.__reactInternalMemoizedUnmaskedChildContext=o,i.__reactInternalMemoizedMaskedChildContext=g),g}function dr(i){return i=i.childContextTypes,i!=null}function Cd(){Gt(ur),Gt(Wn)}function vk(i,o,u){if(Wn.current!==Hi)throw Error(n(168));Ut(Wn,o),Ut(ur,u)}function _k(i,o,u){var f=i.stateNode;if(o=o.childContextTypes,typeof f.getChildContext!="function")return u;f=f.getChildContext();for(var g in f)if(!(g in o))throw Error(n(108,je(i)||"Unknown",g));return W({},u,f)}function Td(i){return i=(i=i.stateNode)&&i.__reactInternalMemoizedMergedChildContext||Hi,Ps=Wn.current,Ut(Wn,i),Ut(ur,ur.current),!0}function yk(i,o,u){var f=i.stateNode;if(!f)throw Error(n(169));u?(i=_k(i,o,Ps),f.__reactInternalMemoizedMergedChildContext=i,Gt(ur),Gt(Wn),Ut(Wn,i)):Gt(ur),Ut(ur,u)}var ii=null,Ed=!1,bm=!1;function bk(i){ii===null?ii=[i]:ii.push(i)}function iA(i){Ed=!0,bk(i)}function Wi(){if(!bm&&ii!==null){bm=!0;var i=0,o=Tt;try{var u=ii;for(Tt=1;i<u.length;i++){var f=u[i];do f=f(!0);while(f!==null)}ii=null,Ed=!1}catch(g){throw ii!==null&&(ii=ii.slice(i+1)),Pt(ni,Wi),g}finally{Tt=o,bm=!1}}return null}var Oo=[],jo=0,Ad=null,Rd=0,Ir=[],Dr=0,Ss=null,si=1,oi="";function Cs(i,o){Oo[jo++]=Rd,Oo[jo++]=Ad,Ad=i,Rd=o}function kk(i,o,u){Ir[Dr++]=si,Ir[Dr++]=oi,Ir[Dr++]=Ss,Ss=i;var f=si;i=oi;var g=32-Vn(f)-1;f&=~(1<<g),u+=1;var _=32-Vn(o)+g;if(30<_){var C=g-g%5;_=(f&(1<<C)-1).toString(32),f>>=C,g-=C,si=1<<32-Vn(o)+g|u<<g|f,oi=_+i}else si=1<<_|u<<g|f,oi=i}function km(i){i.return!==null&&(Cs(i,1),kk(i,1,0))}function wm(i){for(;i===Ad;)Ad=Oo[--jo],Oo[jo]=null,Rd=Oo[--jo],Oo[jo]=null;for(;i===Ss;)Ss=Ir[--Dr],Ir[Dr]=null,oi=Ir[--Dr],Ir[Dr]=null,si=Ir[--Dr],Ir[Dr]=null}var xr=null,Pr=null,Jt=!1,oa=null;function wk(i,o){var u=jr(5,null,null,0);u.elementType="DELETED",u.stateNode=o,u.return=i,o=i.deletions,o===null?(i.deletions=[u],i.flags|=16):o.push(u)}function xk(i,o){switch(i.tag){case 5:var u=i.type;return o=o.nodeType!==1||u.toLowerCase()!==o.nodeName.toLowerCase()?null:o,o!==null?(i.stateNode=o,xr=i,Pr=Bi(o.firstChild),!0):!1;case 6:return o=i.pendingProps===""||o.nodeType!==3?null:o,o!==null?(i.stateNode=o,xr=i,Pr=null,!0):!1;case 13:return o=o.nodeType!==8?null:o,o!==null?(u=Ss!==null?{id:si,overflow:oi}:null,i.memoizedState={dehydrated:o,treeContext:u,retryLane:1073741824},u=jr(18,null,null,0),u.stateNode=o,u.return=i,i.child=u,xr=i,Pr=null,!0):!1;default:return!1}}function xm(i){return(i.mode&1)!==0&&(i.flags&128)===0}function Pm(i){if(Jt){var o=Pr;if(o){var u=o;if(!xk(i,o)){if(xm(i))throw Error(n(418));o=Bi(u.nextSibling);var f=xr;o&&xk(i,o)?wk(f,u):(i.flags=i.flags&-4097|2,Jt=!1,xr=i)}}else{if(xm(i))throw Error(n(418));i.flags=i.flags&-4097|2,Jt=!1,xr=i}}}function Pk(i){for(i=i.return;i!==null&&i.tag!==5&&i.tag!==3&&i.tag!==13;)i=i.return;xr=i}function Ld(i){if(i!==xr)return!1;if(!Jt)return Pk(i),Jt=!0,!1;var o;if((o=i.tag!==3)&&!(o=i.tag!==5)&&(o=i.type,o=o!=="head"&&o!=="body"&&!mm(i.type,i.memoizedProps)),o&&(o=Pr)){if(xm(i))throw Sk(),Error(n(418));for(;o;)wk(i,o),o=Bi(o.nextSibling)}if(Pk(i),i.tag===13){if(i=i.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(n(317));e:{for(i=i.nextSibling,o=0;i;){if(i.nodeType===8){var u=i.data;if(u==="/$"){if(o===0){Pr=Bi(i.nextSibling);break e}o--}else u!=="$"&&u!=="$!"&&u!=="$?"||o++}i=i.nextSibling}Pr=null}}else Pr=xr?Bi(i.stateNode.nextSibling):null;return!0}function Sk(){for(var i=Pr;i;)i=Bi(i.nextSibling)}function zo(){Pr=xr=null,Jt=!1}function Sm(i){oa===null?oa=[i]:oa.push(i)}var sA=E.ReactCurrentBatchConfig;function _c(i,o,u){if(i=u.ref,i!==null&&typeof i!="function"&&typeof i!="object"){if(u._owner){if(u=u._owner,u){if(u.tag!==1)throw Error(n(309));var f=u.stateNode}if(!f)throw Error(n(147,i));var g=f,_=""+i;return o!==null&&o.ref!==null&&typeof o.ref=="function"&&o.ref._stringRef===_?o.ref:(o=function(C){var O=g.refs;C===null?delete O[_]:O[_]=C},o._stringRef=_,o)}if(typeof i!="string")throw Error(n(284));if(!u._owner)throw Error(n(290,i))}return i}function Id(i,o){throw i=Object.prototype.toString.call(o),Error(n(31,i==="[object Object]"?"object with keys {"+Object.keys(o).join(", ")+"}":i))}function Ck(i){var o=i._init;return o(i._payload)}function Tk(i){function o(G,V){if(i){var Y=G.deletions;Y===null?(G.deletions=[V],G.flags|=16):Y.push(V)}}function u(G,V){if(!i)return null;for(;V!==null;)o(G,V),V=V.sibling;return null}function f(G,V){for(G=new Map;V!==null;)V.key!==null?G.set(V.key,V):G.set(V.index,V),V=V.sibling;return G}function g(G,V){return G=Qi(G,V),G.index=0,G.sibling=null,G}function _(G,V,Y){return G.index=Y,i?(Y=G.alternate,Y!==null?(Y=Y.index,Y<V?(G.flags|=2,V):Y):(G.flags|=2,V)):(G.flags|=1048576,V)}function C(G){return i&&G.alternate===null&&(G.flags|=2),G}function O(G,V,Y,ve){return V===null||V.tag!==6?(V=gg(Y,G.mode,ve),V.return=G,V):(V=g(V,Y),V.return=G,V)}function U(G,V,Y,ve){var Ne=Y.type;return Ne===I?ce(G,V,Y.props.children,ve,Y.key):V!==null&&(V.elementType===Ne||typeof Ne=="object"&&Ne!==null&&Ne.$$typeof===te&&Ck(Ne)===V.type)?(ve=g(V,Y.props),ve.ref=_c(G,V,Y),ve.return=G,ve):(ve=nh(Y.type,Y.key,Y.props,null,G.mode,ve),ve.ref=_c(G,V,Y),ve.return=G,ve)}function X(G,V,Y,ve){return V===null||V.tag!==4||V.stateNode.containerInfo!==Y.containerInfo||V.stateNode.implementation!==Y.implementation?(V=vg(Y,G.mode,ve),V.return=G,V):(V=g(V,Y.children||[]),V.return=G,V)}function ce(G,V,Y,ve,Ne){return V===null||V.tag!==7?(V=Ms(Y,G.mode,ve,Ne),V.return=G,V):(V=g(V,Y),V.return=G,V)}function he(G,V,Y){if(typeof V=="string"&&V!==""||typeof V=="number")return V=gg(""+V,G.mode,Y),V.return=G,V;if(typeof V=="object"&&V!==null){switch(V.$$typeof){case D:return Y=nh(V.type,V.key,V.props,null,G.mode,Y),Y.ref=_c(G,null,V),Y.return=G,Y;case $:return V=vg(V,G.mode,Y),V.return=G,V;case te:var ve=V._init;return he(G,ve(V._payload),Y)}if(It(V)||Q(V))return V=Ms(V,G.mode,Y,null),V.return=G,V;Id(G,V)}return null}function oe(G,V,Y,ve){var Ne=V!==null?V.key:null;if(typeof Y=="string"&&Y!==""||typeof Y=="number")return Ne!==null?null:O(G,V,""+Y,ve);if(typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case D:return Y.key===Ne?U(G,V,Y,ve):null;case $:return Y.key===Ne?X(G,V,Y,ve):null;case te:return Ne=Y._init,oe(G,V,Ne(Y._payload),ve)}if(It(Y)||Q(Y))return Ne!==null?null:ce(G,V,Y,ve,null);Id(G,Y)}return null}function Ce(G,V,Y,ve,Ne){if(typeof ve=="string"&&ve!==""||typeof ve=="number")return G=G.get(Y)||null,O(V,G,""+ve,Ne);if(typeof ve=="object"&&ve!==null){switch(ve.$$typeof){case D:return G=G.get(ve.key===null?Y:ve.key)||null,U(V,G,ve,Ne);case $:return G=G.get(ve.key===null?Y:ve.key)||null,X(V,G,ve,Ne);case te:var We=ve._init;return Ce(G,V,Y,We(ve._payload),Ne)}if(It(ve)||Q(ve))return G=G.get(Y)||null,ce(V,G,ve,Ne,null);Id(V,ve)}return null}function Ie(G,V,Y,ve){for(var Ne=null,We=null,Ge=V,Ze=V=0,Rn=null;Ge!==null&&Ze<Y.length;Ze++){Ge.index>Ze?(Rn=Ge,Ge=null):Rn=Ge.sibling;var wt=oe(G,Ge,Y[Ze],ve);if(wt===null){Ge===null&&(Ge=Rn);break}i&&Ge&&wt.alternate===null&&o(G,Ge),V=_(wt,V,Ze),We===null?Ne=wt:We.sibling=wt,We=wt,Ge=Rn}if(Ze===Y.length)return u(G,Ge),Jt&&Cs(G,Ze),Ne;if(Ge===null){for(;Ze<Y.length;Ze++)Ge=he(G,Y[Ze],ve),Ge!==null&&(V=_(Ge,V,Ze),We===null?Ne=Ge:We.sibling=Ge,We=Ge);return Jt&&Cs(G,Ze),Ne}for(Ge=f(G,Ge);Ze<Y.length;Ze++)Rn=Ce(Ge,G,Ze,Y[Ze],ve),Rn!==null&&(i&&Rn.alternate!==null&&Ge.delete(Rn.key===null?Ze:Rn.key),V=_(Rn,V,Ze),We===null?Ne=Rn:We.sibling=Rn,We=Rn);return i&&Ge.forEach(function(es){return o(G,es)}),Jt&&Cs(G,Ze),Ne}function Me(G,V,Y,ve){var Ne=Q(Y);if(typeof Ne!="function")throw Error(n(150));if(Y=Ne.call(Y),Y==null)throw Error(n(151));for(var We=Ne=null,Ge=V,Ze=V=0,Rn=null,wt=Y.next();Ge!==null&&!wt.done;Ze++,wt=Y.next()){Ge.index>Ze?(Rn=Ge,Ge=null):Rn=Ge.sibling;var es=oe(G,Ge,wt.value,ve);if(es===null){Ge===null&&(Ge=Rn);break}i&&Ge&&es.alternate===null&&o(G,Ge),V=_(es,V,Ze),We===null?Ne=es:We.sibling=es,We=es,Ge=Rn}if(wt.done)return u(G,Ge),Jt&&Cs(G,Ze),Ne;if(Ge===null){for(;!wt.done;Ze++,wt=Y.next())wt=he(G,wt.value,ve),wt!==null&&(V=_(wt,V,Ze),We===null?Ne=wt:We.sibling=wt,We=wt);return Jt&&Cs(G,Ze),Ne}for(Ge=f(G,Ge);!wt.done;Ze++,wt=Y.next())wt=Ce(Ge,G,Ze,wt.value,ve),wt!==null&&(i&&wt.alternate!==null&&Ge.delete(wt.key===null?Ze:wt.key),V=_(wt,V,Ze),We===null?Ne=wt:We.sibling=wt,We=wt);return i&&Ge.forEach(function(FA){return o(G,FA)}),Jt&&Cs(G,Ze),Ne}function hn(G,V,Y,ve){if(typeof Y=="object"&&Y!==null&&Y.type===I&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case D:e:{for(var Ne=Y.key,We=V;We!==null;){if(We.key===Ne){if(Ne=Y.type,Ne===I){if(We.tag===7){u(G,We.sibling),V=g(We,Y.props.children),V.return=G,G=V;break e}}else if(We.elementType===Ne||typeof Ne=="object"&&Ne!==null&&Ne.$$typeof===te&&Ck(Ne)===We.type){u(G,We.sibling),V=g(We,Y.props),V.ref=_c(G,We,Y),V.return=G,G=V;break e}u(G,We);break}else o(G,We);We=We.sibling}Y.type===I?(V=Ms(Y.props.children,G.mode,ve,Y.key),V.return=G,G=V):(ve=nh(Y.type,Y.key,Y.props,null,G.mode,ve),ve.ref=_c(G,V,Y),ve.return=G,G=ve)}return C(G);case $:e:{for(We=Y.key;V!==null;){if(V.key===We)if(V.tag===4&&V.stateNode.containerInfo===Y.containerInfo&&V.stateNode.implementation===Y.implementation){u(G,V.sibling),V=g(V,Y.children||[]),V.return=G,G=V;break e}else{u(G,V);break}else o(G,V);V=V.sibling}V=vg(Y,G.mode,ve),V.return=G,G=V}return C(G);case te:return We=Y._init,hn(G,V,We(Y._payload),ve)}if(It(Y))return Ie(G,V,Y,ve);if(Q(Y))return Me(G,V,Y,ve);Id(G,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,V!==null&&V.tag===6?(u(G,V.sibling),V=g(V,Y),V.return=G,G=V):(u(G,V),V=gg(Y,G.mode,ve),V.return=G,G=V),C(G)):u(G,V)}return hn}var Fo=Tk(!0),Ek=Tk(!1),Dd=Vi(null),Md=null,Uo=null,Cm=null;function Tm(){Cm=Uo=Md=null}function Em(i){var o=Dd.current;Gt(Dd),i._currentValue=o}function Am(i,o,u){for(;i!==null;){var f=i.alternate;if((i.childLanes&o)!==o?(i.childLanes|=o,f!==null&&(f.childLanes|=o)):f!==null&&(f.childLanes&o)!==o&&(f.childLanes|=o),i===u)break;i=i.return}}function $o(i,o){Md=i,Cm=Uo=null,i=i.dependencies,i!==null&&i.firstContext!==null&&((i.lanes&o)!==0&&(hr=!0),i.firstContext=null)}function Mr(i){var o=i._currentValue;if(Cm!==i)if(i={context:i,memoizedValue:o,next:null},Uo===null){if(Md===null)throw Error(n(308));Uo=i,Md.dependencies={lanes:0,firstContext:i}}else Uo=Uo.next=i;return o}var Ts=null;function Rm(i){Ts===null?Ts=[i]:Ts.push(i)}function Ak(i,o,u,f){var g=o.interleaved;return g===null?(u.next=u,Rm(o)):(u.next=g.next,g.next=u),o.interleaved=u,li(i,f)}function li(i,o){i.lanes|=o;var u=i.alternate;for(u!==null&&(u.lanes|=o),u=i,i=i.return;i!==null;)i.childLanes|=o,u=i.alternate,u!==null&&(u.childLanes|=o),u=i,i=i.return;return u.tag===3?u.stateNode:null}var Gi=!1;function Lm(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Rk(i,o){i=i.updateQueue,o.updateQueue===i&&(o.updateQueue={baseState:i.baseState,firstBaseUpdate:i.firstBaseUpdate,lastBaseUpdate:i.lastBaseUpdate,shared:i.shared,effects:i.effects})}function ci(i,o){return{eventTime:i,lane:o,tag:0,payload:null,callback:null,next:null}}function qi(i,o,u){var f=i.updateQueue;if(f===null)return null;if(f=f.shared,(yt&2)!==0){var g=f.pending;return g===null?o.next=o:(o.next=g.next,g.next=o),f.pending=o,li(i,u)}return g=f.interleaved,g===null?(o.next=o,Rm(f)):(o.next=g.next,g.next=o),f.interleaved=o,li(i,u)}function Nd(i,o,u){if(o=o.updateQueue,o!==null&&(o=o.shared,(u&4194240)!==0)){var f=o.lanes;f&=i.pendingLanes,u|=f,o.lanes=u,Wf(i,u)}}function Lk(i,o){var u=i.updateQueue,f=i.alternate;if(f!==null&&(f=f.updateQueue,u===f)){var g=null,_=null;if(u=u.firstBaseUpdate,u!==null){do{var C={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};_===null?g=_=C:_=_.next=C,u=u.next}while(u!==null);_===null?g=_=o:_=_.next=o}else g=_=o;u={baseState:f.baseState,firstBaseUpdate:g,lastBaseUpdate:_,shared:f.shared,effects:f.effects},i.updateQueue=u;return}i=u.lastBaseUpdate,i===null?u.firstBaseUpdate=o:i.next=o,u.lastBaseUpdate=o}function Od(i,o,u,f){var g=i.updateQueue;Gi=!1;var _=g.firstBaseUpdate,C=g.lastBaseUpdate,O=g.shared.pending;if(O!==null){g.shared.pending=null;var U=O,X=U.next;U.next=null,C===null?_=X:C.next=X,C=U;var ce=i.alternate;ce!==null&&(ce=ce.updateQueue,O=ce.lastBaseUpdate,O!==C&&(O===null?ce.firstBaseUpdate=X:O.next=X,ce.lastBaseUpdate=U))}if(_!==null){var he=g.baseState;C=0,ce=X=U=null,O=_;do{var oe=O.lane,Ce=O.eventTime;if((f&oe)===oe){ce!==null&&(ce=ce.next={eventTime:Ce,lane:0,tag:O.tag,payload:O.payload,callback:O.callback,next:null});e:{var Ie=i,Me=O;switch(oe=o,Ce=u,Me.tag){case 1:if(Ie=Me.payload,typeof Ie=="function"){he=Ie.call(Ce,he,oe);break e}he=Ie;break e;case 3:Ie.flags=Ie.flags&-65537|128;case 0:if(Ie=Me.payload,oe=typeof Ie=="function"?Ie.call(Ce,he,oe):Ie,oe==null)break e;he=W({},he,oe);break e;case 2:Gi=!0}}O.callback!==null&&O.lane!==0&&(i.flags|=64,oe=g.effects,oe===null?g.effects=[O]:oe.push(O))}else Ce={eventTime:Ce,lane:oe,tag:O.tag,payload:O.payload,callback:O.callback,next:null},ce===null?(X=ce=Ce,U=he):ce=ce.next=Ce,C|=oe;if(O=O.next,O===null){if(O=g.shared.pending,O===null)break;oe=O,O=oe.next,oe.next=null,g.lastBaseUpdate=oe,g.shared.pending=null}}while(!0);if(ce===null&&(U=he),g.baseState=U,g.firstBaseUpdate=X,g.lastBaseUpdate=ce,o=g.shared.interleaved,o!==null){g=o;do C|=g.lane,g=g.next;while(g!==o)}else _===null&&(g.shared.lanes=0);Rs|=C,i.lanes=C,i.memoizedState=he}}function Ik(i,o,u){if(i=o.effects,o.effects=null,i!==null)for(o=0;o<i.length;o++){var f=i[o],g=f.callback;if(g!==null){if(f.callback=null,f=u,typeof g!="function")throw Error(n(191,g));g.call(f)}}}var yc={},Ea=Vi(yc),bc=Vi(yc),kc=Vi(yc);function Es(i){if(i===yc)throw Error(n(174));return i}function Im(i,o){switch(Ut(kc,o),Ut(bc,i),Ut(Ea,yc),i=o.nodeType,i){case 9:case 11:o=(o=o.documentElement)?o.namespaceURI:nn(null,"");break;default:i=i===8?o.parentNode:o,o=i.namespaceURI||null,i=i.tagName,o=nn(o,i)}Gt(Ea),Ut(Ea,o)}function Bo(){Gt(Ea),Gt(bc),Gt(kc)}function Dk(i){Es(kc.current);var o=Es(Ea.current),u=nn(o,i.type);o!==u&&(Ut(bc,i),Ut(Ea,u))}function Dm(i){bc.current===i&&(Gt(Ea),Gt(bc))}var rn=Vi(0);function jd(i){for(var o=i;o!==null;){if(o.tag===13){var u=o.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return o}else if(o.tag===19&&o.memoizedProps.revealOrder!==void 0){if((o.flags&128)!==0)return o}else if(o.child!==null){o.child.return=o,o=o.child;continue}if(o===i)break;for(;o.sibling===null;){if(o.return===null||o.return===i)return null;o=o.return}o.sibling.return=o.return,o=o.sibling}return null}var Mm=[];function Nm(){for(var i=0;i<Mm.length;i++)Mm[i]._workInProgressVersionPrimary=null;Mm.length=0}var zd=E.ReactCurrentDispatcher,Om=E.ReactCurrentBatchConfig,As=0,an=null,kn=null,En=null,Fd=!1,wc=!1,xc=0,oA=0;function Gn(){throw Error(n(321))}function jm(i,o){if(o===null)return!1;for(var u=0;u<o.length&&u<i.length;u++)if(!sa(i[u],o[u]))return!1;return!0}function zm(i,o,u,f,g,_){if(As=_,an=o,o.memoizedState=null,o.updateQueue=null,o.lanes=0,zd.current=i===null||i.memoizedState===null?dA:hA,i=u(f,g),wc){_=0;do{if(wc=!1,xc=0,25<=_)throw Error(n(301));_+=1,En=kn=null,o.updateQueue=null,zd.current=pA,i=u(f,g)}while(wc)}if(zd.current=Bd,o=kn!==null&&kn.next!==null,As=0,En=kn=an=null,Fd=!1,o)throw Error(n(300));return i}function Fm(){var i=xc!==0;return xc=0,i}function Aa(){var i={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return En===null?an.memoizedState=En=i:En=En.next=i,En}function Nr(){if(kn===null){var i=an.alternate;i=i!==null?i.memoizedState:null}else i=kn.next;var o=En===null?an.memoizedState:En.next;if(o!==null)En=o,kn=i;else{if(i===null)throw Error(n(310));kn=i,i={memoizedState:kn.memoizedState,baseState:kn.baseState,baseQueue:kn.baseQueue,queue:kn.queue,next:null},En===null?an.memoizedState=En=i:En=En.next=i}return En}function Pc(i,o){return typeof o=="function"?o(i):o}function Um(i){var o=Nr(),u=o.queue;if(u===null)throw Error(n(311));u.lastRenderedReducer=i;var f=kn,g=f.baseQueue,_=u.pending;if(_!==null){if(g!==null){var C=g.next;g.next=_.next,_.next=C}f.baseQueue=g=_,u.pending=null}if(g!==null){_=g.next,f=f.baseState;var O=C=null,U=null,X=_;do{var ce=X.lane;if((As&ce)===ce)U!==null&&(U=U.next={lane:0,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null}),f=X.hasEagerState?X.eagerState:i(f,X.action);else{var he={lane:ce,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null};U===null?(O=U=he,C=f):U=U.next=he,an.lanes|=ce,Rs|=ce}X=X.next}while(X!==null&&X!==_);U===null?C=f:U.next=O,sa(f,o.memoizedState)||(hr=!0),o.memoizedState=f,o.baseState=C,o.baseQueue=U,u.lastRenderedState=f}if(i=u.interleaved,i!==null){g=i;do _=g.lane,an.lanes|=_,Rs|=_,g=g.next;while(g!==i)}else g===null&&(u.lanes=0);return[o.memoizedState,u.dispatch]}function $m(i){var o=Nr(),u=o.queue;if(u===null)throw Error(n(311));u.lastRenderedReducer=i;var f=u.dispatch,g=u.pending,_=o.memoizedState;if(g!==null){u.pending=null;var C=g=g.next;do _=i(_,C.action),C=C.next;while(C!==g);sa(_,o.memoizedState)||(hr=!0),o.memoizedState=_,o.baseQueue===null&&(o.baseState=_),u.lastRenderedState=_}return[_,f]}function Mk(){}function Nk(i,o){var u=an,f=Nr(),g=o(),_=!sa(f.memoizedState,g);if(_&&(f.memoizedState=g,hr=!0),f=f.queue,Bm(zk.bind(null,u,f,i),[i]),f.getSnapshot!==o||_||En!==null&&En.memoizedState.tag&1){if(u.flags|=2048,Sc(9,jk.bind(null,u,f,g,o),void 0,null),An===null)throw Error(n(349));(As&30)!==0||Ok(u,o,g)}return g}function Ok(i,o,u){i.flags|=16384,i={getSnapshot:o,value:u},o=an.updateQueue,o===null?(o={lastEffect:null,stores:null},an.updateQueue=o,o.stores=[i]):(u=o.stores,u===null?o.stores=[i]:u.push(i))}function jk(i,o,u,f){o.value=u,o.getSnapshot=f,Fk(o)&&Uk(i)}function zk(i,o,u){return u(function(){Fk(o)&&Uk(i)})}function Fk(i){var o=i.getSnapshot;i=i.value;try{var u=o();return!sa(i,u)}catch{return!0}}function Uk(i){var o=li(i,1);o!==null&&da(o,i,1,-1)}function $k(i){var o=Aa();return typeof i=="function"&&(i=i()),o.memoizedState=o.baseState=i,i={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Pc,lastRenderedState:i},o.queue=i,i=i.dispatch=uA.bind(null,an,i),[o.memoizedState,i]}function Sc(i,o,u,f){return i={tag:i,create:o,destroy:u,deps:f,next:null},o=an.updateQueue,o===null?(o={lastEffect:null,stores:null},an.updateQueue=o,o.lastEffect=i.next=i):(u=o.lastEffect,u===null?o.lastEffect=i.next=i:(f=u.next,u.next=i,i.next=f,o.lastEffect=i)),i}function Bk(){return Nr().memoizedState}function Ud(i,o,u,f){var g=Aa();an.flags|=i,g.memoizedState=Sc(1|o,u,void 0,f===void 0?null:f)}function $d(i,o,u,f){var g=Nr();f=f===void 0?null:f;var _=void 0;if(kn!==null){var C=kn.memoizedState;if(_=C.destroy,f!==null&&jm(f,C.deps)){g.memoizedState=Sc(o,u,_,f);return}}an.flags|=i,g.memoizedState=Sc(1|o,u,_,f)}function Vk(i,o){return Ud(8390656,8,i,o)}function Bm(i,o){return $d(2048,8,i,o)}function Hk(i,o){return $d(4,2,i,o)}function Wk(i,o){return $d(4,4,i,o)}function Gk(i,o){if(typeof o=="function")return i=i(),o(i),function(){o(null)};if(o!=null)return i=i(),o.current=i,function(){o.current=null}}function qk(i,o,u){return u=u!=null?u.concat([i]):null,$d(4,4,Gk.bind(null,o,i),u)}function Vm(){}function Kk(i,o){var u=Nr();o=o===void 0?null:o;var f=u.memoizedState;return f!==null&&o!==null&&jm(o,f[1])?f[0]:(u.memoizedState=[i,o],i)}function Yk(i,o){var u=Nr();o=o===void 0?null:o;var f=u.memoizedState;return f!==null&&o!==null&&jm(o,f[1])?f[0]:(i=i(),u.memoizedState=[i,o],i)}function Zk(i,o,u){return(As&21)===0?(i.baseState&&(i.baseState=!1,hr=!0),i.memoizedState=u):(sa(u,o)||(u=cd(),an.lanes|=u,Rs|=u,i.baseState=!0),o)}function lA(i,o){var u=Tt;Tt=u!==0&&4>u?u:4,i(!0);var f=Om.transition;Om.transition={};try{i(!1),o()}finally{Tt=u,Om.transition=f}}function Jk(){return Nr().memoizedState}function cA(i,o,u){var f=Ji(i);if(u={lane:f,action:u,hasEagerState:!1,eagerState:null,next:null},Xk(i))Qk(o,u);else if(u=Ak(i,o,u,f),u!==null){var g=tr();da(u,i,f,g),e1(u,o,f)}}function uA(i,o,u){var f=Ji(i),g={lane:f,action:u,hasEagerState:!1,eagerState:null,next:null};if(Xk(i))Qk(o,g);else{var _=i.alternate;if(i.lanes===0&&(_===null||_.lanes===0)&&(_=o.lastRenderedReducer,_!==null))try{var C=o.lastRenderedState,O=_(C,u);if(g.hasEagerState=!0,g.eagerState=O,sa(O,C)){var U=o.interleaved;U===null?(g.next=g,Rm(o)):(g.next=U.next,U.next=g),o.interleaved=g;return}}catch{}u=Ak(i,o,g,f),u!==null&&(g=tr(),da(u,i,f,g),e1(u,o,f))}}function Xk(i){var o=i.alternate;return i===an||o!==null&&o===an}function Qk(i,o){wc=Fd=!0;var u=i.pending;u===null?o.next=o:(o.next=u.next,u.next=o),i.pending=o}function e1(i,o,u){if((u&4194240)!==0){var f=o.lanes;f&=i.pendingLanes,u|=f,o.lanes=u,Wf(i,u)}}var Bd={readContext:Mr,useCallback:Gn,useContext:Gn,useEffect:Gn,useImperativeHandle:Gn,useInsertionEffect:Gn,useLayoutEffect:Gn,useMemo:Gn,useReducer:Gn,useRef:Gn,useState:Gn,useDebugValue:Gn,useDeferredValue:Gn,useTransition:Gn,useMutableSource:Gn,useSyncExternalStore:Gn,useId:Gn,unstable_isNewReconciler:!1},dA={readContext:Mr,useCallback:function(i,o){return Aa().memoizedState=[i,o===void 0?null:o],i},useContext:Mr,useEffect:Vk,useImperativeHandle:function(i,o,u){return u=u!=null?u.concat([i]):null,Ud(4194308,4,Gk.bind(null,o,i),u)},useLayoutEffect:function(i,o){return Ud(4194308,4,i,o)},useInsertionEffect:function(i,o){return Ud(4,2,i,o)},useMemo:function(i,o){var u=Aa();return o=o===void 0?null:o,i=i(),u.memoizedState=[i,o],i},useReducer:function(i,o,u){var f=Aa();return o=u!==void 0?u(o):o,f.memoizedState=f.baseState=o,i={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:o},f.queue=i,i=i.dispatch=cA.bind(null,an,i),[f.memoizedState,i]},useRef:function(i){var o=Aa();return i={current:i},o.memoizedState=i},useState:$k,useDebugValue:Vm,useDeferredValue:function(i){return Aa().memoizedState=i},useTransition:function(){var i=$k(!1),o=i[0];return i=lA.bind(null,i[1]),Aa().memoizedState=i,[o,i]},useMutableSource:function(){},useSyncExternalStore:function(i,o,u){var f=an,g=Aa();if(Jt){if(u===void 0)throw Error(n(407));u=u()}else{if(u=o(),An===null)throw Error(n(349));(As&30)!==0||Ok(f,o,u)}g.memoizedState=u;var _={value:u,getSnapshot:o};return g.queue=_,Vk(zk.bind(null,f,_,i),[i]),f.flags|=2048,Sc(9,jk.bind(null,f,_,u,o),void 0,null),u},useId:function(){var i=Aa(),o=An.identifierPrefix;if(Jt){var u=oi,f=si;u=(f&~(1<<32-Vn(f)-1)).toString(32)+u,o=":"+o+"R"+u,u=xc++,0<u&&(o+="H"+u.toString(32)),o+=":"}else u=oA++,o=":"+o+"r"+u.toString(32)+":";return i.memoizedState=o},unstable_isNewReconciler:!1},hA={readContext:Mr,useCallback:Kk,useContext:Mr,useEffect:Bm,useImperativeHandle:qk,useInsertionEffect:Hk,useLayoutEffect:Wk,useMemo:Yk,useReducer:Um,useRef:Bk,useState:function(){return Um(Pc)},useDebugValue:Vm,useDeferredValue:function(i){var o=Nr();return Zk(o,kn.memoizedState,i)},useTransition:function(){var i=Um(Pc)[0],o=Nr().memoizedState;return[i,o]},useMutableSource:Mk,useSyncExternalStore:Nk,useId:Jk,unstable_isNewReconciler:!1},pA={readContext:Mr,useCallback:Kk,useContext:Mr,useEffect:Bm,useImperativeHandle:qk,useInsertionEffect:Hk,useLayoutEffect:Wk,useMemo:Yk,useReducer:$m,useRef:Bk,useState:function(){return $m(Pc)},useDebugValue:Vm,useDeferredValue:function(i){var o=Nr();return kn===null?o.memoizedState=i:Zk(o,kn.memoizedState,i)},useTransition:function(){var i=$m(Pc)[0],o=Nr().memoizedState;return[i,o]},useMutableSource:Mk,useSyncExternalStore:Nk,useId:Jk,unstable_isNewReconciler:!1};function la(i,o){if(i&&i.defaultProps){o=W({},o),i=i.defaultProps;for(var u in i)o[u]===void 0&&(o[u]=i[u]);return o}return o}function Hm(i,o,u,f){o=i.memoizedState,u=u(f,o),u=u==null?o:W({},o,u),i.memoizedState=u,i.lanes===0&&(i.updateQueue.baseState=u)}var Vd={isMounted:function(i){return(i=i._reactInternals)?Se(i)===i:!1},enqueueSetState:function(i,o,u){i=i._reactInternals;var f=tr(),g=Ji(i),_=ci(f,g);_.payload=o,u!=null&&(_.callback=u),o=qi(i,_,g),o!==null&&(da(o,i,g,f),Nd(o,i,g))},enqueueReplaceState:function(i,o,u){i=i._reactInternals;var f=tr(),g=Ji(i),_=ci(f,g);_.tag=1,_.payload=o,u!=null&&(_.callback=u),o=qi(i,_,g),o!==null&&(da(o,i,g,f),Nd(o,i,g))},enqueueForceUpdate:function(i,o){i=i._reactInternals;var u=tr(),f=Ji(i),g=ci(u,f);g.tag=2,o!=null&&(g.callback=o),o=qi(i,g,f),o!==null&&(da(o,i,f,u),Nd(o,i,f))}};function t1(i,o,u,f,g,_,C){return i=i.stateNode,typeof i.shouldComponentUpdate=="function"?i.shouldComponentUpdate(f,_,C):o.prototype&&o.prototype.isPureReactComponent?!dc(u,f)||!dc(g,_):!0}function n1(i,o,u){var f=!1,g=Hi,_=o.contextType;return typeof _=="object"&&_!==null?_=Mr(_):(g=dr(o)?Ps:Wn.current,f=o.contextTypes,_=(f=f!=null)?No(i,g):Hi),o=new o(u,_),i.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,o.updater=Vd,i.stateNode=o,o._reactInternals=i,f&&(i=i.stateNode,i.__reactInternalMemoizedUnmaskedChildContext=g,i.__reactInternalMemoizedMaskedChildContext=_),o}function r1(i,o,u,f){i=o.state,typeof o.componentWillReceiveProps=="function"&&o.componentWillReceiveProps(u,f),typeof o.UNSAFE_componentWillReceiveProps=="function"&&o.UNSAFE_componentWillReceiveProps(u,f),o.state!==i&&Vd.enqueueReplaceState(o,o.state,null)}function Wm(i,o,u,f){var g=i.stateNode;g.props=u,g.state=i.memoizedState,g.refs={},Lm(i);var _=o.contextType;typeof _=="object"&&_!==null?g.context=Mr(_):(_=dr(o)?Ps:Wn.current,g.context=No(i,_)),g.state=i.memoizedState,_=o.getDerivedStateFromProps,typeof _=="function"&&(Hm(i,o,_,u),g.state=i.memoizedState),typeof o.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(o=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),o!==g.state&&Vd.enqueueReplaceState(g,g.state,null),Od(i,u,g,f),g.state=i.memoizedState),typeof g.componentDidMount=="function"&&(i.flags|=4194308)}function Vo(i,o){try{var u="",f=o;do u+=de(f),f=f.return;while(f);var g=u}catch(_){g=`
8
- Error generating stack: `+_.message+`
9
- `+_.stack}return{value:i,source:o,stack:g,digest:null}}function Gm(i,o,u){return{value:i,source:null,stack:u??null,digest:o??null}}function qm(i,o){try{console.error(o.value)}catch(u){setTimeout(function(){throw u})}}var fA=typeof WeakMap=="function"?WeakMap:Map;function a1(i,o,u){u=ci(-1,u),u.tag=3,u.payload={element:null};var f=o.value;return u.callback=function(){Zd||(Zd=!0,lg=f),qm(i,o)},u}function i1(i,o,u){u=ci(-1,u),u.tag=3;var f=i.type.getDerivedStateFromError;if(typeof f=="function"){var g=o.value;u.payload=function(){return f(g)},u.callback=function(){qm(i,o)}}var _=i.stateNode;return _!==null&&typeof _.componentDidCatch=="function"&&(u.callback=function(){qm(i,o),typeof f!="function"&&(Yi===null?Yi=new Set([this]):Yi.add(this));var C=o.stack;this.componentDidCatch(o.value,{componentStack:C!==null?C:""})}),u}function s1(i,o,u){var f=i.pingCache;if(f===null){f=i.pingCache=new fA;var g=new Set;f.set(o,g)}else g=f.get(o),g===void 0&&(g=new Set,f.set(o,g));g.has(u)||(g.add(u),i=EA.bind(null,i,o,u),o.then(i,i))}function o1(i){do{var o;if((o=i.tag===13)&&(o=i.memoizedState,o=o!==null?o.dehydrated!==null:!0),o)return i;i=i.return}while(i!==null);return null}function l1(i,o,u,f,g){return(i.mode&1)===0?(i===o?i.flags|=65536:(i.flags|=128,u.flags|=131072,u.flags&=-52805,u.tag===1&&(u.alternate===null?u.tag=17:(o=ci(-1,1),o.tag=2,qi(u,o,1))),u.lanes|=1),i):(i.flags|=65536,i.lanes=g,i)}var mA=E.ReactCurrentOwner,hr=!1;function er(i,o,u,f){o.child=i===null?Ek(o,null,u,f):Fo(o,i.child,u,f)}function c1(i,o,u,f,g){u=u.render;var _=o.ref;return $o(o,g),f=zm(i,o,u,f,_,g),u=Fm(),i!==null&&!hr?(o.updateQueue=i.updateQueue,o.flags&=-2053,i.lanes&=~g,ui(i,o,g)):(Jt&&u&&km(o),o.flags|=1,er(i,o,f,g),o.child)}function u1(i,o,u,f,g){if(i===null){var _=u.type;return typeof _=="function"&&!mg(_)&&_.defaultProps===void 0&&u.compare===null&&u.defaultProps===void 0?(o.tag=15,o.type=_,d1(i,o,_,f,g)):(i=nh(u.type,null,f,o,o.mode,g),i.ref=o.ref,i.return=o,o.child=i)}if(_=i.child,(i.lanes&g)===0){var C=_.memoizedProps;if(u=u.compare,u=u!==null?u:dc,u(C,f)&&i.ref===o.ref)return ui(i,o,g)}return o.flags|=1,i=Qi(_,f),i.ref=o.ref,i.return=o,o.child=i}function d1(i,o,u,f,g){if(i!==null){var _=i.memoizedProps;if(dc(_,f)&&i.ref===o.ref)if(hr=!1,o.pendingProps=f=_,(i.lanes&g)!==0)(i.flags&131072)!==0&&(hr=!0);else return o.lanes=i.lanes,ui(i,o,g)}return Km(i,o,u,f,g)}function h1(i,o,u){var f=o.pendingProps,g=f.children,_=i!==null?i.memoizedState:null;if(f.mode==="hidden")if((o.mode&1)===0)o.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ut(Wo,Sr),Sr|=u;else{if((u&1073741824)===0)return i=_!==null?_.baseLanes|u:u,o.lanes=o.childLanes=1073741824,o.memoizedState={baseLanes:i,cachePool:null,transitions:null},o.updateQueue=null,Ut(Wo,Sr),Sr|=i,null;o.memoizedState={baseLanes:0,cachePool:null,transitions:null},f=_!==null?_.baseLanes:u,Ut(Wo,Sr),Sr|=f}else _!==null?(f=_.baseLanes|u,o.memoizedState=null):f=u,Ut(Wo,Sr),Sr|=f;return er(i,o,g,u),o.child}function p1(i,o){var u=o.ref;(i===null&&u!==null||i!==null&&i.ref!==u)&&(o.flags|=512,o.flags|=2097152)}function Km(i,o,u,f,g){var _=dr(u)?Ps:Wn.current;return _=No(o,_),$o(o,g),u=zm(i,o,u,f,_,g),f=Fm(),i!==null&&!hr?(o.updateQueue=i.updateQueue,o.flags&=-2053,i.lanes&=~g,ui(i,o,g)):(Jt&&f&&km(o),o.flags|=1,er(i,o,u,g),o.child)}function f1(i,o,u,f,g){if(dr(u)){var _=!0;Td(o)}else _=!1;if($o(o,g),o.stateNode===null)Wd(i,o),n1(o,u,f),Wm(o,u,f,g),f=!0;else if(i===null){var C=o.stateNode,O=o.memoizedProps;C.props=O;var U=C.context,X=u.contextType;typeof X=="object"&&X!==null?X=Mr(X):(X=dr(u)?Ps:Wn.current,X=No(o,X));var ce=u.getDerivedStateFromProps,he=typeof ce=="function"||typeof C.getSnapshotBeforeUpdate=="function";he||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(O!==f||U!==X)&&r1(o,C,f,X),Gi=!1;var oe=o.memoizedState;C.state=oe,Od(o,f,C,g),U=o.memoizedState,O!==f||oe!==U||ur.current||Gi?(typeof ce=="function"&&(Hm(o,u,ce,f),U=o.memoizedState),(O=Gi||t1(o,u,O,f,oe,U,X))?(he||typeof C.UNSAFE_componentWillMount!="function"&&typeof C.componentWillMount!="function"||(typeof C.componentWillMount=="function"&&C.componentWillMount(),typeof C.UNSAFE_componentWillMount=="function"&&C.UNSAFE_componentWillMount()),typeof C.componentDidMount=="function"&&(o.flags|=4194308)):(typeof C.componentDidMount=="function"&&(o.flags|=4194308),o.memoizedProps=f,o.memoizedState=U),C.props=f,C.state=U,C.context=X,f=O):(typeof C.componentDidMount=="function"&&(o.flags|=4194308),f=!1)}else{C=o.stateNode,Rk(i,o),O=o.memoizedProps,X=o.type===o.elementType?O:la(o.type,O),C.props=X,he=o.pendingProps,oe=C.context,U=u.contextType,typeof U=="object"&&U!==null?U=Mr(U):(U=dr(u)?Ps:Wn.current,U=No(o,U));var Ce=u.getDerivedStateFromProps;(ce=typeof Ce=="function"||typeof C.getSnapshotBeforeUpdate=="function")||typeof C.UNSAFE_componentWillReceiveProps!="function"&&typeof C.componentWillReceiveProps!="function"||(O!==he||oe!==U)&&r1(o,C,f,U),Gi=!1,oe=o.memoizedState,C.state=oe,Od(o,f,C,g);var Ie=o.memoizedState;O!==he||oe!==Ie||ur.current||Gi?(typeof Ce=="function"&&(Hm(o,u,Ce,f),Ie=o.memoizedState),(X=Gi||t1(o,u,X,f,oe,Ie,U)||!1)?(ce||typeof C.UNSAFE_componentWillUpdate!="function"&&typeof C.componentWillUpdate!="function"||(typeof C.componentWillUpdate=="function"&&C.componentWillUpdate(f,Ie,U),typeof C.UNSAFE_componentWillUpdate=="function"&&C.UNSAFE_componentWillUpdate(f,Ie,U)),typeof C.componentDidUpdate=="function"&&(o.flags|=4),typeof C.getSnapshotBeforeUpdate=="function"&&(o.flags|=1024)):(typeof C.componentDidUpdate!="function"||O===i.memoizedProps&&oe===i.memoizedState||(o.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||O===i.memoizedProps&&oe===i.memoizedState||(o.flags|=1024),o.memoizedProps=f,o.memoizedState=Ie),C.props=f,C.state=Ie,C.context=U,f=X):(typeof C.componentDidUpdate!="function"||O===i.memoizedProps&&oe===i.memoizedState||(o.flags|=4),typeof C.getSnapshotBeforeUpdate!="function"||O===i.memoizedProps&&oe===i.memoizedState||(o.flags|=1024),f=!1)}return Ym(i,o,u,f,_,g)}function Ym(i,o,u,f,g,_){p1(i,o);var C=(o.flags&128)!==0;if(!f&&!C)return g&&yk(o,u,!1),ui(i,o,_);f=o.stateNode,mA.current=o;var O=C&&typeof u.getDerivedStateFromError!="function"?null:f.render();return o.flags|=1,i!==null&&C?(o.child=Fo(o,i.child,null,_),o.child=Fo(o,null,O,_)):er(i,o,O,_),o.memoizedState=f.state,g&&yk(o,u,!0),o.child}function m1(i){var o=i.stateNode;o.pendingContext?vk(i,o.pendingContext,o.pendingContext!==o.context):o.context&&vk(i,o.context,!1),Im(i,o.containerInfo)}function g1(i,o,u,f,g){return zo(),Sm(g),o.flags|=256,er(i,o,u,f),o.child}var Zm={dehydrated:null,treeContext:null,retryLane:0};function Jm(i){return{baseLanes:i,cachePool:null,transitions:null}}function v1(i,o,u){var f=o.pendingProps,g=rn.current,_=!1,C=(o.flags&128)!==0,O;if((O=C)||(O=i!==null&&i.memoizedState===null?!1:(g&2)!==0),O?(_=!0,o.flags&=-129):(i===null||i.memoizedState!==null)&&(g|=1),Ut(rn,g&1),i===null)return Pm(o),i=o.memoizedState,i!==null&&(i=i.dehydrated,i!==null)?((o.mode&1)===0?o.lanes=1:i.data==="$!"?o.lanes=8:o.lanes=1073741824,null):(C=f.children,i=f.fallback,_?(f=o.mode,_=o.child,C={mode:"hidden",children:C},(f&1)===0&&_!==null?(_.childLanes=0,_.pendingProps=C):_=rh(C,f,0,null),i=Ms(i,f,u,null),_.return=o,i.return=o,_.sibling=i,o.child=_,o.child.memoizedState=Jm(u),o.memoizedState=Zm,i):Xm(o,C));if(g=i.memoizedState,g!==null&&(O=g.dehydrated,O!==null))return gA(i,o,C,f,O,g,u);if(_){_=f.fallback,C=o.mode,g=i.child,O=g.sibling;var U={mode:"hidden",children:f.children};return(C&1)===0&&o.child!==g?(f=o.child,f.childLanes=0,f.pendingProps=U,o.deletions=null):(f=Qi(g,U),f.subtreeFlags=g.subtreeFlags&14680064),O!==null?_=Qi(O,_):(_=Ms(_,C,u,null),_.flags|=2),_.return=o,f.return=o,f.sibling=_,o.child=f,f=_,_=o.child,C=i.child.memoizedState,C=C===null?Jm(u):{baseLanes:C.baseLanes|u,cachePool:null,transitions:C.transitions},_.memoizedState=C,_.childLanes=i.childLanes&~u,o.memoizedState=Zm,f}return _=i.child,i=_.sibling,f=Qi(_,{mode:"visible",children:f.children}),(o.mode&1)===0&&(f.lanes=u),f.return=o,f.sibling=null,i!==null&&(u=o.deletions,u===null?(o.deletions=[i],o.flags|=16):u.push(i)),o.child=f,o.memoizedState=null,f}function Xm(i,o){return o=rh({mode:"visible",children:o},i.mode,0,null),o.return=i,i.child=o}function Hd(i,o,u,f){return f!==null&&Sm(f),Fo(o,i.child,null,u),i=Xm(o,o.pendingProps.children),i.flags|=2,o.memoizedState=null,i}function gA(i,o,u,f,g,_,C){if(u)return o.flags&256?(o.flags&=-257,f=Gm(Error(n(422))),Hd(i,o,C,f)):o.memoizedState!==null?(o.child=i.child,o.flags|=128,null):(_=f.fallback,g=o.mode,f=rh({mode:"visible",children:f.children},g,0,null),_=Ms(_,g,C,null),_.flags|=2,f.return=o,_.return=o,f.sibling=_,o.child=f,(o.mode&1)!==0&&Fo(o,i.child,null,C),o.child.memoizedState=Jm(C),o.memoizedState=Zm,_);if((o.mode&1)===0)return Hd(i,o,C,null);if(g.data==="$!"){if(f=g.nextSibling&&g.nextSibling.dataset,f)var O=f.dgst;return f=O,_=Error(n(419)),f=Gm(_,f,void 0),Hd(i,o,C,f)}if(O=(C&i.childLanes)!==0,hr||O){if(f=An,f!==null){switch(C&-C){case 4:g=2;break;case 16:g=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:g=32;break;case 536870912:g=268435456;break;default:g=0}g=(g&(f.suspendedLanes|C))!==0?0:g,g!==0&&g!==_.retryLane&&(_.retryLane=g,li(i,g),da(f,i,g,-1))}return fg(),f=Gm(Error(n(421))),Hd(i,o,C,f)}return g.data==="$?"?(o.flags|=128,o.child=i.child,o=AA.bind(null,i),g._reactRetry=o,null):(i=_.treeContext,Pr=Bi(g.nextSibling),xr=o,Jt=!0,oa=null,i!==null&&(Ir[Dr++]=si,Ir[Dr++]=oi,Ir[Dr++]=Ss,si=i.id,oi=i.overflow,Ss=o),o=Xm(o,f.children),o.flags|=4096,o)}function _1(i,o,u){i.lanes|=o;var f=i.alternate;f!==null&&(f.lanes|=o),Am(i.return,o,u)}function Qm(i,o,u,f,g){var _=i.memoizedState;_===null?i.memoizedState={isBackwards:o,rendering:null,renderingStartTime:0,last:f,tail:u,tailMode:g}:(_.isBackwards=o,_.rendering=null,_.renderingStartTime=0,_.last=f,_.tail=u,_.tailMode=g)}function y1(i,o,u){var f=o.pendingProps,g=f.revealOrder,_=f.tail;if(er(i,o,f.children,u),f=rn.current,(f&2)!==0)f=f&1|2,o.flags|=128;else{if(i!==null&&(i.flags&128)!==0)e:for(i=o.child;i!==null;){if(i.tag===13)i.memoizedState!==null&&_1(i,u,o);else if(i.tag===19)_1(i,u,o);else if(i.child!==null){i.child.return=i,i=i.child;continue}if(i===o)break e;for(;i.sibling===null;){if(i.return===null||i.return===o)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}f&=1}if(Ut(rn,f),(o.mode&1)===0)o.memoizedState=null;else switch(g){case"forwards":for(u=o.child,g=null;u!==null;)i=u.alternate,i!==null&&jd(i)===null&&(g=u),u=u.sibling;u=g,u===null?(g=o.child,o.child=null):(g=u.sibling,u.sibling=null),Qm(o,!1,g,u,_);break;case"backwards":for(u=null,g=o.child,o.child=null;g!==null;){if(i=g.alternate,i!==null&&jd(i)===null){o.child=g;break}i=g.sibling,g.sibling=u,u=g,g=i}Qm(o,!0,u,null,_);break;case"together":Qm(o,!1,null,null,void 0);break;default:o.memoizedState=null}return o.child}function Wd(i,o){(o.mode&1)===0&&i!==null&&(i.alternate=null,o.alternate=null,o.flags|=2)}function ui(i,o,u){if(i!==null&&(o.dependencies=i.dependencies),Rs|=o.lanes,(u&o.childLanes)===0)return null;if(i!==null&&o.child!==i.child)throw Error(n(153));if(o.child!==null){for(i=o.child,u=Qi(i,i.pendingProps),o.child=u,u.return=o;i.sibling!==null;)i=i.sibling,u=u.sibling=Qi(i,i.pendingProps),u.return=o;u.sibling=null}return o.child}function vA(i,o,u){switch(o.tag){case 3:m1(o),zo();break;case 5:Dk(o);break;case 1:dr(o.type)&&Td(o);break;case 4:Im(o,o.stateNode.containerInfo);break;case 10:var f=o.type._context,g=o.memoizedProps.value;Ut(Dd,f._currentValue),f._currentValue=g;break;case 13:if(f=o.memoizedState,f!==null)return f.dehydrated!==null?(Ut(rn,rn.current&1),o.flags|=128,null):(u&o.child.childLanes)!==0?v1(i,o,u):(Ut(rn,rn.current&1),i=ui(i,o,u),i!==null?i.sibling:null);Ut(rn,rn.current&1);break;case 19:if(f=(u&o.childLanes)!==0,(i.flags&128)!==0){if(f)return y1(i,o,u);o.flags|=128}if(g=o.memoizedState,g!==null&&(g.rendering=null,g.tail=null,g.lastEffect=null),Ut(rn,rn.current),f)break;return null;case 22:case 23:return o.lanes=0,h1(i,o,u)}return ui(i,o,u)}var b1,eg,k1,w1;b1=function(i,o){for(var u=o.child;u!==null;){if(u.tag===5||u.tag===6)i.appendChild(u.stateNode);else if(u.tag!==4&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===o)break;for(;u.sibling===null;){if(u.return===null||u.return===o)return;u=u.return}u.sibling.return=u.return,u=u.sibling}},eg=function(){},k1=function(i,o,u,f){var g=i.memoizedProps;if(g!==f){i=o.stateNode,Es(Ea.current);var _=null;switch(u){case"input":g=Zt(i,g),f=Zt(i,f),_=[];break;case"select":g=W({},g,{value:void 0}),f=W({},f,{value:void 0}),_=[];break;case"textarea":g=Dn(i,g),f=Dn(i,f),_=[];break;default:typeof g.onClick!="function"&&typeof f.onClick=="function"&&(i.onclick=Pd)}Pa(u,f);var C;u=null;for(X in g)if(!f.hasOwnProperty(X)&&g.hasOwnProperty(X)&&g[X]!=null)if(X==="style"){var O=g[X];for(C in O)O.hasOwnProperty(C)&&(u||(u={}),u[C]="")}else X!=="dangerouslySetInnerHTML"&&X!=="children"&&X!=="suppressContentEditableWarning"&&X!=="suppressHydrationWarning"&&X!=="autoFocus"&&(a.hasOwnProperty(X)?_||(_=[]):(_=_||[]).push(X,null));for(X in f){var U=f[X];if(O=g?.[X],f.hasOwnProperty(X)&&U!==O&&(U!=null||O!=null))if(X==="style")if(O){for(C in O)!O.hasOwnProperty(C)||U&&U.hasOwnProperty(C)||(u||(u={}),u[C]="");for(C in U)U.hasOwnProperty(C)&&O[C]!==U[C]&&(u||(u={}),u[C]=U[C])}else u||(_||(_=[]),_.push(X,u)),u=U;else X==="dangerouslySetInnerHTML"?(U=U?U.__html:void 0,O=O?O.__html:void 0,U!=null&&O!==U&&(_=_||[]).push(X,U)):X==="children"?typeof U!="string"&&typeof U!="number"||(_=_||[]).push(X,""+U):X!=="suppressContentEditableWarning"&&X!=="suppressHydrationWarning"&&(a.hasOwnProperty(X)?(U!=null&&X==="onScroll"&&Wt("scroll",i),_||O===U||(_=[])):(_=_||[]).push(X,U))}u&&(_=_||[]).push("style",u);var X=_;(o.updateQueue=X)&&(o.flags|=4)}},w1=function(i,o,u,f){u!==f&&(o.flags|=4)};function Cc(i,o){if(!Jt)switch(i.tailMode){case"hidden":o=i.tail;for(var u=null;o!==null;)o.alternate!==null&&(u=o),o=o.sibling;u===null?i.tail=null:u.sibling=null;break;case"collapsed":u=i.tail;for(var f=null;u!==null;)u.alternate!==null&&(f=u),u=u.sibling;f===null?o||i.tail===null?i.tail=null:i.tail.sibling=null:f.sibling=null}}function qn(i){var o=i.alternate!==null&&i.alternate.child===i.child,u=0,f=0;if(o)for(var g=i.child;g!==null;)u|=g.lanes|g.childLanes,f|=g.subtreeFlags&14680064,f|=g.flags&14680064,g.return=i,g=g.sibling;else for(g=i.child;g!==null;)u|=g.lanes|g.childLanes,f|=g.subtreeFlags,f|=g.flags,g.return=i,g=g.sibling;return i.subtreeFlags|=f,i.childLanes=u,o}function _A(i,o,u){var f=o.pendingProps;switch(wm(o),o.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return qn(o),null;case 1:return dr(o.type)&&Cd(),qn(o),null;case 3:return f=o.stateNode,Bo(),Gt(ur),Gt(Wn),Nm(),f.pendingContext&&(f.context=f.pendingContext,f.pendingContext=null),(i===null||i.child===null)&&(Ld(o)?o.flags|=4:i===null||i.memoizedState.isDehydrated&&(o.flags&256)===0||(o.flags|=1024,oa!==null&&(dg(oa),oa=null))),eg(i,o),qn(o),null;case 5:Dm(o);var g=Es(kc.current);if(u=o.type,i!==null&&o.stateNode!=null)k1(i,o,u,f,g),i.ref!==o.ref&&(o.flags|=512,o.flags|=2097152);else{if(!f){if(o.stateNode===null)throw Error(n(166));return qn(o),null}if(i=Es(Ea.current),Ld(o)){f=o.stateNode,u=o.type;var _=o.memoizedProps;switch(f[Ta]=o,f[gc]=_,i=(o.mode&1)!==0,u){case"dialog":Wt("cancel",f),Wt("close",f);break;case"iframe":case"object":case"embed":Wt("load",f);break;case"video":case"audio":for(g=0;g<pc.length;g++)Wt(pc[g],f);break;case"source":Wt("error",f);break;case"img":case"image":case"link":Wt("error",f),Wt("load",f);break;case"details":Wt("toggle",f);break;case"input":ta(f,_),Wt("invalid",f);break;case"select":f._wrapperState={wasMultiple:!!_.multiple},Wt("invalid",f);break;case"textarea":xa(f,_),Wt("invalid",f)}Pa(u,_),g=null;for(var C in _)if(_.hasOwnProperty(C)){var O=_[C];C==="children"?typeof O=="string"?f.textContent!==O&&(_.suppressHydrationWarning!==!0&&xd(f.textContent,O,i),g=["children",O]):typeof O=="number"&&f.textContent!==""+O&&(_.suppressHydrationWarning!==!0&&xd(f.textContent,O,i),g=["children",""+O]):a.hasOwnProperty(C)&&O!=null&&C==="onScroll"&&Wt("scroll",f)}switch(u){case"input":un(f),Qe(f,_,!0);break;case"textarea":un(f),et(f);break;case"select":case"option":break;default:typeof _.onClick=="function"&&(f.onclick=Pd)}f=g,o.updateQueue=f,f!==null&&(o.flags|=4)}else{C=g.nodeType===9?g:g.ownerDocument,i==="http://www.w3.org/1999/xhtml"&&(i=kt(u)),i==="http://www.w3.org/1999/xhtml"?u==="script"?(i=C.createElement("div"),i.innerHTML="<script><\/script>",i=i.removeChild(i.firstChild)):typeof f.is=="string"?i=C.createElement(u,{is:f.is}):(i=C.createElement(u),u==="select"&&(C=i,f.multiple?C.multiple=!0:f.size&&(C.size=f.size))):i=C.createElementNS(i,u),i[Ta]=o,i[gc]=f,b1(i,o,!1,!1),o.stateNode=i;e:{switch(C=Sa(u,f),u){case"dialog":Wt("cancel",i),Wt("close",i),g=f;break;case"iframe":case"object":case"embed":Wt("load",i),g=f;break;case"video":case"audio":for(g=0;g<pc.length;g++)Wt(pc[g],i);g=f;break;case"source":Wt("error",i),g=f;break;case"img":case"image":case"link":Wt("error",i),Wt("load",i),g=f;break;case"details":Wt("toggle",i),g=f;break;case"input":ta(i,f),g=Zt(i,f),Wt("invalid",i);break;case"option":g=f;break;case"select":i._wrapperState={wasMultiple:!!f.multiple},g=W({},f,{value:void 0}),Wt("invalid",i);break;case"textarea":xa(i,f),g=Dn(i,f),Wt("invalid",i);break;default:g=f}Pa(u,g),O=g;for(_ in O)if(O.hasOwnProperty(_)){var U=O[_];_==="style"?ei(i,U):_==="dangerouslySetInnerHTML"?(U=U?U.__html:void 0,U!=null&&At(i,U)):_==="children"?typeof U=="string"?(u!=="textarea"||U!=="")&&xt(i,U):typeof U=="number"&&xt(i,""+U):_!=="suppressContentEditableWarning"&&_!=="suppressHydrationWarning"&&_!=="autoFocus"&&(a.hasOwnProperty(_)?U!=null&&_==="onScroll"&&Wt("scroll",i):U!=null&&T(i,_,U,C))}switch(u){case"input":un(i),Qe(i,f,!1);break;case"textarea":un(i),et(i);break;case"option":f.value!=null&&i.setAttribute("value",""+$e(f.value));break;case"select":i.multiple=!!f.multiple,_=f.value,_!=null?Et(i,!!f.multiple,_,!1):f.defaultValue!=null&&Et(i,!!f.multiple,f.defaultValue,!0);break;default:typeof g.onClick=="function"&&(i.onclick=Pd)}switch(u){case"button":case"input":case"select":case"textarea":f=!!f.autoFocus;break e;case"img":f=!0;break e;default:f=!1}}f&&(o.flags|=4)}o.ref!==null&&(o.flags|=512,o.flags|=2097152)}return qn(o),null;case 6:if(i&&o.stateNode!=null)w1(i,o,i.memoizedProps,f);else{if(typeof f!="string"&&o.stateNode===null)throw Error(n(166));if(u=Es(kc.current),Es(Ea.current),Ld(o)){if(f=o.stateNode,u=o.memoizedProps,f[Ta]=o,(_=f.nodeValue!==u)&&(i=xr,i!==null))switch(i.tag){case 3:xd(f.nodeValue,u,(i.mode&1)!==0);break;case 5:i.memoizedProps.suppressHydrationWarning!==!0&&xd(f.nodeValue,u,(i.mode&1)!==0)}_&&(o.flags|=4)}else f=(u.nodeType===9?u:u.ownerDocument).createTextNode(f),f[Ta]=o,o.stateNode=f}return qn(o),null;case 13:if(Gt(rn),f=o.memoizedState,i===null||i.memoizedState!==null&&i.memoizedState.dehydrated!==null){if(Jt&&Pr!==null&&(o.mode&1)!==0&&(o.flags&128)===0)Sk(),zo(),o.flags|=98560,_=!1;else if(_=Ld(o),f!==null&&f.dehydrated!==null){if(i===null){if(!_)throw Error(n(318));if(_=o.memoizedState,_=_!==null?_.dehydrated:null,!_)throw Error(n(317));_[Ta]=o}else zo(),(o.flags&128)===0&&(o.memoizedState=null),o.flags|=4;qn(o),_=!1}else oa!==null&&(dg(oa),oa=null),_=!0;if(!_)return o.flags&65536?o:null}return(o.flags&128)!==0?(o.lanes=u,o):(f=f!==null,f!==(i!==null&&i.memoizedState!==null)&&f&&(o.child.flags|=8192,(o.mode&1)!==0&&(i===null||(rn.current&1)!==0?wn===0&&(wn=3):fg())),o.updateQueue!==null&&(o.flags|=4),qn(o),null);case 4:return Bo(),eg(i,o),i===null&&fc(o.stateNode.containerInfo),qn(o),null;case 10:return Em(o.type._context),qn(o),null;case 17:return dr(o.type)&&Cd(),qn(o),null;case 19:if(Gt(rn),_=o.memoizedState,_===null)return qn(o),null;if(f=(o.flags&128)!==0,C=_.rendering,C===null)if(f)Cc(_,!1);else{if(wn!==0||i!==null&&(i.flags&128)!==0)for(i=o.child;i!==null;){if(C=jd(i),C!==null){for(o.flags|=128,Cc(_,!1),f=C.updateQueue,f!==null&&(o.updateQueue=f,o.flags|=4),o.subtreeFlags=0,f=u,u=o.child;u!==null;)_=u,i=f,_.flags&=14680066,C=_.alternate,C===null?(_.childLanes=0,_.lanes=i,_.child=null,_.subtreeFlags=0,_.memoizedProps=null,_.memoizedState=null,_.updateQueue=null,_.dependencies=null,_.stateNode=null):(_.childLanes=C.childLanes,_.lanes=C.lanes,_.child=C.child,_.subtreeFlags=0,_.deletions=null,_.memoizedProps=C.memoizedProps,_.memoizedState=C.memoizedState,_.updateQueue=C.updateQueue,_.type=C.type,i=C.dependencies,_.dependencies=i===null?null:{lanes:i.lanes,firstContext:i.firstContext}),u=u.sibling;return Ut(rn,rn.current&1|2),o.child}i=i.sibling}_.tail!==null&&ht()>Go&&(o.flags|=128,f=!0,Cc(_,!1),o.lanes=4194304)}else{if(!f)if(i=jd(C),i!==null){if(o.flags|=128,f=!0,u=i.updateQueue,u!==null&&(o.updateQueue=u,o.flags|=4),Cc(_,!0),_.tail===null&&_.tailMode==="hidden"&&!C.alternate&&!Jt)return qn(o),null}else 2*ht()-_.renderingStartTime>Go&&u!==1073741824&&(o.flags|=128,f=!0,Cc(_,!1),o.lanes=4194304);_.isBackwards?(C.sibling=o.child,o.child=C):(u=_.last,u!==null?u.sibling=C:o.child=C,_.last=C)}return _.tail!==null?(o=_.tail,_.rendering=o,_.tail=o.sibling,_.renderingStartTime=ht(),o.sibling=null,u=rn.current,Ut(rn,f?u&1|2:u&1),o):(qn(o),null);case 22:case 23:return pg(),f=o.memoizedState!==null,i!==null&&i.memoizedState!==null!==f&&(o.flags|=8192),f&&(o.mode&1)!==0?(Sr&1073741824)!==0&&(qn(o),o.subtreeFlags&6&&(o.flags|=8192)):qn(o),null;case 24:return null;case 25:return null}throw Error(n(156,o.tag))}function yA(i,o){switch(wm(o),o.tag){case 1:return dr(o.type)&&Cd(),i=o.flags,i&65536?(o.flags=i&-65537|128,o):null;case 3:return Bo(),Gt(ur),Gt(Wn),Nm(),i=o.flags,(i&65536)!==0&&(i&128)===0?(o.flags=i&-65537|128,o):null;case 5:return Dm(o),null;case 13:if(Gt(rn),i=o.memoizedState,i!==null&&i.dehydrated!==null){if(o.alternate===null)throw Error(n(340));zo()}return i=o.flags,i&65536?(o.flags=i&-65537|128,o):null;case 19:return Gt(rn),null;case 4:return Bo(),null;case 10:return Em(o.type._context),null;case 22:case 23:return pg(),null;case 24:return null;default:return null}}var Gd=!1,Kn=!1,bA=typeof WeakSet=="function"?WeakSet:Set,Ee=null;function Ho(i,o){var u=i.ref;if(u!==null)if(typeof u=="function")try{u(null)}catch(f){sn(i,o,f)}else u.current=null}function tg(i,o,u){try{u()}catch(f){sn(i,o,f)}}var x1=!1;function kA(i,o){if(pm=hd,i=tk(),im(i)){if("selectionStart"in i)var u={start:i.selectionStart,end:i.selectionEnd};else e:{u=(u=i.ownerDocument)&&u.defaultView||window;var f=u.getSelection&&u.getSelection();if(f&&f.rangeCount!==0){u=f.anchorNode;var g=f.anchorOffset,_=f.focusNode;f=f.focusOffset;try{u.nodeType,_.nodeType}catch{u=null;break e}var C=0,O=-1,U=-1,X=0,ce=0,he=i,oe=null;t:for(;;){for(var Ce;he!==u||g!==0&&he.nodeType!==3||(O=C+g),he!==_||f!==0&&he.nodeType!==3||(U=C+f),he.nodeType===3&&(C+=he.nodeValue.length),(Ce=he.firstChild)!==null;)oe=he,he=Ce;for(;;){if(he===i)break t;if(oe===u&&++X===g&&(O=C),oe===_&&++ce===f&&(U=C),(Ce=he.nextSibling)!==null)break;he=oe,oe=he.parentNode}he=Ce}u=O===-1||U===-1?null:{start:O,end:U}}else u=null}u=u||{start:0,end:0}}else u=null;for(fm={focusedElem:i,selectionRange:u},hd=!1,Ee=o;Ee!==null;)if(o=Ee,i=o.child,(o.subtreeFlags&1028)!==0&&i!==null)i.return=o,Ee=i;else for(;Ee!==null;){o=Ee;try{var Ie=o.alternate;if((o.flags&1024)!==0)switch(o.tag){case 0:case 11:case 15:break;case 1:if(Ie!==null){var Me=Ie.memoizedProps,hn=Ie.memoizedState,G=o.stateNode,V=G.getSnapshotBeforeUpdate(o.elementType===o.type?Me:la(o.type,Me),hn);G.__reactInternalSnapshotBeforeUpdate=V}break;case 3:var Y=o.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(ve){sn(o,o.return,ve)}if(i=o.sibling,i!==null){i.return=o.return,Ee=i;break}Ee=o.return}return Ie=x1,x1=!1,Ie}function Tc(i,o,u){var f=o.updateQueue;if(f=f!==null?f.lastEffect:null,f!==null){var g=f=f.next;do{if((g.tag&i)===i){var _=g.destroy;g.destroy=void 0,_!==void 0&&tg(o,u,_)}g=g.next}while(g!==f)}}function qd(i,o){if(o=o.updateQueue,o=o!==null?o.lastEffect:null,o!==null){var u=o=o.next;do{if((u.tag&i)===i){var f=u.create;u.destroy=f()}u=u.next}while(u!==o)}}function ng(i){var o=i.ref;if(o!==null){var u=i.stateNode;i.tag,i=u,typeof o=="function"?o(i):o.current=i}}function P1(i){var o=i.alternate;o!==null&&(i.alternate=null,P1(o)),i.child=null,i.deletions=null,i.sibling=null,i.tag===5&&(o=i.stateNode,o!==null&&(delete o[Ta],delete o[gc],delete o[_m],delete o[rA],delete o[aA])),i.stateNode=null,i.return=null,i.dependencies=null,i.memoizedProps=null,i.memoizedState=null,i.pendingProps=null,i.stateNode=null,i.updateQueue=null}function S1(i){return i.tag===5||i.tag===3||i.tag===4}function C1(i){e:for(;;){for(;i.sibling===null;){if(i.return===null||S1(i.return))return null;i=i.return}for(i.sibling.return=i.return,i=i.sibling;i.tag!==5&&i.tag!==6&&i.tag!==18;){if(i.flags&2||i.child===null||i.tag===4)continue e;i.child.return=i,i=i.child}if(!(i.flags&2))return i.stateNode}}function rg(i,o,u){var f=i.tag;if(f===5||f===6)i=i.stateNode,o?u.nodeType===8?u.parentNode.insertBefore(i,o):u.insertBefore(i,o):(u.nodeType===8?(o=u.parentNode,o.insertBefore(i,u)):(o=u,o.appendChild(i)),u=u._reactRootContainer,u!=null||o.onclick!==null||(o.onclick=Pd));else if(f!==4&&(i=i.child,i!==null))for(rg(i,o,u),i=i.sibling;i!==null;)rg(i,o,u),i=i.sibling}function ag(i,o,u){var f=i.tag;if(f===5||f===6)i=i.stateNode,o?u.insertBefore(i,o):u.appendChild(i);else if(f!==4&&(i=i.child,i!==null))for(ag(i,o,u),i=i.sibling;i!==null;)ag(i,o,u),i=i.sibling}var Mn=null,ca=!1;function Ki(i,o,u){for(u=u.child;u!==null;)T1(i,o,u),u=u.sibling}function T1(i,o,u){if(bn&&typeof bn.onCommitFiberUnmount=="function")try{bn.onCommitFiberUnmount(Di,u)}catch{}switch(u.tag){case 5:Kn||Ho(u,o);case 6:var f=Mn,g=ca;Mn=null,Ki(i,o,u),Mn=f,ca=g,Mn!==null&&(ca?(i=Mn,u=u.stateNode,i.nodeType===8?i.parentNode.removeChild(u):i.removeChild(u)):Mn.removeChild(u.stateNode));break;case 18:Mn!==null&&(ca?(i=Mn,u=u.stateNode,i.nodeType===8?vm(i.parentNode,u):i.nodeType===1&&vm(i,u),ic(i)):vm(Mn,u.stateNode));break;case 4:f=Mn,g=ca,Mn=u.stateNode.containerInfo,ca=!0,Ki(i,o,u),Mn=f,ca=g;break;case 0:case 11:case 14:case 15:if(!Kn&&(f=u.updateQueue,f!==null&&(f=f.lastEffect,f!==null))){g=f=f.next;do{var _=g,C=_.destroy;_=_.tag,C!==void 0&&((_&2)!==0||(_&4)!==0)&&tg(u,o,C),g=g.next}while(g!==f)}Ki(i,o,u);break;case 1:if(!Kn&&(Ho(u,o),f=u.stateNode,typeof f.componentWillUnmount=="function"))try{f.props=u.memoizedProps,f.state=u.memoizedState,f.componentWillUnmount()}catch(O){sn(u,o,O)}Ki(i,o,u);break;case 21:Ki(i,o,u);break;case 22:u.mode&1?(Kn=(f=Kn)||u.memoizedState!==null,Ki(i,o,u),Kn=f):Ki(i,o,u);break;default:Ki(i,o,u)}}function E1(i){var o=i.updateQueue;if(o!==null){i.updateQueue=null;var u=i.stateNode;u===null&&(u=i.stateNode=new bA),o.forEach(function(f){var g=RA.bind(null,i,f);u.has(f)||(u.add(f),f.then(g,g))})}}function ua(i,o){var u=o.deletions;if(u!==null)for(var f=0;f<u.length;f++){var g=u[f];try{var _=i,C=o,O=C;e:for(;O!==null;){switch(O.tag){case 5:Mn=O.stateNode,ca=!1;break e;case 3:Mn=O.stateNode.containerInfo,ca=!0;break e;case 4:Mn=O.stateNode.containerInfo,ca=!0;break e}O=O.return}if(Mn===null)throw Error(n(160));T1(_,C,g),Mn=null,ca=!1;var U=g.alternate;U!==null&&(U.return=null),g.return=null}catch(X){sn(g,o,X)}}if(o.subtreeFlags&12854)for(o=o.child;o!==null;)A1(o,i),o=o.sibling}function A1(i,o){var u=i.alternate,f=i.flags;switch(i.tag){case 0:case 11:case 14:case 15:if(ua(o,i),Ra(i),f&4){try{Tc(3,i,i.return),qd(3,i)}catch(Me){sn(i,i.return,Me)}try{Tc(5,i,i.return)}catch(Me){sn(i,i.return,Me)}}break;case 1:ua(o,i),Ra(i),f&512&&u!==null&&Ho(u,u.return);break;case 5:if(ua(o,i),Ra(i),f&512&&u!==null&&Ho(u,u.return),i.flags&32){var g=i.stateNode;try{xt(g,"")}catch(Me){sn(i,i.return,Me)}}if(f&4&&(g=i.stateNode,g!=null)){var _=i.memoizedProps,C=u!==null?u.memoizedProps:_,O=i.type,U=i.updateQueue;if(i.updateQueue=null,U!==null)try{O==="input"&&_.type==="radio"&&_.name!=null&&In(g,_),Sa(O,C);var X=Sa(O,_);for(C=0;C<U.length;C+=2){var ce=U[C],he=U[C+1];ce==="style"?ei(g,he):ce==="dangerouslySetInnerHTML"?At(g,he):ce==="children"?xt(g,he):T(g,ce,he,X)}switch(O){case"input":Vt(g,_);break;case"textarea":tt(g,_);break;case"select":var oe=g._wrapperState.wasMultiple;g._wrapperState.wasMultiple=!!_.multiple;var Ce=_.value;Ce!=null?Et(g,!!_.multiple,Ce,!1):oe!==!!_.multiple&&(_.defaultValue!=null?Et(g,!!_.multiple,_.defaultValue,!0):Et(g,!!_.multiple,_.multiple?[]:"",!1))}g[gc]=_}catch(Me){sn(i,i.return,Me)}}break;case 6:if(ua(o,i),Ra(i),f&4){if(i.stateNode===null)throw Error(n(162));g=i.stateNode,_=i.memoizedProps;try{g.nodeValue=_}catch(Me){sn(i,i.return,Me)}}break;case 3:if(ua(o,i),Ra(i),f&4&&u!==null&&u.memoizedState.isDehydrated)try{ic(o.containerInfo)}catch(Me){sn(i,i.return,Me)}break;case 4:ua(o,i),Ra(i);break;case 13:ua(o,i),Ra(i),g=i.child,g.flags&8192&&(_=g.memoizedState!==null,g.stateNode.isHidden=_,!_||g.alternate!==null&&g.alternate.memoizedState!==null||(og=ht())),f&4&&E1(i);break;case 22:if(ce=u!==null&&u.memoizedState!==null,i.mode&1?(Kn=(X=Kn)||ce,ua(o,i),Kn=X):ua(o,i),Ra(i),f&8192){if(X=i.memoizedState!==null,(i.stateNode.isHidden=X)&&!ce&&(i.mode&1)!==0)for(Ee=i,ce=i.child;ce!==null;){for(he=Ee=ce;Ee!==null;){switch(oe=Ee,Ce=oe.child,oe.tag){case 0:case 11:case 14:case 15:Tc(4,oe,oe.return);break;case 1:Ho(oe,oe.return);var Ie=oe.stateNode;if(typeof Ie.componentWillUnmount=="function"){f=oe,u=oe.return;try{o=f,Ie.props=o.memoizedProps,Ie.state=o.memoizedState,Ie.componentWillUnmount()}catch(Me){sn(f,u,Me)}}break;case 5:Ho(oe,oe.return);break;case 22:if(oe.memoizedState!==null){I1(he);continue}}Ce!==null?(Ce.return=oe,Ee=Ce):I1(he)}ce=ce.sibling}e:for(ce=null,he=i;;){if(he.tag===5){if(ce===null){ce=he;try{g=he.stateNode,X?(_=g.style,typeof _.setProperty=="function"?_.setProperty("display","none","important"):_.display="none"):(O=he.stateNode,U=he.memoizedProps.style,C=U!=null&&U.hasOwnProperty("display")?U.display:null,O.style.display=Tn("display",C))}catch(Me){sn(i,i.return,Me)}}}else if(he.tag===6){if(ce===null)try{he.stateNode.nodeValue=X?"":he.memoizedProps}catch(Me){sn(i,i.return,Me)}}else if((he.tag!==22&&he.tag!==23||he.memoizedState===null||he===i)&&he.child!==null){he.child.return=he,he=he.child;continue}if(he===i)break e;for(;he.sibling===null;){if(he.return===null||he.return===i)break e;ce===he&&(ce=null),he=he.return}ce===he&&(ce=null),he.sibling.return=he.return,he=he.sibling}}break;case 19:ua(o,i),Ra(i),f&4&&E1(i);break;case 21:break;default:ua(o,i),Ra(i)}}function Ra(i){var o=i.flags;if(o&2){try{e:{for(var u=i.return;u!==null;){if(S1(u)){var f=u;break e}u=u.return}throw Error(n(160))}switch(f.tag){case 5:var g=f.stateNode;f.flags&32&&(xt(g,""),f.flags&=-33);var _=C1(i);ag(i,_,g);break;case 3:case 4:var C=f.stateNode.containerInfo,O=C1(i);rg(i,O,C);break;default:throw Error(n(161))}}catch(U){sn(i,i.return,U)}i.flags&=-3}o&4096&&(i.flags&=-4097)}function wA(i,o,u){Ee=i,R1(i)}function R1(i,o,u){for(var f=(i.mode&1)!==0;Ee!==null;){var g=Ee,_=g.child;if(g.tag===22&&f){var C=g.memoizedState!==null||Gd;if(!C){var O=g.alternate,U=O!==null&&O.memoizedState!==null||Kn;O=Gd;var X=Kn;if(Gd=C,(Kn=U)&&!X)for(Ee=g;Ee!==null;)C=Ee,U=C.child,C.tag===22&&C.memoizedState!==null?D1(g):U!==null?(U.return=C,Ee=U):D1(g);for(;_!==null;)Ee=_,R1(_),_=_.sibling;Ee=g,Gd=O,Kn=X}L1(i)}else(g.subtreeFlags&8772)!==0&&_!==null?(_.return=g,Ee=_):L1(i)}}function L1(i){for(;Ee!==null;){var o=Ee;if((o.flags&8772)!==0){var u=o.alternate;try{if((o.flags&8772)!==0)switch(o.tag){case 0:case 11:case 15:Kn||qd(5,o);break;case 1:var f=o.stateNode;if(o.flags&4&&!Kn)if(u===null)f.componentDidMount();else{var g=o.elementType===o.type?u.memoizedProps:la(o.type,u.memoizedProps);f.componentDidUpdate(g,u.memoizedState,f.__reactInternalSnapshotBeforeUpdate)}var _=o.updateQueue;_!==null&&Ik(o,_,f);break;case 3:var C=o.updateQueue;if(C!==null){if(u=null,o.child!==null)switch(o.child.tag){case 5:u=o.child.stateNode;break;case 1:u=o.child.stateNode}Ik(o,C,u)}break;case 5:var O=o.stateNode;if(u===null&&o.flags&4){u=O;var U=o.memoizedProps;switch(o.type){case"button":case"input":case"select":case"textarea":U.autoFocus&&u.focus();break;case"img":U.src&&(u.src=U.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(o.memoizedState===null){var X=o.alternate;if(X!==null){var ce=X.memoizedState;if(ce!==null){var he=ce.dehydrated;he!==null&&ic(he)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(n(163))}Kn||o.flags&512&&ng(o)}catch(oe){sn(o,o.return,oe)}}if(o===i){Ee=null;break}if(u=o.sibling,u!==null){u.return=o.return,Ee=u;break}Ee=o.return}}function I1(i){for(;Ee!==null;){var o=Ee;if(o===i){Ee=null;break}var u=o.sibling;if(u!==null){u.return=o.return,Ee=u;break}Ee=o.return}}function D1(i){for(;Ee!==null;){var o=Ee;try{switch(o.tag){case 0:case 11:case 15:var u=o.return;try{qd(4,o)}catch(U){sn(o,u,U)}break;case 1:var f=o.stateNode;if(typeof f.componentDidMount=="function"){var g=o.return;try{f.componentDidMount()}catch(U){sn(o,g,U)}}var _=o.return;try{ng(o)}catch(U){sn(o,_,U)}break;case 5:var C=o.return;try{ng(o)}catch(U){sn(o,C,U)}}}catch(U){sn(o,o.return,U)}if(o===i){Ee=null;break}var O=o.sibling;if(O!==null){O.return=o.return,Ee=O;break}Ee=o.return}}var xA=Math.ceil,Kd=E.ReactCurrentDispatcher,ig=E.ReactCurrentOwner,Or=E.ReactCurrentBatchConfig,yt=0,An=null,fn=null,Nn=0,Sr=0,Wo=Vi(0),wn=0,Ec=null,Rs=0,Yd=0,sg=0,Ac=null,pr=null,og=0,Go=1/0,di=null,Zd=!1,lg=null,Yi=null,Jd=!1,Zi=null,Xd=0,Rc=0,cg=null,Qd=-1,eh=0;function tr(){return(yt&6)!==0?ht():Qd!==-1?Qd:Qd=ht()}function Ji(i){return(i.mode&1)===0?1:(yt&2)!==0&&Nn!==0?Nn&-Nn:sA.transition!==null?(eh===0&&(eh=cd()),eh):(i=Tt,i!==0||(i=window.event,i=i===void 0?16:Nb(i.type)),i)}function da(i,o,u,f){if(50<Rc)throw Rc=0,cg=null,Error(n(185));ec(i,u,f),((yt&2)===0||i!==An)&&(i===An&&((yt&2)===0&&(Yd|=u),wn===4&&Xi(i,Nn)),fr(i,f),u===1&&yt===0&&(o.mode&1)===0&&(Go=ht()+500,Ed&&Wi()))}function fr(i,o){var u=i.callbackNode;ri(i,o);var f=Ni(i,i===An?Nn:0);if(f===0)u!==null&&dn(u),i.callbackNode=null,i.callbackPriority=0;else if(o=f&-f,i.callbackPriority!==o){if(u!=null&&dn(u),o===1)i.tag===0?iA(N1.bind(null,i)):bk(N1.bind(null,i)),tA(function(){(yt&6)===0&&Wi()}),u=null;else{switch(Tb(f)){case 1:u=ni;break;case 4:u=aa;break;case 16:u=ia;break;case 536870912:u=kr;break;default:u=ia}u=V1(u,M1.bind(null,i))}i.callbackPriority=o,i.callbackNode=u}}function M1(i,o){if(Qd=-1,eh=0,(yt&6)!==0)throw Error(n(327));var u=i.callbackNode;if(qo()&&i.callbackNode!==u)return null;var f=Ni(i,i===An?Nn:0);if(f===0)return null;if((f&30)!==0||(f&i.expiredLanes)!==0||o)o=th(i,f);else{o=f;var g=yt;yt|=2;var _=j1();(An!==i||Nn!==o)&&(di=null,Go=ht()+500,Is(i,o));do try{CA();break}catch(O){O1(i,O)}while(!0);Tm(),Kd.current=_,yt=g,fn!==null?o=0:(An=null,Nn=0,o=wn)}if(o!==0){if(o===2&&(g=So(i),g!==0&&(f=g,o=ug(i,g))),o===1)throw u=Ec,Is(i,0),Xi(i,f),fr(i,ht()),u;if(o===6)Xi(i,f);else{if(g=i.current.alternate,(f&30)===0&&!PA(g)&&(o=th(i,f),o===2&&(_=So(i),_!==0&&(f=_,o=ug(i,_))),o===1))throw u=Ec,Is(i,0),Xi(i,f),fr(i,ht()),u;switch(i.finishedWork=g,i.finishedLanes=f,o){case 0:case 1:throw Error(n(345));case 2:Ds(i,pr,di);break;case 3:if(Xi(i,f),(f&130023424)===f&&(o=og+500-ht(),10<o)){if(Ni(i,0)!==0)break;if(g=i.suspendedLanes,(g&f)!==f){tr(),i.pingedLanes|=i.suspendedLanes&g;break}i.timeoutHandle=gm(Ds.bind(null,i,pr,di),o);break}Ds(i,pr,di);break;case 4:if(Xi(i,f),(f&4194240)===f)break;for(o=i.eventTimes,g=-1;0<f;){var C=31-Vn(f);_=1<<C,C=o[C],C>g&&(g=C),f&=~_}if(f=g,f=ht()-f,f=(120>f?120:480>f?480:1080>f?1080:1920>f?1920:3e3>f?3e3:4320>f?4320:1960*xA(f/1960))-f,10<f){i.timeoutHandle=gm(Ds.bind(null,i,pr,di),f);break}Ds(i,pr,di);break;case 5:Ds(i,pr,di);break;default:throw Error(n(329))}}}return fr(i,ht()),i.callbackNode===u?M1.bind(null,i):null}function ug(i,o){var u=Ac;return i.current.memoizedState.isDehydrated&&(Is(i,o).flags|=256),i=th(i,o),i!==2&&(o=pr,pr=u,o!==null&&dg(o)),i}function dg(i){pr===null?pr=i:pr.push.apply(pr,i)}function PA(i){for(var o=i;;){if(o.flags&16384){var u=o.updateQueue;if(u!==null&&(u=u.stores,u!==null))for(var f=0;f<u.length;f++){var g=u[f],_=g.getSnapshot;g=g.value;try{if(!sa(_(),g))return!1}catch{return!1}}}if(u=o.child,o.subtreeFlags&16384&&u!==null)u.return=o,o=u;else{if(o===i)break;for(;o.sibling===null;){if(o.return===null||o.return===i)return!0;o=o.return}o.sibling.return=o.return,o=o.sibling}}return!0}function Xi(i,o){for(o&=~sg,o&=~Yd,i.suspendedLanes|=o,i.pingedLanes&=~o,i=i.expirationTimes;0<o;){var u=31-Vn(o),f=1<<u;i[u]=-1,o&=~f}}function N1(i){if((yt&6)!==0)throw Error(n(327));qo();var o=Ni(i,0);if((o&1)===0)return fr(i,ht()),null;var u=th(i,o);if(i.tag!==0&&u===2){var f=So(i);f!==0&&(o=f,u=ug(i,f))}if(u===1)throw u=Ec,Is(i,0),Xi(i,o),fr(i,ht()),u;if(u===6)throw Error(n(345));return i.finishedWork=i.current.alternate,i.finishedLanes=o,Ds(i,pr,di),fr(i,ht()),null}function hg(i,o){var u=yt;yt|=1;try{return i(o)}finally{yt=u,yt===0&&(Go=ht()+500,Ed&&Wi())}}function Ls(i){Zi!==null&&Zi.tag===0&&(yt&6)===0&&qo();var o=yt;yt|=1;var u=Or.transition,f=Tt;try{if(Or.transition=null,Tt=1,i)return i()}finally{Tt=f,Or.transition=u,yt=o,(yt&6)===0&&Wi()}}function pg(){Sr=Wo.current,Gt(Wo)}function Is(i,o){i.finishedWork=null,i.finishedLanes=0;var u=i.timeoutHandle;if(u!==-1&&(i.timeoutHandle=-1,eA(u)),fn!==null)for(u=fn.return;u!==null;){var f=u;switch(wm(f),f.tag){case 1:f=f.type.childContextTypes,f!=null&&Cd();break;case 3:Bo(),Gt(ur),Gt(Wn),Nm();break;case 5:Dm(f);break;case 4:Bo();break;case 13:Gt(rn);break;case 19:Gt(rn);break;case 10:Em(f.type._context);break;case 22:case 23:pg()}u=u.return}if(An=i,fn=i=Qi(i.current,null),Nn=Sr=o,wn=0,Ec=null,sg=Yd=Rs=0,pr=Ac=null,Ts!==null){for(o=0;o<Ts.length;o++)if(u=Ts[o],f=u.interleaved,f!==null){u.interleaved=null;var g=f.next,_=u.pending;if(_!==null){var C=_.next;_.next=g,f.next=C}u.pending=f}Ts=null}return i}function O1(i,o){do{var u=fn;try{if(Tm(),zd.current=Bd,Fd){for(var f=an.memoizedState;f!==null;){var g=f.queue;g!==null&&(g.pending=null),f=f.next}Fd=!1}if(As=0,En=kn=an=null,wc=!1,xc=0,ig.current=null,u===null||u.return===null){wn=1,Ec=o,fn=null;break}e:{var _=i,C=u.return,O=u,U=o;if(o=Nn,O.flags|=32768,U!==null&&typeof U=="object"&&typeof U.then=="function"){var X=U,ce=O,he=ce.tag;if((ce.mode&1)===0&&(he===0||he===11||he===15)){var oe=ce.alternate;oe?(ce.updateQueue=oe.updateQueue,ce.memoizedState=oe.memoizedState,ce.lanes=oe.lanes):(ce.updateQueue=null,ce.memoizedState=null)}var Ce=o1(C);if(Ce!==null){Ce.flags&=-257,l1(Ce,C,O,_,o),Ce.mode&1&&s1(_,X,o),o=Ce,U=X;var Ie=o.updateQueue;if(Ie===null){var Me=new Set;Me.add(U),o.updateQueue=Me}else Ie.add(U);break e}else{if((o&1)===0){s1(_,X,o),fg();break e}U=Error(n(426))}}else if(Jt&&O.mode&1){var hn=o1(C);if(hn!==null){(hn.flags&65536)===0&&(hn.flags|=256),l1(hn,C,O,_,o),Sm(Vo(U,O));break e}}_=U=Vo(U,O),wn!==4&&(wn=2),Ac===null?Ac=[_]:Ac.push(_),_=C;do{switch(_.tag){case 3:_.flags|=65536,o&=-o,_.lanes|=o;var G=a1(_,U,o);Lk(_,G);break e;case 1:O=U;var V=_.type,Y=_.stateNode;if((_.flags&128)===0&&(typeof V.getDerivedStateFromError=="function"||Y!==null&&typeof Y.componentDidCatch=="function"&&(Yi===null||!Yi.has(Y)))){_.flags|=65536,o&=-o,_.lanes|=o;var ve=i1(_,O,o);Lk(_,ve);break e}}_=_.return}while(_!==null)}F1(u)}catch(Ne){o=Ne,fn===u&&u!==null&&(fn=u=u.return);continue}break}while(!0)}function j1(){var i=Kd.current;return Kd.current=Bd,i===null?Bd:i}function fg(){(wn===0||wn===3||wn===2)&&(wn=4),An===null||(Rs&268435455)===0&&(Yd&268435455)===0||Xi(An,Nn)}function th(i,o){var u=yt;yt|=2;var f=j1();(An!==i||Nn!==o)&&(di=null,Is(i,o));do try{SA();break}catch(g){O1(i,g)}while(!0);if(Tm(),yt=u,Kd.current=f,fn!==null)throw Error(n(261));return An=null,Nn=0,wn}function SA(){for(;fn!==null;)z1(fn)}function CA(){for(;fn!==null&&!Ht();)z1(fn)}function z1(i){var o=B1(i.alternate,i,Sr);i.memoizedProps=i.pendingProps,o===null?F1(i):fn=o,ig.current=null}function F1(i){var o=i;do{var u=o.alternate;if(i=o.return,(o.flags&32768)===0){if(u=_A(u,o,Sr),u!==null){fn=u;return}}else{if(u=yA(u,o),u!==null){u.flags&=32767,fn=u;return}if(i!==null)i.flags|=32768,i.subtreeFlags=0,i.deletions=null;else{wn=6,fn=null;return}}if(o=o.sibling,o!==null){fn=o;return}fn=o=i}while(o!==null);wn===0&&(wn=5)}function Ds(i,o,u){var f=Tt,g=Or.transition;try{Or.transition=null,Tt=1,TA(i,o,u,f)}finally{Or.transition=g,Tt=f}return null}function TA(i,o,u,f){do qo();while(Zi!==null);if((yt&6)!==0)throw Error(n(327));u=i.finishedWork;var g=i.finishedLanes;if(u===null)return null;if(i.finishedWork=null,i.finishedLanes=0,u===i.current)throw Error(n(177));i.callbackNode=null,i.callbackPriority=0;var _=u.lanes|u.childLanes;if(o6(i,_),i===An&&(fn=An=null,Nn=0),(u.subtreeFlags&2064)===0&&(u.flags&2064)===0||Jd||(Jd=!0,V1(ia,function(){return qo(),null})),_=(u.flags&15990)!==0,(u.subtreeFlags&15990)!==0||_){_=Or.transition,Or.transition=null;var C=Tt;Tt=1;var O=yt;yt|=4,ig.current=null,kA(i,u),A1(u,i),q6(fm),hd=!!pm,fm=pm=null,i.current=u,wA(u),Ct(),yt=O,Tt=C,Or.transition=_}else i.current=u;if(Jd&&(Jd=!1,Zi=i,Xd=g),_=i.pendingLanes,_===0&&(Yi=null),xo(u.stateNode),fr(i,ht()),o!==null)for(f=i.onRecoverableError,u=0;u<o.length;u++)g=o[u],f(g.value,{componentStack:g.stack,digest:g.digest});if(Zd)throw Zd=!1,i=lg,lg=null,i;return(Xd&1)!==0&&i.tag!==0&&qo(),_=i.pendingLanes,(_&1)!==0?i===cg?Rc++:(Rc=0,cg=i):Rc=0,Wi(),null}function qo(){if(Zi!==null){var i=Tb(Xd),o=Or.transition,u=Tt;try{if(Or.transition=null,Tt=16>i?16:i,Zi===null)var f=!1;else{if(i=Zi,Zi=null,Xd=0,(yt&6)!==0)throw Error(n(331));var g=yt;for(yt|=4,Ee=i.current;Ee!==null;){var _=Ee,C=_.child;if((Ee.flags&16)!==0){var O=_.deletions;if(O!==null){for(var U=0;U<O.length;U++){var X=O[U];for(Ee=X;Ee!==null;){var ce=Ee;switch(ce.tag){case 0:case 11:case 15:Tc(8,ce,_)}var he=ce.child;if(he!==null)he.return=ce,Ee=he;else for(;Ee!==null;){ce=Ee;var oe=ce.sibling,Ce=ce.return;if(P1(ce),ce===X){Ee=null;break}if(oe!==null){oe.return=Ce,Ee=oe;break}Ee=Ce}}}var Ie=_.alternate;if(Ie!==null){var Me=Ie.child;if(Me!==null){Ie.child=null;do{var hn=Me.sibling;Me.sibling=null,Me=hn}while(Me!==null)}}Ee=_}}if((_.subtreeFlags&2064)!==0&&C!==null)C.return=_,Ee=C;else e:for(;Ee!==null;){if(_=Ee,(_.flags&2048)!==0)switch(_.tag){case 0:case 11:case 15:Tc(9,_,_.return)}var G=_.sibling;if(G!==null){G.return=_.return,Ee=G;break e}Ee=_.return}}var V=i.current;for(Ee=V;Ee!==null;){C=Ee;var Y=C.child;if((C.subtreeFlags&2064)!==0&&Y!==null)Y.return=C,Ee=Y;else e:for(C=V;Ee!==null;){if(O=Ee,(O.flags&2048)!==0)try{switch(O.tag){case 0:case 11:case 15:qd(9,O)}}catch(Ne){sn(O,O.return,Ne)}if(O===C){Ee=null;break e}var ve=O.sibling;if(ve!==null){ve.return=O.return,Ee=ve;break e}Ee=O.return}}if(yt=g,Wi(),bn&&typeof bn.onPostCommitFiberRoot=="function")try{bn.onPostCommitFiberRoot(Di,i)}catch{}f=!0}return f}finally{Tt=u,Or.transition=o}}return!1}function U1(i,o,u){o=Vo(u,o),o=a1(i,o,1),i=qi(i,o,1),o=tr(),i!==null&&(ec(i,1,o),fr(i,o))}function sn(i,o,u){if(i.tag===3)U1(i,i,u);else for(;o!==null;){if(o.tag===3){U1(o,i,u);break}else if(o.tag===1){var f=o.stateNode;if(typeof o.type.getDerivedStateFromError=="function"||typeof f.componentDidCatch=="function"&&(Yi===null||!Yi.has(f))){i=Vo(u,i),i=i1(o,i,1),o=qi(o,i,1),i=tr(),o!==null&&(ec(o,1,i),fr(o,i));break}}o=o.return}}function EA(i,o,u){var f=i.pingCache;f!==null&&f.delete(o),o=tr(),i.pingedLanes|=i.suspendedLanes&u,An===i&&(Nn&u)===u&&(wn===4||wn===3&&(Nn&130023424)===Nn&&500>ht()-og?Is(i,0):sg|=u),fr(i,o)}function $1(i,o){o===0&&((i.mode&1)===0?o=1:(o=cr,cr<<=1,(cr&130023424)===0&&(cr=4194304)));var u=tr();i=li(i,o),i!==null&&(ec(i,o,u),fr(i,u))}function AA(i){var o=i.memoizedState,u=0;o!==null&&(u=o.retryLane),$1(i,u)}function RA(i,o){var u=0;switch(i.tag){case 13:var f=i.stateNode,g=i.memoizedState;g!==null&&(u=g.retryLane);break;case 19:f=i.stateNode;break;default:throw Error(n(314))}f!==null&&f.delete(o),$1(i,u)}var B1;B1=function(i,o,u){if(i!==null)if(i.memoizedProps!==o.pendingProps||ur.current)hr=!0;else{if((i.lanes&u)===0&&(o.flags&128)===0)return hr=!1,vA(i,o,u);hr=(i.flags&131072)!==0}else hr=!1,Jt&&(o.flags&1048576)!==0&&kk(o,Rd,o.index);switch(o.lanes=0,o.tag){case 2:var f=o.type;Wd(i,o),i=o.pendingProps;var g=No(o,Wn.current);$o(o,u),g=zm(null,o,f,i,g,u);var _=Fm();return o.flags|=1,typeof g=="object"&&g!==null&&typeof g.render=="function"&&g.$$typeof===void 0?(o.tag=1,o.memoizedState=null,o.updateQueue=null,dr(f)?(_=!0,Td(o)):_=!1,o.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,Lm(o),g.updater=Vd,o.stateNode=g,g._reactInternals=o,Wm(o,f,i,u),o=Ym(null,o,f,!0,_,u)):(o.tag=0,Jt&&_&&km(o),er(null,o,g,u),o=o.child),o;case 16:f=o.elementType;e:{switch(Wd(i,o),i=o.pendingProps,g=f._init,f=g(f._payload),o.type=f,g=o.tag=IA(f),i=la(f,i),g){case 0:o=Km(null,o,f,i,u);break e;case 1:o=f1(null,o,f,i,u);break e;case 11:o=c1(null,o,f,i,u);break e;case 14:o=u1(null,o,f,la(f.type,i),u);break e}throw Error(n(306,f,""))}return o;case 0:return f=o.type,g=o.pendingProps,g=o.elementType===f?g:la(f,g),Km(i,o,f,g,u);case 1:return f=o.type,g=o.pendingProps,g=o.elementType===f?g:la(f,g),f1(i,o,f,g,u);case 3:e:{if(m1(o),i===null)throw Error(n(387));f=o.pendingProps,_=o.memoizedState,g=_.element,Rk(i,o),Od(o,f,null,u);var C=o.memoizedState;if(f=C.element,_.isDehydrated)if(_={element:f,isDehydrated:!1,cache:C.cache,pendingSuspenseBoundaries:C.pendingSuspenseBoundaries,transitions:C.transitions},o.updateQueue.baseState=_,o.memoizedState=_,o.flags&256){g=Vo(Error(n(423)),o),o=g1(i,o,f,u,g);break e}else if(f!==g){g=Vo(Error(n(424)),o),o=g1(i,o,f,u,g);break e}else for(Pr=Bi(o.stateNode.containerInfo.firstChild),xr=o,Jt=!0,oa=null,u=Ek(o,null,f,u),o.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling;else{if(zo(),f===g){o=ui(i,o,u);break e}er(i,o,f,u)}o=o.child}return o;case 5:return Dk(o),i===null&&Pm(o),f=o.type,g=o.pendingProps,_=i!==null?i.memoizedProps:null,C=g.children,mm(f,g)?C=null:_!==null&&mm(f,_)&&(o.flags|=32),p1(i,o),er(i,o,C,u),o.child;case 6:return i===null&&Pm(o),null;case 13:return v1(i,o,u);case 4:return Im(o,o.stateNode.containerInfo),f=o.pendingProps,i===null?o.child=Fo(o,null,f,u):er(i,o,f,u),o.child;case 11:return f=o.type,g=o.pendingProps,g=o.elementType===f?g:la(f,g),c1(i,o,f,g,u);case 7:return er(i,o,o.pendingProps,u),o.child;case 8:return er(i,o,o.pendingProps.children,u),o.child;case 12:return er(i,o,o.pendingProps.children,u),o.child;case 10:e:{if(f=o.type._context,g=o.pendingProps,_=o.memoizedProps,C=g.value,Ut(Dd,f._currentValue),f._currentValue=C,_!==null)if(sa(_.value,C)){if(_.children===g.children&&!ur.current){o=ui(i,o,u);break e}}else for(_=o.child,_!==null&&(_.return=o);_!==null;){var O=_.dependencies;if(O!==null){C=_.child;for(var U=O.firstContext;U!==null;){if(U.context===f){if(_.tag===1){U=ci(-1,u&-u),U.tag=2;var X=_.updateQueue;if(X!==null){X=X.shared;var ce=X.pending;ce===null?U.next=U:(U.next=ce.next,ce.next=U),X.pending=U}}_.lanes|=u,U=_.alternate,U!==null&&(U.lanes|=u),Am(_.return,u,o),O.lanes|=u;break}U=U.next}}else if(_.tag===10)C=_.type===o.type?null:_.child;else if(_.tag===18){if(C=_.return,C===null)throw Error(n(341));C.lanes|=u,O=C.alternate,O!==null&&(O.lanes|=u),Am(C,u,o),C=_.sibling}else C=_.child;if(C!==null)C.return=_;else for(C=_;C!==null;){if(C===o){C=null;break}if(_=C.sibling,_!==null){_.return=C.return,C=_;break}C=C.return}_=C}er(i,o,g.children,u),o=o.child}return o;case 9:return g=o.type,f=o.pendingProps.children,$o(o,u),g=Mr(g),f=f(g),o.flags|=1,er(i,o,f,u),o.child;case 14:return f=o.type,g=la(f,o.pendingProps),g=la(f.type,g),u1(i,o,f,g,u);case 15:return d1(i,o,o.type,o.pendingProps,u);case 17:return f=o.type,g=o.pendingProps,g=o.elementType===f?g:la(f,g),Wd(i,o),o.tag=1,dr(f)?(i=!0,Td(o)):i=!1,$o(o,u),n1(o,f,g),Wm(o,f,g,u),Ym(null,o,f,!0,i,u);case 19:return y1(i,o,u);case 22:return h1(i,o,u)}throw Error(n(156,o.tag))};function V1(i,o){return Pt(i,o)}function LA(i,o,u,f){this.tag=i,this.key=u,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=o,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=f,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jr(i,o,u,f){return new LA(i,o,u,f)}function mg(i){return i=i.prototype,!(!i||!i.isReactComponent)}function IA(i){if(typeof i=="function")return mg(i)?1:0;if(i!=null){if(i=i.$$typeof,i===ee)return 11;if(i===ae)return 14}return 2}function Qi(i,o){var u=i.alternate;return u===null?(u=jr(i.tag,o,i.key,i.mode),u.elementType=i.elementType,u.type=i.type,u.stateNode=i.stateNode,u.alternate=i,i.alternate=u):(u.pendingProps=o,u.type=i.type,u.flags=0,u.subtreeFlags=0,u.deletions=null),u.flags=i.flags&14680064,u.childLanes=i.childLanes,u.lanes=i.lanes,u.child=i.child,u.memoizedProps=i.memoizedProps,u.memoizedState=i.memoizedState,u.updateQueue=i.updateQueue,o=i.dependencies,u.dependencies=o===null?null:{lanes:o.lanes,firstContext:o.firstContext},u.sibling=i.sibling,u.index=i.index,u.ref=i.ref,u}function nh(i,o,u,f,g,_){var C=2;if(f=i,typeof i=="function")mg(i)&&(C=1);else if(typeof i=="string")C=5;else e:switch(i){case I:return Ms(u.children,g,_,o);case S:C=8,g|=8;break;case j:return i=jr(12,u,o,g|2),i.elementType=j,i.lanes=_,i;case ue:return i=jr(13,u,o,g),i.elementType=ue,i.lanes=_,i;case re:return i=jr(19,u,o,g),i.elementType=re,i.lanes=_,i;case le:return rh(u,g,_,o);default:if(typeof i=="object"&&i!==null)switch(i.$$typeof){case F:C=10;break e;case Z:C=9;break e;case ee:C=11;break e;case ae:C=14;break e;case te:C=16,f=null;break e}throw Error(n(130,i==null?i:typeof i,""))}return o=jr(C,u,o,g),o.elementType=i,o.type=f,o.lanes=_,o}function Ms(i,o,u,f){return i=jr(7,i,f,o),i.lanes=u,i}function rh(i,o,u,f){return i=jr(22,i,f,o),i.elementType=le,i.lanes=u,i.stateNode={isHidden:!1},i}function gg(i,o,u){return i=jr(6,i,null,o),i.lanes=u,i}function vg(i,o,u){return o=jr(4,i.children!==null?i.children:[],i.key,o),o.lanes=u,o.stateNode={containerInfo:i.containerInfo,pendingChildren:null,implementation:i.implementation},o}function DA(i,o,u,f,g){this.tag=o,this.containerInfo=i,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Hf(0),this.expirationTimes=Hf(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Hf(0),this.identifierPrefix=f,this.onRecoverableError=g,this.mutableSourceEagerHydrationData=null}function _g(i,o,u,f,g,_,C,O,U){return i=new DA(i,o,u,O,U),o===1?(o=1,_===!0&&(o|=8)):o=0,_=jr(3,null,null,o),i.current=_,_.stateNode=i,_.memoizedState={element:f,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null},Lm(_),i}function MA(i,o,u){var f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:$,key:f==null?null:""+f,children:i,containerInfo:o,implementation:u}}function H1(i){if(!i)return Hi;i=i._reactInternals;e:{if(Se(i)!==i||i.tag!==1)throw Error(n(170));var o=i;do{switch(o.tag){case 3:o=o.stateNode.context;break e;case 1:if(dr(o.type)){o=o.stateNode.__reactInternalMemoizedMergedChildContext;break e}}o=o.return}while(o!==null);throw Error(n(171))}if(i.tag===1){var u=i.type;if(dr(u))return _k(i,u,o)}return o}function W1(i,o,u,f,g,_,C,O,U){return i=_g(u,f,!0,i,g,_,C,O,U),i.context=H1(null),u=i.current,f=tr(),g=Ji(u),_=ci(f,g),_.callback=o??null,qi(u,_,g),i.current.lanes=g,ec(i,g,f),fr(i,f),i}function ah(i,o,u,f){var g=o.current,_=tr(),C=Ji(g);return u=H1(u),o.context===null?o.context=u:o.pendingContext=u,o=ci(_,C),o.payload={element:i},f=f===void 0?null:f,f!==null&&(o.callback=f),i=qi(g,o,C),i!==null&&(da(i,g,C,_),Nd(i,g,C)),C}function ih(i){return i=i.current,i.child?(i.child.tag===5,i.child.stateNode):null}function G1(i,o){if(i=i.memoizedState,i!==null&&i.dehydrated!==null){var u=i.retryLane;i.retryLane=u!==0&&u<o?u:o}}function yg(i,o){G1(i,o),(i=i.alternate)&&G1(i,o)}function NA(){return null}var q1=typeof reportError=="function"?reportError:function(i){console.error(i)};function bg(i){this._internalRoot=i}sh.prototype.render=bg.prototype.render=function(i){var o=this._internalRoot;if(o===null)throw Error(n(409));ah(i,o,null,null)},sh.prototype.unmount=bg.prototype.unmount=function(){var i=this._internalRoot;if(i!==null){this._internalRoot=null;var o=i.containerInfo;Ls(function(){ah(null,i,null,null)}),o[ai]=null}};function sh(i){this._internalRoot=i}sh.prototype.unstable_scheduleHydration=function(i){if(i){var o=Rb();i={blockedOn:null,target:i,priority:o};for(var u=0;u<Fi.length&&o!==0&&o<Fi[u].priority;u++);Fi.splice(u,0,i),u===0&&Db(i)}};function kg(i){return!(!i||i.nodeType!==1&&i.nodeType!==9&&i.nodeType!==11)}function oh(i){return!(!i||i.nodeType!==1&&i.nodeType!==9&&i.nodeType!==11&&(i.nodeType!==8||i.nodeValue!==" react-mount-point-unstable "))}function K1(){}function OA(i,o,u,f,g){if(g){if(typeof f=="function"){var _=f;f=function(){var X=ih(C);_.call(X)}}var C=W1(o,f,i,0,null,!1,!1,"",K1);return i._reactRootContainer=C,i[ai]=C.current,fc(i.nodeType===8?i.parentNode:i),Ls(),C}for(;g=i.lastChild;)i.removeChild(g);if(typeof f=="function"){var O=f;f=function(){var X=ih(U);O.call(X)}}var U=_g(i,0,!1,null,null,!1,!1,"",K1);return i._reactRootContainer=U,i[ai]=U.current,fc(i.nodeType===8?i.parentNode:i),Ls(function(){ah(o,U,u,f)}),U}function lh(i,o,u,f,g){var _=u._reactRootContainer;if(_){var C=_;if(typeof g=="function"){var O=g;g=function(){var U=ih(C);O.call(U)}}ah(o,C,i,g)}else C=OA(u,o,i,g,f);return ih(C)}Eb=function(i){switch(i.tag){case 3:var o=i.stateNode;if(o.current.memoizedState.isDehydrated){var u=Mi(o.pendingLanes);u!==0&&(Wf(o,u|1),fr(o,ht()),(yt&6)===0&&(Go=ht()+500,Wi()))}break;case 13:Ls(function(){var f=li(i,1);if(f!==null){var g=tr();da(f,i,1,g)}}),yg(i,1)}},Gf=function(i){if(i.tag===13){var o=li(i,134217728);if(o!==null){var u=tr();da(o,i,134217728,u)}yg(i,134217728)}},Ab=function(i){if(i.tag===13){var o=Ji(i),u=li(i,o);if(u!==null){var f=tr();da(u,i,o,f)}yg(i,o)}},Rb=function(){return Tt},Lb=function(i,o){var u=Tt;try{return Tt=i,o()}finally{Tt=u}},Ri=function(i,o,u){switch(o){case"input":if(Vt(i,u),o=u.name,u.type==="radio"&&o!=null){for(u=i;u.parentNode;)u=u.parentNode;for(u=u.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),o=0;o<u.length;o++){var f=u[o];if(f!==i&&f.form===i.form){var g=Sd(f);if(!g)throw Error(n(90));jt(f),Vt(f,g)}}}break;case"textarea":tt(i,u);break;case"select":o=u.value,o!=null&&Et(i,!!u.multiple,o,!1)}},ld=hg,Xl=Ls;var jA={usingClientEntryPoint:!1,Events:[vc,Do,Sd,od,Jl,hg]},Lc={findFiberByHostInstance:xs,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},zA={bundleType:Lc.bundleType,version:Lc.version,rendererPackageName:Lc.rendererPackageName,rendererConfig:Lc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:E.ReactCurrentDispatcher,findHostInstanceByFiber:function(i){return i=qe(i),i===null?null:i.stateNode},findFiberByHostInstance:Lc.findFiberByHostInstance||NA,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var ch=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ch.isDisabled&&ch.supportsFiber)try{Di=ch.inject(zA),bn=ch}catch{}}return mr.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=jA,mr.createPortal=function(i,o){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!kg(o))throw Error(n(200));return MA(i,o,null,u)},mr.createRoot=function(i,o){if(!kg(i))throw Error(n(299));var u=!1,f="",g=q1;return o!=null&&(o.unstable_strictMode===!0&&(u=!0),o.identifierPrefix!==void 0&&(f=o.identifierPrefix),o.onRecoverableError!==void 0&&(g=o.onRecoverableError)),o=_g(i,1,!1,null,null,u,!1,f,g),i[ai]=o.current,fc(i.nodeType===8?i.parentNode:i),new bg(o)},mr.findDOMNode=function(i){if(i==null)return null;if(i.nodeType===1)return i;var o=i._reactInternals;if(o===void 0)throw typeof i.render=="function"?Error(n(188)):(i=Object.keys(i).join(","),Error(n(268,i)));return i=qe(o),i=i===null?null:i.stateNode,i},mr.flushSync=function(i){return Ls(i)},mr.hydrate=function(i,o,u){if(!oh(o))throw Error(n(200));return lh(null,i,o,!0,u)},mr.hydrateRoot=function(i,o,u){if(!kg(i))throw Error(n(405));var f=u!=null&&u.hydratedSources||null,g=!1,_="",C=q1;if(u!=null&&(u.unstable_strictMode===!0&&(g=!0),u.identifierPrefix!==void 0&&(_=u.identifierPrefix),u.onRecoverableError!==void 0&&(C=u.onRecoverableError)),o=W1(o,null,i,1,u??null,g,!1,_,C),i[ai]=o.current,fc(i),f)for(i=0;i<f.length;i++)u=f[i],g=u._getVersion,g=g(u._source),o.mutableSourceEagerHydrationData==null?o.mutableSourceEagerHydrationData=[u,g]:o.mutableSourceEagerHydrationData.push(u,g);return new sh(o)},mr.render=function(i,o,u){if(!oh(o))throw Error(n(200));return lh(null,i,o,!1,u)},mr.unmountComponentAtNode=function(i){if(!oh(i))throw Error(n(40));return i._reactRootContainer?(Ls(function(){lh(null,null,i,!1,function(){i._reactRootContainer=null,i[ai]=null})}),!0):!1},mr.unstable_batchedUpdates=hg,mr.unstable_renderSubtreeIntoContainer=function(i,o,u,f){if(!oh(u))throw Error(n(200));if(i==null||i._reactInternals===void 0)throw Error(n(38));return lh(i,o,u,!1,f)},mr.version="18.3.1-next-f1338f8080-20240426",mr}var nw;function bS(){if(nw)return Pg.exports;nw=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),Pg.exports=qA(),Pg.exports}var rw;function KA(){if(rw)return uh;rw=1;var t=bS();return uh.createRoot=t.createRoot,uh.hydrateRoot=t.hydrateRoot,uh}var YA=KA();var kS=t=>{throw TypeError(t)},wS=(t,e,n)=>e.has(t)||kS("Cannot "+n),Fr=(t,e,n)=>(wS(t,e,"read from private field"),n?n.call(t):e.get(t)),Jc=(t,e,n)=>e.has(t)?kS("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),La=(t,e,n,r)=>(wS(t,e,"write to private field"),e.set(t,n),n),_f=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,Ry=/^[\\/]{2}/;function xS(t,e){return e+t.replace(/\\/g,"/")}var aw="popstate";function iw(t){return typeof t=="object"&&t!=null&&"pathname"in t&&"search"in t&&"hash"in t&&"state"in t&&"key"in t}function ZA(t={}){function e(r,a){let s=a.state?.masked,{pathname:l,search:c,hash:d}=s||r.location;return Su("",{pathname:l,search:c,hash:d},a.state&&a.state.usr||null,a.state&&a.state.key||"default",s?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function n(r,a){return typeof a=="string"?a:Wa(a)}return XA(e,n,null,t)}function ot(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function cn(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function JA(){return Math.random().toString(36).substring(2,10)}function sw(t,e){return{usr:t.state,key:t.key,idx:e,masked:t.mask?{pathname:t.pathname,search:t.search,hash:t.hash}:void 0}}function Su(t,e,n=null,r,a){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?Ja(e):e,state:n,key:e&&e.key||r||JA(),mask:a}}function Wa({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Ja(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substring(r),t=t.substring(0,r)),t&&(e.pathname=t)}return e}function XA(t,e,n,r={}){let{window:a=document.defaultView,v5Compat:s=!1}=r,l=a.history,c="POP",d=null,h=p();h==null&&(h=0,l.replaceState({...l.state,idx:h},""));function p(){return(l.state||{idx:null}).idx}function m(){c="POP";let P=p(),A=P==null?null:P-h;h=P,d&&d({action:c,location:x.location,delta:A})}function v(P,A){c="PUSH";let L=iw(P)?P:Su(x.location,P,A);h=p()+1;let T=sw(L,h),E=x.createHref(L.mask||L);try{l.pushState(T,"",E)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;a.location.assign(E)}s&&d&&d({action:c,location:x.location,delta:1})}function y(P,A){c="REPLACE";let L=iw(P)?P:Su(x.location,P,A);h=p();let T=sw(L,h),E=x.createHref(L.mask||L);l.replaceState(T,"",E),s&&d&&d({action:c,location:x.location,delta:0})}function b(P){return PS(a,P)}let x={get action(){return c},get location(){return t(a,l)},listen(P){if(d)throw new Error("A history only accepts one active listener");return a.addEventListener(aw,m),d=P,()=>{a.removeEventListener(aw,m),d=null}},createHref(P){return e(a,P)},createURL:b,encodeLocation(P){let A=b(P);return{pathname:A.pathname,search:A.search,hash:A.hash}},push:v,replace:y,go(P){return l.go(P)}};return x}function PS(t,e,n=!1){let r="http://localhost";t&&(r=t.location.origin!=="null"?t.location.origin:t.location.href),ot(r,"No window.location.(origin|href) available to create URL");let a=typeof e=="string"?e:Wa(e);return a=a.replace(/ $/,"%20"),!n&&Ry.test(a)&&(a=r+a),new URL(a,r)}var Xc,ow=class{constructor(t){if(Jc(this,Xc,new Map),t)for(let[e,n]of t)this.set(e,n)}get(t){if(Fr(this,Xc).has(t))return Fr(this,Xc).get(t);if(t.defaultValue!==void 0)return t.defaultValue;throw new Error("No value found for context")}set(t,e){Fr(this,Xc).set(t,e)}};Xc=new WeakMap;var QA=new Set(["lazy","caseSensitive","path","id","index","children"]);function eR(t){return QA.has(t)}var tR=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function nR(t){return tR.has(t)}function rR(t){return t.index===!0}function Cu(t,e,n=[],r={},a=!1){return t.map((s,l)=>{let c=[...n,String(l)],d=typeof s.id=="string"?s.id:c.join("-");if(ot(s.index!==!0||!s.children,"Cannot specify children on an index route"),ot(a||!r[d],`Found a route id collision on id "${d}". Route id's must be globally unique within Data Router usages`),rR(s)){let h={...s,id:d};return r[d]=lw(h,e(h)),h}else{let h={...s,id:d,children:void 0};return r[d]=lw(h,e(h)),s.children&&(h.children=Cu(s.children,e,c,r,a)),h}})}function lw(t,e){return Object.assign(t,{...e,...typeof e.lazy=="object"&&e.lazy!=null?{lazy:{...t.lazy,...e.lazy}}:{}})}function SS(t,e,n="/"){return fa(t,e,n,!1)}function fa(t,e,n,r,a){let s=typeof e=="string"?Ja(e):e,l=Jr(s.pathname||"/",n);if(l==null)return null;let c=a??Bh(t),d=null,h=mR(l);for(let p=0;d==null&&p<c.length;++p)d=fR(c[p],h,r);return d}function aR(t,e){let{route:n,pathname:r,params:a}=t;return{id:n.id,pathname:r,params:a,data:e[n.id],loaderData:e[n.id],handle:n.handle}}function Bh(t){let e=CS(t);return iR(e),e}function CS(t,e=[],n=[],r="",a=!1){let s=(l,c,d=a,h)=>{let p={relativePath:h===void 0?l.path||"":h,caseSensitive:l.caseSensitive===!0,childrenIndex:c,route:l};if(p.relativePath.startsWith("/")){if(!p.relativePath.startsWith(r)&&d)return;ot(p.relativePath.startsWith(r),`Absolute route path "${p.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(r.length)}let m=qr([r,p.relativePath]),v=n.concat(p);l.children&&l.children.length>0&&(ot(l.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),CS(l.children,e,v,m,d)),!(l.path==null&&!l.index)&&e.push({path:m,score:hR(m,l.index),routesMeta:v.map((y,b)=>{let[x,P]=AS(y.relativePath,y.caseSensitive,b===v.length-1);return{...y,matcher:x,compiledParams:P}})})};return t.forEach((l,c)=>{if(l.path===""||!l.path?.includes("?"))s(l,c);else for(let d of TS(l.path))s(l,c,!0,d)}),e}function TS(t){let e=t.split("/");if(e.length===0)return[];let[n,...r]=e,a=n.endsWith("?"),s=n.replace(/\?$/,"");if(r.length===0)return a?[s,""]:[s];let l=TS(r.join("/")),c=[];return c.push(...l.map(d=>d===""?s:[s,d].join("/"))),a&&c.push(...l),c.map(d=>t.startsWith("/")&&d===""?"/":d)}function iR(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:pR(e.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var sR=/^:[\w-]+$/,oR=3,lR=2,cR=1,uR=10,dR=-2,cw=t=>t==="*";function hR(t,e){let n=t.split("/"),r=n.length;return n.some(cw)&&(r+=dR),e&&(r+=lR),n.filter(a=>!cw(a)).reduce((a,s)=>a+(sR.test(s)?oR:s===""?cR:uR),r)}function pR(t,e){return t.length===e.length&&t.slice(0,-1).every((r,a)=>r===e[a])?t[t.length-1]-e[e.length-1]:0}function fR(t,e,n=!1){let{routesMeta:r}=t,a={},s="/",l=[];for(let c=0;c<r.length;++c){let d=r[c],h=c===r.length-1,p=s==="/"?e:e.slice(s.length)||"/",m={path:d.relativePath,caseSensitive:d.caseSensitive,end:h},v=d.matcher&&d.compiledParams?ES(m,p,d.matcher,d.compiledParams):fp(m,p),y=d.route;if(!v&&h&&n&&!r[r.length-1].route.index&&(v=fp({path:d.relativePath,caseSensitive:d.caseSensitive,end:!1},p)),!v)return null;Object.assign(a,v.params),l.push({params:a,pathname:qr([s,v.pathname]),pathnameBase:_R(qr([s,v.pathnameBase])),route:y}),v.pathnameBase!=="/"&&(s=qr([s,v.pathnameBase]))}return l}function fp(t,e){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[n,r]=AS(t.path,t.caseSensitive,t.end);return ES(t,e,n,r)}function ES(t,e,n,r){let a=e.match(n);if(!a)return null;let s=a[0],l=s.replace(/(.)\/+$/,"$1"),c=a.slice(1);return{params:r.reduce((h,{paramName:p,isOptional:m},v)=>{if(p==="*"){let b=c[v]||"";l=s.slice(0,s.length-b.length).replace(/(.)\/+$/,"$1")}const y=c[v];return m&&!y?h[p]=void 0:h[p]=(y||"").replace(/%2F/g,"/"),h},{}),pathname:s,pathnameBase:l,pattern:t}}function AS(t,e=!1,n=!0){cn(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let r=[],a="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,c,d,h,p)=>{if(r.push({paramName:c,isOptional:d!=null}),d){let m=p.charAt(h+l.length);return m&&m!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(r.push({paramName:"*"}),a+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":t!==""&&t!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,e?void 0:"i"),r]}function mR(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return cn(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function Jr(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,r=t.charAt(n);return r&&r!=="/"?null:t.slice(n)||"/"}function gR({basename:t,pathname:e}){return e==="/"?t:qr([t,e])}var Ly=t=>_f.test(t);function vR(t,e="/"){let{pathname:n,search:r="",hash:a=""}=typeof t=="string"?Ja(t):t,s;return n?(n=Iy(n),n.startsWith("/")?s=uw(n.substring(1),"/"):s=uw(n,e)):s=e,{pathname:s,search:yR(r),hash:bR(a)}}function uw(t,e){let n=mp(e).split("/");return t.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function Tg(t,e,n,r){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function RS(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function yf(t){let e=RS(t);return e.map((n,r)=>r===e.length-1?n.pathname:n.pathnameBase)}function Wu(t,e,n,r=!1){let a;typeof t=="string"?a=Ja(t):(a={...t},ot(!a.pathname||!a.pathname.includes("?"),Tg("?","pathname","search",a)),ot(!a.pathname||!a.pathname.includes("#"),Tg("#","pathname","hash",a)),ot(!a.search||!a.search.includes("#"),Tg("#","search","hash",a)));let s=t===""||a.pathname==="",l=s?"/":a.pathname,c;if(l==null)c=n;else{let m=e.length-1;if(!r&&l.startsWith("..")){let v=l.split("/");for(;v[0]==="..";)v.shift(),m-=1;a.pathname=v.join("/")}c=m>=0?e[m]:"/"}let d=vR(a,c),h=l&&l!=="/"&&l.endsWith("/"),p=(s||l===".")&&n.endsWith("/");return!d.pathname.endsWith("/")&&(h||p)&&(d.pathname+="/"),d}var Iy=t=>t.replace(/[\\/]{2,}/g,"/"),qr=t=>Iy(t.join("/")),mp=t=>t.replace(/\/+$/,""),_R=t=>mp(t).replace(/^\/*/,"/"),yR=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,bR=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,kR=["EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Gu=class{constructor(t,e,n,r=!1){this.status=t,this.statusText=e||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Tu(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function qu(t){let e=t.map(n=>n.route.path).filter(Boolean);return qr(e)||"/"}var LS=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function IS(t,e){let n=t;if(typeof n!="string"||!_f.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,a=!1;if(LS)try{let s=new URL(window.location.href),l=Ry.test(n)?new URL(xS(n,s.protocol)):new URL(n),c=Jr(l.pathname,e);l.origin===s.origin&&c!=null?n=c+l.search+l.hash:a=!0}catch{cn(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:a,to:n}}var os=Symbol("Uninstrumented");function wR(t,e){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};t.forEach(a=>a({id:e.id,index:e.index,path:e.path,instrument(s){let l=Object.keys(n);for(let c of l)s[c]&&n[c].push(s[c])}}));let r={};if(typeof e.lazy=="function"&&n.lazy.length>0){let a=hl(n.lazy,e.lazy,()=>{});a&&(r.lazy=a)}if(typeof e.lazy=="object"){let a=e.lazy;["middleware","loader","action"].forEach(s=>{let l=a[s],c=n[`lazy.${s}`];if(typeof l=="function"&&c.length>0){let d=hl(c,l,()=>{});d&&(r.lazy=Object.assign(r.lazy||{},{[s]:d}))}})}return["loader","action"].forEach(a=>{let s=e[a];if(typeof s=="function"&&n[a].length>0){let l=s[os]??s,c=hl(n[a],l,(...d)=>dw(d[0]));c&&(a==="loader"&&l.hydrate===!0&&(c.hydrate=!0),c[os]=l,r[a]=c)}}),e.middleware&&e.middleware.length>0&&n.middleware.length>0&&(r.middleware=e.middleware.map(a=>{let s=a[os]??a,l=hl(n.middleware,s,(...c)=>dw(c[0]));return l?(l[os]=s,l):a})),r}function xR(t,e){let n={navigate:[],fetch:[]};if(e.forEach(r=>r({instrument(a){let s=Object.keys(a);for(let l of s)a[l]&&n[l].push(a[l])}})),n.navigate.length>0){let r=t.navigate[os]??t.navigate,a=hl(n.navigate,r,(...s)=>{let[l,c]=s;return{to:typeof l=="number"||typeof l=="string"?l:l?Wa(l):".",...hw(t,c??{})}});a&&(a[os]=r,t.navigate=a)}if(n.fetch.length>0){let r=t.fetch[os]??t.fetch,a=hl(n.fetch,r,(...s)=>{let[l,,c,d]=s;return{href:c??".",fetcherKey:l,...hw(t,d??{})}});a&&(a[os]=r,t.fetch=a)}return t}function hl(t,e,n){return t.length===0?null:async(...r)=>{let a=await DS(t,n(...r),()=>e(...r),t.length-1);if(a.type==="error")throw a.value;return a.value}}async function DS(t,e,n,r){let a=t[r],s;if(a){let l,c=async()=>(l?console.error("You cannot call instrumented handlers more than once"):l=DS(t,e,n,r-1),s=await l,ot(s,"Expected a result"),s.type==="error"&&s.value instanceof Error?{status:"error",error:s.value}:{status:"success",error:void 0});try{await a(c,e)}catch(d){console.error("An instrumentation function threw an error:",d)}l||await c(),await l}else try{s={type:"success",value:await n()}}catch(l){s={type:"error",value:l}}return s||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function dw(t){let{request:e,context:n,params:r,pattern:a}=t;return{request:PR(e),params:{...r},pattern:a,context:SR(n)}}function hw(t,e){return{currentUrl:Wa(t.state.location),..."formMethod"in e?{formMethod:e.formMethod}:{},..."formEncType"in e?{formEncType:e.formEncType}:{},..."formData"in e?{formData:e.formData}:{},..."body"in e?{body:e.body}:{}}}function PR(t){return{method:t.method,url:t.url,headers:{get:(...e)=>t.headers.get(...e)}}}function SR(t){if(TR(t)){let e={...t};return Object.freeze(e),e}else return{get:e=>t.get(e)}}var CR=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function TR(t){if(t===null||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null||Object.getOwnPropertyNames(e).sort().join("\0")===CR}var MS=["POST","PUT","PATCH","DELETE"],ER=new Set(MS),AR=["GET",...MS],RR=new Set(AR),NS=new Set([301,302,303,307,308]),LR=new Set([307,308]),Eg={state:"idle",location:void 0,matches:void 0,historyAction:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},IR={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Dc={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},DR=t=>({hasErrorBoundary:!!t.hasErrorBoundary}),OS="remix-router-transitions",jS=Symbol("ResetLoaderData"),Hs,al,rs,il,MR=class{constructor(t){Jc(this,Hs),Jc(this,al),Jc(this,rs),Jc(this,il),La(this,Hs,t),La(this,al,Bh(t))}get stableRoutes(){return Fr(this,Hs)}get activeRoutes(){return Fr(this,rs)??Fr(this,Hs)}get branches(){return Fr(this,il)??Fr(this,al)}get hasHMRRoutes(){return Fr(this,rs)!=null}setRoutes(t){La(this,Hs,t),La(this,al,Bh(t))}setHmrRoutes(t){La(this,rs,t),La(this,il,Bh(t))}commitHmrRoutes(){Fr(this,rs)&&(La(this,Hs,Fr(this,rs)),La(this,al,Fr(this,il)),La(this,rs,void 0),La(this,il,void 0))}};Hs=new WeakMap;al=new WeakMap;rs=new WeakMap;il=new WeakMap;function NR(t){const e=t.window?t.window:typeof window<"u"?window:void 0,n=typeof e<"u"&&typeof e.document<"u"&&typeof e.document.createElement<"u";ot(t.routes.length>0,"You must provide a non-empty routes array to createRouter");let r=t.hydrationRouteProperties||[],a=t.mapRouteProperties||DR,s=a;if(t.instrumentations){let z=t.instrumentations;s=B=>({...a(B),...wR(z.map(K=>K.route).filter(Boolean),B)})}let l={},c=new MR(Cu(t.routes,s,void 0,l)),d=t.basename||"/";d.startsWith("/")||(d=`/${d}`);let h=t.dataStrategy||UR,p={...t.future},m=null,v=new Set,y=null,b=null,x=null,P=null,A=t.hydrationData!=null,L=fa(c.activeRoutes,t.history.location,d,!1,c.branches),T=!1,E=null,D,$;if(L==null&&!t.patchRoutesOnNavigation){let z=Ur(404,{pathname:t.history.location.pathname}),{matches:B,route:K}=dh(c.activeRoutes);D=!0,$=!D,L=B,E={[K.id]:z}}else if(L&&!t.hydrationData&&Li(L,c.activeRoutes,t.history.location.pathname).active&&(L=null),L)if(L.some(z=>z.route.lazy))D=!1,$=!D;else if(!L.some(z=>Dy(z.route)))D=!0,$=!D;else{let z=t.hydrationData?t.hydrationData.loaderData:null,B=t.hydrationData?t.hydrationData.errors:null,K=L;if(B){let ne=L.findIndex(ie=>B[ie.route.id]!==void 0);K=K.slice(0,ne+1)}$=!1,D=!0,K.forEach(ne=>{let ie=zS(ne.route,z,B);$=$||ie.renderFallback,D=D&&!ie.shouldLoad})}else{D=!1,$=!D,L=[];let z=Li(null,c.activeRoutes,t.history.location.pathname);z.active&&z.matches&&(T=!0,L=z.matches)}let I,S={historyAction:t.history.action,location:t.history.location,matches:L,initialized:D,renderFallback:$,navigation:Eg,restoreScrollPosition:t.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:t.hydrationData&&t.hydrationData.loaderData||{},actionData:t.hydrationData&&t.hydrationData.actionData||null,errors:t.hydrationData&&t.hydrationData.errors||E,fetchers:new Map,blockers:new Map},j="POP",F=null,Z=!1,ee,ue=!1,re=new Map,ae=null,te=!1,le=!1,H=new Set,Q=new Map,W=0,N=-1,q=new Map,pe=new Set,ke=new Map,de=new Map,be=new Set,je=new Map,$e,Le=null;function St(){if(m=t.history.listen(({action:z,location:B,delta:K})=>{if($e){$e(),$e=void 0;return}cn(je.size===0||K!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let ne=ti({currentLocation:S.location,nextLocation:B,historyAction:z});if(ne&&K!=null){let ie=new Promise(ze=>{$e=ze});t.history.go(K*-1),br(ne,{state:"blocked",location:B,proceed(){br(ne,{state:"proceeding",proceed:void 0,reset:void 0,location:B}),ie.then(()=>t.history.go(K))},reset(){let ze=new Map(S.blockers);ze.set(ne,Dc),_t({blockers:ze})}}),F?.resolve(),F=null;return}return Vt(z,B)}),n){i8(e,re);let z=()=>s8(e,re);e.addEventListener("pagehide",z),ae=()=>e.removeEventListener("pagehide",z)}return S.initialized||Vt("POP",S.location,{initialHydration:!0}),I}function un(){m&&m(),ae&&ae(),v.clear(),ee&&ee.abort(),S.fetchers.forEach((z,B)=>Tn(S.fetchers,B)),S.blockers.forEach((z,B)=>Ri(B))}function jt(z){if(v.add(z),y){let{newErrors:B}=y;y=null,z(S,{deletedFetchers:[],newErrors:B,viewTransitionOpts:void 0,flushSync:!1})}return()=>v.delete(z)}function _t(z,B={}){z.matches&&(z.matches=z.matches.map(ie=>{let ze=l[ie.route.id],Fe=ie.route;return Fe.element!==ze.element||Fe.errorElement!==ze.errorElement||Fe.hydrateFallbackElement!==ze.hydrateFallbackElement?{...ie,route:ze}:ie})),S={...S,...z};let K=[],ne=[];S.fetchers.forEach((ie,ze)=>{ie.state==="idle"&&(be.has(ze)?K.push(ze):ne.push(ze))}),be.forEach(ie=>{!S.fetchers.has(ie)&&!Q.has(ie)&&K.push(ie)}),v.size===0&&(y={newErrors:z.errors??null}),[...v].forEach(ie=>ie(S,{deletedFetchers:K,newErrors:z.errors??null,viewTransitionOpts:B.viewTransitionOpts,flushSync:B.flushSync===!0})),K.forEach(ie=>Tn(S.fetchers,ie)),ne.forEach(ie=>S.fetchers.delete(ie))}function Zt(z,B,{flushSync:K}={}){let ne=S.actionData!=null&&S.navigation.formMethod!=null&&Zn(S.navigation.formMethod)&&S.navigation.state==="loading"&&z.state?._isRedirect!==!0,ie;B.actionData?Object.keys(B.actionData).length>0?ie=B.actionData:ie=null:ne?ie=S.actionData:ie=null;let ze=B.loaderData?ww(S.loaderData,B.loaderData,B.matches||[],B.errors):S.loaderData,Fe=S.blockers;Fe.size>0&&(Fe=new Map(Fe),Fe.forEach((Ve,rt)=>Fe.set(rt,Dc)));let Be=te?!1:Xl(z,B.matches||S.matches),Se=Z===!0||S.navigation.formMethod!=null&&Zn(S.navigation.formMethod)&&z.state?._isRedirect!==!0;c.commitHmrRoutes(),te||j==="POP"||(j==="PUSH"?t.history.push(z,z.state):j==="REPLACE"&&t.history.replace(z,z.state));let He;if(j==="POP"){let Ve=re.get(S.location.pathname);Ve&&Ve.has(z.pathname)?He={currentLocation:S.location,nextLocation:z}:re.has(z.pathname)&&(He={currentLocation:z,nextLocation:S.location})}else if(ue){let Ve=re.get(S.location.pathname);Ve?Ve.add(z.pathname):(Ve=new Set([z.pathname]),re.set(S.location.pathname,Ve)),He={currentLocation:S.location,nextLocation:z}}_t({...B,actionData:ie,loaderData:ze,historyAction:j,location:z,initialized:!0,renderFallback:!1,navigation:Eg,revalidation:"idle",restoreScrollPosition:Be,preventScrollReset:Se,blockers:Fe},{viewTransitionOpts:He,flushSync:K===!0}),j="POP",Z=!1,ue=!1,te=!1,le=!1,F?.resolve(),F=null,Le?.resolve(),Le=null}async function ta(z,B){if(F?.resolve(),F=null,typeof z=="number"){F||(F=Cw());let Pt=F.promise;return t.history.go(z),Pt}let K=Bv(S.location,S.matches,d,z,B?.fromRouteId,B?.relative),{path:ne,submission:ie,error:ze}=pw(!1,K,B),Fe;B?.mask&&(Fe={pathname:"",search:"",hash:"",...typeof B.mask=="string"?Ja(B.mask):{...S.location.mask,...B.mask}});let Be=S.location,Se=Su(Be,ne,B&&B.state,void 0,Fe);Se={...Se,...t.history.encodeLocation(Se)};let He=B&&B.replace!=null?B.replace:void 0,Ve="PUSH";He===!0?Ve="REPLACE":He===!1||ie!=null&&Zn(ie.formMethod)&&ie.formAction===S.location.pathname+S.location.search&&(Ve="REPLACE");let rt=B&&"preventScrollReset"in B?B.preventScrollReset===!0:void 0,qe=(B&&B.flushSync)===!0,mt=ti({currentLocation:Be,nextLocation:Se,historyAction:Ve});if(mt){br(mt,{state:"blocked",location:Se,proceed(){br(mt,{state:"proceeding",proceed:void 0,reset:void 0,location:Se}),ta(z,B)},reset(){let Pt=new Map(S.blockers);Pt.set(mt,Dc),_t({blockers:Pt})}});return}await Vt(Ve,Se,{submission:ie,pendingError:ze,preventScrollReset:rt,replace:B&&B.replace,enableViewTransition:B&&B.viewTransition,flushSync:qe,callSiteDefaultShouldRevalidate:B&&B.defaultShouldRevalidate})}function In(){Le||(Le=Cw()),zt(),_t({revalidation:"loading"});let z=Le.promise;return S.navigation.state==="submitting"?z:S.navigation.state==="idle"?(Vt(S.historyAction,S.location,{startUninterruptedRevalidation:!0}),z):(Vt(j||S.historyAction,S.navigation.location,{overrideNavigation:S.navigation,enableViewTransition:ue===!0}),z)}async function Vt(z,B,K){ee&&ee.abort(),ee=null,j=z,te=(K&&K.startUninterruptedRevalidation)===!0,ld(S.location,S.matches),Z=(K&&K.preventScrollReset)===!0,ue=(K&&K.enableViewTransition)===!0;let ne=c.activeRoutes,ie=K?.initialHydration&&S.matches&&S.matches.length>0&&!T?S.matches:fa(ne,B,d,!1,c.branches),ze=(K&&K.flushSync)===!0;if(ie&&S.initialized&&!le&&YR(S.location,B)&&!(K&&K.submission&&Zn(K.submission.formMethod))){Zt(B,{matches:ie},{flushSync:ze});return}let Fe=Li(ie,ne,B.pathname);if(Fe.active&&Fe.matches&&(ie=Fe.matches),!ie){let{error:Ht,notFoundMatches:Ct,route:ht}=wo(B.pathname);Zt(B,{matches:Ct,loaderData:{},errors:{[ht.id]:Ht}},{flushSync:ze});return}let Be=K&&K.overrideNavigation?{...K.overrideNavigation,matches:ie,historyAction:z}:void 0;ee=new AbortController;let Se=sl(t.history,B,ee.signal,K&&K.submission),He=t.getContext?await t.getContext():new ow,Ve;if(K&&K.pendingError)Ve=[is(ie).route.id,{type:"error",error:K.pendingError}];else if(K&&K.submission&&Zn(K.submission.formMethod)){let Ht=await Qe(Se,B,K.submission,ie,z,He,Fe.active,K&&K.initialHydration===!0,{replace:K.replace,flushSync:ze});if(Ht.shortCircuited)return;if(Ht.pendingActionResult){let[Ct,ht]=Ht.pendingActionResult;if(Tr(ht)&&Tu(ht.error)&&ht.error.status===404){ee=null,Zt(B,{matches:Ht.matches,loaderData:{},errors:{[Ct]:ht.error}});return}}ie=Ht.matches||ie,Ve=Ht.pendingActionResult,Be=Ag(B,ie,z,K.submission),ze=!1,Fe.active=!1,Se=sl(t.history,Se.url,Se.signal)}let{shortCircuited:rt,matches:qe,loaderData:mt,errors:Pt,workingFetchers:dn}=await st(Se,B,ie,z,He,Fe.active,Be,K&&K.submission,K&&K.fetcherSubmission,K&&K.replace,K&&K.initialHydration===!0,ze,Ve,K&&K.callSiteDefaultShouldRevalidate);rt||(ee=null,Zt(B,{matches:qe||ie,...xw(Ve),loaderData:mt,errors:Pt,...dn?{fetchers:dn}:{}}))}async function Qe(z,B,K,ne,ie,ze,Fe,Be,Se={}){zt();let He=r8(B,ne,ie,K);if(_t({navigation:He},{flushSync:Se.flushSync===!0}),Fe){let qe=await ks(ne,B.pathname,z.signal);if(qe.type==="aborted")return{shortCircuited:!0};if(qe.type==="error"){if(qe.partialMatches.length===0){let{matches:Pt,route:dn}=dh(c.activeRoutes);return{matches:Pt,pendingActionResult:[dn.id,{type:"error",error:qe.error}]}}let mt=is(qe.partialMatches).route.id;return{matches:qe.partialMatches,pendingActionResult:[mt,{type:"error",error:qe.error}]}}else if(qe.matches)ne=qe.matches;else{let{notFoundMatches:mt,error:Pt,route:dn}=wo(B.pathname);return{matches:mt,pendingActionResult:[dn.id,{type:"error",error:Pt}]}}}let Ve,rt=Vh(ne,B);if(!rt.route.action&&!rt.route.lazy)Ve={type:"error",error:Ur(405,{method:z.method,pathname:B.pathname,routeId:rt.route.id})};else{let qe=yl(s,l,z,B,ne,rt,Be?[]:r,ze),mt=await kt(z,B,qe,ze,null);if(Ve=mt[rt.route.id],!Ve){for(let Pt of ne)if(mt[Pt.route.id]){Ve=mt[Pt.route.id];break}}if(z.signal.aborted)return{shortCircuited:!0}}if(Zs(Ve)){let qe;return Se&&Se.replace!=null?qe=Se.replace:qe=yw(Ve.response.headers.get("Location"),new URL(z.url),d,t.history)===S.location.pathname+S.location.search,await et(z,Ve,!0,{submission:K,replace:qe}),{shortCircuited:!0}}if(Tr(Ve)){let qe=is(ne,rt.route.id);return(Se&&Se.replace)!==!0&&(j="PUSH"),{matches:ne,pendingActionResult:[qe.route.id,Ve,rt.route.id]}}return{matches:ne,pendingActionResult:[rt.route.id,Ve]}}async function st(z,B,K,ne,ie,ze,Fe,Be,Se,He,Ve,rt,qe,mt){let Pt=Fe||Ag(B,K,ne,Be),dn=Be||Se||Sw(Pt),Ht=!te&&!Ve;if(ze){if(Ht){let Hn=It(qe);_t({navigation:Pt,...Hn!==void 0?{actionData:Hn}:{}},{flushSync:rt})}let pt=await ks(K,B.pathname,z.signal);if(pt.type==="aborted")return{shortCircuited:!0};if(pt.type==="error"){if(pt.partialMatches.length===0){let{matches:Qn,route:cr}=dh(c.activeRoutes);return{matches:Qn,loaderData:{},errors:{[cr.id]:pt.error}}}let Hn=is(pt.partialMatches).route.id;return{matches:pt.partialMatches,loaderData:{},errors:{[Hn]:pt.error}}}else if(pt.matches)K=pt.matches;else{let{error:Hn,notFoundMatches:Qn,route:cr}=wo(B.pathname);return{matches:Qn,loaderData:{},errors:{[cr.id]:Hn}}}}let Ct=c.activeRoutes,{dsMatches:ht,revalidatingFetchers:Bn}=fw(z,ie,s,l,t.history,S,K,dn,B,Ve?[]:r,Ve===!0,le,H,be,ke,pe,Ct,d,t.patchRoutesOnNavigation!=null,c.branches,qe,mt);if(N=++W,!t.dataStrategy&&!ht.some(pt=>pt.shouldLoad)&&!ht.some(pt=>pt.route.middleware&&pt.route.middleware.length>0)&&Bn.length===0){let pt=new Map(S.fetchers),Hn=Sa(pt);return Zt(B,{matches:K,loaderData:{},errors:qe&&Tr(qe[1])?{[qe[0]]:qe[1].error}:null,...xw(qe),...Hn?{fetchers:pt}:{}},{flushSync:rt}),{shortCircuited:!0}}if(Ht){let pt={};if(!ze){pt.navigation=Pt;let Hn=It(qe);Hn!==void 0&&(pt.actionData=Hn)}Bn.length>0&&(pt.fetchers=Et(Bn)),_t(pt,{flushSync:rt})}Bn.forEach(pt=>{Xn(pt.key),pt.controller&&Q.set(pt.key,pt.controller)});let ni=()=>Bn.forEach(pt=>Xn(pt.key));ee&&ee.signal.addEventListener("abort",ni);let{loaderResults:aa,fetcherResults:ia}=await nn(ht,Bn,z,B,ie);if(z.signal.aborted)return{shortCircuited:!0};ee&&ee.signal.removeEventListener("abort",ni),Bn.forEach(pt=>Q.delete(pt.key));let Ca=hh(aa);if(Ca)return await et(z,Ca.result,!0,{replace:He}),{shortCircuited:!0};if(Ca=hh(ia),Ca)return pe.add(Ca.key),await et(z,Ca.result,!0,{replace:He}),{shortCircuited:!0};let kr=new Map(S.fetchers),{loaderData:Di,errors:bn}=kw(S,K,aa,qe,Bn,ia,kr);Ve&&S.errors&&(bn={...S.errors,...bn});let xo=Sa(kr),Vn=ra(N,kr),Po=xo||Vn||Bn.length>0;return{matches:K,loaderData:Di,errors:bn,...Po?{workingFetchers:kr}:{}}}function It(z){if(z&&!Tr(z[1]))return{[z[0]]:z[1].data};if(S.actionData)return Object.keys(S.actionData).length===0?null:S.actionData}function Et(z){let B=new Map(S.fetchers);return z.forEach(K=>{let ne=B.get(K.key),ie=Mc(void 0,ne?ne.data:void 0);B.set(K.key,ie)}),B}async function Dn(z,B,K,ne){Xn(z);let ie=(ne&&ne.flushSync)===!0,ze=c.activeRoutes,Fe=Bv(S.location,S.matches,d,K,B,ne?.relative),Be=fa(ze,Fe,d,!1,c.branches),Se=Li(Be,ze,Fe);if(Se.active&&Se.matches&&(Be=Se.matches),!Be){xt(z,B,Ur(404,{pathname:Fe}),{flushSync:ie});return}let{path:He,submission:Ve,error:rt}=pw(!0,Fe,ne);if(rt){xt(z,B,rt,{flushSync:ie});return}let qe=t.getContext?await t.getContext():new ow,mt=(ne&&ne.preventScrollReset)===!0;if(Ve&&Zn(Ve.formMethod)){await xa(z,B,He,Be,qe,Se.active,ie,mt,Ve,ne&&ne.defaultShouldRevalidate);return}ke.set(z,{routeId:B,path:He}),await tt(z,B,He,Be,qe,Se.active,ie,mt,Ve)}async function xa(z,B,K,ne,ie,ze,Fe,Be,Se,He){zt(),ke.delete(z);let Ve=S.fetchers.get(z);At(z,a8(Se,Ve),{flushSync:Fe});let rt=new AbortController,qe=sl(t.history,K,rt.signal,Se);if(ze){let Ft=await ks(ne,new URL(qe.url).pathname,qe.signal,z);if(Ft.type==="aborted")return;if(Ft.type==="error"){xt(z,B,Ft.error,{flushSync:Fe});return}else if(Ft.matches)ne=Ft.matches;else{xt(z,B,Ur(404,{pathname:K}),{flushSync:Fe});return}}let mt=Vh(ne,K);if(!mt.route.action&&!mt.route.lazy){let Ft=Ur(405,{method:Se.formMethod,pathname:K,routeId:B});xt(z,B,Ft,{flushSync:Fe});return}Q.set(z,rt);let Pt=W,dn=yl(s,l,qe,K,ne,mt,r,ie),Ht=await kt(qe,K,dn,ie,z),Ct=Ht[mt.route.id];if(!Ct){for(let Ft of dn)if(Ht[Ft.route.id]){Ct=Ht[Ft.route.id];break}}if(qe.signal.aborted){Q.get(z)===rt&&Q.delete(z);return}if(be.has(z)){if(Zs(Ct)||Tr(Ct)){At(z,Na(void 0));return}}else{if(Zs(Ct))if(Q.delete(z),N>Pt){At(z,Na(void 0));return}else return pe.add(z),At(z,Mc(Se)),et(qe,Ct,!1,{fetcherSubmission:Se,preventScrollReset:Be});if(Tr(Ct)){xt(z,B,Ct.error);return}}let ht=S.navigation.location||S.location,Bn=sl(t.history,ht,rt.signal),ni=c.activeRoutes,aa=S.navigation.state!=="idle"?fa(ni,S.navigation.location,d,!1,c.branches):S.matches;ot(aa,"Didn't find any matches after fetcher action");let ia=++W;q.set(z,ia);let{dsMatches:Ca,revalidatingFetchers:kr}=fw(Bn,ie,s,l,t.history,S,aa,Se,ht,r,!1,le,H,be,ke,pe,ni,d,t.patchRoutesOnNavigation!=null,c.branches,[mt.route.id,Ct],He),Di=Mc(Se,Ct.data),bn=new Map(S.fetchers);bn.set(z,Di),kr.filter(Ft=>Ft.key!==z).forEach(Ft=>{let ri=Ft.key,So=bn.get(ri),cd=Mc(void 0,So?So.data:void 0);bn.set(ri,cd),Xn(ri),Ft.controller&&Q.set(ri,Ft.controller)}),_t({fetchers:bn});let xo=()=>kr.forEach(Ft=>Xn(Ft.key));rt.signal.addEventListener("abort",xo);let{loaderResults:Vn,fetcherResults:Po}=await nn(Ca,kr,Bn,ht,ie);if(rt.signal.aborted)return;rt.signal.removeEventListener("abort",xo),q.delete(z),Q.delete(z),kr.forEach(Ft=>Q.delete(Ft.key));let pt=S.fetchers.has(z),Hn=Ft=>{if(!pt)return Ft;let ri=new Map(Ft.fetchers);return ri.set(z,Na(Ct.data)),{...Ft,fetchers:ri}},Qn=hh(Vn);if(Qn)return S=Hn(S),et(Bn,Qn.result,!1,{preventScrollReset:Be});if(Qn=hh(Po),Qn)return pe.add(Qn.key),S=Hn(S),et(Bn,Qn.result,!1,{preventScrollReset:Be});let cr=new Map(S.fetchers);pt&&cr.set(z,Na(Ct.data));let{loaderData:Mi,errors:Ni}=kw(S,aa,Vn,void 0,kr,Po,cr);ra(ia,cr),S.navigation.state==="loading"&&ia>N?(ot(j,"Expected pending action"),ee&&ee.abort(),Zt(S.navigation.location,{matches:aa,loaderData:Mi,errors:Ni,fetchers:cr})):(_t({errors:Ni,loaderData:ww(S.loaderData,Mi,aa,Ni),fetchers:cr}),le=!1)}async function tt(z,B,K,ne,ie,ze,Fe,Be,Se){let He=S.fetchers.get(z);At(z,Mc(Se,He?He.data:void 0),{flushSync:Fe});let Ve=new AbortController,rt=sl(t.history,K,Ve.signal);if(ze){let Ct=await ks(ne,new URL(rt.url).pathname,rt.signal,z);if(Ct.type==="aborted")return;if(Ct.type==="error"){xt(z,B,Ct.error,{flushSync:Fe});return}else if(Ct.matches)ne=Ct.matches;else{xt(z,B,Ur(404,{pathname:K}),{flushSync:Fe});return}}let qe=Vh(ne,K);Q.set(z,Ve);let mt=W,Pt=yl(s,l,rt,K,ne,qe,r,ie),dn=await kt(rt,K,Pt,ie,z),Ht=dn[qe.route.id];if(!Ht){for(let Ct of ne)if(dn[Ct.route.id]){Ht=dn[Ct.route.id];break}}if(Q.get(z)===Ve&&Q.delete(z),!rt.signal.aborted){if(be.has(z)){At(z,Na(void 0));return}if(Zs(Ht))if(N>mt){At(z,Na(void 0));return}else{pe.add(z),await et(rt,Ht,!1,{preventScrollReset:Be});return}if(Tr(Ht)){xt(z,B,Ht.error);return}At(z,Na(Ht.data))}}async function et(z,B,K,{submission:ne,fetcherSubmission:ie,preventScrollReset:ze,replace:Fe}={}){K||(F?.resolve(),F=null),B.response.headers.has("X-Remix-Revalidate")&&(le=!0);let Be=B.response.headers.get("Location");ot(Be,"Expected a Location header on the redirect Response"),Be=yw(Be,new URL(z.url),d,t.history);let Se=Su(S.location,Be,{_isRedirect:!0});if(n){let Pt=!1;if(B.response.headers.has("X-Remix-Reload-Document"))Pt=!0;else if(Ly(Be)){const dn=PS(e,Be,!0);Pt=dn.origin!==e.location.origin||Jr(dn.pathname,d)==null}if(Pt){Fe?e.location.replace(Be):e.location.assign(Be);return}}ee=null;let He=Fe===!0||B.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:Ve,formAction:rt,formEncType:qe}=S.navigation;!ne&&!ie&&Ve&&rt&&qe&&(ne=Sw(S.navigation));let mt=ne||ie;if(LR.has(B.response.status)&&mt&&Zn(mt.formMethod))await Vt(He,Se,{submission:{...mt,formAction:Be},preventScrollReset:ze||Z,enableViewTransition:K?ue:void 0});else{let Pt=Ag(Se,[],He,ne);await Vt(He,Se,{overrideNavigation:Pt,fetcherSubmission:ie,preventScrollReset:ze||Z,enableViewTransition:K?ue:void 0})}}async function kt(z,B,K,ne,ie){let ze,Fe={};try{ze=await BR(h,z,B,K,ie,ne,!1)}catch(Be){return K.filter(Se=>Se.shouldLoad).forEach(Se=>{Fe[Se.route.id]={type:"error",error:Be}}),Fe}if(z.signal.aborted)return Fe;if(!Zn(z.method))for(let Be of K){if(ze[Be.route.id]?.type==="error")break;!ze.hasOwnProperty(Be.route.id)&&!S.loaderData.hasOwnProperty(Be.route.id)&&(!S.errors||!S.errors.hasOwnProperty(Be.route.id))&&Be.shouldCallHandler()&&(ze[Be.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${Be.route.id}`)})}for(let[Be,Se]of Object.entries(ze))if(QR(Se)){let He=Se.result;Fe[Be]={type:"redirect",response:GR(He,z,Be,K,d)}}else Fe[Be]=await WR(Se);return Fe}async function nn(z,B,K,ne,ie){let ze=kt(K,ne,z,ie,null),Fe=Promise.all(B.map(async He=>{if(He.matches&&He.match&&He.request&&He.controller){let rt=(await kt(He.request,He.path,He.matches,ie,He.key))[He.match.route.id];return{[He.key]:rt}}else return Promise.resolve({[He.key]:{type:"error",error:Ur(404,{pathname:He.path})}})})),Be=await ze,Se=(await Fe).reduce((He,Ve)=>Object.assign(He,Ve),{});return{loaderResults:Be,fetcherResults:Se}}function zt(){le=!0,ke.forEach((z,B)=>{Q.has(B)&&H.add(B),Xn(B)})}function At(z,B,K={}){let ne=new Map(S.fetchers);ne.set(z,B),_t({fetchers:ne},{flushSync:(K&&K.flushSync)===!0})}function xt(z,B,K,ne={}){let ie=is(S.matches,B),ze=new Map(S.fetchers);Tn(ze,z),_t({errors:{[ie.route.id]:K},fetchers:ze},{flushSync:(ne&&ne.flushSync)===!0})}function na(z){return de.set(z,(de.get(z)||0)+1),be.has(z)&&be.delete(z),S.fetchers.get(z)||IR}function Zl(z,B){Xn(z,B?.reason),At(z,Na(null))}function Tn(z,B){let K=S.fetchers.get(B);Q.has(B)&&!(K&&K.state==="loading"&&q.has(B))&&Xn(B),ke.delete(B),q.delete(B),pe.delete(B),be.delete(B),H.delete(B),z.delete(B)}function ei(z){let B=(de.get(z)||0)-1;B<=0?(de.delete(z),be.add(z)):de.set(z,B),_t({fetchers:new Map(S.fetchers)})}function Xn(z,B){let K=Q.get(z);K&&(K.abort(B),Q.delete(z))}function Pa(z,B){for(let K of z){let ne=B.get(K);ot(ne,`Expected fetcher: ${K}`);let ie=Na(ne.data);B.set(K,ie)}}function Sa(z){let B=[],K=!1;for(let ne of pe){let ie=z.get(ne);ot(ie,`Expected fetcher: ${ne}`),ie.state==="loading"&&(pe.delete(ne),B.push(ne),K=!0)}return Pa(B,z),K}function ra(z,B){let K=[];for(let[ne,ie]of q)if(ie<z){let ze=B.get(ne);ot(ze,`Expected fetcher: ${ne}`),ze.state==="loading"&&(Xn(ne),q.delete(ne),K.push(ne))}return Pa(K,B),K.length>0}function bs(z,B){let K=S.blockers.get(z)||Dc;return je.get(z)!==B&&je.set(z,B),K}function Ri(z){S.blockers.delete(z),je.delete(z)}function br(z,B){let K=S.blockers.get(z)||Dc;ot(K.state==="unblocked"&&B.state==="blocked"||K.state==="blocked"&&B.state==="blocked"||K.state==="blocked"&&B.state==="proceeding"||K.state==="blocked"&&B.state==="unblocked"||K.state==="proceeding"&&B.state==="unblocked",`Invalid blocker state transition: ${K.state} -> ${B.state}`);let ne=new Map(S.blockers);ne.set(z,B),_t({blockers:ne})}function ti({currentLocation:z,nextLocation:B,historyAction:K}){if(je.size===0)return;je.size>1&&cn(!1,"A router only supports one blocker at a time");let ne=Array.from(je.entries()),[ie,ze]=ne[ne.length-1],Fe=S.blockers.get(ie);if(!(Fe&&Fe.state==="proceeding")&&ze({currentLocation:z,nextLocation:B,historyAction:K}))return ie}function wo(z){let B=Ur(404,{pathname:z}),K=c.activeRoutes,{matches:ne,route:ie}=dh(K);return{notFoundMatches:ne,route:ie,error:B}}function od(z,B,K){if(b=z,P=B,x=K||null,!A&&S.navigation===Eg){A=!0;let ne=Xl(S.location,S.matches);ne!=null&&_t({restoreScrollPosition:ne})}return()=>{b=null,P=null,x=null}}function Jl(z,B){return x&&x(z,B.map(ne=>aR(ne,S.loaderData)))||z.key}function ld(z,B){if(b&&P){let K=Jl(z,B);b[K]=P()}}function Xl(z,B){if(b){let K=Jl(z,B),ne=b[K];if(typeof ne=="number")return ne}return null}function Li(z,B,K){if(t.patchRoutesOnNavigation){let ne=c.branches;if(z){if(Object.keys(z[0].params).length>0)return{active:!0,matches:fa(B,K,d,!0,ne)}}else return{active:!0,matches:fa(B,K,d,!0,ne)||[]}}return{active:!1,matches:null}}async function ks(z,B,K,ne){if(!t.patchRoutesOnNavigation)return{type:"success",matches:z};let ie=z;for(;;){let ze=l;try{await t.patchRoutesOnNavigation({signal:K,path:B,matches:ie,fetcherKey:ne,patch:(He,Ve)=>{K.aborted||mw(He,Ve,c,ze,s,!1)}})}catch(He){return{type:"error",error:He,partialMatches:ie}}if(K.aborted)return{type:"aborted"};let Fe=c.branches,Be=fa(c.activeRoutes,B,d,!1,Fe),Se=null;if(Be){if(Object.keys(Be[0].params).length===0)return{type:"success",matches:Be};if(Se=fa(c.activeRoutes,B,d,!0,Fe),!(Se&&ie.length<Se.length&&Ii(ie,Se.slice(0,ie.length))))return{type:"success",matches:Be}}if(Se||(Se=fa(c.activeRoutes,B,d,!0,Fe)),!Se||Ii(ie,Se))return{type:"success",matches:null};ie=Se}}function Ii(z,B){return z.length===B.length&&z.every((K,ne)=>K.route.id===B[ne].route.id)}function Ql(z){l={},c.setHmrRoutes(Cu(z,s,void 0,l))}function ws(z,B,K=!1){mw(z,B,c,l,s,K),c.hasHMRRoutes||_t({})}return I={get basename(){return d},get future(){return p},get state(){return S},get routes(){return c.stableRoutes},get branches(){return c.branches},get manifest(){return l},get window(){return e},initialize:St,subscribe:jt,enableScrollRestoration:od,navigate:ta,fetch:Dn,revalidate:In,createHref:z=>t.history.createHref(z),encodeLocation:z=>t.history.encodeLocation(z),getFetcher:na,resetFetcher:Zl,deleteFetcher:ei,dispose:un,getBlocker:bs,deleteBlocker:Ri,patchRoutes:ws,_internalFetchControllers:Q,_internalSetRoutes:Ql,_internalSetStateDoNotUseOrYouWillBreakYourApp(z){_t(z)}},t.instrumentations&&(I=xR(I,t.instrumentations.map(z=>z.router).filter(Boolean))),I}function OR(t){return t!=null&&("formData"in t&&t.formData!=null||"body"in t&&t.body!==void 0)}function Bv(t,e,n,r,a,s){let l,c;if(a){l=[];for(let h of e)if(l.push(h),h.route.id===a){c=h;break}}else l=e,c=e[e.length-1];let d=Wu(r||".",yf(l),Jr(t.pathname,n)||t.pathname,s==="path");if(r==null&&(d.search=t.search,d.hash=t.hash),(r==null||r===""||r===".")&&c){let h=Ny(d.search);if(c.route.index&&!h)d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index";else if(!c.route.index&&h){let p=new URLSearchParams(d.search),m=p.getAll("index");p.delete("index"),m.filter(y=>y).forEach(y=>p.append("index",y));let v=p.toString();d.search=v?`?${v}`:""}}return n!=="/"&&(d.pathname=gR({basename:n,pathname:d.pathname})),Wa(d)}function pw(t,e,n){if(!n||!OR(n))return{path:e};if(n.formMethod&&!n8(n.formMethod))return{path:e,error:Ur(405,{method:n.formMethod})};let r=()=>({path:e,error:Ur(400,{type:"invalid-body"})}),s=(n.formMethod||"get").toUpperCase(),l=WS(e);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!Zn(s))return r();let m=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((v,[y,b])=>`${v}${y}=${b}
10
- `,""):String(n.body);return{path:e,submission:{formMethod:s,formAction:l,formEncType:n.formEncType,formData:void 0,json:void 0,text:m}}}else if(n.formEncType==="application/json"){if(!Zn(s))return r();try{let m=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:e,submission:{formMethod:s,formAction:l,formEncType:n.formEncType,formData:void 0,json:m,text:void 0}}}catch{return r()}}}ot(typeof FormData=="function","FormData is not available in this environment");let c,d;if(n.formData)c=Wv(n.formData),d=n.formData;else if(n.body instanceof FormData)c=Wv(n.body),d=n.body;else if(n.body instanceof URLSearchParams)c=n.body,d=bw(c);else if(n.body==null)c=new URLSearchParams,d=new FormData;else try{c=new URLSearchParams(n.body),d=bw(c)}catch{return r()}let h={formMethod:s,formAction:l,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:d,json:void 0,text:void 0};if(Zn(h.formMethod))return{path:e,submission:h};let p=Ja(e);return t&&p.search&&Ny(p.search)&&c.append("index",""),p.search=`?${c}`,{path:Wa(p),submission:h}}function fw(t,e,n,r,a,s,l,c,d,h,p,m,v,y,b,x,P,A,L,T,E,D){let $=E?Tr(E[1])?E[1].error:E[1].data:void 0,I=a.createURL(s.location),S=a.createURL(d),j;if(p&&s.errors){let te=Object.keys(s.errors)[0];j=l.findIndex(le=>le.route.id===te)}else if(E&&Tr(E[1])){let te=E[0];j=l.findIndex(le=>le.route.id===te)-1}let F=E?E[1].statusCode:void 0,Z=F&&F>=400,ee={currentUrl:I,currentParams:s.matches[0]?.params||{},nextUrl:S,nextParams:l[0].params,...c,actionResult:$,actionStatus:F},ue=qu(l),re=l.map((te,le)=>{let{route:H}=te,Q=null;if(j!=null&&le>j)Q=!1;else if(H.lazy)Q=!0;else if(!Dy(H))Q=!1;else if(p){let{shouldLoad:pe}=zS(H,s.loaderData,s.errors);Q=pe}else jR(s.loaderData,s.matches[le],te)&&(Q=!0);if(Q!==null)return Vv(n,r,t,d,ue,te,h,e,Q);let W=!1;typeof D=="boolean"?W=D:Z?W=!1:(m||I.pathname+I.search===S.pathname+S.search||I.search!==S.search||zR(s.matches[le],te))&&(W=!0);let N={...ee,defaultShouldRevalidate:W},q=lu(te,N);return Vv(n,r,t,d,ue,te,h,e,q,N,D)}),ae=[];return b.forEach((te,le)=>{if(p||!l.some(de=>de.route.id===te.routeId)||y.has(le))return;let H=s.fetchers.get(le),Q=H&&H.state!=="idle"&&H.data===void 0,W=fa(P,te.path,A??"/",!1,T);if(!W){if(L&&Q)return;ae.push({key:le,routeId:te.routeId,path:te.path,matches:null,match:null,request:null,controller:null});return}if(x.has(le))return;let N=Vh(W,te.path),q=new AbortController,pe=sl(a,te.path,q.signal),ke=null;if(v.has(le))v.delete(le),ke=yl(n,r,pe,te.path,W,N,h,e);else if(Q)m&&(ke=yl(n,r,pe,te.path,W,N,h,e));else{let de;typeof D=="boolean"?de=D:Z?de=!1:de=m;let be={...ee,defaultShouldRevalidate:de};lu(N,be)&&(ke=yl(n,r,pe,te.path,W,N,h,e,be))}ke&&ae.push({key:le,routeId:te.routeId,path:te.path,matches:ke,match:N,request:pe,controller:q})}),{dsMatches:re,revalidatingFetchers:ae}}function Dy(t){return t.loader!=null||t.middleware!=null&&t.middleware.length>0}function zS(t,e,n){if(t.lazy)return{shouldLoad:!0,renderFallback:!0};if(!Dy(t))return{shouldLoad:!1,renderFallback:!1};let r=e!=null&&t.id in e,a=n!=null&&n[t.id]!==void 0;if(!r&&a)return{shouldLoad:!1,renderFallback:!1};if(typeof t.loader=="function"&&t.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let s=!r&&!a;return{shouldLoad:s,renderFallback:s}}function jR(t,e,n){let r=!e||n.route.id!==e.route.id,a=!t.hasOwnProperty(n.route.id);return r||a}function zR(t,e){let n=t.route.path;return t.pathname!==e.pathname||n!=null&&n.endsWith("*")&&t.params["*"]!==e.params["*"]}function lu(t,e){if(t.route.shouldRevalidate){let n=t.route.shouldRevalidate(e);if(typeof n=="boolean")return n}return e.defaultShouldRevalidate}function mw(t,e,n,r,a,s){let l;if(t){let h=r[t];ot(h,`No route found to patch children into: routeId = ${t}`),h.children||(h.children=[]),l=h.children}else l=n.activeRoutes;let c=[],d=[];if(e.forEach(h=>{let p=l.find(m=>FS(h,m));p?d.push({existingRoute:p,newRoute:h}):c.push(h)}),c.length>0){let h=Cu(c,a,[t||"_","patch",String(l?.length||"0")],r);l.push(...h)}if(s&&d.length>0)for(let h=0;h<d.length;h++){let{existingRoute:p,newRoute:m}=d[h],v=p,[y]=Cu([m],a,[],{},!0);Object.assign(v,{element:y.element?y.element:v.element,errorElement:y.errorElement?y.errorElement:v.errorElement,hydrateFallbackElement:y.hydrateFallbackElement?y.hydrateFallbackElement:v.hydrateFallbackElement})}n.hasHMRRoutes||n.setRoutes([...n.activeRoutes])}function FS(t,e){return"id"in t&&"id"in e&&t.id===e.id?!0:t.index===e.index&&t.path===e.path&&t.caseSensitive===e.caseSensitive?(!t.children||t.children.length===0)&&(!e.children||e.children.length===0)?!0:t.children?.every((n,r)=>e.children?.some(a=>FS(n,a)))??!1:!1}var gw=new WeakMap,US=({key:t,route:e,manifest:n,mapRouteProperties:r})=>{let a=n[e.id];if(ot(a,"No route found in manifest"),!a.lazy||typeof a.lazy!="object")return;let s=a.lazy[t];if(!s)return;let l=gw.get(a);l||(l={},gw.set(a,l));let c=l[t];if(c)return c;let d=(async()=>{let h=eR(t),m=a[t]!==void 0&&t!=="hasErrorBoundary";if(h)cn(!h,"Route property "+t+" is not a supported lazy route property. This property will be ignored."),l[t]=Promise.resolve();else if(m)cn(!1,`Route "${a.id}" has a static property "${t}" defined. The lazy property will be ignored.`);else{let v=await s();v!=null&&(Object.assign(a,{[t]:v}),Object.assign(a,r(a)))}typeof a.lazy=="object"&&(a.lazy[t]=void 0,Object.values(a.lazy).every(v=>v===void 0)&&(a.lazy=void 0))})();return l[t]=d,d},vw=new WeakMap;function FR(t,e,n,r,a){let s=n[t.id];if(ot(s,"No route found in manifest"),!t.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof t.lazy=="function"){let p=vw.get(s);if(p)return{lazyRoutePromise:p,lazyHandlerPromise:p};let m=(async()=>{ot(typeof t.lazy=="function","No lazy route function found");let v=await t.lazy(),y={};for(let b in v){let x=v[b];if(x===void 0)continue;let P=nR(b),L=s[b]!==void 0&&b!=="hasErrorBoundary";P?cn(!P,"Route property "+b+" is not a supported property to be returned from a lazy route function. This property will be ignored."):L?cn(!L,`Route "${s.id}" has a static property "${b}" defined but its lazy function is also returning a value for this property. The lazy route property "${b}" will be ignored.`):y[b]=x}Object.assign(s,y),Object.assign(s,{...r(s),lazy:void 0})})();return vw.set(s,m),m.catch(()=>{}),{lazyRoutePromise:m,lazyHandlerPromise:m}}let l=Object.keys(t.lazy),c=[],d;for(let p of l){if(a&&a.includes(p))continue;let m=US({key:p,route:t,manifest:n,mapRouteProperties:r});m&&(c.push(m),p===e&&(d=m))}let h=c.length>0?Promise.all(c).then(()=>{}):void 0;return h?.catch(()=>{}),d?.catch(()=>{}),{lazyRoutePromise:h,lazyHandlerPromise:d}}async function _w(t){let e=t.matches.filter(a=>a.shouldLoad),n={};return(await Promise.all(e.map(a=>a.resolve()))).forEach((a,s)=>{n[e[s].route.id]=a}),n}async function UR(t){return t.matches.some(e=>e.route.middleware)?$S(t,()=>_w(t)):_w(t)}function $S(t,e){return $R(t,e,r=>{if(t8(r))throw r;return r},JR,n);function n(r,a,s){if(s)return Promise.resolve(Object.assign(s.value,{[a]:{type:"error",result:r}}));{let{matches:l}=t,c=Math.min(Math.max(l.findIndex(h=>h.route.id===a),0),Math.max(l.findIndex(h=>h.shouldCallHandler()),0)),d=is(l,l[c].route.id).route.id;return Promise.resolve({[d]:{type:"error",result:r}})}}}async function $R(t,e,n,r,a){let{matches:s,...l}=t,c=s.flatMap(h=>h.route.middleware?h.route.middleware.map(p=>[h.route.id,p]):[]);return await BS(l,c,e,n,r,a)}async function BS(t,e,n,r,a,s,l=0){let{request:c}=t;if(c.signal.aborted)throw c.signal.reason??new Error(`Request aborted: ${c.method} ${c.url}`);let d=e[l];if(!d)return await n();let[h,p]=d,m,v=async()=>{if(m)throw new Error("You may only call `next()` once per middleware");try{return m={value:await BS(t,e,n,r,a,s,l+1)},m.value}catch(y){return m={value:await s(y,h,m)},m.value}};try{let y=await p(t,v),b=y!=null?r(y):void 0;return a(b)?b:m?b??m.value:(m={value:await v()},m.value)}catch(y){return await s(y,h,m)}}function VS(t,e,n,r,a){let s=US({key:"middleware",route:r.route,manifest:e,mapRouteProperties:t}),l=FR(r.route,Zn(n.method)?"action":"loader",e,t,a);return{middleware:s,route:l.lazyRoutePromise,handler:l.lazyHandlerPromise}}function Vv(t,e,n,r,a,s,l,c,d,h=null,p){let m=!1,v=VS(t,e,n,s,l);return{...s,_lazyPromises:v,shouldLoad:d,shouldRevalidateArgs:h,shouldCallHandler(y){return m=!0,h?typeof p=="boolean"?lu(s,{...h,defaultShouldRevalidate:p}):typeof y=="boolean"?lu(s,{...h,defaultShouldRevalidate:y}):lu(s,h):d},resolve(y){let{lazy:b,loader:x,middleware:P}=s.route,A=m||d||y&&!Zn(n.method)&&(b||x),L=P&&P.length>0&&!x&&!b;return A&&(Zn(n.method)||!L)?VR({request:n,path:r,pattern:a,match:s,lazyHandlerPromise:v?.handler,lazyRoutePromise:v?.route,handlerOverride:y,scopedContext:c}):Promise.resolve({type:"data",result:void 0})}}}function yl(t,e,n,r,a,s,l,c,d=null){return a.map(h=>h.route.id!==s.route.id?{...h,shouldLoad:!1,shouldRevalidateArgs:d,shouldCallHandler:()=>!1,_lazyPromises:VS(t,e,n,h,l),resolve:()=>Promise.resolve({type:"data",result:void 0})}:Vv(t,e,n,r,qu(a),h,l,c,!0,d))}async function BR(t,e,n,r,a,s,l){r.some(p=>p._lazyPromises?.middleware)&&await Promise.all(r.map(p=>p._lazyPromises?.middleware));let c={request:e,url:HS(e,n),pattern:qu(r),params:r[0].params,context:s,matches:r},h=await t({...c,fetcherKey:a,runClientMiddleware:p=>{let m=c;return $S(m,()=>p({...m,fetcherKey:a,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(r.flatMap(p=>[p._lazyPromises?.handler,p._lazyPromises?.route]))}catch{}return h}async function VR({request:t,path:e,pattern:n,match:r,lazyHandlerPromise:a,lazyRoutePromise:s,handlerOverride:l,scopedContext:c}){let d,h,p=Zn(t.method),m=p?"action":"loader",v=y=>{let b,x=new Promise((L,T)=>b=T);h=()=>b(),t.signal.addEventListener("abort",h);let P=L=>typeof y!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${m}" [routeId: ${r.route.id}]`)):y({request:t,url:HS(t,e),pattern:n,params:r.params,context:c},...L!==void 0?[L]:[]),A=(async()=>{try{return{type:"data",result:await(l?l(T=>P(T)):P())}}catch(L){return{type:"error",result:L}}})();return Promise.race([A,x])};try{let y=p?r.route.action:r.route.loader;if(a||s)if(y){let b,[x]=await Promise.all([v(y).catch(P=>{b=P}),a,s]);if(b!==void 0)throw b;d=x}else{await a;let b=p?r.route.action:r.route.loader;if(b)[d]=await Promise.all([v(b),s]);else if(m==="action"){let x=new URL(t.url),P=x.pathname+x.search;throw Ur(405,{method:t.method,pathname:P,routeId:r.route.id})}else return{type:"data",result:void 0}}else if(y)d=await v(y);else{let b=new URL(t.url),x=b.pathname+b.search;throw Ur(404,{pathname:x})}}catch(y){return{type:"error",result:y}}finally{h&&t.signal.removeEventListener("abort",h)}return d}async function HR(t){let e=t.headers.get("Content-Type");return e&&/\bapplication\/json\b/.test(e)?t.body==null?null:t.json():t.text()}async function WR(t){let{result:e,type:n}=t;if(My(e)){let r;try{r=await HR(e)}catch(a){return{type:"error",error:a}}return n==="error"?{type:"error",error:new Gu(e.status,e.statusText,r),statusCode:e.status,headers:e.headers}:{type:"data",data:r,statusCode:e.status,headers:e.headers}}return n==="error"?Pw(e)?e.data instanceof Error?{type:"error",error:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:ZR(e),statusCode:Tu(e)?e.status:void 0,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:e,statusCode:Tu(e)?e.status:void 0}:Pw(e)?{type:"data",data:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"data",data:e}}function GR(t,e,n,r,a){let s=t.headers.get("Location");if(ot(s,"Redirects returned/thrown from loaders/actions must have a Location header"),!Ly(s)){let l=r.slice(0,r.findIndex(c=>c.route.id===n)+1);s=Bv(new URL(e.url),l,a,s),t.headers.set("Location",s)}return t}var qR=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function Hv(t){try{return qR.includes(new URL(t).protocol)}catch{return!1}}function yw(t,e,n,r){if(Ly(t)){let a=t,s=Ry.test(a)?new URL(xS(a,e.protocol)):new URL(a);if(Hv(s.toString()))throw new Error("Invalid redirect location");let l=Jr(s.pathname,n)!=null;if(s.origin===e.origin&&l)return Iy(s.pathname)+s.search+s.hash}try{let a=r.createURL(t);if(Hv(a.toString()))throw new Error("Invalid redirect location")}catch{}return t}function sl(t,e,n,r){let a=t.createURL(WS(e)).toString(),s={signal:n};if(r&&Zn(r.formMethod)){let{formMethod:l,formEncType:c}=r;s.method=l.toUpperCase(),c==="application/json"?(s.headers=new Headers({"Content-Type":c}),s.body=JSON.stringify(r.json)):c==="text/plain"?s.body=r.text:c==="application/x-www-form-urlencoded"&&r.formData?s.body=Wv(r.formData):s.body=r.formData}return new Request(a,s)}function HS(t,e){let n=new URL(t.url),r=typeof e=="string"?Ja(e):e;if(n.pathname=r.pathname||"/",r.search){let a=new URLSearchParams(r.search),s=a.getAll("index");a.delete("index");for(let l of s.filter(Boolean))a.append("index",l);n.search=a.size?`?${a.toString()}`:""}else n.search="";return n.hash=r.hash||"",n}function Wv(t){let e=new URLSearchParams;for(let[n,r]of t.entries())e.append(n,typeof r=="string"?r:r.name);return e}function bw(t){let e=new FormData;for(let[n,r]of t.entries())e.append(n,r);return e}function KR(t,e,n,r=!1,a=!1){let s={},l=null,c,d=!1,h={},p=n&&Tr(n[1])?n[1].error:void 0;return t.forEach(m=>{if(!(m.route.id in e))return;let v=m.route.id,y=e[v];if(ot(!Zs(y),"Cannot handle redirect results in processLoaderData"),Tr(y)){let b=y.error;if(p!==void 0&&(b=p,p=void 0),l=l||{},a)l[v]=b;else{let x=is(t,v);l[x.route.id]==null&&(l[x.route.id]=b)}r||(s[v]=jS),d||(d=!0,c=Tu(y.error)?y.error.status:500),y.headers&&(h[v]=y.headers)}else s[v]=y.data,y.statusCode&&y.statusCode!==200&&!d&&(c=y.statusCode),y.headers&&(h[v]=y.headers)}),p!==void 0&&n&&(l={[n[0]]:p},n[2]&&(s[n[2]]=void 0)),{loaderData:s,errors:l,statusCode:c||200,loaderHeaders:h}}function kw(t,e,n,r,a,s,l){let{loaderData:c,errors:d}=KR(e,n,r);return a.filter(h=>!h.matches||h.matches.some(p=>p.shouldLoad)).forEach(h=>{let{key:p,match:m,controller:v}=h;if(v&&v.signal.aborted)return;let y=s[p];if(ot(y,"Did not find corresponding fetcher result"),Tr(y)){let b=is(t.matches,m?.route.id);d&&d[b.route.id]||(d={...d,[b.route.id]:y.error}),l.delete(p)}else if(Zs(y))ot(!1,"Unhandled fetcher revalidation redirect");else{let b=Na(y.data);l.set(p,b)}}),{loaderData:c,errors:d}}function ww(t,e,n,r){let a=Object.entries(e).filter(([,s])=>s!==jS).reduce((s,[l,c])=>(s[l]=c,s),{});for(let s of n){let l=s.route.id;if(!e.hasOwnProperty(l)&&t.hasOwnProperty(l)&&s.route.loader&&(a[l]=t[l]),r&&r.hasOwnProperty(l))break}return a}function xw(t){return t?Tr(t[1])?{actionData:{}}:{actionData:{[t[0]]:t[1].data}}:{}}function is(t,e){return(e?t.slice(0,t.findIndex(r=>r.route.id===e)+1):[...t]).reverse().find(r=>r.route.hasErrorBoundary===!0)||t[0]}function dh(t){let e=t.length===1?t[0]:t.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e}}function Ur(t,{pathname:e,routeId:n,method:r,type:a,message:s}={}){let l="Unknown Server Error",c="Unknown @remix-run/router error";return t===400?(l="Bad Request",r&&e&&n?c=`You made a ${r} request to "${e}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:a==="invalid-body"&&(c="Unable to encode submission body")):t===403?(l="Forbidden",c=`Route "${n}" does not match URL "${e}"`):t===404?(l="Not Found",c=`No route matches URL "${e}"`):t===405&&(l="Method Not Allowed",r&&e&&n?c=`You made a ${r.toUpperCase()} request to "${e}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(c=`Invalid request method "${r.toUpperCase()}"`)),new Gu(t||500,l,new Error(c),!0)}function hh(t){let e=Object.entries(t);for(let n=e.length-1;n>=0;n--){let[r,a]=e[n];if(Zs(a))return{key:r,result:a}}}function WS(t){let e=typeof t=="string"?Ja(t):t;return Wa({...e,hash:""})}function YR(t,e){return t.pathname!==e.pathname||t.search!==e.search?!1:t.hash===""?e.hash!=="":t.hash===e.hash?!0:e.hash!==""}function ZR(t){return new Gu(t.init?.status??500,t.init?.statusText??"Internal Server Error",t.data)}function JR(t){return t!=null&&typeof t=="object"&&Object.entries(t).every(([e,n])=>typeof e=="string"&&XR(n))}function XR(t){return t!=null&&typeof t=="object"&&"type"in t&&"result"in t&&(t.type==="data"||t.type==="error")}function QR(t){return My(t.result)&&NS.has(t.result.status)}function Tr(t){return t.type==="error"}function Zs(t){return(t&&t.type)==="redirect"}function Pw(t){return typeof t=="object"&&t!=null&&"type"in t&&"data"in t&&"init"in t&&t.type==="DataWithResponseInit"}function My(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.headers=="object"&&typeof t.body<"u"}function e8(t){return NS.has(t)}function t8(t){return My(t)&&e8(t.status)&&t.headers.has("Location")}function n8(t){return RR.has(t.toUpperCase())}function Zn(t){return ER.has(t.toUpperCase())}function Ny(t){return new URLSearchParams(t).getAll("index").some(e=>e==="")}function Vh(t,e){let n=typeof e=="string"?Ja(e).search:e.search;if(t[t.length-1].route.index&&Ny(n||""))return t[t.length-1];let r=RS(t);return r[r.length-1]}function Sw(t){let{formMethod:e,formAction:n,formEncType:r,text:a,formData:s,json:l}=t;if(!(!e||!n||!r)){if(a!=null)return{formMethod:e,formAction:n,formEncType:r,formData:void 0,json:void 0,text:a};if(s!=null)return{formMethod:e,formAction:n,formEncType:r,formData:s,json:void 0,text:void 0};if(l!==void 0)return{formMethod:e,formAction:n,formEncType:r,formData:void 0,json:l,text:void 0}}}function Ag(t,e,n,r){return r?{state:"loading",location:t,matches:e,historyAction:n,formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text}:{state:"loading",location:t,matches:e,historyAction:n,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function r8(t,e,n,r){return{state:"submitting",location:t,matches:e,historyAction:n,formMethod:r.formMethod,formAction:r.formAction,formEncType:r.formEncType,formData:r.formData,json:r.json,text:r.text}}function Mc(t,e){return t?{state:"loading",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function a8(t,e){return{state:"submitting",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e?e.data:void 0}}function Na(t){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function i8(t,e){try{let n=t.sessionStorage.getItem(OS);if(n){let r=JSON.parse(n);for(let[a,s]of Object.entries(r||{}))s&&Array.isArray(s)&&e.set(a,new Set(s||[]))}}catch{}}function s8(t,e){if(e.size>0){let n={};for(let[r,a]of e)n[r]=[...a];try{t.sessionStorage.setItem(OS,JSON.stringify(n))}catch(r){cn(!1,`Failed to save applied view transitions in sessionStorage (${r}).`)}}}function Cw(){let t,e,n=new Promise((r,a)=>{t=async s=>{r(s);try{await n}catch{}},e=async s=>{a(s);try{await n}catch{}}});return{promise:n,resolve:t,reject:e}}var go=k.createContext(null);go.displayName="DataRouter";var Ku=k.createContext(null);Ku.displayName="DataRouterState";var GS=k.createContext(!1);function qS(){return k.useContext(GS)}var Oy=k.createContext({isTransitioning:!1});Oy.displayName="ViewTransition";var KS=k.createContext(new Map);KS.displayName="Fetchers";var o8=k.createContext(null);o8.displayName="Await";var Lr=k.createContext(null);Lr.displayName="Navigation";var bf=k.createContext(null);bf.displayName="Location";var Xa=k.createContext({outlet:null,matches:[],isDataRoute:!1});Xa.displayName="Route";var jy=k.createContext(null);jy.displayName="RouteError";var YS="REACT_ROUTER_ERROR",l8="REDIRECT",c8="ROUTE_ERROR_RESPONSE";function u8(t){if(t.startsWith(`${YS}:${l8}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function d8(t){if(t.startsWith(`${YS}:${c8}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new Gu(e.status,e.statusText,e.data)}catch{}}function h8(t,{relative:e}={}){ot(Fl(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=k.useContext(Lr),{hash:a,pathname:s,search:l}=Yu(t,{relative:e}),c=s;return n!=="/"&&(c=s==="/"?n:qr([n,s])),r.createHref({pathname:c,search:l,hash:a})}function Fl(){return k.useContext(bf)!=null}function _r(){return ot(Fl(),"useLocation() may be used only in the context of a <Router> component."),k.useContext(bf).location}var ZS="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function JS(t){k.useContext(Lr).static||k.useLayoutEffect(t)}function Ul(){let{isDataRoute:t}=k.useContext(Xa);return t?S8():p8()}function p8(){ot(Fl(),"useNavigate() may be used only in the context of a <Router> component.");let t=k.useContext(go),{basename:e,navigator:n}=k.useContext(Lr),{matches:r}=k.useContext(Xa),{pathname:a}=_r(),s=JSON.stringify(yf(r)),l=k.useRef(!1);return JS(()=>{l.current=!0}),k.useCallback((d,h={})=>{if(cn(l.current,ZS),!l.current)return;if(typeof d=="number"){n.go(d);return}let p=Wu(d,JSON.parse(s),a,h.relative==="path");t==null&&e!=="/"&&(p.pathname=p.pathname==="/"?e:qr([e,p.pathname])),(h.replace?n.replace:n.push)(p,h.state,h)},[e,n,s,a,t])}k.createContext(null);function Yu(t,{relative:e}={}){let{matches:n}=k.useContext(Xa),{pathname:r}=_r(),a=JSON.stringify(yf(n));return k.useMemo(()=>Wu(t,JSON.parse(a),r,e==="path"),[t,a,r,e])}function f8(t,e,n){ot(Fl(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=k.useContext(Lr),{matches:a}=k.useContext(Xa),s=a[a.length-1],l=s?s.params:{},c=s?s.pathname:"/",d=s?s.pathnameBase:"/",h=s&&s.route;{let P=h&&h.path||"";QS(c,!h||P.endsWith("*")||P.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${c}" (under <Route path="${P}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
11
-
12
- Please change the parent <Route path="${P}"> to <Route path="${P==="/"?"*":`${P}/*`}">.`)}let p=_r(),m;m=p;let v=m.pathname||"/",y=v;if(d!=="/"){let P=d.replace(/^\//,"").split("/");y="/"+v.replace(/^\//,"").split("/").slice(P.length).join("/")}let b=n&&n.state.matches.length?n.state.matches.map(P=>Object.assign(P,{route:n.manifest[P.route.id]||P.route})):SS(t,{pathname:y});return cn(h||b!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),cn(b==null||b[b.length-1].route.element!==void 0||b[b.length-1].route.Component!==void 0||b[b.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),y8(b&&b.map(P=>Object.assign({},P,{params:Object.assign({},l,P.params),pathname:qr([d,r.encodeLocation?r.encodeLocation(P.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:P.pathname]),pathnameBase:P.pathnameBase==="/"?d:qr([d,r.encodeLocation?r.encodeLocation(P.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:P.pathnameBase])})),a,n)}function m8(){let t=P8(),e=Tu(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:r},s={padding:"2px 4px",backgroundColor:r},l=null;return console.error("Error handled by React Router default ErrorBoundary:",t),l=k.createElement(k.Fragment,null,k.createElement("p",null,"💿 Hey developer 👋"),k.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",k.createElement("code",{style:s},"ErrorBoundary")," or"," ",k.createElement("code",{style:s},"errorElement")," prop on your route.")),k.createElement(k.Fragment,null,k.createElement("h2",null,"Unexpected Application Error!"),k.createElement("h3",{style:{fontStyle:"italic"}},e),n?k.createElement("pre",{style:a},n):null,l)}var g8=k.createElement(m8,null),XS=class extends k.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=d8(t.digest);n&&(t=n)}let e=t!==void 0?k.createElement(Xa.Provider,{value:this.props.routeContext},k.createElement(jy.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?k.createElement(v8,{error:t},e):e}};XS.contextType=GS;var Rg=new WeakMap;function v8({children:t,error:e}){let{basename:n}=k.useContext(Lr);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=u8(e.digest);if(r){let a=Rg.get(e);if(a)throw a;let s=IS(r.location,n),l=s.absoluteURL||s.to;if(Hv(l))throw new Error("Invalid redirect location");if(LS&&!Rg.get(e))if(s.isExternal||r.reloadDocument)window.location.href=l;else{const c=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(s.to,{replace:r.replace}));throw Rg.set(e,c),c}return k.createElement("meta",{httpEquiv:"refresh",content:`0;url=${l}`})}}return t}function _8({routeContext:t,match:e,children:n}){let r=k.useContext(go);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),k.createElement(Xa.Provider,{value:t},n)}function y8(t,e=[],n){let r=n?.state;if(t==null){if(!r)return null;if(r.errors)t=r.matches;else if(e.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let a=t,s=r?.errors;if(s!=null){let p=a.findIndex(m=>m.route.id&&s?.[m.route.id]!==void 0);ot(p>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),a=a.slice(0,Math.min(a.length,p+1))}let l=!1,c=-1;if(n&&r){l=r.renderFallback;for(let p=0;p<a.length;p++){let m=a[p];if((m.route.HydrateFallback||m.route.hydrateFallbackElement)&&(c=p),m.route.id){let{loaderData:v,errors:y}=r,b=m.route.loader&&!v.hasOwnProperty(m.route.id)&&(!y||y[m.route.id]===void 0);if(m.route.lazy||b){n.isStatic&&(l=!0),c>=0?a=a.slice(0,c+1):a=[a[0]];break}}}}let d=n?.onError,h=r&&d?(p,m)=>{d(p,{location:r.location,params:r.matches?.[0]?.params??{},pattern:qu(r.matches),errorInfo:m})}:void 0;return a.reduceRight((p,m,v)=>{let y,b=!1,x=null,P=null;r&&(y=s&&m.route.id?s[m.route.id]:void 0,x=m.route.errorElement||g8,l&&(c<0&&v===0?(QS("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),b=!0,P=null):c===v&&(b=!0,P=m.route.hydrateFallbackElement||null)));let A=e.concat(a.slice(0,v+1)),L=()=>{let T;return y?T=x:b?T=P:m.route.Component?T=k.createElement(m.route.Component,null):m.route.element?T=m.route.element:T=p,k.createElement(_8,{match:m,routeContext:{outlet:p,matches:A,isDataRoute:r!=null},children:T})};return r&&(m.route.ErrorBoundary||m.route.errorElement||v===0)?k.createElement(XS,{location:r.location,revalidation:r.revalidation,component:x,error:y,children:L(),routeContext:{outlet:null,matches:A,isDataRoute:!0},onError:h}):L()},null)}function zy(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function b8(t){let e=k.useContext(go);return ot(e,zy(t)),e}function k8(t){let e=k.useContext(Ku);return ot(e,zy(t)),e}function w8(t){let e=k.useContext(Xa);return ot(e,zy(t)),e}function Fy(t){let e=w8(t),n=e.matches[e.matches.length-1];return ot(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function x8(){return Fy("useRouteId")}function P8(){let t=k.useContext(jy),e=k8("useRouteError"),n=Fy("useRouteError");return t!==void 0?t:e.errors?.[n]}function S8(){let{router:t}=b8("useNavigate"),e=Fy("useNavigate"),n=k.useRef(!1);return JS(()=>{n.current=!0}),k.useCallback(async(a,s={})=>{cn(n.current,ZS),n.current&&(typeof a=="number"?await t.navigate(a):await t.navigate(a,{fromRouteId:e,...s}))},[t,e])}var Tw={};function QS(t,e,n){!e&&!Tw[t]&&(Tw[t]=!0,cn(!1,n))}var Ew={};function Aw(t,e){!t&&!Ew[e]&&(Ew[e]=!0,console.warn(e))}var C8="useOptimistic",Rw=yS[C8],T8=()=>{};function E8(t){return Rw?Rw(t):[t,T8]}function A8(t){let e={hasErrorBoundary:t.hasErrorBoundary||t.ErrorBoundary!=null||t.errorElement!=null};return t.Component&&(t.element&&cn(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(e,{element:k.createElement(t.Component),Component:void 0})),t.HydrateFallback&&(t.hydrateFallbackElement&&cn(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(e,{hydrateFallbackElement:k.createElement(t.HydrateFallback),HydrateFallback:void 0})),t.ErrorBoundary&&(t.errorElement&&cn(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(e,{errorElement:k.createElement(t.ErrorBoundary),ErrorBoundary:void 0})),e}var R8=["HydrateFallback","hydrateFallbackElement"],L8=class{constructor(){this.status="pending",this.promise=new Promise((t,e)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",t(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",e(n))}})}};function I8({router:t,flushSync:e,onError:n,useTransitions:r}){r=qS()||r;let[s,l]=k.useState(t.state),[c,d]=E8(s),[h,p]=k.useState(),[m,v]=k.useState({isTransitioning:!1}),[y,b]=k.useState(),[x,P]=k.useState(),[A,L]=k.useState(),T=k.useRef(new Map),E=k.useCallback((S,{deletedFetchers:j,newErrors:F,flushSync:Z,viewTransitionOpts:ee})=>{F&&n&&Object.values(F).forEach(re=>n(re,{location:S.location,params:S.matches[0]?.params??{},pattern:qu(S.matches)})),S.fetchers.forEach((re,ae)=>{re.data!==void 0&&T.current.set(ae,re.data)}),j.forEach(re=>T.current.delete(re)),Aw(Z===!1||e!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let ue=t.window!=null&&t.window.document!=null&&typeof t.window.document.startViewTransition=="function";if(Aw(ee==null||ue,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!ee||!ue){e&&Z?e(()=>l(S)):r===!1?l(S):k.startTransition(()=>{r===!0&&d(re=>Lw(re,S)),l(S)});return}if(e&&Z){e(()=>{x&&(y?.resolve(),x.skipTransition()),v({isTransitioning:!0,flushSync:!0,currentLocation:ee.currentLocation,nextLocation:ee.nextLocation})});let re=t.window.document.startViewTransition(()=>{e(()=>l(S))});re.finished.finally(()=>{e(()=>{b(void 0),P(void 0),p(void 0),v({isTransitioning:!1})})}),e(()=>P(re));return}x?(y?.resolve(),x.skipTransition(),L({state:S,currentLocation:ee.currentLocation,nextLocation:ee.nextLocation})):(p(S),v({isTransitioning:!0,flushSync:!1,currentLocation:ee.currentLocation,nextLocation:ee.nextLocation}))},[t.window,e,x,y,r,d,n]);k.useLayoutEffect(()=>t.subscribe(E),[t,E]),k.useEffect(()=>{m.isTransitioning&&!m.flushSync&&b(new L8)},[m]),k.useEffect(()=>{if(y&&h&&t.window){let S=h,j=y.promise,F=t.window.document.startViewTransition(async()=>{r===!1?l(S):k.startTransition(()=>{r===!0&&d(Z=>Lw(Z,S)),l(S)}),await j});F.finished.finally(()=>{b(void 0),P(void 0),p(void 0),v({isTransitioning:!1})}),P(F)}},[h,y,t.window,r,d]),k.useEffect(()=>{y&&h&&c.location.key===h.location.key&&y.resolve()},[y,x,c.location,h]),k.useEffect(()=>{!m.isTransitioning&&A&&(p(A.state),v({isTransitioning:!0,flushSync:!1,currentLocation:A.currentLocation,nextLocation:A.nextLocation}),L(void 0))},[m.isTransitioning,A]);let D=k.useMemo(()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:S=>t.navigate(S),push:(S,j,F)=>t.navigate(S,{state:j,preventScrollReset:F?.preventScrollReset}),replace:(S,j,F)=>t.navigate(S,{replace:!0,state:j,preventScrollReset:F?.preventScrollReset})}),[t]),$=t.basename||"/",I=k.useMemo(()=>({router:t,navigator:D,static:!1,basename:$,onError:n}),[t,D,$,n]);return k.createElement(k.Fragment,null,k.createElement(go.Provider,{value:I},k.createElement(Ku.Provider,{value:c},k.createElement(KS.Provider,{value:T.current},k.createElement(Oy.Provider,{value:m},k.createElement(O8,{basename:$,location:c.location,navigationType:c.historyAction,navigator:D,useTransitions:r},k.createElement(D8,{routes:t.routes,manifest:t.manifest,future:t.future,state:c,isStatic:!1,onError:n})))))),null)}function Lw(t,e){return{...t,navigation:e.navigation.state!=="idle"?e.navigation:t.navigation,revalidation:e.revalidation!=="idle"?e.revalidation:t.revalidation,actionData:e.navigation.state!=="submitting"?e.actionData:t.actionData,fetchers:e.fetchers}}var D8=k.memo(M8);function M8({routes:t,manifest:e,future:n,state:r,isStatic:a,onError:s}){return f8(t,void 0,{manifest:e,state:r,isStatic:a,onError:s})}function N8({to:t,replace:e,state:n,relative:r}){ot(Fl(),"<Navigate> may be used only in the context of a <Router> component.");let{static:a}=k.useContext(Lr);cn(!a,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:s}=k.useContext(Xa),{pathname:l}=_r(),c=Ul(),d=Wu(t,yf(s),l,r==="path"),h=JSON.stringify(d);return k.useEffect(()=>{c(JSON.parse(h),{replace:e,state:n,relative:r})},[c,h,r,e,n]),null}function O8({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:a,static:s=!1,useTransitions:l}){ot(!Fl(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let c=t.replace(/^\/*/,"/"),d=k.useMemo(()=>({basename:c,navigator:a,static:s,useTransitions:l,future:{}}),[c,a,s,l]);typeof n=="string"&&(n=Ja(n));let{pathname:h="/",search:p="",hash:m="",state:v=null,key:y="default",mask:b}=n,x=k.useMemo(()=>{let P=Jr(h,c);return P==null?null:{location:{pathname:P,search:p,hash:m,state:v,key:y,mask:b},navigationType:r}},[c,h,p,m,v,y,r,b]);return cn(x!=null,`<Router basename="${c}"> is not able to match the URL "${h}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),x==null?null:k.createElement(Lr.Provider,{value:d},k.createElement(bf.Provider,{children:e,value:x}))}var Hh="get",Wh="application/x-www-form-urlencoded";function kf(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function j8(t){return kf(t)&&t.tagName.toLowerCase()==="button"}function z8(t){return kf(t)&&t.tagName.toLowerCase()==="form"}function F8(t){return kf(t)&&t.tagName.toLowerCase()==="input"}function U8(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function $8(t,e){return t.button===0&&(!e||e==="_self")&&!U8(t)}function Gv(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let r=t[n];return e.concat(Array.isArray(r)?r.map(a=>[n,a]):[[n,r]])},[]))}function B8(t,e){let n=Gv(t);return e&&e.forEach((r,a)=>{n.has(a)||e.getAll(a).forEach(s=>{n.append(a,s)})}),n}var ph=null;function V8(){if(ph===null)try{new FormData(document.createElement("form"),0),ph=!1}catch{ph=!0}return ph}var H8=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Lg(t){return t!=null&&!H8.has(t)?(cn(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Wh}"`),null):t}function W8(t,e){let n,r,a,s,l;if(z8(t)){let c=t.getAttribute("action");r=c?Jr(c,e):null,n=t.getAttribute("method")||Hh,a=Lg(t.getAttribute("enctype"))||Wh,s=new FormData(t)}else if(j8(t)||F8(t)&&(t.type==="submit"||t.type==="image")){let c=t.form;if(c==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let d=t.getAttribute("formaction")||c.getAttribute("action");if(r=d?Jr(d,e):null,n=t.getAttribute("formmethod")||c.getAttribute("method")||Hh,a=Lg(t.getAttribute("formenctype"))||Lg(c.getAttribute("enctype"))||Wh,s=new FormData(c,t),!V8()){let{name:h,type:p,value:m}=t;if(p==="image"){let v=h?`${h}.`:"";s.append(`${v}x`,"0"),s.append(`${v}y`,"0")}else h&&s.append(h,m)}}else{if(kf(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=Hh,r=null,a=Wh,l=t}return s&&a==="text/plain"&&(l=s,s=void 0),{action:r,method:n.toLowerCase(),encType:a,formData:s,body:l}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Uy(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function e3(t,e,n,r){let a=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return n?a.pathname.endsWith("/")?a.pathname=`${a.pathname}_.${r}`:a.pathname=`${a.pathname}.${r}`:a.pathname==="/"?a.pathname=`_root.${r}`:e&&Jr(a.pathname,e)==="/"?a.pathname=`${mp(e)}/_root.${r}`:a.pathname=`${mp(a.pathname)}.${r}`,a}async function G8(t,e){if(t.id in e)return e[t.id];try{let n=await import(t.module);return e[t.id]=n,n}catch(n){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function q8(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function K8(t,e,n){let r=await Promise.all(t.map(async a=>{let s=e.routes[a.route.id];if(s){let l=await G8(s,n);return l.links?l.links():[]}return[]}));return X8(r.flat(1).filter(q8).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function Iw(t,e,n,r,a,s){let l=(d,h)=>n[h]?d.route.id!==n[h].route.id:!0,c=(d,h)=>n[h].pathname!==d.pathname||n[h].route.path?.endsWith("*")&&n[h].params["*"]!==d.params["*"];return s==="assets"?e.filter((d,h)=>l(d,h)||c(d,h)):s==="data"?e.filter((d,h)=>{let p=r.routes[d.route.id];if(!p||!p.hasLoader)return!1;if(l(d,h)||c(d,h))return!0;if(d.route.shouldRevalidate){let m=d.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(t,window.origin),nextParams:d.params,defaultShouldRevalidate:!0});if(typeof m=="boolean")return m}return!0}):[]}function Y8(t,e,{includeHydrateFallback:n}={}){return Z8(t.map(r=>{let a=e.routes[r.route.id];if(!a)return[];let s=[a.module];return a.clientActionModule&&(s=s.concat(a.clientActionModule)),a.clientLoaderModule&&(s=s.concat(a.clientLoaderModule)),n&&a.hydrateFallbackModule&&(s=s.concat(a.hydrateFallbackModule)),a.imports&&(s=s.concat(a.imports)),s}).flat(1))}function Z8(t){return[...new Set(t)]}function J8(t){let e={},n=Object.keys(t).sort();for(let r of n)e[r]=t[r];return e}function X8(t,e){let n=new Set;return new Set(e),t.reduce((r,a)=>{let s=JSON.stringify(J8(a));return n.has(s)||(n.add(s),r.push({key:s,link:a})),r},[])}function $y(){let t=k.useContext(go);return Uy(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function Q8(){let t=k.useContext(Ku);return Uy(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var By=k.createContext(void 0);By.displayName="FrameworkContext";function wf(){let t=k.useContext(By);return Uy(t,"You must render this element inside a <HydratedRouter> element"),t}function eL(t,e){let n=k.useContext(By),[r,a]=k.useState(!1),[s,l]=k.useState(!1),{onFocus:c,onBlur:d,onMouseEnter:h,onMouseLeave:p,onTouchStart:m}=e,v=k.useRef(null);k.useEffect(()=>{if(t==="render"&&l(!0),t==="viewport"){let x=A=>{A.forEach(L=>{l(L.isIntersecting)})},P=new IntersectionObserver(x,{threshold:.5});return v.current&&P.observe(v.current),()=>{P.disconnect()}}},[t]),k.useEffect(()=>{if(r){let x=setTimeout(()=>{l(!0)},100);return()=>{clearTimeout(x)}}},[r]);let y=()=>{a(!0)},b=()=>{a(!1),l(!1)};return n?t!=="intent"?[s,v,{}]:[s,v,{onFocus:Nc(c,y),onBlur:Nc(d,b),onMouseEnter:Nc(h,y),onMouseLeave:Nc(p,b),onTouchStart:Nc(m,y)}]:[!1,v,{}]}function Nc(t,e){return n=>{t&&t(n),n.defaultPrevented||e(n)}}function tL({page:t,...e}){let n=qS(),{nonce:r}=wf(),{router:a}=$y(),s=k.useMemo(()=>SS(a.routes,t,a.basename),[a.routes,t,a.basename]);return s?(e.nonce==null&&r&&(e={...e,nonce:r}),n?k.createElement(rL,{page:t,matches:s,...e}):k.createElement(aL,{page:t,matches:s,...e})):null}function nL(t){let{manifest:e,routeModules:n}=wf(),[r,a]=k.useState([]);return k.useEffect(()=>{let s=!1;return K8(t,e,n).then(l=>{s||a(l)}),()=>{s=!0}},[t,e,n]),r}function rL({page:t,matches:e,...n}){let r=_r(),{future:a}=wf(),{basename:s}=$y(),l=k.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let c=e3(t,s,a.v8_trailingSlashAwareDataRequests,"rsc"),d=!1,h=[];for(let p of e)typeof p.route.shouldRevalidate=="function"?d=!0:h.push(p.route.id);return d&&h.length>0&&c.searchParams.set("_routes",h.join(",")),[c.pathname+c.search]},[s,a.v8_trailingSlashAwareDataRequests,t,r,e]);return k.createElement(k.Fragment,null,l.map(c=>k.createElement("link",{key:c,rel:"prefetch",as:"fetch",href:c,...n})))}function aL({page:t,matches:e,...n}){let r=_r(),{future:a,manifest:s,routeModules:l}=wf(),{basename:c}=$y(),{loaderData:d,matches:h}=Q8(),p=k.useMemo(()=>Iw(t,e,h,s,r,"data"),[t,e,h,s,r]),m=k.useMemo(()=>Iw(t,e,h,s,r,"assets"),[t,e,h,s,r]),v=k.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let x=new Set,P=!1;if(e.forEach(L=>{let T=s.routes[L.route.id];!T||!T.hasLoader||(!p.some(E=>E.route.id===L.route.id)&&L.route.id in d&&l[L.route.id]?.shouldRevalidate||T.hasClientLoader?P=!0:x.add(L.route.id))}),x.size===0)return[];let A=e3(t,c,a.v8_trailingSlashAwareDataRequests,"data");return P&&x.size>0&&A.searchParams.set("_routes",e.filter(L=>x.has(L.route.id)).map(L=>L.route.id).join(",")),[A.pathname+A.search]},[c,a.v8_trailingSlashAwareDataRequests,d,r,s,p,e,t,l]),y=k.useMemo(()=>Y8(m,s),[m,s]),b=nL(m);return k.createElement(k.Fragment,null,v.map(x=>k.createElement("link",{key:x,rel:"prefetch",as:"fetch",href:x,...n})),y.map(x=>k.createElement("link",{key:x,rel:"modulepreload",href:x,...n})),b.map(({key:x,link:P})=>k.createElement("link",{key:x,nonce:n.nonce,...P,crossOrigin:P.crossOrigin??n.crossOrigin})))}function iL(...t){return e=>{t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}}var sL=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{sL&&(window.__reactRouterVersion="7.18.1")}catch{}function oL(t,e){return NR({basename:e?.basename,getContext:e?.getContext,future:e?.future,history:ZA({window:e?.window}),hydrationData:lL(),routes:t,mapRouteProperties:A8,hydrationRouteProperties:R8,dataStrategy:e?.dataStrategy,patchRoutesOnNavigation:e?.patchRoutesOnNavigation,window:e?.window,instrumentations:e?.instrumentations}).initialize()}function lL(){let t=window?.__staticRouterHydrationData;return t&&t.errors&&(t={...t,errors:cL(t.errors)}),t}function cL(t){if(!t)return null;let e=Object.entries(t),n={};for(let[r,a]of e)if(a&&a.__type==="RouteErrorResponse")n[r]=new Gu(a.status,a.statusText,a.data,a.internal===!0);else if(a&&a.__type==="Error"){if(typeof a.__subType=="string"&&kR.includes(a.__subType)){let s=window[a.__subType];if(typeof s=="function")try{let l=new s(a.message);l.stack="",n[r]=l}catch{}}if(n[r]==null){let s=new Error(a.message);s.stack="",n[r]=s}}else n[r]=a;return n}var xf=k.forwardRef(function({onClick:e,discover:n="render",prefetch:r="none",relative:a,reloadDocument:s,replace:l,mask:c,state:d,target:h,to:p,preventScrollReset:m,viewTransition:v,defaultShouldRevalidate:y,...b},x){let{basename:P,navigator:A,useTransitions:L}=k.useContext(Lr),T=typeof p=="string"&&_f.test(p),E=IS(p,P);p=E.to;let D=h8(p,{relative:a}),$=_r(),I=null;if(c){let ae=Wu(c,[],$.mask?$.mask.pathname:"/",!0);P!=="/"&&(ae.pathname=ae.pathname==="/"?P:qr([P,ae.pathname])),I=A.createHref(ae)}let[S,j,F]=eL(r,b),Z=pL(p,{replace:l,mask:c,state:d,target:h,preventScrollReset:m,relative:a,viewTransition:v,defaultShouldRevalidate:y,useTransitions:L});function ee(ae){e&&e(ae),ae.defaultPrevented||Z(ae)}let ue=!(E.isExternal||s),re=k.createElement("a",{...b,...F,href:(ue?I:void 0)||E.absoluteURL||D,onClick:ue?ee:e,ref:iL(x,j),target:h,"data-discover":!T&&n==="render"?"true":void 0});return S&&!T?k.createElement(k.Fragment,null,re,k.createElement(tL,{page:D})):re});xf.displayName="Link";var uL=k.forwardRef(function({"aria-current":e="page",caseSensitive:n=!1,className:r="",end:a=!1,style:s,to:l,viewTransition:c,children:d,...h},p){let m=Yu(l,{relative:h.relative}),v=_r(),y=k.useContext(Ku),{navigator:b,basename:x}=k.useContext(Lr),P=y!=null&&_L(m)&&c===!0,A=b.encodeLocation?b.encodeLocation(m).pathname:m.pathname,L=v.pathname,T=y&&y.navigation&&y.navigation.location?y.navigation.location.pathname:null;n||(L=L.toLowerCase(),T=T?T.toLowerCase():null,A=A.toLowerCase()),T&&x&&(T=Jr(T,x)||T);const E=A!=="/"&&A.endsWith("/")?A.length-1:A.length;let D=L===A||!a&&L.startsWith(A)&&L.charAt(E)==="/",$=T!=null&&(T===A||!a&&T.startsWith(A)&&T.charAt(A.length)==="/"),I={isActive:D,isPending:$,isTransitioning:P},S=D?e:void 0,j;typeof r=="function"?j=r(I):j=[r,D?"active":null,$?"pending":null,P?"transitioning":null].filter(Boolean).join(" ");let F=typeof s=="function"?s(I):s;return k.createElement(xf,{...h,"aria-current":S,className:j,ref:p,style:F,to:l,viewTransition:c},typeof d=="function"?d(I):d)});uL.displayName="NavLink";var dL=k.forwardRef(({discover:t="render",fetcherKey:e,navigate:n,reloadDocument:r,replace:a,state:s,method:l=Hh,action:c,onSubmit:d,relative:h,preventScrollReset:p,viewTransition:m,defaultShouldRevalidate:v,...y},b)=>{let{useTransitions:x}=k.useContext(Lr),P=gL(),A=vL(c,{relative:h}),L=l.toLowerCase()==="get"?"get":"post",T=typeof c=="string"&&_f.test(c),E=D=>{if(d&&d(D),D.defaultPrevented)return;D.preventDefault();let $=D.nativeEvent.submitter,I=$?.getAttribute("formmethod")||l,S=()=>P($||D.currentTarget,{fetcherKey:e,method:I,navigate:n,replace:a,state:s,relative:h,preventScrollReset:p,viewTransition:m,defaultShouldRevalidate:v});x&&n!==!1?k.startTransition(()=>S()):S()};return k.createElement("form",{ref:b,method:L,action:A,onSubmit:r?d:E,...y,"data-discover":!T&&t==="render"?"true":void 0})});dL.displayName="Form";function hL(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function t3(t){let e=k.useContext(go);return ot(e,hL(t)),e}function pL(t,{target:e,replace:n,mask:r,state:a,preventScrollReset:s,relative:l,viewTransition:c,defaultShouldRevalidate:d,useTransitions:h}={}){let p=Ul(),m=_r(),v=Yu(t,{relative:l});return k.useCallback(y=>{if($8(y,e)){y.preventDefault();let b=n!==void 0?n:Wa(m)===Wa(v),x=()=>p(t,{replace:b,mask:r,state:a,preventScrollReset:s,relative:l,viewTransition:c,defaultShouldRevalidate:d});h?k.startTransition(()=>x()):x()}},[m,p,v,n,r,a,e,t,s,l,c,d,h])}function aK(t){cn(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let e=k.useRef(Gv(t)),n=k.useRef(!1),r=_r(),a=k.useMemo(()=>B8(r.search,n.current?null:e.current),[r.search]),s=Ul(),l=k.useCallback((c,d)=>{const h=Gv(typeof c=="function"?c(new URLSearchParams(a)):c);n.current=!0,s("?"+h,d)},[s,a]);return[a,l]}var fL=0,mL=()=>`__${String(++fL)}__`;function gL(){let{router:t}=t3("useSubmit"),{basename:e}=k.useContext(Lr),n=x8(),r=t.fetch,a=t.navigate;return k.useCallback(async(s,l={})=>{let{action:c,method:d,encType:h,formData:p,body:m}=W8(s,e);if(l.navigate===!1){let v=l.fetcherKey||mL();await r(v,n,l.action||c,{defaultShouldRevalidate:l.defaultShouldRevalidate,preventScrollReset:l.preventScrollReset,formData:p,body:m,formMethod:l.method||d,formEncType:l.encType||h,flushSync:l.flushSync})}else await a(l.action||c,{defaultShouldRevalidate:l.defaultShouldRevalidate,preventScrollReset:l.preventScrollReset,formData:p,body:m,formMethod:l.method||d,formEncType:l.encType||h,replace:l.replace,state:l.state,fromRouteId:n,flushSync:l.flushSync,viewTransition:l.viewTransition})},[r,a,e,n])}function vL(t,{relative:e}={}){let{basename:n}=k.useContext(Lr),r=k.useContext(Xa);ot(r,"useFormAction must be used inside a RouteContext");let[a]=r.matches.slice(-1),s={...Yu(t||".",{relative:e})},l=_r();if(t==null){s.search=l.search;let c=new URLSearchParams(s.search),d=c.getAll("index");if(d.some(p=>p==="")){c.delete("index"),d.filter(m=>m).forEach(m=>c.append("index",m));let p=c.toString();s.search=p?`?${p}`:""}}return(!t||t===".")&&a.route.index&&(s.search=s.search?s.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(s.pathname=s.pathname==="/"?n:qr([n,s.pathname])),Wa(s)}function _L(t,{relative:e}={}){let n=k.useContext(Oy);ot(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=t3("useViewTransitionState"),a=Yu(t,{relative:e});if(!n.isTransitioning)return!1;let s=Jr(n.currentLocation.pathname,r)||n.currentLocation.pathname,l=Jr(n.nextLocation.pathname,r)||n.nextLocation.pathname;return fp(a.pathname,l)!=null||fp(a.pathname,s)!=null}var $l=bS();function yL(t){return k.createElement(I8,{flushSync:$l.flushSync,...t})}var bt;(function(t){t.assertEqual=a=>{};function e(a){}t.assertIs=e;function n(a){throw new Error}t.assertNever=n,t.arrayToEnum=a=>{const s={};for(const l of a)s[l]=l;return s},t.getValidEnumValues=a=>{const s=t.objectKeys(a).filter(c=>typeof a[a[c]]!="number"),l={};for(const c of s)l[c]=a[c];return t.objectValues(l)},t.objectValues=a=>t.objectKeys(a).map(function(s){return a[s]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{const s=[];for(const l in a)Object.prototype.hasOwnProperty.call(a,l)&&s.push(l);return s},t.find=(a,s)=>{for(const l of a)if(s(l))return l},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function r(a,s=" | "){return a.map(l=>typeof l=="string"?`'${l}'`:l).join(s)}t.joinValues=r,t.jsonStringifyReplacer=(a,s)=>typeof s=="bigint"?s.toString():s})(bt||(bt={}));var Dw;(function(t){t.mergeShapes=(e,n)=>({...e,...n})})(Dw||(Dw={}));const Re=bt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),as=t=>{switch(typeof t){case"undefined":return Re.undefined;case"string":return Re.string;case"number":return Number.isNaN(t)?Re.nan:Re.number;case"boolean":return Re.boolean;case"function":return Re.function;case"bigint":return Re.bigint;case"symbol":return Re.symbol;case"object":return Array.isArray(t)?Re.array:t===null?Re.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?Re.promise:typeof Map<"u"&&t instanceof Map?Re.map:typeof Set<"u"&&t instanceof Set?Re.set:typeof Date<"u"&&t instanceof Date?Re.date:Re.object;default:return Re.unknown}},fe=bt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class Ci extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=e}format(e){const n=e||function(s){return s.message},r={_errors:[]},a=s=>{for(const l of s.issues)if(l.code==="invalid_union")l.unionErrors.map(a);else if(l.code==="invalid_return_type")a(l.returnTypeError);else if(l.code==="invalid_arguments")a(l.argumentsError);else if(l.path.length===0)r._errors.push(n(l));else{let c=r,d=0;for(;d<l.path.length;){const h=l.path[d];d===l.path.length-1?(c[h]=c[h]||{_errors:[]},c[h]._errors.push(n(l))):c[h]=c[h]||{_errors:[]},c=c[h],d++}}};return a(this),r}static assert(e){if(!(e instanceof Ci))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,bt.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=n=>n.message){const n={},r=[];for(const a of this.issues)if(a.path.length>0){const s=a.path[0];n[s]=n[s]||[],n[s].push(e(a))}else r.push(e(a));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}Ci.create=t=>new Ci(t);const qv=(t,e)=>{let n;switch(t.code){case fe.invalid_type:t.received===Re.undefined?n="Required":n=`Expected ${t.expected}, received ${t.received}`;break;case fe.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(t.expected,bt.jsonStringifyReplacer)}`;break;case fe.unrecognized_keys:n=`Unrecognized key(s) in object: ${bt.joinValues(t.keys,", ")}`;break;case fe.invalid_union:n="Invalid input";break;case fe.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${bt.joinValues(t.options)}`;break;case fe.invalid_enum_value:n=`Invalid enum value. Expected ${bt.joinValues(t.options)}, received '${t.received}'`;break;case fe.invalid_arguments:n="Invalid function arguments";break;case fe.invalid_return_type:n="Invalid function return type";break;case fe.invalid_date:n="Invalid date";break;case fe.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(n=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?n=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?n=`Invalid input: must end with "${t.validation.endsWith}"`:bt.assertNever(t.validation):t.validation!=="regex"?n=`Invalid ${t.validation}`:n="Invalid";break;case fe.too_small:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:n="Invalid input";break;case fe.too_big:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?n=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:n="Invalid input";break;case fe.custom:n="Invalid input";break;case fe.invalid_intersection_types:n="Intersection results could not be merged";break;case fe.not_multiple_of:n=`Number must be a multiple of ${t.multipleOf}`;break;case fe.not_finite:n="Number must be finite";break;default:n=e.defaultError,bt.assertNever(t)}return{message:n}};let bL=qv;function kL(){return bL}const wL=t=>{const{data:e,path:n,errorMaps:r,issueData:a}=t,s=[...n,...a.path||[]],l={...a,path:s};if(a.message!==void 0)return{...a,path:s,message:a.message};let c="";const d=r.filter(h=>!!h).slice().reverse();for(const h of d)c=h(l,{data:e,defaultError:c}).message;return{...a,path:s,message:c}};function Pe(t,e){const n=kL(),r=wL({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,n,n===qv?void 0:qv].filter(a=>!!a)});t.common.issues.push(r)}class or{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,n){const r=[];for(const a of n){if(a.status==="aborted")return Je;a.status==="dirty"&&e.dirty(),r.push(a.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,n){const r=[];for(const a of n){const s=await a.key,l=await a.value;r.push({key:s,value:l})}return or.mergeObjectSync(e,r)}static mergeObjectSync(e,n){const r={};for(const a of n){const{key:s,value:l}=a;if(s.status==="aborted"||l.status==="aborted")return Je;s.status==="dirty"&&e.dirty(),l.status==="dirty"&&e.dirty(),s.value!=="__proto__"&&(typeof l.value<"u"||a.alwaysSet)&&(r[s.value]=l.value)}return{status:e.value,value:r}}}const Je=Object.freeze({status:"aborted"}),Qc=t=>({status:"dirty",value:t}),Xr=t=>({status:"valid",value:t}),Mw=t=>t.status==="aborted",Nw=t=>t.status==="dirty",Sl=t=>t.status==="valid",gp=t=>typeof Promise<"u"&&t instanceof Promise;var Oe;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(Oe||(Oe={}));class Ga{constructor(e,n,r,a){this._cachedPath=[],this.parent=e,this.data=n,this._path=r,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Ow=(t,e)=>{if(Sl(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new Ci(t.common.issues);return this._error=n,this._error}}};function it(t){if(!t)return{};const{errorMap:e,invalid_type_error:n,required_error:r,description:a}=t;if(e&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(l,c)=>{const{message:d}=t;return l.code==="invalid_enum_value"?{message:d??c.defaultError}:typeof c.data>"u"?{message:d??r??c.defaultError}:l.code!=="invalid_type"?{message:c.defaultError}:{message:d??n??c.defaultError}},description:a}}class ft{get description(){return this._def.description}_getType(e){return as(e.data)}_getOrReturnCtx(e,n){return n||{common:e.parent.common,data:e.data,parsedType:as(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new or,ctx:{common:e.parent.common,data:e.data,parsedType:as(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const n=this._parse(e);if(gp(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(e){const n=this._parse(e);return Promise.resolve(n)}parse(e,n){const r=this.safeParse(e,n);if(r.success)return r.data;throw r.error}safeParse(e,n){const r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:as(e)},a=this._parseSync({data:e,path:r.path,parent:r});return Ow(r,a)}"~validate"(e){const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:as(e)};if(!this["~standard"].async)try{const r=this._parseSync({data:e,path:[],parent:n});return Sl(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:n}).then(r=>Sl(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(e,n){const r=await this.safeParseAsync(e,n);if(r.success)return r.data;throw r.error}async safeParseAsync(e,n){const r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:as(e)},a=this._parse({data:e,path:r.path,parent:r}),s=await(gp(a)?a:Promise.resolve(a));return Ow(r,s)}refine(e,n){const r=a=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(a):n;return this._refinement((a,s)=>{const l=e(a),c=()=>s.addIssue({code:fe.custom,...r(a)});return typeof Promise<"u"&&l instanceof Promise?l.then(d=>d?!0:(c(),!1)):l?!0:(c(),!1)})}refinement(e,n){return this._refinement((r,a)=>e(r)?!0:(a.addIssue(typeof n=="function"?n(r,a):n),!1))}_refinement(e){return new ho({schema:this,typeName:Xe.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return Si.create(this,this._def)}nullable(){return po.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ba.create(this)}promise(){return wp.create(this,this._def)}or(e){return _p.create([this,e],this._def)}and(e){return yp.create(this,e,this._def)}transform(e){return new ho({...it(this._def),schema:this,typeName:Xe.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const n=typeof e=="function"?e:()=>e;return new xp({...it(this._def),innerType:this,defaultValue:n,typeName:Xe.ZodDefault})}brand(){return new i3({typeName:Xe.ZodBranded,type:this,...it(this._def)})}catch(e){const n=typeof e=="function"?e:()=>e;return new Pp({...it(this._def),innerType:this,catchValue:n,typeName:Xe.ZodCatch})}describe(e){const n=this.constructor;return new n({...this._def,description:e})}pipe(e){return Hy.create(this,e)}readonly(){return Sp.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const xL=/^c[^\s-]{8,}$/i,PL=/^[0-9a-z]+$/,SL=/^[0-9A-HJKMNP-TV-Z]{26}$/i,CL=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,TL=/^[a-z0-9_-]{21}$/i,EL=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,AL=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,RL=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,LL="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Ig;const IL=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,DL=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ML=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,NL=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,OL=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,jL=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,n3="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",zL=new RegExp(`^${n3}$`);function r3(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);const n=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${n}`}function FL(t){return new RegExp(`^${r3(t)}$`)}function UL(t){let e=`${n3}T${r3(t)}`;const n=[];return n.push(t.local?"Z?":"Z"),t.offset&&n.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${n.join("|")})`,new RegExp(`^${e}$`)}function $L(t,e){return!!((e==="v4"||!e)&&IL.test(t)||(e==="v6"||!e)&&ML.test(t))}function BL(t,e){if(!EL.test(t))return!1;try{const[n]=t.split(".");if(!n)return!1;const r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),a=JSON.parse(atob(r));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function VL(t,e){return!!((e==="v4"||!e)&&DL.test(t)||(e==="v6"||!e)&&NL.test(t))}class Ua extends ft{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Re.string){const s=this._getOrReturnCtx(e);return Pe(s,{code:fe.invalid_type,expected:Re.string,received:s.parsedType}),Je}const r=new or;let a;for(const s of this._def.checks)if(s.kind==="min")e.data.length<s.value&&(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="max")e.data.length>s.value&&(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!1,message:s.message}),r.dirty());else if(s.kind==="length"){const l=e.data.length>s.value,c=e.data.length<s.value;(l||c)&&(a=this._getOrReturnCtx(e,a),l?Pe(a,{code:fe.too_big,maximum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}):c&&Pe(a,{code:fe.too_small,minimum:s.value,type:"string",inclusive:!0,exact:!0,message:s.message}),r.dirty())}else if(s.kind==="email")RL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"email",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="emoji")Ig||(Ig=new RegExp(LL,"u")),Ig.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"emoji",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="uuid")CL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"uuid",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="nanoid")TL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"nanoid",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid")xL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"cuid",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="cuid2")PL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"cuid2",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="ulid")SL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"ulid",code:fe.invalid_string,message:s.message}),r.dirty());else if(s.kind==="url")try{new URL(e.data)}catch{a=this._getOrReturnCtx(e,a),Pe(a,{validation:"url",code:fe.invalid_string,message:s.message}),r.dirty()}else s.kind==="regex"?(s.regex.lastIndex=0,s.regex.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"regex",code:fe.invalid_string,message:s.message}),r.dirty())):s.kind==="trim"?e.data=e.data.trim():s.kind==="includes"?e.data.includes(s.value,s.position)||(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.invalid_string,validation:{includes:s.value,position:s.position},message:s.message}),r.dirty()):s.kind==="toLowerCase"?e.data=e.data.toLowerCase():s.kind==="toUpperCase"?e.data=e.data.toUpperCase():s.kind==="startsWith"?e.data.startsWith(s.value)||(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.invalid_string,validation:{startsWith:s.value},message:s.message}),r.dirty()):s.kind==="endsWith"?e.data.endsWith(s.value)||(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.invalid_string,validation:{endsWith:s.value},message:s.message}),r.dirty()):s.kind==="datetime"?UL(s).test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.invalid_string,validation:"datetime",message:s.message}),r.dirty()):s.kind==="date"?zL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.invalid_string,validation:"date",message:s.message}),r.dirty()):s.kind==="time"?FL(s).test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.invalid_string,validation:"time",message:s.message}),r.dirty()):s.kind==="duration"?AL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"duration",code:fe.invalid_string,message:s.message}),r.dirty()):s.kind==="ip"?$L(e.data,s.version)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"ip",code:fe.invalid_string,message:s.message}),r.dirty()):s.kind==="jwt"?BL(e.data,s.alg)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"jwt",code:fe.invalid_string,message:s.message}),r.dirty()):s.kind==="cidr"?VL(e.data,s.version)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"cidr",code:fe.invalid_string,message:s.message}),r.dirty()):s.kind==="base64"?OL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"base64",code:fe.invalid_string,message:s.message}),r.dirty()):s.kind==="base64url"?jL.test(e.data)||(a=this._getOrReturnCtx(e,a),Pe(a,{validation:"base64url",code:fe.invalid_string,message:s.message}),r.dirty()):bt.assertNever(s);return{status:r.value,value:e.data}}_regex(e,n,r){return this.refinement(a=>e.test(a),{validation:n,code:fe.invalid_string,...Oe.errToObj(r)})}_addCheck(e){return new Ua({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Oe.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Oe.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Oe.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Oe.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Oe.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Oe.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Oe.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Oe.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Oe.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Oe.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Oe.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Oe.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Oe.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...Oe.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...Oe.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...Oe.errToObj(e)})}regex(e,n){return this._addCheck({kind:"regex",regex:e,...Oe.errToObj(n)})}includes(e,n){return this._addCheck({kind:"includes",value:e,position:n?.position,...Oe.errToObj(n?.message)})}startsWith(e,n){return this._addCheck({kind:"startsWith",value:e,...Oe.errToObj(n)})}endsWith(e,n){return this._addCheck({kind:"endsWith",value:e,...Oe.errToObj(n)})}min(e,n){return this._addCheck({kind:"min",value:e,...Oe.errToObj(n)})}max(e,n){return this._addCheck({kind:"max",value:e,...Oe.errToObj(n)})}length(e,n){return this._addCheck({kind:"length",value:e,...Oe.errToObj(n)})}nonempty(e){return this.min(1,Oe.errToObj(e))}trim(){return new Ua({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Ua({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Ua({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxLength(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}Ua.create=t=>new Ua({checks:[],typeName:Xe.ZodString,coerce:t?.coerce??!1,...it(t)});function HL(t,e){const n=(t.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,a=n>r?n:r,s=Number.parseInt(t.toFixed(a).replace(".","")),l=Number.parseInt(e.toFixed(a).replace(".",""));return s%l/10**a}class oo extends ft{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==Re.number){const s=this._getOrReturnCtx(e);return Pe(s,{code:fe.invalid_type,expected:Re.number,received:s.parsedType}),Je}let r;const a=new or;for(const s of this._def.checks)s.kind==="int"?bt.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.invalid_type,expected:"integer",received:"float",message:s.message}),a.dirty()):s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,exact:!1,message:s.message}),a.dirty()):s.kind==="multipleOf"?HL(e.data,s.value)!==0&&(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):s.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.not_finite,message:s.message}),a.dirty()):bt.assertNever(s);return{status:a.value,value:e.data}}gte(e,n){return this.setLimit("min",e,!0,Oe.toString(n))}gt(e,n){return this.setLimit("min",e,!1,Oe.toString(n))}lte(e,n){return this.setLimit("max",e,!0,Oe.toString(n))}lt(e,n){return this.setLimit("max",e,!1,Oe.toString(n))}setLimit(e,n,r,a){return new oo({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:r,message:Oe.toString(a)}]})}_addCheck(e){return new oo({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Oe.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Oe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Oe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Oe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Oe.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:Oe.toString(n)})}finite(e){return this._addCheck({kind:"finite",message:Oe.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Oe.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Oe.toString(e)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&bt.isInteger(e.value))}get isFinite(){let e=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(e===null||r.value<e)&&(e=r.value)}return Number.isFinite(n)&&Number.isFinite(e)}}oo.create=t=>new oo({checks:[],typeName:Xe.ZodNumber,coerce:t?.coerce||!1,...it(t)});class lo extends ft{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==Re.bigint)return this._getInvalidInput(e);let r;const a=new or;for(const s of this._def.checks)s.kind==="min"?(s.inclusive?e.data<s.value:e.data<=s.value)&&(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.too_small,type:"bigint",minimum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="max"?(s.inclusive?e.data>s.value:e.data>=s.value)&&(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.too_big,type:"bigint",maximum:s.value,inclusive:s.inclusive,message:s.message}),a.dirty()):s.kind==="multipleOf"?e.data%s.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),Pe(r,{code:fe.not_multiple_of,multipleOf:s.value,message:s.message}),a.dirty()):bt.assertNever(s);return{status:a.value,value:e.data}}_getInvalidInput(e){const n=this._getOrReturnCtx(e);return Pe(n,{code:fe.invalid_type,expected:Re.bigint,received:n.parsedType}),Je}gte(e,n){return this.setLimit("min",e,!0,Oe.toString(n))}gt(e,n){return this.setLimit("min",e,!1,Oe.toString(n))}lte(e,n){return this.setLimit("max",e,!0,Oe.toString(n))}lt(e,n){return this.setLimit("max",e,!1,Oe.toString(n))}setLimit(e,n,r,a){return new lo({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:r,message:Oe.toString(a)}]})}_addCheck(e){return new lo({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Oe.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Oe.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Oe.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Oe.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:Oe.toString(n)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}lo.create=t=>new lo({checks:[],typeName:Xe.ZodBigInt,coerce:t?.coerce??!1,...it(t)});class vp extends ft{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==Re.boolean){const r=this._getOrReturnCtx(e);return Pe(r,{code:fe.invalid_type,expected:Re.boolean,received:r.parsedType}),Je}return Xr(e.data)}}vp.create=t=>new vp({typeName:Xe.ZodBoolean,coerce:t?.coerce||!1,...it(t)});class Cl extends ft{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Re.date){const s=this._getOrReturnCtx(e);return Pe(s,{code:fe.invalid_type,expected:Re.date,received:s.parsedType}),Je}if(Number.isNaN(e.data.getTime())){const s=this._getOrReturnCtx(e);return Pe(s,{code:fe.invalid_date}),Je}const r=new or;let a;for(const s of this._def.checks)s.kind==="min"?e.data.getTime()<s.value&&(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.too_small,message:s.message,inclusive:!0,exact:!1,minimum:s.value,type:"date"}),r.dirty()):s.kind==="max"?e.data.getTime()>s.value&&(a=this._getOrReturnCtx(e,a),Pe(a,{code:fe.too_big,message:s.message,inclusive:!0,exact:!1,maximum:s.value,type:"date"}),r.dirty()):bt.assertNever(s);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Cl({...this._def,checks:[...this._def.checks,e]})}min(e,n){return this._addCheck({kind:"min",value:e.getTime(),message:Oe.toString(n)})}max(e,n){return this._addCheck({kind:"max",value:e.getTime(),message:Oe.toString(n)})}get minDate(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e!=null?new Date(e):null}}Cl.create=t=>new Cl({checks:[],coerce:t?.coerce||!1,typeName:Xe.ZodDate,...it(t)});class jw extends ft{_parse(e){if(this._getType(e)!==Re.symbol){const r=this._getOrReturnCtx(e);return Pe(r,{code:fe.invalid_type,expected:Re.symbol,received:r.parsedType}),Je}return Xr(e.data)}}jw.create=t=>new jw({typeName:Xe.ZodSymbol,...it(t)});class Kv extends ft{_parse(e){if(this._getType(e)!==Re.undefined){const r=this._getOrReturnCtx(e);return Pe(r,{code:fe.invalid_type,expected:Re.undefined,received:r.parsedType}),Je}return Xr(e.data)}}Kv.create=t=>new Kv({typeName:Xe.ZodUndefined,...it(t)});class Yv extends ft{_parse(e){if(this._getType(e)!==Re.null){const r=this._getOrReturnCtx(e);return Pe(r,{code:fe.invalid_type,expected:Re.null,received:r.parsedType}),Je}return Xr(e.data)}}Yv.create=t=>new Yv({typeName:Xe.ZodNull,...it(t)});class zw extends ft{constructor(){super(...arguments),this._any=!0}_parse(e){return Xr(e.data)}}zw.create=t=>new zw({typeName:Xe.ZodAny,...it(t)});class Zv extends ft{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Xr(e.data)}}Zv.create=t=>new Zv({typeName:Xe.ZodUnknown,...it(t)});class ds extends ft{_parse(e){const n=this._getOrReturnCtx(e);return Pe(n,{code:fe.invalid_type,expected:Re.never,received:n.parsedType}),Je}}ds.create=t=>new ds({typeName:Xe.ZodNever,...it(t)});class Fw extends ft{_parse(e){if(this._getType(e)!==Re.undefined){const r=this._getOrReturnCtx(e);return Pe(r,{code:fe.invalid_type,expected:Re.void,received:r.parsedType}),Je}return Xr(e.data)}}Fw.create=t=>new Fw({typeName:Xe.ZodVoid,...it(t)});class Ba extends ft{_parse(e){const{ctx:n,status:r}=this._processInputParams(e),a=this._def;if(n.parsedType!==Re.array)return Pe(n,{code:fe.invalid_type,expected:Re.array,received:n.parsedType}),Je;if(a.exactLength!==null){const l=n.data.length>a.exactLength.value,c=n.data.length<a.exactLength.value;(l||c)&&(Pe(n,{code:l?fe.too_big:fe.too_small,minimum:c?a.exactLength.value:void 0,maximum:l?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),r.dirty())}if(a.minLength!==null&&n.data.length<a.minLength.value&&(Pe(n,{code:fe.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),r.dirty()),a.maxLength!==null&&n.data.length>a.maxLength.value&&(Pe(n,{code:fe.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((l,c)=>a.type._parseAsync(new Ga(n,l,n.path,c)))).then(l=>or.mergeArray(r,l));const s=[...n.data].map((l,c)=>a.type._parseSync(new Ga(n,l,n.path,c)));return or.mergeArray(r,s)}get element(){return this._def.type}min(e,n){return new Ba({...this._def,minLength:{value:e,message:Oe.toString(n)}})}max(e,n){return new Ba({...this._def,maxLength:{value:e,message:Oe.toString(n)}})}length(e,n){return new Ba({...this._def,exactLength:{value:e,message:Oe.toString(n)}})}nonempty(e){return this.min(1,e)}}Ba.create=(t,e)=>new Ba({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Xe.ZodArray,...it(e)});function ol(t){if(t instanceof gn){const e={};for(const n in t.shape){const r=t.shape[n];e[n]=Si.create(ol(r))}return new gn({...t._def,shape:()=>e})}else return t instanceof Ba?new Ba({...t._def,type:ol(t.element)}):t instanceof Si?Si.create(ol(t.unwrap())):t instanceof po?po.create(ol(t.unwrap())):t instanceof co?co.create(t.items.map(e=>ol(e))):t}class gn extends ft{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),n=bt.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==Re.object){const h=this._getOrReturnCtx(e);return Pe(h,{code:fe.invalid_type,expected:Re.object,received:h.parsedType}),Je}const{status:r,ctx:a}=this._processInputParams(e),{shape:s,keys:l}=this._getCached(),c=[];if(!(this._def.catchall instanceof ds&&this._def.unknownKeys==="strip"))for(const h in a.data)l.includes(h)||c.push(h);const d=[];for(const h of l){const p=s[h],m=a.data[h];d.push({key:{status:"valid",value:h},value:p._parse(new Ga(a,m,a.path,h)),alwaysSet:h in a.data})}if(this._def.catchall instanceof ds){const h=this._def.unknownKeys;if(h==="passthrough")for(const p of c)d.push({key:{status:"valid",value:p},value:{status:"valid",value:a.data[p]}});else if(h==="strict")c.length>0&&(Pe(a,{code:fe.unrecognized_keys,keys:c}),r.dirty());else if(h!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const h=this._def.catchall;for(const p of c){const m=a.data[p];d.push({key:{status:"valid",value:p},value:h._parse(new Ga(a,m,a.path,p)),alwaysSet:p in a.data})}}return a.common.async?Promise.resolve().then(async()=>{const h=[];for(const p of d){const m=await p.key,v=await p.value;h.push({key:m,value:v,alwaysSet:p.alwaysSet})}return h}).then(h=>or.mergeObjectSync(r,h)):or.mergeObjectSync(r,d)}get shape(){return this._def.shape()}strict(e){return Oe.errToObj,new gn({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(n,r)=>{const a=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:Oe.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new gn({...this._def,unknownKeys:"strip"})}passthrough(){return new gn({...this._def,unknownKeys:"passthrough"})}extend(e){return new gn({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new gn({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Xe.ZodObject})}setKey(e,n){return this.augment({[e]:n})}catchall(e){return new gn({...this._def,catchall:e})}pick(e){const n={};for(const r of bt.objectKeys(e))e[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new gn({...this._def,shape:()=>n})}omit(e){const n={};for(const r of bt.objectKeys(this.shape))e[r]||(n[r]=this.shape[r]);return new gn({...this._def,shape:()=>n})}deepPartial(){return ol(this)}partial(e){const n={};for(const r of bt.objectKeys(this.shape)){const a=this.shape[r];e&&!e[r]?n[r]=a:n[r]=a.optional()}return new gn({...this._def,shape:()=>n})}required(e){const n={};for(const r of bt.objectKeys(this.shape))if(e&&!e[r])n[r]=this.shape[r];else{let s=this.shape[r];for(;s instanceof Si;)s=s._def.innerType;n[r]=s}return new gn({...this._def,shape:()=>n})}keyof(){return a3(bt.objectKeys(this.shape))}}gn.create=(t,e)=>new gn({shape:()=>t,unknownKeys:"strip",catchall:ds.create(),typeName:Xe.ZodObject,...it(e)});gn.strictCreate=(t,e)=>new gn({shape:()=>t,unknownKeys:"strict",catchall:ds.create(),typeName:Xe.ZodObject,...it(e)});gn.lazycreate=(t,e)=>new gn({shape:t,unknownKeys:"strip",catchall:ds.create(),typeName:Xe.ZodObject,...it(e)});class _p extends ft{_parse(e){const{ctx:n}=this._processInputParams(e),r=this._def.options;function a(s){for(const c of s)if(c.result.status==="valid")return c.result;for(const c of s)if(c.result.status==="dirty")return n.common.issues.push(...c.ctx.common.issues),c.result;const l=s.map(c=>new Ci(c.ctx.common.issues));return Pe(n,{code:fe.invalid_union,unionErrors:l}),Je}if(n.common.async)return Promise.all(r.map(async s=>{const l={...n,common:{...n.common,issues:[]},parent:null};return{result:await s._parseAsync({data:n.data,path:n.path,parent:l}),ctx:l}})).then(a);{let s;const l=[];for(const d of r){const h={...n,common:{...n.common,issues:[]},parent:null},p=d._parseSync({data:n.data,path:n.path,parent:h});if(p.status==="valid")return p;p.status==="dirty"&&!s&&(s={result:p,ctx:h}),h.common.issues.length&&l.push(h.common.issues)}if(s)return n.common.issues.push(...s.ctx.common.issues),s.result;const c=l.map(d=>new Ci(d));return Pe(n,{code:fe.invalid_union,unionErrors:c}),Je}}get options(){return this._def.options}}_p.create=(t,e)=>new _p({options:t,typeName:Xe.ZodUnion,...it(e)});const gi=t=>t instanceof Xv?gi(t.schema):t instanceof ho?gi(t.innerType()):t instanceof kp?[t.value]:t instanceof uo?t.options:t instanceof Qv?bt.objectValues(t.enum):t instanceof xp?gi(t._def.innerType):t instanceof Kv?[void 0]:t instanceof Yv?[null]:t instanceof Si?[void 0,...gi(t.unwrap())]:t instanceof po?[null,...gi(t.unwrap())]:t instanceof i3||t instanceof Sp?gi(t.unwrap()):t instanceof Pp?gi(t._def.innerType):[];class Vy extends ft{_parse(e){const{ctx:n}=this._processInputParams(e);if(n.parsedType!==Re.object)return Pe(n,{code:fe.invalid_type,expected:Re.object,received:n.parsedType}),Je;const r=this.discriminator,a=n.data[r],s=this.optionsMap.get(a);return s?n.common.async?s._parseAsync({data:n.data,path:n.path,parent:n}):s._parseSync({data:n.data,path:n.path,parent:n}):(Pe(n,{code:fe.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),Je)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,n,r){const a=new Map;for(const s of n){const l=gi(s.shape[e]);if(!l.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const c of l){if(a.has(c))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(c)}`);a.set(c,s)}}return new Vy({typeName:Xe.ZodDiscriminatedUnion,discriminator:e,options:n,optionsMap:a,...it(r)})}}function Jv(t,e){const n=as(t),r=as(e);if(t===e)return{valid:!0,data:t};if(n===Re.object&&r===Re.object){const a=bt.objectKeys(e),s=bt.objectKeys(t).filter(c=>a.indexOf(c)!==-1),l={...t,...e};for(const c of s){const d=Jv(t[c],e[c]);if(!d.valid)return{valid:!1};l[c]=d.data}return{valid:!0,data:l}}else if(n===Re.array&&r===Re.array){if(t.length!==e.length)return{valid:!1};const a=[];for(let s=0;s<t.length;s++){const l=t[s],c=e[s],d=Jv(l,c);if(!d.valid)return{valid:!1};a.push(d.data)}return{valid:!0,data:a}}else return n===Re.date&&r===Re.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}class yp extends ft{_parse(e){const{status:n,ctx:r}=this._processInputParams(e),a=(s,l)=>{if(Mw(s)||Mw(l))return Je;const c=Jv(s.value,l.value);return c.valid?((Nw(s)||Nw(l))&&n.dirty(),{status:n.value,value:c.data}):(Pe(r,{code:fe.invalid_intersection_types}),Je)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([s,l])=>a(s,l)):a(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}yp.create=(t,e,n)=>new yp({left:t,right:e,typeName:Xe.ZodIntersection,...it(n)});class co extends ft{_parse(e){const{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==Re.array)return Pe(r,{code:fe.invalid_type,expected:Re.array,received:r.parsedType}),Je;if(r.data.length<this._def.items.length)return Pe(r,{code:fe.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Je;!this._def.rest&&r.data.length>this._def.items.length&&(Pe(r,{code:fe.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const s=[...r.data].map((l,c)=>{const d=this._def.items[c]||this._def.rest;return d?d._parse(new Ga(r,l,r.path,c)):null}).filter(l=>!!l);return r.common.async?Promise.all(s).then(l=>or.mergeArray(n,l)):or.mergeArray(n,s)}get items(){return this._def.items}rest(e){return new co({...this._def,rest:e})}}co.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new co({items:t,typeName:Xe.ZodTuple,rest:null,...it(e)})};class bp extends ft{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==Re.object)return Pe(r,{code:fe.invalid_type,expected:Re.object,received:r.parsedType}),Je;const a=[],s=this._def.keyType,l=this._def.valueType;for(const c in r.data)a.push({key:s._parse(new Ga(r,c,r.path,c)),value:l._parse(new Ga(r,r.data[c],r.path,c)),alwaysSet:c in r.data});return r.common.async?or.mergeObjectAsync(n,a):or.mergeObjectSync(n,a)}get element(){return this._def.valueType}static create(e,n,r){return n instanceof ft?new bp({keyType:e,valueType:n,typeName:Xe.ZodRecord,...it(r)}):new bp({keyType:Ua.create(),valueType:e,typeName:Xe.ZodRecord,...it(n)})}}class Uw extends ft{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==Re.map)return Pe(r,{code:fe.invalid_type,expected:Re.map,received:r.parsedType}),Je;const a=this._def.keyType,s=this._def.valueType,l=[...r.data.entries()].map(([c,d],h)=>({key:a._parse(new Ga(r,c,r.path,[h,"key"])),value:s._parse(new Ga(r,d,r.path,[h,"value"]))}));if(r.common.async){const c=new Map;return Promise.resolve().then(async()=>{for(const d of l){const h=await d.key,p=await d.value;if(h.status==="aborted"||p.status==="aborted")return Je;(h.status==="dirty"||p.status==="dirty")&&n.dirty(),c.set(h.value,p.value)}return{status:n.value,value:c}})}else{const c=new Map;for(const d of l){const h=d.key,p=d.value;if(h.status==="aborted"||p.status==="aborted")return Je;(h.status==="dirty"||p.status==="dirty")&&n.dirty(),c.set(h.value,p.value)}return{status:n.value,value:c}}}}Uw.create=(t,e,n)=>new Uw({valueType:e,keyType:t,typeName:Xe.ZodMap,...it(n)});class Eu extends ft{_parse(e){const{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==Re.set)return Pe(r,{code:fe.invalid_type,expected:Re.set,received:r.parsedType}),Je;const a=this._def;a.minSize!==null&&r.data.size<a.minSize.value&&(Pe(r,{code:fe.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),n.dirty()),a.maxSize!==null&&r.data.size>a.maxSize.value&&(Pe(r,{code:fe.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),n.dirty());const s=this._def.valueType;function l(d){const h=new Set;for(const p of d){if(p.status==="aborted")return Je;p.status==="dirty"&&n.dirty(),h.add(p.value)}return{status:n.value,value:h}}const c=[...r.data.values()].map((d,h)=>s._parse(new Ga(r,d,r.path,h)));return r.common.async?Promise.all(c).then(d=>l(d)):l(c)}min(e,n){return new Eu({...this._def,minSize:{value:e,message:Oe.toString(n)}})}max(e,n){return new Eu({...this._def,maxSize:{value:e,message:Oe.toString(n)}})}size(e,n){return this.min(e,n).max(e,n)}nonempty(e){return this.min(1,e)}}Eu.create=(t,e)=>new Eu({valueType:t,minSize:null,maxSize:null,typeName:Xe.ZodSet,...it(e)});class Xv extends ft{get schema(){return this._def.getter()}_parse(e){const{ctx:n}=this._processInputParams(e);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Xv.create=(t,e)=>new Xv({getter:t,typeName:Xe.ZodLazy,...it(e)});class kp extends ft{_parse(e){if(e.data!==this._def.value){const n=this._getOrReturnCtx(e);return Pe(n,{received:n.data,code:fe.invalid_literal,expected:this._def.value}),Je}return{status:"valid",value:e.data}}get value(){return this._def.value}}kp.create=(t,e)=>new kp({value:t,typeName:Xe.ZodLiteral,...it(e)});function a3(t,e){return new uo({values:t,typeName:Xe.ZodEnum,...it(e)})}class uo extends ft{_parse(e){if(typeof e.data!="string"){const n=this._getOrReturnCtx(e),r=this._def.values;return Pe(n,{expected:bt.joinValues(r),received:n.parsedType,code:fe.invalid_type}),Je}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const n=this._getOrReturnCtx(e),r=this._def.values;return Pe(n,{received:n.data,code:fe.invalid_enum_value,options:r}),Je}return Xr(e.data)}get options(){return this._def.values}get enum(){const e={};for(const n of this._def.values)e[n]=n;return e}get Values(){const e={};for(const n of this._def.values)e[n]=n;return e}get Enum(){const e={};for(const n of this._def.values)e[n]=n;return e}extract(e,n=this._def){return uo.create(e,{...this._def,...n})}exclude(e,n=this._def){return uo.create(this.options.filter(r=>!e.includes(r)),{...this._def,...n})}}uo.create=a3;class Qv extends ft{_parse(e){const n=bt.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==Re.string&&r.parsedType!==Re.number){const a=bt.objectValues(n);return Pe(r,{expected:bt.joinValues(a),received:r.parsedType,code:fe.invalid_type}),Je}if(this._cache||(this._cache=new Set(bt.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const a=bt.objectValues(n);return Pe(r,{received:r.data,code:fe.invalid_enum_value,options:a}),Je}return Xr(e.data)}get enum(){return this._def.values}}Qv.create=(t,e)=>new Qv({values:t,typeName:Xe.ZodNativeEnum,...it(e)});class wp extends ft{unwrap(){return this._def.type}_parse(e){const{ctx:n}=this._processInputParams(e);if(n.parsedType!==Re.promise&&n.common.async===!1)return Pe(n,{code:fe.invalid_type,expected:Re.promise,received:n.parsedType}),Je;const r=n.parsedType===Re.promise?n.data:Promise.resolve(n.data);return Xr(r.then(a=>this._def.type.parseAsync(a,{path:n.path,errorMap:n.common.contextualErrorMap})))}}wp.create=(t,e)=>new wp({type:t,typeName:Xe.ZodPromise,...it(e)});class ho extends ft{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Xe.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:n,ctx:r}=this._processInputParams(e),a=this._def.effect||null,s={addIssue:l=>{Pe(r,l),l.fatal?n.abort():n.dirty()},get path(){return r.path}};if(s.addIssue=s.addIssue.bind(s),a.type==="preprocess"){const l=a.transform(r.data,s);if(r.common.async)return Promise.resolve(l).then(async c=>{if(n.value==="aborted")return Je;const d=await this._def.schema._parseAsync({data:c,path:r.path,parent:r});return d.status==="aborted"?Je:d.status==="dirty"||n.value==="dirty"?Qc(d.value):d});{if(n.value==="aborted")return Je;const c=this._def.schema._parseSync({data:l,path:r.path,parent:r});return c.status==="aborted"?Je:c.status==="dirty"||n.value==="dirty"?Qc(c.value):c}}if(a.type==="refinement"){const l=c=>{const d=a.refinement(c,s);if(r.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return c};if(r.common.async===!1){const c=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return c.status==="aborted"?Je:(c.status==="dirty"&&n.dirty(),l(c.value),{status:n.value,value:c.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(c=>c.status==="aborted"?Je:(c.status==="dirty"&&n.dirty(),l(c.value).then(()=>({status:n.value,value:c.value}))))}if(a.type==="transform")if(r.common.async===!1){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Sl(l))return Je;const c=a.transform(l.value,s);if(c instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:c}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>Sl(l)?Promise.resolve(a.transform(l.value,s)).then(c=>({status:n.value,value:c})):Je);bt.assertNever(a)}}ho.create=(t,e,n)=>new ho({schema:t,typeName:Xe.ZodEffects,effect:e,...it(n)});ho.createWithPreprocess=(t,e,n)=>new ho({schema:e,effect:{type:"preprocess",transform:t},typeName:Xe.ZodEffects,...it(n)});class Si extends ft{_parse(e){return this._getType(e)===Re.undefined?Xr(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Si.create=(t,e)=>new Si({innerType:t,typeName:Xe.ZodOptional,...it(e)});class po extends ft{_parse(e){return this._getType(e)===Re.null?Xr(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}po.create=(t,e)=>new po({innerType:t,typeName:Xe.ZodNullable,...it(e)});class xp extends ft{_parse(e){const{ctx:n}=this._processInputParams(e);let r=n.data;return n.parsedType===Re.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}xp.create=(t,e)=>new xp({innerType:t,typeName:Xe.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...it(e)});class Pp extends ft{_parse(e){const{ctx:n}=this._processInputParams(e),r={...n,common:{...n.common,issues:[]}},a=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return gp(a)?a.then(s=>({status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Ci(r.common.issues)},input:r.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Ci(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}Pp.create=(t,e)=>new Pp({innerType:t,typeName:Xe.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...it(e)});class $w extends ft{_parse(e){if(this._getType(e)!==Re.nan){const r=this._getOrReturnCtx(e);return Pe(r,{code:fe.invalid_type,expected:Re.nan,received:r.parsedType}),Je}return{status:"valid",value:e.data}}}$w.create=t=>new $w({typeName:Xe.ZodNaN,...it(t)});class i3 extends ft{_parse(e){const{ctx:n}=this._processInputParams(e),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class Hy extends ft{_parse(e){const{status:n,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{const s=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?Je:s.status==="dirty"?(n.dirty(),Qc(s.value)):this._def.out._parseAsync({data:s.value,path:r.path,parent:r})})();{const a=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?Je:a.status==="dirty"?(n.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:r.path,parent:r})}}static create(e,n){return new Hy({in:e,out:n,typeName:Xe.ZodPipeline})}}class Sp extends ft{_parse(e){const n=this._def.innerType._parse(e),r=a=>(Sl(a)&&(a.value=Object.freeze(a.value)),a);return gp(n)?n.then(a=>r(a)):r(n)}unwrap(){return this._def.innerType}}Sp.create=(t,e)=>new Sp({innerType:t,typeName:Xe.ZodReadonly,...it(e)});var Xe;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Xe||(Xe={}));const w=Ua.create,se=oo.create;lo.create;const Ye=vp.create,Wy=Cl.create,Jn=Zv.create;ds.create;const ge=Ba.create,M=gn.create,Qr=_p.create,s3=Vy.create;yp.create;co.create;const en=bp.create,ut=kp.create,vt=uo.create;wp.create;Si.create;po.create;const e_={string:(t=>Ua.create({...t,coerce:!0})),number:(t=>oo.create({...t,coerce:!0})),boolean:(t=>vp.create({...t,coerce:!0})),bigint:(t=>lo.create({...t,coerce:!0})),date:(t=>Cl.create({...t,coerce:!0}))};var Oa;(function(t){t.STRING="string",t.DATE="date",t.DATETIME="datetime",t.INTEGER="integer",t.FLOAT="float",t.BOOLEAN="boolean",t.UUID="uuid",t.JSON="json"})(Oa||(Oa={}));const WL=vt(["CASCADE","RESTRICT","NO ACTION"]),GL=vt(["CASCADE","SET NULL","SET DEFAULT","RESTRICT","NO ACTION"]),qL=vt([Oa.STRING,Oa.DATE,Oa.DATETIME,Oa.INTEGER,Oa.FLOAT,Oa.BOOLEAN,Oa.UUID,Oa.JSON]),o3=M({referenceTable:w().min(1,"Target table cannot be empty"),referenceColumn:w().min(1,"Target column cannot be empty"),onDelete:GL,onUpdate:WL}),l3=M({columnName:w().min(1,"Column name cannot be empty").max(64,"Column name must be less than 64 characters"),type:Qr([qL,w()]),defaultValue:w().optional(),isPrimaryKey:Ye().optional(),isNullable:Ye(),isUnique:Ye(),foreignKey:o3.optional()}),c3=M({tableName:w().min(1,"Table name cannot be empty").max(64,"Table name must be less than 64 characters"),columns:ge(l3).min(1,"At least one column is required"),recordCount:se().optional(),createdAt:w().optional(),updatedAt:w().optional()}),KL=M({functionName:w(),functionDef:w(),kind:w()}),YL=M({tableName:w(),indexName:w(),indexDef:w(),isUnique:Ye().nullable(),isPrimary:Ye().nullable()}),ZL=M({tableName:w(),policyName:w(),cmd:w(),roles:ge(w()),qual:w().nullable(),withCheck:w().nullable()}),JL=M({tableName:w(),triggerName:w(),actionTiming:w(),eventManipulation:w(),actionOrientation:w(),actionCondition:w().nullable(),actionStatement:w()});c3.pick({tableName:!0,columns:!0}).extend({rlsEnabled:Ye().default(!0)});c3.pick({tableName:!0,columns:!0}).extend({message:w(),autoFields:ge(w()),nextActions:w()});M({addColumns:ge(l3.omit({foreignKey:!0})).optional(),dropColumns:ge(w()).optional(),updateColumns:ge(M({columnName:w(),defaultValue:w().optional(),newColumnName:w().min(1,"New column name cannot be empty").max(64,"New column name must be less than 64 characters").optional()})).optional(),addForeignKeys:ge(M({columnName:w().min(1,"Column name is required for adding foreign key"),foreignKey:o3})).optional(),dropForeignKeys:ge(w()).optional(),renameTable:M({newTableName:w().min(1,"New table name cannot be empty").max(64,"New table name must be less than 64 characters")}).optional()});M({message:w(),tableName:w(),operations:ge(w())});M({message:w(),tableName:w(),nextActions:w()});M({query:w().min(1,"Query is required"),params:ge(Jn()).optional()});M({rows:ge(en(w(),Jn())),rowCount:se().nullable(),fields:ge(M({name:w(),dataTypeID:se()})).optional()});M({tables:ge(w()).optional(),format:vt(["sql","json"]).default("sql"),includeData:Ye().default(!0),includeFunctions:Ye().default(!1),includeSequences:Ye().default(!1),includeViews:Ye().default(!1),rowLimit:se().int().positive().max(1e4).default(1e3)});const XL=M({timestamp:w(),tables:en(w(),M({schema:ge(M({columnName:w(),dataType:w(),characterMaximumLength:se().nullable(),isNullable:w(),columnDefault:w().nullable()})),indexes:ge(M({indexname:w(),indexdef:w(),isUnique:Ye().nullable(),isPrimary:Ye().nullable()})),foreignKeys:ge(M({constraintName:w(),columnName:w(),foreignTableName:w(),foreignColumnName:w(),deleteRule:w().nullable(),updateRule:w().nullable()})),rlsEnabled:Ye().optional(),policies:ge(M({policyname:w(),cmd:w(),roles:ge(w()),qual:w().nullable(),withCheck:w().nullable()})),triggers:ge(M({triggerName:w(),actionTiming:w(),eventManipulation:w(),actionOrientation:w(),actionCondition:w().nullable(),actionStatement:w(),newTable:w().nullable(),oldTable:w().nullable()})),rows:ge(en(w(),Jn())).optional(),recordCount:se().optional()})),functions:ge(M({functionName:w(),functionDef:w(),kind:w()})),sequences:ge(M({sequenceName:w(),startValue:w(),increment:w(),minValue:w().nullable(),maxValue:w().nullable(),cycle:w()})),views:ge(M({viewName:w(),definition:w()}))});M({format:vt(["sql","json"]),data:Qr([w(),XL]),timestamp:w()});M({truncate:Qr([Ye(),w().transform(t=>{if(t==="true")return!0;if(t==="false")return!1;throw new Error("Invalid boolean string")})]).default(!1)});M({success:Ye(),message:w(),filename:w(),tables:ge(w()),rowsImported:se(),fileSize:se()});M({table:w().min(1,"Table name is required"),upsertKey:w().optional()});M({success:Ye(),message:w(),table:w(),rowsAffected:se(),totalRecords:se(),filename:w()});M({functions:ge(KL)});M({indexes:ge(YL)});M({policies:ge(ZL)});M({triggers:ge(JL)});const QL=M({id:w(),key:w(),isActive:Ye(),isReserved:Ye(),lastUsedAt:w().nullable(),expiresAt:w().nullable(),createdAt:w(),updatedAt:w()});M({secrets:ge(QL)});M({key:w(),value:w()});M({key:w().regex(/^[A-Z0-9_]+$/,"Use uppercase letters, numbers, and underscores only"),value:w().min(1,"Value is required")});M({success:ut(!0),message:w(),id:w()});M({success:ut(!0),message:w()});M({success:ut(!0),message:w()});const eI=M({key:w(),bucket:w(),size:se(),mimeType:w().optional(),uploadedAt:w(),url:w()}),tI=M({name:w(),public:Ye(),createdAt:w()});M({id:w().uuid(),maxFileSizeMb:se().int().positive(),createdAt:w(),updatedAt:w()});M({bucketName:w().min(1,"Bucket name cannot be empty"),isPublic:Ye().default(!0)});M({isPublic:Ye()});M({objects:ge(eI),pagination:M({offset:se(),limit:se(),total:se()})});M({filename:w().min(1,"Filename cannot be empty"),contentType:w().optional(),size:se().optional()});M({method:vt(["presigned","direct"]),uploadUrl:w(),fields:en(w()).optional(),key:w(),confirmRequired:Ye(),confirmUrl:w().optional(),expiresAt:Wy().optional()});M({expiresIn:se().optional().default(3600)});M({method:vt(["presigned","direct"]),url:w(),expiresAt:Wy().optional(),headers:en(w()).optional()});M({size:se(),contentType:w().optional(),etag:w().optional()});M({maxFileSizeMb:se().int().min(1,"Must be at least 1 MB").max(200,"Must be at most 200 MB")});const Pf=w().uuid("Invalid user ID format"),qa=w().email("Invalid email format").toLowerCase().trim(),Gy=w(),nI=w().min(1,"Name is required").max(100,"Name must be less than 100 characters").trim(),rI=vt(["anon","authenticated","project_admin"]),Bw=vt(["code","link"]),u3=M({name:w().optional(),avatar_url:w().url().optional()}).passthrough(),Bl=M({id:Pf,email:qa,emailVerified:Ye(),providers:ge(w()).optional(),createdAt:w(),updatedAt:w(),profile:u3.nullable(),metadata:en(Jn()).nullable()}),Sf=vt(["google","github","discord","linkedin","facebook","instagram","tiktok","apple","x","spotify","microsoft"]);M({provider:Sf,redirectUri:w().url().optional()});const qy=M({id:w().uuid(),provider:Sf,clientId:w().optional(),scopes:ge(w()).optional(),redirectUri:w().optional(),useSharedKey:Ye(),createdAt:w(),updatedAt:w()}),aI=/^(?:(?:https?:\/\/)(?:(?:\*\.)?[^\s/:?#]+|\[[0-9A-Fa-f:.]+\])(?::\d+)?(?:\/[^\s]*)?|(?!(?:https?|javascript|data|file|vbscript):)[a-zA-Z][a-zA-Z0-9+.-]*:(?:\/\/[^\s/]+(?:\/[^\s]*)?|\/[^\s]*))$/i,d3=M({id:w().uuid(),requireEmailVerification:Ye(),passwordMinLength:se().min(4).max(128),requireNumber:Ye(),requireLowercase:Ye(),requireUppercase:Ye(),requireSpecialChar:Ye(),verifyEmailMethod:Bw,resetPasswordMethod:Bw,allowedRedirectUrls:ge(w().regex(aI,{message:"Invalid URL or wildcard URL"})).optional().nullable(),createdAt:w(),updatedAt:w()});M({sub:Pf,email:qa,role:rI,iat:se().optional(),exp:se().optional()});const h3=w().min(1).max(64).regex(/^[a-z0-9_-]+$/,"Key must contain only lowercase letters, numbers, hyphens, and underscores"),Ky=M({id:w().uuid(),key:h3,name:w().min(1),discoveryEndpoint:w().url(),clientId:w().min(1),createdAt:w(),updatedAt:w()}),iI=M({limit:w().optional(),offset:w().optional()});M({email:qa,password:Gy,name:nI.optional(),redirectTo:w().url().optional()});M({email:qa,password:Gy});M({refreshToken:w().min(1,"refreshToken is required")});M({code:w()});iI.extend({search:w().optional()}).optional();M({userIds:ge(Pf).min(1,"At least one user ID is required")});M({profile:en(Jn())});M({email:qa,redirectTo:w().url().optional()});M({email:qa,otp:w().regex(/^\d{6}$/,"OTP code must be a 6-digit numeric code")});M({email:qa,redirectTo:w().url().optional()});M({email:qa,code:w().regex(/^\d{6}$/,"Reset password code must be a 6-digit numeric code")});M({newPassword:Gy,otp:w().min(1,"OTP/token is required")});M({user:Bl.optional(),accessToken:w().nullable(),requireEmailVerification:Ye().optional(),csrfToken:w().nullable().optional(),refreshToken:w().optional()});M({user:Bl,accessToken:w(),csrfToken:w().nullable().optional(),refreshToken:w().optional()});M({user:Bl,accessToken:w(),csrfToken:w().nullable().optional(),refreshToken:w().optional()});M({accessToken:w(),user:Bl,csrfToken:w().optional(),refreshToken:w().optional()});M({token:w(),expiresAt:w().datetime()});M({message:w()});M({user:Bl});M({id:Pf,profile:u3.nullable()});M({data:ge(Bl),pagination:M({offset:se(),limit:se(),total:se()})});M({message:w(),deletedCount:se().int().nonnegative()});M({authUrl:w().url()});qy.omit({id:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:w().optional()});qy.omit({id:!0,provider:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:w().optional()}).partial();const p3=/^[A-Za-z0-9._~-]+$/;M({redirect_uri:w().url().optional(),code_challenge:w().min(43,"Code challenge must be at least 43 characters").max(128,"Code challenge must be at most 128 characters").regex(p3,"Code challenge must be base64url encoded")});M({code:w().min(1,"Exchange code is required"),code_verifier:w().min(43,"Code verifier must be at least 43 characters").max(128,"Code verifier must be at most 128 characters").regex(p3,"Code verifier must be base64url encoded")});M({data:ge(qy),count:se()});d3.omit({id:!0,createdAt:!0,updatedAt:!0}).partial();const sI=M({oAuthProviders:ge(Sf),customOAuthProviders:ge(h3),...d3.omit({id:!0,updatedAt:!0,createdAt:!0,allowedRedirectUrls:!0}).shape});M({error:w(),message:w(),statusCode:se().int(),nextActions:w().optional()});Ky.omit({id:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:w().min(1,"Client secret is required")});Ky.omit({id:!0,key:!0,createdAt:!0,updatedAt:!0}).extend({clientSecret:w().min(1).optional()}).partial();M({data:ge(Ky),count:se()});const f3=vt(["system","user"]),m3=M({id:w().uuid(),pattern:w().min(1),description:w().nullable(),webhookUrls:ge(w().url()).nullable(),enabled:Ye(),createdAt:w().datetime(),updatedAt:w().datetime()}),oI=M({id:w().uuid(),eventName:w().min(1),channelId:w().uuid().nullable(),channelName:w().min(1),payload:en(w(),Jn()),senderType:f3,senderId:w().uuid().nullable(),wsAudienceCount:se().int().min(0),whAudienceCount:se().int().min(0),whDeliveredCount:se().int().min(0),createdAt:w().datetime()}),lI=M({retentionDays:se().int().positive().nullable()});M({channel:w().min(1)});M({channel:w().min(1)});M({channel:w().min(1),event:w().min(1),payload:en(w(),Jn())});s3("ok",[M({ok:ut(!0),channel:w().min(1)}),M({ok:ut(!1),channel:w().min(1),error:M({code:w().min(1),message:w().min(1)})})]);M({channel:w().optional(),code:w().min(1),message:w().min(1)});M({messageId:w().uuid(),channel:w().min(1),eventName:w().min(1),payload:en(w(),Jn())});const cI=M({channel:w().optional(),messageId:w().uuid(),senderType:f3,senderId:w().uuid().optional(),timestamp:w().datetime()});M({meta:cI}).passthrough();M({pattern:w().min(1,"Channel pattern is required"),description:w().optional(),webhookUrls:ge(w().url()).optional(),enabled:Ye().optional().default(!0)});M({pattern:w().min(1).optional(),description:w().optional(),webhookUrls:ge(w().url()).optional(),enabled:Ye().optional()});ge(m3);M({message:w()});M({channelId:w().uuid().optional(),eventName:w().optional(),limit:e_.number().int().min(1).max(1e3).optional().default(100),offset:e_.number().int().min(0).optional().default(0)});ge(oI);M({channelId:w().uuid().optional(),since:e_.date().optional()});M({totalMessages:se().int().min(0),whDeliveryRate:se().min(0).max(1),topEvents:ge(M({eventName:w(),count:se().int().min(0)})),retentionDays:lI.shape.retentionDays});const Vw=M({policyName:w(),tableName:w(),command:w(),roles:ge(w()),using:w().nullable(),withCheck:w().nullable()}),uI=M({subscribe:M({policies:ge(Vw)}),publish:M({policies:ge(Vw)})}),dI=sI,hI=M({tables:ge(M({tableName:w(),recordCount:se()})),totalSizeInGB:se(),hint:w().optional()}),pI=tI.extend({objectCount:se().optional()}),fI=M({buckets:ge(pI),totalSizeInGB:se()}),mI=M({slug:w(),name:w(),description:w().nullable(),status:w()}),gI=M({models:ge(M({inputModality:ge(w()),outputModality:ge(w()),modelId:w()}))}),vI=M({channels:ge(m3),permissions:uI});M({auth:dI,database:hI,storage:fI,aiIntegration:gI.optional(),functions:ge(mI),realtime:vI.optional(),version:w().optional()});const _I=M({host:w(),port:se(),database:w(),user:w(),password:w(),sslmode:w()});M({connectionURL:w(),parameters:_I});M({databasePassword:w()});M({apiKey:w()});M({projectId:w().nullable()});const Tl=vt(["text","image","audio"]),yI=M({inputModality:ge(Tl).min(1),outputModality:ge(Tl).min(1),provider:w(),modelId:w(),systemPrompt:w().optional()}),g3=yI.extend({id:w().uuid()});g3.extend({usageStats:M({totalInputTokens:se(),totalOutputTokens:se(),totalTokens:se(),totalImageCount:se(),totalRequests:se()}).optional()});const bI=M({configId:w().uuid(),inputTokens:se().int().optional(),outputTokens:se().int().optional(),imageCount:se().int().optional(),imageResolution:w().optional()}),kI=bI.extend({id:w().uuid(),createdAt:Wy(),modelId:w().nullable().optional(),model:w().nullable(),provider:w().nullable(),inputModality:ge(Tl).nullable(),outputModality:ge(Tl).nullable()});M({totalInputTokens:se(),totalOutputTokens:se(),totalTokens:se(),totalImageCount:se(),totalRequests:se()});const wI=M({type:ut("text"),text:w()}),xI=M({type:ut("image_url"),image_url:M({url:w(),detail:vt(["auto","low","high"]).optional()})}),PI=M({type:ut("input_audio"),input_audio:M({data:w(),format:vt(["wav","mp3","aiff","aac","ogg","flac","m4a"])})}),SI=M({type:ut("file"),file:M({filename:w(),file_data:w()})}),CI=Qr([wI,xI,PI,SI]),TI=M({name:w(),description:w().optional(),parameters:en(Jn()).optional()}),EI=M({type:ut("function"),function:TI}),AI=Qr([vt(["auto","none","required"]),M({type:ut("function"),function:M({name:w()})})]),v3=M({id:w(),type:ut("function"),function:M({name:w(),arguments:w()})}),RI=M({role:vt(["user","assistant","system","tool"]),content:Qr([w(),ge(CI)]).nullable(),images:ge(M({url:w()})).optional(),tool_calls:ge(v3).optional(),tool_call_id:w().optional()}),LI=M({enabled:Ye(),engine:vt(["native","exa"]).optional(),maxResults:se().min(1).max(10).optional(),searchPrompt:w().optional()}),II=M({enabled:Ye(),pdf:M({engine:vt(["pdf-text","mistral-ocr","native"]).optional()}).optional()});M({model:w(),messages:ge(RI),temperature:se().min(0).max(2).optional(),maxTokens:se().positive().optional(),topP:se().min(0).max(1).optional(),stream:Ye().optional(),webSearch:LI.optional(),fileParser:II.optional(),thinking:Ye().optional(),tools:ge(EI).optional(),toolChoice:AI.optional(),parallelToolCalls:Ye().optional()});const DI=M({type:ut("url_citation"),urlCitation:M({url:w(),title:w().optional(),content:w().optional(),startIndex:se().optional(),endIndex:se().optional()})}),MI=M({type:ut("file"),file:M({filename:w(),parsedContent:w().optional(),metadata:en(Jn()).optional()})}),NI=Qr([DI,MI]);M({text:w(),tool_calls:ge(v3).optional(),annotations:ge(NI).optional(),metadata:M({model:w(),usage:M({promptTokens:se().optional(),completionTokens:se().optional(),totalTokens:se().optional()}).optional()}).optional()});M({model:w(),input:Qr([w(),ge(w())]),encoding_format:vt(["float","base64"]).optional(),dimensions:se().int().min(0).optional()});const OI=M({object:ut("embedding"),embedding:Qr([ge(se()),w()]),index:se()});M({object:ut("list"),data:ge(OI),metadata:M({model:w(),usage:M({promptTokens:se().optional(),totalTokens:se().optional()}).optional()}).optional()});M({model:w(),prompt:w(),images:ge(M({url:w()})).optional()});M({text:w().optional(),images:ge(M({type:ut("imageUrl"),imageUrl:w()})),metadata:M({model:w(),usage:M({promptTokens:se().optional(),completionTokens:se().optional(),totalTokens:se().optional()}).optional()}).optional()});M({id:w(),inputModality:ge(Tl).min(1),outputModality:ge(Tl).min(1),provider:w(),modelId:w(),inputPrice:se().min(0).optional(),outputPrice:se().min(0).optional()});g3.omit({id:!0});M({systemPrompt:w().nullable()});M({records:ge(kI),total:se()});M({startDate:w().datetime().optional(),endDate:w().datetime().optional(),limit:w().regex(/^\d+$/).default("50"),offset:w().regex(/^\d+$/).default("0")});M({configId:w().uuid().optional(),startDate:w().datetime().optional(),endDate:w().datetime().optional()});const jI=vt(["byok","cloud","env","unconfigured"]);M({keySource:jI,hasByokKey:Ye(),maskedKey:w().optional()});M({apiKey:w().min(1,"API key is required")});const _3=M({id:w(),actor:w(),action:w(),module:w(),details:en(Jn()).nullable(),ipAddress:w().nullable(),createdAt:w(),updatedAt:w()});M({id:w(),name:w(),token:w()});const zI=M({id:w(),eventMessage:w(),timestamp:w(),body:en(w(),Jn()),source:w().optional()});M({source:w(),count:se(),lastActivity:w()});const FI=M({level:w(),message:w()});M({deploymentId:w(),status:vt(["pending","success","failed"]),logs:ge(FI),createdAt:w()});M({limit:se().default(100),offset:se().default(0),actor:w().optional(),action:w().optional(),module:w().optional(),startDate:w().optional(),endDate:w().optional()});M({data:ge(_3),pagination:M({limit:se(),offset:se(),total:se()})});M({days:se().default(7)});M({totalLogs:se(),uniqueActors:se(),uniqueModules:se(),actionsByModule:en(se()),recentActivity:ge(_3)});M({daysToKeep:se().default(90)});M({message:w(),deleted:se()});M({logs:ge(zI),total:se()});const y3=M({id:w(),slug:w(),name:w(),description:w().nullable(),code:w(),status:vt(["draft","active","error"]),createdAt:w(),updatedAt:w(),deployedAt:w().nullable()});M({name:w().min(1,"Name is required"),slug:w().regex(/^[a-zA-Z0-9_-]+$/,"Invalid slug format - must be alphanumeric with hyphens or underscores only").optional(),code:w().min(1),description:w().optional(),status:vt(["draft","active"]).optional().default("active")});M({name:w().optional(),code:w().optional(),description:w().optional(),status:vt(["draft","active"]).optional()});M({functions:ge(y3),runtime:M({status:vt(["running","unavailable"])}),deploymentUrl:w().nullable().optional()});const UI=M({id:w(),status:vt(["success","failed"]),url:w().nullable(),buildLogs:ge(w()).optional()});M({success:Ye(),function:y3,deployment:UI.nullable().optional()});const $I=M({type:ut("APP_ROUTE_CHANGE"),path:w()}),BI=M({type:ut("AUTH_SUCCESS")}),VI=M({type:ut("AUTH_ERROR"),message:w()}),HI=M({type:ut("MCP_CONNECTION_STATUS"),connected:Ye(),toolName:w(),timestamp:Qr([se(),w()])}),WI=M({type:ut("SHOW_ONBOARDING_OVERLAY")}),GI=M({type:ut("SHOW_SETTINGS_OVERLAY")}),qI=M({type:ut("ONBOARDING_SUCCESS")}),KI=M({type:ut("NAVIGATE_TO_USAGE")}),YI=M({type:ut("SHOW_CONTACT_MODAL")}),ZI=M({type:ut("SHOW_CONNECT_OVERLAY")}),JI=M({type:ut("SHOW_PLAN_MODAL")}),XI=M({type:ut("AUTHORIZATION_CODE"),code:w()}),QI=M({type:ut("ROUTE_CHANGE"),path:w()}),e7=M({type:ut("REQUEST_PROJECT_INFO")}),t7=M({type:ut("PROJECT_INFO"),name:w(),instanceType:w(),region:w(),latestVersion:w().optional()}),n7=M({type:ut("REQUEST_INSTANCE_INFO")}),r7=M({type:ut("INSTANCE_INFO"),currentInstanceType:w(),planName:w(),computeCredits:se(),currentOrgComputeCost:se(),instanceTypes:ge(M({id:w(),name:w(),cpu:w(),ram:w(),pricePerHour:se(),pricePerMonth:se()})),projects:ge(M({name:w(),instanceType:w(),monthlyCost:se(),isCurrent:Ye(),status:w()}))}),a7=M({type:ut("REQUEST_INSTANCE_TYPE_CHANGE"),instanceType:w()}),i7=M({type:ut("INSTANCE_TYPE_CHANGE_RESULT"),success:Ye(),instanceType:w().optional(),error:w().optional()});s3("type",[$I,BI,VI,HI,WI,GI,qI,KI,YI,ZI,JI,XI,QI,e7,t7,n7,r7,a7,i7]);vt(["db","storage","functions","auth","ai","realtime"]).describe(`
13
- SDK feature categories:
14
-
15
- - "db" - Database operations
16
- - "storage" - File storage
17
- - "functions" - Edge functions
18
- - "auth" - User authentication
19
- - "ai" - AI features
20
- - "realtime" - Real-time WebSockets
21
- `);vt(["typescript","swift","kotlin","rest-api"]).describe(`
22
- SDK languages:
23
-
24
- - "typescript" - JavaScript/TypeScript SDK
25
- - "swift" - Swift SDK
26
- - "kotlin" - Kotlin SDK
27
- - "rest-api" - REST API
28
- `);vt(["instructions","auth-sdk","db-sdk","storage-sdk","functions-sdk","ai-integration-sdk","real-time","deployment"]).describe(`
29
- Documentation type:
30
- "instructions" (essential backend setup - use FIRST),
31
- "db-sdk" (database operations),
32
- "storage-sdk" (file storage),
33
- "functions-sdk" (edge functions),
34
- "auth-sdk" (direct SDK methods for custom auth flows),
35
- "ai-integration-sdk" (AI features),
36
- "real-time" (real-time pub/sub through WebSockets),
37
- "deployment" (deploy frontend applications via MCP tool)
38
- `);const Dg=Qr([qa,ge(qa).min(1,"At least one email is required").max(50,"Maximum 50 recipients allowed")]);M({to:Dg,subject:w().trim().min(1,"Subject is required").max(500,"Subject too long"),html:w().trim().min(1,"HTML content is required"),cc:Dg.optional(),bcc:Dg.optional(),from:w().trim().max(100,"From name too long").optional(),replyTo:w().email("Reply-To must be a valid email").optional()});M({});const s7=vt(["WAITING","UPLOADING","QUEUED","BUILDING","READY","ERROR","CANCELED"]),o7=M({id:w().uuid(),providerDeploymentId:w().nullable(),provider:w(),status:s7,url:w().nullable(),metadata:en(Jn()).nullable(),createdAt:w().datetime(),updatedAt:w().datetime()}),l7=M({buildCommand:w().nullable().optional(),outputDirectory:w().nullable().optional(),installCommand:w().nullable().optional(),devCommand:w().nullable().optional(),rootDirectory:w().nullable().optional()}),c7=M({key:w(),value:w()});M({id:w().uuid(),uploadUrl:w().url(),uploadFields:en(w())});M({projectSettings:l7.optional(),envVars:ge(c7).optional(),meta:en(w()).optional()});M({data:ge(o7),pagination:M({limit:se(),offset:se(),total:se()})});const u7=M({id:w(),key:w(),type:vt(["plain","encrypted","secret","sensitive","system"]),updatedAt:se().optional()}),d7=M({id:w(),key:w(),value:w(),type:vt(["plain","encrypted","secret","sensitive","system"]),updatedAt:se().optional()});M({envVars:ge(u7)});M({envVar:d7});const h7=M({key:w().trim().min(1,"key is required"),value:w()});M({envVars:ge(h7).min(1)}).superRefine(({envVars:t},e)=>{const n=new Map;t.forEach((r,a)=>{if(n.get(r.key)!==void 0){e.addIssue({code:fe.custom,message:"duplicate environment variable key",path:["envVars",a,"key"]});return}n.set(r.key,a)})});M({success:ut(!0),message:w()});M({success:ut(!0),message:w(),count:se().int().positive()});M({success:ut(!0),message:w()});M({slug:w().trim().min(3,"slug must be at least 3 characters").max(63,"slug must be at most 63 characters").regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,"slug must be lowercase alphanumeric with hyphens, not starting or ending with hyphen").nullable()});M({success:Ye(),slug:w().nullable(),domain:w().nullable()});M({currentDeploymentId:w().uuid().nullable(),defaultDomainUrl:w().nullable(),customDomainUrl:w().nullable()});const p7=M({type:w(),domain:w(),value:w()}),f7=M({domain:w(),apexDomain:w(),verified:Ye(),misconfigured:Ye(),verification:ge(p7),cnameTarget:w().nullable(),aRecordValue:w().nullable()});M({domain:w().trim().min(1,"Domain is required").regex(/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i,"Invalid domain format (e.g. myapp.com or www.myapp.com)").refine(t=>!t.toLowerCase().endsWith(".insforge.site"),{message:"Domains ending with .insforge.site are reserved by InsForge"})});M({domains:ge(f7)});const m7=M({id:w().uuid(),name:w(),cronSchedule:w(),functionUrl:w().url(),httpMethod:vt(["GET","POST","PUT","PATCH","DELETE"]),headers:en(w()).nullable(),body:Qr([w(),en(Jn())]).nullable(),cronJobId:w().nullable(),lastExecutedAt:w().datetime().nullable(),isActive:Ye().default(!0),nextRun:w().datetime().nullable(),createdAt:w().datetime(),updatedAt:w().datetime()}),g7=M({id:w().uuid(),scheduleId:w().uuid(),executedAt:w().datetime(),statusCode:se().int(),success:Ye(),durationMs:se().int(),message:w().nullable()}),b3=w().refine(t=>{const e=t.split(" ");return e.length===5||e.length===6},{message:'Invalid cron schedule format. Use 5 or 6 parts (e.g., "* * * * *").'});M({name:w().min(3,"Schedule name must be at least 3 characters long"),cronSchedule:b3,functionUrl:w().url("The function URL must be a valid URL."),httpMethod:vt(["GET","POST","PUT","PATCH","DELETE"]),headers:en(w()).optional().describe("Header values can reference secrets using ${{secrets.KEY_NAME}} syntax."),body:en(Jn()).optional().describe("The JSON body to send with the request.")});M({name:w().min(3,"Schedule name must be at least 3 characters long").optional(),cronSchedule:b3.optional(),functionUrl:w().url("The function URL must be a valid URL.").optional(),httpMethod:vt(["GET","POST","PUT","PATCH","DELETE"]).optional(),headers:en(w()).optional().describe("Header values can reference secrets using ${{secrets.KEY_NAME}} syntax."),body:en(Jn()).optional().describe("The JSON body to send with the request."),isActive:Ye().optional().describe("Enable or disable the schedule.")});ge(m7);const v7=g7;M({logs:ge(v7),totalCount:se().int().nonnegative(),limit:se().int().positive(),offset:se().int().nonnegative()});M({id:w().uuid(),cronJobId:w(),message:w()});M({id:w().uuid(),cronJobId:w().optional(),message:w()});M({message:w()});var Ln={},Ko={},Yo={},Zo={},Jo={},Xo={},_7=function(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")},El=_7();const y7=El.fetch,b7=El.fetch.bind(El),k7=El.Headers,w7=El.Request,x7=El.Response,P7=Object.freeze(Object.defineProperty({__proto__:null,Headers:k7,Request:w7,Response:x7,default:b7,fetch:y7},Symbol.toStringTag,{value:"Module"})),S7=$A(P7);var fh={},Hw;function k3(){if(Hw)return fh;Hw=1,Object.defineProperty(fh,"__esModule",{value:!0});class t extends Error{constructor(n){super(n.message),this.name="PostgrestError",this.details=n.details,this.hint=n.hint,this.code=n.code}}return fh.default=t,fh}var Ww;function w3(){if(Ww)return Xo;Ww=1;var t=Xo&&Xo.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(Xo,"__esModule",{value:!0});const e=t(S7),n=t(k3());class r{constructor(s){var l,c;this.shouldThrowOnError=!1,this.method=s.method,this.url=s.url,this.headers=new Headers(s.headers),this.schema=s.schema,this.body=s.body,this.shouldThrowOnError=(l=s.shouldThrowOnError)!==null&&l!==void 0?l:!1,this.signal=s.signal,this.isMaybeSingle=(c=s.isMaybeSingle)!==null&&c!==void 0?c:!1,s.fetch?this.fetch=s.fetch:typeof fetch>"u"?this.fetch=e.default:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(s,l){return this.headers=new Headers(this.headers),this.headers.set(s,l),this}then(s,l){this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json");const c=this.fetch;let d=c(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async h=>{var p,m,v,y;let b=null,x=null,P=null,A=h.status,L=h.statusText;if(h.ok){if(this.method!=="HEAD"){const $=await h.text();$===""||(this.headers.get("Accept")==="text/csv"||this.headers.get("Accept")&&(!((p=this.headers.get("Accept"))===null||p===void 0)&&p.includes("application/vnd.pgrst.plan+text"))?x=$:x=JSON.parse($))}const E=(m=this.headers.get("Prefer"))===null||m===void 0?void 0:m.match(/count=(exact|planned|estimated)/),D=(v=h.headers.get("content-range"))===null||v===void 0?void 0:v.split("/");E&&D&&D.length>1&&(P=parseInt(D[1])),this.isMaybeSingle&&this.method==="GET"&&Array.isArray(x)&&(x.length>1?(b={code:"PGRST116",details:`Results contain ${x.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},x=null,P=null,A=406,L="Not Acceptable"):x.length===1?x=x[0]:x=null)}else{const E=await h.text();try{b=JSON.parse(E),Array.isArray(b)&&h.status===404&&(x=[],b=null,A=200,L="OK")}catch{h.status===404&&E===""?(A=204,L="No Content"):b={message:E}}if(b&&this.isMaybeSingle&&(!((y=b?.details)===null||y===void 0)&&y.includes("0 rows"))&&(b=null,A=200,L="OK"),b&&this.shouldThrowOnError)throw new n.default(b)}return{error:b,data:x,count:P,status:A,statusText:L}});return this.shouldThrowOnError||(d=d.catch(h=>{var p,m,v;return{error:{message:`${(p=h?.name)!==null&&p!==void 0?p:"FetchError"}: ${h?.message}`,details:`${(m=h?.stack)!==null&&m!==void 0?m:""}`,hint:"",code:`${(v=h?.code)!==null&&v!==void 0?v:""}`},data:null,count:null,status:0,statusText:""}})),d.then(s,l)}returns(){return this}overrideTypes(){return this}}return Xo.default=r,Xo}var Gw;function x3(){if(Gw)return Jo;Gw=1;var t=Jo&&Jo.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Jo,"__esModule",{value:!0});const e=t(w3());class n extends e.default{select(a){let s=!1;const l=(a??"*").split("").map(c=>/\s/.test(c)&&!s?"":(c==='"'&&(s=!s),c)).join("");return this.url.searchParams.set("select",l),this.headers.append("Prefer","return=representation"),this}order(a,{ascending:s=!0,nullsFirst:l,foreignTable:c,referencedTable:d=c}={}){const h=d?`${d}.order`:"order",p=this.url.searchParams.get(h);return this.url.searchParams.set(h,`${p?`${p},`:""}${a}.${s?"asc":"desc"}${l===void 0?"":l?".nullsfirst":".nullslast"}`),this}limit(a,{foreignTable:s,referencedTable:l=s}={}){const c=typeof l>"u"?"limit":`${l}.limit`;return this.url.searchParams.set(c,`${a}`),this}range(a,s,{foreignTable:l,referencedTable:c=l}={}){const d=typeof c>"u"?"offset":`${c}.offset`,h=typeof c>"u"?"limit":`${c}.limit`;return this.url.searchParams.set(d,`${a}`),this.url.searchParams.set(h,`${s-a+1}`),this}abortSignal(a){return this.signal=a,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.method==="GET"?this.headers.set("Accept","application/json"):this.headers.set("Accept","application/vnd.pgrst.object+json"),this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:a=!1,verbose:s=!1,settings:l=!1,buffers:c=!1,wal:d=!1,format:h="text"}={}){var p;const m=[a?"analyze":null,s?"verbose":null,l?"settings":null,c?"buffers":null,d?"wal":null].filter(Boolean).join("|"),v=(p=this.headers.get("Accept"))!==null&&p!==void 0?p:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${h}; for="${v}"; options=${m};`),h==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(a){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${a}`),this}}return Jo.default=n,Jo}var qw;function Yy(){if(qw)return Zo;qw=1;var t=Zo&&Zo.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Zo,"__esModule",{value:!0});const e=t(x3());class n extends e.default{eq(a,s){return this.url.searchParams.append(a,`eq.${s}`),this}neq(a,s){return this.url.searchParams.append(a,`neq.${s}`),this}gt(a,s){return this.url.searchParams.append(a,`gt.${s}`),this}gte(a,s){return this.url.searchParams.append(a,`gte.${s}`),this}lt(a,s){return this.url.searchParams.append(a,`lt.${s}`),this}lte(a,s){return this.url.searchParams.append(a,`lte.${s}`),this}like(a,s){return this.url.searchParams.append(a,`like.${s}`),this}likeAllOf(a,s){return this.url.searchParams.append(a,`like(all).{${s.join(",")}}`),this}likeAnyOf(a,s){return this.url.searchParams.append(a,`like(any).{${s.join(",")}}`),this}ilike(a,s){return this.url.searchParams.append(a,`ilike.${s}`),this}ilikeAllOf(a,s){return this.url.searchParams.append(a,`ilike(all).{${s.join(",")}}`),this}ilikeAnyOf(a,s){return this.url.searchParams.append(a,`ilike(any).{${s.join(",")}}`),this}is(a,s){return this.url.searchParams.append(a,`is.${s}`),this}in(a,s){const l=Array.from(new Set(s)).map(c=>typeof c=="string"&&new RegExp("[,()]").test(c)?`"${c}"`:`${c}`).join(",");return this.url.searchParams.append(a,`in.(${l})`),this}contains(a,s){return typeof s=="string"?this.url.searchParams.append(a,`cs.${s}`):Array.isArray(s)?this.url.searchParams.append(a,`cs.{${s.join(",")}}`):this.url.searchParams.append(a,`cs.${JSON.stringify(s)}`),this}containedBy(a,s){return typeof s=="string"?this.url.searchParams.append(a,`cd.${s}`):Array.isArray(s)?this.url.searchParams.append(a,`cd.{${s.join(",")}}`):this.url.searchParams.append(a,`cd.${JSON.stringify(s)}`),this}rangeGt(a,s){return this.url.searchParams.append(a,`sr.${s}`),this}rangeGte(a,s){return this.url.searchParams.append(a,`nxl.${s}`),this}rangeLt(a,s){return this.url.searchParams.append(a,`sl.${s}`),this}rangeLte(a,s){return this.url.searchParams.append(a,`nxr.${s}`),this}rangeAdjacent(a,s){return this.url.searchParams.append(a,`adj.${s}`),this}overlaps(a,s){return typeof s=="string"?this.url.searchParams.append(a,`ov.${s}`):this.url.searchParams.append(a,`ov.{${s.join(",")}}`),this}textSearch(a,s,{config:l,type:c}={}){let d="";c==="plain"?d="pl":c==="phrase"?d="ph":c==="websearch"&&(d="w");const h=l===void 0?"":`(${l})`;return this.url.searchParams.append(a,`${d}fts${h}.${s}`),this}match(a){return Object.entries(a).forEach(([s,l])=>{this.url.searchParams.append(s,`eq.${l}`)}),this}not(a,s,l){return this.url.searchParams.append(a,`not.${s}.${l}`),this}or(a,{foreignTable:s,referencedTable:l=s}={}){const c=l?`${l}.or`:"or";return this.url.searchParams.append(c,`(${a})`),this}filter(a,s,l){return this.url.searchParams.append(a,`${s}.${l}`),this}}return Zo.default=n,Zo}var Kw;function P3(){if(Kw)return Yo;Kw=1;var t=Yo&&Yo.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Yo,"__esModule",{value:!0});const e=t(Yy());class n{constructor(a,{headers:s={},schema:l,fetch:c}){this.url=a,this.headers=new Headers(s),this.schema=l,this.fetch=c}select(a,{head:s=!1,count:l}={}){const c=s?"HEAD":"GET";let d=!1;const h=(a??"*").split("").map(p=>/\s/.test(p)&&!d?"":(p==='"'&&(d=!d),p)).join("");return this.url.searchParams.set("select",h),l&&this.headers.append("Prefer",`count=${l}`),new e.default({method:c,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch})}insert(a,{count:s,defaultToNull:l=!0}={}){var c;const d="POST";if(s&&this.headers.append("Prefer",`count=${s}`),l||this.headers.append("Prefer","missing=default"),Array.isArray(a)){const h=a.reduce((p,m)=>p.concat(Object.keys(m)),[]);if(h.length>0){const p=[...new Set(h)].map(m=>`"${m}"`);this.url.searchParams.set("columns",p.join(","))}}return new e.default({method:d,url:this.url,headers:this.headers,schema:this.schema,body:a,fetch:(c=this.fetch)!==null&&c!==void 0?c:fetch})}upsert(a,{onConflict:s,ignoreDuplicates:l=!1,count:c,defaultToNull:d=!0}={}){var h;const p="POST";if(this.headers.append("Prefer",`resolution=${l?"ignore":"merge"}-duplicates`),s!==void 0&&this.url.searchParams.set("on_conflict",s),c&&this.headers.append("Prefer",`count=${c}`),d||this.headers.append("Prefer","missing=default"),Array.isArray(a)){const m=a.reduce((v,y)=>v.concat(Object.keys(y)),[]);if(m.length>0){const v=[...new Set(m)].map(y=>`"${y}"`);this.url.searchParams.set("columns",v.join(","))}}return new e.default({method:p,url:this.url,headers:this.headers,schema:this.schema,body:a,fetch:(h=this.fetch)!==null&&h!==void 0?h:fetch})}update(a,{count:s}={}){var l;const c="PATCH";return s&&this.headers.append("Prefer",`count=${s}`),new e.default({method:c,url:this.url,headers:this.headers,schema:this.schema,body:a,fetch:(l=this.fetch)!==null&&l!==void 0?l:fetch})}delete({count:a}={}){var s;const l="DELETE";return a&&this.headers.append("Prefer",`count=${a}`),new e.default({method:l,url:this.url,headers:this.headers,schema:this.schema,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch})}}return Yo.default=n,Yo}var Yw;function C7(){if(Yw)return Ko;Yw=1;var t=Ko&&Ko.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(Ko,"__esModule",{value:!0});const e=t(P3()),n=t(Yy());class r{constructor(s,{headers:l={},schema:c,fetch:d}={}){this.url=s,this.headers=new Headers(l),this.schemaName=c,this.fetch=d}from(s){const l=new URL(`${this.url}/${s}`);return new e.default(l,{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(s){return new r(this.url,{headers:this.headers,schema:s,fetch:this.fetch})}rpc(s,l={},{head:c=!1,get:d=!1,count:h}={}){var p;let m;const v=new URL(`${this.url}/rpc/${s}`);let y;c||d?(m=c?"HEAD":"GET",Object.entries(l).filter(([x,P])=>P!==void 0).map(([x,P])=>[x,Array.isArray(P)?`{${P.join(",")}}`:`${P}`]).forEach(([x,P])=>{v.searchParams.append(x,P)})):(m="POST",y=l);const b=new Headers(this.headers);return h&&b.set("Prefer",`count=${h}`),new n.default({method:m,url:v,headers:b,schema:this.schemaName,body:y,fetch:(p=this.fetch)!==null&&p!==void 0?p:fetch})}}return Ko.default=r,Ko}var Zw;function T7(){if(Zw)return Ln;Zw=1;var t=Ln&&Ln.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(Ln,"__esModule",{value:!0}),Ln.PostgrestError=Ln.PostgrestBuilder=Ln.PostgrestTransformBuilder=Ln.PostgrestFilterBuilder=Ln.PostgrestQueryBuilder=Ln.PostgrestClient=void 0;const e=t(C7());Ln.PostgrestClient=e.default;const n=t(P3());Ln.PostgrestQueryBuilder=n.default;const r=t(Yy());Ln.PostgrestFilterBuilder=r.default;const a=t(x3());Ln.PostgrestTransformBuilder=a.default;const s=t(w3());Ln.PostgrestBuilder=s.default;const l=t(k3());return Ln.PostgrestError=l.default,Ln.default={PostgrestClient:e.default,PostgrestQueryBuilder:n.default,PostgrestFilterBuilder:r.default,PostgrestTransformBuilder:a.default,PostgrestBuilder:s.default,PostgrestError:l.default},Ln}var E7=T7();const A7=_S(E7),{PostgrestClient:R7,PostgrestQueryBuilder:iK,PostgrestFilterBuilder:sK,PostgrestTransformBuilder:oK,PostgrestBuilder:lK,PostgrestError:cK}=A7,Ka=Object.create(null);Ka.open="0";Ka.close="1";Ka.ping="2";Ka.pong="3";Ka.message="4";Ka.upgrade="5";Ka.noop="6";const Gh=Object.create(null);Object.keys(Ka).forEach(t=>{Gh[Ka[t]]=t});const t_={type:"error",data:"parser error"},S3=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",C3=typeof ArrayBuffer=="function",T3=t=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer,Zy=({type:t,data:e},n,r)=>S3&&e instanceof Blob?n?r(e):Jw(e,r):C3&&(e instanceof ArrayBuffer||T3(e))?n?r(e):Jw(new Blob([e]),r):r(Ka[t]+(e||"")),Jw=(t,e)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];e("b"+(r||""))},n.readAsDataURL(t)};function Xw(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}let Mg;function L7(t,e){if(S3&&t.data instanceof Blob)return t.data.arrayBuffer().then(Xw).then(e);if(C3&&(t.data instanceof ArrayBuffer||T3(t.data)))return e(Xw(t.data));Zy(t,!1,n=>{Mg||(Mg=new TextEncoder),e(Mg.encode(n))})}const Qw="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",eu=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let t=0;t<Qw.length;t++)eu[Qw.charCodeAt(t)]=t;const I7=t=>{let e=t.length*.75,n=t.length,r,a=0,s,l,c,d;t[t.length-1]==="="&&(e--,t[t.length-2]==="="&&e--);const h=new ArrayBuffer(e),p=new Uint8Array(h);for(r=0;r<n;r+=4)s=eu[t.charCodeAt(r)],l=eu[t.charCodeAt(r+1)],c=eu[t.charCodeAt(r+2)],d=eu[t.charCodeAt(r+3)],p[a++]=s<<2|l>>4,p[a++]=(l&15)<<4|c>>2,p[a++]=(c&3)<<6|d&63;return h},D7=typeof ArrayBuffer=="function",Jy=(t,e)=>{if(typeof t!="string")return{type:"message",data:E3(t,e)};const n=t.charAt(0);return n==="b"?{type:"message",data:M7(t.substring(1),e)}:Gh[n]?t.length>1?{type:Gh[n],data:t.substring(1)}:{type:Gh[n]}:t_},M7=(t,e)=>{if(D7){const n=I7(t);return E3(n,e)}else return{base64:!0,data:t}},E3=(t,e)=>e==="blob"?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer,A3="",N7=(t,e)=>{const n=t.length,r=new Array(n);let a=0;t.forEach((s,l)=>{Zy(s,!1,c=>{r[l]=c,++a===n&&e(r.join(A3))})})},O7=(t,e)=>{const n=t.split(A3),r=[];for(let a=0;a<n.length;a++){const s=Jy(n[a],e);if(r.push(s),s.type==="error")break}return r};function j7(){return new TransformStream({transform(t,e){L7(t,n=>{const r=n.length;let a;if(r<126)a=new Uint8Array(1),new DataView(a.buffer).setUint8(0,r);else if(r<65536){a=new Uint8Array(3);const s=new DataView(a.buffer);s.setUint8(0,126),s.setUint16(1,r)}else{a=new Uint8Array(9);const s=new DataView(a.buffer);s.setUint8(0,127),s.setBigUint64(1,BigInt(r))}t.data&&typeof t.data!="string"&&(a[0]|=128),e.enqueue(a),e.enqueue(n)})}})}let Ng;function mh(t){return t.reduce((e,n)=>e+n.length,0)}function gh(t,e){if(t[0].length===e)return t.shift();const n=new Uint8Array(e);let r=0;for(let a=0;a<e;a++)n[a]=t[0][r++],r===t[0].length&&(t.shift(),r=0);return t.length&&r<t[0].length&&(t[0]=t[0].slice(r)),n}function z7(t,e){Ng||(Ng=new TextDecoder);const n=[];let r=0,a=-1,s=!1;return new TransformStream({transform(l,c){for(n.push(l);;){if(r===0){if(mh(n)<1)break;const d=gh(n,1);s=(d[0]&128)===128,a=d[0]&127,a<126?r=3:a===126?r=1:r=2}else if(r===1){if(mh(n)<2)break;const d=gh(n,2);a=new DataView(d.buffer,d.byteOffset,d.length).getUint16(0),r=3}else if(r===2){if(mh(n)<8)break;const d=gh(n,8),h=new DataView(d.buffer,d.byteOffset,d.length),p=h.getUint32(0);if(p>Math.pow(2,21)-1){c.enqueue(t_);break}a=p*Math.pow(2,32)+h.getUint32(4),r=3}else{if(mh(n)<a)break;const d=gh(n,a);c.enqueue(Jy(s?d:Ng.decode(d),e)),r=0}if(a===0||a>t){c.enqueue(t_);break}}}})}const R3=4;function yn(t){if(t)return F7(t)}function F7(t){for(var e in yn.prototype)t[e]=yn.prototype[e];return t}yn.prototype.on=yn.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this};yn.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this};yn.prototype.off=yn.prototype.removeListener=yn.prototype.removeAllListeners=yn.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+t];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+t],this;for(var r,a=0;a<n.length;a++)if(r=n[a],r===e||r.fn===e){n.splice(a,1);break}return n.length===0&&delete this._callbacks["$"+t],this};yn.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){n=n.slice(0);for(var r=0,a=n.length;r<a;++r)n[r].apply(this,e)}return this};yn.prototype.emitReserved=yn.prototype.emit;yn.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]};yn.prototype.hasListeners=function(t){return!!this.listeners(t).length};const Cf=typeof Promise=="function"&&typeof Promise.resolve=="function"?e=>Promise.resolve().then(e):(e,n)=>n(e,0),$r=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),U7="arraybuffer";function L3(t,...e){return e.reduce((n,r)=>(t.hasOwnProperty(r)&&(n[r]=t[r]),n),{})}const $7=$r.setTimeout,B7=$r.clearTimeout;function Tf(t,e){e.useNativeTimers?(t.setTimeoutFn=$7.bind($r),t.clearTimeoutFn=B7.bind($r)):(t.setTimeoutFn=$r.setTimeout.bind($r),t.clearTimeoutFn=$r.clearTimeout.bind($r))}const V7=1.33;function H7(t){return typeof t=="string"?W7(t):Math.ceil((t.byteLength||t.size)*V7)}function W7(t){let e=0,n=0;for(let r=0,a=t.length;r<a;r++)e=t.charCodeAt(r),e<128?n+=1:e<2048?n+=2:e<55296||e>=57344?n+=3:(r++,n+=4);return n}function I3(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function G7(t){let e="";for(let n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}function q7(t){let e={},n=t.split("&");for(let r=0,a=n.length;r<a;r++){let s=n[r].split("=");e[decodeURIComponent(s[0])]=decodeURIComponent(s[1])}return e}class K7 extends Error{constructor(e,n,r){super(e),this.description=n,this.context=r,this.type="TransportError"}}class Xy extends yn{constructor(e){super(),this.writable=!1,Tf(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,n,r){return super.emitReserved("error",new K7(e,n,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(e){this.readyState==="open"&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const n=Jy(e,this.socket.binaryType);this.onPacket(n)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,n={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(n)}_hostname(){const e=this.opts.hostname;return e.indexOf(":")===-1?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(e){const n=G7(e);return n.length?"?"+n:""}}class Y7 extends Xy{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const n=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};O7(e,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};this.readyState==="open"?e():this.once("open",e)}write(e){this.writable=!1,N7(e,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=I3()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(e,n)}}let D3=!1;try{D3=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const Z7=D3;function J7(){}class X7 extends Y7{constructor(e){if(super(e),typeof location<"u"){const n=location.protocol==="https:";let r=location.port;r||(r=n?"443":"80"),this.xd=typeof location<"u"&&e.hostname!==location.hostname||r!==e.port}}doWrite(e,n){const r=this.request({method:"POST",data:e});r.on("success",n),r.on("error",(a,s)=>{this.onError("xhr post error",a,s)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=e}}let bl=class qh extends yn{constructor(e,n,r){super(),this.createRequest=e,Tf(this,r),this._opts=r,this._method=r.method||"GET",this._uri=n,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var e;const n=L3(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let a in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(a)&&r.setRequestHeader(a,this._opts.extraHeaders[a])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(e=this._opts.cookieJar)===null||e===void 0||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var a;r.readyState===3&&((a=this._opts.cookieJar)===null||a===void 0||a.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(a){this.setTimeoutFn(()=>{this._onError(a)},0);return}typeof document<"u"&&(this._index=qh.requestsCount++,qh.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=J7,e)try{this._xhr.abort()}catch{}typeof document<"u"&&delete qh.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;e!==null&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};bl.requestsCount=0;bl.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",ex);else if(typeof addEventListener=="function"){const t="onpagehide"in $r?"pagehide":"unload";addEventListener(t,ex,!1)}}function ex(){for(let t in bl.requests)bl.requests.hasOwnProperty(t)&&bl.requests[t].abort()}const Q7=(function(){const t=M3({xdomain:!1});return t&&t.responseType!==null})();class eD extends X7{constructor(e){super(e);const n=e&&e.forceBase64;this.supportsBinary=Q7&&!n}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new bl(M3,this.uri(),e)}}function M3(t){const e=t.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!e||Z7))return new XMLHttpRequest}catch{}if(!e)try{return new $r[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const N3=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class tD extends Xy{get name(){return"websocket"}doOpen(){const e=this.uri(),n=this.opts.protocols,r=N3?{}:L3(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,n,r)}catch(a){return this.emitReserved("error",a)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let n=0;n<e.length;n++){const r=e[n],a=n===e.length-1;Zy(r,this.supportsBinary,s=>{try{this.doWrite(r,s)}catch{}a&&Cf(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=I3()),this.supportsBinary||(n.b64=1),this.createUri(e,n)}}const Og=$r.WebSocket||$r.MozWebSocket;class nD extends tD{createSocket(e,n,r){return N3?new Og(e,n,r):n?new Og(e,n):new Og(e)}doWrite(e,n){this.ws.send(n)}}class rD extends Xy{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const n=z7(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(n).getReader(),a=j7();a.readable.pipeTo(e.writable),this._writer=a.writable.getWriter();const s=()=>{r.read().then(({done:c,value:d})=>{c||(this.onPacket(d),s())}).catch(c=>{})};s();const l={type:"open"};this.query.sid&&(l.data=`{"sid":"${this.query.sid}"}`),this._writer.write(l).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let n=0;n<e.length;n++){const r=e[n],a=n===e.length-1;this._writer.write(r).then(()=>{a&&Cf(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)===null||e===void 0||e.close()}}const aD={websocket:nD,webtransport:rD,polling:eD},iD=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,sD=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function n_(t){if(t.length>8e3)throw"URI too long";const e=t,n=t.indexOf("["),r=t.indexOf("]");n!=-1&&r!=-1&&(t=t.substring(0,n)+t.substring(n,r).replace(/:/g,";")+t.substring(r,t.length));let a=iD.exec(t||""),s={},l=14;for(;l--;)s[sD[l]]=a[l]||"";return n!=-1&&r!=-1&&(s.source=e,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=oD(s,s.path),s.queryKey=lD(s,s.query),s}function oD(t,e){const n=/\/{2,9}/g,r=e.replace(n,"/").split("/");return(e.slice(0,1)=="/"||e.length===0)&&r.splice(0,1),e.slice(-1)=="/"&&r.splice(r.length-1,1),r}function lD(t,e){const n={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,a,s){a&&(n[a]=s)}),n}const r_=typeof addEventListener=="function"&&typeof removeEventListener=="function",Kh=[];r_&&addEventListener("offline",()=>{Kh.forEach(t=>t())},!1);class us extends yn{constructor(e,n){if(super(),this.binaryType=U7,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e=="object"&&(n=e,e=null),e){const r=n_(e);n.hostname=r.host,n.secure=r.protocol==="https"||r.protocol==="wss",n.port=r.port,r.query&&(n.query=r.query)}else n.host&&(n.hostname=n_(n.host).host);Tf(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(r=>{const a=r.prototype.name;this.transports.push(a),this._transportsByName[a]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=q7(this.opts.query)),r_&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Kh.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const n=Object.assign({},this.opts.query);n.EIO=R3,n.transport=e,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const e=this.opts.rememberUpgrade&&us.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(e);n.open(),this.setTransport(n)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",us.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=e.data,this._onError(n);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data);break}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r<this.writeBuffer.length;r++){const a=this.writeBuffer[r].data;if(a&&(n+=H7(a)),r>0&&n>this._maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,Cf(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,n,r){return this._sendPacket("message",e,n,r),this}send(e,n,r){return this._sendPacket("message",e,n,r),this}_sendPacket(e,n,r,a){if(typeof n=="function"&&(a=n,n=void 0),typeof r=="function"&&(a=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const s={type:e,data:n,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),a&&this.once("flush",a),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),e()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():e()}):this.upgrading?r():e()),this}_onError(e){if(us.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),r_&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=Kh.indexOf(this._offlineEventListener);r!==-1&&Kh.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,n),this.writeBuffer=[],this._prevBufferLen=0}}}us.protocol=R3;class cD extends us{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let n=this.createTransport(e),r=!1;us.priorWebsocketSuccess=!1;const a=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",m=>{if(!r)if(m.type==="pong"&&m.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;us.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(p(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const v=new Error("probe error");v.transport=n.name,this.emitReserved("upgradeError",v)}}))};function s(){r||(r=!0,p(),n.close(),n=null)}const l=m=>{const v=new Error("probe error: "+m);v.transport=n.name,s(),this.emitReserved("upgradeError",v)};function c(){l("transport closed")}function d(){l("socket closed")}function h(m){n&&m.name!==n.name&&s()}const p=()=>{n.removeListener("open",a),n.removeListener("error",l),n.removeListener("close",c),this.off("close",d),this.off("upgrading",h)};n.once("open",a),n.once("error",l),n.once("close",c),this.once("close",d),this.once("upgrading",h),this._upgrades.indexOf("webtransport")!==-1&&e!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const n=[];for(let r=0;r<e.length;r++)~this.transports.indexOf(e[r])&&n.push(e[r]);return n}}let uD=class extends cD{constructor(e,n={}){const r=typeof e=="object"?e:n;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(a=>aD[a]).filter(a=>!!a)),super(e,r)}};function dD(t,e="",n){let r=t;n=n||typeof location<"u"&&location,t==null&&(t=n.protocol+"//"+n.host),typeof t=="string"&&(t.charAt(0)==="/"&&(t.charAt(1)==="/"?t=n.protocol+t:t=n.host+t),/^(https?|wss?):\/\//.test(t)||(typeof n<"u"?t=n.protocol+"//"+t:t="https://"+t),r=n_(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const s=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+s+":"+r.port+e,r.href=r.protocol+"://"+s+(n&&n.port===r.port?"":":"+r.port),r}const hD=typeof ArrayBuffer=="function",pD=t=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer,O3=Object.prototype.toString,fD=typeof Blob=="function"||typeof Blob<"u"&&O3.call(Blob)==="[object BlobConstructor]",mD=typeof File=="function"||typeof File<"u"&&O3.call(File)==="[object FileConstructor]";function Qy(t){return hD&&(t instanceof ArrayBuffer||pD(t))||fD&&t instanceof Blob||mD&&t instanceof File}function Yh(t,e){if(!t||typeof t!="object")return!1;if(Array.isArray(t)){for(let n=0,r=t.length;n<r;n++)if(Yh(t[n]))return!0;return!1}if(Qy(t))return!0;if(t.toJSON&&typeof t.toJSON=="function"&&arguments.length===1)return Yh(t.toJSON(),!0);for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&Yh(t[n]))return!0;return!1}function gD(t){const e=[],n=t.data,r=t;return r.data=a_(n,e),r.attachments=e.length,{packet:r,buffers:e}}function a_(t,e){if(!t)return t;if(Qy(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}else if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=a_(t[r],e);return n}else if(typeof t=="object"&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=a_(t[r],e));return n}return t}function vD(t,e){return t.data=i_(t.data,e),delete t.attachments,t}function i_(t,e){if(!t)return t;if(t&&t._placeholder===!0){if(typeof t.num=="number"&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}else if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=i_(t[n],e);else if(typeof t=="object")for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=i_(t[n],e));return t}const _D=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var gt;(function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"})(gt||(gt={}));class yD{constructor(e){this.replacer=e}encode(e){return(e.type===gt.EVENT||e.type===gt.ACK)&&Yh(e)?this.encodeAsBinary({type:e.type===gt.EVENT?gt.BINARY_EVENT:gt.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let n=""+e.type;return(e.type===gt.BINARY_EVENT||e.type===gt.BINARY_ACK)&&(n+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(n+=e.nsp+","),e.id!=null&&(n+=e.id),e.data!=null&&(n+=JSON.stringify(e.data,this.replacer)),n}encodeAsBinary(e){const n=gD(e),r=this.encodeAsString(n.packet),a=n.buffers;return a.unshift(r),a}}class e0 extends yn{constructor(e){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof e=="function"?{reviver:e}:e)}add(e){let n;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");n=this.decodeString(e);const r=n.type===gt.BINARY_EVENT;r||n.type===gt.BINARY_ACK?(n.type=r?gt.EVENT:gt.ACK,this.reconstructor=new bD(n),n.attachments===0&&super.emitReserved("decoded",n)):super.emitReserved("decoded",n)}else if(Qy(e)||e.base64)if(this.reconstructor)n=this.reconstructor.takeBinaryData(e),n&&(this.reconstructor=null,super.emitReserved("decoded",n));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let n=0;const r={type:Number(e.charAt(0))};if(gt[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===gt.BINARY_EVENT||r.type===gt.BINARY_ACK){const s=n+1;for(;e.charAt(++n)!=="-"&&n!=e.length;);const l=e.substring(s,n);if(l!=Number(l)||e.charAt(n)!=="-")throw new Error("Illegal attachments");const c=Number(l);if(!kD(c)||c<0)throw new Error("Illegal attachments");if(c>this.opts.maxAttachments)throw new Error("too many attachments");r.attachments=c}if(e.charAt(n+1)==="/"){const s=n+1;for(;++n&&!(e.charAt(n)===","||n===e.length););r.nsp=e.substring(s,n)}else r.nsp="/";const a=e.charAt(n+1);if(a!==""&&Number(a)==a){const s=n+1;for(;++n;){const l=e.charAt(n);if(l==null||Number(l)!=l){--n;break}if(n===e.length)break}r.id=Number(e.substring(s,n+1))}if(e.charAt(++n)){const s=this.tryParse(e.substr(n));if(e0.isPayloadValid(r.type,s))r.data=s;else throw new Error("invalid payload")}return r}tryParse(e){try{return JSON.parse(e,this.opts.reviver)}catch{return!1}}static isPayloadValid(e,n){switch(e){case gt.CONNECT:return tx(n);case gt.DISCONNECT:return n===void 0;case gt.CONNECT_ERROR:return typeof n=="string"||tx(n);case gt.EVENT:case gt.BINARY_EVENT:return Array.isArray(n)&&(typeof n[0]=="number"||typeof n[0]=="string"&&_D.indexOf(n[0])===-1);case gt.ACK:case gt.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class bD{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const n=vD(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const kD=Number.isInteger||function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t};function tx(t){return Object.prototype.toString.call(t)==="[object Object]"}const wD=Object.freeze(Object.defineProperty({__proto__:null,Decoder:e0,Encoder:yD,get PacketType(){return gt}},Symbol.toStringTag,{value:"Module"}));function va(t,e,n){return t.on(e,n),function(){t.off(e,n)}}const xD=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class j3 extends yn{constructor(e,n,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=n,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[va(e,"open",this.onopen.bind(this)),va(e,"packet",this.onpacket.bind(this)),va(e,"error",this.onerror.bind(this)),va(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...n){var r,a,s;if(xD.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(n.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(n),this;const l={type:gt.EVENT,data:n};if(l.options={},l.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const p=this.ids++,m=n.pop();this._registerAckCallback(p,m),l.id=p}const c=(a=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||a===void 0?void 0:a.writable,d=this.connected&&!(!((s=this.io.engine)===null||s===void 0)&&s._hasPingExpired());return this.flags.volatile&&!c||(d?(this.notifyOutgoingListeners(l),this.packet(l)):this.sendBuffer.push(l)),this.flags={},this}_registerAckCallback(e,n){var r;const a=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(a===void 0){this.acks[e]=n;return}const s=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let c=0;c<this.sendBuffer.length;c++)this.sendBuffer[c].id===e&&this.sendBuffer.splice(c,1);n.call(this,new Error("operation has timed out"))},a),l=(...c)=>{this.io.clearTimeoutFn(s),n.apply(this,c)};l.withError=!0,this.acks[e]=l}emitWithAck(e,...n){return new Promise((r,a)=>{const s=(l,c)=>l?a(l):r(c);s.withError=!0,n.push(s),this.emit(e,...n)})}_addToQueue(e){let n;typeof e[e.length-1]=="function"&&(n=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((a,...s)=>(this._queue[0],a!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(a)):(this._queue.shift(),n&&n(null,...s)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!e||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth=="function"?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:gt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(r=>String(r.id)===e)){const r=this.acks[e];delete this.acks[e],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case gt.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case gt.EVENT:case gt.BINARY_EVENT:this.onevent(e);break;case gt.ACK:case gt.BINARY_ACK:this.onack(e);break;case gt.DISCONNECT:this.ondisconnect();break;case gt.CONNECT_ERROR:this.destroy();const r=new Error(e.data.message);r.data=e.data.data,this.emitReserved("connect_error",r);break}}onevent(e){const n=e.data||[];e.id!=null&&n.push(this.ack(e.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]=="string"&&(this._lastOffset=e[e.length-1])}ack(e){const n=this;let r=!1;return function(...a){r||(r=!0,n.packet({type:gt.ACK,id:e,data:a}))}}onack(e){const n=this.acks[e.id];typeof n=="function"&&(delete this.acks[e.id],n.withError&&e.data.unshift(null),n.apply(this,e.data))}onconnect(e,n){this.id=e,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:gt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const n=this._anyListeners;for(let r=0;r<n.length;r++)if(e===n[r])return n.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const n=this._anyOutgoingListeners;for(let r=0;r<n.length;r++)if(e===n[r])return n.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const n=this._anyOutgoingListeners.slice();for(const r of n)r.apply(this,e.data)}}}function Vl(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}Vl.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=(Math.floor(e*10)&1)==0?t-n:t+n}return Math.min(t,this.max)|0};Vl.prototype.reset=function(){this.attempts=0};Vl.prototype.setMin=function(t){this.ms=t};Vl.prototype.setMax=function(t){this.max=t};Vl.prototype.setJitter=function(t){this.jitter=t};class s_ extends yn{constructor(e,n){var r;super(),this.nsps={},this.subs=[],e&&typeof e=="object"&&(n=e,e=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,Tf(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new Vl({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=e;const a=n.parser||wD;this.encoder=new a.Encoder,this.decoder=new a.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var n;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(n=this.backoff)===null||n===void 0||n.setMin(e),this)}randomizationFactor(e){var n;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(n=this.backoff)===null||n===void 0||n.setJitter(e),this)}reconnectionDelayMax(e){var n;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(n=this.backoff)===null||n===void 0||n.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new uD(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const a=va(n,"open",function(){r.onopen(),e&&e()}),s=c=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",c),e?e(c):this.maybeReconnectOnOpen()},l=va(n,"error",s);if(this._timeout!==!1){const c=this._timeout,d=this.setTimeoutFn(()=>{a(),s(new Error("timeout")),n.close()},c);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(a),this.subs.push(l),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(va(e,"ping",this.onping.bind(this)),va(e,"data",this.ondata.bind(this)),va(e,"error",this.onerror.bind(this)),va(e,"close",this.onclose.bind(this)),va(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(n){this.onclose("parse error",n)}}ondecoded(e){Cf(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,n){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new j3(this,e,n),this.nsps[e]=r),r}_destroy(e){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(e){const n=this.encoder.encode(e);for(let r=0;r<n.length;r++)this.engine.write(n[r],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,n){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),!e.skipReconnect&&e.open(a=>{a?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",a)):e.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Oc={};function Zh(t,e){typeof t=="object"&&(e=t,t=void 0),e=e||{};const n=dD(t,e.path||"/socket.io"),r=n.source,a=n.id,s=n.path,l=Oc[a]&&s in Oc[a].nsps,c=e.forceNew||e["force new connection"]||e.multiplex===!1||l;let d;return c?d=new s_(r,e):(Oc[a]||(Oc[a]=new s_(r,e)),d=Oc[a]),n.query&&!e.query&&(e.query=n.queryKey),d.socket(n.path,e)}Object.assign(Zh,{Manager:s_,Socket:j3,io:Zh,connect:Zh});var at=class z3 extends Error{constructor(e,n,r,a){super(e),this.name="InsForgeError",this.statusCode=n,this.error=r,this.nextActions=a}static fromApiError(e){return new z3(e.message,e.statusCode,e.error,e.nextActions)}},PD=["authorization","x-api-key","cookie","set-cookie"],SD=["password","token","accesstoken","refreshtoken","authorization","secret","apikey","api_key","email","ssn","creditcard","credit_card"];function CD(t){const e={};for(const[n,r]of Object.entries(t))PD.includes(n.toLowerCase())?e[n]="***REDACTED***":e[n]=r;return e}function cu(t){if(t==null)return t;if(typeof t=="string")try{const e=JSON.parse(t);return cu(e)}catch{return t}if(Array.isArray(t))return t.map(cu);if(typeof t=="object"){const e={};for(const[n,r]of Object.entries(t))SD.includes(n.toLowerCase().replace(/[-_]/g,""))?e[n]="***REDACTED***":e[n]=cu(r);return e}return t}function nx(t){if(t==null)return"";if(typeof t=="string")try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}if(typeof FormData<"u"&&t instanceof FormData)return"[FormData]";try{return JSON.stringify(t,null,2)}catch{return"[Unserializable body]"}}var F3=class{constructor(t){typeof t=="function"?(this.enabled=!0,this.customLog=t):(this.enabled=!!t,this.customLog=null)}log(t,...e){if(!this.enabled)return;const n=`[InsForge Debug] ${t}`;this.customLog?this.customLog(n,...e):console.log(n,...e)}warn(t,...e){if(!this.enabled)return;const n=`[InsForge Debug] ${t}`;this.customLog?this.customLog(n,...e):console.warn(n,...e)}error(t,...e){if(!this.enabled)return;const n=`[InsForge Debug] ${t}`;this.customLog?this.customLog(n,...e):console.error(n,...e)}logRequest(t,e,n,r){if(!this.enabled)return;const a=[`→ ${t} ${e}`];n&&Object.keys(n).length>0&&a.push(` Headers: ${JSON.stringify(CD(n))}`);const s=nx(cu(r));if(s){const l=s.length>1e3?s.slice(0,1e3)+"... [truncated]":s;a.push(` Body: ${l}`)}this.log(a.join(`
39
- `))}logResponse(t,e,n,r,a){if(!this.enabled)return;const s=[`← ${t} ${e} ${n} (${r}ms)`],l=nx(cu(a));if(l){const c=l.length>1e3?l.slice(0,1e3)+"... [truncated]":l;s.push(` Body: ${c}`)}n>=400?this.error(s.join(`
40
- `)):this.log(s.join(`
41
- `))}},t0="insforge_csrf_token";function U3(){if(typeof document>"u")return null;const t=document.cookie.split(";").find(e=>e.trim().startsWith(`${t0}=`));return t&&t.split("=")[1]||null}function $3(t){if(typeof document>"u")return;const e=10080*60,n=typeof window<"u"&&window.location.protocol==="https:"?"; Secure":"";document.cookie=`${t0}=${encodeURIComponent(t)}; path=/; max-age=${e}; SameSite=Lax${n}`}function B3(){if(typeof document>"u")return;const t=typeof window<"u"&&window.location.protocol==="https:"?"; Secure":"";document.cookie=`${t0}=; path=/; max-age=0; SameSite=Lax${t}`}var V3=class{constructor(){this.accessToken=null,this.user=null,this.onTokenChange=null}saveSession(t){const e=t.accessToken!==this.accessToken;this.accessToken=t.accessToken,this.user=t.user,e&&this.onTokenChange&&this.onTokenChange()}getSession(){return!this.accessToken||!this.user?null:{accessToken:this.accessToken,user:this.user}}getAccessToken(){return this.accessToken}setAccessToken(t){const e=t!==this.accessToken;this.accessToken=t,e&&this.onTokenChange&&this.onTokenChange()}getUser(){return this.user}setUser(t){this.user=t}clearSession(){const t=this.accessToken!==null;this.accessToken=null,this.user=null,t&&this.onTokenChange&&this.onTokenChange()}},TD=new Set([500,502,503,504]),ED=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),AD=class{constructor(t,e,n){if(this.userToken=null,this.autoRefreshToken=!0,this.isRefreshing=!1,this.refreshPromise=null,this.refreshToken=null,this.baseUrl=t.baseUrl||"http://localhost:7130",this.autoRefreshToken=t.autoRefreshToken??!0,this.fetch=t.fetch||(globalThis.fetch?globalThis.fetch.bind(globalThis):void 0),this.anonKey=t.anonKey,this.defaultHeaders={...t.headers},this.tokenManager=e??new V3,this.logger=n||new F3(!1),this.timeout=t.timeout??3e4,this.retryCount=t.retryCount??3,this.retryDelay=t.retryDelay??500,!this.fetch)throw new Error("Fetch is not available. Please provide a fetch implementation in the config.")}buildUrl(t,e){const n=new URL(t,this.baseUrl);return e&&Object.entries(e).forEach(([r,a])=>{if(r==="select"){let s=a.replace(/\s+/g," ").trim();s=s.replace(/\s*\(\s*/g,"(").replace(/\s*\)\s*/g,")").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/,\s+(?=[^()]*\))/g,","),n.searchParams.append(r,s)}else n.searchParams.append(r,a)}),n.toString()}isRetryableStatus(t){return TD.has(t)}computeRetryDelay(t){const n=this.retryDelay*Math.pow(2,t-1)*(.85+Math.random()*.3);return Math.round(n)}async handleRequest(t,e,n={}){const{params:r,headers:a={},body:s,signal:l,...c}=n,d=this.buildUrl(e,r),h=Date.now(),m=ED.has(t.toUpperCase())||n.idempotent===!0?this.retryCount:0,v={...this.defaultHeaders},y=this.userToken||this.anonKey;y&&(v.Authorization=`Bearer ${y}`);let b;s!==void 0&&(typeof FormData<"u"&&s instanceof FormData?b=s:(t!=="GET"&&(v["Content-Type"]="application/json;charset=UTF-8"),b=JSON.stringify(s))),a instanceof Headers?a.forEach((P,A)=>{v[A]=P}):Array.isArray(a)?a.forEach(([P,A])=>{v[P]=A}):Object.assign(v,a),this.logger.logRequest(t,d,v,b);let x;for(let P=0;P<=m;P++){if(P>0){const T=this.computeRetryDelay(P);if(this.logger.warn(`Retry ${P}/${m} for ${t} ${d} in ${T}ms`),l?.aborted)throw l.reason;await new Promise((E,D)=>{const $=()=>{clearTimeout(I),D(l.reason)},I=setTimeout(()=>{l&&l.removeEventListener("abort",$),E()},T);l&&l.addEventListener("abort",$,{once:!0})})}let A,L;if((this.timeout>0||l)&&(A=new AbortController,this.timeout>0&&(L=setTimeout(()=>A.abort(),this.timeout)),l))if(l.aborted)A.abort(l.reason);else{const T=()=>A.abort(l.reason);l.addEventListener("abort",T,{once:!0}),A.signal.addEventListener("abort",()=>{l.removeEventListener("abort",T)},{once:!0})}try{const T=await this.fetch(d,{method:t,headers:v,body:b,...c,...A?{signal:A.signal}:{}});if(this.isRetryableStatus(T.status)&&P<m){L!==void 0&&clearTimeout(L),await T.body?.cancel(),x=new at(`Server error: ${T.status} ${T.statusText}`,T.status,"SERVER_ERROR");continue}if(T.status===204){L!==void 0&&clearTimeout(L);return}let E;const D=T.headers.get("content-type");try{D?.includes("json")?E=await T.json():E=await T.text()}catch($){throw L!==void 0&&clearTimeout(L),new at(`Failed to parse response body: ${$?.message||"Unknown error"}`,T.status,T.ok?"PARSE_ERROR":"REQUEST_FAILED")}if(L!==void 0&&clearTimeout(L),!T.ok){if(this.logger.logResponse(t,d,T.status,Date.now()-h,E),E&&typeof E=="object"&&"error"in E){!E.statusCode&&!E.status&&(E.statusCode=T.status);const $=at.fromApiError(E);throw Object.keys(E).forEach(I=>{I!=="error"&&I!=="message"&&I!=="statusCode"&&($[I]=E[I])}),$}throw new at(`Request failed: ${T.statusText}`,T.status,"REQUEST_FAILED")}return this.logger.logResponse(t,d,T.status,Date.now()-h,E),E}catch(T){if(L!==void 0&&clearTimeout(L),T?.name==="AbortError")throw A&&A.signal.aborted&&this.timeout>0&&!l?.aborted?new at(`Request timed out after ${this.timeout}ms`,408,"REQUEST_TIMEOUT"):T;if(T instanceof at)throw T;if(P<m){x=T;continue}throw new at(`Network request failed: ${T?.message||"Unknown error"}`,0,"NETWORK_ERROR")}}throw x||new at("Request failed after all retry attempts",0,"NETWORK_ERROR")}async request(t,e,n={}){try{return await this.handleRequest(t,e,{...n})}catch(r){if(r instanceof at&&r.statusCode===401&&r.error==="INVALID_TOKEN"&&this.autoRefreshToken)try{const a=await this.handleTokenRefresh();return this.setAuthToken(a.accessToken),this.tokenManager.saveSession(a),a.csrfToken&&$3(a.csrfToken),a.refreshToken&&this.setRefreshToken(a.refreshToken),await this.handleRequest(t,e,{...n})}catch(a){throw this.tokenManager.clearSession(),this.userToken=null,this.refreshToken=null,B3(),a}throw r}}get(t,e){return this.request("GET",t,e)}post(t,e,n){return this.request("POST",t,{...n,body:e})}put(t,e,n){return this.request("PUT",t,{...n,body:e})}patch(t,e,n){return this.request("PATCH",t,{...n,body:e})}delete(t,e){return this.request("DELETE",t,e)}setAuthToken(t){this.userToken=t}setRefreshToken(t){this.refreshToken=t}getHeaders(){const t={...this.defaultHeaders},e=this.userToken||this.anonKey;return e&&(t.Authorization=`Bearer ${e}`),t}async handleTokenRefresh(){return this.isRefreshing?this.refreshPromise:(this.isRefreshing=!0,this.refreshPromise=(async()=>{try{const t=U3(),e=this.refreshToken?{refreshToken:this.refreshToken}:void 0;return await this.handleRequest("POST","/api/auth/sessions/current",{body:e,headers:t?{"X-CSRF-Token":t}:{},credentials:"include"})}finally{this.isRefreshing=!1,this.refreshPromise=null}})(),this.refreshPromise)}},o_="insforge_pkce_verifier";function H3(t){return btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function RD(){const t=new Uint8Array(32);return crypto.getRandomValues(t),H3(t)}async function LD(t){const n=new TextEncoder().encode(t),r=await crypto.subtle.digest("SHA-256",n);return H3(new Uint8Array(r))}function ID(t){typeof sessionStorage<"u"&&sessionStorage.setItem(o_,t)}function DD(){if(typeof sessionStorage>"u")return null;const t=sessionStorage.getItem(o_);return t&&sessionStorage.removeItem(o_),t}function Cr(t,e){return t instanceof at?{data:null,error:t}:{data:null,error:new at(t instanceof Error?t.message:e,500,"UNEXPECTED_ERROR")}}function rx(...t){if(typeof window>"u")return;const e=new URL(window.location.href);t.forEach(n=>e.searchParams.delete(n)),window.history.replaceState({},document.title,e.toString())}var MD=class{constructor(t,e,n={}){this.http=t,this.tokenManager=e,this.options=n,this.authCallbackHandled=this.detectAuthCallback()}isServerMode(){return!!this.options.isServerMode}saveSessionFromResponse(t){if(!t.accessToken||!t.user)return!1;const e={accessToken:t.accessToken,user:t.user};return!this.isServerMode()&&t.csrfToken&&$3(t.csrfToken),this.isServerMode()||this.tokenManager.saveSession(e),this.http.setAuthToken(t.accessToken),this.http.setRefreshToken(t.refreshToken??null),!0}async detectAuthCallback(){if(!(this.isServerMode()||typeof window>"u"))try{const t=new URLSearchParams(window.location.search),e=t.get("error");if(e){rx("error"),console.debug("OAuth callback error:",e);return}const n=t.get("insforge_code");if(n){rx("insforge_code");const{error:r}=await this.exchangeOAuthCode(n);r&&console.debug("OAuth code exchange failed:",r.message);return}}catch(t){console.debug("OAuth callback detection skipped:",t)}}async signUp(t){try{const e=await this.http.post(this.isServerMode()?"/api/auth/users?client_type=mobile":"/api/auth/users",t,{credentials:"include"});return e.accessToken&&e.user&&this.saveSessionFromResponse(e),e.refreshToken&&this.http.setRefreshToken(e.refreshToken),{data:e,error:null}}catch(e){return Cr(e,"An unexpected error occurred during sign up")}}async signInWithPassword(t){try{const e=await this.http.post(this.isServerMode()?"/api/auth/sessions?client_type=mobile":"/api/auth/sessions",t,{credentials:"include"});return this.saveSessionFromResponse(e),e.refreshToken&&this.http.setRefreshToken(e.refreshToken),{data:e,error:null}}catch(e){return Cr(e,"An unexpected error occurred during sign in")}}async signOut(){try{try{await this.http.post(this.isServerMode()?"/api/auth/logout?client_type=mobile":"/api/auth/logout",void 0,{credentials:"include"})}catch{}return this.tokenManager.clearSession(),this.http.setAuthToken(null),this.http.setRefreshToken(null),this.isServerMode()||B3(),{error:null}}catch{return{error:new at("Failed to sign out",500,"SIGNOUT_ERROR")}}}async signInWithOAuth(t){try{const{provider:e,redirectTo:n,skipBrowserRedirect:r}=t,a=encodeURIComponent(e.toLowerCase()),s=RD(),l=await LD(s);ID(s);const c={code_challenge:l};n&&(c.redirect_uri=n);const h=Sf.options.includes(a)?`/api/auth/oauth/${a}`:`/api/auth/oauth/custom/${a}`,p=await this.http.get(h,{params:c});return!this.isServerMode()&&typeof window<"u"&&!r?(window.location.href=p.authUrl,{data:{},error:null}):{data:{url:p.authUrl,provider:a,codeVerifier:s},error:null}}catch(e){return e instanceof at?{data:{},error:e}:{data:{},error:new at("An unexpected error occurred during OAuth initialization",500,"UNEXPECTED_ERROR")}}}async exchangeOAuthCode(t,e){try{const n=e??DD();if(!n)return{data:null,error:new at("PKCE code verifier not found. Ensure signInWithOAuth was called in the same browser session.",400,"PKCE_VERIFIER_MISSING")};const r={code:t,code_verifier:n},a=await this.http.post(this.isServerMode()?"/api/auth/oauth/exchange?client_type=mobile":"/api/auth/oauth/exchange",r,{credentials:"include"});return this.saveSessionFromResponse(a),{data:a,error:null}}catch(n){return Cr(n,"An unexpected error occurred during OAuth code exchange")}}async signInWithIdToken(t){try{const{provider:e,token:n}=t,r=await this.http.post("/api/auth/id-token?client_type=mobile",{provider:e,token:n},{credentials:"include"});return this.saveSessionFromResponse(r),r.refreshToken&&this.http.setRefreshToken(r.refreshToken),{data:r,error:null}}catch(e){return Cr(e,"An unexpected error occurred during ID token sign in")}}async refreshSession(t){try{if(this.isServerMode()&&!t?.refreshToken)return{data:null,error:new at("refreshToken is required when refreshing session in server mode",400,"REFRESH_TOKEN_REQUIRED")};const e=this.isServerMode()?null:U3(),n=await this.http.post(this.isServerMode()?"/api/auth/refresh?client_type=mobile":"/api/auth/refresh",this.isServerMode()?{refresh_token:t?.refreshToken}:void 0,{headers:e?{"X-CSRF-Token":e}:{},credentials:"include"});return n.accessToken&&this.saveSessionFromResponse(n),{data:n,error:null}}catch(e){return Cr(e,"An unexpected error occurred during session refresh")}}async getCurrentUser(){await this.authCallbackHandled;try{if(this.isServerMode()){const e=this.tokenManager.getAccessToken();return e?(this.http.setAuthToken(e),{data:{user:(await this.http.get("/api/auth/sessions/current")).user??null},error:null}):{data:{user:null},error:null}}const t=this.tokenManager.getSession();if(t)return this.http.setAuthToken(t.accessToken),{data:{user:t.user},error:null};if(typeof window<"u"){const{data:e,error:n}=await this.refreshSession();if(n)return{data:{user:null},error:n};if(e?.accessToken)return{data:{user:e.user??null},error:null}}return{data:{user:null},error:null}}catch(t){return t instanceof at?{data:{user:null},error:t}:{data:{user:null},error:new at("An unexpected error occurred while getting user",500,"UNEXPECTED_ERROR")}}}async getProfile(t){try{return{data:await this.http.get(`/api/auth/profiles/${t}`),error:null}}catch(e){return Cr(e,"An unexpected error occurred while fetching user profile")}}async setProfile(t){try{const e=await this.http.patch("/api/auth/profiles/current",{profile:t}),n=this.tokenManager.getUser();return!this.isServerMode()&&n&&e.profile!==void 0&&this.tokenManager.setUser({...n,profile:e.profile}),{data:e,error:null}}catch(e){return Cr(e,"An unexpected error occurred while updating user profile")}}async resendVerificationEmail(t){try{return{data:await this.http.post("/api/auth/email/send-verification",t),error:null}}catch(e){return Cr(e,"An unexpected error occurred while sending verification email")}}async verifyEmail(t){try{const e=await this.http.post(this.isServerMode()?"/api/auth/email/verify?client_type=mobile":"/api/auth/email/verify",t,{credentials:"include"});return this.saveSessionFromResponse(e),e.refreshToken&&this.http.setRefreshToken(e.refreshToken),{data:e,error:null}}catch(e){return Cr(e,"An unexpected error occurred while verifying email")}}async sendResetPasswordEmail(t){try{return{data:await this.http.post("/api/auth/email/send-reset-password",t),error:null}}catch(e){return Cr(e,"An unexpected error occurred while sending password reset email")}}async exchangeResetPasswordToken(t){try{return{data:await this.http.post("/api/auth/email/exchange-reset-password-token",t),error:null}}catch(e){return Cr(e,"An unexpected error occurred while verifying reset code")}}async resetPassword(t){try{return{data:await this.http.post("/api/auth/email/reset-password",t),error:null}}catch(e){return Cr(e,"An unexpected error occurred while resetting password")}}async getPublicAuthConfig(){try{return{data:await this.http.get("/api/auth/public-config"),error:null}}catch(t){return Cr(t,"An unexpected error occurred while fetching auth configuration")}}};function ND(t,e){return async(n,r)=>{const a=typeof n=="string"?n:n.toString(),s=new URL(a),l=s.pathname.slice(1),c=l.match(/^rpc\/(.+)$/),d=c?`/api/database/rpc/${c[1]}`:`/api/database/records/${l}`,h=`${t.baseUrl}${d}${s.search}`,p=e.getAccessToken(),m=t.getHeaders(),v=p||m.Authorization?.replace("Bearer ",""),y=new Headers(r?.headers);return v&&!y.has("Authorization")&&y.set("Authorization",`Bearer ${v}`),await fetch(h,{...r,headers:y})}}var OD=class{constructor(t,e){this.postgrest=new R7("http://dummy",{fetch:ND(t,e),headers:{}})}from(t){return this.postgrest.from(t)}rpc(t,e,n){return this.postgrest.rpc(t,e,n)}},jD=class{constructor(t,e){this.bucketName=t,this.http=e}async upload(t,e){try{const n=await this.http.post(`/api/storage/buckets/${this.bucketName}/upload-strategy`,{filename:t,contentType:e.type||"application/octet-stream",size:e.size});if(n.method==="presigned")return await this.uploadWithPresignedUrl(n,e);if(n.method==="direct"){const r=new FormData;return r.append("file",e),{data:await this.http.request("PUT",`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(t)}`,{body:r,headers:{}}),error:null}}throw new at(`Unsupported upload method: ${n.method}`,500,"STORAGE_ERROR")}catch(n){return{data:null,error:n instanceof at?n:new at("Upload failed",500,"STORAGE_ERROR")}}}async uploadAuto(t){try{const e=t instanceof File?t.name:"file",n=await this.http.post(`/api/storage/buckets/${this.bucketName}/upload-strategy`,{filename:e,contentType:t.type||"application/octet-stream",size:t.size});if(n.method==="presigned")return await this.uploadWithPresignedUrl(n,t);if(n.method==="direct"){const r=new FormData;return r.append("file",t),{data:await this.http.request("POST",`/api/storage/buckets/${this.bucketName}/objects`,{body:r,headers:{}}),error:null}}throw new at(`Unsupported upload method: ${n.method}`,500,"STORAGE_ERROR")}catch(e){return{data:null,error:e instanceof at?e:new at("Upload failed",500,"STORAGE_ERROR")}}}async uploadWithPresignedUrl(t,e){try{const n=new FormData;t.fields&&Object.entries(t.fields).forEach(([a,s])=>{n.append(a,s)}),n.append("file",e);const r=await fetch(t.uploadUrl,{method:"POST",body:n});if(!r.ok)throw new at(`Upload to storage failed: ${r.statusText}`,r.status,"STORAGE_ERROR");return t.confirmRequired&&t.confirmUrl?{data:await this.http.post(t.confirmUrl,{size:e.size,contentType:e.type||"application/octet-stream"}),error:null}:{data:{key:t.key,bucket:this.bucketName,size:e.size,mimeType:e.type||"application/octet-stream",uploadedAt:new Date().toISOString(),url:this.getPublicUrl(t.key)},error:null}}catch(n){throw n instanceof at?n:new at("Presigned upload failed",500,"STORAGE_ERROR")}}async download(t){try{const e=await this.http.post(`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(t)}/download-strategy`,{expiresIn:3600}),n=e.url,r={};e.method==="direct"&&Object.assign(r,this.http.getHeaders());const a=await fetch(n,{method:"GET",headers:r});if(!a.ok)try{const l=await a.json();throw at.fromApiError(l)}catch{throw new at(`Download failed: ${a.statusText}`,a.status,"STORAGE_ERROR")}return{data:await a.blob(),error:null}}catch(e){return{data:null,error:e instanceof at?e:new at("Download failed",500,"STORAGE_ERROR")}}}getPublicUrl(t){return`${this.http.baseUrl}/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(t)}`}async list(t){try{const e={};return t?.prefix&&(e.prefix=t.prefix),t?.search&&(e.search=t.search),t?.limit&&(e.limit=t.limit.toString()),t?.offset&&(e.offset=t.offset.toString()),{data:await this.http.get(`/api/storage/buckets/${this.bucketName}/objects`,{params:e}),error:null}}catch(e){return{data:null,error:e instanceof at?e:new at("List failed",500,"STORAGE_ERROR")}}}async remove(t){try{return{data:await this.http.delete(`/api/storage/buckets/${this.bucketName}/objects/${encodeURIComponent(t)}`),error:null}}catch(e){return{data:null,error:e instanceof at?e:new at("Delete failed",500,"STORAGE_ERROR")}}}},zD=class{constructor(t){this.http=t}from(t){return new jD(t,this.http)}},FD=class{constructor(t){this.http=t,this.chat=new UD(t),this.images=new VD(t),this.embeddings=new BD(t)}},UD=class{constructor(t){this.completions=new $D(t)}},$D=class{constructor(t){this.http=t}async create(t){const e={model:t.model,messages:t.messages,temperature:t.temperature,maxTokens:t.maxTokens,topP:t.topP,stream:t.stream,webSearch:t.webSearch,fileParser:t.fileParser,thinking:t.thinking,tools:t.tools,toolChoice:t.toolChoice,parallelToolCalls:t.parallelToolCalls};if(t.stream){const a=this.http.getHeaders();a["Content-Type"]="application/json";const s=await this.http.fetch(`${this.http.baseUrl}/api/ai/chat/completion`,{method:"POST",headers:a,body:JSON.stringify(e)});if(!s.ok){const l=await s.json();throw new Error(l.error||"Stream request failed")}return this.parseSSEStream(s,t.model)}const n=await this.http.post("/api/ai/chat/completion",e),r=n.text||"";return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:n.metadata?.model,choices:[{index:0,message:{role:"assistant",content:r,...n.tool_calls?.length&&{tool_calls:n.tool_calls},...n.annotations?.length&&{annotations:n.annotations}},finish_reason:n.tool_calls?.length?"tool_calls":"stop"}],usage:n.metadata?.usage||{prompt_tokens:0,completion_tokens:0,total_tokens:0}}}async*parseSSEStream(t,e){const n=t.body.getReader(),r=new TextDecoder;let a="";try{for(;;){const{done:s,value:l}=await n.read();if(s)break;a+=r.decode(l,{stream:!0});const c=a.split(`
42
- `);a=c.pop()||"";for(const d of c)if(d.startsWith("data: ")){const h=d.slice(6).trim();if(h)try{const p=JSON.parse(h);if((p.chunk||p.content)&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:e,choices:[{index:0,delta:{content:p.chunk||p.content},finish_reason:null}]}),p.tool_calls?.length&&(yield{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:e,choices:[{index:0,delta:{tool_calls:p.tool_calls},finish_reason:"tool_calls"}]}),p.done){n.releaseLock();return}}catch{console.warn("Failed to parse SSE data:",h)}}}}finally{n.releaseLock()}}},BD=class{constructor(t){this.http=t}async create(t){const e=await this.http.post("/api/ai/embeddings",t);return{object:e.object,data:e.data,model:e.metadata?.model,usage:e.metadata?.usage?{prompt_tokens:e.metadata.usage.promptTokens||0,total_tokens:e.metadata.usage.totalTokens||0}:{prompt_tokens:0,total_tokens:0}}}},VD=class{constructor(t){this.http=t}async generate(t){const e=await this.http.post("/api/ai/image/generation",t);let n=[];return e.images&&e.images.length>0?n=e.images.map(r=>({b64_json:r.imageUrl.replace(/^data:image\/\w+;base64,/,""),content:e.text})):e.text&&(n=[{content:e.text}]),{created:Math.floor(Date.now()/1e3),data:n,...e.metadata?.usage&&{usage:{total_tokens:e.metadata.usage.totalTokens||0,input_tokens:e.metadata.usage.promptTokens||0,output_tokens:e.metadata.usage.completionTokens||0}}}}},HD=class W3{constructor(e,n){this.http=e,this.functionsUrl=n||W3.deriveSubhostingUrl(e.baseUrl)}static deriveSubhostingUrl(e){try{const{hostname:n}=new URL(e);return n.endsWith(".insforge.app")?`https://${n.split(".")[0]}.functions.insforge.app`:void 0}catch{return}}async invoke(e,n={}){const{method:r="POST",body:a,headers:s={}}=n;if(this.functionsUrl)try{return{data:await this.http.request(r,`${this.functionsUrl}/${e}`,{body:a,headers:s}),error:null}}catch(l){if(l instanceof Error&&l.name==="AbortError")throw l;if(!(l instanceof at&&l.statusCode===404))return{data:null,error:l instanceof at?l:new at(l instanceof Error?l.message:"Function invocation failed",500,"FUNCTION_ERROR")}}try{const l=`/functions/${e}`;return{data:await this.http.request(r,l,{body:a,headers:s}),error:null}}catch(l){if(l instanceof Error&&l.name==="AbortError")throw l;return{data:null,error:l instanceof at?l:new at(l instanceof Error?l.message:"Function invocation failed",500,"FUNCTION_ERROR")}}}},ax=1e4,WD=class{constructor(t,e,n){this.socket=null,this.connectPromise=null,this.subscribedChannels=new Set,this.eventListeners=new Map,this.baseUrl=t,this.tokenManager=e,this.anonKey=n,this.tokenManager.onTokenChange=()=>this.onTokenChange()}notifyListeners(t,e){const n=this.eventListeners.get(t);if(n)for(const r of n)try{r(e)}catch(a){console.error(`Error in ${t} callback:`,a)}}connect(){return this.socket?.connected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((t,e)=>{const n=this.tokenManager.getAccessToken()??this.anonKey;this.socket=Zh(this.baseUrl,{transports:["websocket"],auth:n?{token:n}:void 0});let r=!0,a=null;const s=()=>{a&&(clearTimeout(a),a=null)};a=setTimeout(()=>{r&&(r=!1,this.connectPromise=null,this.socket?.disconnect(),this.socket=null,e(new Error(`Connection timeout after ${ax}ms`)))},ax),this.socket.on("connect",()=>{s();for(const l of this.subscribedChannels)this.socket.emit("realtime:subscribe",{channel:l});this.notifyListeners("connect"),r&&(r=!1,this.connectPromise=null,t())}),this.socket.on("connect_error",l=>{s(),this.notifyListeners("connect_error",l),r&&(r=!1,this.connectPromise=null,e(l))}),this.socket.on("disconnect",l=>{this.notifyListeners("disconnect",l)}),this.socket.on("realtime:error",l=>{this.notifyListeners("error",l)}),this.socket.onAny((l,c)=>{l!=="realtime:error"&&this.notifyListeners(l,c)})}),this.connectPromise)}disconnect(){this.socket&&(this.socket.disconnect(),this.socket=null),this.subscribedChannels.clear()}onTokenChange(){const t=this.tokenManager.getAccessToken()??this.anonKey;this.socket&&(this.socket.auth=t?{token:t}:{}),this.socket&&(this.socket.connected||this.connectPromise)&&(this.socket.disconnect(),this.socket.connect())}get isConnected(){return this.socket?.connected??!1}get connectionState(){return this.socket?this.socket.connected?"connected":"connecting":"disconnected"}get socketId(){return this.socket?.id}async subscribe(t){if(this.subscribedChannels.has(t))return{ok:!0,channel:t};if(!this.socket?.connected)try{await this.connect()}catch(e){const n=e instanceof Error?e.message:"Connection failed";return{ok:!1,channel:t,error:{code:"CONNECTION_FAILED",message:n}}}return new Promise(e=>{this.socket.emit("realtime:subscribe",{channel:t},n=>{n.ok&&this.subscribedChannels.add(t),e(n)})})}unsubscribe(t){this.subscribedChannels.delete(t),this.socket?.connected&&this.socket.emit("realtime:unsubscribe",{channel:t})}async publish(t,e,n){if(!this.socket?.connected)throw new Error("Not connected to realtime server. Call connect() first.");this.socket.emit("realtime:publish",{channel:t,event:e,payload:n})}on(t,e){this.eventListeners.has(t)||this.eventListeners.set(t,new Set),this.eventListeners.get(t).add(e)}off(t,e){const n=this.eventListeners.get(t);n&&(n.delete(e),n.size===0&&this.eventListeners.delete(t))}once(t,e){const n=r=>{this.off(t,n),e(r)};this.on(t,n)}getSubscribedChannels(){return Array.from(this.subscribedChannels)}},GD=class{constructor(t){this.http=t}async send(t){try{return{data:await this.http.post("/api/email/send-raw",t),error:null}}catch(e){if(e instanceof Error&&e.name==="AbortError")throw e;return{data:null,error:e instanceof at?e:new at(e instanceof Error?e.message:"Email send failed",500,"EMAIL_ERROR")}}}},qD=class{constructor(t={}){const e=new F3(t.debug);this.tokenManager=new V3,this.http=new AD(t,this.tokenManager,e),t.edgeFunctionToken&&(this.http.setAuthToken(t.edgeFunctionToken),this.tokenManager.setAccessToken(t.edgeFunctionToken)),this.auth=new MD(this.http,this.tokenManager,{isServerMode:t.isServerMode??!1}),this.database=new OD(this.http,this.tokenManager),this.storage=new zD(this.http),this.ai=new FD(this.http),this.functions=new HD(this.http,t.functionsUrl),this.realtime=new WD(this.http.baseUrl,this.tokenManager,t.anonKey),this.emails=new GD(this.http)}getHttpClient(){return this.http}};function KD(t){return new qD(t)}const n0={VITE_INSFORGE_ANON_KEY:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3OC0xMjM0LTU2NzgtOTBhYi1jZGVmMTIzNDU2NzgiLCJlbWFpbCI6ImFub25AaW5zZm9yZ2UuY29tIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODExNDU5NDd9.T0auta_IrVIh0uXW1bob5QSnzvsnJmN28r5XkSGEuQY",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"},G3="https://srctyff5.us-east.insforge.app",YD="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3OC0xMjM0LTU2NzgtOTBhYi1jZGVmMTIzNDU2NzgiLCJlbWFpbCI6ImFub25AaW5zZm9yZ2UuY29tIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODExNDU5NDd9.T0auta_IrVIh0uXW1bob5QSnzvsnJmN28r5XkSGEuQY";function Ya(){const t=typeof import.meta<"u"?n0:void 0;return(t?.VITE_INSFORGE_BASE_URL||t?.VITE_TOKENTRACKER_BACKEND_BASE_URL||G3).trim()}function q3(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return window.location.origin;const e=typeof import.meta<"u"?n0:void 0;return(e?.VITE_INSFORGE_BASE_URL||e?.VITE_TOKENTRACKER_BACKEND_BASE_URL||G3).trim()}function Hl(){const t=typeof import.meta<"u"?n0:void 0;return(t?.VITE_INSFORGE_ANON_KEY||t?.VITE_TOKENTRACKER_BACKEND_ANON_KEY||YD).trim()}function l_(){return!!q3()}let jg=null;function ZD(){return l_()?(jg||(jg=KD({baseUrl:q3(),anonKey:Hl()||void 0,autoRefreshToken:!0})),jg):null}const JD="modulepreload",XD=function(t){return"/"+t},ix={},Un=function(e,n,r){let a=Promise.resolve();if(n&&n.length>0){let d=function(h){return Promise.all(h.map(p=>Promise.resolve(p).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=l?.nonce||l?.getAttribute("nonce");a=d(n.map(h=>{if(h=XD(h),h in ix)return;ix[h]=!0;const p=h.endsWith(".css"),m=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${m}`))return;const v=document.createElement("link");if(v.rel=p?"stylesheet":JD,p||(v.as="script"),v.crossOrigin="",v.href=h,c&&v.setAttribute("nonce",c),document.head.appendChild(v),p)return new Promise((y,b)=>{v.addEventListener("load",y),v.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${h}`)))})}))}function s(l){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l}return a.then(l=>{for(const c of l||[])c.status==="rejected"&&s(c.reason);return e().catch(s)})},K3="tokentracker_cloud_sync_enabled",QD="tokentracker_cloud_device_session_v1",r0="tokentracker_cloud_last_sync_ts";let a0=null;function i0(){try{localStorage.removeItem(QD)}catch{}}function Cp(){if(typeof window>"u")return!1;const t=window.location.hostname;return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function Tp(){try{const t=localStorage.getItem(K3);return t===null||t===""?!1:t==="1"||t==="true"}catch{return!1}}function eM(t){try{localStorage.setItem(K3,t?"1":"0")}catch{}Y3(t);try{typeof window<"u"&&window.dispatchEvent(new Event("tt.cloudSyncChanged"))}catch{}}async function Y3(t){if(Cp())try{const{getLocalApiAuthHeaders:e}=await Un(async()=>{const{getLocalApiAuthHeaders:r}=await Promise.resolve().then(()=>VM);return{getLocalApiAuthHeaders:r}},[]),n=await e();await fetch("/functions/tokentracker-cloud-sync-pref",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",...n},cache:"no-store",body:JSON.stringify({enabled:t})})}catch{}}function tM(){Y3(Tp())}function Z3(){return i0(),a0}function nM(t){a0=t,i0()}function J3(){a0=null;try{localStorage.removeItem(r0)}catch{}i0()}function rM(){try{const t=Number(localStorage.getItem(r0));return Number.isFinite(t)?t:0}catch{return 0}}function X3(t){try{localStorage.setItem(r0,String(t))}catch{}}function ss(t){if(typeof t!="string")return null;const e=t.trim();return e.length>0?e:null}function aM(t){const e=ss(t);if(!e)return null;const n=e.split(".");if(n.length<2)return null;const r=n[1];try{const a=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),s=typeof atob=="function"?atob(a):Buffer.from(a,"base64").toString("utf8"),c=JSON.parse(s)?.exp;return typeof c!="number"||!Number.isFinite(c)||c<=0?null:Math.floor(c*1e3)}catch{return null}}function Ef(t){const e=ss(t);if(!e)return!1;const n=e.split(".");if(n.length!==3)return!1;try{for(let r=0;r<2;r++){const a=n[r];if(!/^[A-Za-z0-9_-]+$/.test(a))return!1;const s=a.replace(/-/g,"+").replace(/_/g,"/").padEnd(a.length+(4-a.length%4)%4,"="),l=typeof atob=="function"?atob(s):Buffer.from(s,"base64").toString("utf8");r===1&&JSON.parse(l)}return!0}catch{return!1}}function iM(t,e=3e4){const n=aM(t);return n?n<=Date.now()+Math.max(0,Number(e)||0):!1}async function sM(t){if(!t)return null;if(typeof t=="string")return ss(t);if(typeof t=="function")try{const e=await t();return ss(e)}catch{return null}if(typeof t=="object"){if(typeof t.getAccessToken=="function"){try{const e=await t.getAccessToken(),n=ss(e);if(n)return n}catch{}return ss(t.accessToken)}return null}return ss(t)}async function dK(t,e={}){const n=Math.max(1,Math.min(12,Math.floor(Number(e.maxAttempts)||8))),r=Math.max(20,Math.floor(Number(e.baseDelayMs)||50));for(let a=0;a<n;a++){const s=await sM(t);if(s)return s;a<n-1&&await new Promise(l=>setTimeout(l,r*(a+1)))}return null}function hK(t){return typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")||typeof t=="function"||t&&typeof t=="object"&&typeof t.getAccessToken=="function"?!0:!!ss(t)}function pK(){if(typeof Intl>"u"||!Intl.DateTimeFormat)return null;try{return Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{return null}}function fK(t=new Date){const e=t instanceof Date?t:new Date(t);if(!Number.isFinite(e.getTime()))return 0;const n=e.getTimezoneOffset();return Number.isFinite(n)?-n:0}function Q3(t){if(!Number.isFinite(t)||t===0)return"UTC";const e=t>=0?"+":"-",n=Math.abs(t),r=String(Math.floor(n/60)).padStart(2,"0"),a=String(n%60).padStart(2,"0");return`UTC${e}${r}:${a}`}function mK({timeZone:t,offsetMinutes:e}={}){const n=Q3(e);return t&&t!=="UTC"?`${t} (${n})`:n}function gK({timeZone:t,offsetMinutes:e}={}){return Number.isFinite(e)?Q3(e):t||"UTC"}function vK({timeZone:t,offsetMinutes:e,date:n=new Date}={}){const r=n instanceof Date?n:new Date(n);if(!Number.isFinite(r.getTime()))return"";if(t&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const l=new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(r).reduce((p,m)=>(m.type&&m.value&&(p[m.type]=m.value),p),{}),c=l.year,d=l.month,h=l.day;if(c&&d&&h)return`${c}-${d}-${h}`}catch{}if(typeof e=="number"&&Number.isFinite(e)){const a=new Date(r.getTime()+e*6e4);return lM(a)}return cM(r)}function oM({timeZone:t,offsetMinutes:e,date:n=new Date}={}){const r=n instanceof Date?n:new Date(n);if(!Number.isFinite(r.getTime()))return null;if(t&&typeof Intl<"u"&&Intl.DateTimeFormat)try{const l=new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(r).reduce((p,m)=>(m.type&&m.value&&(p[m.type]=m.value),p),{}),c=Number(l.year),d=Number(l.month),h=Number(l.day);if(Number.isFinite(c)&&Number.isFinite(d)&&Number.isFinite(h))return{year:c,month:d,day:h}}catch{}if(typeof e=="number"&&Number.isFinite(e)){const a=new Date(r.getTime()+e*6e4);return{year:a.getUTCFullYear(),month:a.getUTCMonth()+1,day:a.getUTCDate()}}return{year:r.getFullYear(),month:r.getMonth()+1,day:r.getDate()}}function _K({timeZone:t,offsetMinutes:e}={}){return t?`tz:${t}`:typeof e=="number"&&Number.isFinite(e)?`offset:${Math.trunc(e)}`:"utc"}function lM(t){const e=t.getUTCFullYear(),n=String(t.getUTCMonth()+1).padStart(2,"0"),r=String(t.getUTCDate()).padStart(2,"0");return`${e}-${n}-${r}`}function cM(t){const e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${n}-${r}`}function Kt(t){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())).toISOString().slice(0,10)}function Qa(t){const e=t instanceof Date?t:new Date(t);if(!Number.isFinite(e.getTime()))return"";const n=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${n}-${r}-${a}`}function uM(t){if(!t)return null;const e=String(t).trim(),n=e.split("-");if(n.length!==3)return null;const r=Number(n[0]),a=Number(n[1])-1,s=Number(n[2]);if(!Number.isFinite(r)||!Number.isFinite(a)||!Number.isFinite(s))return null;const l=new Date(Date.UTC(r,a,s));return Number.isFinite(l.getTime())&&Kt(l)===e?l:null}function dM(t){if(!t)return"";const e=t.year,n=String(t.month).padStart(2,"0"),r=String(t.day).padStart(2,"0");return!e||!n||!r?"":`${e}-${n}-${r}`}function hM(t,{timeZone:e,offsetMinutes:n,now:r}={}){const a=r instanceof Date&&Number.isFinite(r.getTime())?r:new Date,s=oM({timeZone:e,offsetMinutes:n,date:a});if(!s){const d=Qa(new Date);return{from:d,to:d}}const l=dM(s),c=uM(l);if(!c)return{from:l,to:l};if(t==="day")return{from:l,to:l};if(t==="week"){const d=new Date(c),p=(d.getUTCDay()+6)%7;d.setUTCDate(d.getUTCDate()-p);const m=new Date(d);return m.setUTCDate(m.getUTCDate()+6),{from:Kt(d),to:Kt(m)}}if(t==="month"){const d=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),1)),h=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth()+1,0));return{from:Kt(d),to:Kt(h)}}if(t==="total"){const d=new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth()-23,1));return{from:Kt(d),to:l}}return hM("week")}function eC(){return typeof window>"u"?null:window.localStorage||null}function tC(){return typeof navigator>"u"?null:navigator.clipboard||null}function pM(){return typeof window>"u"?null:window.ClipboardItem||null}function uu(t,{storage:e}={}){const n=e??eC();if(!n||typeof n.getItem!="function")return null;try{return n.getItem(t)}catch{return null}}function du(t,e,{storage:n}={}){const r=n??eC();if(!r||typeof r.setItem!="function")return!1;try{return r.setItem(t,e),!0}catch{return!1}}async function yK(t,{clipboard:e}={}){const n=e??tC();if(!n||typeof n.writeText!="function")return!1;try{return await n.writeText(t),!0}catch{return!1}}async function bK(t,{clipboard:e}={}){const n=e??tC(),r=pM();if(!t||!n||typeof n.write!="function"||!r)return!1;try{const a=t.type||"image/png",s=t.type&&t.type!==a?t.slice(0,t.size,a):t.type?t:t.slice(0,t.size,a),l=new r({[a]:s});return await n.write([l]),!0}catch{return!1}}const Au="USD",s0=["USD","EUR","GBP","CNY","JPY","HKD"],nC={USD:{symbol:"$",labelKey:"settings.appearance.currency.opt.usd"},EUR:{symbol:"€",labelKey:"settings.appearance.currency.opt.eur"},GBP:{symbol:"£",labelKey:"settings.appearance.currency.opt.gbp"},CNY:{symbol:"¥",labelKey:"settings.appearance.currency.opt.cny"},JPY:{symbol:"¥",labelKey:"settings.appearance.currency.opt.jpy"},HKD:{symbol:"HK$",labelKey:"settings.appearance.currency.opt.hkd"}},o0={USD:1,EUR:.92,GBP:.79,CNY:7.2,JPY:155,HKD:7.8},rC="tokentracker-currency",aC="tokentracker-exchange-rates",iC="tokentracker-exchange-rate-source",sC="tokentracker-exchange-rate-fetched-at";function Ep(t){return typeof t=="number"&&Number.isFinite(t)&&t>0}function l0(t){if(typeof t!="string")return Au;const e=t.trim().toUpperCase();return s0.includes(e)?e:Au}function Jh(t){const e=typeof t=="string"?t.trim().toUpperCase():Au;return nC[e]?.symbol??"$"}function kK(){return s0.map(t=>({code:t,...nC[t]}))}function fM(){return l0(uu(rC))}function mM(t){return du(rC,l0(t))}function oC(t){return t==="fetched"?"fetched":"default"}function gM(t){if(t==null)return null;try{const e=JSON.parse(String(t));if(!e||typeof e!="object")return null;const n={};for(const[r,a]of Object.entries(e)){const s=Number(a);Number.isFinite(s)&&s>0&&(n[r.toUpperCase()]=s)}return n}catch{return null}}function vM(){const t=gM(uu(aC)),e=uu(sC),n=e==null?NaN:Number(e),r=Number.isFinite(n)&&n>0?n:null,a=uu(iC),s=oC(a);return t&&Object.keys(t).length>0?{rates:{USD:1,...t},source:s,fetchedAt:r}:{rates:{...o0},source:"default",fetchedAt:null}}function _M(t){const{rates:e,source:n,fetchedAt:r}=t;if(!e||typeof e!="object")return!1;const a=du(aC,JSON.stringify(e)),s=du(iC,oC(n)),l=r?du(sC,String(r)):!0;return a&&s&&l}function zg(t,e){if(e===Au)return 1;const n=t?.[e];if(Ep(n))return n;const r=o0[e];return Ep(r)?r:1}function wK(t){if(t==null)return"-";try{if(typeof t=="bigint")return new Intl.NumberFormat().format(t);if(typeof t=="number")return new Intl.NumberFormat().format(t);const e=String(t).trim();return/^[0-9]+$/.test(e)?new Intl.NumberFormat().format(BigInt(e)):e}catch{return String(t)}}function xK(t,{thousandSuffix:e="K",millionSuffix:n="M",billionSuffix:r="B",decimals:a=1}={}){const s=Number(String(t));if(!Number.isFinite(s))return"-";const l=s<0?"-":"",c=Math.abs(s),d=Math.max(0,Math.min(6,Math.floor(a)));if(c<1e3)return`${l}${String(c)}`;const h=(y,b)=>{const x=y.toFixed(d),P=Number(x).toString();return`${l}${P}${b}`},p=(y,b,x)=>{const P=y.toFixed(d),A=Number(P);return x&&A>=1e3?h(A/1e3,x):`${l}${A.toString()}${b}`};if(c>=1e9)return h(c/1e9,r);if(c>=1e6)return p(c/1e6,n,r);const m=c/1e3,v=Number(m.toFixed(d));return v>=1e3?h(v/1e3,n):h(v,e)}function lC(t){const e=Number(String(t));return Number.isFinite(e)?e:null}function PK(t,e={}){const{decimals:n=2,currency:r="USD",rate:a=1}=e;if(t==null||typeof t=="string"&&t.trim()==="")return"-";let s;if(typeof t=="number")s=t;else if(typeof t=="bigint")s=Number(t);else{const P=String(t).trim(),A=Number(P);if(!Number.isFinite(A))return P;s=A}if(!Number.isFinite(s))return String(t);const l=Jh(r);r!=="USD"&&typeof a=="number"&&Number.isFinite(a)&&a>0&&(s=s*a);const d=s.toFixed(6).match(/^(-?\d+)(?:\.(\d+))?$/);if(!d)return`${l}${String(s)}`;const h=d[1],p=d[2]||"";let m=h;try{m=new Intl.NumberFormat().format(BigInt(h))}catch{m=h}const v=Math.max(0,Math.min(6,Math.floor(n))),y=v?p.slice(0,v).padEnd(v,"0"):"",b=h.startsWith("-")?"-":"",x=v?`${m.replace("-","")}.${y}`:m.replace("-","");return`${b}${l}${x}`}function Ap(t){if(typeof t!="string")return null;const e=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t.trim());if(!e)return null;const n=Number(e[1]),r=Number(e[2])-1,a=Number(e[3]),s=new Date(Date.UTC(n,r,a));return Number.isFinite(s.getTime())&&Kt(s)===t.trim()?s:null}function Js(t,e){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+e))}function yM(t,e){const n=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())-Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor(n/864e5)}function Fg(t,e){if(!Array.isArray(t)||t.length===0)return 0;const n=t.length,r=(n-1)*e,a=Math.floor(r),s=r-a,l=t[a]??t[n-1],c=t[Math.min(n-1,a+1)]??t[n-1];return Math.round(l+(c-l)*s)}function bM(t){return t<=0?0:t>=4?4:t}function cC({weeks:t=52,now:e,weekStartsOn:n="sun"}={}){const r=e instanceof Date&&Number.isFinite(e.getTime())?e:new Date,a=Qa(r),s=Ap(a)||new Date(Date.UTC(r.getFullYear(),r.getMonth(),r.getDate())),l=n==="mon"?1:0,c=s.getUTCDay(),d=Js(s,-((c-l+7)%7)),h=Js(d,-7*(Math.max(1,t)-1));return{from:Kt(h),to:a}}function kM({dailyRows:t,weeks:e=52,to:n,weekStartsOn:r="sun"}={}){const a=Ap(n)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),{from:s}=cC({weeks:e,now:a,weekStartsOn:r}),l=Ap(s)||Js(a,-(e*7-1)),c=(()=>{const E=(l.getUTCDay()-(r==="mon"?1:0)+7)%7;return Js(l,-E)})(),d=new Map;for(const L of Array.isArray(t)?t:[]){const T=typeof L?.day=="string"?L.day:null;if(!T)continue;const E=lC(L?.billable_total_tokens??L?.total_tokens)??0;d.set(T,{value:Math.max(0,E),models:L?.models||null})}const h=yM(c,a)+1,p=Math.ceil(h/7),m=[];for(let L=0;L<h;L++){const T=Js(c,L),E=Kt(T),D=d.get(E),$=D?D.value:0;$>0&&m.push($)}m.sort((L,T)=>L-T);const v=Fg(m,.5),y=Fg(m,.75),b=Fg(m,.9);function x(L){return!L||L<=0?0:L<=v?1:L<=y?2:L<=b?3:4}const P=[];for(let L=0;L<p;L++){const T=[];for(let E=0;E<7;E++){const D=L*7+E,$=Js(c,D);if($.getTime()>a.getTime()){T.push(null);continue}const I=Kt($),S=d.get(I),j=S?S.value:0,F=S?S.models:null;T.push({day:I,value:j,level:bM(x(j)),models:F})}P.push(T)}const A=P.length>e?P.slice(P.length-e):P;return{from:s,to:Kt(a),weeks:A,thresholds:{t1:v,t2:y,t3:b}}}function wM({dailyRows:t,to:e}={}){const n=Ap(e)||new Date(Date.UTC(new Date().getFullYear(),new Date().getMonth(),new Date().getDate())),r=new Map;for(const s of Array.isArray(t)?t:[]){const l=typeof s?.day=="string"?s.day:null;if(!l)continue;const c=lC(s?.billable_total_tokens??s?.total_tokens)??0;r.set(l,Math.max(0,c))}let a=0;for(let s=0;s<370;s++){const l=Kt(Js(n,-s));if((r.get(l)??0)>0){a+=1;continue}break}return a}const Af={},uC="tokentracker",xM=["tokentracker/tokentracker","spacedriveapp/spacedrive","acme/alpha","acme/beta","neo/nebula","signal/flux","matrix/terminal","orbit/atlas","lumen/core","delta/horizon"],sx=["NEO","TRINITY","MORPHEUS","ORACLE","CYPHER","SWITCH","APOC","TANK","SMITH","SERAPH","NIOBE","MOUSE","DOZER","LINK","BLADE"];function $n(){if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock")||"").toLowerCase();if(e==="0"||e==="false"||e==="off"||e==="no")return!1;if(e==="1"||e==="true"||e==="on"||e==="yes")return!0}if(typeof import.meta<"u"&&Af){const t="".toLowerCase();if(t==="1"||t==="true")return!0}return!1}function PM(){if(typeof import.meta<"u"&&Af){const t="".trim();if(t)return t;const e="".trim();if(e)return e}if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock_now")||"").trim();if(e)return e;const n=String(t.get("mock_today")||"").trim();if(n)return n}return""}function SM(t){if(!t)return null;const e=String(t).trim();if(!e)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(e)){const[r,a,s]=e.split("-").map(Number);if(!Number.isFinite(r)||!Number.isFinite(a)||!Number.isFinite(s))return null;const l=new Date(r,a-1,s,12,0,0);return Number.isFinite(l.getTime())?l:null}const n=new Date(e);return Number.isFinite(n.getTime())?n:null}function SK(){return $n()?SM(PM()):null}function CM(){if(typeof import.meta<"u"&&Af){const t="".trim();if(t)return t}if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock_seed")||"").trim();if(e)return e}return uC}function TM(){if(typeof import.meta<"u"&&Af){const t="".trim(),e=Number(t);if(Number.isFinite(e)&&e>0)return Math.floor(e)}if(typeof window<"u"){const t=new URLSearchParams(window.location.search),e=String(t.get("mock_missing")||"").trim(),n=Number(e);if(Number.isFinite(n)&&n>0)return Math.floor(n)}return 0}function Zu(t){return(t==null?CM():String(t)).trim()||uC}function Ju(t){let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return e>>>0}function ir(t){if(typeof t!="string")return null;const e=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t.trim());if(!e)return null;const n=Number(e[1]),r=Number(e[2])-1,a=Number(e[3]),s=new Date(Date.UTC(n,r,a));return Number.isFinite(s.getTime())&&Kt(s)===t.trim()?s:null}function Ru(t,e){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+e))}function dC(t,e){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+e,1))}function EM(t){return`${t.getUTCFullYear()}-${String(t.getUTCMonth()+1).padStart(2,"0")}`}function Al({from:t,to:e,seed:n}){const r=ir(Qa(new Date))||new Date,a=ir(t)||r,s=ir(e)||a,l=[],c=Zu(n),d=Math.floor((Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate())-Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()))/864e5)+1;for(let h=0;h<d;h+=1){const p=Ru(a,h),m=Kt(p),v=Ju(`${c}:${m}`),y=v%1e3/1e3,b=.6+.4*Math.sin(h/6*Math.PI*.5),x=p.getUTCDay()===0||p.getUTCDay()===6?.65:1,P=18e3+Math.round(12e3*y),A=Math.max(0,Math.round(P*b*x)),L=Math.round(A*.46),T=Math.round(A*.34),E=Math.round(A*.14),D=Math.max(0,A-L-T-E),$={};if(A>0){const I=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],S=1+v%3;let j=A;for(let F=0;F<S;F++){const Z=I[(v+F)%I.length];if(F===S-1)$[Z]=j;else{const ee=Math.round(j*(.3+.4*((v+F*17)%10)/10));$[Z]=ee,j-=ee}}}l.push({day:m,total_tokens:A,billable_total_tokens:A,input_tokens:L,output_tokens:T,cached_input_tokens:E,reasoning_output_tokens:D,conversation_count:1+v%5,models:$})}return l}function AM({day:t,seed:e}){const n=ir(t)||ir(Qa(new Date))||new Date,r=Kt(n),a=Zu(e),s=Array.from({length:48},(c,d)=>{const h=Math.floor(d/2),p=d%2===0?0:30,m=Ju(`${a}:${r}:${h}:${p}`),v=m%1e3/1e3,y=(h+p/60)/24,b=.4+.6*Math.sin(y*Math.PI*2),x=900+Math.round(700*v),P=Math.max(0,Math.round(x*b)),A=Math.round(P*.46),L=Math.round(P*.34),T=Math.round(P*.14),E=Math.max(0,P-A-L-T),D={};if(P>0){const $=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],I=1+m%2;let S=P;for(let j=0;j<I;j++){const F=$[(m+j)%$.length];if(j===I-1)D[F]=S;else{const Z=Math.round(S*(.3+.4*((m+j*17)%10)/10));D[F]=Z,S-=Z}}}return{hour:`${r}T${String(h).padStart(2,"0")}:${String(p).padStart(2,"0")}:00`,total_tokens:P,billable_total_tokens:P,input_tokens:A,output_tokens:L,cached_input_tokens:T,reasoning_output_tokens:E,models:D}}),l=Math.max(0,Math.min(48,TM()));if(l>0){const c=Date.now(),d=s.map((m,v)=>{const y=Date.parse(m.hour);return Number.isFinite(y)&&y<=c?{index:v,ts:y}:null}).filter(Boolean),h=Math.max(0,d.length-l),p=d.slice(h);for(const m of p){const v=s[m.index];v&&(s[m.index]={...v,missing:!0})}}return s}function RM({months:t=24,to:e,seed:n}){const r=ir(e)||ir(Qa(new Date))||new Date,a=new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),1)),s=Zu(n),l=[];for(let c=t-1;c>=0;c-=1){const d=dC(a,-c),h=EM(d),p=Ju(`${s}:${h}`),m=p%1e3/1e3,v=.7+.3*Math.sin(l.length/6*Math.PI*.5),y=36e4+Math.round(2e5*m),b=Math.max(0,Math.round(y*v)),x=Math.round(b*.46),P=Math.round(b*.34),A=Math.round(b*.14),L=Math.max(0,b-x-P-A),T={};if(b>0){const E=["gpt-4o","claude-3.5-sonnet","gemini-1.5-pro","deepseek-coder"],D=1+p%3;let $=b;for(let I=0;I<D;I++){const S=E[(p+I)%E.length];if(I===D-1)T[S]=$;else{const j=Math.round($*(.3+.4*((p+I*17)%10)/10));T[S]=j,$-=j}}}l.push({month:h,total_tokens:b,billable_total_tokens:b,input_tokens:x,output_tokens:P,cached_input_tokens:A,reasoning_output_tokens:L,models:T})}return l}function c0(t){return t.reduce((e,n)=>(e.total_tokens+=Number(n.total_tokens||0),e.billable_total_tokens+=Number(n.billable_total_tokens||n.total_tokens||0),e.input_tokens+=Number(n.input_tokens||0),e.output_tokens+=Number(n.output_tokens||0),e.cached_input_tokens+=Number(n.cached_input_tokens||0),e.reasoning_output_tokens+=Number(n.reasoning_output_tokens||0),e.conversation_count+=Number(n.conversation_count||0),e),{total_tokens:0,billable_total_tokens:0,input_tokens:0,output_tokens:0,cached_input_tokens:0,reasoning_output_tokens:0,conversation_count:0})}function LM(t,e=1.75){const n=Number(t||0);return!Number.isFinite(n)||n<=0?"0.000000":(n*e/1e6).toFixed(6)}function ox(t,e){const n=Number.isFinite(e)?e:0;return{total_tokens:Math.max(0,Math.round(t.total_tokens*n)),billable_total_tokens:Math.max(0,Math.round((t.billable_total_tokens??t.total_tokens)*n)),input_tokens:Math.max(0,Math.round(t.input_tokens*n)),output_tokens:Math.max(0,Math.round(t.output_tokens*n)),cached_input_tokens:Math.max(0,Math.round(t.cached_input_tokens*n)),reasoning_output_tokens:Math.max(0,Math.round(t.reasoning_output_tokens*n))}}function c_(t){return{...t,total_cost_usd:LM(t.total_tokens)}}function IM({from:t,to:e,seed:n}={}){const r=Al({from:t,to:e,seed:n});return{from:t,to:e,data:r}}function DM({day:t,seed:e}={}){const n=ir(t)||new Date,r=Kt(n),a=AM({day:r,seed:e});return{day:r,data:a}}function MM({months:t=24,to:e,seed:n}={}){const r=ir(e)||ir(Qa(new Date))||new Date,a=Kt(r),s=RM({months:t,to:a,seed:n}),l=dC(new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),1)),-(t-1));return{from:Kt(l),to:a,months:t,data:s}}function NM({from:t,to:e,seed:n,rolling:r=!0}={}){const a=Al({from:t,to:e,seed:n}),s=c0(a),l=c_(s),c=r?OM({to:e,seed:n}):null;return{from:t,to:e,days:a.length,totals:l,...c?{rolling:c}:{}}}function OM({to:t,seed:e}={}){const n=ir(t)||ir(Qa(new Date))||new Date,r=Kt(n),a=Kt(Ru(n,-6)),s=Kt(Ru(n,-29)),l=Al({from:a,to:r,seed:e}),c=Al({from:s,to:r,seed:e});return{last_7d:lx({rows:l,from:a,to:r}),last_30d:lx({rows:c,from:s,to:r})}}function lx({rows:t,from:e,to:n}={}){const r=c0(t||[]),a=(t||[]).filter(l=>Number(l.billable_total_tokens??l.total_tokens)>0).length,s=a>0?Math.floor(r.billable_total_tokens/a):0;return{from:e,to:n,totals:{billable_total_tokens:r.billable_total_tokens,conversation_count:r.conversation_count},active_days:a,avg_per_active_day:s}}function jM({seed:t,limit:e=3}={}){const n=Zu(t),r=xM.map((a,s)=>{const c=12e4+Ju(`${n}:${a}`)%9e5,d=s%4*4200,h=Math.max(0,c+d),p=Math.max(0,Math.round(h*.96));return{project_key:a,project_ref:`https://github.com/${a}`,total_tokens:String(h),billable_total_tokens:String(p)}}).sort((a,s)=>Number(s.billable_total_tokens)-Number(a.billable_total_tokens)).slice(0,Math.max(1,Math.min(10,Math.floor(Number(e)||3))));return{generated_at:new Date().toISOString(),entries:r}}function zM(t){const e=ir(Qa(new Date))||new Date,n=String(t).trim().toLowerCase()||"week";if(n==="total")return{from:"1970-01-01",to:"9999-12-31"};if(n==="month"){const l=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),1)),c=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0));return{from:Kt(l),to:Kt(c)}}const r=e.getUTCDay(),a=Kt(Ru(e,-r)),s=Kt(Ru(e,-r+6));return{from:a,to:s}}function hC({seed:t,period:e,metric:n,limit:r=20,offset:a=0}={}){const s=Zu(t),l=Math.max(1,Math.min(100,Math.floor(Number(r)||20))),c=Math.max(0,Math.min(1e4,Math.floor(Number(a)||0))),d=String(n||"all").trim().toLowerCase()||"all",h=String(e||"week").trim().toLowerCase()||"week",p=h==="month"||h==="total"||h==="week"?h:"week",{from:m,to:v}=zM(p),y=250,b=y>0?Math.ceil(y/l):0,x=Math.floor(c/l)+1,P=Array.from({length:y},(I,S)=>{const j=S+1,F=`00000000-0000-0000-0000-${String(j).padStart(12,"0")}`,Z=sx[j%sx.length],ue=18e4+Ju(`${s}:${Z}:${j}`)%9e5,re=Math.max(0,ue+j*1200),ae=Math.floor(re*.28),te=Math.floor(re*.18),le=Math.floor(re*.1),H=Math.floor(re*.1),Q=Math.floor(re*.08),W=Math.floor(re*.03),N=Math.floor(re*.02),q=Math.floor(re*.04),pe=Math.floor(re*.03),ke=Math.max(0,re-ae-te-le-H-Q-W-N-q-pe),de=j%7!==0;return{id:j,user_id:F,is_public:de,is_me:!1,display_name:de?Z:"Anonymous",avatar_url:null,gpt_tokens:ae,claude_tokens:te,gemini_tokens:le,cursor_tokens:H,opencode_tokens:Q,openclaw_tokens:ke,hermes_tokens:W,kiro_tokens:N,copilot_tokens:q,kimi_tokens:pe,other_tokens:0,total_tokens:re}}),A=Math.max(0,Math.min(y-1,Math.floor(y*.8)));P[A]&&(P[A].is_me=!0);const L=d==="gpt"||d==="codex"?"gpt_tokens":d==="claude"?"claude_tokens":d==="gemini"?"gemini_tokens":d==="cursor"?"cursor_tokens":d==="opencode"?"opencode_tokens":d==="openclaw"?"openclaw_tokens":d==="hermes"?"hermes_tokens":d==="kiro"?"kiro_tokens":d==="copilot"?"copilot_tokens":d==="kimi"?"kimi_tokens":"total_tokens",T=P.slice().sort((I,S)=>Number(S[L])-Number(I[L])||I.id-S.id).map((I,S)=>({user_id:I.is_public?I.user_id:null,rank:S+1,is_me:!!I.is_me,display_name:I.display_name,avatar_url:I.avatar_url,gpt_tokens:String(I.gpt_tokens),claude_tokens:String(I.claude_tokens),gemini_tokens:String(I.gemini_tokens),cursor_tokens:String(I.cursor_tokens),opencode_tokens:String(I.opencode_tokens),openclaw_tokens:String(I.openclaw_tokens),hermes_tokens:String(I.hermes_tokens??0),kiro_tokens:String(I.kiro_tokens??0),copilot_tokens:String(I.copilot_tokens??0),kimi_tokens:String(I.kimi_tokens??0),other_tokens:String(I.other_tokens??0),total_tokens:String(I.total_tokens),is_public:!!I.is_public})),E=T.find(I=>I?.is_me)||null,D=E?{rank:E.rank,gpt_tokens:E.gpt_tokens,claude_tokens:E.claude_tokens,gemini_tokens:E.gemini_tokens,cursor_tokens:E.cursor_tokens,opencode_tokens:E.opencode_tokens,openclaw_tokens:E.openclaw_tokens,hermes_tokens:E.hermes_tokens,kiro_tokens:E.kiro_tokens,copilot_tokens:E.copilot_tokens,kimi_tokens:E.kimi_tokens,other_tokens:E.other_tokens,total_tokens:E.total_tokens}:{rank:null,gpt_tokens:"0",claude_tokens:"0",gemini_tokens:"0",cursor_tokens:"0",opencode_tokens:"0",openclaw_tokens:"0",hermes_tokens:"0",kiro_tokens:"0",copilot_tokens:"0",kimi_tokens:"0",other_tokens:"0",total_tokens:"0"},$=T.slice(c,c+l);return{period:p,metric:d,from:m,to:v,generated_at:new Date().toISOString(),page:x,limit:l,offset:c,total_entries:y,total_pages:b,entries:$,me:D}}function FM({weeks:t=52,to:e,weekStartsOn:n="sun",seed:r}={}){const a=cC({weeks:t,now:ir(e)||ir(Qa(new Date))||new Date,weekStartsOn:n}),s=Al({from:a.from,to:a.to,seed:r});return{...kM({dailyRows:s,weeks:t,to:a.to,weekStartsOn:n}),week_starts_on:n,active_days:s.filter(c=>Number(c.billable_total_tokens??c.total_tokens)>0).length,streak_days:wM({dailyRows:s,to:a.to})}}function UM({from:t,to:e,seed:n}={}){const r=Al({from:t,to:e,seed:n}),a=c0(r),l=[{source:"codex",weight:.7,models:[{model:"gpt-5.2-codex",model_id:"gpt-5.2-codex",weight:.2},{model:"unknown",model_id:"unknown",weight:.8}]},{source:"claude",weight:.2,models:[{model:"claude-3.5",model_id:"claude-3.5",weight:.3},{model:"unknown",model_id:"unknown",weight:.7}]},{source:"every-code",weight:.1,models:[{model:"unknown",model_id:"unknown",weight:1}]}].map(c=>{const d=ox(a,c.weight),h=c.models.map(p=>{const m=ox(d,p.weight);return{model:p.model,model_id:p.model_id||p.model,totals:c_(m)}});return{source:c.source,totals:c_(d),models:h}});return{from:t,to:e,days:r.length,sources:l,pricing:{model:"mock",pricing_mode:"add",source:"mock",effective_from:Qa(new Date),rates_per_million_usd:{input:"1.750000",cached_input:"0.175000",output:"14.000000",reasoning_output:"14.000000"}}}}function $M({from:t,to:e,source:n="claude"}={}){if(n==="codex")return{from:t,to:e,source:"codex",scope:"supported",totals:{input_tokens:142e4,cached_input_tokens:588e4,cache_creation_input_tokens:92e4,output_tokens:256e4,reasoning_output_tokens:61e4,total_tokens:1078e4},session_count:188,message_count:5436,tool_calls_breakdown:{categories:[{name:"Execution",calls:742,totals:{input_tokens:32e4,cached_input_tokens:104e4,cache_creation_input_tokens:11e4,output_tokens:46e4,reasoning_output_tokens:12e4,total_tokens:193e4},tools:[{name:"exec_command",calls:510,totals:{input_tokens:25e4,cached_input_tokens:82e4,cache_creation_input_tokens:8e4,output_tokens:37e4,reasoning_output_tokens:9e4,total_tokens:152e4}},{name:"write_stdin",calls:232,totals:{input_tokens:7e4,cached_input_tokens:22e4,cache_creation_input_tokens:3e4,output_tokens:9e4,reasoning_output_tokens:3e4,total_tokens:41e4}}]},{name:"Browser",calls:406,totals:{input_tokens:21e4,cached_input_tokens:88e4,cache_creation_input_tokens:9e4,output_tokens:42e4,reasoning_output_tokens:1e5,total_tokens:17e5},tools:[{name:"take_snapshot",calls:180,totals:{input_tokens:1e5,cached_input_tokens:4e5,cache_creation_input_tokens:4e4,output_tokens:18e4,reasoning_output_tokens:4e4,total_tokens:76e4}},{name:"click",calls:126,totals:{input_tokens:6e4,cached_input_tokens:25e4,cache_creation_input_tokens:3e4,output_tokens:12e4,reasoning_output_tokens:35e3,total_tokens:495e3}},{name:"evaluate_script",calls:100,totals:{input_tokens:5e4,cached_input_tokens:23e4,cache_creation_input_tokens:2e4,output_tokens:12e4,reasoning_output_tokens:25e3,total_tokens:445e3}}]}],tools_total:363e4,privacy:{includes_inputs:!1,note:"Aggregated tool names only; no tool arguments or outputs are included."}},exec_command_breakdown:{by_type:[{name:"test",calls:168,failures:14,duration_ms:482e3,max_duration_ms:18400,output_chars:45e4,output_lines:8600,totals:{input_tokens:9e4,cached_input_tokens:32e4,output_tokens:16e4,reasoning_output_tokens:42e3,total_tokens:612e3}},{name:"build",calls:116,failures:9,duration_ms:392e3,max_duration_ms:22100,output_chars:31e4,output_lines:5200,totals:{input_tokens:7e4,cached_input_tokens:24e4,output_tokens:13e4,reasoning_output_tokens:3e4,total_tokens:47e4}}],by_exit:[{name:"completed:0",calls:438,failures:0,duration_ms:104e4,max_duration_ms:22100,output_chars:83e4,output_lines:13100,totals:{input_tokens:22e4,cached_input_tokens:78e4,output_tokens:35e4,reasoning_output_tokens:82e3,total_tokens:1432e3}},{name:"completed:1",calls:72,failures:72,duration_ms:155e3,max_duration_ms:11800,output_chars:12e4,output_lines:2300,totals:{input_tokens:3e4,cached_input_tokens:11e4,output_tokens:55e3,reasoning_output_tokens:8e3,total_tokens:195e3}}]}};if(n!=="claude")return{from:t,to:e,source:n,scope:"unsupported",totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},categories:["system_prefix","conversation_history","user_input","tool_calls","subagents","reasoning","assistant_response"].map(l=>({key:l,totals:{input_tokens:0,cached_input_tokens:0,cache_creation_input_tokens:0,output_tokens:0,reasoning_output_tokens:0,total_tokens:0},percent:0})),session_count:0,message_count:0};const r=[{key:"system_prefix",total:12896539},{key:"conversation_history",total:320207200},{key:"user_input",total:998025},{key:"tool_calls",total:4808739},{key:"subagents",total:1022828},{key:"reasoning",total:11073118},{key:"assistant_response",total:1289174}],a=r.reduce((l,c)=>l+c.total,0),s=r.map(({key:l,total:c})=>({key:l,totals:{input_tokens:l==="user_input"?c:0,cached_input_tokens:l==="conversation_history"?Math.round(c*.95):0,cache_creation_input_tokens:l==="system_prefix"?c:l==="conversation_history"?Math.round(c*.05):0,output_tokens:["tool_calls","subagents","reasoning","assistant_response"].includes(l)?c:0,reasoning_output_tokens:l==="reasoning"?c:0,total_tokens:c},percent:Number((c/a*100).toFixed(2))}));return{from:t,to:e,source:"claude",scope:"supported",totals:{input_tokens:998025,cached_input_tokens:Math.round(320207200*.95),cache_creation_input_tokens:12896539+Math.round(320207200*.05),output_tokens:18193859,reasoning_output_tokens:11073118,total_tokens:a},categories:s,session_count:312,message_count:12046}}let Xh=null;function pC(){Xh=null}async function BM(t=fetch){if(Xh)return Xh;const e=await t("/api/local-auth",{method:"GET",headers:{Accept:"application/json"},cache:"no-store"});if(!e.ok)throw new Error(`Local auth request failed with HTTP ${e.status}`);const n=await e.json().catch(()=>null),r=typeof n?.token=="string"?n.token.trim():"";if(!r)throw new Error("Local auth token missing from response");return Xh=r,r}async function Xu(t=fetch){return{"x-tokentracker-local-auth":await BM(t)}}const VM=Object.freeze(Object.defineProperty({__proto__:null,clearLocalApiAuthToken:pC,getLocalApiAuthHeaders:Xu},Symbol.toStringTag,{value:"Module"})),ea={usageSummary:"tokentracker-usage-summary",usageDaily:"tokentracker-usage-daily",usageHourly:"tokentracker-usage-hourly",usageMonthly:"tokentracker-usage-monthly",usageHeatmap:"tokentracker-usage-heatmap",usageModelBreakdown:"tokentracker-usage-model-breakdown",usageCategoryBreakdown:"tokentracker-usage-category-breakdown",projectUsageSummary:"tokentracker-project-usage-summary",userStatus:"tokentracker-user-status",localSync:"tokentracker-local-sync",usageLimits:"tokentracker-usage-limits",outcomes:"tokentracker-outcomes"},HM={"tokentracker-usage-summary":"tokentracker-account-summary","tokentracker-usage-daily":"tokentracker-account-daily","tokentracker-usage-hourly":"tokentracker-account-hourly","tokentracker-usage-monthly":"tokentracker-account-monthly","tokentracker-usage-heatmap":"tokentracker-account-heatmap","tokentracker-usage-model-breakdown":"tokentracker-account-model-breakdown"};function WM(){return typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")}async function wa(t,e,n){const r=n?.accessToken,a=HM[t];if(!WM()&&r&&a){const h=Ya().replace(/\/$/,""),p=new URL(`${h}/functions/${a}`);if(e)for(const[b,x]of Object.entries(e))x!=null&&x!==""&&p.searchParams.set(b,String(x));const m={Accept:"application/json"},v=Hl();v&&(m.apikey=v),Ef(r)&&(m.Authorization=`Bearer ${r}`);const y=await fetch(p.toString(),{headers:m,cache:"no-store"});if(!y.ok){const b=new Error(`Request failed with HTTP ${y.status}`);throw b.status=y.status,b}return y.json()}const s=new URL(`/functions/${t}`,window.location.origin);if(e)for(const[h,p]of Object.entries(e))p!=null&&p!==""&&s.searchParams.set(h,String(p));const{accessToken:l,...c}=n||{},d=await fetch(s.toString(),{headers:{Accept:"application/json"},cache:"no-store",...c});if(!d.ok){const h=new Error(`Request failed with HTTP ${d.status}`);throw h.status=d.status,h}return d.json()}function lr({timeZone:t,tzOffsetMinutes:e}={}){const n={},r=typeof t=="string"?t.trim():"";return r&&(n.tz=r),Number.isFinite(e)&&(n.tz_offset_minutes=String(Math.trunc(e))),n}function yr({source:t,model:e,device:n}={}){const r={},a=typeof t=="string"?t.trim().toLowerCase():"";a&&(r.source=a);const s=typeof e=="string"?e.trim():"";s&&(r.model=s);const l=typeof n=="string"?n.trim():"";return l&&(r.device_id=l),r}async function CK({from:t,to:e,source:n,model:r,device:a,timeZone:s,tzOffsetMinutes:l,rolling:c=!1,accessToken:d}={}){if($n())return NM({from:t,to:e,seed:d,rolling:c});const h=lr({timeZone:s,tzOffsetMinutes:l}),p=yr({source:n,model:r,device:a}),m=c?{rolling:"1"}:{};return wa(ea.usageSummary,{from:t,to:e,...p,...h,...m},{accessToken:d})}async function TK({from:t,to:e,source:n,limit:r,timeZone:a,tzOffsetMinutes:s,accessToken:l}={}){if($n())return jM({seed:l,limit:r});const c=lr({timeZone:a,tzOffsetMinutes:s}),h={...yr({source:n}),...c};return t&&(h.from=t),e&&(h.to=e),r!=null&&(h.limit=String(r)),wa(ea.projectUsageSummary,h)}async function Ai(t,e={}){const n=Ya();if(!n)throw new Error("InsForge base URL not configured");const r=n.replace(/\/$/,""),a=new URL(`${r}/functions/${t}`);if(e.params)for(const[d,h]of Object.entries(e.params))h!=null&&h!==""&&a.searchParams.set(d,String(h));const s={Accept:"application/json","Content-Type":"application/json"},l=Hl();l&&(s.apikey=l),e.accessToken&&Ef(e.accessToken)&&(s.Authorization=`Bearer ${e.accessToken}`);const c=await fetch(a.toString(),{method:e.method||"GET",headers:s,...e.body!=null?{body:JSON.stringify(e.body)}:{}});if(!c.ok){const d=new Error(`Request failed with HTTP ${c.status}`);throw d.status=c.status,d}return c.json()}async function GM({accessToken:t,userId:e,period:n,metric:r,limit:a,offset:s}={}){return $n()?hC({seed:t||e,period:n,metric:r,limit:a,offset:s}):Ai("tokentracker-leaderboard",{params:{period:n,limit:a,offset:s,user_id:e}})}async function EK(){return $n()?{top_models:[]}:Ai("tokentracker-community-models",{})}async function cx({accessToken:t}={}){return Ai("tokentracker-public-visibility",{accessToken:t,method:"GET"})}async function AK({accessToken:t,enabled:e,anonymous:n,display_name:r,github_url:a,show_github_url:s}={}){const l={};return e!==void 0&&(l.enabled=!!e),n!==void 0&&(l.anonymous=!!n),r!==void 0&&(l.display_name=String(r)),a!==void 0&&(l.github_url=a===null?null:String(a)),s!==void 0&&(l.show_github_url=!!s),Ai("tokentracker-public-visibility",{accessToken:t,method:"POST",body:l})}async function RK({accessToken:t,period:e,source:n}={}){const r={};return e&&(r.period=e),typeof n=="string"&&n.trim()&&(r.source=n.trim()),Ai("tokentracker-leaderboard-refresh",{accessToken:t,method:"POST",body:r})}async function LK({accessToken:t,userId:e,period:n}={}){if($n()){const r=hC({seed:t,period:n,metric:"all",limit:250,offset:0}),a=Array.isArray(r?.entries)?r.entries:[],s=a.find(p=>p?.user_id===e)||a[0]||null,l=Number(s?.total_tokens)||0,c=new Date,d=Array.from({length:365}).map((p,m)=>{const v=new Date(c);return v.setUTCDate(v.getUTCDate()-(364-m)),{date:v.toISOString().slice(0,10),total_tokens:m%7===0?Math.floor(l/365):0}}),h=d.slice(-7);return{user:{user_id:e,display_name:s?.display_name||"Mock User",avatar_url:s?.avatar_url||null,github_url:s?.github_url||null,is_anonymous:!1,rank:s?.rank??null},period:{kind:n||"week",from:r?.from??null,to:r?.to??null,generated_at:r?.generated_at??new Date().toISOString()},totals:{total_tokens:l,estimated_cost_usd:Number(s?.estimated_cost_usd)||0,active_days:53,avg_per_day_usd:0},streak:{current_days:3,longest_days:12},best_day:l?{date:c.toISOString().slice(0,10),total_tokens:Math.floor(l/30),estimated_cost_usd:0}:null,models:{count:5,favorite:{model_name:"claude-opus-4-7",total_tokens:Math.floor(l/2)}},by_provider:[],heatmap:d,daily_trend:h}}return Ai("tokentracker-leaderboard-profile",{accessToken:t,params:{user_id:e,period:n}})}function fC(t){if(!t)return 0;let e=0;for(let n=0;n<t.length;n++)e=t.charCodeAt(n)+((e<<5)-e);return Math.abs(e%165)+24}async function IK({userId:t,anonId:e,accessToken:n}={}){return $n()?{count:fC(t),liked:!1}:Ai("tokentracker-profile-likes",{accessToken:n,params:{target_user_id:t,anon_id:e}})}async function DK({userId:t,action:e,anonId:n,accessToken:r}={}){if($n()){const a=e==="like";return{count:Math.max(0,fC(t)+(a?1:0)),liked:a}}return Ai("tokentracker-profile-likes",{accessToken:r,method:"POST",body:{target_user_id:t,action:e,anon_id:n}})}async function MK(t={}){if($n()){const e=new Date().toISOString();return{user_id:"local-user",created_at:e,pro:{active:!1,sources:[],expires_at:null,partial:!1,as_of:e},subscriptions:{partial:!1,as_of:e,items:[]},install:{partial:!1,as_of:e,has_active_device_token:!1,has_active_device:!1,active_device_tokens:0,active_devices:0,latest_token_activity_at:null,latest_device_seen_at:null}}}return wa(ea.userStatus)}async function NK({signal:t}={}){const e=await Xu(),n=await fetch(`/functions/${ea.localSync}`,{method:"POST",headers:{Accept:"application/json",...e},cache:"no-store",signal:t}),r=await n.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${n.status}`}));if(!n.ok||r?.ok===!1){const a=r?.error||r?.message||`Local sync request failed with HTTP ${n.status}`,s=new Error(a);throw s.status=n.status,s}return r}async function OK({from:t,to:e,source:n,device:r,timeZone:a,tzOffsetMinutes:s,accessToken:l}={}){if($n())return UM({from:t,to:e,seed:l});const c=lr({timeZone:a,tzOffsetMinutes:s}),d=yr({source:n,device:r});return wa(ea.usageModelBreakdown,{from:t,to:e,...d,...c},{accessToken:l})}async function jK({from:t,to:e,source:n,device:r,accessToken:a}={}){if($n())return{available:!1,by_model:[],by_tool:[],totals:null};const s=yr({source:n,device:r});return wa(ea.outcomes,{from:t,to:e,...s},{accessToken:a})}async function zK({from:t,to:e,source:n="claude",timeZone:r,tzOffsetMinutes:a}={}){if($n())return $M({from:t,to:e,source:n});const s=lr({timeZone:r,tzOffsetMinutes:a});return wa(ea.usageCategoryBreakdown,{from:t,to:e,source:n,...s})}async function FK({from:t,to:e,source:n,model:r,device:a,timeZone:s,tzOffsetMinutes:l,accessToken:c}={}){if($n())return IM({from:t,to:e,seed:c});const d=lr({timeZone:s,tzOffsetMinutes:l}),h=yr({source:n,model:r,device:a});return wa(ea.usageDaily,{from:t,to:e,...h,...d},{accessToken:c})}async function UK({day:t,source:e,model:n,device:r,timeZone:a,tzOffsetMinutes:s,accessToken:l}={}){if($n())return DM({day:t,seed:l});const c=lr({timeZone:a,tzOffsetMinutes:s}),d=yr({source:e,model:n,device:r}),h=t?{day:t,...d,...c}:{...d,...c};return wa(ea.usageHourly,h,{accessToken:l})}async function $K({months:t,to:e,source:n,model:r,device:a,timeZone:s,tzOffsetMinutes:l,accessToken:c}={}){if($n())return MM({months:t,to:e,seed:c});const d=lr({timeZone:s,tzOffsetMinutes:l}),h=yr({source:n,model:r,device:a});return wa(ea.usageMonthly,{...t?{months:String(t)}:{},...e?{to:e}:{},...h,...d},{accessToken:c})}async function BK(t={}){const e=t?.refresh?{refresh:"1"}:void 0;return wa(ea.usageLimits,e)}async function VK({weeks:t,to:e,weekStartsOn:n,source:r,model:a,device:s,timeZone:l,tzOffsetMinutes:c,accessToken:d}={}){if($n())return FM({weeks:t,to:e,weekStartsOn:n,seed:d});const h=lr({timeZone:l,tzOffsetMinutes:c}),p=yr({source:r,model:a,device:s});return wa(ea.usageHeatmap,{weeks:String(t),to:e,week_starts_on:n,...p,...h},{accessToken:d})}const vo={summary:"tokentracker-account-summary",daily:"tokentracker-account-daily",hourly:"tokentracker-account-hourly",monthly:"tokentracker-account-monthly",heatmap:"tokentracker-account-heatmap",modelBreakdown:"tokentracker-account-model-breakdown",devices:"tokentracker-account-devices"};async function _o(t,e,n){if(!n||!Ef(n)){const h=new Error("Account view requires a signed-in user");throw h.status=401,h}const r=Ya();if(!r){const h=new Error("InsForge base URL not configured");throw h.status=0,h}const a=r.replace(/\/$/,""),s=new URL(`${a}/functions/${t}`);if(e)for(const[h,p]of Object.entries(e))p!=null&&p!==""&&s.searchParams.set(h,String(p));const l={Accept:"application/json",Authorization:`Bearer ${n}`},c=Hl();c&&(l.apikey=c);const d=await fetch(s.toString(),{method:"GET",headers:l,cache:"no-store"});if(!d.ok){const h=new Error(`Request failed with HTTP ${d.status}`);throw h.status=d.status,h}return d.json()}async function HK({from:t,to:e,source:n,model:r,device:a,timeZone:s,tzOffsetMinutes:l,rolling:c=!1,accessToken:d}={}){const h=lr({timeZone:s,tzOffsetMinutes:l}),p=yr({source:n,model:r,device:a}),m=c?{rolling:"1"}:{};return _o(vo.summary,{from:t,to:e,...p,...h,...m},d)}async function WK({from:t,to:e,source:n,model:r,device:a,timeZone:s,tzOffsetMinutes:l,accessToken:c}={}){const d=lr({timeZone:s,tzOffsetMinutes:l}),h=yr({source:n,model:r,device:a});return _o(vo.daily,{from:t,to:e,...h,...d},c)}async function GK({day:t,source:e,model:n,device:r,timeZone:a,tzOffsetMinutes:s,accessToken:l}={}){const c=lr({timeZone:a,tzOffsetMinutes:s}),d=yr({source:e,model:n,device:r}),h=t?{day:t,...d,...c}:{...d,...c};return _o(vo.hourly,h,l)}async function qK({months:t,to:e,source:n,model:r,device:a,timeZone:s,tzOffsetMinutes:l,accessToken:c}={}){const d=lr({timeZone:s,tzOffsetMinutes:l}),h=yr({source:n,model:r,device:a});return _o(vo.monthly,{...t?{months:String(t)}:{},...e?{to:e}:{},...h,...d},c)}async function KK({weeks:t,to:e,weekStartsOn:n,source:r,model:a,device:s,timeZone:l,tzOffsetMinutes:c,accessToken:d}={}){const h=lr({timeZone:l,tzOffsetMinutes:c}),p=yr({source:r,model:a,device:s});return _o(vo.heatmap,{weeks:String(t),to:e,week_starts_on:n,...p,...h},d)}async function YK({from:t,to:e,source:n,device:r,timeZone:a,tzOffsetMinutes:s,accessToken:l}={}){const c=lr({timeZone:a,tzOffsetMinutes:s}),d=yr({source:n,device:r});return _o(vo.modelBreakdown,{from:t,to:e,...d,...c},l)}async function ZK({from:t,to:e,timeZone:n,tzOffsetMinutes:r,accessToken:a}={}){const s=lr({timeZone:n,tzOffsetMinutes:r});return _o(vo.devices,{from:t,to:e,...s},a)}async function JK({deviceId:t,name:e,accessToken:n}={}){if(!n||!Ef(n)){const r=new Error("Account view requires a signed-in user");throw r.status=401,r}return Ai("tokentracker-device-rename",{accessToken:n,method:"POST",body:{device_id:t,device_name:e}})}const ux="tokentracker_native_app";let mC=null;const u_=new Set;typeof window<"u"&&window.addEventListener("native:systemAppearanceChanged",t=>{const e=t?.detail?.isDark;if(typeof e=="boolean"){mC=e;try{const n=document.documentElement;e?n.classList.add("dark"):n.classList.remove("dark")}catch{}u_.forEach(n=>{try{n(e)}catch{}})}});function dx(){return mC}function qM(t){return u_.add(t),()=>u_.delete(t)}function Rf(){if(typeof window>"u")return!1;try{if(new URLSearchParams(window.location.search).get("app")==="1"){try{window.localStorage.setItem(ux,"1")}catch{}return!0}return window.localStorage.getItem(ux)==="1"}catch{return!1}}function Hr(){return typeof window>"u"?!1:!!window.webkit?.messageHandlers?.nativeBridge}function Lf(){return typeof window>"u"?!1:!!window.chrome?.webview&&Rf()}function gC(){return typeof window>"u"?null:window.webkit?.messageHandlers?.nativeBridge??null}function XK(){return!!gC()}function Qu(t){const e=gC();if(!e)return!1;try{return e.postMessage(t),!0}catch(n){return console.warn("[tokentracker] nativeBridge post failed:",n),!1}}function QK(){return Qu({type:"getSettings"})}function hu(t,e){return Qu({type:"setSetting",key:t,value:e})}function eY(t){return Qu({type:"action",name:t})}function KM(){return Qu({type:"getSystemAppearance"})}function YM(t,e){if(!Hr())return;Qu({type:"setChromeAppearance",isDark:t==="dark",theme:e??"system"})}function tY(t){if(typeof window>"u")return()=>{};const e=n=>{n&&n.detail&&typeof n.detail=="object"&&t(n.detail)};return window.addEventListener("native:settings",e),()=>window.removeEventListener("native:settings",e)}function nY(){return typeof window>"u"?!1:!!(window.webkit?.messageHandlers?.nativeBridge||window.chrome?.webview)}function vC(t){if(typeof window>"u")return!1;const e=window.webkit?.messageHandlers?.nativeBridge;if(e)try{return e.postMessage(t),!0}catch{return!1}if(window.chrome?.webview)try{return window.chrome.webview.postMessage(JSON.stringify(t)),!0}catch{return!1}return!1}function rY(){return vC({type:"getPetSettings"})}function aY(t,e){return vC({type:"setPetSetting",key:t,value:e})}function iY(t){if(typeof window>"u")return()=>{};const e=n=>{n?.detail&&typeof n.detail=="object"&&t(n.detail)};return window.addEventListener("native:petSettings",e),()=>window.removeEventListener("native:petSettings",e)}const _C=k.createContext(null);function ZM(t){if(!t||typeof t!="object")return"";const e=t.user_metadata&&typeof t.user_metadata=="object"?t.user_metadata:{},n=t.profile&&typeof t.profile=="object"?t.profile:{},r=e.full_name||e.name||n.name||e.user_name||e.preferred_username;return typeof r=="string"&&r.trim()?r.trim():typeof t.email=="string"&&t.email.includes("@")?t.email.split("@")[0].trim()||t.email.trim():typeof t.email=="string"?t.email.trim():""}function hx(t){if(!t||typeof t!="object")return null;const e=t,n=e.session&&typeof e.session=="object"?e.session:null,r=typeof e.accessToken=="string"&&e.accessToken||typeof e.access_token=="string"&&e.access_token||n&&typeof n.accessToken=="string"&&n.accessToken||n&&typeof n.access_token=="string"&&n.access_token||null;return r&&r.length>0?r:null}async function Ug(t,e={}){if(!t)return null;const n=Math.max(0,Math.floor(Number(e.skewMs)||6e4)),r=t.tokenManager,a=()=>r?.getAccessToken?.()??r?.getSession?.()?.accessToken??null;let s=a();if(!s||iM(s,n)){const{data:l}=await t.auth.refreshSession();if(s=a()??hx(l)??null,!s&&typeof t.auth.getCurrentUser=="function")try{await t.auth.getCurrentUser(),s=a()??hx(l)??null}catch{}}return s||null}function JM({children:t}){const[e,n]=k.useState(null),[r,a]=k.useState(null),[s,l]=k.useState(!0);k.useEffect(()=>{if(!l_()){n(null),a(null),l(!1);return}n(ZD())},[]),k.useEffect(()=>{if(!e)return;let j=!0;return l(!0),(async()=>{try{let{data:F,error:Z}=await e.auth.getCurrentUser();if(!j)return;if(!Z&&!F?.user){if(await new Promise(ue=>setTimeout(ue,150)),!j)return;const ee=await e.auth.getCurrentUser();F=ee.data,Z=ee.error}if(Z){a(null);return}a(F?.user??null)}catch{j&&a(null)}finally{j&&l(!1)}})(),()=>{j=!1}},[e]);const c=k.useCallback(async()=>{if(e)try{let{data:j,error:F}=await e.auth.getCurrentUser();if(!F&&!j?.user){await new Promise(ee=>setTimeout(ee,150));const Z=await e.auth.getCurrentUser();j=Z.data,F=Z.error}if(F){a(null);return}a(j?.user??null)}catch{a(null)}},[e]),d=k.useCallback(async(j,F)=>{if(!e)return{error:new Error("InsForge client not configured")};const Z=typeof window<"u"&&window.webkit?.messageHandlers?.nativeOAuth;if(Z){const re=Lf()?`${window.location.origin}/auth/callback`:typeof F=="string"&&F.trim()?F.trim():`${window.location.origin}/auth/callback`,ae=await e.auth.signInWithOAuth({provider:j,redirectTo:re,skipBrowserRedirect:!0});if(ae.data?.url){try{const te=await Xu();await fetch("/api/auth-bridge/verifier",{method:"PUT",headers:{"Content-Type":"application/json",...te},body:JSON.stringify({native:!0})})}catch{}Z.postMessage(ae.data.url)}return ae}const ee=typeof F=="string"&&F.trim()?F.trim():typeof window<"u"?`${window.location.origin}/dashboard`:void 0;return await e.auth.signInWithOAuth({provider:j,redirectTo:ee})},[e]),h=k.useCallback(async j=>{if(!e)return{data:null,error:new Error("InsForge client not configured")};const{data:F,error:Z}=await e.auth.signInWithPassword(j);return F?.user&&a(F.user),{data:F,error:Z}},[e]),p=k.useCallback(async j=>{if(!e)return{data:null,error:new Error("InsForge client not configured")};const{data:F,error:Z}=await e.auth.signUp(j);return F?.user&&F?.accessToken&&a(F.user),{data:F,error:Z}},[e]),m=k.useCallback(async j=>e?e.auth.sendResetPasswordEmail(j):{data:null,error:new Error("InsForge client not configured")},[e]),v=k.useCallback(async j=>e?e.auth.exchangeResetPasswordToken(j):{data:null,error:new Error("InsForge client not configured")},[e]),y=k.useCallback(async j=>e?e.auth.resetPassword(j):{data:null,error:new Error("InsForge client not configured")},[e]),b=k.useCallback(async()=>e?e.auth.getPublicAuthConfig():{data:null,error:new Error("InsForge client not configured")},[e]),x=k.useCallback(async()=>{e&&(await e.auth.signOut(),J3(),eM(!1),pC(),a(null))},[e]),P=k.useCallback(async()=>Ug(e),[e]),[A,L]=k.useState(null),[T,E]=k.useState(!1),D=k.useMemo(()=>ZM(r),[r]);k.useEffect(()=>{if(!r||!e){L(null),E(!1);return}let j=!0;return(async()=>{try{const F=await Ug(e);if(!j||!F){j&&E(!0);return}const Z=await cx({accessToken:F});j&&Z?.display_name&&L(Z.display_name)}catch{}j&&E(!0)})(),()=>{j=!1}},[r,e]);const $=T?A||D:"",I=k.useCallback(async()=>{if(e)try{const j=await Ug(e);if(!j)return;const F=await cx({accessToken:j});F?.display_name&&L(F.display_name)}catch{}},[e]),S=k.useMemo(()=>!l_()||!e?{enabled:!1,client:null,user:null,signedIn:!1,loading:!1,displayName:"",refreshUser:async()=>{},refreshDisplayName:async()=>{},signInWithOAuth:async()=>({error:new Error("InsForge not configured")}),signInWithPassword:async()=>({data:null,error:new Error("InsForge not configured")}),signUp:async()=>({data:null,error:new Error("InsForge not configured")}),sendResetPasswordEmail:async()=>({data:null,error:new Error("InsForge not configured")}),exchangeResetPasswordToken:async()=>({data:null,error:new Error("InsForge not configured")}),resetPassword:async()=>({data:null,error:new Error("InsForge not configured")}),getPublicAuthConfig:async()=>({data:null,error:new Error("InsForge not configured")}),signOut:async()=>{},getAccessToken:async()=>null}:{enabled:!0,client:e,user:r,signedIn:!!r,loading:s,displayName:$,refreshUser:c,refreshDisplayName:I,signInWithOAuth:d,signInWithPassword:h,signUp:p,sendResetPasswordEmail:m,exchangeResetPasswordToken:v,resetPassword:y,getPublicAuthConfig:b,signOut:x,getAccessToken:P},[e,r,s,$,c,I,d,h,p,m,v,y,b,x,P]);return R.jsx(_C.Provider,{value:S,children:t})}function yo(){return k.useContext(_C)}const yC=k.createContext(null),px="tt.cloudSyncChanged";function XM({children:t}){const e=yo(),n=!!e?.signedIn,r=!!e?.enabled,a=!!e?.loading,[s,l]=k.useState(()=>Cp()),[c,d]=k.useState(()=>Tp()),[h,p]=k.useState(0);k.useEffect(()=>{l(Cp()),tM()},[]),k.useEffect(()=>{if(typeof window>"u")return;const P=()=>{const A=Tp();d(L=>L===A?L:A)};return window.addEventListener(px,P),window.addEventListener("storage",P),()=>{window.removeEventListener(px,P),window.removeEventListener("storage",P)}},[]);const m=k.useMemo(()=>!r||!n?!1:s?c:!0,[r,n,s,c]),v=Pl.useRef(m);k.useEffect(()=>{v.current!==m&&(v.current=m,p(P=>P+1))},[m]);const b=a&&(r&&(!s||c)),x=k.useMemo(()=>({accountView:m,revision:h,localHost:s,resolving:b}),[m,h,s,b]);return R.jsx(yC.Provider,{value:x,children:t})}function sY(){const t=k.useContext(yC);return t||{accountView:!1,revision:0,localHost:!0,resolving:!1}}const QM=`key,module,page,component,slot,text,notes,status
43
- header.auth.sign_in_aria,shared,*,InsforgeUserHeaderControls,sign_in_aria,"Sign in",,active
44
- login.back_home,shared,LoginPage,LoginPage,back_home,"Back to home",,active
45
- login.cloud_only,shared,LoginPage,LoginPage,cloud_only,"Cloud sign-in is not configured. Use the local dashboard on localhost.",,active
46
- login.title,shared,LoginPage,LoginPage,title,"Sign in",,active
47
- login.subtitle,shared,LoginPage,LoginPage,subtitle,"Choose email or a connected account.",,active
48
- login.dismiss,shared,LoginPage,LoginPage,dismiss,"Dismiss",,active
49
- login.verify_email_success,shared,LoginPage,LoginPage,verify_ok,"Email verified. You can sign in below.",,active
50
- login.verify_email_pending,shared,LoginPage,LoginPage,verify_pending,"Check your email to verify your account, then sign in.",,active
51
- login.oauth.continue,shared,LoginPage,LoginPage,oauth_continue,"Continue with {{provider}}",,active
52
- login.divider,shared,LoginPage,LoginPage,divider,"Or",,active
53
- login.tab.sign_in,shared,LoginPage,LoginPage,tab_sign_in,"Sign in",,active
54
- login.tab.sign_up,shared,LoginPage,LoginPage,tab_sign_up,"Create account",,active
55
- login.field.name,shared,LoginPage,LoginPage,field_name,"Display name",,active
56
- login.field.name_placeholder,shared,LoginPage,LoginPage,name_placeholder,"Optional",,active
57
- login.field.email,shared,LoginPage,LoginPage,field_email,"Email",,active
58
- login.field.password,shared,LoginPage,LoginPage,field_password,"Password",,active
59
- login.forgot_password,shared,LoginPage,LoginPage,forgot_password,"Forgot password?",,active
60
- login.password_hint,shared,LoginPage,LoginPage,pw_hint,"At least {{min}} characters.",,active
61
- login.submit.sign_in,shared,LoginPage,LoginPage,submit_sign_in,"Sign in with email",,active
62
- login.submit.sign_up,shared,LoginPage,LoginPage,submit_sign_up,"Create account",,active
63
- reset_password.back_to_sign_in,shared,ResetPasswordPage,ResetPasswordPage,back_to_sign_in,"Back to sign in",,active
64
- reset_password.title,shared,ResetPasswordPage,ResetPasswordPage,title,"Reset password",,active
65
- reset_password.subtitle,shared,ResetPasswordPage,ResetPasswordPage,subtitle,"Enter your email to receive a reset link.",,active
66
- reset_password.request.submit,shared,ResetPasswordPage,ResetPasswordPage,request_submit,"Send reset link",,active
67
- reset_password.request.sent,shared,ResetPasswordPage,ResetPasswordPage,request_sent,"Check email for reset link & code.",,active
68
- reset_password.field.code,shared,ResetPasswordPage,ResetPasswordPage,field_code,"Reset code",,active
69
- reset_password.field.new_password,shared,ResetPasswordPage,ResetPasswordPage,field_new_password,"New password",,active
70
- reset_password.field.confirm_password,shared,ResetPasswordPage,ResetPasswordPage,field_confirm_password,"Confirm password",,active
71
- reset_password.reset.submit,shared,ResetPasswordPage,ResetPasswordPage,reset_submit,"Reset password",,active
72
- reset_password.error.password_mismatch,shared,ResetPasswordPage,ResetPasswordPage,error_password_mismatch,"Passwords do not match.",,active
73
- reset_password.error.missing_token,shared,ResetPasswordPage,ResetPasswordPage,error_missing_token,"Reset token is missing. Request a new reset link.",,active
74
- reset_password.success,shared,ResetPasswordPage,ResetPasswordPage,success,"Password updated. You can sign in with the new password.",,active
75
- reset_password.success_cta,shared,ResetPasswordPage,ResetPasswordPage,success_cta,"Return to sign in",,active
76
- login_modal.subtitle,shared,*,LoginModal,subtitle,"Sign in to join the leaderboard",,active
77
- login_modal.continue_email,shared,*,LoginModal,continue_email,"Continue with Email",,active
78
- login_modal.divider_email,shared,*,LoginModal,divider_email,"email",,active
79
- shared.placeholder.short,shared,*,*,placeholder_short,"--",,active
80
- shared.unit.percent,shared,*,*,unit_percent,"%",,active
81
- shared.unit.thousand_abbrev,shared,*,*,unit_thousand_abbrev,"K",,active
82
- shared.unit.million_abbrev,shared,*,*,unit_million_abbrev,"M",,active
83
- shared.unit.billion_abbrev,shared,*,*,unit_billion_abbrev,"B",,active
84
- shared.data_source,shared,*,*,label,"Data source: {{source}}",,active
85
- shared.error.prefix,shared,*,*,label,"Error: {{error}}",,active
86
- shared.status.unsynced,shared,*,*,status,"—",,active
87
- error.boundary.title,shared,*,ErrorBoundary,title,"Something went wrong",,active
88
- error.boundary.subtitle,shared,*,ErrorBoundary,subtitle,"This view failed to render",,active
89
- error.boundary.hint,shared,*,ErrorBoundary,hint,"Open the console, then reload the page",,active
90
- error.boundary.no_details,shared,*,ErrorBoundary,details,"No error details",,active
91
- error.boundary.action.reload,shared,*,ErrorBoundary,action_reload,"Reload",,active
92
-
93
- landing.screenshot.alt,landing,LandingPage,LandingPage,screenshot_alt,"TokenTracker dashboard screenshot",,active
94
- landing.nav.login,landing,LandingPage,LandingPage,nav_login,"LOGIN",,active
95
- landing.nav.signup,landing,LandingPage,LandingPage,nav_signup,"SIGN UP",,active
96
- landing.install.command,landing,LandingPage,LandingPage,install_command,"npx --yes tokentracker-cli",,active
97
- landing.install.action.copy,landing,LandingPage,LandingPage,install_copy,"COPY COMMAND",,active
98
- landing.install.action.copied,landing,LandingPage,LandingPage,install_copied,"COPIED",,active
99
- landing.meta.title,landing,LandingPage,Meta,title,"Token Tracker — Token Usage Tracker for AI Agent CLIs",,active
100
- landing.meta.description,landing,LandingPage,Meta,description,"Automatically monitor token usage across Claude Code, Cursor, Codex, and more. Local-first, privacy-focused, and zero manual configuration.",,active
101
- landing.meta.og_site_name,landing,LandingPage,Meta,og_site_name,"Token Tracker",,active
102
- landing.meta.og_type,landing,LandingPage,Meta,og_type,"website",,active
103
- landing.meta.og_image,landing,LandingPage,Meta,og_image,"https://www.tokentracker.cc/dashboard-dark.png",,active
104
- landing.meta.og_url,landing,LandingPage,Meta,og_url,"https://www.tokentracker.cc/",,active
105
- landing.meta.twitter_card,landing,LandingPage,Meta,twitter_card,"summary_large_image",,active
106
- share.meta.title,share,SharePage,Meta,title,"Token Tracker Share",,active
107
- share.meta.description,share,SharePage,Meta,description,"Share a Token Tracker dashboard snapshot with token usage insights across models, projects, and time windows.",,active
108
- share.meta.og_site_name,share,SharePage,Meta,og_site_name,"Token Tracker",,active
109
- share.meta.og_type,share,SharePage,Meta,og_type,"website",,active
110
- share.meta.og_image,share,SharePage,Meta,og_image,"https://www.tokentracker.cc/dashboard-dark.png",,active
111
- share.meta.og_url,share,SharePage,Meta,og_url,"https://www.tokentracker.cc/share",,active
112
- share.meta.twitter_card,share,SharePage,Meta,twitter_card,"summary_large_image",,active
113
- landing.cta.primary,landing,LandingPage,LandingPage,cta_primary,"View Dashboard",,active
114
- landing.cta.secondary,landing,LandingPage,LandingPage,cta_secondary,"GitHub",,active
115
-
116
-
117
-
118
-
119
-
120
-
121
- landing.v2.hero.title_line1,landing,LandingPage,MarketingLanding,hero_title_1,"TRACK ALL YOUR",,active
122
- landing.v2.hero.title_line2,landing,LandingPage,MarketingLanding,hero_title_2,"AI TOKENS",,active
123
- landing.v2.install.mac_cta,landing,LandingPage,MarketingLanding,mac_cta,"Download for macOS",,active
124
- landing.v2.install.win_cta,landing,LandingPage,MarketingLanding,win_cta,"Download for Windows",,active
125
- landing.v2.install.desktop_cta,landing,LandingPage,MarketingLanding,desktop_cta,"Download desktop app",,active
126
- landing.v2.install.os_macos,landing,LandingPage,MarketingLanding,os_macos,"macOS",,active
127
- landing.v2.install.os_windows,landing,LandingPage,MarketingLanding,os_windows,"Windows",,active
128
- landing.v2.install.availability,landing,LandingPage,MarketingLanding,availability,"Available for macOS and Windows",,active
129
- landing.v2.models.title,landing,LandingPage,MarketingLanding,models_title,"SUPPORTED AI CLI TOOLS",,active
130
- landing.v2.distill.body,landing,LandingPage,MarketingLanding,distill_body,"100% local processing. No prompts or code are ever collected.",,active
131
- landing.v2.footer.line,landing,LandingPage,MarketingLanding,footer_line,"Token Tracker — Made by developers, for developers.",,active
132
- landing.v2.nav.status,landing,LandingPage,MarketingLanding,nav_status,"Status",,active
133
- landing.v2.nav.github,landing,LandingPage,MarketingLanding,nav_github,"GitHub",,active
134
- landing.v2.cta.primary,landing,LandingPage,MarketingLanding,cta_primary,"Dashboard",,active
135
- landing.v2.hero.subtagline,landing,LandingPage,MarketingLanding,hero_subtagline,"Automatically monitor token usage across Claude Code, Cursor, Codex, and more. Local-first, privacy-focused, and zero manual configuration.",,active
136
- landing.v3.hero.kicker,landing,LandingPage,HeroSection,hero_kicker,"Open source · Local-first · Realtime",,active
137
- landing.v3.hero.stat_label,landing,LandingPage,HeroSection,hero_stat_label,"Tokens tracked by the community",,active
138
- landing.v3.hero.scroll_hint,landing,LandingPage,HeroSection,hero_scroll_hint,"Scroll",,active
139
- landing.v3.stats.devs_syncing,landing,LandingPage,HeroSection,stats_devs_syncing,"{{count}} developers syncing",,active
140
- landing.v3.stats.fallback_tokens,landing,LandingPage,HeroSection,stats_fallback_tokens,"2200000000000",,active
141
- landing.v3.stats.fallback_devs,landing,LandingPage,HeroSection,stats_fallback_devs,"600",,active
142
- landing.v3.tools.count,landing,LandingPage,ToolsStrip,tools_count,"{{count}}+ AI coding agents supported out of the box.",,active
143
- landing.v3.how.kicker,landing,LandingPage,HowItWorksSection,how_kicker,"How it works",,active
144
- landing.v3.how.title,landing,LandingPage,HowItWorksSection,how_title,"From keystroke to dashboard in milliseconds.",,active
145
- landing.v3.how.subtitle,landing,LandingPage,HowItWorksSection,how_subtitle,"No proxies. No API keys to paste. TokenTracker reads the usage your CLI already writes — entirely on your machine.",,active
146
- landing.v3.how.step1.title,landing,LandingPage,HowItWorksSection,how_step1_title,"You run your agent",,active
147
- landing.v3.how.step1.body,landing,LandingPage,HowItWorksSection,how_step1_body,"Claude Code, Codex, Cursor, Gemini — keep working exactly the way you already do.",,active
148
- landing.v3.how.step2.title,landing,LandingPage,HowItWorksSection,how_step2_title,"A hook captures usage",,active
149
- landing.v3.how.step2.body,landing,LandingPage,HowItWorksSection,how_step2_body,"Every turn's token counts are parsed straight from the CLI's own local session logs.",,active
150
- landing.v3.how.step3.title,landing,LandingPage,HowItWorksSection,how_step3_title,"Queued on your machine",,active
151
- landing.v3.how.step3.body,landing,LandingPage,HowItWorksSection,how_step3_body,"Counts are normalized into an append-only queue under ~/.tokentracker. Nothing leaves your disk.",,active
152
- landing.v3.how.step4.title,landing,LandingPage,HowItWorksSection,how_step4_title,"Rendered live",,active
153
- landing.v3.how.step4.body,landing,LandingPage,HowItWorksSection,how_step4_body,"The local dashboard aggregates every agent, model and hour the moment it lands.",,active
154
- landing.v3.cap.kicker,landing,LandingPage,CapabilitiesSection,cap_kicker,"Everything in view",,active
155
- landing.v3.cap.title,landing,LandingPage,CapabilitiesSection,cap_title,"One dashboard for every agent.",,active
156
- landing.v3.cap.subtitle,landing,LandingPage,CapabilitiesSection,cap_subtitle,"Spend, limits, rhythm and models — the full picture of your AI usage, aggregated locally in real time.",,active
157
- landing.v3.cap.limits.title,landing,LandingPage,CapabilitiesSection,cap_limits_title,"Usage-limit radar",,active
158
- landing.v3.cap.limits.body,landing,LandingPage,CapabilitiesSection,cap_limits_body,"Watch 5-hour, weekly and monthly windows across providers — before you hit the wall mid-task.",,active
159
- landing.v3.cap.heatmap.title,landing,LandingPage,CapabilitiesSection,cap_heatmap_title,"365-day activity heatmap",,active
160
- landing.v3.cap.heatmap.body,landing,LandingPage,CapabilitiesSection,cap_heatmap_body,"Your coding rhythm at a glance, GitHub-style — every hour bucketed on your machine.",,active
161
- landing.v3.cap.devices.title,landing,LandingPage,CapabilitiesSection,cap_devices_title,"Every device, one picture",,active
162
- landing.v3.cap.devices.body,landing,LandingPage,CapabilitiesSection,cap_devices_body,"Menu bar on macOS, tray on Windows, CLI everywhere — optionally synced into a single account view.",,active
163
- landing.v3.privacy.kicker,landing,LandingPage,PrivacySection,privacy_kicker,"Local-first",,active
164
- landing.v3.privacy.title,landing,LandingPage,PrivacySection,privacy_title,"Your prompts never leave your machine.",,active
165
- landing.v3.privacy.p1,landing,LandingPage,PrivacySection,privacy_p1,"Token counts only",,active
166
- landing.v3.privacy.p2,landing,LandingPage,PrivacySection,privacy_p2,"No prompts. No code.",,active
167
- landing.v3.privacy.p3,landing,LandingPage,PrivacySection,privacy_p3,"Open source on GitHub",,active
168
- landing.v3.leaderboard.panel_title,landing,LandingPage,LeaderboardSection,leaderboard_panel_title,"Community rankings (global)",,active
169
- landing.v3.leaderboard.live,landing,LandingPage,LeaderboardSection,leaderboard_live,"Live",,active
170
- landing.v3.leaderboard.anonymous,landing,LandingPage,LeaderboardSection,leaderboard_anonymous,"Anonymous",,active
171
- landing.v3.leaderboard.tokens_synced,landing,LandingPage,LeaderboardSection,leaderboard_tokens_synced,"{{count}} tokens synced",,active
172
- landing.v3.download.title,landing,LandingPage,DownloadSection,download_title,"Start tracking in 30 seconds.",,active
173
- landing.v3.download.subtitle,landing,LandingPage,DownloadSection,download_subtitle,"One command or one download. Free, open source, yours.",,active
174
-
175
-
176
-
177
-
178
- identity_card.rank_label,ui,IdentityCard,IdentityCard,rank_label,"Started",,active
179
- identity_card.streak_label,ui,IdentityCard,IdentityCard,streak_label,"Active days",,active
180
- identity_card.rank_placeholder,ui,IdentityCard,IdentityCard,rank_placeholder,"—",,active
181
- identity_card.streak_value,ui,IdentityCard,IdentityCard,streak_value,"{{days}} DAY",,active
182
-
183
-
184
- dashboard.core_index.collapse_label,dashboard,DashboardPage,UsagePanel,toggle,"▾",,active
185
- dashboard.core_index.expand_label,dashboard,DashboardPage,UsagePanel,toggle,"▸",,active
186
- dashboard.core_index.collapse_aria,dashboard,DashboardPage,UsagePanel,toggle_aria,"Collapse model breakdown",,active
187
- dashboard.core_index.expand_aria,dashboard,DashboardPage,UsagePanel,toggle_aria,"Expand model breakdown",,active
188
- usage.summary.total,ui,UsagePanel,UsagePanel,summary_label_total,"Total tokens",,active
189
- usage.summary.toggle_aria,ui,DashboardPage,UsageOverview,summary_toggle_aria,"Toggle compact number format",,active
190
- usage.metric.total,ui,UsagePanel,UsagePanel,metric_total,"Total",,active
191
- usage.metric.input,ui,UsagePanel,UsagePanel,metric_input,"Input",,active
192
- usage.metric.output,ui,UsagePanel,UsagePanel,metric_output,"Output",,active
193
- usage.metric.cached_input,ui,UsagePanel,UsagePanel,metric_cached_input,"Cached input",,active
194
- usage.metric.reasoning_output,ui,UsagePanel,UsagePanel,metric_reasoning_output,"Reasoning output",,active
195
- usage.button.refresh,ui,UsagePanel,UsagePanel,button_refresh,"Refresh",,active
196
-
197
- dashboard.rolling.title,ui,RollingUsagePanel,RollingUsagePanel,title,"Recent Activity",,active
198
- dashboard.rolling.last_7d,ui,RollingUsagePanel,RollingUsagePanel,label_last_7d,"Last 7 days",,active
199
- dashboard.rolling.last_30d,ui,RollingUsagePanel,RollingUsagePanel,label_last_30d,"Last 30 days",,active
200
- dashboard.rolling.avg_active_day,ui,RollingUsagePanel,RollingUsagePanel,label_avg_active_day,"Daily average",,active
201
-
202
- dashboard.projects.title,ui,ProjectUsagePanel,ProjectUsagePanel,title,"Project Usage",,active
203
- dashboard.projects.tokens_label,ui,ProjectUsagePanel,ProjectUsagePanel,tokens_label,"Tokens",,active
204
- dashboard.projects.stars_label,ui,ProjectUsagePanel,ProjectUsagePanel,stars_label,"STAR",,active
205
- dashboard.projects.limit_label,ui,ProjectUsagePanel,ProjectUsagePanel,limit_label,"Show",,active
206
- dashboard.projects.limit_aria,ui,ProjectUsagePanel,ProjectUsagePanel,limit_aria,"Select repository limit",,active
207
- dashboard.projects.limit_top_3,ui,ProjectUsagePanel,ProjectUsagePanel,limit_top_3,"TOP 3",,active
208
- dashboard.projects.limit_top_6,ui,ProjectUsagePanel,ProjectUsagePanel,limit_top_6,"TOP 6",,active
209
- dashboard.projects.limit_top_10,ui,ProjectUsagePanel,ProjectUsagePanel,limit_top_10,"TOP 10",,active
210
- dashboard.projects.empty,ui,ProjectUsagePanel,ProjectUsagePanel,empty,"No public repositories",,active
211
- dashboard.widgets.title,dashboard,DashboardPage,WidgetOnboardingCard,title,"Desktop Widgets",,active
212
- dashboard.widgets.hint,dashboard,DashboardPage,WidgetOnboardingCard,hint,"Right-click your desktop → Edit Widgets → search ""TokenTracker""",,active
213
- dashboard.widgets.dismiss_aria,dashboard,DashboardPage,WidgetOnboardingCard,dismiss_aria,"Dismiss widget intro",,active
214
- widgets.page.title,dashboard,WidgetsPage,WidgetsPage,title,"Widgets",,active
215
- widgets.cta.open_gallery,dashboard,WidgetsPage,WidgetsPage,cta_open_gallery,"Open Widget Gallery",,active
216
- widgets.cta.download,dashboard,WidgetsPage,WidgetsPage,cta_download,"Download Mac App",,active
217
- widgets.cta.macos_only,dashboard,WidgetsPage,WidgetsPage,cta_macos_only,"macOS only",,active
218
- widgets.menubar.section.title,dashboard,WidgetsPage,WidgetsPage,menubar_section_title,"Menu Bar",,active
219
- widgets.gallery.section.title,dashboard,WidgetsPage,WidgetsPage,gallery_section_title,"Desktop Widgets",,active
220
- widgets.summary.name,dashboard,WidgetsPage,WidgetsPage,summary_name,"Usage Summary",,active
221
- widgets.summary.description,dashboard,WidgetsPage,WidgetsPage,summary_desc,"Today and seven-day usage with a compact sparkline.",,active
222
- widgets.heatmap.name,dashboard,WidgetsPage,WidgetsPage,heatmap_name,"Activity Heatmap",,active
223
- widgets.heatmap.description,dashboard,WidgetsPage,WidgetsPage,heatmap_desc,"GitHub-style daily calendar. Spot streaks and quiet days at a glance.",,active
224
- widgets.topModels.name,dashboard,WidgetsPage,WidgetsPage,topmodels_name,"Top Models",,active
225
- widgets.topModels.description,dashboard,WidgetsPage,WidgetsPage,topmodels_desc,"Your heaviest-used models ranked by token share.",,active
226
- widgets.limits.name,dashboard,WidgetsPage,WidgetsPage,limits_name,"Usage Limits",,active
227
- widgets.limits.description,dashboard,WidgetsPage,WidgetsPage,limits_desc,"Live rate-limit progress for Claude, Codex, Cursor, Gemini and more.",,active
228
- dashboard.cost_breakdown.title,ui,CostAnalysisModal,CostAnalysisModal,title,"Cost Breakdown",,active
229
- dashboard.cost_breakdown.total_label,ui,CostAnalysisModal,CostAnalysisModal,total_label,"Estimated Total Cost",,active
230
- dashboard.cost_breakdown.close,ui,CostAnalysisModal,CostAnalysisModal,close_label,"Close",,active
231
-
232
-
233
- trend.monitor.label,ui,TrendMonitor,TrendMonitor,label,"Usage Trend",,active
234
- trend.zoom.open_aria,ui,TrendMonitor,TrendMonitor,zoom_open_aria,"Expand to full screen",,active
235
- trend.zoom.close_aria,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_close_aria,"Close",,active
236
- trend.zoom.badge,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_badge,"Trend Insight",,active
237
- trend.zoom.desc,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_desc,"Hover any bar to inspect tokens, cost and conversations. Switch granularity to drill from months down to half-hours.",,active
238
- trend.zoom.insight_badge,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_insight_badge,"Insight",,active
239
- trend.zoom.tooltip.cost,ui,TrendMonitor,TrendMonitor,zoom_tooltip_cost,"cost",,active
240
- trend.zoom.tooltip.conversations,ui,TrendMonitor,TrendMonitor,zoom_tooltip_conversations,"conversations",,active
241
- trend.zoom.stats.tokens,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_stats_tokens,"Total Tokens",,active
242
- trend.zoom.stats.cost,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_stats_cost,"Total Cost",,active
243
- trend.zoom.stats.conversations,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_stats_conversations,"Conversations",,active
244
- trend.zoom.stats.peak,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_stats_peak,"Peak Bucket",,active
245
- trend.zoom.gran.aria,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_gran_aria,"Granularity",,active
246
- trend.zoom.gran.30min,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_gran_30min,"30 min",,active
247
- trend.zoom.gran.day,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_gran_day,"Day",,active
248
- trend.zoom.gran.month,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_gran_month,"Month",,active
249
- trend.zoom.prev_day,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_prev_day,"Previous day",,active
250
- trend.zoom.next_day,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_next_day,"Next day",,active
251
- trend.zoom.loading,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_loading,"Loading…",,active
252
- trend.zoom.pick_day,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_pick_day,"Pick a day",,active
253
- trend.zoom.pick_range,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_pick_range,"Pick a date range",,active
254
- trend.zoom.insight.empty,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_insight_empty,"A quiet stretch. Not a single token crossed the wire.",,active
255
- trend.zoom.insight.calm,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_insight_calm,"Light touch. The model mostly sat on standby, waking only when you reached for it.",,active
256
- trend.zoom.insight.steady,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_insight_steady,"A steady rhythm across {{active}} active stretches, cresting at {{peak}}. The kind of pace that ships things without drama.",,active
257
- trend.zoom.insight.heavy,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_insight_heavy,"Heavy lifting: {{active}} stretches running hot, peaking at {{peak}}. This is output from someone who manufactures momentum instead of waiting for it.",,active
258
- trend.zoom.insight.massive,ui,TrendMonitorZoomModal,TrendMonitorZoomModal,zoom_insight_massive,"Industrial scale. A {{peak}} peak and throughput that never cools. At this volume you are not using the model, you are running a foundry.",,active
259
-
260
- heatmap.title,ui,ActivityHeatmap,ActivityHeatmap,title,"Activity Heatmap",,active
261
- heatmap.empty,ui,ActivityHeatmap,ActivityHeatmap,empty_state,"No activity data yet.",,active
262
- heatmap.legend.less,ui,ActivityHeatmap,ActivityHeatmap,legend_less,"Less",,active
263
- heatmap.legend.more,ui,ActivityHeatmap,ActivityHeatmap,legend_more,"More",,active
264
- heatmap.legend.utc,ui,ActivityHeatmap,ActivityHeatmap,legend_utc,"UTC",,active
265
- heatmap.tooltip,ui,ActivityHeatmap,ActivityHeatmap,tooltip,"{{day}} • {{value}} {{unit}} • {{tz}}",,active
266
- heatmap.unit.tokens,ui,ActivityHeatmap,ActivityHeatmap,unit_tokens,"tokens",,active
267
- heatmap.iso.aria,ui,ActivityHeatmap,ActivityHeatmap3D,iso_aria,"3D isometric activity heatmap",,active
268
- heatmap.view.2d,ui,ActivityHeatmap,ActivityHeatmap,view_2d,"2D",,active
269
- heatmap.view.3d,ui,ActivityHeatmap,ActivityHeatmap,view_3d,"3D",,active
270
- heatmap.month.jan,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Jan",,active
271
- heatmap.month.feb,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Feb",,active
272
- heatmap.month.mar,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Mar",,active
273
- heatmap.month.apr,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Apr",,active
274
- heatmap.month.may,ui,ActivityHeatmap,ActivityHeatmap,month_label,"May",,active
275
- heatmap.month.jun,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Jun",,active
276
- heatmap.month.jul,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Jul",,active
277
- heatmap.month.aug,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Aug",,active
278
- heatmap.month.sep,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Sep",,active
279
- heatmap.month.oct,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Oct",,active
280
- heatmap.month.nov,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Nov",,active
281
- heatmap.month.dec,ui,ActivityHeatmap,ActivityHeatmap,month_label,"Dec",,active
282
- heatmap.day.sun,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Sun",,active
283
- heatmap.day.mon,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Mon",,active
284
- heatmap.day.tue,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Tue",,active
285
- heatmap.day.wed,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Wed",,active
286
- heatmap.day.thu,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Thu",,active
287
- heatmap.day.fri,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Fri",,active
288
- heatmap.day.sat,ui,ActivityHeatmap,ActivityHeatmap,day_label,"Sat",,active
289
-
290
-
291
-
292
-
293
- daily.sort.date.label,dashboard,DashboardPage,DailyTable,sort_label,"Date",,active
294
- daily.sort.date.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Date",,active
295
- daily.sort.total.label,dashboard,DashboardPage,DailyTable,sort_label,"Total",,active
296
- daily.sort.total.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Total",,active
297
- daily.sort.input.label,dashboard,DashboardPage,DailyTable,sort_label,"Input",,active
298
- daily.sort.input.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Input",,active
299
- daily.sort.output.label,dashboard,DashboardPage,DailyTable,sort_label,"Output",,active
300
- daily.sort.output.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Output",,active
301
- daily.sort.cached.label,dashboard,DashboardPage,DailyTable,sort_label,"Cached",,active
302
- daily.sort.cached.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Cached input",,active
303
- daily.sort.reasoning.label,dashboard,DashboardPage,DailyTable,sort_label,"Reasoning",,active
304
- daily.sort.reasoning.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Reasoning output",,active
305
- daily.sort.conversations.label,dashboard,DashboardPage,DailyTable,sort_label,"Convs",,active
306
- daily.sort.conversations.title,dashboard,DashboardPage,DailyTable,sort_title,"Sort by Conversations",,active
307
- details.pagination.prev,dashboard,DashboardPage,DailyTable,pagination_prev,"Prev",,active
308
- details.pagination.next,dashboard,DashboardPage,DailyTable,pagination_next,"Next",,active
309
-
310
-
311
-
312
- leaderboard.profile.nav.back,dashboard,LeaderboardProfilePage,Header,nav_back,"Leaderboard",,active
313
- leaderboard.profile.nav.download,dashboard,LeaderboardProfilePage,Header,nav_download,"Download",Shown only to browser visitors without the app,active
314
- leaderboard.profile.hero.rank_label,dashboard,LeaderboardProfilePage,Hero,rank_label,"Rank",,active
315
- leaderboard.title,dashboard,LeaderboardPage,LeaderboardPage,title,"Leaderboard",,active
316
- leaderboard.range,dashboard,LeaderboardPage,LeaderboardPage,range,"UTC {{period}} · {{from}} – {{to}}",,active
317
- leaderboard.range_loading,dashboard,LeaderboardPage,LeaderboardPage,range_loading,"UTC {{period}} · …",,active
318
- leaderboard.range.total,dashboard,LeaderboardPage,LeaderboardPage,range_total,"All time",,active
319
- leaderboard.generated_at,dashboard,LeaderboardPage,LeaderboardPage,generated_at,"Updated {{ts}}",,active
320
- leaderboard.period.week,dashboard,LeaderboardPage,LeaderboardPage,period_week,"Week",,active
321
- leaderboard.period.month,dashboard,LeaderboardPage,LeaderboardPage,period_month,"Month",,active
322
- leaderboard.period.total,dashboard,LeaderboardPage,LeaderboardPage,period_total,"All",,active
323
-
324
- leaderboard.me_label,dashboard,LeaderboardPage,LeaderboardPage,me_label,"You",,active
325
- leaderboard.anon_label,dashboard,LeaderboardPage,LeaderboardPage,anon_label,"Anonymous",,active
326
- leaderboard.error.unknown,dashboard,LeaderboardPage,LeaderboardPage,error_unknown,"Unknown error",,active
327
-
328
-
329
-
330
- leaderboard.loading,dashboard,LeaderboardPage,LeaderboardPage,state_loading,"Loading…",,active
331
- leaderboard.empty,dashboard,LeaderboardPage,LeaderboardPage,state_empty,"No data",,active
332
-
333
- leaderboard.column.rank,dashboard,LeaderboardPage,LeaderboardPage,column_rank,"Rank",,active
334
- leaderboard.column.user,dashboard,LeaderboardPage,LeaderboardPage,column_user,"User",,active
335
- leaderboard.column.total,dashboard,LeaderboardPage,LeaderboardPage,column_total,"Total",,active
336
- leaderboard.column.codex,dashboard,LeaderboardPage,LeaderboardPage,column_codex,"Codex",,active
337
- leaderboard.column.claude,dashboard,LeaderboardPage,LeaderboardPage,column_claude,"Claude",,active
338
- leaderboard.column.gemini,dashboard,LeaderboardPage,LeaderboardPage,column_gemini,"Gemini",,active
339
- leaderboard.column.cursor,dashboard,LeaderboardPage,LeaderboardPage,column_cursor,"Cursor",,active
340
- leaderboard.column.opencode,dashboard,LeaderboardPage,LeaderboardPage,column_opencode,"OpenCode",,active
341
- leaderboard.column.openclaw,dashboard,LeaderboardPage,LeaderboardPage,column_openclaw,"OpenClaw",,active
342
- leaderboard.column.hermes,dashboard,LeaderboardPage,LeaderboardPage,column_hermes,"Hermes",,active
343
- leaderboard.column.kiro,dashboard,LeaderboardPage,LeaderboardPage,column_kiro,"Kiro",,active
344
- leaderboard.column.copilot,dashboard,LeaderboardPage,LeaderboardPage,column_copilot,"GitHub Copilot",,active
345
- leaderboard.column.kimi,dashboard,LeaderboardPage,LeaderboardPage,column_kimi,"Kimi Code",,active
346
- leaderboard.column.kilo-cli,dashboard,LeaderboardPage,LeaderboardPage,column_kilo_cli,"Kilo CLI",,active
347
- leaderboard.column.kilo-code,dashboard,LeaderboardPage,LeaderboardPage,column_kilo_code,"Kilo Code",,active
348
- limits.copilot.otelHint.title,dashboard,LimitsPage,LimitsPage,otel_hint_title,"Track Copilot token usage",,active
349
- limits.copilot.otelHint.body,dashboard,LimitsPage,LimitsPage,otel_hint_body,"Limits load via your GitHub OAuth token. To also record per-token usage, enable Copilot's OpenTelemetry export and add these lines to your shell profile (~/.zshrc or ~/.bashrc):",,active
350
- limits.copilot.otelHint.copy,dashboard,LimitsPage,LimitsPage,otel_hint_copy,"Copy",,active
351
- limits.copilot.otelHint.copied,dashboard,LimitsPage,LimitsPage,otel_hint_copied,"Copied",,active
352
- leaderboard.column.supplemental,dashboard,LeaderboardPage,LeaderboardPage,column_supplemental,"Supplemental",,active
353
-
354
-
355
- leaderboard.pagination.prev,dashboard,LeaderboardPage,LeaderboardPage,pagination_prev,"Previous",,active
356
- leaderboard.pagination.next,dashboard,LeaderboardPage,LeaderboardPage,pagination_next,"Next",,active
357
- leaderboard.pagination.ellipsis,dashboard,LeaderboardPage,LeaderboardPage,pagination_ellipsis,"…",,active
358
- leaderboard.pagination.page_unknown,dashboard,LeaderboardPage,LeaderboardPage,pagination_unknown,"Page {{page}}",,active
359
-
360
-
361
-
362
-
363
- dashboard.session_expired.copy_label,dashboard,DashboardPage,AsciiBox,body,"run npx --yes tokentracker-cli init",,active
364
- dashboard.session_expired.copied,dashboard,DashboardPage,AsciiBox,body,"copied",,active
365
-
366
-
367
- dashboard.install.prompt,dashboard,DashboardPage,AsciiBox,install_prompt,"Install Node.js 18+ then run:",,active
368
- dashboard.install.cmd.init,dashboard,DashboardPage,AsciiBox,install_cmd,"npx --yes tokentracker-cli init",,active
369
- dashboard.install.cmd.init_link_code,dashboard,DashboardPage,AsciiBox,install_cmd,"npx --yes tokentracker-cli init --link-code {{link_code}}",,active
370
- dashboard.install.copy,dashboard,DashboardPage,AsciiBox,install_copy,"Copy install command",,active
371
- dashboard.install.copy_base,dashboard,DashboardPage,AsciiBox,install_copy,"Copy init command",,active
372
- dashboard.install.copied,dashboard,DashboardPage,AsciiBox,install_copy,"Copied to clipboard",,active
373
- dashboard.install.link_code.loading,dashboard,DashboardPage,AsciiBox,install_status,"Generating private code...",,active
374
- dashboard.install.link_code.failed,dashboard,DashboardPage,AsciiBox,install_status,"Private code unavailable",,active
375
- dashboard.install.cmd.sync,dashboard,DashboardPage,AsciiBox,install_cmd,"npx --yes tokentracker-cli sync",,active
376
-
377
-
378
-
379
- dashboard.daily.title,dashboard,DashboardPage,AsciiBox,title,"Daily Breakdown",,active
380
- dashboard.daily.empty,dashboard,DashboardPage,AsciiBox,empty_state,"No data yet. Use your AI CLI then run {{cmd}}.",,active
381
-
382
- dashboard.identity.title,dashboard,DashboardPage,IdentityCard,title,"Your Profile",,active
383
- dashboard.identity.subtitle,dashboard,DashboardPage,IdentityCard,subtitle,"Track your coding journey",,active
384
- dashboard.identity.fallback,dashboard,DashboardPage,IdentityCard,handle_fallback,"Anonymous",,active
385
- dashboard.overview.layout.drag_handle,dashboard,DashboardPage,SortableCard,drag_handle_aria_label,"Drag to reorder",,active
386
-
387
-
388
- dashboard.screenshot.twitter_text,dashboard,DashboardPage,ScreenshotShare,share_text,"{{total_tokens}} tokens on the record.\\n{{model_name}} led with {{model_percent}}%.\\n\\nMy AI usage, unaudited →",,active
389
-
390
- nav.usage,shared,*,Sidebar,nav_usage,"Tokens",,active
391
- nav.limits,shared,*,Sidebar,nav_limits,"Limits",,active
392
- nav.widgets,shared,*,Sidebar,nav_widgets,"macOS Widgets",,active
393
- nav.leaderboard,shared,*,Sidebar,nav_leaderboard,"Leaderboard",,active
394
- nav.collapse,shared,*,Sidebar,nav_collapse,"Collapse sidebar",,active
395
- nav.expand,shared,*,Sidebar,nav_expand,"Expand sidebar",,active
396
- nav.menu,shared,*,Sidebar,nav_menu,"Open navigation menu",,active
397
- nav.close_menu,shared,*,Sidebar,nav_close_menu,"Close navigation menu",,active
398
- nav.aside_label,shared,*,Sidebar,aside_label,"Main navigation",,active
399
- nav.nav_label,shared,*,Sidebar,nav_label,"Primary",,active
400
- limits.page.subtitle,ui,LimitsPage,LimitsPage,subtitle,"Rate limits and quota usage across your AI tools.",,active
401
- limits.settings.toggle_visible,ui,LimitsPage,LimitsSettingsPanel,toggle_visible,"Toggle visibility",,active
402
- limits.settings.display_mode_label,ui,LimitsPage,LimitsSettingsPanel,display_mode_label,"Usage",,active
403
- limits.settings.display_mode_used,ui,LimitsPage,LimitsSettingsPanel,display_mode_used,"Used",,active
404
- limits.settings.display_mode_remaining,ui,LimitsPage,LimitsSettingsPanel,display_mode_remaining,"Remaining",,active
405
- limits.page.openSettings,ui,LimitsPage,LimitsPage,open_settings,"Display settings",,active
406
- leaderboard.community.tokens_label,ui,LeaderboardPage,LeaderboardPage,community_tokens_label,"Tokens tracked by the community",,active
407
- leaderboard.community.devs,ui,LeaderboardPage,LeaderboardPage,community_devs,"{{count}} developers syncing",,active
408
- leaderboard.community.view_stats,ui,LeaderboardPage,CommunityStatsChip,view_stats,"View global community stats",,active
409
- leaderboard.community.tokens_chip,ui,LeaderboardPage,CommunityStatsChip,tokens_chip,"Community Tokens",,active
410
- leaderboard.community.devs_chip,ui,LeaderboardPage,CommunityStatsChip,devs_chip,"Devs",,active
411
- leaderboard.community.modal.title,ui,LeaderboardPage,CommunityStatsModal,title,"Global Metrics",,active
412
- leaderboard.community.modal.description,ui,LeaderboardPage,CommunityStatsModal,description,"Anonymous aggregates across all community syncs.",,active
413
- leaderboard.community.modal.total_tokens,ui,LeaderboardPage,CommunityStatsModal,total_tokens,"Total Tokens",,active
414
- leaderboard.community.modal.active_devs,ui,LeaderboardPage,CommunityStatsModal,active_devs,"Active Devs",,active
415
- leaderboard.community.modal.active_devs_detail,ui,LeaderboardPage,CommunityStatsModal,active_devs_detail,"{{count}} syncing",,active
416
- leaderboard.community.modal.global_spend,ui,LeaderboardPage,CommunityStatsModal,global_spend,"Est. Spend",,active
417
- leaderboard.community.modal.global_spend_detail,ui,LeaderboardPage,CommunityStatsModal,global_spend_detail,"\${{amount}} USD",,active
418
- leaderboard.community.modal.top_models,ui,LeaderboardPage,CommunityStatsModal,top_models,"Top Models",,active
419
- leaderboard.community.modal.all_time,ui,LeaderboardPage,CommunityStatsModal,all_time,"All time",,active
420
- leaderboard.community.modal.tokens_title,ui,LeaderboardPage,CommunityStatsModal,tokens_title,"{{count}} tokens",,active
421
- leaderboard.community.modal.note,ui,LeaderboardPage,CommunityStatsModal,note,"Model distribution aggregated from all-time cumulative syncs across the community.",,active
422
- shared.dialog.close,shared,*,Dialog,close,"Close dialog",,active
423
- nav.group.general,shared,*,Sidebar,group_general,"General",,active
424
- nav.group.tools,shared,*,Sidebar,group_tools,"Tools",,active
425
- nav.group.account,shared,*,Sidebar,group_account,"Account",,active
426
- nav.settings,shared,*,Sidebar,nav_settings,"Settings",,active
427
- header.auth.open_settings,shared,*,InsforgeUserHeaderControls,open_settings,"Open settings",,active
428
- settings.page.title,ui,SettingsPage,SettingsPage,title,"Settings",,active
429
- settings.page.subtitle,ui,SettingsPage,SettingsPage,subtitle,"Manage your account, appearance, and display preferences.",,active
430
- settings.section.appearance,ui,SettingsPage,SettingsPage,sec_appearance,"Appearance",,active
431
- settings.section.account,ui,SettingsPage,SettingsPage,sec_account,"Account",,active
432
- settings.section.limits,ui,SettingsPage,SettingsPage,sec_limits,"Limits Display",,active
433
- settings.labs.qpd.label,ui,SettingsPage,LabsSection,qpd_label,"Analyze PR cost-efficiency",,active
434
- settings.labs.qpd.hint,ui,SettingsPage,LabsSection,qpd_hint,"Link GitHub PR history to analyze average delivery costs and effective Tokens per model.",,active
435
- settings.labs.qpd.aria,ui,SettingsPage,LabsSection,qpd_aria,"Toggle PR cost-efficiency analysis",,active
436
- qpd.card.title,ui,DashboardView,QualityPerDollarCard,title,"Quality & Avg Cost/PR",,active
437
- qpd.card.badge,ui,DashboardView,QualityPerDollarCard,badge,"BETA",,active
438
- qpd.card.subtitle,ui,DashboardView,QualityPerDollarCard,subtitle,"Avg token cost per merged PR based on your history.",,active
439
- qpd.card.updating,ui,DashboardView,QualityPerDollarCard,updating,"Updating…",,active
440
- qpd.card.best_value,ui,DashboardView,QualityPerDollarCard,best_value,"Best Value",,active
441
- qpd.card.col_model,ui,DashboardView,QualityPerDollarCard,col_model,"Model",,active
442
- qpd.card.col_cost,ui,DashboardView,QualityPerDollarCard,col_cost,"Spend",,active
443
- qpd.card.col_accepted,ui,DashboardView,QualityPerDollarCard,col_accepted,"PRs/Total",,active
444
- qpd.card.col_rate,ui,DashboardView,QualityPerDollarCard,col_rate,"Rate",,active
445
- qpd.card.col_qpd,ui,DashboardView,QualityPerDollarCard,col_qpd,"Cost/PR",,active
446
- qpd.card.qpd_tooltip,ui,DashboardView,QualityPerDollarCard,qpd_tooltip,"Average token cost per accepted outcome (Total Spend ÷ Accepted Outcomes)",,active
447
- qpd.card.totals,ui,DashboardView,QualityPerDollarCard,totals,"Merged {{accepted}}/{{outcomes}} PRs · Cost {{cost}}",,active
448
- qpd.card.et,ui,DashboardView,QualityPerDollarCard,et,"Effective: {{tokens}} ({{rate}})",,active
449
- qpd.card.et_tooltip,ui,DashboardView,QualityPerDollarCard,et_tooltip,"Effective Tokens — the share of tokens that produced accepted work vs rework",,active
450
- qpd.card.sparse_notice,ui,DashboardView,QualityPerDollarCard,sparse_notice,"Tip: Sparse outcomes dataset might skew ratios. For precise metrics, select a narrower time window.",,active
451
- settings.appearance.theme.label,ui,SettingsPage,SettingsPage,theme_label,"Theme",,active
452
- settings.appearance.theme.hint,ui,SettingsPage,SettingsPage,theme_hint,"Choose how Token Tracker looks across the dashboard.",,active
453
- settings.appearance.theme.light,ui,SettingsPage,SettingsPage,theme_light,"Light",,active
454
- settings.appearance.theme.dark,ui,SettingsPage,SettingsPage,theme_dark,"Dark",,active
455
- settings.appearance.theme.system,ui,SettingsPage,SettingsPage,theme_system,"System",,active
456
- settings.appearance.currency.label,ui,SettingsPage,SettingsPage,currency_label,"Currency",,active
457
- settings.appearance.currency.hint,ui,SettingsPage,SettingsPage,currency_hint,"Select the display currency for usage costs.",,active
458
- settings.appearance.currency.opt.usd,ui,SettingsPage,SettingsPage,currency_opt_usd,"USD ($)",,active
459
- settings.appearance.currency.opt.eur,ui,SettingsPage,SettingsPage,currency_opt_eur,"EUR (€)",,active
460
- settings.appearance.currency.opt.gbp,ui,SettingsPage,SettingsPage,currency_opt_gbp,"GBP (£)",,active
461
- settings.appearance.currency.opt.cny,ui,SettingsPage,SettingsPage,currency_opt_cny,"CNY (¥)",,active
462
- settings.appearance.currency.opt.jpy,ui,SettingsPage,SettingsPage,currency_opt_jpy,"JPY (¥)",,active
463
- settings.appearance.currency.opt.hkd,ui,SettingsPage,SettingsPage,currency_opt_hkd,"HKD (HK$)",,active
464
- settings.appearance.currency.rate_source.default,ui,SettingsPage,SettingsPage,rate_source_default,"Bundled default rate",,active
465
- settings.appearance.currency.rate_source.fetched,ui,SettingsPage,SettingsPage,rate_source_fetched,"Source: open.er-api.com",,active
466
- settings.appearance.currency.rate_updated,ui,SettingsPage,SettingsPage,rate_updated,"updated {{when}}",,active
467
- settings.appearance.currency.rate_never,ui,SettingsPage,SettingsPage,rate_never,"awaiting first refresh",,active
468
- settings.account.displayName,ui,SettingsPage,SettingsPage,display_name,"Display name",,active
469
- settings.account.edit,ui,SettingsPage,SettingsPage,edit,"Edit",,active
470
- settings.account.save,ui,SettingsPage,SettingsPage,save,"Save",,active
471
- settings.account.saving,ui,SettingsPage,SettingsPage,saving,"Saving...",,active
472
- settings.account.cancel,ui,SettingsPage,SettingsPage,cancel,"Cancel",,active
473
- settings.account.userId,ui,SettingsPage,SettingsPage,user_id,"User ID",,active
474
- settings.account.copyUserId,ui,SettingsPage,SettingsPage,copy_user_id,"Copy user ID",,active
475
- settings.account.copy,ui,SettingsPage,SettingsPage,copy,"Copy",,active
476
- settings.account.copied,ui,SettingsPage,SettingsPage,copied,"Copied",,active
477
- settings.account.cloudSync,ui,SettingsPage,SettingsPage,cloud_sync,"Cloud sync",,active
478
- settings.account.cloudSyncHint,ui,SettingsPage,SettingsPage,cloud_sync_hint,"Upload local usage to your Token Tracker cloud account.",,active
479
- settings.account.publicProfile,ui,SettingsPage,SettingsPage,public_profile,"Public profile",,active
480
- settings.account.publicProfileHint,ui,SettingsPage,SettingsPage,public_profile_hint,"Show your usage on the public leaderboard.",,active
481
- settings.account.displayNameAnonymousHint,ui,SettingsPage,SettingsPage,display_name_anon_hint,"Anonymous — your name and avatar are hidden on the leaderboard",,active
482
- settings.account.displayNameDisabledWhileAnon,ui,SettingsPage,SettingsPage,display_name_disabled,"Turn on the switch first to edit your name",,active
483
- settings.account.githubUrl,ui,SettingsPage,SettingsPage,github_url,"GitHub profile",,active
484
- settings.account.githubUrlHint,ui,SettingsPage,SettingsPage,github_url_hint,"Show a GitHub link next to your name on the leaderboard.",,active
485
- settings.account.githubUrlPlaceholder,ui,SettingsPage,SettingsPage,github_url_placeholder,"username or https://github.com/username",,active
486
- settings.account.githubUrlInvalid,ui,SettingsPage,SettingsPage,github_url_invalid,"Use a GitHub username or https://github.com/username URL.",,active
487
- leaderboard.github.aria,ui,LeaderboardPage,LeaderboardPage,github_aria,"Open GitHub profile",,active
488
- auth.callback.processing,ui,*,NativeAuthCallbackPage,processing,"Processing…",,active
489
- auth.callback.success,ui,*,NativeAuthCallbackPage,success,"Signed in successfully",,active
490
- auth.callback.redirecting,ui,*,NativeAuthCallbackPage,redirecting,"Returning to TokenTracker…",,active
491
- auth.callback.failed,ui,*,NativeAuthCallbackPage,failed,"Sign-in incomplete. Please try again.",,active
492
- auth.callback.close,ui,*,NativeAuthCallbackPage,close,"Close this page",,active
493
- stats.period.last_7d,ui,DashboardPage,StatsPanel,period_last_7d,"7d",,active
494
- stats.period.last_30d,ui,DashboardPage,StatsPanel,period_last_30d,"30d",,active
495
- stats.period.avg,ui,DashboardPage,StatsPanel,period_avg,"avg",,active
496
- stats.period.convs,ui,DashboardPage,StatsPanel,period_convs,"convs",,active
497
- leaderboard.column.est_cost,ui,LeaderboardPage,LeaderboardPage,column_est_cost,"Est. Cost",,active
498
- leaderboard.signin_prompt,ui,LeaderboardPage,LeaderboardPage,signin_prompt,"Sign in to join the leaderboard",,active
499
- leaderboard.signin_button,ui,LeaderboardPage,LeaderboardPage,signin_button,"Sign In",,active
500
- leaderboard.sync_prompt,ui,LeaderboardPage,LeaderboardPage,sync_prompt,"Enable Cloud Sync to appear in rankings",,active
501
- leaderboard.sync_button.idle,ui,LeaderboardPage,LeaderboardPage,sync_button_idle,"Enable & Sync",,active
502
- leaderboard.sync_button.busy,ui,LeaderboardPage,LeaderboardPage,sync_button_busy,"Syncing...",,active
503
- leaderboard.pagination.page_size_label,ui,LeaderboardPage,LeaderboardPage,page_size_label,"Rows per page",,active
504
- leaderboard.github.tooltipAction,ui,LeaderboardPage,LeaderboardPage,github_tooltip_action,"Click to open GitHub profile",,active
505
- leaderboard.github.tooltipPrefix,ui,LeaderboardPage,LeaderboardPage,github_tooltip_prefix,"Set yours in",,active
506
- leaderboard.github.tooltipSettingsLink,ui,LeaderboardPage,LeaderboardPage,github_tooltip_link,"Settings",,active
507
- leaderboard.github.tooltipSuffix,ui,LeaderboardPage,LeaderboardPage,github_tooltip_suffix," to appear here",,active
508
- leaderboard.summary.percentile,ui,LeaderboardPage,LeaderboardMeChip,summary_percentile,"Top {{p}}%",,active
509
- leaderboard.summary.jump_to_me,ui,LeaderboardPage,LeaderboardMeChip,summary_jump_to_me,"Jump to my row",,active
510
- leaderboard.summary.view_profile,ui,LeaderboardPage,LeaderboardMeChip,summary_view_profile,"View your profile",,active
511
- settings.account.signOut,ui,SettingsPage,SettingsPage,sign_out,"Sign out",,active
512
- settings.account.signIn,ui,SettingsPage,SettingsPage,sign_in,"Sign in",,active
513
- settings.account.signedOutHint,ui,SettingsPage,SettingsPage,signed_out_hint,"Sign in to manage cloud sync and leaderboard preferences.",,active
514
- settings.section.menubar,ui,SettingsPage,SettingsPage,sec_menubar,"Menu Bar App",,active
515
- settings.menubar.showStats,ui,SettingsPage,SettingsPage,mb_show_stats,"Show stats in menu bar",,active
516
- settings.menubar.showStatsHint,ui,SettingsPage,SettingsPage,mb_show_stats_hint,"Display today's token count and cost beside the menu bar icon.",,active
517
- settings.menubar.animatedIcon,ui,SettingsPage,SettingsPage,mb_anim,"Animated icon",,active
518
- settings.menubar.animatedIconHint,ui,SettingsPage,SettingsPage,mb_anim_hint,"Blink the Clawd character and play the syncing animation in the menu bar.",,active
519
- settings.menubar.confettiOnReset,ui,SettingsPage,SettingsPage,mb_confetti,"Confetti on limits reset",,active
520
- settings.menubar.confettiOnResetHint,ui,SettingsPage,SettingsPage,mb_confetti_hint,"Set off a fireworks celebration when a usage limit resets after you were near it.",,active
521
- settings.menubar.launchAtLogin,ui,SettingsPage,SettingsPage,mb_login,"Launch at login",,active
522
- settings.menubar.launchAtLoginHint,ui,SettingsPage,SettingsPage,mb_login_hint,"Start TokenTrackerBar automatically when you sign in to macOS.",,active
523
- settings.menubar.syncNow,ui,SettingsPage,SettingsPage,mb_sync_now,"Sync now",,active
524
- settings.menubar.syncNowHint,ui,SettingsPage,SettingsPage,mb_sync_now_hint,"Trigger an immediate parse and upload of local AI tool logs.",,active
525
- settings.menubar.syncing,ui,SettingsPage,SettingsPage,mb_syncing,"Syncing…",,active
526
- settings.menubar.updates,ui,SettingsPage,SettingsPage,mb_updates,"Updates",,active
527
- settings.menubar.checkUpdates,ui,SettingsPage,SettingsPage,mb_check_updates,"Check for updates",,active
528
- settings.footer.statusPage,ui,SettingsPage,NativeAppFooter,status_page,"System status",,active
529
- menubar.slot.primary,ui,WidgetsPage,MenuBarDisplayCard,slot_primary,"Primary slot",,active
530
- menubar.slot.secondary,ui,WidgetsPage,MenuBarDisplayCard,slot_secondary,"Secondary slot",,active
531
- menubar.native_only,ui,WidgetsPage,MenuBarDisplayCard,native_only,"Open TokenTrackerBar for macOS to edit the live menu bar display.",,active
532
- menubar.metric.today_tokens,ui,WidgetsPage,MenuBarDisplayCard,metric_today_tokens,"Today Tokens",,active
533
- menubar.metric.today_cost,ui,WidgetsPage,MenuBarDisplayCard,metric_today_cost,"Today Cost",,active
534
- menubar.metric.last_7d_tokens,ui,WidgetsPage,MenuBarDisplayCard,metric_last_7d,"Last 7 Days",,active
535
- menubar.metric.total_tokens,ui,WidgetsPage,MenuBarDisplayCard,metric_total_tokens,"Total Tokens",,active
536
- menubar.metric.total_cost,ui,WidgetsPage,MenuBarDisplayCard,metric_total_cost,"Total Cost",,active
537
- menubar.metric.claude_5h,ui,WidgetsPage,MenuBarDisplayCard,metric_claude_5h,"Claude 5h Limit",,active
538
- menubar.metric.claude_7d,ui,WidgetsPage,MenuBarDisplayCard,metric_claude_7d,"Claude 7d Limit",,active
539
- menubar.metric.codex_5h,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_5h,"Codex 5h Limit",,active
540
- menubar.metric.codex_7d,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_7d,"Codex 7d Limit",,active
541
- menubar.metric.codex_credits,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_credits,"Codex Credit Limit",,active
542
- menubar.metric.codex_spark_5h,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_spark_5h,"Codex Spark 5h Limit",,active
543
- menubar.metric.codex_spark_7d,ui,WidgetsPage,MenuBarDisplayCard,metric_codex_spark_7d,"Codex Spark 7d Limit",,active
544
- share.modal.title,share,DashboardPage,ShareModal,title,"Share your stats",,active
545
- share.modal.subtitle,share,DashboardPage,ShareModal,subtitle,"Generate a poster-style card and share anywhere.",,active
546
- share.modal.close,share,DashboardPage,ShareModal,close,"Close",,active
547
- share.modal.action.x,share,DashboardPage,ShareModal,action_x,"Share on X",,active
548
- share.modal.action.download,share,DashboardPage,ShareModal,action_download,"Download",,active
549
- share.modal.action.copy,share,DashboardPage,ShareModal,action_copy,"Copy image",,active
550
- share.modal.hint.x,share,DashboardPage,ShareModal,hint_x,"Paste image in tweet",,active
551
- share.modal.hint.copy,share,DashboardPage,ShareModal,hint_copy,"to clipboard",,active
552
- share.modal.name_label,share,DashboardPage,ShareModal,name_label,"Display name",,active
553
- share.modal.name_placeholder,share,DashboardPage,ShareModal,name_placeholder,"Enter your name",,active
554
- share.modal.footer,share,DashboardPage,ShareModal,footer,"Your data stays local — images are generated in your browser and never uploaded.",,active
555
- share.button.label,share,DashboardPage,DashboardHeader,share_button,"Share",,active
556
- share.button.aria,share,DashboardPage,DashboardHeader,share_button_aria,"Open share card",,active
557
- share.toast.copied,share,DashboardPage,ShareModal,toast_copied,"Image copied to clipboard",,active
558
- share.toast.downloaded,share,DashboardPage,ShareModal,toast_downloaded,"Image saved",,active
559
- share.toast.failed,share,DashboardPage,ShareModal,toast_failed,"Couldn't generate image",,active
560
- share.toast.working,share,DashboardPage,ShareModal,toast_working,"Generating…",,active
561
- share.modal.style_label,share,DashboardPage,ShareModal,style_label,"Style",,active
562
- share.variant.neon,share,DashboardPage,ShareModal,variant_neon,"Neon",,active
563
- share.variant.broadsheet,share,DashboardPage,ShareModal,variant_broadsheet,"Broadsheet",,active
564
- share.date.month_year,share,DashboardPage,ShareCard,date_month_year,"{{month}} {{year}}",,active
565
- share.issue.all_time,share,DashboardPage,ShareCard,issue_all_time,"ALL TIME",,active
566
- share.month_short.jan,share,DashboardPage,ShareCard,month_short,"JAN",,active
567
- share.month_short.feb,share,DashboardPage,ShareCard,month_short,"FEB",,active
568
- share.month_short.mar,share,DashboardPage,ShareCard,month_short,"MAR",,active
569
- share.month_short.apr,share,DashboardPage,ShareCard,month_short,"APR",,active
570
- share.month_short.may,share,DashboardPage,ShareCard,month_short,"MAY",,active
571
- share.month_short.jun,share,DashboardPage,ShareCard,month_short,"JUN",,active
572
- share.month_short.jul,share,DashboardPage,ShareCard,month_short,"JUL",,active
573
- share.month_short.aug,share,DashboardPage,ShareCard,month_short,"AUG",,active
574
- share.month_short.sep,share,DashboardPage,ShareCard,month_short,"SEP",,active
575
- share.month_short.oct,share,DashboardPage,ShareCard,month_short,"OCT",,active
576
- share.month_short.nov,share,DashboardPage,ShareCard,month_short,"NOV",,active
577
- share.month_short.dec,share,DashboardPage,ShareCard,month_short,"DEC",,active
578
- share.hook.top_loyal,share,DashboardPage,ShareCard,hook_top_loyal,"{{percent}}% loyal to {{name}}.",,active
579
- share.hook.days_record,share,DashboardPage,ShareCard,hook_days_record,"{{days}} days on the record.",,active
580
- share.hook.top_led,share,DashboardPage,ShareCard,hook_top_led,"Led by {{name}} ({{percent}}%).",,active
581
- share.hook.multi_models,share,DashboardPage,ShareCard,hook_multi_models,"Across {{count}} models, {{days}} days.",,active
582
- share.hook.days_with_model,share,DashboardPage,ShareCard,hook_days_with_model,"{{days}} days with {{name}}.",,active
583
- share.hook.new_chapter,share,DashboardPage,ShareCard,hook_new_chapter,"The beginning of a new chapter.",,active
584
- share.card.broadsheet.issue,share,DashboardPage,BroadsheetCard,issue_label,"Issue",,active
585
- share.card.broadsheet.by,share,DashboardPage,BroadsheetCard,by_label,"By",,active
586
- share.card.broadsheet.tracked_since,share,DashboardPage,BroadsheetCard,tracked_since,"Tracked since",,active
587
- share.card.broadsheet.total_tokens,share,DashboardPage,BroadsheetCard,total_tokens,"Total tokens",,active
588
- share.card.broadsheet.estimated_spend,share,DashboardPage,BroadsheetCard,estimated_spend,"Estimated spend",,active
589
- share.card.broadsheet.billable_days,share,DashboardPage,BroadsheetCard,billable_days,"{{days}} billable days",,active
590
- share.card.broadsheet.heatmap_title,share,DashboardPage,BroadsheetCard,heatmap_title,"The Year in Print",,active
591
- share.card.broadsheet.heatmap_days_on_record,share,DashboardPage,BroadsheetCard,heatmap_days,"{{active}} / {{total}} days on record",,active
592
- share.card.broadsheet.roster_title,share,DashboardPage,BroadsheetCard,roster_title,"The Roster",,active
593
- share.card.broadsheet.roster_subtitle,share,DashboardPage,BroadsheetCard,roster_subtitle,"Models in regular rotation",,active
594
- share.card.broadsheet.empty,share,DashboardPage,BroadsheetCard,empty,"An empty week — the press was quiet.",,active
595
- share.card.broadsheet.global_rank,share,DashboardPage,BroadsheetCard,global_rank,"Global rank",,active
596
- share.card.broadsheet.active_days,share,DashboardPage,BroadsheetCard,active_days,"Active",,active
597
- share.card.broadsheet.days_count,share,DashboardPage,BroadsheetCard,days_count,"{{days}} days",,active
598
- share.card.broadsheet.track_yours,share,DashboardPage,BroadsheetCard,track_yours,"Track yours",,active
599
- share.card.annual.report_title,share,DashboardPage,AnnualReportCard,report_title,"Token Report",,active
600
- share.card.annual.less,share,DashboardPage,AnnualReportCard,legend_less,"Less",,active
601
- share.card.annual.more,share,DashboardPage,AnnualReportCard,legend_more,"More",,active
602
- share.card.annual.heatmap_title,share,DashboardPage,AnnualReportCard,heatmap_title,"TOKEN USAGE HEATMAP",,active
603
- share.card.annual.total_tokens,share,DashboardPage,AnnualReportCard,total_tokens,"Total Tokens",,active
604
- share.card.annual.estimated_cost,share,DashboardPage,AnnualReportCard,estimated_cost,"Estimated Cost",,active
605
- share.card.annual.longest_streak,share,DashboardPage,AnnualReportCard,longest_streak,"Longest Streak",,active
606
- share.card.annual.days_count,share,DashboardPage,AnnualReportCard,days_count,"{{days}} days",,active
607
- share.card.annual.top_model,share,DashboardPage,AnnualReportCard,top_model,"Top Model",,active
608
- usage.period.day,ui,DashboardPage,UsageOverview,period_day,"Day",,active
609
- usage.period.week,ui,DashboardPage,UsageOverview,period_week,"Week",,active
610
- usage.period.month,ui,DashboardPage,UsageOverview,period_month,"Month",,active
611
- usage.period.total,ui,DashboardPage,UsageOverview,period_total,"Total",,active
612
- usage.period.custom,ui,DashboardPage,UsageOverview,period_custom,"Custom",,active
613
- usage.overview.tablist_aria,ui,DashboardPage,UsageOverview,tablist_aria,"Time period",,active
614
- usage.overview.cost_breakdown_aria,ui,DashboardPage,UsageOverview,cost_breakdown_aria,"View cost breakdown",,active
615
- usage.overview.distribution_aria,ui,DashboardPage,UsageOverview,distribution_aria,"Provider distribution: {{items}}",,active
616
- usage.overview.distribution_item,ui,DashboardPage,UsageOverview,distribution_item,"{{label}} {{percent}}%",,active
617
- usage.overview.provider_card_aria,ui,DashboardPage,UsageOverview,provider_card_aria,"{{provider}}: {{percent}}%, {{tokens}} tokens, {{cost}}. Click to {{action}} details",,active
618
- usage.overview.expand,ui,DashboardPage,UsageOverview,expand,"expand",,active
619
- usage.overview.collapse,ui,DashboardPage,UsageOverview,collapse,"collapse",,active
620
- usage.overview.model_count,ui,DashboardPage,UsageOverview,model_count,"{{count}} models",,active
621
- usage.overview.model_details_aria,ui,DashboardPage,UsageOverview,model_details_aria,"{{provider}} model details",,active
622
- usage.overview.cache_hit_rate_label,ui,DashboardPage,UsageOverview,cache_hit_rate_label,"Cache hit rate",,active
623
- usage.overview.cache_hit_rate_detail,ui,DashboardPage,UsageOverview,cache_hit_rate_detail,"{{reused}} reused / {{input}} input",,active
624
- usage.overview.antigravity_notice_title,ui,DashboardPage,UsageOverview,antigravity_notice_title,"Estimated tokens",,active
625
- usage.overview.antigravity_notice_body,ui,DashboardPage,UsageOverview,antigravity_notice_body,"Antigravity transcripts don't record real usage numbers. These counts are estimated from text length (~4 chars/token) and don't reflect Gemini's prompt-cache discount, so treat them as an upper bound, not a billing figure.",,active
626
- limits.panel.title,ui,LimitsPage,UsageLimitsPanel,title,"Usage Limits",,active
627
- limits.panel.mode_separator,ui,LimitsPage,UsageLimitsPanel,title_separator," · ",,active
628
- limits.label.cursor_plan,ui,LimitsPage,UsageLimitsPanel,cursor_plan,"Plan",,active
629
- limits.label.cursor_auto,ui,LimitsPage,UsageLimitsPanel,cursor_auto,"Auto",,active
630
- limits.label.cursor_api,ui,LimitsPage,UsageLimitsPanel,cursor_api,"API",,active
631
- limits.label.kiro_month,ui,LimitsPage,UsageLimitsPanel,kiro_month,"Month",,active
632
- limits.label.kiro_bonus,ui,LimitsPage,UsageLimitsPanel,kiro_bonus,"Bonus",,active
633
- limits.label.kimi_weekly,ui,LimitsPage,UsageLimitsPanel,kimi_weekly,"Weekly",,active
634
- limits.label.kimi_5h,ui,LimitsPage,UsageLimitsPanel,kimi_5h,"5h",,active
635
- limits.label.kimi_total,ui,LimitsPage,UsageLimitsPanel,kimi_total,"Total",,active
636
- limits.label.kimi_parallel,ui,LimitsPage,UsageLimitsPanel,kimi_parallel,"Parallel: {{count}}",,active
637
- limits.explain.used,ui,LimitsPage,UsageLimitsPanel,explain_used,"{{label}}: {{used}}% used",,active
638
- limits.explain.on_track,ui,LimitsPage,UsageLimitsPanel,explain_on_track,"{{label}}: on track, ~{{pct}}% by reset",,active
639
- limits.explain.ahead_eta,ui,LimitsPage,UsageLimitsPanel,explain_ahead_eta,"{{label}}: ahead of pace, ~{{eta}} to limit",,active
640
- limits.explain.ahead_pct,ui,LimitsPage,UsageLimitsPanel,explain_ahead_pct,"{{label}}: ahead of pace, ~{{pct}}% by reset",,active
641
- limits.explain.body,ui,LimitsPage,UsageLimitsPanel,explain_body,"The mark is the even-pace point; fill past it means you're ahead.",,active
642
- limits.explain.remaining,ui,LimitsPage,UsageLimitsPanel,explain_remaining,"{{label}}: {{used}}% left",,active
643
- limits.explain.on_track_remaining,ui,LimitsPage,UsageLimitsPanel,explain_on_track_remaining,"{{label}}: on track, ~{{pct}}% left by reset",,active
644
- limits.explain.ahead_pct_remaining,ui,LimitsPage,UsageLimitsPanel,explain_ahead_pct_remaining,"{{label}}: ahead of pace, ~{{pct}}% left by reset",,active
645
- limits.explain.body_remaining,ui,LimitsPage,UsageLimitsPanel,explain_body_remaining,"The mark is the even-pace point; fill short of it means you're ahead.",,active
646
- limits.hover.resets_at,ui,LimitsPage,UsageLimitsPanel,hover_resets_at,"Resets {{time}}",,active
647
- limits.reset_bank.hover_detail,ui,LimitsPage,UsageLimitsPanel,reset_bank_hover_detail,"Expires {{date}} · {{days}}d left",,active
648
- limits.reset_bank.hover_detail_today,ui,LimitsPage,UsageLimitsPanel,reset_bank_hover_detail_today,"Expires {{date}} · today",,active
649
- limits.label.copilot_premium,ui,LimitsPage,UsageLimitsPanel,copilot_premium,"Premium",,active
650
- limits.label.copilot_chat,ui,LimitsPage,UsageLimitsPanel,copilot_chat,"Chat",,active
651
- limits.label.grok_month,ui,LimitsPage,UsageLimitsPanel,grok_month,"Month",,active
652
- limits.label.grok_ondemand,ui,LimitsPage,UsageLimitsPanel,grok_ondemand,"On-demand",,active
653
- limits.provider.claude,ui,LimitsPage,UsageLimitsPanel,provider_claude,"Claude",,active
654
- limits.provider.codex,ui,LimitsPage,UsageLimitsPanel,provider_codex,"Codex",,active
655
- limits.provider.cursor,ui,LimitsPage,UsageLimitsPanel,provider_cursor,"Cursor",,active
656
- limits.provider.gemini,ui,LimitsPage,UsageLimitsPanel,provider_gemini,"Gemini",,active
657
- limits.provider.kimi,ui,LimitsPage,UsageLimitsPanel,provider_kimi,"Kimi",,active
658
- limits.provider.kiro,ui,LimitsPage,UsageLimitsPanel,provider_kiro,"Kiro",,active
659
- limits.provider.grok,ui,LimitsPage,UsageLimitsPanel,provider_grok,"Grok Build",,active
660
- limits.provider.copilot,ui,LimitsPage,UsageLimitsPanel,provider_copilot,"GitHub Copilot",,active
661
- limits.provider.antigravity,ui,LimitsPage,UsageLimitsPanel,provider_antigravity,"Antigravity",,active
662
- limits.provider.zcode,ui,LimitsPage,UsageLimitsPanel,provider_zcode,"ZCode",,active
663
- limits.label.zcode_glm52,ui,LimitsPage,UsageLimitsPanel,zcode_glm52,"GLM-5.2",,active
664
- limits.label.zcode_glm5t,ui,LimitsPage,UsageLimitsPanel,zcode_glm5t,"GLM-5-Turbo",,active
665
- limits.label.zcode_5h,ui,LimitsPage,UsageLimitsPanel,zcode_5h,"5h",,active
666
- limits.label.zcode_weekly,ui,LimitsPage,UsageLimitsPanel,zcode_weekly,"Weekly",,active
667
- limits.label.zcode_tools,ui,LimitsPage,UsageLimitsPanel,zcode_tools,"Tools",,active
668
- limits.label.claude_5h,ui,LimitsPage,UsageLimitsPanel,claude_5h,"5h",,active
669
- limits.label.claude_7d,ui,LimitsPage,UsageLimitsPanel,claude_7d,"7d",,active
670
- limits.label.claude_opus,ui,LimitsPage,UsageLimitsPanel,claude_opus,"Opus",,active
671
- limits.label.codex_5h,ui,LimitsPage,UsageLimitsPanel,codex_5h,"5h",,active
672
- limits.label.codex_7d,ui,LimitsPage,UsageLimitsPanel,codex_7d,"7d",,active
673
- limits.label.codex_credits,ui,LimitsPage,UsageLimitsPanel,codex_credits,"Credits",,active
674
- limits.label.codex_spark_5h,ui,LimitsPage,UsageLimitsPanel,codex_spark_5h,"Spark 5h",,active
675
- limits.label.codex_spark_7d,ui,LimitsPage,UsageLimitsPanel,codex_spark_7d,"Spark 7d",,active
676
- limits.codex_credits.detail,ui,LimitsPage,UsageLimitsPanel,codex_credits_detail,"{{used}} / {{limit}} credits used · {{remaining}} left",,active
677
- limits.codex_reset_bank.title,ui,LimitsPage,UsageLimitsPanel,codex_reset_bank_title,"Resets",,active
678
- limits.codex_reset_bank.row_label,ui,LimitsPage,UsageLimitsPanel,codex_reset_bank_row_label,"Reset {{index}}",,active
679
- limits.codex_reset_bank.count_only,ui,LimitsPage,UsageLimitsPanel,codex_reset_bank_count_only,"Reset Bank: {{count}} available · expiry unavailable",,active
680
- limits.label.gemini_pro,ui,LimitsPage,UsageLimitsPanel,gemini_pro,"Pro",,active
681
- limits.label.gemini_flash,ui,LimitsPage,UsageLimitsPanel,gemini_flash,"Flash",,active
682
- limits.label.gemini_lite,ui,LimitsPage,UsageLimitsPanel,gemini_lite,"Lite",,active
683
- limits.label.antigravity_claude_weekly,ui,LimitsPage,UsageLimitsPanel,antigravity_claude_weekly,"Cl 7d",,active
684
- limits.label.antigravity_claude_5h,ui,LimitsPage,UsageLimitsPanel,antigravity_claude_5h,"Cl 5h",,active
685
- limits.label.antigravity_gemini_weekly,ui,LimitsPage,UsageLimitsPanel,antigravity_gemini_weekly,"Gm 7d",,active
686
- limits.label.antigravity_gemini_5h,ui,LimitsPage,UsageLimitsPanel,antigravity_gemini_5h,"Gm 5h",,active
687
- limits.label.antigravity_live,ui,LimitsPage,UsageLimitsPanel,antigravity_live,"live",,active
688
- limits.label.antigravity_cached,ui,LimitsPage,UsageLimitsPanel,antigravity_cached,"cached",,active
689
- limits.tooltip.antigravity_live,ui,LimitsPage,UsageLimitsPanel,antigravity_live_tooltip,"Real-time limits retrieved directly from the running Antigravity process.",,active
690
- limits.tooltip.antigravity_cached,ui,LimitsPage,UsageLimitsPanel,antigravity_cached_tooltip,"Cached limits. Run Antigravity IDE/CLI to refresh.",,active
691
- limits.bar.sub_one_percent,ui,LimitsPage,UsageLimitsPanel,bar_sub_one_percent,"<1",,active
692
- limits.status.not_connected,ui,LimitsPage,UsageLimitsPanel,status_not_connected,"Not connected",,active
693
- limits.status.no_data,ui,LimitsPage,UsageLimitsPanel,status_no_data,"No live limit data returned",,active
694
- limits.status.all_hidden,ui,LimitsPage,UsageLimitsPanel,status_all_hidden,"All limit providers are hidden. Open display settings to show them.",,active
695
- shared.time.now,shared,*,Shared,time_now,"now",,active
696
- shared.time.m_ago,shared,*,Shared,time_m_ago,"{{n}}m",,active
697
- shared.time.h_ago,shared,*,Shared,time_h_ago,"{{n}}h",,active
698
- shared.time.d_ago,shared,*,Shared,time_d_ago,"{{n}}d",,active
699
- nav.ip_check,shared,*,Sidebar,nav_ip_check,Claude IP Check,,active
700
- nav.skills,shared,*,Sidebar,nav_skills,Skills,,active
701
- skills.page.title,ui,SkillsPage,SkillsPage,title,Skills,,active
702
- skills.tab.my,ui,SkillsPage,SkillsPage,tab_my,My Skills,,active
703
- skills.tab.browse,ui,SkillsPage,SkillsPage,tab_browse,Browse,,active
704
- skills.action.refresh,ui,SkillsPage,SkillsPage,action_refresh,Refresh,,active
705
- skills.action.install,ui,SkillsPage,SkillCard,action_install,Install,,active
706
- skills.action.choose_targets,ui,SkillsPage,SkillCard,action_choose_targets,"Choose targets",,active
707
- skills.target.menu_label,ui,SkillsPage,SkillCard,target_menu_label,"Install to",,active
708
- skills.target.none,ui,SkillsPage,SkillsPage,target_none,"no targets",,active
709
- skills.toast.installed,ui,SkillsPage,SkillsPage,toast_installed,"Installed {{name}} to {{targets}}.",,active
710
- skills.action.remove,ui,SkillsPage,SkillsPage,action_remove,Remove,,active
711
- skills.action.search,ui,SkillsPage,SkillsPage,action_search,Search,,active
712
- skills.action.search_aria,ui,SkillsPage,SkillsPage,action_search_aria,"Search skills",,active
713
- skills.action.search_clear,ui,SkillsPage,SkillsPage,action_search_clear,"Clear search",,active
714
- skills.target.synced_summary,ui,SkillsPage,InstalledSkillRow,target_synced_summary,"Synced to {{targets}}",,active
715
- skills.target.synced_none,ui,SkillsPage,InstalledSkillRow,target_synced_none,"Not synced to any agent",,active
716
- skills.row.open_details,ui,SkillsPage,InstalledSkillRow,row_open_details,"Open details for {{name}}",,active
717
- skills.detail.close,ui,SkillsPage,SkillDetailPanel,detail_close,"Close details",,active
718
- skills.detail.sync_section_title,ui,SkillsPage,SkillDetailPanel,detail_sync_section_title,"Sync to",,active
719
- skills.detail.remove_button,ui,SkillsPage,SkillDetailPanel,detail_remove_button,"Remove from all agents",,active
720
- skills.detail.remove_confirm_hint,ui,SkillsPage,SkillDetailPanel,detail_remove_confirm_hint,"This unsyncs the skill from every agent and deletes its local copy.",,active
721
- skills.filter.agent_label,ui,SkillsPage,SkillsPage,filter_agent_label,"Agent",,active
722
- skills.filter.agent_all,ui,SkillsPage,SkillsPage,filter_agent_all,"All agents",,active
723
- skills.filter.clear,ui,SkillsPage,SkillsPage,filter_clear,"Clear filters",,active
724
- skills.my.placeholder,ui,SkillsPage,SkillsPage,my_placeholder,"Filter installed skills…",,active
725
- skills.filter.result_count,ui,SkillsPage,SkillsPage,filter_result_count,"{{filtered}} of {{total}} skills",,active
726
- skills.filter.result_count_browse,ui,SkillsPage,SkillsPage,filter_result_count_browse,"{{count}} results",,active
727
- skills.empty.no_match,ui,SkillsPage,SkillsPage,empty_no_match,"No skills match the current filters.",,active
728
- hint.dismiss,ui,shared,DismissibleHint,hint_dismiss,"Dismiss hint",,active
729
- hint.dismissible_aria,ui,shared,DismissibleHint,hint_dismissible_aria,"Dismissible hint",,active
730
- skills.card.installed,ui,SkillsPage,SkillCard,card_installed,Installed,,active
731
- skills.card.manage,ui,SkillsPage,SkillCard,card_manage,Manage,,active
732
- skills.card.targets_prefix,ui,SkillsPage,SkillCard,card_targets_prefix,"Will install to:",,active
733
- skills.card.targets_change,ui,SkillsPage,SkillCard,card_targets_change,Change,,active
734
- skills.card.installs,ui,SkillsPage,SkillCard,installs,"{{count}} installs",,active
735
- skills.source.label,ui,SkillsPage,SkillsPage,source_label,Source,,active
736
- skills.source.all,ui,SkillsPage,SkillsPage,source_all,All repositories,,active
737
- skills.mode.repo,ui,SkillsPage,SkillsPage,mode_repo,Repositories,,active
738
- skills.mode.skillssh,ui,SkillsPage,SkillsPage,mode_skillssh,skills.sh,,active
739
- skills.browse.placeholder_all,ui,SkillsPage,SkillsPage,browse_placeholder_all,"Search across enabled repositories…",,active
740
- skills.browse.placeholder_repo,ui,SkillsPage,SkillsPage,browse_placeholder_repo,"Search in {{repo}}…",,active
741
- skills.browse.placeholder_skillssh,ui,SkillsPage,SkillsPage,browse_placeholder_skillssh,"Search the skills.sh registry…",,active
742
- skills.browse.empty_sources,ui,SkillsPage,SkillsPage,browse_empty_sources,"Add a GitHub repository below to start browsing skills.",,active
743
- skills.browse.add_repo_hint,ui,SkillsPage,SkillsPage,browse_add_repo_hint,"Need more skills? Add a GitHub repository.",,active
744
- skills.browse.manage_sources,ui,SkillsPage,SkillsPage,browse_manage_sources,Manage sources,,active
745
- skills.browse.hint_skillssh,ui,SkillsPage,SkillsPage,browse_hint_skillssh,"Type at least 2 characters to search skills.sh.",,active
746
- skills.browse.loading_hint,ui,SkillsPage,SkillsPage,browse_loading_hint,"Fetching skill metadata from GitHub. First load can take up to a minute; results are cached.",,active
747
- skills.error.generic,ui,SkillsPage,SkillsPage,error_generic,"Skill operation failed.",,active
748
- skills.confirm.remove_title,ui,SkillsPage,SkillsPage,confirm_remove_title,"Remove {{name}}?",,active
749
- skills.confirm.remove_managed,ui,SkillsPage,SkillsPage,confirm_remove_managed,"This skill will be removed from every connected AI tool. You'll have a few seconds to undo.",,active
750
- skills.confirm.remove_local,ui,SkillsPage,SkillsPage,confirm_remove_local,"This will delete the skill folder on disk from every connected AI tool. This cannot be undone.",,active
751
- skills.toast.removed,ui,SkillsPage,SkillsPage,toast_removed,"Removed {{name}}.",,active
752
- shared.action.undo,shared,*,Shared,action_undo,"Undo",,active
753
- shared.action.dismiss,shared,*,Shared,action_dismiss,"Dismiss",,active
754
- shared.action.cancel,shared,*,Shared,action_cancel,"Cancel",,active
755
- shared.action.apply,shared,*,Shared,action_apply,"Apply",,active
756
- skills.empty.my,ui,SkillsPage,SkillsPage,empty_my,"No skills yet. Open Discover to search and install.",,active
757
- skills.empty.my_cta,ui,SkillsPage,SkillsPage,empty_my_cta,"Browse",,active
758
- skills.empty.browse,ui,SkillsPage,SkillsPage,empty_browse,"No skills found for this source.",,active
759
- skills.empty.search,ui,SkillsPage,SkillsPage,empty_search,"No results. Try a different query.",,active
760
- skills.repo.placeholder,ui,SkillsPage,SkillsPage,repo_placeholder,"owner/repository",,active
761
- skills.repo.add,ui,SkillsPage,SkillsPage,repo_add,"Add repository",,active
762
- skills.repo.invalid,ui,SkillsPage,SkillsPage,repo_invalid,"Use owner/repository or a GitHub repository URL.",,active
763
- skills.repo.remove,ui,SkillsPage,RepoRow,repo_remove,"Remove repository",,active
764
- settings.appearance.language.label,ui,SettingsPage,SettingsPage,language_label,Language,,active
765
- settings.appearance.language.hint,ui,SettingsPage,SettingsPage,language_hint,Use System to follow your computer language by default.,,active
766
- settings.appearance.language.system,ui,SettingsPage,SettingsPage,language_system,System,,active
767
- settings.appearance.language.english,ui,SettingsPage,SettingsPage,language_english,English,,active
768
- settings.appearance.language.chinese,ui,SettingsPage,SettingsPage,language_chinese,Simplified Chinese,,active
769
- settings.appearance.language.traditional_chinese,ui,SettingsPage,SettingsPage,language_traditional_chinese,Traditional Chinese,,active
770
- settings.appearance.language.japanese,ui,SettingsPage,SettingsPage,language_japanese,Japanese,,active
771
- settings.appearance.language.korean,ui,SettingsPage,SettingsPage,language_korean,Korean,,active
772
- settings.appearance.language.german,ui,SettingsPage,SettingsPage,language_german,German,,active
773
- dashboard.context_breakdown.empty,dashboard,DashboardPage,ContextBreakdownPanel,empty,"No Claude Code activity in the selected period.",,active
774
- dashboard.context_breakdown.empty_codex,dashboard,DashboardPage,ContextBreakdownPanel,empty_codex,"No Codex activity in the selected period.",,active
775
- dashboard.context_breakdown.error,dashboard,DashboardPage,ContextBreakdownPanel,error,"Couldn't read Claude Code logs for this view.",,active
776
- dashboard.context_breakdown.error_codex,dashboard,DashboardPage,ContextBreakdownPanel,error_codex,"Couldn't read Codex logs for this view.",,active
777
- dashboard.context_breakdown.bar_aria,dashboard,DashboardPage,ContextBreakdownPanel,bar_aria,"Token distribution: {{summary}}",,active
778
- dashboard.context_breakdown.system_prefix_tooltip,dashboard,DashboardPage,ContextBreakdownPanel,tooltip,"System prompt, tools schema, skills, rules, and MCP descriptions are cached together as one prefix and can't be separated from the logs.",,active
779
- dashboard.context_breakdown.footnote,dashboard,DashboardPage,ContextBreakdownPanel,footnote,"Approximate: cache reads accumulate across turns, so conversation history dominates over time. Only Claude Code logs expose the per-message detail this view requires.",,active
780
- dashboard.context_breakdown.footnote_codex,dashboard,DashboardPage,ContextBreakdownPanel,footnote_codex,"Codex uses non-overlapping token buckets here. Tool and exec drill-downs are separate heuristic attributions over the same turns.",,active
781
- dashboard.context_breakdown.category.system_prompt,dashboard,DashboardPage,ContextBreakdownPanel,cat,"System prompt",,active
782
- dashboard.context_breakdown.category.messages,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Messages",,active
783
- dashboard.context_breakdown.category.tool_calls,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Tool calls",,active
784
- dashboard.context_breakdown.category.mcp_servers,dashboard,DashboardPage,ContextBreakdownPanel,cat,"MCP servers",,active
785
- dashboard.context_breakdown.category.custom_agents,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Custom agents",,active
786
- dashboard.context_breakdown.category.reasoning,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Reasoning",,active
787
- dashboard.context_breakdown.category.skills,dashboard,DashboardPage,ContextBreakdownPanel,cat,"Skills",,active
788
- dashboard.context_breakdown.loading_aria,dashboard,DashboardPage,ContextBreakdownPanel,loading_aria,"Loading context breakdown",,active
789
- dashboard.context_breakdown.loading_hint,dashboard,DashboardPage,ContextBreakdownPanel,loading_hint,"Scanning session logs…",,active
790
- dashboard.context_breakdown.tool_details.total_column,dashboard,DashboardPage,ContextBreakdownPanel,tool_details_total_column,"Total",,active
791
- dashboard.context_breakdown.tool_details.unavailable_codex,dashboard,DashboardPage,ContextBreakdownPanel,tool_details_unavailable_codex,"Tool-level Codex details are unavailable for this period; showing queue totals only.",,active
792
- dashboard.context_breakdown.message_details.title,dashboard,DashboardPage,ContextBreakdownPanel,message_details_title,"Message details",,active
793
- dashboard.context_breakdown.message_details.note,dashboard,DashboardPage,ContextBreakdownPanel,message_details_note,"Aggregated only — message text is not stored.",,active
794
- dashboard.context_breakdown.message_details.category_column,dashboard,DashboardPage,ContextBreakdownPanel,message_details_category_column,"Category",,active
795
- dashboard.context_breakdown.message_details.user_input,dashboard,DashboardPage,ContextBreakdownPanel,message_details_user_input,"User input",,active
796
- dashboard.context_breakdown.message_details.conversation_history,dashboard,DashboardPage,ContextBreakdownPanel,message_details_conversation_history,"Conversation history",,active
797
- dashboard.context_breakdown.message_details.assistant_response,dashboard,DashboardPage,ContextBreakdownPanel,message_details_assistant_response,"Assistant response",,active
798
- dashboard.context_breakdown.exec_details.title,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_title,"Exec command details",,active
799
- dashboard.context_breakdown.exec_details.kind_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_kind_column,"Type",,active
800
- dashboard.context_breakdown.exec_details.calls_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_calls_column,"Calls",,active
801
- dashboard.context_breakdown.exec_details.failures_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_failures_column,"Fail",,active
802
- dashboard.context_breakdown.exec_details.duration_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_duration_column,"Duration",,active
803
- dashboard.context_breakdown.exec_details.max_duration_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_max_duration_column,"Max",,active
804
- dashboard.context_breakdown.exec_details.output_column,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_output_column,"Lines",,active
805
- dashboard.context_breakdown.exec_details.group_by_type,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_type,"By type",,active
806
- dashboard.context_breakdown.exec_details.group_by_executable,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_executable,"Executable",,active
807
- dashboard.context_breakdown.exec_details.group_by_command,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_command,"Command",,active
808
- dashboard.context_breakdown.exec_details.group_by_duration,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_duration,"Duration",,active
809
- dashboard.context_breakdown.exec_details.group_by_output,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_output,"Output",,active
810
- dashboard.context_breakdown.exec_details.group_by_exit,dashboard,DashboardPage,ContextBreakdownPanel,exec_details_group_by_exit,"By exit",,active
811
- heatmap.3d.hover_tip,ui,ActivityHeatmap,ActivityHeatmap,hover_tip,"Click to enter 3D fullscreen rotation analysis mode",,active
812
- heatmap.3d.modal.title,ui,ActivityHeatmap,ActivityHeatmap,title,"Token 3D Perspective",,active
813
- heatmap.3d.modal.desc,ui,ActivityHeatmap,ActivityHeatmap,desc,"Drag with left mouse button to rotate. Hover to inspect daily activity and multidimensional metrics.",,active
814
- heatmap.3d.modal.stats.total_tokens,ui,ActivityHeatmap,ActivityHeatmap,stats_total_tokens,"Annual Total Tokens",,active
815
- heatmap.3d.modal.stats.precision_total_tokens,ui,ActivityHeatmap,ActivityHeatmap,stats_precision_total_tokens,"Precise annual consumption",,active
816
- heatmap.3d.modal.stats.estimated_cost,ui,ActivityHeatmap,ActivityHeatmap,stats_estimated_cost,"Annual Estimated Cost",,active
817
- heatmap.3d.modal.stats.active_rate_days,ui,ActivityHeatmap,ActivityHeatmap,stats_active_rate_days,"Active Rate / Days",,active
818
- heatmap.3d.modal.stats.max_streak,ui,ActivityHeatmap,ActivityHeatmap,stats_max_streak,"Longest Active Streak",,active
819
- heatmap.3d.modal.stats.days_suffix,ui,ActivityHeatmap,ActivityHeatmap,stats_days_suffix,"Days",,active
820
- heatmap.3d.modal.stats.peak_day,ui,ActivityHeatmap,ActivityHeatmap,stats_peak_day,"Peak Day Blowout",,active
821
- heatmap.3d.modal.stats.precision_peak_value,ui,ActivityHeatmap,ActivityHeatmap,stats_precision_peak_value,"Precise daily peak",,active
822
- heatmap.3d.modal.stats.no_data,ui,ActivityHeatmap,ActivityHeatmap,stats_no_data,"No data",,active
823
- heatmap.3d.modal.legend.title,ui,ActivityHeatmap,ActivityHeatmap,legend_title,"Activity Levels",,active
824
- heatmap.3d.modal.palette.emerald,ui,ActivityHeatmap,ActivityHeatmap,palette_emerald,"Emerald City",,active
825
- heatmap.3d.modal.palette.ocean,ui,ActivityHeatmap,ActivityHeatmap,palette_ocean,"Ocean Abyss",,active
826
- heatmap.3d.modal.palette.neon,ui,ActivityHeatmap,ActivityHeatmap,palette_neon,"Cyber Neon",,active
827
- heatmap.3d.modal.palette.amber,ui,ActivityHeatmap,ActivityHeatmap,palette_amber,"Blazing Amber",,active
828
- heatmap.3d.modal.control.play,ui,ActivityHeatmap,ActivityHeatmap,control_play,"Start slow rotation",,active
829
- heatmap.3d.modal.control.pause,ui,ActivityHeatmap,ActivityHeatmap,control_pause,"Pause auto-rotation",,active
830
- heatmap.3d.modal.control.reset,ui,ActivityHeatmap,ActivityHeatmap,control_reset,"Reset 3D view",,active
831
- heatmap.3d.modal.footer.tip,ui,ActivityHeatmap,ActivityHeatmap,footer_tip,"Pinch to zoom / Scroll to zoom / Drag to rotate 3D chart",,active
832
- heatmap.3d.modal.ai.title.default,ui,ActivityHeatmap,ActivityHeatmap,ai_title_default,"Persistent Creator",,active
833
- heatmap.3d.modal.ai.eval.default,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_default,"Persist in the river of technology. Daily coding may not always be majestic, but every tiny active point records your thoughts and exploration. Sparks accumulate, eventually converging into your own digital ocean.",,active
834
- heatmap.3d.modal.ai.title.peak,ui,ActivityHeatmap,ActivityHeatmap,ai_title_peak,"Peak Contributor",,active
835
- heatmap.3d.modal.ai.eval.peak,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_peak,"This year, your token output shows extremely high engineering density. This scale of development is equivalent to deeply participating in the refactoring of a medium-to-large system base, with each keystroke converging complex logic into deterministic code. A testament to pure engineering passion.",,active
836
- heatmap.3d.modal.ai.title.heavy,ui,ActivityHeatmap,ActivityHeatmap,ai_title_heavy,"Heavy Producer",,active
837
- heatmap.3d.modal.ai.eval.heavy,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_heavy,"Exceptional continuous output. Your accumulated tokens have reached millions, equivalent to the volume of dozens of technical novellas. The highly saturated coding pace demonstrates your great execution in building digital assets.",,active
838
- heatmap.3d.modal.ai.title.core,ui,ActivityHeatmap,ActivityHeatmap,ai_title_core,"Core Productivity Expert",,active
839
- heatmap.3d.modal.ai.eval.core,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_core,"Highly resilient long-term commitment. Over the past year, you have steadily maintained a high-intensity development rhythm. With solid code volume and token output, you have silently built the core architecture, a true engineering backbone.",,active
840
- heatmap.3d.modal.ai.title.steady,ui,ActivityHeatmap,ActivityHeatmap,ai_title_steady,"Steady Developer",,active
841
- heatmap.3d.modal.ai.eval.steady,ui,ActivityHeatmap,ActivityHeatmap,ai_eval_steady,"Steady and firm accumulation of technology. Every step of token increment is a brick in the foundation of your future. This slow but steady pace is the path for an excellent developer to become an engineering master.",,active
842
- heatmap.3d.voxel.joke.1,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_joke1,"🔥 Extremely crazy! Produced {{value}} tokens! Are you training a large language model or writing a compiler by hand?",,active
843
- heatmap.3d.voxel.joke.2,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_joke2,"🚀 Epic output! Total {{value}} tokens. Today's production can circle the earth once, even the AI is amazed by you!",,active
844
- heatmap.3d.voxel.joke.3,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_joke3,"⚡ Critical Day! {{value}} tokens. Code is gushing out, and the keyboard is starting to smoke!",,active
845
- heatmap.3d.voxel.level3,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level3,"⚡ Productivity explosion ({{value}} tokens)! High efficiency and focus, keep up this peak state!",,active
846
- heatmap.3d.voxel.level2,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level2,"🌱 Getting into the groove ({{value}} tokens)! Steady output, every keystroke is contributing to the architecture.",,active
847
- heatmap.3d.voxel.level1,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level1,"🍃 Every drop counts ({{value}} tokens). Tiny commits are investments in the future, embrace compound interest!",,active
848
- heatmap.3d.voxel.level0,ui,ActivityHeatmap3D,ActivityHeatmap3D,voxel_level0,"💤 Recharging. On days without coding, inspiration grows silently.",,active
849
- ipcheck.page.title,ui,IpCheckPage,IpCheckPage,page_title,"Claude IP Check",,active
850
- ipcheck.page.subtitle,ui,IpCheckPage,IpCheckPage,page_subtitle,"Inspect the exit IP used to reach Claude, plus reputation, geo, and risk signals that may affect sign-in or trigger rate-limiting.",,active
851
- ipcheck.mask.toggle,ui,IpCheckPage,IpCheckPage,mask_toggle,"Hide IP",,active
852
- ipcheck.ipv6.warn,ui,IpCheckPage,IpCheckPage,ipv6_warn,"IPv6 detected. Using IPv6 to reach Claude Code is not recommended; some checks may be incomplete.",,active
853
- ipcheck.ip.cn,ui,IpCheckPage,IpCheckPage,ip_cn,"China exit IPv4",,active
854
- ipcheck.ip.cloudflare,ui,IpCheckPage,IpCheckPage,ip_cloudflare,"Cloudflare exit",,active
855
- ipcheck.ip.claude,ui,IpCheckPage,IpCheckPage,ip_claude,"Claude exit",,active
856
- ipcheck.ip.failed,ui,IpCheckPage,IpCheckPage,ip_failed,"Unable to fetch",,active
857
- ipcheck.ip.loading,ui,IpCheckPage,IpCheckPage,ip_loading,"Loading...",,active
858
- ipcheck.trust.title,ui,IpCheckPage,IpCheckPage,trust_title,"Trust Score",,active
859
- ipcheck.trust.subtitle,ui,IpCheckPage,IpCheckPage,trust_subtitle,"IP cleanliness from Claude's risk view",,active
860
- ipcheck.trust.no_data,ui,IpCheckPage,IpCheckPage,trust_no_data,"No data",,active
861
- ipcheck.trust.no_ip,ui,IpCheckPage,IpCheckPage,trust_no_ip,"Claude exit IP not detected — cannot score",,active
862
- ipcheck.trust.no_score,ui,IpCheckPage,IpCheckPage,trust_no_score,"No score data for this IP",,active
863
- ipcheck.trust.gauge.low,ui,IpCheckPage,IpCheckPage,trust_gauge_low,"0 High risk",,active
864
- ipcheck.trust.gauge.high,ui,IpCheckPage,IpCheckPage,trust_gauge_high,"100 Trusted",,active
865
- ipcheck.trust.label.pristine,ui,IpCheckPage,IpCheckPage,trust_label_pristine,"Pristine",,active
866
- ipcheck.trust.label.clean,ui,IpCheckPage,IpCheckPage,trust_label_clean,"Clean",,active
867
- ipcheck.trust.label.good,ui,IpCheckPage,IpCheckPage,trust_label_good,"Good",,active
868
- ipcheck.trust.label.neutral,ui,IpCheckPage,IpCheckPage,trust_label_neutral,"Neutral",,active
869
- ipcheck.trust.label.suspicious,ui,IpCheckPage,IpCheckPage,trust_label_suspicious,"Suspicious",,active
870
- ipcheck.trust.label.unreachable,ui,IpCheckPage,IpCheckPage,trust_label_unreachable,"Unreachable",,active
871
- ipcheck.trust.text.excellent,ui,IpCheckPage,IpCheckPage,trust_text_excellent,"Excellent reputation",,active
872
- ipcheck.trust.text.great,ui,IpCheckPage,IpCheckPage,trust_text_great,"Strong reputation",,active
873
- ipcheck.trust.text.minor,ui,IpCheckPage,IpCheckPage,trust_text_minor,"Minor risk",,active
874
- ipcheck.trust.text.moderate,ui,IpCheckPage,IpCheckPage,trust_text_moderate,"Moderate risk",,active
875
- ipcheck.trust.text.severe,ui,IpCheckPage,IpCheckPage,trust_text_severe,"Severe risk",,active
876
- ipcheck.trust.text.restricted,ui,IpCheckPage,IpCheckPage,trust_text_restricted,"Restricted region — Claude enforces strict risk controls",,active
877
- ipcheck.trust.region_warn.title,ui,IpCheckPage,IpCheckPage,region_warn_title,"Claude exit IP is in {{region}}",,active
878
- ipcheck.trust.region_warn.body,ui,IpCheckPage,IpCheckPage,region_warn_body,"Avoid signing in — high chance of triggering account flagging.",,active
879
- ipcheck.trust.region_support,ui,IpCheckPage,IpCheckPage,region_support,"Claude support",,active
880
- ipcheck.trust.region.accessible,ui,IpCheckPage,IpCheckPage,region_accessible,"Accessible",,active
881
- ipcheck.common.unknown,ui,IpCheckPage,IpCheckPage,common_unknown,"Unknown",,active
882
- ipcheck.props.title,ui,IpCheckPage,IpCheckPage,props_title,"IP Attributes",,active
883
- ipcheck.props.region,ui,IpCheckPage,IpCheckPage,props_region,"Region",,active
884
- ipcheck.props.city,ui,IpCheckPage,IpCheckPage,props_city,"City",,active
885
- ipcheck.props.type,ui,IpCheckPage,IpCheckPage,props_type,"Type",,active
886
- ipcheck.props.asn,ui,IpCheckPage,IpCheckPage,props_asn,"ASN",,active
887
- ipcheck.props.org,ui,IpCheckPage,IpCheckPage,props_org,"ISP",,active
888
- ipcheck.props.residential,ui,IpCheckPage,IpCheckPage,props_residential,"Residential",,active
889
- ipcheck.props.datacenter,ui,IpCheckPage,IpCheckPage,props_datacenter,"Datacenter",,active
890
- ipcheck.security.title,ui,IpCheckPage,IpCheckPage,sec_title,"Security Checks",,active
891
- ipcheck.security.vpn,ui,IpCheckPage,IpCheckPage,sec_vpn,"VPN",,active
892
- ipcheck.security.proxy,ui,IpCheckPage,IpCheckPage,sec_proxy,"Proxy",,active
893
- ipcheck.security.tor,ui,IpCheckPage,IpCheckPage,sec_tor,"Tor",,active
894
- ipcheck.security.crawler,ui,IpCheckPage,IpCheckPage,sec_crawler,"Crawler",,active
895
- ipcheck.security.abuser,ui,IpCheckPage,IpCheckPage,sec_abuser,"Abuse history",,active
896
- ipcheck.security.proxy_flag,ui,IpCheckPage,IpCheckPage,sec_proxy_flag,"Proxy",,active
897
- ipcheck.security.crawler_yes,ui,IpCheckPage,IpCheckPage,sec_crawler_yes,"Yes",,active
898
- ipcheck.security.crawler_no,ui,IpCheckPage,IpCheckPage,sec_crawler_no,"No",,active
899
- ipcheck.security.abuser_yes,ui,IpCheckPage,IpCheckPage,sec_abuser_yes,"Reported",,active
900
- ipcheck.security.abuser_no,ui,IpCheckPage,IpCheckPage,sec_abuser_no,"Clean",,active
901
- ipcheck.security.clean,ui,IpCheckPage,IpCheckPage,sec_clean,"Not detected",,active
902
- ipcheck.avail.title,ui,IpCheckPage,IpCheckPage,avail_title,"Claude Availability",,active
903
- ipcheck.avail.tooltip,ui,IpCheckPage,IpCheckPage,avail_tooltip,"Claude servers run in the US; latency above 100ms from Asia is normal.",,active
904
- ipcheck.avail.refresh,ui,IpCheckPage,IpCheckPage,avail_refresh,"Refresh",,active
905
- ipcheck.avail.svc_row,ui,IpCheckPage,IpCheckPage,avail_svc_row,"Service status",,active
906
- ipcheck.avail.latency.normal,ui,IpCheckPage,IpCheckPage,avail_lat_normal,"Normal",,active
907
- ipcheck.avail.latency.good,ui,IpCheckPage,IpCheckPage,avail_lat_good,"Good",,active
908
- ipcheck.avail.latency.slow,ui,IpCheckPage,IpCheckPage,avail_lat_slow,"Slow",,active
909
- ipcheck.avail.latency.unreachable,ui,IpCheckPage,IpCheckPage,avail_lat_unreach,"Unreachable",,active
910
- ipcheck.avail.svc.none,ui,IpCheckPage,IpCheckPage,avail_svc_none,"All systems normal",,active
911
- ipcheck.avail.svc.minor,ui,IpCheckPage,IpCheckPage,avail_svc_minor,"Minor outage",,active
912
- ipcheck.avail.svc.major,ui,IpCheckPage,IpCheckPage,avail_svc_major,"Major outage",,active
913
- ipcheck.avail.svc.critical,ui,IpCheckPage,IpCheckPage,avail_svc_critical,"Critical outage",,active
914
- ipcheck.avail.svc.maintenance,ui,IpCheckPage,IpCheckPage,avail_svc_maintenance,"Maintenance",,active
915
- ipcheck.avail.svc.other,ui,IpCheckPage,IpCheckPage,avail_svc_other,"Disrupted",,active
916
- ipcheck.dns.title,ui,IpCheckPage,IpCheckPage,dns_title,"DNS Leak",,active
917
- ipcheck.dns.status,ui,IpCheckPage,IpCheckPage,dns_status,"Status",,active
918
- ipcheck.dns.outlet,ui,IpCheckPage,IpCheckPage,dns_outlet,"DNS exit",,active
919
- ipcheck.dns.outlet_ip,ui,IpCheckPage,IpCheckPage,dns_outlet_ip,"DNS exit IP",,active
920
- ipcheck.dns.isp,ui,IpCheckPage,IpCheckPage,dns_isp,"Provider",,active
921
- ipcheck.dns.leaked,ui,IpCheckPage,IpCheckPage,dns_leaked,"Possible leak",,active
922
- ipcheck.dns.no_leak,ui,IpCheckPage,IpCheckPage,dns_no_leak,"No leak detected",,active
923
- ipcheck.dns.encrypted,ui,IpCheckPage,IpCheckPage,dns_encrypted,"DNS encrypted or hidden",,active
924
- ipcheck.dns.cn_tag,ui,IpCheckPage,IpCheckPage,dns_cn_tag,"China DNS",,active
925
- ipcheck.udp.title,ui,IpCheckPage,IpCheckPage,udp_title,"WebRTC UDP Leak",,active
926
- ipcheck.udp.status,ui,IpCheckPage,IpCheckPage,udp_status,"Status",,active
927
- ipcheck.udp.outlet,ui,IpCheckPage,IpCheckPage,udp_outlet,"UDP exit",,active
928
- ipcheck.udp.outlet_ip,ui,IpCheckPage,IpCheckPage,udp_outlet_ip,"UDP exit IP",,active
929
- ipcheck.udp.origin,ui,IpCheckPage,IpCheckPage,udp_origin,"Origin",,active
930
- ipcheck.udp.disabled,ui,IpCheckPage,IpCheckPage,udp_disabled,"WebRTC disabled",,active
931
- ipcheck.udp.no_leak,ui,IpCheckPage,IpCheckPage,udp_no_leak,"No leak detected",,active
932
- ipcheck.udp.leaked,ui,IpCheckPage,IpCheckPage,udp_leaked,"Possible leak",,active
933
- ipcheck.udp.anomaly,ui,IpCheckPage,IpCheckPage,udp_anomaly,"Anomaly",,active
934
- ipcheck.device.title,ui,IpCheckPage,IpCheckPage,dev_title,"Device Info",,active
935
- ipcheck.device.tz,ui,IpCheckPage,IpCheckPage,dev_tz,"Timezone",,active
936
- ipcheck.device.lang,ui,IpCheckPage,IpCheckPage,dev_lang,"Language",,active
937
- ipcheck.device.os,ui,IpCheckPage,IpCheckPage,dev_os,"OS / Browser",,active
938
- ipcheck.device.touch,ui,IpCheckPage,IpCheckPage,dev_touch,"Touch",,active
939
- ipcheck.device.net,ui,IpCheckPage,IpCheckPage,dev_net,"Network type",,active
940
- ipcheck.device.dnt,ui,IpCheckPage,IpCheckPage,dev_dnt,"Do Not Track",,active
941
- ipcheck.device.webgl_render,ui,IpCheckPage,IpCheckPage,dev_webgl_render,"WebGL renderer",,active
942
- ipcheck.device.canvas_fp,ui,IpCheckPage,IpCheckPage,dev_canvas_fp,"Canvas fingerprint",,active
943
- ipcheck.device.webgl_fp,ui,IpCheckPage,IpCheckPage,dev_webgl_fp,"WebGL fingerprint",,active
944
- ipcheck.device.match,ui,IpCheckPage,IpCheckPage,dev_match,"Match",,active
945
- ipcheck.device.mismatch,ui,IpCheckPage,IpCheckPage,dev_mismatch,"Mismatch",,active
946
- ipcheck.device.local,ui,IpCheckPage,IpCheckPage,dev_local,"Local",,active
947
- ipcheck.device.estimate_suffix,ui,IpCheckPage,IpCheckPage,dev_est_suffix,"(est.)",,active
948
- ipcheck.device.diff_equal,ui,IpCheckPage,IpCheckPage,dev_diff_eq,"Slight offset",,active
949
- ipcheck.device.diff_ahead,ui,IpCheckPage,IpCheckPage,dev_diff_ahead,"Claude is {{h}}h ahead",,active
950
- ipcheck.device.diff_behind,ui,IpCheckPage,IpCheckPage,dev_diff_behind,"Claude is {{h}}h behind",,active
951
- ipcheck.device.lang_expected,ui,IpCheckPage,IpCheckPage,dev_lang_expected,"Claude region usually",,active
952
- ipcheck.device.touch_yes,ui,IpCheckPage,IpCheckPage,dev_touch_yes,"Yes",,active
953
- ipcheck.device.touch_no,ui,IpCheckPage,IpCheckPage,dev_touch_no,"No",,active
954
- ipcheck.device.dnt_on,ui,IpCheckPage,IpCheckPage,dev_dnt_on,"On",,active
955
- ipcheck.device.dnt_off,ui,IpCheckPage,IpCheckPage,dev_dnt_off,"Off",,active
956
- ipcheck.device.dnt_unset,ui,IpCheckPage,IpCheckPage,dev_dnt_unset,"Unset",,active
957
- ipcheck.device.net_unsupported,ui,IpCheckPage,IpCheckPage,dev_net_unsup,"Not detected",,active
958
- ipcheck.device.unsupported,ui,IpCheckPage,IpCheckPage,dev_unsupported,"Unsupported",,active
959
- ipcheck.history.title,ui,IpCheckPage,IpCheckPage,hist_title,"Claude exit IP history",,active
960
- ipcheck.history.subtitle,ui,IpCheckPage,IpCheckPage,hist_subtitle,"Stored only in this browser, up to 6 entries",,active
961
- ipcheck.history.clear,ui,IpCheckPage,IpCheckPage,hist_clear,"Clear",,active
962
- ipcheck.history.empty,ui,IpCheckPage,IpCheckPage,hist_empty,"No history yet",,active
963
- ipcheck.history.current,ui,IpCheckPage,IpCheckPage,hist_current,"Now",,active
964
- ipcheck.region.CN,ui,IpCheckPage,IpCheckPage,region_cn,"Mainland China",,active
965
- ipcheck.region.HK,ui,IpCheckPage,IpCheckPage,region_hk,"Hong Kong",,active
966
- ipcheck.region.MO,ui,IpCheckPage,IpCheckPage,region_mo,"Macao",,active
967
- ipcheck.region.RU,ui,IpCheckPage,IpCheckPage,region_ru,"Russia",,active
968
- ipcheck.region.KP,ui,IpCheckPage,IpCheckPage,region_kp,"North Korea",,active
969
- ipcheck.region.IR,ui,IpCheckPage,IpCheckPage,region_ir,"Iran",,active
970
- ipcheck.region.SY,ui,IpCheckPage,IpCheckPage,region_sy,"Syria",,active
971
- ipcheck.region.CU,ui,IpCheckPage,IpCheckPage,region_cu,"Cuba",,active
972
- ipcheck.region.BY,ui,IpCheckPage,IpCheckPage,region_by,"Belarus",,active
973
- ipcheck.region.VE,ui,IpCheckPage,IpCheckPage,region_ve,"Venezuela",,active
974
- leaderboard.profile_modal.close,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,close,"Close",,active
975
- leaderboard.profile_modal.loading,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,loading,"Loading profile…",,active
976
- leaderboard.profile_modal.error,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,error,"Failed to load profile.",,active
977
- leaderboard.profile_modal.empty,dashboard,LeaderboardProfileModal,LeaderboardProfileModal,empty,"This profile is not public.",,active
978
- leaderboard.profile_modal.row_aria,dashboard,LeaderboardPage,LeaderboardRow,row_aria,"Open profile for {{name}}",,active
979
- leaderboard.profile_modal.rank,dashboard,LeaderboardProfileModal,Hero,rank,"#{{rank}}",,active
980
- leaderboard.profile_modal.hero.total_tokens,dashboard,LeaderboardProfileModal,Hero,total_tokens,"Total Tokens",,active
981
- leaderboard.profile_modal.hero.total_cost,dashboard,LeaderboardProfileModal,Hero,total_cost,"Total Cost",,active
982
- leaderboard.profile_modal.hero.github,dashboard,LeaderboardProfileModal,Hero,github,"GitHub profile",,active
983
- leaderboard.profile_modal.stat.total_cost,dashboard,LeaderboardProfileModal,StatCards,total_cost,"Total Cost",,active
984
- leaderboard.profile_modal.stat.total_tokens,dashboard,LeaderboardProfileModal,StatCards,total_tokens,"Total Tokens",,active
985
- leaderboard.profile_modal.stat.active_days,dashboard,LeaderboardProfileModal,StatCards,active_days,"Active Days",,active
986
- leaderboard.profile_modal.stat.avg_per_day,dashboard,LeaderboardProfileModal,StatCards,avg_per_day,"Avg/Day",,active
987
- leaderboard.profile_modal.streak.current,dashboard,LeaderboardProfileModal,Streak,current,"Current Streak",,active
988
- leaderboard.profile_modal.streak.longest,dashboard,LeaderboardProfileModal,Streak,longest,"Longest Streak",,active
989
- leaderboard.profile_modal.streak.days,dashboard,LeaderboardProfileModal,Streak,days,"{{count}} days",,active
990
- leaderboard.profile_modal.best_day.title,dashboard,LeaderboardProfileModal,BestDay,title,"Best Day",,active
991
- leaderboard.profile_modal.best_day.none,dashboard,LeaderboardProfileModal,BestDay,none,"—",,active
992
- leaderboard.profile_modal.models.count,dashboard,LeaderboardProfileModal,Models,count,"{{count}} models used",,active
993
- leaderboard.profile_modal.models.favorite,dashboard,LeaderboardProfileModal,Models,favorite,"Favorite",,active
994
- leaderboard.profile_modal.models.none,dashboard,LeaderboardProfileModal,Models,none,"No models tracked",,active
995
- leaderboard.profile_modal.heatmap.title,dashboard,LeaderboardProfileModal,Heatmap,title,"Activity (last 365 days)",,active
996
- leaderboard.profile_modal.providers.title,dashboard,LeaderboardProfileModal,Providers,title,"By provider",,active
997
- leaderboard.profile_modal.providers.none,dashboard,LeaderboardProfileModal,Providers,none,"No usage this period.",,active
998
- leaderboard.profile_modal.view_full,dashboard,LeaderboardProfileModal,Footer,view_full,"View full profile",,active
999
- leaderboard.profile_modal.badge.copy_url,dashboard,LeaderboardProfileModal,Badge,copy_url,"Copy profile URL",,active
1000
- leaderboard.profile_modal.badge.copy,dashboard,LeaderboardProfileModal,Badge,copy,"Copy README badge",,active
1001
- leaderboard.profile_modal.badge.copied,dashboard,LeaderboardProfileModal,Badge,copied,"Copied!",,active
1002
- local_only.title,dashboard,LocalOnlyNotice,LocalOnlyNotice,title,"Available in the app",,active
1003
- local_only.body,dashboard,LocalOnlyNotice,LocalOnlyNotice,body,"This page reads data from your own machine, so it only works in the Mac app or the CLI dashboard.",,active
1004
- local_only.open_app,dashboard,LocalOnlyNotice,LocalOnlyNotice,open_app,"Open in Mac app",,active
1005
- local_only.download,dashboard,LocalOnlyNotice,LocalOnlyNotice,download,"Get the Mac app",,active
1006
- leaderboard.profile.like.aria_like,dashboard,LeaderboardProfileModal,LikeButton,aria_like,"Like profile",,active
1007
- leaderboard.profile.like.aria_unlike,dashboard,LeaderboardProfileModal,LikeButton,aria_unlike,"Unlike profile",,active
1008
- dashboard.auth_gate.title,dashboard,DashboardPage,DashboardView,auth_gate_title,"Sign in to Token Tracker",,active
1009
- dashboard.auth_gate.subtitle,dashboard,DashboardPage,DashboardView,auth_gate_subtitle,"Sign in to sync and view your API usage, cost, and token consumption trends in the cloud.",,active
1010
- dashboard.auth_gate.button,dashboard,DashboardPage,DashboardView,auth_gate_button,"Sign In",,active
1011
- dashboard.expired_gate.title,dashboard,DashboardPage,DashboardView,expired_gate_title,"Session Expired",,active
1012
- dashboard.expired_gate.subtitle,dashboard,DashboardPage,DashboardView,expired_gate_subtitle,"Your session has expired. Please sign in again to continue viewing your cloud dashboard.",,active
1013
- dashboard.expired_gate.button,dashboard,DashboardPage,DashboardView,expired_gate_button,"Sign In Again",,active
1014
- shared.app_name,shared,*,*,app_name,"Token Tracker",,active
1015
- dashboard.auth_gate.hero_title,dashboard,DashboardPage,DashboardView,hero_title,"Track every AI agent token seamlessly",,active
1016
- dashboard.auth_gate.hero_subtitle,dashboard,DashboardPage,DashboardView,hero_subtitle,"Clear, transparent, and multi-endpoint control",,active
1017
- dashboard.auth_gate.desc,dashboard,DashboardPage,DashboardView,desc,"Securely sync token quotas, concurrent costs, and latency across Claude Code, Cursor, and Gemini CLI in a beautifully unified real-time dashboard.",,active
1018
- dashboard.auth_gate.feature.sync.title,dashboard,DashboardPage,DashboardView,sync_title,"Real-time Cloud Sync",,active
1019
- dashboard.auth_gate.feature.sync.desc,dashboard,DashboardPage,DashboardView,sync_desc,"Automated pipeline harvesting terminal execution costs into secure cloud records.",,active
1020
- dashboard.auth_gate.feature.anal.title,dashboard,DashboardPage,DashboardView,anal_title,"Multi-dimensional Analytics",,active
1021
- dashboard.auth_gate.feature.anal.desc,dashboard,DashboardPage,DashboardView,anal_desc,"Slice and dice by models or period to isolate high-cost peaks and allocations.",,active
1022
- dashboard.auth_gate.feature.guard.title,dashboard,DashboardPage,DashboardView,guard_title,"Local-first Autonomy",,active
1023
- dashboard.auth_gate.feature.guard.desc,dashboard,DashboardPage,DashboardView,guard_desc,"Skip all auth steps entirely on localhost. Preserves local debug speed.",,active
1024
- dashboard.expired_gate.hero_title,dashboard,DashboardPage,DashboardView,expired_hero_title,"Your cloud session has expired",,active
1025
- dashboard.expired_gate.desc,dashboard,DashboardPage,DashboardView,expired_desc,"For privacy and cloud drive security, active sessions expire automatically after a period. Verify again to restore your dashboard instantly.",,active
1026
- dashboard.expired_gate.feature.sec.title,dashboard,DashboardPage,DashboardView,sec_title,"Secure Protection",,active
1027
- dashboard.expired_gate.feature.sec.desc,dashboard,DashboardPage,DashboardView,sec_desc,"Encrypted tokens automatically rotate, guaranteeing complete assets privacy.",,active
1028
- dashboard.expired_gate.feature.restore.title,dashboard,DashboardPage,DashboardView,restore_title,"Seamless Restore",,active
1029
- dashboard.expired_gate.feature.restore.desc,dashboard,DashboardPage,DashboardView,restore_desc,"Instantly resume telemetry charts without reconfiguring terminal hooks.",,active
1030
- dashboard.expired_gate.feature.cloud.title,dashboard,DashboardPage,DashboardView,cloud_title,"Multi-device Sync",,active
1031
- dashboard.expired_gate.feature.cloud.desc,dashboard,DashboardPage,DashboardView,cloud_desc,"Readily access parsed token logs anywhere through synced dashboard.",,active
1032
- landing.v2.leaderboard.kicker,landing,LandingPage,MarketingLanding,leaderboard_kicker,"GLOBAL TOKEN LEADERBOARD",,active
1033
- landing.v2.leaderboard.title,landing,LandingPage,MarketingLanding,leaderboard_title,"AI Token Efficiency",,active
1034
- landing.v2.leaderboard.subtitle,landing,LandingPage,MarketingLanding,leaderboard_subtitle,"Optionally and anonymously sync your local AI token usage to join the global efficiency leaderboard. Benchmark cost efficiency and model rotations with developers worldwide.",,active
1035
- landing.v2.leaderboard.active_developers,landing,LandingPage,MarketingLanding,active_developers,"1,240+ developers actively syncing",,active
1036
- landing.v2.leaderboard.top_badge,landing,LandingPage,MarketingLanding,top_badge,"EFFICIENCY CHAMP",,active
1037
- landing.v2.leaderboard.rank_first,landing,LandingPage,MarketingLanding,rank_first,"NO. 1 GLOBAL",,active
1038
- landing.v2.leaderboard.rank_second,landing,LandingPage,MarketingLanding,rank_second,"NO. 2",,active
1039
- landing.v2.leaderboard.rank_third,landing,LandingPage,MarketingLanding,rank_third,"NO. 3",,active
1040
- landing.v2.leaderboard.synced_tokens,landing,LandingPage,MarketingLanding,synced_tokens,"{{count}} tokens synced",,active
1041
- landing.v2.leaderboard.efficiency,landing,LandingPage,MarketingLanding,efficiency,"Efficiency: {{value}}",,active
1042
- landing.v2.leaderboard.streak_days,landing,LandingPage,MarketingLanding,streak_days,"{{count}} day streak",,active
1043
- landing.v2.leaderboard.view_more,landing,LandingPage,MarketingLanding,view_more,"View full leaderboard",,active
1044
- cmdk.placeholder,ui,CommandPalette,CommandPalette,placeholder,"Search pages and skills…",,active
1045
- cmdk.empty,ui,CommandPalette,CommandPalette,empty,"No matches",,active
1046
- cmdk.group.pages,ui,CommandPalette,CommandPalette,group_pages,"Pages",,active
1047
- cmdk.group.skills,ui,CommandPalette,CommandPalette,group_skills,"Skills",,active
1048
- cmdk.close,ui,CommandPalette,CommandPalette,close,"Close command menu",,active
1049
- cmdk.open_aria,ui,CommandPalette,CommandPalette,open_aria,"Command menu",,active
1050
- skills.dot.synced_aria,ui,SkillsPage,AgentDots,dot_synced_aria,"{{agent}}: synced. Click to unsync.",,active
1051
- skills.dot.off_aria,ui,SkillsPage,AgentDots,dot_off_aria,"{{agent}}: not synced. Click to sync.",,active
1052
- skills.dot.orphan_aria,ui,SkillsPage,AgentDots,dot_orphan_aria,"{{agent}}: link broken. Click to re-sync.",,active
1053
- skills.update.badge,ui,SkillsPage,InstalledSkillRow,update_badge,"Update",,active
1054
- skills.select.row_aria,ui,SkillsPage,InstalledSkillRow,select_row_aria,"Select {{name}}",,active
1055
- skills.select.toolbar_aria,ui,SkillsPage,BatchToolbar,select_toolbar_aria,"Bulk actions",,active
1056
- skills.select.count,ui,SkillsPage,BatchToolbar,select_count,"{{count}} selected",,active
1057
- skills.select.bulk_sync,ui,SkillsPage,BatchToolbar,select_bulk_sync,"Sync to",,active
1058
- skills.select.bulk_sync_hint,ui,SkillsPage,BatchToolbar,select_bulk_sync_hint,"Add agent to all selected",,active
1059
- skills.select.bulk_remove,ui,SkillsPage,BatchToolbar,select_bulk_remove,"Remove",,active
1060
- skills.select.clear,ui,SkillsPage,BatchToolbar,select_clear,"Clear",,active
1061
- skills.mode.popular,ui,SkillsPage,SkillsPage,mode_popular,"Popular",,active
1062
- skills.browse.placeholder_popular,ui,SkillsPage,SkillsPage,browse_placeholder_popular,"Filter popular skills",,active
1063
- skills.empty.popular,ui,SkillsPage,SkillsPage,empty_popular,"No popular skills right now.",,active
1064
- skills.toast.bulk_synced,ui,SkillsPage,SkillsPage,toast_bulk_synced,"Synced {{count}} skills to {{agent}}.",,active
1065
- skills.toast.bulk_removed,ui,SkillsPage,SkillsPage,toast_bulk_removed,"Removed {{count}} skills.",,active
1066
- skills.toast.synced_one,ui,SkillsPage,SkillsPage,toast_synced_one,"Synced {{name}} to {{agent}}.",,active
1067
- skills.toast.unsynced_one,ui,SkillsPage,SkillsPage,toast_unsynced_one,"Unsynced {{name}} from {{agent}}.",,active
1068
- skills.toast.updated,ui,SkillsPage,SkillsPage,toast_updated,"Updated {{name}}.",,active
1069
- skills.confirm.bulk_remove_title,ui,SkillsPage,SkillsPage,confirm_bulk_remove_title,"Remove {{count}} skills?",,active
1070
- skills.confirm.bulk_remove_desc,ui,SkillsPage,SkillsPage,confirm_bulk_remove_desc,"This unsyncs each skill from every agent and deletes its local copy.",,active
1071
- skills.update.available,ui,SkillsPage,SkillDetailPanel,update_available,"A newer version is available upstream.",,active
1072
- skills.update.action,ui,SkillsPage,SkillDetailPanel,update_action,"Update",,active
1073
- skills.usage.section_title,ui,SkillsPage,SkillDetailPanel,usage_section_title,"Activity",,active
1074
- skills.usage.invocations,ui,SkillsPage,SkillDetailPanel,usage_invocations,"Invocations",,active
1075
- skills.usage.cost,ui,SkillsPage,SkillDetailPanel,usage_cost,"Est. cost",,active
1076
- skills.usage.never,ui,SkillsPage,SkillDetailPanel,usage_never,"Never",,active
1077
- skills.usage.last_used,ui,SkillsPage,SkillDetailPanel,usage_last_used,"Last used",,active
1078
- skills.usage.today,ui,SkillsPage,SkillDetailPanel,usage_today,"Today",,active
1079
- skills.usage.days_ago,ui,SkillsPage,SkillDetailPanel,usage_days_ago,"{{days}}d ago",,active
1080
- skills.usage.months_ago,ui,SkillsPage,SkillDetailPanel,usage_months_ago,"{{months}}mo ago",,active
1081
- skills.usage.unknown,ui,SkillsPage,SkillDetailPanel,usage_unknown,"Unknown",,active
1082
- skills.usage.unused,ui,SkillsPage,SkillDetailPanel,usage_unused,"Not invoked yet. Possible dead weight if you never use it.",,active
1083
- skills.usage.disclaimer,ui,SkillsPage,SkillDetailPanel,usage_disclaimer,"Counts from Claude transcripts. Cost is the approximate spend of turns that invoked this skill.",,active
1084
- dashboard.device_filter.all,dashboard,DashboardPage,UsageOverview,option_all,"All devices",,active
1085
- dashboard.device_filter.aria,dashboard,DashboardPage,UsageOverview,select_aria,"Filter by device",,active
1086
- dashboard.device_card.title,dashboard,DashboardPage,DeviceUsageCard,title,"By device",,active
1087
- dashboard.device_card.unnamed,dashboard,DashboardPage,DeviceUsageCard,unnamed,"Unnamed device",,active
1088
- dashboard.device_card.rename_aria,dashboard,DashboardPage,DeviceUsageCard,rename_aria,"Rename device",,active
1089
- dashboard.device_card.rename_placeholder,dashboard,DashboardPage,DeviceUsageCard,rename_placeholder,"Device name",,active
1090
- dashboard.device_card.rename_save,dashboard,DashboardPage,DeviceUsageCard,rename_save,"Save name",,active
1091
- dashboard.device_card.rename_cancel,dashboard,DashboardPage,DeviceUsageCard,rename_cancel,"Cancel",,active
1092
- dashboard.device_card.rename_error,dashboard,DashboardPage,DeviceUsageCard,rename_error,"Couldn't rename — that name may already be in use.",,active
1093
- dashboard.device_card.clear,dashboard,DashboardPage,DeviceUsageCard,clear,"Clear",,active
1094
- dashboard.device_card.empty,dashboard,DashboardPage,DeviceUsageCard,empty,"No active devices found",,active
1095
- dashboard.device_card.account_scope,dashboard,DashboardPage,DeviceUsageCard,account_scope,"Account-wide",,active
1096
- dashboard.device_card.account_scope_tip,dashboard,DashboardPage,DeviceUsageCard,account_scope_tip,"Synced from the provider's account API — not tied to a single device",,active
1097
- limits.provider.opencode_go,ui,LimitsPage,UsageLimitsPanel,provider_opencode_go,"OpenCode Go",,active
1098
- limits.label.opencode_go_5h,ui,LimitsPage,UsageLimitsPanel,opencode_go_5h,"5h",,active
1099
- limits.label.opencode_go_weekly,ui,LimitsPage,UsageLimitsPanel,opencode_go_weekly,"Weekly",,active
1100
- limits.label.opencode_go_monthly,ui,LimitsPage,UsageLimitsPanel,opencode_go_monthly,"Monthly",,active
1101
- limits.opencodeGo.setupHint.title,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_title,"Connect OpenCode Go",,active
1102
- limits.opencodeGo.setupHint.subtitle,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_subtitle,"Limits read from your signed-in opencode.ai session (no public API).",,active
1103
- limits.opencodeGo.setupHint.step1,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_step1,"Sign in and open your Go workspace.",,active
1104
- limits.opencodeGo.setupHint.cta,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_cta,"Open opencode.ai",,active
1105
- limits.opencodeGo.setupHint.step2,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_step2,"Copy the auth cookie (and optionally workspace ID) from that page:",,active
1106
- limits.opencodeGo.setupHint.step2_workspace,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_step2_workspace,"Workspace ID (optional): the wrk_… segment in the page URL.",,active
1107
- limits.opencodeGo.setupHint.step2_cookie,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_step2_cookie,"auth cookie (required): DevTools ▸ Application ▸ Cookies ▸ opencode.ai ▸ auth.",,active
1108
- limits.opencodeGo.setupHint.step3,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_step3,"Add to your shell profile, then restart the tracker:",,active
1109
- limits.opencodeGo.setupHint.note_app,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_note_app,"macOS app: set with launchctl setenv, then reopen the app.",,active
1110
- limits.opencodeGo.setupHint.copy,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_copy,"Copy",,active
1111
- limits.opencodeGo.setupHint.copied,ui,LimitsPage,UsageLimitsPanel,opencode_go_hint_copied,"Copied",,active
1112
- settings.menubar.updates.checking,ui,SettingsPage,NativeAppFooter,updates_checking,"Checking...","正在检测...",active
1113
- settings.menubar.updates.upToDate,ui,SettingsPage,NativeAppFooter,updates_uptodate,"You are up to date!","已是最新版本",active
1114
- settings.menubar.updates.failed,ui,SettingsPage,NativeAppFooter,updates_failed,"Failed to check for updates. Please try again.","检查更新失败,请重试",active
1115
- settings.menubar.updates.modalTitle,ui,SettingsPage,NativeAppFooter,updates_title,"Update Available","发现新版本",active
1116
- settings.menubar.updates.modalDescription,ui,SettingsPage,NativeAppFooter,updates_desc,"A new version {{version}} is available. Would you like to view and download it on GitHub?","发现新版本 {{version}}。是否前往 GitHub 查看并下载?",active
1117
- settings.menubar.updates.modalConfirm,ui,SettingsPage,NativeAppFooter,updates_confirm,"Download","前往下载",active
1118
- settings.menubar.updates.modalCancel,ui,SettingsPage,NativeAppFooter,updates_cancel,"Cancel","取消",active
1119
- settings.menubar.updates.footerCore,ui,SettingsPage,NativeAppFooter,updates_footer_core,"TokenTracker v{{version}}",,active
1120
- settings.menubar.updates.footerCombined,ui,SettingsPage,NativeAppFooter,updates_footer_combined,"TokenTrackerBar v{{barVersion}} (Core v{{coreVersion}})",,active
1121
- nav.pet,shared,*,Sidebar,nav_pet,"Pet",,active
1122
- pet.page.eyebrow,dashboard,PetPage,PetPage,eyebrow,"Desktop companion",,active
1123
- pet.page.title,dashboard,PetPage,PetPage,title,"Pet",,active
1124
- pet.page.subtitle,dashboard,PetPage,PetPage,subtitle,"Choose a companion and preview how it reacts to your real AI activity.",,active
1125
- pet.preview.states,dashboard,PetPage,PetPage,preview_states,"Preview pet states",,active
1126
- pet.controls.title,dashboard,PetPage,PetPage,controls_title,"Desktop controls",,active
1127
- pet.controls.show,dashboard,PetPage,PetPage,show,"Show desktop pet",,active
1128
- pet.controls.show_hint,dashboard,PetPage,PetPage,show_hint,"Keep your companion above other windows.",,active
1129
- pet.controls.size,dashboard,PetPage,PetPage,size,"Pet size",,active
1130
- pet.controls.native_only,dashboard,PetPage,PetPage,native_only,"Open this page in the TokenTracker desktop app to control the live pet.",,active
1131
- pet.characters.title,dashboard,PetPage,PetPage,characters_title,"Choose your companion",,active
1132
- pet.characters.subtitle,dashboard,PetPage,PetPage,characters_subtitle,"Every character shares the full state system, with its own palette and silhouette.",,active
1133
- pet.character.clawd,dashboard,PetPage,PetPage,character_clawd,"Clawd",,active
1134
- pet.character.clawd_desc,dashboard,PetPage,PetPage,character_clawd_desc,"The original claw-shaped token keeper.",,active
1135
- pet.character.sprout,dashboard,PetPage,PetPage,character_sprout,"Sprout",,active
1136
- pet.character.sprout_desc,dashboard,PetPage,PetPage,character_sprout_desc,"A leaf-eared seedling spirit with tiny root feet.",,active
1137
- pet.character.byte,dashboard,PetPage,PetPage,character_byte,"Byte",,active
1138
- pet.character.byte_desc,dashboard,PetPage,PetPage,character_byte_desc,"A hovering terminal robot with expressive screen eyes.",,active
1139
- pet.character.ember,dashboard,PetPage,PetPage,character_ember,"Ember",,active
1140
- pet.character.ember_desc,dashboard,PetPage,PetPage,character_ember_desc,"A flame-tailed fox spirit that celebrates hot streaks.",,active
1141
- pet.state.calm,dashboard,PetPage,PetPage,state_calm,"Calm",,active
1142
- pet.state.focus,dashboard,PetPage,PetPage,state_focus,"Focus",,active
1143
- pet.state.multitask,dashboard,PetPage,PetPage,state_multitask,"Multi-model",,active
1144
- pet.state.streak,dashboard,PetPage,PetPage,state_streak,"Streak",,active
1145
- pet.state.celebrate,dashboard,PetPage,PetPage,state_celebrate,"New usage",,active
1146
- pet.state.rest,dashboard,PetPage,PetPage,state_rest,"Rest",,active
1147
- pet.size.small,dashboard,PetPage,PetPage,size_small,"Small",,active
1148
- pet.size.medium,dashboard,PetPage,PetPage,size_medium,"Medium",,active
1149
- pet.size.large,dashboard,PetPage,PetPage,size_large,"Large",,active
1150
- pet.import.title,dashboard,PetPage,PetPage,import_title,"Import Codex Pet",,active
1151
- pet.import.subtitle,dashboard,PetPage,PetPage,import_subtitle,"Paste a codex-pets.net link or choose a .zip package.",,active
1152
- pet.import.add,dashboard,PetPage,PetPage,import_add,"Add",,active
1153
- pet.import.zip,dashboard,PetPage,PetPage,import_zip,"Choose package",,active
1154
- pet.import.remove,dashboard,PetPage,PetPage,import_remove,"Remove imported pet",,active
1155
- pet.import.success,dashboard,PetPage,PetPage,import_success,"Pet imported and selected.",,active
1156
- pet.import.failed,dashboard,PetPage,PetPage,import_failed,"Could not import this pet.",,active
1157
- pet.import.busy,dashboard,PetPage,PetPage,import_busy,"Importing…",,active
1158
- pet.format.v2,dashboard,PetPage,PetPage,format_v2,"V2",,active
1159
- pet.import.removed,dashboard,PetPage,PetPage,import_removed,"Imported pet removed.",,active
1160
- pet.import.url_label,dashboard,PetPage,PetPage,import_url_label,"Codex Pets URL or pet id",,active
1161
- `,e9={"header.auth.sign_in_aria":"登录","login.back_home":"返回首页","login.cloud_only":"未配置云端登录。请使用 localhost 上的本地仪表盘。","login.title":"登录","login.subtitle":"选择邮箱或已连接账号。","login.dismiss":"关闭","login.verify_email_success":"邮箱已验证。你现在可以登录。","login.verify_email_pending":"请先在邮箱中完成验证,然后再登录。","login.oauth.continue":"使用 {{provider}} 继续","login.divider":"或","login.tab.sign_in":"登录","login.tab.sign_up":"创建账户","login.field.name":"显示名称","login.field.name_placeholder":"可选","login.field.email":"电子邮件","login.field.password":"密码","login.forgot_password":"忘记密码?","login.password_hint":"至少 {{min}} 个字符。","login.submit.sign_in":"使用邮箱登录","login.submit.sign_up":"创建账号","reset_password.back_to_sign_in":"返回登录","reset_password.title":"重置密码","reset_password.subtitle":"输入邮箱以接收重置链接。","reset_password.request.submit":"发送重置链接","reset_password.request.sent":"已发送重置链接与验证码,请检查邮箱。","reset_password.field.code":"重置验证码","reset_password.field.new_password":"新密码","reset_password.field.confirm_password":"确认密码","reset_password.reset.submit":"重置密码","reset_password.error.password_mismatch":"两次输入的密码不一致。","reset_password.error.missing_token":"缺少重置令牌。请重新请求重置链接。","reset_password.success":"密码已更新。你现在可以使用新密码登录。","reset_password.success_cta":"返回登录","auth.callback.processing":"处理中…","auth.callback.success":"登录成功","auth.callback.redirecting":"正在返回 TokenTracker…","auth.callback.failed":"登录未完成,请重试。","auth.callback.close":"关闭此页","login_modal.subtitle":"登录以加入排行榜","login_modal.continue_email":"使用邮箱继续","login_modal.divider_email":"邮箱","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"数据来源:{{source}}","shared.error.prefix":"错误:{{error}}","shared.status.unsynced":"—","shared.time.now":"刚刚","shared.time.m_ago":"{{n}}分钟前","shared.time.h_ago":"{{n}}小时前","shared.time.d_ago":"{{n}}天前","error.boundary.title":"出了点问题","error.boundary.subtitle":"这个视图渲染失败了","error.boundary.hint":"打开控制台,然后重新加载页面","error.boundary.no_details":"没有错误详细信息","error.boundary.action.reload":"重新加载","identity_card.rank_label":"排名","identity_card.streak_label":"活跃天数","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 天","usage.summary.total":"Token 总数","usage.summary.toggle_aria":"切换紧凑数字格式","usage.period.day":"日","usage.period.week":"周","usage.period.month":"月","usage.period.total":"总计","usage.period.custom":"自定义","usage.metric.total":"总计","usage.metric.input":"输入","usage.metric.output":"输出","usage.metric.cached_input":"缓存输入","usage.metric.reasoning_output":"推理输出","usage.button.refresh":"刷新","usage.overview.tablist_aria":"时间范围","usage.overview.cost_breakdown_aria":"查看成本明细","usage.overview.distribution_aria":"来源占比:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%,{{tokens}} Token,{{cost}}。点击{{action}}详情","usage.overview.expand":"展开","usage.overview.collapse":"收起","usage.overview.model_count":"{{count}} 个模型","usage.overview.model_details_aria":"{{provider}} 模型详情","widgets.page.title":"组件","widgets.cta.open_gallery":"打开小组件库","widgets.cta.download":"下载 Mac 应用","widgets.cta.macos_only":"仅限 macOS","widgets.menubar.section.title":"菜单栏","widgets.gallery.section.title":"桌面小组件","widgets.summary.name":"使用概览","widgets.summary.description":"今天和近 7 天的用量,以及紧凑趋势线。","widgets.heatmap.name":"热力图","widgets.heatmap.description":"像 GitHub 一样,一眼看清活跃和空闲的日子。","widgets.topModels.name":"热门模型","widgets.topModels.description":"你最常用的模型,按 Token 占比排序。","widgets.limits.name":"使用限制","widgets.limits.description":"Claude、Codex、Cursor、Gemini 等的实时速率限制进度。","daily.sort.date.label":"日期","daily.sort.date.title":"按日期排序","daily.sort.total.label":"总计","daily.sort.total.title":"按总计排序","daily.sort.input.label":"输入","daily.sort.input.title":"按输入排序","daily.sort.output.label":"输出","daily.sort.output.title":"按输出排序","daily.sort.cached.label":"缓存","daily.sort.cached.title":"按缓存输入排序","daily.sort.reasoning.label":"推理","daily.sort.reasoning.title":"按推理输出排序","daily.sort.conversations.label":"对话数","daily.sort.conversations.title":"按对话排序","details.pagination.prev":"上一页","details.pagination.next":"下一页","limits.copilot.otelHint.title":"跟踪 Copilot Token 使用情况","limits.copilot.otelHint.body":"限额信息通过你的 GitHub OAuth 令牌读取。如果还想记录逐 Token 用量,请启用 Copilot 的 OpenTelemetry 导出,把下面这段加到你的 shell 配置文件(~/.zshrc 或 ~/.bashrc):","limits.copilot.otelHint.copy":"复制","limits.copilot.otelHint.copied":"已复制","limits.panel.title":"使用限制","limits.panel.mode_separator":" · ","limits.label.cursor_plan":"套餐","limits.label.cursor_auto":"自动","limits.label.cursor_api":"API","limits.label.kiro_month":"月度","limits.label.kiro_bonus":"奖励","limits.label.kimi_weekly":"周","limits.label.kimi_5h":"5h","limits.label.kimi_total":"总量","limits.label.kimi_parallel":"并发:{{count}}","limits.explain.used":"{{label}}:已用 {{used}}%","limits.explain.on_track":"{{label}}:节奏正常,预计用到 {{pct}}%","limits.explain.ahead_eta":"{{label}}:偏快,约 {{eta}} 后用完","limits.explain.ahead_pct":"{{label}}:偏快,预计用到 {{pct}}%","limits.explain.body":"竖标为匀速到现在应到的位置,填充超过即为偏快。","limits.explain.remaining":"{{label}}:剩余 {{used}}%","limits.explain.on_track_remaining":"{{label}}:节奏正常,预计剩余 {{pct}}%","limits.explain.ahead_pct_remaining":"{{label}}:偏快,预计剩余 {{pct}}%","limits.explain.body_remaining":"竖标为匀速到现在应到的位置,填充不足即为偏快。","limits.label.copilot_premium":"高级","limits.label.copilot_chat":"对话","limits.label.grok_month":"月度","limits.label.grok_ondemand":"按需","limits.provider.claude":"Claude","limits.provider.codex":"Codex","limits.provider.cursor":"Cursor","limits.provider.gemini":"Gemini","limits.provider.kimi":"Kimi","limits.provider.kiro":"Kiro","limits.provider.grok":"Grok Build","limits.provider.copilot":"GitHub Copilot","limits.provider.antigravity":"Antigravity","limits.provider.zcode":"ZCode","limits.provider.opencode_go":"OpenCode Go","limits.label.zcode_glm52":"GLM-5.2","limits.label.zcode_glm5t":"GLM-5-Turbo","limits.label.opencode_go_5h":"5h","limits.label.opencode_go_weekly":"Weekly","limits.label.opencode_go_monthly":"Monthly","limits.label.claude_5h":"5h","limits.label.claude_7d":"7d","limits.label.claude_opus":"Opus","limits.label.codex_5h":"5h","limits.label.codex_7d":"7d","limits.label.codex_credits":"额度","limits.label.codex_spark_5h":"Spark 5h","limits.label.codex_spark_7d":"Spark 7d","limits.codex_credits.detail":"已用 {{used}} / {{limit}} 点额度 · 剩余 {{remaining}}","limits.codex_reset_bank.title":"重置","limits.codex_reset_bank.row_label":"重置 {{index}}","limits.codex_reset_bank.count_only":"重置额度:可用 {{count}} 次 · 到期时间不可用","limits.label.gemini_pro":"Pro","limits.label.gemini_flash":"Flash","limits.label.gemini_lite":"Lite","limits.label.antigravity_claude_weekly":"Cl 7d","limits.label.antigravity_claude_5h":"Cl 5h","limits.label.antigravity_gemini_weekly":"Gm 7d","limits.label.antigravity_gemini_5h":"Gm 5h","qpd.card.title":"研发性价比与交付成本","qpd.card.badge":"Beta","qpd.card.subtitle":"基于已合并的 PR 历史,估算不同模型的平均交付成本。","qpd.card.updating":"更新中…","qpd.card.best_value":"最省钱","qpd.card.col_model":"模型","qpd.card.col_cost":"花费","qpd.card.col_accepted":"已合 PR","qpd.card.col_rate":"采纳率","qpd.card.col_qpd":"单PR成本","qpd.card.qpd_tooltip":"平均每合并一个 PR 消耗的 Token 资金 (总花费 ÷ 已合并数)","qpd.card.totals":"已合并 {{accepted}}/{{outcomes}} 个 PR · 总花费 {{cost}}","qpd.card.et":"有效 Token: {{tokens}} (采纳率 {{rate}})","qpd.card.et_tooltip":"有效 Token (Effective Tokens) —— 最终成功采纳并合并的代码所消耗的 Token 占总消耗的比例","qpd.card.sparse_notice":"提示:数据量较少,建议筛选更窄的时间区间以获得精准分析。","limits.tooltip.antigravity_live":"实时额度,直接获取自本地运行的 Antigravity 进程。","limits.tooltip.antigravity_cached":"缓存的额度。启动 Antigravity IDE/CLI 以刷新。","limits.bar.sub_one_percent":"<1","limits.status.not_connected":"未连接","limits.status.no_data":"未返回实时限额数据","limits.status.all_hidden":"所有限额提供商都已隐藏。请打开显示设置重新显示。","nav.usage":"用量","nav.limits":"限额","nav.widgets":"小组件","nav.skills":"Skills","nav.leaderboard":"排行榜","nav.collapse":"折叠侧边栏","nav.expand":"展开侧边栏","nav.menu":"打开导航菜单","nav.close_menu":"关闭导航菜单","nav.aside_label":"主导航","nav.nav_label":"导航","limits.page.subtitle":"AI 工具的速率限制和配额使用情况。","leaderboard.community.tokens_label":"社区累计追踪 Token","leaderboard.community.devs":"{{count}} 位开发者正在同步","leaderboard.community.view_stats":"查看全局社区统计","leaderboard.community.tokens_chip":"社区 Token","leaderboard.community.devs_chip":"开发者","leaderboard.community.modal.title":"全局指标","leaderboard.community.modal.description":"全社区同步数据的匿名汇总。","leaderboard.community.modal.total_tokens":"总 Token","leaderboard.community.modal.active_devs":"活跃开发者","leaderboard.community.modal.active_devs_detail":"{{count}} 正在同步","leaderboard.community.modal.global_spend":"预估花费","leaderboard.community.modal.global_spend_detail":"${{amount}} USD","leaderboard.community.modal.top_models":"热门模型","leaderboard.community.modal.all_time":"全部时间","leaderboard.community.modal.tokens_title":"{{count}} tokens","leaderboard.community.modal.note":"模型分布基于社区全部时间的累计同步数据汇总。","shared.dialog.close":"关闭对话框","limits.settings.toggle_visible":"切换可见性","limits.settings.display_mode_label":"用量","limits.settings.display_mode_used":"已用","limits.settings.display_mode_remaining":"剩余","limits.page.openSettings":"显示设置","nav.group.general":"常规","nav.group.tools":"工具","nav.group.account":"账户","nav.settings":"设置","header.auth.open_settings":"打开设置","settings.page.title":"设置","settings.page.subtitle":"管理你的账户、外观和显示偏好。","settings.section.appearance":"外观","settings.section.account":"账户","settings.labs.qpd.label":"PR 研发性价比分析","settings.labs.qpd.hint":"关联 GitHub PR 历史,分析各模型的平均交付成本与有效 Token。","settings.labs.qpd.aria":"切换 PR 性价比分析","settings.appearance.theme.label":"主题","settings.appearance.theme.hint":"选择 Token Tracker 在仪表盘中的显示方式。","settings.appearance.theme.light":"浅色","settings.appearance.theme.dark":"深色","settings.appearance.theme.system":"系统","settings.account.displayName":"显示名称","settings.account.edit":"编辑","settings.account.save":"保存","settings.account.saving":"保存...","settings.account.cancel":"取消","settings.account.userId":"用户 ID","settings.account.copyUserId":"复制用户 ID","settings.account.copy":"复制","settings.account.copied":"已复制","settings.account.cloudSync":"云同步","settings.account.cloudSyncHint":"将本地用量上传到你的 Token Tracker 云端账号。","settings.account.publicProfile":"公开主页","settings.account.publicProfileHint":"在公开排行榜中展示你的用量。","settings.account.displayNameAnonymousHint":"匿名状态下,排行榜会隐藏你的名字和头像","settings.account.displayNameDisabledWhileAnon":"请先关闭匿名,再编辑名字","settings.account.githubUrl":"GitHub 主页","settings.account.githubUrlHint":"在排行榜名字旁显示 GitHub 链接。","settings.account.githubUrlPlaceholder":"用户名或 https://github.com/用户名","settings.account.githubUrlInvalid":"请输入 GitHub 用户名,或 https://github.com/用户名","leaderboard.github.aria":"打开 GitHub 主页","leaderboard.github.tooltipAction":"点击查看 GitHub 主页","leaderboard.github.tooltipPrefix":"可在","leaderboard.github.tooltipSettingsLink":"设置","leaderboard.github.tooltipSuffix":"中配置你的主页","settings.account.signOut":"退出登录","settings.account.signIn":"登录","settings.account.signedOutHint":"登录后可管理云同步和排行榜偏好。","settings.section.menubar":"菜单栏应用","settings.menubar.showStats":"在菜单栏中显示统计信息","settings.menubar.showStatsHint":"在菜单栏图标旁边显示今天的 Token 数量和成本。","settings.menubar.animatedIcon":"动画图标","settings.menubar.animatedIconHint":"闪烁 Clawd 角色并在菜单栏中播放同步动画。","settings.menubar.confettiOnReset":"额度重置时撒花","settings.menubar.confettiOnResetHint":"在接近上限后,额度重置时放一场烟花庆祝。","settings.menubar.launchAtLogin":"登录时启动","settings.menubar.launchAtLoginHint":"登录 macOS 时自动启动 TokenTrackerBar。","settings.menubar.syncNow":"立即同步","settings.menubar.syncNowHint":"触发本地AI工具日志立即解析并上传。","settings.menubar.syncing":"正在同步...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"检查更新","settings.footer.statusPage":"系统状态","menubar.slot.primary":"第一个位置","menubar.slot.secondary":"第二个位置","menubar.native_only":"打开 macOS 版 TokenTrackerBar 后可编辑菜单栏显示。","menubar.metric.today_tokens":"今日 Token","menubar.metric.today_cost":"今日成本","menubar.metric.last_7d_tokens":"近 7 天 Token","menubar.metric.total_tokens":"总 Token","menubar.metric.total_cost":"总成本","menubar.metric.claude_5h":"Claude 5 小时限额","menubar.metric.claude_7d":"Claude 7 天限额","menubar.metric.codex_5h":"Codex 5 小时限额","menubar.metric.codex_7d":"Codex 7 天限额","menubar.metric.codex_credits":"Codex 额度上限","menubar.metric.codex_spark_5h":"Codex Spark 5 小时限额","menubar.metric.codex_spark_7d":"Codex Spark 7 天限额","nav.ip_check":"Claude IP 检查","skills.page.title":"Skills","skills.tab.my":"我的","skills.tab.browse":"发现","skills.action.refresh":"刷新","skills.action.install":"安装","skills.action.choose_targets":"选择目标","skills.target.menu_label":"安装到","skills.target.none":"未选目标","skills.toast.installed":"已把 {{name}} 安装到 {{targets}}。","skills.action.remove":"移除","skills.action.search":"搜索","skills.action.search_aria":"搜索 skills","skills.action.search_clear":"清除搜索","skills.target.synced_summary":"已同步到 {{targets}}","skills.target.synced_none":"尚未同步到任何 agent","skills.row.open_details":"查看 {{name}} 详情","skills.detail.close":"关闭详情","skills.detail.sync_section_title":"同步到","skills.detail.remove_button":"从所有 agent 移除","skills.detail.remove_confirm_hint":"这会从每个 agent 取消同步并删除本地副本。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"全部 agent","skills.filter.clear":"清除筛选","skills.my.placeholder":"筛选已安装的 skills…","skills.filter.result_count":"{{filtered}} / {{total}} 个 skill","skills.filter.result_count_browse":"{{count}} 个结果","skills.empty.no_match":"当前筛选下没有匹配的 skill。","hint.dismiss":"关闭提示","hint.dismissible_aria":"可关闭的提示","skills.card.installed":"已安装","skills.card.targets_prefix":"将安装到:","skills.card.targets_change":"更改","skills.card.installs":"{{count}} 次安装","skills.source.label":"来源","skills.source.all":"全部仓库","skills.mode.repo":"仓库","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"在已启用的仓库里搜索…","skills.browse.placeholder_repo":"在 {{repo}} 中搜索…","skills.browse.placeholder_skillssh":"在 skills.sh 仓库中搜索…","skills.browse.empty_sources":"添加一个 GitHub 仓库以开始浏览技能。","skills.browse.add_repo_hint":"想要更多 skill?添加一个 GitHub 仓库。","skills.browse.manage_sources":"管理来源","skills.browse.hint_skillssh":"至少输入 2 个字符以搜索 skills.sh。","skills.browse.loading_hint":"正在从 GitHub 拉取 skill 信息,首次加载可能需要一分钟,结果会缓存。","skills.error.generic":"Skill 操作失败。","skills.confirm.remove_title":"要移除 {{name}} 吗?","skills.confirm.remove_managed":"这个 skill 将从所有已连接的 AI 工具中移除,几秒内可以撤销。","skills.confirm.remove_local":"将从所有 AI 工具目录中删除该 skill 文件夹。此操作无法撤销。","skills.toast.removed":"已移除 {{name}}。","shared.action.undo":"撤销","shared.action.cancel":"取消","shared.action.apply":"应用","skills.empty.my":"还没有 skill。去「发现」搜索或安装。","skills.empty.my_cta":"去发现","skills.empty.browse":"这个来源下没有找到技能。","skills.empty.search":"没有结果,换个关键词试试。","skills.repo.placeholder":"owner/repository","skills.repo.add":"添加仓库","skills.repo.invalid":"请输入 owner/repository 或 GitHub 仓库 URL。","skills.repo.remove":"移除仓库","settings.appearance.language.label":"语言","settings.appearance.language.hint":"使用“系统”时会默认跟随本机语言。","settings.appearance.language.system":"系统","settings.appearance.language.english":"英语","settings.appearance.language.chinese":"简体中文","settings.appearance.language.traditional_chinese":"繁体中文","settings.appearance.language.japanese":"日语","settings.appearance.language.korean":"韩语","settings.appearance.currency.label":"货币","settings.appearance.currency.hint":"选择用量成本的显示币种。","settings.appearance.currency.opt.usd":"美元 ($)","settings.appearance.currency.opt.eur":"欧元 (€)","settings.appearance.currency.opt.gbp":"英镑 (£)","settings.appearance.currency.opt.cny":"人民币 (¥)","settings.appearance.currency.opt.jpy":"日元 (¥)","settings.appearance.currency.opt.hkd":"港币 (HK$)","settings.appearance.currency.rate_source.default":"内置默认汇率","settings.appearance.currency.rate_source.fetched":"数据源:open.er-api.com","settings.appearance.currency.rate_updated":"更新于 {{when}}","settings.appearance.currency.rate_never":"尚未刷新"},t9={"usage.overview.antigravity_notice_title":"Token 为估算值","usage.overview.cache_hit_rate_label":"缓存命中率","usage.overview.cache_hit_rate_detail":"{{reused}} 复用 / {{input}} 输入","usage.overview.antigravity_notice_body":"Antigravity 的本地日志没有真实用量字段,这里的数字是按字符长度(约 4 字符/Token)估算出来的,也没有扣除 Gemini 的 prompt cache 折扣。请把它当作上限估算,不要直接对账账单。","stats.period.today":"今日","stats.period.week":"本周","stats.period.month":"本月","stats.period.all":"全部","stats.period.last_7d":"7 天","stats.period.last_30d":"30 天","stats.period.avg":"平均","stats.period.convs":"对话","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"折叠模型分解","dashboard.core_index.expand_aria":"展开模型细分","dashboard.rolling.title":"最近的活动","dashboard.rolling.last_7d":"过去 7 天","dashboard.rolling.last_30d":"过去 30 天","dashboard.rolling.avg_active_day":"日平均","dashboard.projects.title":"项目用量","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"星标","dashboard.projects.limit_label":"展示","dashboard.projects.limit_aria":"选择仓库显示数量","dashboard.projects.limit_top_3":"前 3 名","dashboard.projects.limit_top_6":"前 6 名","dashboard.projects.limit_top_10":"前 10 名","dashboard.projects.empty":"没有公开仓库","dashboard.widgets.title":"桌面小组件","dashboard.widgets.hint":"右键点按桌面 → 编辑小组件 → 搜索“TokenTracker”","dashboard.widgets.dismiss_aria":"关闭小组件介绍","dashboard.cost_breakdown.title":"成本明细","dashboard.cost_breakdown.total_label":"预计总成本","dashboard.cost_breakdown.close":"关闭","trend.monitor.label":"使用趋势","trend.zoom.open_aria":"展开全屏","trend.zoom.close_aria":"关闭","trend.zoom.badge":"趋势洞察","trend.zoom.desc":"悬停任意柱子查看 token、成本与对话数。切换粒度可从月份下钻到半小时。","trend.zoom.insight_badge":"洞察","trend.zoom.tooltip.cost":"成本","trend.zoom.tooltip.conversations":"对话","trend.zoom.stats.tokens":"Token 总量","trend.zoom.stats.cost":"总成本","trend.zoom.stats.conversations":"对话数","trend.zoom.stats.peak":"峰值时段","trend.zoom.gran.aria":"粒度","trend.zoom.gran.30min":"30 分钟","trend.zoom.gran.day":"天","trend.zoom.gran.month":"月","trend.zoom.prev_day":"前一天","trend.zoom.next_day":"后一天","trend.zoom.loading":"加载中…","trend.zoom.pick_day":"选择日期","trend.zoom.pick_range":"选择日期范围","trend.zoom.insight.empty":"一段安静的时光,没有一个 token 流过。","trend.zoom.insight.calm":"轻描淡写。模型大多在待命,只在你需要时才醒来搭把手。","trend.zoom.insight.steady":"{{active}} 个活跃时段里节奏平稳,峰值 {{peak}}。是那种不声不响就把事情交付掉的节奏。","trend.zoom.insight.heavy":"火力全开:{{active}} 个时段持续高热,峰值冲到 {{peak}}。这是自己制造势能、而非等待灵感的人的产出。","trend.zoom.insight.massive":"工业级别。{{peak}} 的峰值,吞吐从不降温。到这个量级,你已经不是在用模型,而是在运营一座工厂。","heatmap.title":"热力图","heatmap.empty":"尚无活动数据。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"一","heatmap.day.tue":"二","heatmap.day.wed":"三","heatmap.day.thu":"四","heatmap.day.fri":"五","heatmap.day.sat":"六","dashboard.session_expired.copy_label":"运行 npx --yes tokentracker-cli init","dashboard.session_expired.copied":"已复制","dashboard.install.prompt":"安装 Node.js 18+ 然后运行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"复制安装命令","dashboard.install.copy_base":"复制初始化命令","dashboard.install.copied":"已复制到剪贴板","dashboard.install.link_code.loading":"正在生成专属代码...","dashboard.install.link_code.failed":"专属代码不可用","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"每日细目","dashboard.daily.empty":"还没有数据。先使用 AI CLI,再运行 {{cmd}}。","dashboard.identity.title":"你的个人资料","dashboard.identity.subtitle":"记录你的编码之旅","dashboard.identity.fallback":"匿名用户","dashboard.overview.layout.drag_handle":"拖拽以重新排列","dashboard.overview.layout.reset":"恢复默认排列","dashboard.screenshot.twitter_text":"记录中的 {{total_tokens}} Token。\\n{{model_name}} 以 {{model_percent}}% 领先。\\n\\n我的 AI 使用情况,未经审计 →","heatmap.3d.hover_tip":"点击进入 3D 全屏旋转分析模式","heatmap.3d.modal.title":"Token 三维透视","heatmap.3d.modal.desc":"按住左键拖拽可任意旋转,悬浮感知每日活跃数据与多维统计。","heatmap.3d.modal.stats.total_tokens":"年度 Token 总量","heatmap.3d.modal.stats.precision_total_tokens":"精准年消耗量","heatmap.3d.modal.stats.estimated_cost":"年度估算费用","heatmap.3d.modal.stats.active_rate_days":"活跃占比 / 天数","heatmap.3d.modal.stats.max_streak":"最长连续活跃","heatmap.3d.modal.stats.days_suffix":"天","heatmap.3d.modal.stats.peak_day":"单日峰值暴击","heatmap.3d.modal.stats.precision_peak_value":"精确单日峰值","heatmap.3d.modal.stats.no_data":"无数据","heatmap.3d.modal.legend.title":"活跃度层级","heatmap.3d.modal.palette.emerald":"翡翠之城","heatmap.3d.modal.palette.ocean":"深海浩瀚","heatmap.3d.modal.palette.neon":"赛博霓虹","heatmap.3d.modal.palette.amber":"烈焰余晖","heatmap.3d.modal.control.play":"启动慢速自转","heatmap.3d.modal.control.pause":"暂停自动旋转","heatmap.3d.modal.control.reset":"重置 3D 视角","heatmap.3d.modal.footer.tip":"双指缩放 / 滚轮缩放 / 鼠标拖拽旋转 3D 图表","heatmap.3d.modal.ai.title.default":"持之以恒的行者","heatmap.3d.modal.ai.eval.default":"在技术的长河中持之以恒。也许日常的编码并不总是波澜壮阔,但每一个微小的活跃点都在记录着您的思考与探索。星火成留,终将汇聚成属于您的数字海洋。","heatmap.3d.modal.ai.title.peak":"极限活跃级贡献者","heatmap.3d.modal.ai.eval.peak":"这一年中,您的 Token 产出表现出极高的工程密度。如此规模的开发量相当于深度参与了中大型系统底座的重构,每一次击键都在将复杂的逻辑收敛为确定性的代码。这是极度专注与纯粹工程热爱的最好印证。","heatmap.3d.modal.ai.title.heavy":"高频产出级开发者","heatmap.3d.modal.ai.eval.heavy":"卓越的持续输出。您的 Token 累积量已达数百万字,相当于数十部中篇技术巨著的体量。高饱和度的编码节奏表明您正在以极高的执行力构建属于您的数字资产,展现了卓越的创造力。","heatmap.3d.modal.ai.title.core":"核心生产力专家","heatmap.3d.modal.ai.eval.core":"极具韧性的长期投入。在过去的一年中,您在较长周期内稳定保持着高强度的开发节奏。您用扎实的代码行数与 Token 产出,默默筑起了项目的核心架构,是当之无愧的工程支柱。","heatmap.3d.modal.ai.title.steady":"稳健成长型工程师","heatmap.3d.modal.ai.eval.steady":"踏实而坚定的技术积累。每一次 Token 的递增,都是您在坚实地砌下通往未来的代码基石。这种细水长流的稳健节奏,往往是一个优秀开发者通往工程大师的必经之路。","heatmap.3d.voxel.joke.1":"🔥 极度疯狂!产出 {{value}} tokens!你是在疯狂训练大模型,还是手撸了一个编译器?","heatmap.3d.voxel.joke.2":"🚀 史诗级输出!共 {{value}} tokens。今日产出可绕地球一圈,AI 都在为你惊叹!","heatmap.3d.voxel.joke.3":"⚡ 爆击日!{{value}} tokens。代码如泉涌,键盘已经开始冒烟了!","heatmap.3d.voxel.level3":"⚡ 生产力大爆发({{value}} tokens)!高效专注的黄金时刻,继续保持这个巅峰状态!","heatmap.3d.voxel.level2":"🌱 渐入佳境({{value}} tokens)!稳步产出,每一次敲击键盘都是在为大厦添砖加瓦。","heatmap.3d.voxel.level1":"🍃 聚沙成塔({{value}} tokens)。微小的提交也是对未来的投资,保持复利的力量!","heatmap.3d.voxel.level0":"💤 养精蓄锐。在不写代码的日子里,灵感也在悄悄生长。","ipcheck.page.title":"Claude IP 检测","ipcheck.page.subtitle":"查看当前访问 Claude 的出口 IP、纯净度、地理与风险信号,识别可能影响登录或触发风控的因素。","ipcheck.mask.toggle":"隐藏 IP","ipcheck.ipv6.warn":"当前为 IPv6 环境,不建议用 IPv6 访问 Claude Code,部分检测结果可能不完整。","ipcheck.ip.cn":"中国出口 IPv4","ipcheck.ip.cloudflare":"Cloudflare 出口","ipcheck.ip.claude":"Claude 出口","ipcheck.ip.failed":"获取失败","ipcheck.ip.loading":"加载中...","ipcheck.trust.title":"信任评分","ipcheck.trust.subtitle":"Claude 风控视角下的 IP 纯净度","ipcheck.trust.no_data":"无数据","ipcheck.trust.no_ip":"未获取到 Claude 出口 IP,无法评分","ipcheck.trust.no_score":"该 IP 暂无评分数据","ipcheck.trust.gauge.low":"0 高危","ipcheck.trust.gauge.high":"100 可信","ipcheck.trust.label.pristine":"极度纯净","ipcheck.trust.label.clean":"纯净","ipcheck.trust.label.good":"良好","ipcheck.trust.label.neutral":"中性","ipcheck.trust.label.suspicious":"可疑","ipcheck.trust.label.unreachable":"不可访问","ipcheck.trust.text.excellent":"该 IP 信誉极好","ipcheck.trust.text.great":"该 IP 信誉优异","ipcheck.trust.text.minor":"该 IP 存在轻微风险","ipcheck.trust.text.moderate":"该 IP 存在一定风险","ipcheck.trust.text.severe":"该 IP 风险极高","ipcheck.trust.text.restricted":"处于不可访问区域,Claude 会严格风控","ipcheck.trust.region_warn.title":"Claude 出口 IP 位于 {{region}}","ipcheck.trust.region_warn.body":"不建议登录 Claude,容易触发封号风控。","ipcheck.trust.region_support":"Claude 支持地区","ipcheck.trust.region.accessible":"可访问","ipcheck.common.unknown":"未知","ipcheck.props.title":"IP 属性","ipcheck.props.region":"地区","ipcheck.props.city":"城市","ipcheck.props.type":"类型","ipcheck.props.asn":"ASN","ipcheck.props.org":"运营商","ipcheck.props.residential":"家庭住宅","ipcheck.props.datacenter":"机房","ipcheck.security.title":"安全检测","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"代理 (Proxy)","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"机器人 (Crawler)","ipcheck.security.abuser":"滥用记录","ipcheck.security.proxy_flag":"代理","ipcheck.security.crawler_yes":"是","ipcheck.security.crawler_no":"否","ipcheck.security.abuser_yes":"有记录","ipcheck.security.abuser_no":"无记录","ipcheck.security.clean":"未检测到","ipcheck.avail.title":"Claude 可用性","ipcheck.avail.tooltip":"Claude 服务器在美国,从亚洲访问延迟超过 100ms 属于正常情况。","ipcheck.avail.refresh":"刷新","ipcheck.avail.svc_row":"服务状态","ipcheck.avail.latency.normal":"正常","ipcheck.avail.latency.good":"良好","ipcheck.avail.latency.slow":"较慢","ipcheck.avail.latency.unreachable":"不可访问","ipcheck.avail.svc.none":"全部正常","ipcheck.avail.svc.minor":"轻微故障","ipcheck.avail.svc.major":"重大故障","ipcheck.avail.svc.critical":"严重故障","ipcheck.avail.svc.maintenance":"维护中","ipcheck.avail.svc.other":"服务异常","ipcheck.dns.title":"DNS 泄露检测","ipcheck.dns.status":"状态","ipcheck.dns.outlet":"DNS 出口","ipcheck.dns.outlet_ip":"DNS 出口 IP","ipcheck.dns.isp":"服务商","ipcheck.dns.leaked":"可能泄露","ipcheck.dns.no_leak":"未检测到泄露","ipcheck.dns.encrypted":"DNS 加密或未暴露","ipcheck.dns.cn_tag":"中国 DNS","ipcheck.udp.title":"WebRTC UDP 泄露","ipcheck.udp.status":"状态","ipcheck.udp.outlet":"UDP 出口","ipcheck.udp.outlet_ip":"UDP 出口 IP","ipcheck.udp.origin":"归属地","ipcheck.udp.disabled":"WebRTC 已禁用","ipcheck.udp.no_leak":"未检测到泄露","ipcheck.udp.leaked":"可能泄露","ipcheck.udp.anomaly":"异常","ipcheck.device.title":"设备信息","ipcheck.device.tz":"时区","ipcheck.device.lang":"语言","ipcheck.device.os":"操作系统 / 浏览器","ipcheck.device.touch":"触屏","ipcheck.device.net":"网络类型","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL 渲染器","ipcheck.device.canvas_fp":"Canvas 指纹","ipcheck.device.webgl_fp":"WebGL 指纹","ipcheck.device.match":"一致","ipcheck.device.mismatch":"不一致","ipcheck.device.local":"本地","ipcheck.device.estimate_suffix":"(估算)","ipcheck.device.diff_equal":"偏移略有差异","ipcheck.device.diff_ahead":"Claude 快 {{h}} 小时","ipcheck.device.diff_behind":"Claude 慢 {{h}} 小时","ipcheck.device.lang_expected":"Claude 出口常用","ipcheck.device.touch_yes":"是","ipcheck.device.touch_no":"否","ipcheck.device.dnt_on":"已开启","ipcheck.device.dnt_off":"已关闭","ipcheck.device.dnt_unset":"未设置","ipcheck.device.net_unsupported":"不支持检测","ipcheck.device.unsupported":"不支持","ipcheck.history.title":"Claude 出口 IP 历史","ipcheck.history.subtitle":"仅本地存储于浏览器,最多保留 6 条","ipcheck.history.clear":"清除","ipcheck.history.empty":"暂无历史记录","ipcheck.history.current":"当前","ipcheck.region.CN":"中国大陆","ipcheck.region.HK":"香港","ipcheck.region.MO":"澳门","ipcheck.region.RU":"俄罗斯","ipcheck.region.KP":"朝鲜","ipcheck.region.IR":"伊朗","ipcheck.region.SY":"叙利亚","ipcheck.region.CU":"古巴","ipcheck.region.BY":"白俄罗斯","ipcheck.region.VE":"委内瑞拉","leaderboard.profile_modal.close":"关闭","leaderboard.profile_modal.loading":"正在加载用户资料…","leaderboard.profile_modal.error":"加载用户资料失败。","leaderboard.profile_modal.empty":"这个用户的资料未公开。","leaderboard.profile_modal.row_aria":"查看 {{name}} 的资料","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"排名","leaderboard.profile_modal.hero.total_tokens":"总 Token","leaderboard.profile_modal.hero.total_cost":"总花费","leaderboard.profile_modal.hero.github":"GitHub 主页","leaderboard.profile_modal.stat.total_cost":"总花费","leaderboard.profile_modal.stat.total_tokens":"总 Token","leaderboard.profile_modal.stat.active_days":"活跃天数","leaderboard.profile_modal.stat.avg_per_day":"日均花费","leaderboard.profile_modal.streak.current":"当前连续","leaderboard.profile_modal.streak.longest":"最长连续","leaderboard.profile_modal.streak.days":"{{count}} 天","leaderboard.profile_modal.best_day.title":"最佳日","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"使用了 {{count}} 个模型","leaderboard.profile_modal.models.favorite":"最爱模型","leaderboard.profile_modal.models.none":"暂无模型记录","leaderboard.profile_modal.heatmap.title":"活跃度(最近 365 天)","leaderboard.profile_modal.providers.title":"按 Provider 分布","leaderboard.profile_modal.providers.none":"本周期无使用数据。","leaderboard.profile_modal.view_full":"查看完整主页","local_only.title":"请在客户端内使用","local_only.body":"这个页面读取的是你本机上的数据,所以只能在 Mac app 或命令行 dashboard 里查看。","local_only.open_app":"在 Mac app 内打开","local_only.download":"下载 Mac app","dashboard.auth_gate.title":"登录 Token Tracker","dashboard.auth_gate.subtitle":"登录以在云端同步并查看您的 API 使用量、成本和 Token 消耗趋势。","dashboard.auth_gate.button":"立即登录","dashboard.expired_gate.title":"会话已过期","dashboard.expired_gate.subtitle":"您的会话已过期。请重新登录以继续查看您的云端仪表盘。","dashboard.expired_gate.button":"重新登录","shared.app_name":"Token Tracker","dashboard.auth_gate.hero_title":"让 AI 代理的每一笔 Token 消耗","dashboard.auth_gate.hero_subtitle":"清晰透明、多端无缝掌控","dashboard.auth_gate.desc":"为您在纯云端安全同步来自 Claude Code、Cursor、Gemini CLI 等全平台主流代理的 Token 额度、并发费用及耗时统计,提供前所未有的全景可视化数据分析。","dashboard.auth_gate.feature.sync.title":"实时云端同步","dashboard.auth_gate.feature.sync.desc":"全自动采集各端代理的开销,并在您的私人云盘中秒级安全归档。","dashboard.auth_gate.feature.anal.title":"多维看板分析","dashboard.auth_gate.feature.anal.desc":"按模型分类、时间跨度统计 Token 分布,随时追溯开销尖峰及用量结构。","dashboard.auth_gate.feature.guard.title":"本地直连免登","dashboard.auth_gate.feature.guard.desc":"在 Localhost 模式下自动跳过所有登录验证,完美保护本地离线调试体验。","dashboard.expired_gate.hero_title":"您的云端会话已过期","dashboard.expired_gate.desc":"为了您的隐私与云盘数据安全,安全凭证会在一段时间后自动过期。请重新验证以极速同步仪表盘。","dashboard.expired_gate.feature.sec.title":"安全证书保护","dashboard.expired_gate.feature.sec.desc":"加密证书到期自动销毁,严密守护您的 Token 账单资产。","dashboard.expired_gate.feature.restore.title":"无缝数据恢复","dashboard.expired_gate.feature.restore.desc":"重新登入后自动恢复多端实时看板刷新,无需重新绑定。","dashboard.expired_gate.feature.cloud.title":"跨端云端同步","dashboard.expired_gate.feature.cloud.desc":"多端随时离线统计并同步至个人控制台,多地协同掌握开销。","dashboard.device_filter.all":"全部设备","dashboard.device_filter.aria":"按设备筛选","dashboard.device_card.title":"设备分布","dashboard.device_card.unnamed":"未命名设备","dashboard.device_card.rename_aria":"重命名设备","dashboard.device_card.rename_placeholder":"设备名称","dashboard.device_card.rename_save":"保存","dashboard.device_card.rename_cancel":"取消","dashboard.device_card.rename_error":"重命名失败 — 该名称可能已被占用。","dashboard.device_card.empty":"未发现活跃设备","dashboard.device_card.account_scope":"账号级","dashboard.device_card.account_scope_tip":"来自该服务商的账号 API,不归属于单台设备","nav.pet":"桌面宠物","pet.page.eyebrow":"桌面陪伴","pet.page.title":"宠物","pet.page.subtitle":"选择你的陪伴角色,并预览它如何响应真实的 AI 使用状态。","pet.preview.states":"预览宠物状态","pet.controls.title":"桌面控制","pet.controls.show":"显示桌面宠物","pet.controls.show_hint":"让陪伴角色始终显示在其他窗口上方。","pet.controls.size":"宠物大小","pet.controls.native_only":"请在 TokenTracker 桌面应用中打开此页面,以控制真实桌宠。","pet.characters.title":"选择你的陪伴角色","pet.characters.subtitle":"每个角色都拥有完整状态系统,并有独立配色和轮廓。","pet.character.clawd":"Clawd","pet.character.clawd_desc":"经典钳爪造型的 Token 管家。","pet.character.sprout":"Sprout","pet.character.sprout_desc":"长着叶片耳朵和小根须脚的幼苗精灵。","pet.character.byte":"Byte","pet.character.byte_desc":"拥有表情屏幕和悬浮推进器的终端机器人。","pet.character.ember":"Ember","pet.character.ember_desc":"拖着火焰尾巴、为高产连胜庆祝的狐灵。","pet.state.calm":"平静","pet.state.focus":"专注","pet.state.multitask":"多模型","pet.state.streak":"连续活跃","pet.state.celebrate":"新增用量","pet.state.rest":"休息","pet.size.small":"小","pet.size.medium":"中","pet.size.large":"大","pet.import.title":"导入 Codex 宠物","pet.import.subtitle":"粘贴 codex-pets.net 链接,或选择 .zip 宠物包。","pet.import.add":"添加","pet.import.zip":"选择宠物包","pet.import.remove":"移除已导入宠物","pet.import.success":"宠物已导入并选中。","pet.import.failed":"无法导入这个宠物。","pet.import.busy":"正在导入…","pet.format.v2":"V2","pet.import.removed":"已移除导入的宠物。","pet.import.url_label":"Codex Pets 链接或宠物 ID"},n9={"landing.screenshot.alt":"TokenTracker 仪表板截图","landing.nav.login":"登录","landing.nav.signup":"注册","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"复制命令","landing.install.action.copied":"已复制","landing.meta.title":"Token Tracker —— AI Coding CLI 的 Token 用量追踪器","landing.meta.description":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 分享","share.meta.description":"分享你的 Token Tracker 仪表板快照,包含跨模型、项目和时间窗口的用量洞察。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.cta.primary":"进入仪表板","landing.cta.secondary":"GitHub","landing.v2.hero.title_line1":"追踪你所有的","landing.v2.hero.title_line2":"AI Token","landing.v2.install.mac_cta":"下载 macOS 版","landing.v2.install.win_cta":"下载 Windows 版","landing.v2.install.desktop_cta":"下载桌面版","landing.v2.install.os_macos":"macOS","landing.v2.install.os_windows":"Windows","landing.v2.install.availability":"支持 macOS 与 Windows","landing.v2.models.title":"支持的 AI CLI 工具","landing.v2.distill.body":"100% 本地处理,不上传任何 prompt 或代码。","landing.v2.leaderboard.kicker":"全球 TOKEN 排行榜","landing.v2.leaderboard.title":"AI Token 效率","landing.v2.leaderboard.subtitle":"您可以选择匿名同步本地 AI Token 用量,加入全球效率排行榜。与全球开发者一同评估模型开销效率与调用频次。","landing.v2.leaderboard.view_more":"查看完整排行榜","landing.v2.footer.line":"Token Tracker —— 开发者打造,服务开发者。","landing.v2.nav.status":"状态","landing.v2.nav.github":"GitHub","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"自动监控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地优先、注重隐私、零配置。","leaderboard.profile.nav.back":"排行榜","leaderboard.profile.nav.download":"下载","leaderboard.title":"排行榜","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全部时间","leaderboard.generated_at":"更新于 {{ts}}","leaderboard.period.week":"周","leaderboard.period.month":"月","leaderboard.period.total":"全部","leaderboard.me_label":"你","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"未知错误","leaderboard.loading":"加载中…","leaderboard.empty":"暂无数据","leaderboard.column.rank":"排名","leaderboard.column.user":"用户","leaderboard.column.total":"总计","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"其他","leaderboard.column.est_cost":"预估花费","leaderboard.signin_prompt":"登录后即可上榜","leaderboard.signin_button":"登录","leaderboard.sync_prompt":"开启云同步即可参与排名","leaderboard.sync_button.idle":"开启并同步","leaderboard.sync_button.busy":"同步中…","leaderboard.pagination.page_size_label":"每页显示","leaderboard.pagination.prev":"上一页","leaderboard.pagination.next":"下一页","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"第 {{page}} 页","share.modal.title":"分享你的数据","share.modal.subtitle":"生成海报卡片,随处分享。","share.modal.close":"关闭","share.modal.action.x":"分享到 X","share.modal.action.download":"下载","share.modal.action.copy":"复制图片","share.modal.hint.x":"把图片粘贴到推文里","share.modal.hint.copy":"到剪贴板","share.modal.name_label":"显示名称","share.modal.name_placeholder":"输入你的名字","share.modal.style_label":"样式","share.modal.footer":"数据始终保留在本地——图片在你的浏览器内生成,绝不上传。","share.button.label":"分享","share.button.aria":"打开分享卡片","share.toast.copied":"图片已复制到剪贴板","share.toast.downloaded":"图片已保存","share.toast.failed":"图片生成失败","share.toast.working":"生成中…","share.variant.neon":"霓虹","share.variant.broadsheet":"特刊","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"总计","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} 占了 {{percent}}% 的用量。","share.hook.days_record":"共记录 {{days}} 天。","share.hook.top_led":"{{name}} 领跑,占比 {{percent}}%。","share.hook.multi_models":"{{days}} 天里用了 {{count}} 个模型。","share.hook.days_with_model":"{{name}} 陪你跑了 {{days}} 天。","share.hook.new_chapter":"新的记录,从这里开始。","share.card.broadsheet.issue":"期号","share.card.broadsheet.by":"分享者","share.card.broadsheet.tracked_since":"追踪起始","share.card.broadsheet.total_tokens":"总 Token 数","share.card.broadsheet.estimated_spend":"预估花费","share.card.broadsheet.billable_days":"{{days}} 个活跃日","share.card.broadsheet.heatmap_title":"年度热图","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 天有记录","share.card.broadsheet.roster_title":"模型榜","share.card.broadsheet.roster_subtitle":"常用模型轮换","share.card.broadsheet.empty":"这一周很安静,还没有模型数据。","share.card.broadsheet.global_rank":"全站排名","share.card.broadsheet.active_days":"活跃","share.card.broadsheet.days_count":"{{days}} 天","share.card.broadsheet.track_yours":"追踪你自己的","share.card.annual.report_title":"用量报告","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"Token 热图","share.card.annual.total_tokens":"总 Token 数","share.card.annual.estimated_cost":"预估成本","share.card.annual.longest_streak":"最长连击","share.card.annual.days_count":"{{days}} 天","share.card.annual.top_model":"热门模型","landing.v3.hero.kicker":"开源 · 本地优先 · 实时","landing.v3.hero.stat_label":"社区已追踪的 Token 总量","landing.v3.hero.scroll_hint":"滚动","landing.v3.stats.devs_syncing":"{{count}} 位开发者正在同步","landing.v3.tools.count":"开箱即用支持 {{count}}+ 款 AI 编码工具。","landing.v3.how.kicker":"工作原理","landing.v3.how.title":"从敲下回车到仪表板,只需毫秒。","landing.v3.how.subtitle":"无需代理,无需粘贴 API Key。TokenTracker 直接读取 CLI 已经写在本地的用量数据——全程在你的机器上完成。","landing.v3.how.step1.title":"照常运行你的 Agent","landing.v3.how.step1.body":"Claude Code、Codex、Cursor、Gemini——保持你现有的工作方式,一切照旧。","landing.v3.how.step2.title":"钩子捕获用量","landing.v3.how.step2.body":"每一轮对话的 Token 数直接从 CLI 自己的本地会话日志中解析。","landing.v3.how.step3.title":"在本机排队落盘","landing.v3.how.step3.body":"用量被规范化后追加写入 ~/.tokentracker 下的队列文件,数据不出你的磁盘。","landing.v3.how.step4.title":"实时渲染","landing.v3.how.step4.body":"本地仪表板即时聚合每个工具、每个模型、每个小时的数据。","landing.v3.cap.kicker":"尽收眼底","landing.v3.cap.title":"一个仪表板,装下所有 Agent。","landing.v3.cap.subtitle":"开销、额度、节奏与模型——你的 AI 用量全景,实时在本地聚合。","landing.v3.cap.limits.title":"额度雷达","landing.v3.cap.limits.body":"跨服务商监控 5 小时、每周与每月窗口——在任务中途撞墙之前就心中有数。","landing.v3.cap.heatmap.title":"365 天活跃热力图","landing.v3.cap.heatmap.body":"GitHub 风格的编码节奏一览——每个小时都在你的本机上分桶统计。","landing.v3.cap.devices.title":"多设备,一张全景图","landing.v3.cap.devices.body":"macOS 菜单栏、Windows 托盘、CLI 全平台——可选同步为同一账号视图。","landing.v3.privacy.kicker":"本地优先","landing.v3.privacy.title":"你的提示词永远不会离开你的机器。","landing.v3.privacy.p1":"只统计 Token 数","landing.v3.privacy.p2":"不收集提示词与代码","landing.v3.privacy.p3":"GitHub 开源","landing.v3.leaderboard.panel_title":"社区排行(全球)","landing.v3.leaderboard.live":"实时","landing.v3.leaderboard.anonymous":"匿名用户","landing.v3.leaderboard.tokens_synced":"已同步 {{count}} Token","landing.v3.download.title":"30 秒开始追踪。","landing.v3.download.subtitle":"一条命令,或一次下载。免费、开源、属于你。"},r9={"header.auth.sign_in_aria":"登入","login.back_home":"返回首頁","login.cloud_only":"未配置雲端登入。請使用 localhost 上的本地儀表盤。","login.title":"登入","login.subtitle":"選擇郵箱或已連線賬號。","login.dismiss":"關閉","login.verify_email_success":"郵箱已驗證。你現在可以登入。","login.verify_email_pending":"請先在郵箱中完成驗證,然後再登入。","login.oauth.continue":"使用 {{provider}} 繼續","login.divider":"或","login.tab.sign_in":"登入","login.tab.sign_up":"建立賬戶","login.field.name":"顯示名稱","login.field.name_placeholder":"可選","login.field.email":"電子郵件","login.field.password":"密碼","login.forgot_password":"忘記密碼?","login.password_hint":"至少 {{min}} 個字元。","login.submit.sign_in":"使用郵箱登入","login.submit.sign_up":"建立賬號","reset_password.back_to_sign_in":"返回登入","reset_password.title":"重設密碼","reset_password.subtitle":"輸入郵箱以接收重設連結。","reset_password.request.submit":"傳送重設連結","reset_password.request.sent":"已發送重設連結與驗證碼,請檢查郵箱。","reset_password.field.code":"重設驗證碼","reset_password.field.new_password":"新密碼","reset_password.field.confirm_password":"確認密碼","reset_password.reset.submit":"重設密碼","reset_password.error.password_mismatch":"兩次輸入的密碼不一致。","reset_password.error.missing_token":"缺少重設令牌。請重新請求重設連結。","reset_password.success":"密碼已更新。你現在可以使用新密碼登入。","reset_password.success_cta":"返回登入","auth.callback.processing":"處理中…","auth.callback.success":"登入成功","auth.callback.redirecting":"正在返回 TokenTracker…","auth.callback.failed":"登入未完成,請重試。","auth.callback.close":"關閉此頁","login_modal.subtitle":"登入以加入排行榜","login_modal.continue_email":"使用郵箱繼續","login_modal.divider_email":"郵箱","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"資料來源:{{source}}","shared.error.prefix":"錯誤:{{error}}","shared.status.unsynced":"—","shared.time.now":"剛剛","shared.time.m_ago":"{{n}}分鐘前","shared.time.h_ago":"{{n}}小時前","shared.time.d_ago":"{{n}}天前","error.boundary.title":"出了點問題","error.boundary.subtitle":"這個檢視渲染失敗了","error.boundary.hint":"開啟控制台,然後重新載入頁面","error.boundary.no_details":"沒有錯誤詳細資訊","error.boundary.action.reload":"重新載入","identity_card.rank_label":"排名","identity_card.streak_label":"活躍天數","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 天","usage.summary.total":"Token 總數","usage.summary.toggle_aria":"切換精簡數字格式","usage.period.day":"日","usage.period.week":"周","usage.period.month":"月","usage.period.total":"總計","usage.period.custom":"自定義","usage.metric.total":"總計","usage.metric.input":"輸入","usage.metric.output":"輸出","usage.metric.cached_input":"快取輸入","usage.metric.reasoning_output":"推理輸出","usage.button.refresh":"重新整理","usage.overview.tablist_aria":"時間範圍","usage.overview.cost_breakdown_aria":"檢視成本明細","usage.overview.distribution_aria":"來源佔比:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%,{{tokens}} Token,{{cost}}。點選{{action}}詳情","usage.overview.expand":"展開","usage.overview.collapse":"收起","usage.overview.model_count":"{{count}} 個模型","usage.overview.model_details_aria":"{{provider}} 模型詳情","widgets.page.title":"元件","widgets.cta.open_gallery":"開啟小元件庫","widgets.cta.download":"下載 Mac 應用","widgets.cta.macos_only":"僅限 macOS","widgets.menubar.section.title":"選單欄","widgets.gallery.section.title":"桌面小元件","widgets.summary.name":"使用概覽","widgets.summary.description":"今天和近 7 天的用量,以及緊湊趨勢線。","widgets.heatmap.name":"熱力圖","widgets.heatmap.description":"像 GitHub 一樣,一眼看清活躍和空閒的日子。","widgets.topModels.name":"熱門模型","widgets.topModels.description":"你最常用的模型,按 Token 佔比排序。","widgets.limits.name":"使用限制","widgets.limits.description":"Claude、Codex、Cursor、Gemini 等的即時速率限制進度。","daily.sort.date.label":"日期","daily.sort.date.title":"按日期排序","daily.sort.total.label":"總計","daily.sort.total.title":"按總計排序","daily.sort.input.label":"輸入","daily.sort.input.title":"按輸入排序","daily.sort.output.label":"輸出","daily.sort.output.title":"按輸出排序","daily.sort.cached.label":"快取","daily.sort.cached.title":"按快取輸入排序","daily.sort.reasoning.label":"推理","daily.sort.reasoning.title":"按推理輸出排序","daily.sort.conversations.label":"對話數","daily.sort.conversations.title":"按對話排序","details.pagination.prev":"上一頁","details.pagination.next":"下一頁","limits.copilot.otelHint.title":"跟蹤 Copilot Token 使用情況","limits.copilot.otelHint.body":"限額資訊通過你的 GitHub OAuth 令牌讀取。如果還想記錄逐 Token 用量,請啟用 Copilot 的 OpenTelemetry 匯出,把下面這段加到你的 shell 配置檔案(~/.zshrc 或 ~/.bashrc):","limits.copilot.otelHint.copy":"複製","limits.copilot.otelHint.copied":"已複製","limits.panel.title":"使用限制","limits.panel.mode_separator":" · ","limits.label.cursor_plan":"套餐","limits.label.cursor_auto":"自動","limits.label.cursor_api":"API","limits.label.kiro_month":"月度","limits.label.kiro_bonus":"獎勵","limits.label.kimi_weekly":"周","limits.label.kimi_5h":"5h","limits.label.kimi_total":"總量","limits.label.kimi_parallel":"併發:{{count}}","limits.explain.used":"{{label}}:已用 {{used}}%","limits.explain.on_track":"{{label}}:節奏正常,預計用到 {{pct}}%","limits.explain.ahead_eta":"{{label}}:偏快,約 {{eta}} 後用完","limits.explain.ahead_pct":"{{label}}:偏快,預計用到 {{pct}}%","limits.explain.body":"豎標為勻速到現在應到的位置,填充超過即為偏快。","limits.explain.remaining":"{{label}}:剩餘 {{used}}%","limits.explain.on_track_remaining":"{{label}}:節奏正常,預計剩餘 {{pct}}%","limits.explain.ahead_pct_remaining":"{{label}}:偏快,預計剩餘 {{pct}}%","limits.explain.body_remaining":"豎標為勻速到現在應到的位置,填充不足即為偏快。","limits.label.copilot_premium":"高階","limits.label.copilot_chat":"對話","limits.label.grok_month":"月度","limits.label.grok_ondemand":"按需","limits.provider.claude":"Claude","limits.provider.codex":"Codex","limits.provider.cursor":"Cursor","limits.provider.gemini":"Gemini","limits.provider.kimi":"Kimi","limits.provider.kiro":"Kiro","limits.provider.grok":"Grok Build","limits.provider.copilot":"GitHub Copilot","limits.provider.antigravity":"Antigravity","limits.provider.zcode":"ZCode","limits.provider.opencode_go":"OpenCode Go","limits.label.zcode_glm52":"GLM-5.2","limits.label.zcode_glm5t":"GLM-5-Turbo","limits.label.opencode_go_5h":"5h","limits.label.opencode_go_weekly":"Weekly","limits.label.opencode_go_monthly":"Monthly","limits.label.claude_5h":"5h","limits.label.claude_7d":"7d","limits.label.claude_opus":"Opus","limits.label.codex_5h":"5h","limits.label.codex_7d":"7d","limits.label.codex_credits":"額度","limits.label.codex_spark_5h":"Spark 5h","limits.label.codex_spark_7d":"Spark 7d","limits.codex_credits.detail":"已用 {{used}} / {{limit}} 點額度 · 剩餘 {{remaining}}","limits.codex_reset_bank.title":"重置","limits.codex_reset_bank.row_label":"重置 {{index}}","limits.codex_reset_bank.count_only":"重置額度:可用 {{count}} 次 · 到期時間不可用","limits.label.gemini_pro":"Pro","limits.label.gemini_flash":"Flash","limits.label.gemini_lite":"Lite","limits.label.antigravity_claude_weekly":"Cl 7d","limits.label.antigravity_claude_5h":"Cl 5h","limits.label.antigravity_gemini_weekly":"Gm 7d","limits.label.antigravity_gemini_5h":"Gm 5h","limits.label.antigravity_live":"live","limits.label.antigravity_cached":"cached","limits.tooltip.antigravity_live":"即時額度,直接獲取自本地運行的 Antigravity 進程。","limits.tooltip.antigravity_cached":"快取的額度。啟動 Antigravity IDE/CLI 以重新整理。","limits.bar.sub_one_percent":"<1","limits.status.not_connected":"未連線","limits.status.no_data":"未返回即時限額資料","limits.status.all_hidden":"所有限額提供商都已隱藏。請開啟顯示設定重新顯示。","nav.usage":"用量","nav.limits":"限額","nav.widgets":"小元件","nav.skills":"Skills","nav.leaderboard":"排行榜","nav.collapse":"摺疊側邊欄","nav.expand":"展開側邊欄","nav.menu":"開啟導航選單","nav.close_menu":"關閉導航選單","nav.aside_label":"主導航","nav.nav_label":"導航","limits.page.subtitle":"AI 工具的速率限制和配額使用情況。","limits.settings.toggle_visible":"切換可見性","limits.settings.display_mode_label":"用量","limits.settings.display_mode_used":"已用","limits.settings.display_mode_remaining":"剩餘","limits.page.openSettings":"顯示設定","nav.group.general":"常規","nav.group.tools":"工具","nav.group.account":"賬戶","nav.settings":"設定","header.auth.open_settings":"開啟設定","settings.page.title":"設定","settings.page.subtitle":"管理你的賬戶、外觀和顯示偏好。","settings.section.appearance":"外觀","settings.section.account":"賬戶","settings.section.limits":"限制顯示","settings.labs.qpd.label":"PR 研發性價比分析","settings.labs.qpd.hint":"關聯 GitHub PR 歷史,分析各模型的平均交付成本與有效 Token。","settings.labs.qpd.aria":"切換 PR 性價比分析","qpd.card.title":"研發性價比與交付成本","qpd.card.badge":"BETA","qpd.card.subtitle":"基於已合併的 PR 歷史,估算不同模型的平均交付成本。","qpd.card.updating":"更新中…","qpd.card.best_value":"最省錢","qpd.card.col_model":"模型","qpd.card.col_cost":"花費","qpd.card.col_accepted":"已合 PR","qpd.card.col_rate":"採納率","qpd.card.col_qpd":"單PR成本","qpd.card.qpd_tooltip":"平均每合併一個 PR 消耗的 Token 資金 (總花費 ÷ 已合併數)","qpd.card.totals":"已合併 {{accepted}}/{{outcomes}} 個 PR · 總花費 {{cost}}","qpd.card.et":"有效 Token: {{tokens}} (採納率 {{rate}})","qpd.card.et_tooltip":"有效 Token (Effective Tokens) —— 最終成功採納並合併的程式碼所消耗的 Token 占總消耗的比例","qpd.card.sparse_notice":"提示:資料量較少,建議篩選更窄的時間區間以獲得精準分析。","settings.appearance.theme.label":"主題","settings.appearance.theme.hint":"選擇 Token Tracker 在儀表盤中的顯示方式。","settings.appearance.theme.light":"淺色","settings.appearance.theme.dark":"深色","settings.appearance.theme.system":"系統","settings.account.displayName":"顯示名稱","settings.account.edit":"編輯","settings.account.save":"儲存","settings.account.saving":"儲存...","settings.account.cancel":"取消","settings.account.userId":"使用者 ID","settings.account.copyUserId":"複製使用者 ID","settings.account.copy":"複製","settings.account.copied":"已複製","settings.account.cloudSync":"雲同步","settings.account.cloudSyncHint":"將本地用量上傳到你的 Token Tracker 雲端賬號。","settings.account.publicProfile":"公開主頁","settings.account.publicProfileHint":"在公開排行榜中展示你的用量。","settings.account.displayNameAnonymousHint":"匿名狀態下,排行榜會隱藏你的名字和頭像","settings.account.displayNameDisabledWhileAnon":"請先關閉匿名,再編輯名字","settings.account.githubUrl":"GitHub 主頁","settings.account.githubUrlHint":"在排行榜名字旁顯示 GitHub 連結。","settings.account.githubUrlPlaceholder":"使用者名稱或 https://github.com/使用者名稱","settings.account.githubUrlInvalid":"請輸入 GitHub 使用者名稱,或 https://github.com/使用者名稱","leaderboard.github.aria":"開啟 GitHub 主頁","leaderboard.github.tooltipAction":"點選檢視 GitHub 主頁","leaderboard.github.tooltipPrefix":"可在","leaderboard.github.tooltipSettingsLink":"設定","leaderboard.github.tooltipSuffix":"中配置你的主頁","settings.account.signOut":"退出登入","settings.account.signIn":"登入","settings.account.signedOutHint":"登入後可管理雲同步和排行榜偏好。","settings.section.menubar":"選單欄應用","settings.menubar.showStats":"在選單欄中顯示統計資訊","settings.menubar.showStatsHint":"在選單欄圖示旁邊顯示今天的 Token 數量和成本。","settings.menubar.animatedIcon":"動畫圖示","settings.menubar.animatedIconHint":"閃爍 Clawd 角色並在選單欄中播放同步動畫。","settings.menubar.confettiOnReset":"額度重置時撒花","settings.menubar.confettiOnResetHint":"在接近上限後,額度重置時放一場煙火慶祝。","settings.menubar.launchAtLogin":"登入時啟動","settings.menubar.launchAtLoginHint":"登入 macOS 時自動啟動 TokenTrackerBar。","settings.menubar.syncNow":"立即同步","settings.menubar.syncNowHint":"觸發本地AI工具日誌立即解析並上傳。","settings.menubar.syncing":"正在同步...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"檢查更新","settings.footer.statusPage":"系統狀態","menubar.slot.primary":"第一個位置","menubar.slot.secondary":"第二個位置","menubar.native_only":"開啟 macOS 版 TokenTrackerBar 後可編輯選單欄顯示。","menubar.metric.today_tokens":"今日 Token","menubar.metric.today_cost":"今日成本","menubar.metric.last_7d_tokens":"近 7 天 Token","menubar.metric.total_tokens":"總 Token","menubar.metric.total_cost":"總成本","menubar.metric.claude_5h":"Claude 5 小時限額","menubar.metric.claude_7d":"Claude 7 天限額","menubar.metric.codex_5h":"Codex 5 小時限額","menubar.metric.codex_7d":"Codex 7 天限額","menubar.metric.codex_credits":"Codex 額度上限","menubar.metric.codex_spark_5h":"Codex Spark 5 小時限額","menubar.metric.codex_spark_7d":"Codex Spark 7 天限額","nav.ip_check":"Claude IP 檢查","skills.page.title":"Skills","skills.tab.my":"我的","skills.tab.browse":"發現","skills.action.refresh":"重新整理","skills.action.install":"安裝","skills.action.choose_targets":"選擇目標","skills.target.menu_label":"安裝到","skills.target.none":"未選目標","skills.toast.installed":"已把 {{name}} 安裝到 {{targets}}。","skills.action.remove":"移除","skills.action.search":"搜尋","skills.action.search_aria":"搜尋 skills","skills.action.search_clear":"清除搜尋","skills.target.synced_summary":"已同步到 {{targets}}","skills.target.synced_none":"尚未同步到任何 agent","skills.row.open_details":"檢視 {{name}} 詳情","skills.detail.close":"關閉詳情","skills.detail.sync_section_title":"同步到","skills.detail.remove_button":"從所有 agent 移除","skills.detail.remove_confirm_hint":"這會從每個 agent 取消同步並刪除本地副本。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"全部 agent","skills.filter.clear":"清除篩選","skills.my.placeholder":"篩選已安裝的 skills…","skills.filter.result_count":"{{filtered}} / {{total}} 個 skill","skills.filter.result_count_browse":"{{count}} 個結果","skills.empty.no_match":"當前篩選下沒有匹配的 skill。","hint.dismiss":"關閉提示","hint.dismissible_aria":"可關閉的提示","skills.card.installed":"已安裝","skills.card.targets_prefix":"將安裝到:","skills.card.targets_change":"更改","skills.card.installs":"{{count}} 次安裝","skills.source.label":"來源","skills.source.all":"全部倉庫","skills.mode.repo":"倉庫","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"在已啟用的倉庫裡搜尋…","skills.browse.placeholder_repo":"在 {{repo}} 中搜索…","skills.browse.placeholder_skillssh":"在 skills.sh 倉庫中搜索…","skills.browse.empty_sources":"新增一個 GitHub 倉庫以開始瀏覽技能。","skills.browse.add_repo_hint":"想要更多 skill?新增一個 GitHub 倉庫。","skills.browse.manage_sources":"管理來源","skills.browse.hint_skillssh":"至少輸入 2 個字元以搜尋 skills.sh。","skills.browse.loading_hint":"正在從 GitHub 拉取 skill 資訊,首次載入可能需要一分鐘,結果會快取。","skills.error.generic":"Skill 操作失敗。","skills.confirm.remove_title":"要移除 {{name}} 嗎?","skills.confirm.remove_managed":"這個 skill 將從所有已連線的 AI 工具中移除,幾秒內可以撤銷。","skills.confirm.remove_local":"將從所有 AI 工具目錄中刪除該 skill 資料夾。此操作無法撤銷。","skills.toast.removed":"已移除 {{name}}。","shared.action.undo":"撤銷","shared.action.cancel":"取消","shared.action.apply":"套用","skills.empty.my":"還沒有 skill。去「發現」搜尋或安裝。","skills.empty.my_cta":"去發現","skills.empty.browse":"這個來源下沒有找到技能。","skills.empty.search":"沒有結果,換個關鍵詞試試。","skills.repo.placeholder":"owner/repository","skills.repo.add":"新增倉庫","skills.repo.invalid":"請輸入 owner/repository 或 GitHub 倉庫 URL。","skills.repo.remove":"移除倉庫","settings.appearance.language.label":"語言","settings.appearance.language.hint":"使用“系統”時會預設跟隨本機語言。","settings.appearance.language.system":"系統","settings.appearance.language.english":"英語","settings.appearance.language.chinese":"簡體中文","settings.appearance.language.traditional_chinese":"繁體中文","settings.appearance.language.japanese":"日語","settings.appearance.language.korean":"韓語","settings.appearance.currency.label":"貨幣","settings.appearance.currency.hint":"選擇用量成本的顯示幣種。","settings.appearance.currency.opt.usd":"美元 ($)","settings.appearance.currency.opt.eur":"歐元 (€)","settings.appearance.currency.opt.gbp":"英鎊 (£)","settings.appearance.currency.opt.cny":"人民幣 (¥)","settings.appearance.currency.opt.jpy":"日元 (¥)","settings.appearance.currency.opt.hkd":"港幣 (HK$)","settings.appearance.currency.rate_source.default":"內建預設匯率","settings.appearance.currency.rate_source.fetched":"資料來源:open.er-api.com","settings.appearance.currency.rate_updated":"更新於 {{when}}","settings.appearance.currency.rate_never":"尚未重新整理"},a9={"usage.overview.antigravity_notice_title":"Token 為估算值","usage.overview.cache_hit_rate_label":"快取命中率","usage.overview.cache_hit_rate_detail":"{{reused}} 重用 / {{input}} 輸入","usage.overview.antigravity_notice_body":"Antigravity 的本地日誌沒有真實用量欄位,這裡的數字是按字元長度(約 4 字元/Token)估算出來的,也沒有扣除 Gemini 的 prompt cache 折扣。請把它當作上限估算,不要直接對賬賬單。","stats.period.today":"今日","stats.period.week":"本週","stats.period.month":"本月","stats.period.all":"全部","stats.period.last_7d":"7 天","stats.period.last_30d":"30 天","stats.period.avg":"平均","stats.period.convs":"對話","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"摺疊模型分解","dashboard.core_index.expand_aria":"展開模型細分","dashboard.rolling.title":"最近的活動","dashboard.rolling.last_7d":"過去 7 天","dashboard.rolling.last_30d":"過去 30 天","dashboard.rolling.avg_active_day":"日平均","dashboard.projects.title":"專案用量","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"星標","dashboard.projects.limit_label":"展示","dashboard.projects.limit_aria":"選擇倉庫顯示數量","dashboard.projects.limit_top_3":"前 3 名","dashboard.projects.limit_top_6":"前 6 名","dashboard.projects.limit_top_10":"前 10 名","dashboard.projects.empty":"沒有公開倉庫","dashboard.widgets.title":"桌面小元件","dashboard.widgets.hint":"右鍵點按桌面 → 編輯小元件 → 搜尋“TokenTracker”","dashboard.widgets.dismiss_aria":"關閉小元件介紹","dashboard.cost_breakdown.title":"成本明細","dashboard.cost_breakdown.total_label":"預計總成本","dashboard.cost_breakdown.close":"關閉","trend.monitor.label":"使用趨勢","trend.zoom.open_aria":"展開全螢幕","trend.zoom.close_aria":"關閉","trend.zoom.badge":"趨勢洞察","trend.zoom.desc":"懸停任一長條查看 token、成本與對話數。切換粒度可從月份下鑽到半小時。","trend.zoom.insight_badge":"洞察","trend.zoom.tooltip.cost":"成本","trend.zoom.tooltip.conversations":"對話","trend.zoom.stats.tokens":"Token 總量","trend.zoom.stats.cost":"總成本","trend.zoom.stats.conversations":"對話數","trend.zoom.stats.peak":"峰值時段","trend.zoom.gran.aria":"粒度","trend.zoom.gran.30min":"30 分鐘","trend.zoom.gran.day":"天","trend.zoom.gran.month":"月","trend.zoom.prev_day":"前一天","trend.zoom.next_day":"後一天","trend.zoom.loading":"載入中…","trend.zoom.pick_day":"選擇日期","trend.zoom.pick_range":"選擇日期範圍","trend.zoom.insight.empty":"一段安靜的時光,沒有一個 token 流過。","trend.zoom.insight.calm":"輕描淡寫。模型大多在待命,只在你需要時才醒來搭把手。","trend.zoom.insight.steady":"{{active}} 個活躍時段裡節奏平穩,峰值 {{peak}}。是那種不聲不響就把事情交付掉的節奏。","trend.zoom.insight.heavy":"火力全開:{{active}} 個時段持續高熱,峰值衝到 {{peak}}。這是自己製造勢能、而非等待靈感的人的產出。","trend.zoom.insight.massive":"工業級別。{{peak}} 的峰值,吞吐從不降溫。到這個量級,你已經不是在用模型,而是在營運一座工廠。","heatmap.title":"熱力圖","heatmap.empty":"尚無活動資料。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"一","heatmap.day.tue":"二","heatmap.day.wed":"三","heatmap.day.thu":"四","heatmap.day.fri":"五","heatmap.day.sat":"六","dashboard.session_expired.copy_label":"執行 npx --yes tokentracker-cli init","dashboard.session_expired.copied":"已複製","dashboard.install.prompt":"安裝 Node.js 18+ 然後執行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"複製安裝命令","dashboard.install.copy_base":"複製初始化命令","dashboard.install.copied":"已複製到剪貼簿","dashboard.install.link_code.loading":"正在生成專屬程式碼...","dashboard.install.link_code.failed":"專屬程式碼不可用","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"每日細目","dashboard.daily.empty":"還沒有資料。先使用 AI CLI,再執行 {{cmd}}。","dashboard.identity.title":"你的個人資料","dashboard.identity.subtitle":"記錄你的編碼之旅","dashboard.identity.fallback":"匿名使用者","dashboard.overview.layout.drag_handle":"拖曳以重新排列","dashboard.overview.layout.reset":"恢復預設排列","dashboard.screenshot.twitter_text":"記錄中的 {{total_tokens}} Token。\\n{{model_name}} 以 {{model_percent}}% 領先。\\n\\n我的 AI 使用情況,未經審計 →","heatmap.3d.hover_tip":"點選進入 3D 全屏旋轉分析模式","heatmap.3d.modal.title":"Token 三維透視","heatmap.3d.modal.desc":"按住左鍵拖拽可任意旋轉,懸浮感知每日活躍資料與多維統計。","heatmap.3d.modal.stats.total_tokens":"年度 Token 總量","heatmap.3d.modal.stats.precision_total_tokens":"精準年消耗量","heatmap.3d.modal.stats.estimated_cost":"年度估算費用","heatmap.3d.modal.stats.active_rate_days":"活躍佔比 / 天數","heatmap.3d.modal.stats.max_streak":"最長連續活躍","heatmap.3d.modal.stats.days_suffix":"天","heatmap.3d.modal.stats.peak_day":"單日峰值暴擊","heatmap.3d.modal.stats.precision_peak_value":"精確單日峰值","heatmap.3d.modal.stats.no_data":"無資料","heatmap.3d.modal.legend.title":"活躍度層級","heatmap.3d.modal.palette.emerald":"翡翠之城","heatmap.3d.modal.palette.ocean":"深海浩瀚","heatmap.3d.modal.palette.neon":"賽博霓虹","heatmap.3d.modal.palette.amber":"烈焰餘暉","heatmap.3d.modal.control.play":"啟動慢速自轉","heatmap.3d.modal.control.pause":"暫停自動旋轉","heatmap.3d.modal.control.reset":"重置 3D 視角","heatmap.3d.modal.footer.tip":"雙指縮放 / 滾輪縮放 / 滑鼠拖拽旋轉 3D 圖表","heatmap.3d.modal.ai.title.default":"持之以恆的行者","heatmap.3d.modal.ai.eval.default":"在技術的長河中持之以恆。也許日常的編碼並不總是波瀾壯闊,但每一個微小的活躍點都在記錄著您的思考與探索。星火成留,終將匯聚成屬於您的數字海洋。","heatmap.3d.modal.ai.title.peak":"極限活躍級貢獻者","heatmap.3d.modal.ai.eval.peak":"這一年中,您的 Token 產出表現出極高的工程密度。如此規模的開發量相當於深度參與了中大型系統底座的重構,每一次擊鍵都在將複雜的邏輯收斂為確定性的程式碼。這是極度專注與純粹工程熱愛的最好印證。","heatmap.3d.modal.ai.title.heavy":"高頻產出級開發者","heatmap.3d.modal.ai.eval.heavy":"卓越的持續輸出。您的 Token 累積量已達數百萬字,相當於數十部中篇技術鉅著的體量。高飽和度的編碼節奏表明您正在以極高的執行力構建屬於您的數字資產,展現了卓越的創造力。","heatmap.3d.modal.ai.title.core":"核心生產力專家","heatmap.3d.modal.ai.eval.core":"極具韌性的長期投入。在過去的一年中,您在較長週期內穩定保持著高強度的開發節奏。您用紮實的程式碼行數與 Token 產出,默默築起了專案的核心架構,是當之無愧的工程支柱。","heatmap.3d.modal.ai.title.steady":"穩健成長型工程師","heatmap.3d.modal.ai.eval.steady":"踏實而堅定的技術積累。每一次 Token 的遞增,都是您在堅實地砌下通往未來的程式碼基石。這種細水長流的穩健節奏,往往是一個優秀開發者通往工程大師的必經之路。","heatmap.3d.voxel.joke.1":"🔥 極度瘋狂!產出 {{value}} tokens!你是在瘋狂訓練大模型,還是手擼了一個編譯器?","heatmap.3d.voxel.joke.2":"🚀 史詩級輸出!共 {{value}} tokens。今日產出可繞地球一圈,AI 都在為你驚歎!","heatmap.3d.voxel.joke.3":"⚡ 爆擊日!{{value}} tokens。程式碼如泉湧,鍵盤已經開始冒煙了!","heatmap.3d.voxel.level3":"⚡ 生產力大爆發({{value}} tokens)!高效專注的黃金時刻,繼續保持這個巔峰狀態!","heatmap.3d.voxel.level2":"🌱 漸入佳境({{value}} tokens)!穩步產出,每一次敲擊鍵盤都是在為大廈添磚加瓦。","heatmap.3d.voxel.level1":"🍃 聚沙成塔({{value}} tokens)。微小的提交也是對未來的投資,保持複利的力量!","heatmap.3d.voxel.level0":"💤 養精蓄銳。在不寫程式碼的日子裡,靈感也在悄悄生長。","ipcheck.page.title":"Claude IP 檢測","ipcheck.page.subtitle":"檢視當前訪問 Claude 的出口 IP、純淨度、地理與風險訊號,識別可能影響登入或觸發風控的因素。","ipcheck.mask.toggle":"隱藏 IP","ipcheck.ipv6.warn":"當前為 IPv6 環境,不建議用 IPv6 訪問 Claude Code,部分檢測結果可能不完整。","ipcheck.ip.cn":"中國出口 IPv4","ipcheck.ip.cloudflare":"Cloudflare 出口","ipcheck.ip.claude":"Claude 出口","ipcheck.ip.failed":"獲取失敗","ipcheck.ip.loading":"載入中...","ipcheck.trust.title":"信任評分","ipcheck.trust.subtitle":"Claude 風控視角下的 IP 純淨度","ipcheck.trust.no_data":"無資料","ipcheck.trust.no_ip":"未獲取到 Claude 出口 IP,無法評分","ipcheck.trust.no_score":"該 IP 暫無評分資料","ipcheck.trust.gauge.low":"0 高危","ipcheck.trust.gauge.high":"100 可信","ipcheck.trust.label.pristine":"極度純淨","ipcheck.trust.label.clean":"純淨","ipcheck.trust.label.good":"良好","ipcheck.trust.label.neutral":"中性","ipcheck.trust.label.suspicious":"可疑","ipcheck.trust.label.unreachable":"不可訪問","ipcheck.trust.text.excellent":"該 IP 信譽極好","ipcheck.trust.text.great":"該 IP 信譽優異","ipcheck.trust.text.minor":"該 IP 存在輕微風險","ipcheck.trust.text.moderate":"該 IP 存在一定風險","ipcheck.trust.text.severe":"該 IP 風險極高","ipcheck.trust.text.restricted":"處於不可訪問區域,Claude 會嚴格風控","ipcheck.trust.region_warn.title":"Claude 出口 IP 位於 {{region}}","ipcheck.trust.region_warn.body":"不建議登入 Claude,容易觸發封號風控。","ipcheck.trust.region_support":"Claude 支援地區","ipcheck.trust.region.accessible":"可訪問","ipcheck.common.unknown":"未知","ipcheck.props.title":"IP 屬性","ipcheck.props.region":"地區","ipcheck.props.city":"城市","ipcheck.props.type":"型別","ipcheck.props.asn":"ASN","ipcheck.props.org":"運營商","ipcheck.props.residential":"家庭住宅","ipcheck.props.datacenter":"機房","ipcheck.security.title":"安全檢測","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"代理 (Proxy)","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"機器人 (Crawler)","ipcheck.security.abuser":"濫用記錄","ipcheck.security.proxy_flag":"代理","ipcheck.security.crawler_yes":"是","ipcheck.security.crawler_no":"否","ipcheck.security.abuser_yes":"有記錄","ipcheck.security.abuser_no":"無記錄","ipcheck.security.clean":"未檢測到","ipcheck.avail.title":"Claude 可用性","ipcheck.avail.tooltip":"Claude 伺服器在美國,從亞洲訪問延遲超過 100ms 屬於正常情況。","ipcheck.avail.refresh":"重新整理","ipcheck.avail.svc_row":"服務狀態","ipcheck.avail.latency.normal":"正常","ipcheck.avail.latency.good":"良好","ipcheck.avail.latency.slow":"較慢","ipcheck.avail.latency.unreachable":"不可訪問","ipcheck.avail.svc.none":"全部正常","ipcheck.avail.svc.minor":"輕微故障","ipcheck.avail.svc.major":"重大故障","ipcheck.avail.svc.critical":"嚴重故障","ipcheck.avail.svc.maintenance":"維護中","ipcheck.avail.svc.other":"服務異常","ipcheck.dns.title":"DNS 洩露檢測","ipcheck.dns.status":"狀態","ipcheck.dns.outlet":"DNS 出口","ipcheck.dns.outlet_ip":"DNS 出口 IP","ipcheck.dns.isp":"服務商","ipcheck.dns.leaked":"可能洩露","ipcheck.dns.no_leak":"未檢測到洩露","ipcheck.dns.encrypted":"DNS 加密或未暴露","ipcheck.dns.cn_tag":"中國 DNS","ipcheck.udp.title":"WebRTC UDP 洩露","ipcheck.udp.status":"狀態","ipcheck.udp.outlet":"UDP 出口","ipcheck.udp.outlet_ip":"UDP 出口 IP","ipcheck.udp.origin":"歸屬地","ipcheck.udp.disabled":"WebRTC 已停用","ipcheck.udp.no_leak":"未檢測到洩露","ipcheck.udp.leaked":"可能洩露","ipcheck.udp.anomaly":"異常","ipcheck.device.title":"裝置資訊","ipcheck.device.tz":"時區","ipcheck.device.lang":"語言","ipcheck.device.os":"作業系統 / 瀏覽器","ipcheck.device.touch":"觸屏","ipcheck.device.net":"網路型別","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL 渲染器","ipcheck.device.canvas_fp":"Canvas 指紋","ipcheck.device.webgl_fp":"WebGL 指紋","ipcheck.device.match":"一致","ipcheck.device.mismatch":"不一致","ipcheck.device.local":"本地","ipcheck.device.estimate_suffix":"(估算)","ipcheck.device.diff_equal":"偏移略有差異","ipcheck.device.diff_ahead":"Claude 快 {{h}} 小時","ipcheck.device.diff_behind":"Claude 慢 {{h}} 小時","ipcheck.device.lang_expected":"Claude 出口常用","ipcheck.device.touch_yes":"是","ipcheck.device.touch_no":"否","ipcheck.device.dnt_on":"已開啟","ipcheck.device.dnt_off":"已關閉","ipcheck.device.dnt_unset":"未設定","ipcheck.device.net_unsupported":"不支援檢測","ipcheck.device.unsupported":"不支援","ipcheck.history.title":"Claude 出口 IP 歷史","ipcheck.history.subtitle":"僅本地儲存於瀏覽器,最多保留 6 條","ipcheck.history.clear":"清除","ipcheck.history.empty":"暫無歷史記錄","ipcheck.history.current":"當前","ipcheck.region.CN":"中國大陸","ipcheck.region.HK":"香港","ipcheck.region.MO":"澳門","ipcheck.region.RU":"俄羅斯","ipcheck.region.KP":"朝鮮","ipcheck.region.IR":"伊朗","ipcheck.region.SY":"敘利亞","ipcheck.region.CU":"古巴","ipcheck.region.BY":"白俄羅斯","ipcheck.region.VE":"委內瑞拉","leaderboard.profile_modal.close":"關閉","leaderboard.profile_modal.loading":"正在載入使用者資料…","leaderboard.profile_modal.error":"載入使用者資料失敗。","leaderboard.profile_modal.empty":"這個使用者的資料未公開。","leaderboard.profile_modal.row_aria":"檢視 {{name}} 的資料","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"排名","leaderboard.profile_modal.hero.total_tokens":"總 Token","leaderboard.profile_modal.hero.total_cost":"總花費","leaderboard.profile_modal.hero.github":"GitHub 主頁","leaderboard.profile_modal.stat.total_cost":"總花費","leaderboard.profile_modal.stat.total_tokens":"總 Token","leaderboard.profile_modal.stat.active_days":"活躍天數","leaderboard.profile_modal.stat.avg_per_day":"日均花費","leaderboard.profile_modal.streak.current":"當前連續","leaderboard.profile_modal.streak.longest":"最長連續","leaderboard.profile_modal.streak.days":"{{count}} 天","leaderboard.profile_modal.best_day.title":"最佳日","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"使用了 {{count}} 個模型","leaderboard.profile_modal.models.favorite":"最愛模型","leaderboard.profile_modal.models.none":"暫無模型記錄","leaderboard.profile_modal.heatmap.title":"活躍度(最近 365 天)","leaderboard.profile_modal.providers.title":"按 Provider 分佈","leaderboard.profile_modal.providers.none":"本週期無使用資料。","leaderboard.profile_modal.view_full":"檢視完整主頁","local_only.title":"請在客戶端內使用","local_only.body":"這個頁面讀取的是你本機上的資料,所以只能在 Mac app 或命令列 dashboard 裡檢視。","local_only.open_app":"在 Mac app 內開啟","local_only.download":"下載 Mac app","dashboard.auth_gate.title":"登入 Token Tracker","dashboard.auth_gate.subtitle":"登入以在雲端同步並檢視您的 API 使用量、成本與 Token 消耗趨勢。","dashboard.auth_gate.button":"立即登入","dashboard.expired_gate.title":"會話已過期","dashboard.expired_gate.subtitle":"您的會話已過期。請重新登入以繼續檢視您的雲端儀表板。","dashboard.expired_gate.button":"重新登入","shared.app_name":"Token Tracker","dashboard.auth_gate.hero_title":"讓 AI 代理的每一筆 Token 消耗","dashboard.auth_gate.hero_subtitle":"清晰透明、多端無縫掌控","dashboard.auth_gate.desc":"為您在純雲端安全同步來自 Claude Code、Cursor、Gemini CLI 等全平台主流代理的 Token 額度、並發費用及耗時統計,提供前所未有的全景可視化數據分析。","dashboard.auth_gate.feature.sync.title":"實時雲端同步","dashboard.auth_gate.feature.sync.desc":"全自動採集各端代理的開銷,並在您的私人雲盤中秒級安全歸檔。","dashboard.auth_gate.feature.anal.title":"多維看板分析","dashboard.auth_gate.feature.anal.desc":"按模型分類、時間跨度統計 Token 分布,隨時追溯開銷尖峰及用量結構。","dashboard.auth_gate.feature.guard.title":"本地直連免登","dashboard.auth_gate.feature.guard.desc":"在 Localhost 模式下自動跳過所有登錄驗證,完美保護本地離線調試體驗。","dashboard.expired_gate.hero_title":"您的雲端會話已過期","dashboard.expired_gate.desc":"為了您的隱私與雲盤數據安全,安全憑證會在一段時間後自動過期。請重新驗證以極速同步儀表盤。","dashboard.expired_gate.feature.sec.title":"安全證書保護","dashboard.expired_gate.feature.sec.desc":"加密證書到期自動銷毀,嚴密守護您的 Token 賬單資產。","dashboard.expired_gate.feature.restore.title":"無縫數據恢復","dashboard.expired_gate.feature.restore.desc":"重新登入後自動恢復多端實時看板刷新,無需重新綁定。","dashboard.expired_gate.feature.cloud.title":"跨端雲端同步","dashboard.expired_gate.feature.cloud.desc":"多端隨時離線統計並同步至個人控制台,多地協同掌握開銷。","dashboard.device_filter.all":"全部裝置","dashboard.device_filter.aria":"依裝置篩選","dashboard.device_card.title":"依裝置","dashboard.device_card.unnamed":"未命名裝置","nav.pet":"桌面寵物","pet.page.eyebrow":"桌面陪伴","pet.page.title":"寵物","pet.page.subtitle":"選擇你的陪伴角色,並預覽它如何回應真實的 AI 使用狀態。","pet.preview.states":"預覽寵物狀態","pet.controls.title":"桌面控制","pet.controls.show":"顯示桌面寵物","pet.controls.show_hint":"讓陪伴角色保持在其他視窗上方。","pet.controls.size":"寵物大小","pet.controls.native_only":"請在 TokenTracker 桌面應用程式中開啟此頁面,以控制實際桌寵。","pet.characters.title":"選擇你的陪伴角色","pet.characters.subtitle":"每個角色都擁有完整狀態系統,並有獨立配色與輪廓。","pet.character.clawd":"Clawd","pet.character.clawd_desc":"經典鉗爪造型的 Token 管家。","pet.character.sprout":"Sprout","pet.character.sprout_desc":"長著葉片耳朵和小根鬚腳的幼苗精靈。","pet.character.byte":"Byte","pet.character.byte_desc":"擁有表情螢幕和懸浮推進器的終端機器人。","pet.character.ember":"Ember","pet.character.ember_desc":"拖著火焰尾巴、為高產連勝慶祝的狐靈。","pet.state.calm":"平靜","pet.state.focus":"專注","pet.state.multitask":"多模型","pet.state.streak":"連續活躍","pet.state.celebrate":"新增用量","pet.state.rest":"休息","pet.size.small":"小","pet.size.medium":"中","pet.size.large":"大","pet.import.title":"匯入 Codex 寵物","pet.import.subtitle":"貼上 codex-pets.net 連結,或選擇 .zip 寵物包。","pet.import.add":"新增","pet.import.zip":"選擇寵物套件","pet.import.remove":"移除已匯入寵物","pet.import.success":"寵物已匯入並選取。","pet.import.failed":"無法匯入這個寵物。","pet.import.busy":"正在匯入…","pet.format.v2":"V2","pet.import.removed":"已移除匯入的寵物。","pet.import.url_label":"Codex Pets 連結或寵物 ID"},i9={"landing.handle.default":"VIBE_USER","landing.handle.special":"伏特","landing.screenshot.alt":"TokenTracker 儀表板截圖","landing.nav.login":"登入","landing.nav.signup":"註冊","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"複製命令","landing.install.action.copied":"已複製","landing.meta.title":"Token Tracker —— AI Coding CLI 的 Token 用量追蹤器","landing.meta.description":"自動監控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地優先、注重隱私、零配置。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 分享","share.meta.description":"分享你的 Token Tracker 儀表板快照,包含跨模型、專案和時間視窗的用量洞察。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"試試 “{{handle}}”","landing.rank.expectation":"預期排名:{{rank}}","landing.rank.singularity":"登頂","landing.rank.unranked":"未上榜","landing.cta.primary":"進入儀表板","landing.cta.secondary":"GitHub","landing.v2.hero.title_line1":"追蹤你所有的","landing.v2.hero.title_line2":"AI Token","landing.v2.install.mac_cta":"下載 macOS 版","landing.v2.install.win_cta":"下載 Windows 版","landing.v2.install.desktop_cta":"下載桌面版","landing.v2.install.os_macos":"macOS","landing.v2.install.os_windows":"Windows","landing.v2.install.availability":"支援 macOS 與 Windows","landing.v2.models.title":"支援的 AI CLI 工具","landing.v2.compare.kicker":"無縫追蹤","landing.v2.compare.title":"別再瞎猜你的 AI 用量。","landing.v2.compare.subtitle":"AI CLI 工具常把原始用量數據隱藏在零散的本地文件中。TokenTracker 將它們即時整理為本地優先的儀表板。","landing.v2.distill.body":"100% 本地處理,不上傳任何 prompt 或程式碼。","landing.v2.compare.with.title":"用 Token Tracker","landing.v2.compare.with.p1":"集中式用量儀表板","landing.v2.compare.with.p2":"即時 Token 指標","landing.v2.compare.with.p3":"100% 本地,隱私無憂","landing.v2.compare.with.p4":"多用戶端終端審計軌跡","landing.v2.compare.without.title":"不用","landing.v2.compare.without.p1":"散落的 JSON 日誌檔案","landing.v2.compare.without.p2":"對 Token 消耗一無所知","landing.v2.compare.without.p3":"突如其來的 API 賬單","landing.v2.compare.without.p4":"缺失歷史審計記錄","landing.v2.leaderboard.kicker":"全球 TOKEN 排行榜","landing.v2.leaderboard.title":"AI Token 效率","landing.v2.leaderboard.subtitle":"您可以選擇匿名同步本地 AI Token 用量,加入全球效率排行榜。與全球開發者一同評估模型開銷效率與調用頻次。","landing.v2.leaderboard.view_more":"檢視完整排行榜","landing.v2.footer.line":"Token Tracker —— 開發者打造,服務開發者。","landing.v2.nav.status":"狀態","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"自動監控 Claude Code、Cursor、Codex 等工具的 Token 用量。本地優先、注重隱私、零配置。","leaderboard.profile.nav.back":"排行榜","leaderboard.profile.nav.download":"下載","leaderboard.title":"排行榜","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全部時間","leaderboard.generated_at":"更新於 {{ts}}","leaderboard.period.week":"周","leaderboard.period.month":"月","leaderboard.period.total":"全部","leaderboard.me_label":"你","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"未知錯誤","leaderboard.loading":"載入中…","leaderboard.empty":"暫無資料","leaderboard.column.rank":"排名","leaderboard.column.user":"使用者","leaderboard.column.total":"總計","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"其他","leaderboard.column.est_cost":"預估花費","leaderboard.signin_prompt":"登入後即可上榜","leaderboard.signin_button":"登入","leaderboard.sync_prompt":"開啟雲同步即可參與排名","leaderboard.sync_button.idle":"開啟並同步","leaderboard.sync_button.busy":"同步中…","leaderboard.pagination.page_size_label":"每頁顯示","leaderboard.pagination.prev":"上一頁","leaderboard.pagination.next":"下一頁","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"第 {{page}} 頁","share.modal.title":"分享你的資料","share.modal.subtitle":"生成海報卡片,隨處分享。","share.modal.close":"關閉","share.modal.action.x":"分享到 X","share.modal.action.download":"下載","share.modal.action.copy":"複製圖片","share.modal.hint.x":"把圖片貼上到推文裡","share.modal.hint.copy":"到剪貼簿","share.modal.name_label":"顯示名稱","share.modal.name_placeholder":"輸入你的名字","share.modal.style_label":"樣式","share.modal.footer":"資料始終保留在本地——圖片在你的瀏覽器內生成,絕不上傳。","share.button.label":"分享","share.button.aria":"開啟分享卡片","share.toast.copied":"圖片已複製到剪貼簿","share.toast.downloaded":"圖片已儲存","share.toast.failed":"圖片生成失敗","share.toast.working":"生成中…","share.variant.neon":"霓虹","share.variant.broadsheet":"特刊","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"總計","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} 佔了 {{percent}}% 的用量。","share.hook.days_record":"共記錄 {{days}} 天。","share.hook.top_led":"{{name}} 領跑,佔比 {{percent}}%。","share.hook.multi_models":"{{days}} 天裡用了 {{count}} 個模型。","share.hook.days_with_model":"{{name}} 陪你跑了 {{days}} 天。","share.hook.new_chapter":"新的記錄,從這裡開始。","share.card.broadsheet.issue":"期號","share.card.broadsheet.by":"分享者","share.card.broadsheet.tracked_since":"追蹤起始","share.card.broadsheet.total_tokens":"總 Token 數","share.card.broadsheet.estimated_spend":"預估花費","share.card.broadsheet.billable_days":"{{days}} 個活躍日","share.card.broadsheet.heatmap_title":"年度熱圖","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 天有記錄","share.card.broadsheet.roster_title":"模型榜","share.card.broadsheet.roster_subtitle":"常用模型輪換","share.card.broadsheet.empty":"這一週很安靜,還沒有模型資料。","share.card.broadsheet.global_rank":"全站排名","share.card.broadsheet.active_days":"活躍","share.card.broadsheet.days_count":"{{days}} 天","share.card.broadsheet.track_yours":"追蹤你自己的","share.card.annual.report_title":"用量報告","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"Token 熱圖","share.card.annual.total_tokens":"總 Token 數","share.card.annual.estimated_cost":"預估成本","share.card.annual.longest_streak":"最長連擊","share.card.annual.days_count":"{{days}} 天","share.card.annual.top_model":"熱門模型"},s9={"header.auth.sign_in_aria":"ログイン","login.back_home":"ホームに戻る","login.cloud_only":"クラウドログインが設定されていません。localhost のローカルダッシュボードをご利用ください。","login.title":"ログイン","login.subtitle":"メールまたは連携済みアカウントを選択してください。","login.dismiss":"閉じる","login.verify_email_success":"メールアドレスが確認されました。ログインできます。","login.verify_email_pending":"ログインの前に、メールでの確認を完了してください。","login.oauth.continue":"{{provider}} で続ける","login.divider":"または","login.tab.sign_in":"ログイン","login.tab.sign_up":"アカウント作成","login.field.name":"表示名","login.field.name_placeholder":"任意","login.field.email":"メールアドレス","login.field.password":"パスワード","login.forgot_password":"パスワードをお忘れですか?","login.password_hint":"{{min}} 文字以上。","login.submit.sign_in":"メールでログイン","login.submit.sign_up":"アカウントを作成","reset_password.back_to_sign_in":"ログインに戻る","reset_password.title":"パスワードをリセット","reset_password.subtitle":"リセットリンクを受け取るメールアドレスを入力してください。","reset_password.request.submit":"リセットリンクを送信","reset_password.request.sent":"メールを確認してコードを入力してください。","reset_password.field.code":"リセットコード","reset_password.field.new_password":"新しいパスワード","reset_password.field.confirm_password":"パスワードを確認","reset_password.reset.submit":"パスワードをリセット","reset_password.error.password_mismatch":"パスワードが一致しません。","reset_password.error.missing_token":"リセットトークンがありません。新しいリセットリンクをリクエストしてください。","reset_password.success":"パスワードが更新されました。新しいパスワードでログインできます。","reset_password.success_cta":"ログインに戻る","auth.callback.processing":"処理中…","auth.callback.success":"ログインに成功しました","auth.callback.redirecting":"TokenTracker に戻っています…","auth.callback.failed":"ログインが完了しませんでした。もう一度お試しください。","auth.callback.close":"このページを閉じる","login_modal.subtitle":"ログインしてリーダーボードに参加","login_modal.continue_email":"メールで続ける","login_modal.divider_email":"メール","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"データソース:{{source}}","shared.error.prefix":"エラー:{{error}}","shared.status.unsynced":"—","shared.time.now":"たった今","shared.time.m_ago":"{{n}}分前","shared.time.h_ago":"{{n}}時間前","shared.time.d_ago":"{{n}}日前","error.boundary.title":"問題が発生しました","error.boundary.subtitle":"このビューのレンダリングに失敗しました","error.boundary.hint":"コンソールを開いてから、ページを再読み込みしてください","error.boundary.no_details":"エラーの詳細はありません","error.boundary.action.reload":"再読み込み","identity_card.rank_label":"ランク","identity_card.streak_label":"アクティブ日数","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} 日","usage.summary.total":"トークン合計","usage.summary.toggle_aria":"数値の短縮表示を切り替え","usage.period.day":"日","usage.period.week":"週","usage.period.month":"月","usage.period.total":"合計","usage.period.custom":"カスタム","usage.metric.total":"合計","usage.metric.input":"入力","usage.metric.output":"出力","usage.metric.cached_input":"キャッシュ入力","usage.metric.reasoning_output":"推論出力","usage.button.refresh":"更新","usage.overview.tablist_aria":"期間","usage.overview.cost_breakdown_aria":"コスト内訳を表示","usage.overview.distribution_aria":"ソース別割合:{{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}:{{percent}}%、{{tokens}} トークン、{{cost}}。クリックして{{action}}詳細","usage.overview.expand":"展開","usage.overview.collapse":"折りたたむ","usage.overview.model_count":"{{count}} 個のモデル","usage.overview.model_details_aria":"{{provider}} のモデル詳細","widgets.page.title":"ウィジェット","widgets.cta.open_gallery":"ウィジェットギャラリーを開く","widgets.cta.download":"Mac アプリをダウンロード","widgets.cta.macos_only":"macOS 限定","widgets.menubar.section.title":"メニューバー","widgets.gallery.section.title":"デスクトップウィジェット","widgets.summary.name":"使用状況の概要","widgets.summary.description":"今日と直近 7 日間の使用状況、コンパクトなトレンドライン付き。","widgets.heatmap.name":"ヒートマップ","widgets.heatmap.description":"GitHub のように、アクティブな日とそうでない日をひと目で把握。","widgets.topModels.name":"人気モデル","widgets.topModels.description":"よく使うモデルを、トークン割合順に表示。","widgets.limits.name":"使用制限","widgets.limits.description":"Claude、Codex、Cursor、Gemini などのリアルタイムなレート制限の進捗。","daily.sort.date.label":"日付","daily.sort.date.title":"日付で並べ替え","daily.sort.total.label":"合計","daily.sort.total.title":"合計で並べ替え","daily.sort.input.label":"入力","daily.sort.input.title":"入力で並べ替え","daily.sort.output.label":"出力","daily.sort.output.title":"出力で並べ替え","daily.sort.cached.label":"キャッシュ","daily.sort.cached.title":"キャッシュ入力で並べ替え","daily.sort.reasoning.label":"推論","daily.sort.reasoning.title":"推論出力で並べ替え","daily.sort.conversations.label":"会話数","daily.sort.conversations.title":"会話数で並べ替え","details.pagination.prev":"前のページ","details.pagination.next":"次のページ","limits.copilot.otelHint.title":"Copilot のトークン使用状況を追跡","limits.copilot.otelHint.body":"制限情報は GitHub OAuth トークン経由で読み取られます。トークン単位の使用量も記録したい場合は、Copilot の OpenTelemetry エクスポートを有効にし、次の内容をシェルの設定ファイル(~/.zshrc または ~/.bashrc)に追加してください:","limits.copilot.otelHint.copy":"コピー","limits.copilot.otelHint.copied":"コピーしました","limits.panel.title":"使用制限","limits.panel.mode_separator":" · ","limits.label.cursor_plan":"プラン","limits.label.cursor_auto":"自動","limits.label.cursor_api":"API","limits.label.kiro_month":"月間","limits.label.kiro_bonus":"ボーナス","limits.label.kimi_weekly":"週","limits.label.kimi_5h":"5h","limits.label.kimi_total":"総量","limits.label.kimi_parallel":"並列:{{count}}","limits.explain.used":"{{label}}:{{used}}% 使用","limits.explain.on_track":"{{label}}:順調、リセットまでに約 {{pct}}%","limits.explain.ahead_eta":"{{label}}:速い、約 {{eta}} で上限","limits.explain.ahead_pct":"{{label}}:速い、リセットまでに約 {{pct}}%","limits.explain.body":"目盛りは一定ペースの位置。塗りが超えると速いペースです。","limits.explain.remaining":"{{label}}:残り {{used}}%","limits.explain.on_track_remaining":"{{label}}:順調、リセットまでに残り約 {{pct}}%","limits.explain.ahead_pct_remaining":"{{label}}:速い、リセットまでに残り約 {{pct}}%","limits.explain.body_remaining":"目盛りは一定ペースの位置。塗りが届かないと速いペースです。","limits.label.copilot_premium":"プレミアム","limits.label.copilot_chat":"チャット","limits.label.grok_month":"月間","limits.label.grok_ondemand":"オンデマンド","limits.provider.claude":"Claude","limits.provider.codex":"Codex","limits.provider.cursor":"Cursor","limits.provider.gemini":"Gemini","limits.provider.kimi":"Kimi","limits.provider.kiro":"Kiro","limits.provider.grok":"Grok Build","limits.provider.copilot":"GitHub Copilot","limits.provider.antigravity":"Antigravity","limits.provider.zcode":"ZCode","limits.provider.opencode_go":"OpenCode Go","limits.label.zcode_glm52":"GLM-5.2","limits.label.zcode_glm5t":"GLM-5-Turbo","limits.label.opencode_go_5h":"5h","limits.label.opencode_go_weekly":"Weekly","limits.label.opencode_go_monthly":"Monthly","limits.label.claude_5h":"5h","limits.label.claude_7d":"7d","limits.label.claude_opus":"Opus","limits.label.codex_5h":"5h","limits.label.codex_7d":"7d","limits.label.codex_credits":"クレジット","limits.label.codex_spark_5h":"Spark 5h","limits.label.codex_spark_7d":"Spark 7d","limits.codex_credits.detail":"{{used}} / {{limit}} クレジット使用済み · 残り {{remaining}}","limits.codex_reset_bank.title":"リセット","limits.codex_reset_bank.row_label":"リセット {{index}}","limits.codex_reset_bank.count_only":"リセット:{{count}} 件利用可 · 有効期限不明","limits.label.gemini_pro":"Pro","limits.label.gemini_flash":"Flash","limits.label.gemini_lite":"Lite","limits.label.antigravity_claude_weekly":"Cl 7d","limits.label.antigravity_claude_5h":"Cl 5h","limits.label.antigravity_gemini_weekly":"Gm 7d","limits.label.antigravity_gemini_5h":"Gm 5h","limits.label.antigravity_live":"live","limits.label.antigravity_cached":"cached","limits.tooltip.antigravity_live":"稼働中のローカルの Antigravity プロセスから直接取得したリアルタイムの制限値です。","limits.tooltip.antigravity_cached":"キャッシュされた制限値。更新するには Antigravity IDE/CLI を実行してください。","limits.bar.sub_one_percent":"<1","limits.status.not_connected":"未接続","limits.status.no_data":"リアルタイムの制限データが返されませんでした","limits.status.all_hidden":"すべての制限プロバイダーが非表示になっています。表示設定を開いて再表示してください。","nav.usage":"使用状況","nav.limits":"制限","nav.widgets":"ウィジェット","nav.skills":"Skills","nav.leaderboard":"リーダーボード","nav.collapse":"サイドバーを折りたたむ","nav.expand":"サイドバーを展開","nav.menu":"ナビゲーションメニューを開く","nav.close_menu":"ナビゲーションメニューを閉じる","nav.aside_label":"メインナビゲーション","nav.nav_label":"ナビゲーション","limits.page.subtitle":"AI ツールのレート制限とクォータの使用状況。","limits.settings.toggle_visible":"表示を切り替え","limits.settings.display_mode_label":"使用量","limits.settings.display_mode_used":"使用済み","limits.settings.display_mode_remaining":"残り","limits.page.openSettings":"表示設定","nav.group.general":"一般","nav.group.tools":"ツール","nav.group.account":"アカウント","nav.settings":"設定","header.auth.open_settings":"設定を開く","settings.page.title":"設定","settings.page.subtitle":"アカウント、外観、表示設定を管理します。","settings.section.appearance":"外観","settings.section.account":"アカウント","settings.section.limits":"制限の表示","settings.appearance.theme.label":"テーマ","settings.appearance.theme.hint":"Token Tracker のダッシュボードでの表示方法を選択します。","settings.appearance.theme.light":"ライト","settings.appearance.theme.dark":"ダーク","settings.appearance.theme.system":"システム","settings.account.displayName":"表示名","settings.account.edit":"編集","settings.account.save":"保存","settings.account.saving":"保存中...","settings.account.cancel":"キャンセル","settings.account.userId":"ユーザー ID","settings.account.copyUserId":"ユーザー ID をコピー","settings.account.copy":"コピー","settings.account.copied":"コピーしました","settings.account.cloudSync":"クラウド同期","settings.account.cloudSyncHint":"ローカルの使用状況を Token Tracker のクラウドアカウントにアップロードします。","settings.account.publicProfile":"公開プロフィール","settings.account.publicProfileHint":"公開リーダーボードで使用状況を表示します。","settings.account.displayNameAnonymousHint":"匿名の状態では、リーダーボードであなたの名前とアバターが非表示になります","settings.account.displayNameDisabledWhileAnon":"名前を編集する前に、匿名を解除してください","settings.account.githubUrl":"GitHub プロフィール","settings.account.githubUrlHint":"リーダーボードの名前の横に GitHub リンクを表示します。","settings.account.githubUrlPlaceholder":"ユーザー名または https://github.com/ユーザー名","settings.account.githubUrlInvalid":"GitHub のユーザー名、または https://github.com/ユーザー名 を入力してください","settings.labs.qpd.label":"PR費用対効果の分析","settings.labs.qpd.hint":"GitHubのPR履歴と紐付け、各モデルの平均開発コストと有効Tokenを分析します。","settings.labs.qpd.aria":"PR費用対効果の分析の切り替え","leaderboard.github.aria":"GitHub プロフィールを開く","leaderboard.github.tooltipAction":"クリックして GitHub プロフィールを表示","leaderboard.github.tooltipPrefix":"ここに表示するには","leaderboard.github.tooltipSettingsLink":"設定","leaderboard.github.tooltipSuffix":"で設定してください","settings.account.signOut":"ログアウト","settings.account.signIn":"ログイン","settings.account.signedOutHint":"ログインすると、クラウド同期とリーダーボードの設定を管理できます。","settings.section.menubar":"メニューバーアプリ","settings.menubar.showStats":"メニューバーに統計を表示","settings.menubar.showStatsHint":"メニューバーアイコンの横に、今日のトークン数とコストを表示します。","settings.menubar.animatedIcon":"アニメーションアイコン","settings.menubar.animatedIconHint":"Clawd キャラクターを点滅させ、メニューバーで同期アニメーションを再生します。","settings.menubar.confettiOnReset":"リセット時に紙吹雪","settings.menubar.confettiOnResetHint":"上限間際の後、使用枠がリセットされたら花火でお祝いします。","settings.menubar.launchAtLogin":"ログイン時に起動","settings.menubar.launchAtLoginHint":"macOS へのログイン時に TokenTrackerBar を自動的に起動します。","settings.menubar.syncNow":"今すぐ同期","settings.menubar.syncNowHint":"ローカルの AI ツールログの解析とアップロードをすぐに実行します。","settings.menubar.syncing":"同期中...","settings.menubar.updates":"更新","settings.menubar.checkUpdates":"更新を確認","settings.footer.statusPage":"システムステータス","menubar.slot.primary":"1 番目の位置","menubar.slot.secondary":"2 番目の位置","menubar.native_only":"macOS 版 TokenTrackerBar を開くと、メニューバーの表示を編集できます。","menubar.metric.today_tokens":"今日のトークン","menubar.metric.today_cost":"今日のコスト","menubar.metric.last_7d_tokens":"直近 7 日間のトークン","menubar.metric.total_tokens":"トークン合計","menubar.metric.total_cost":"コスト合計","menubar.metric.claude_5h":"Claude 5 時間制限","menubar.metric.claude_7d":"Claude 7 日間制限","menubar.metric.codex_5h":"Codex 5 時間制限","menubar.metric.codex_7d":"Codex 7 日間制限","menubar.metric.codex_credits":"Codex クレジット上限","menubar.metric.codex_spark_5h":"Codex Spark 5 時間制限","menubar.metric.codex_spark_7d":"Codex Spark 7 日間制限","nav.ip_check":"Claude IP チェック","skills.page.title":"Skills","skills.tab.my":"マイ","skills.tab.browse":"探す","skills.action.refresh":"更新","skills.action.install":"インストール","skills.action.choose_targets":"対象を選択","skills.target.menu_label":"インストール先","skills.target.none":"対象が未選択","skills.toast.installed":"{{name}} を {{targets}} にインストールしました。","skills.action.remove":"削除","skills.action.search":"検索","skills.action.search_aria":"skills を検索","skills.action.search_clear":"検索をクリア","skills.target.synced_summary":"{{targets}} に同期済み","skills.target.synced_none":"まだどの agent にも同期されていません","skills.row.open_details":"{{name}} の詳細を表示","skills.detail.close":"詳細を閉じる","skills.detail.sync_section_title":"同期先","skills.detail.remove_button":"すべての agent から削除","skills.detail.remove_confirm_hint":"これにより、各 agent から同期解除され、ローカルのコピーも削除されます。","skills.filter.agent_label":"Agent","skills.filter.agent_all":"すべての agent","skills.filter.clear":"フィルターをクリア","skills.my.placeholder":"インストール済みの skills を絞り込み…","skills.filter.result_count":"{{filtered}} / {{total}} 個の skill","skills.filter.result_count_browse":"{{count}} 件の結果","skills.empty.no_match":"現在のフィルターに一致する skill はありません。","hint.dismiss":"ヒントを閉じる","hint.dismissible_aria":"閉じられるヒント","skills.card.installed":"インストール済み","skills.card.targets_prefix":"インストール先:","skills.card.targets_change":"変更","skills.card.installs":"{{count}} 回インストール","skills.source.label":"ソース","skills.source.all":"すべてのリポジトリ","skills.mode.repo":"リポジトリ","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"有効なリポジトリ内を検索…","skills.browse.placeholder_repo":"{{repo}} 内を検索…","skills.browse.placeholder_skillssh":"skills.sh のリポジトリ内を検索…","skills.browse.empty_sources":"GitHub リポジトリを追加して、スキルの閲覧を始めましょう。","skills.browse.add_repo_hint":"もっと skill がほしいですか?GitHub リポジトリを追加してください。","skills.browse.manage_sources":"ソースを管理","skills.browse.hint_skillssh":"skills.sh を検索するには 2 文字以上入力してください。","skills.browse.loading_hint":"GitHub から skill 情報を取得しています。初回の読み込みには 1 分ほどかかる場合があり、結果はキャッシュされます。","skills.error.generic":"Skill の操作に失敗しました。","skills.confirm.remove_title":"{{name}} を削除しますか?","skills.confirm.remove_managed":"この skill は接続済みのすべての AI ツールから削除されます。数秒以内であれば元に戻せます。","skills.confirm.remove_local":"すべての AI ツールのディレクトリから、この skill フォルダを削除します。この操作は元に戻せません。","skills.toast.removed":"{{name}} を削除しました。","shared.action.undo":"元に戻す","shared.action.cancel":"キャンセル","shared.action.apply":"適用","skills.empty.my":"まだ skill がありません。「探す」で検索またはインストールしましょう。","skills.empty.my_cta":"探しに行く","skills.empty.browse":"このソースにはスキルが見つかりませんでした。","skills.empty.search":"結果がありません。別のキーワードでお試しください。","skills.repo.placeholder":"owner/repository","skills.repo.add":"リポジトリを追加","skills.repo.invalid":"owner/repository または GitHub リポジトリの URL を入力してください。","skills.repo.remove":"リポジトリを削除","settings.appearance.language.label":"言語","settings.appearance.language.hint":"「システム」を使用すると、デフォルトで端末の言語に従います。","settings.appearance.language.system":"システム","settings.appearance.language.english":"英語","settings.appearance.language.chinese":"簡体字中国語","settings.appearance.language.traditional_chinese":"繁体字中国語","settings.appearance.language.japanese":"日本語","settings.appearance.language.korean":"韓国語","settings.appearance.currency.label":"通貨","settings.appearance.currency.hint":"使用コストの表示通貨を選択します。","settings.appearance.currency.opt.usd":"米ドル ($)","settings.appearance.currency.opt.eur":"ユーロ (€)","settings.appearance.currency.opt.gbp":"英ポンド (£)","settings.appearance.currency.opt.cny":"人民元 (¥)","settings.appearance.currency.opt.jpy":"日本円 (¥)","settings.appearance.currency.opt.hkd":"香港ドル (HK$)","settings.appearance.currency.rate_source.default":"組み込みのデフォルト為替レート","settings.appearance.currency.rate_source.fetched":"データソース:open.er-api.com","settings.appearance.currency.rate_updated":"{{when}} に更新","settings.appearance.currency.rate_never":"まだ更新されていません","qpd.card.title":"開発費用対効果とPRコスト","qpd.card.badge":"BETA","qpd.card.subtitle":"マージされたPRの履歴に基づき、各モデルの平均開発コストを算出します。","qpd.card.updating":"更新中…","qpd.card.best_value":"最安","qpd.card.col_model":"モデル","qpd.card.col_cost":"消費額","qpd.card.col_accepted":"マージ済PR","qpd.card.col_rate":"採択率","qpd.card.col_qpd":"PR単価","qpd.card.qpd_tooltip":"PRを1つマージするのに費やした平均トークン費用 (総費用 ÷ マージされたPR数)","qpd.card.totals":"マージ済: {{accepted}}/{{outcomes}} PR · 総消費額 {{cost}}","qpd.card.et":"有効トークン: {{tokens}} (採択率 {{rate}})","qpd.card.et_tooltip":"有効トークン (Effective Tokens) — 最終的に採用・マージされたコードに使用されたトークンの割合","qpd.card.sparse_notice":"ヒント:データ量が少ない場合、費用対効果の数値が偏る可能性があります。期間を狭めてお試しください。"},o9={"usage.overview.antigravity_notice_title":"トークンは推定値です","usage.overview.cache_hit_rate_label":"キャッシュヒット率","usage.overview.cache_hit_rate_detail":"{{reused}} 再利用 / {{input}} 入力","usage.overview.antigravity_notice_body":"Antigravity のローカルログには実際の使用量フィールドがないため、ここの数値は文字数(約 4 文字/トークン)から推定したもので、Gemini の prompt cache 割引も差し引かれていません。上限の推定値として扱い、請求書との照合には使わないでください。","stats.period.today":"今日","stats.period.week":"今週","stats.period.month":"今月","stats.period.all":"全期間","stats.period.last_7d":"7日","stats.period.last_30d":"30日","stats.period.avg":"平均","stats.period.convs":"会話","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"モデルの内訳を折りたたむ","dashboard.core_index.expand_aria":"モデルの内訳を展開","dashboard.rolling.title":"最近のアクティビティ","dashboard.rolling.last_7d":"過去 7 日間","dashboard.rolling.last_30d":"過去 30 日間","dashboard.rolling.avg_active_day":"1 日平均","dashboard.projects.title":"プロジェクトの使用状況","dashboard.projects.tokens_label":"トークン","dashboard.projects.stars_label":"スター","dashboard.projects.limit_label":"表示","dashboard.projects.limit_aria":"表示するリポジトリ数を選択","dashboard.projects.limit_top_3":"上位 3 件","dashboard.projects.limit_top_6":"上位 6 件","dashboard.projects.limit_top_10":"上位 10 件","dashboard.projects.empty":"公開リポジトリはありません","dashboard.widgets.title":"デスクトップウィジェット","dashboard.widgets.hint":"デスクトップを右クリック → ウィジェットを編集 → 「TokenTracker」を検索","dashboard.widgets.dismiss_aria":"ウィジェットの紹介を閉じる","dashboard.cost_breakdown.title":"コスト内訳","dashboard.cost_breakdown.total_label":"推定総コスト","dashboard.cost_breakdown.close":"閉じる","trend.monitor.label":"使用トレンド","trend.zoom.open_aria":"全画面表示","trend.zoom.close_aria":"閉じる","trend.zoom.badge":"トレンド分析","trend.zoom.desc":"バーにカーソルを合わせるとトークン、コスト、会話数を確認できます。粒度を切り替えて月から30分単位まで掘り下げられます。","trend.zoom.insight_badge":"分析","trend.zoom.tooltip.cost":"コスト","trend.zoom.tooltip.conversations":"会話","trend.zoom.stats.tokens":"総トークン数","trend.zoom.stats.cost":"総コスト","trend.zoom.stats.conversations":"会話数","trend.zoom.stats.peak":"ピーク時間帯","trend.zoom.gran.aria":"粒度","trend.zoom.gran.30min":"30分","trend.zoom.gran.day":"日","trend.zoom.gran.month":"月","trend.zoom.prev_day":"前日","trend.zoom.next_day":"翌日","trend.zoom.loading":"読み込み中…","trend.zoom.pick_day":"日付を選択","trend.zoom.pick_range":"期間を選択","trend.zoom.insight.empty":"静かな期間。トークンは一つも流れませんでした。","trend.zoom.insight.calm":"控えめな使い方。モデルはほとんど待機し、必要なときだけ動きました。","trend.zoom.insight.steady":"{{active}} 個のアクティブな区間で安定したリズム、ピークは {{peak}}。騒がずに物事を仕上げていくペースです。","trend.zoom.insight.heavy":"本気の稼働:{{active}} 区間が高負荷で動き、ピークは {{peak}}。勢いを待つのではなく自ら生み出す人の出力です。","trend.zoom.insight.massive":"工業規模。{{peak}} のピークと冷めることのないスループット。この量になると、もはやモデルを使うのではなく工場を動かしています。","heatmap.title":"ヒートマップ","heatmap.empty":"まだアクティビティデータがありません。","heatmap.legend.less":"少","heatmap.legend.more":"多","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"トークン","heatmap.month.jan":"1月","heatmap.month.feb":"2月","heatmap.month.mar":"3月","heatmap.month.apr":"4月","heatmap.month.may":"5月","heatmap.month.jun":"6月","heatmap.month.jul":"7月","heatmap.month.aug":"8月","heatmap.month.sep":"9月","heatmap.month.oct":"10月","heatmap.month.nov":"11月","heatmap.month.dec":"12月","heatmap.day.sun":"日","heatmap.day.mon":"月","heatmap.day.tue":"火","heatmap.day.wed":"水","heatmap.day.thu":"木","heatmap.day.fri":"金","heatmap.day.sat":"土","dashboard.session_expired.copy_label":"npx --yes tokentracker-cli init を実行","dashboard.session_expired.copied":"コピーしました","dashboard.install.prompt":"Node.js 18+ をインストールしてから実行:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"インストールコマンドをコピー","dashboard.install.copy_base":"初期化コマンドをコピー","dashboard.install.copied":"クリップボードにコピーしました","dashboard.install.link_code.loading":"専用コードを生成中...","dashboard.install.link_code.failed":"専用コードを利用できません","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"日次内訳","dashboard.daily.empty":"まだデータがありません。先に AI CLI を使用してから {{cmd}} を実行してください。","dashboard.identity.title":"あなたのプロフィール","dashboard.identity.subtitle":"あなたのコーディングの軌跡を記録","dashboard.identity.fallback":"匿名ユーザー","dashboard.overview.layout.drag_handle":"ドラッグして並べ替え","dashboard.overview.layout.reset":"レイアウトをリセット","dashboard.screenshot.twitter_text":"記録された {{total_tokens}} トークン。\\n{{model_name}} が {{model_percent}}% でリード。\\n\\n私の AI 使用状況、未監査 →","heatmap.3d.hover_tip":"クリックして 3D 全画面回転分析モードに入る","heatmap.3d.modal.title":"トークンの 3D ビュー","heatmap.3d.modal.desc":"左ボタンを押しながらドラッグで自由に回転し、ホバーで日々のアクティビティと多次元の統計を確認できます。","heatmap.3d.modal.stats.total_tokens":"年間トークン総量","heatmap.3d.modal.stats.precision_total_tokens":"年間の正確な消費量","heatmap.3d.modal.stats.estimated_cost":"年間推定費用","heatmap.3d.modal.stats.active_rate_days":"アクティブ率 / 日数","heatmap.3d.modal.stats.max_streak":"最長連続アクティブ","heatmap.3d.modal.stats.days_suffix":"日","heatmap.3d.modal.stats.peak_day":"単日ピーク","heatmap.3d.modal.stats.precision_peak_value":"正確な単日ピーク","heatmap.3d.modal.stats.no_data":"データなし","heatmap.3d.modal.legend.title":"アクティビティのレベル","heatmap.3d.modal.palette.emerald":"エメラルドシティ","heatmap.3d.modal.palette.ocean":"ディープオーシャン","heatmap.3d.modal.palette.neon":"サイバーネオン","heatmap.3d.modal.palette.amber":"燃ゆる残照","heatmap.3d.modal.control.play":"ゆっくり自動回転を開始","heatmap.3d.modal.control.pause":"自動回転を一時停止","heatmap.3d.modal.control.reset":"3D 視点をリセット","heatmap.3d.modal.footer.tip":"ピンチでズーム / ホイールでズーム / マウスドラッグで 3D チャートを回転","heatmap.3d.modal.ai.title.default":"たゆまず歩み続ける人","heatmap.3d.modal.ai.eval.default":"技術の大河のなかで、たゆまず歩み続けています。日々のコーディングがいつも華々しいとは限りませんが、小さなアクティビティの一つひとつが、あなたの思考と探求を記録しています。星のような火花がやがて集まり、あなただけのデジタルの海になっていきます。","heatmap.3d.modal.ai.title.peak":"限界突破級コントリビューター","heatmap.3d.modal.ai.eval.peak":"この一年、あなたのトークン産出はきわめて高いエンジニアリング密度を示しました。これほどの開発量は、中規模から大規模なシステム基盤の再構築に深く関わったのに匹敵し、一打鍵ごとに複雑なロジックを確定的なコードへと収束させています。極度の集中と、純粋なエンジニアリングへの情熱の何よりの証です。","heatmap.3d.modal.ai.title.heavy":"高頻度産出級デベロッパー","heatmap.3d.modal.ai.eval.heavy":"卓越した継続的アウトプット。あなたのトークン累積量は数百万語に達し、中編の技術大作を数十冊分に相当します。高い飽和度のコーディングのリズムは、あなたが並外れた実行力で自分だけのデジタル資産を築いていることを示し、卓越した創造力を体現しています。","heatmap.3d.modal.ai.title.core":"中核生産力エキスパート","heatmap.3d.modal.ai.eval.core":"きわめて粘り強い長期的な取り組み。過去一年にわたり、長い期間にわたって安定して高い強度の開発ペースを保ってきました。確かなコード行数とトークン産出によって、あなたは静かにプロジェクトの中核アーキテクチャを築き上げており、まさにエンジニアリングの支柱です。","heatmap.3d.modal.ai.title.steady":"着実成長型エンジニア","heatmap.3d.modal.ai.eval.steady":"堅実で揺るぎない技術の積み重ね。トークンが増えるたびに、あなたは未来へと続くコードの礎を着実に積んでいます。この細く長く続く堅実なリズムは、優れた開発者がエンジニアリングの達人へと至るために必ず通る道です。","heatmap.3d.voxel.joke.1":"🔥 超ヤバい!{{value}} tokens を産出!大規模モデルを猛特訓中?それともコンパイラを手書きで?","heatmap.3d.voxel.joke.2":"🚀 叙事詩級のアウトプット!合計 {{value}} tokens。今日の産出量は地球を一周できるほど、AI もあなたに驚嘆!","heatmap.3d.voxel.joke.3":"⚡ 爆発の日!{{value}} tokens。コードが泉のごとく湧き出て、キーボードが煙を上げ始めた!","heatmap.3d.voxel.level3":"⚡ 生産力の大爆発({{value}} tokens)!高効率で集中したゴールデンタイム、このピークの状態を保ち続けよう!","heatmap.3d.voxel.level2":"🌱 調子が上がってきた({{value}} tokens)!着実なアウトプットで、キーを打つたびに大きな建物に一枚ずつレンガを積み重ねています。","heatmap.3d.voxel.level1":"🍃 塵も積もれば山となる({{value}} tokens)。小さなコミットも未来への投資、複利の力を保とう!","heatmap.3d.voxel.level0":"💤 英気を養う日。コードを書かない日にも、ひらめきはひそかに育っています。","ipcheck.page.title":"Claude IP チェック","ipcheck.page.subtitle":"現在 Claude にアクセスしている出口 IP、クリーン度、地理情報、リスクシグナルを確認し、ログインに影響したりリスク管理を誘発したりしうる要因を把握します。","ipcheck.mask.toggle":"IP を隠す","ipcheck.ipv6.warn":"現在 IPv6 環境です。IPv6 での Claude Code アクセスは推奨されず、一部の検出結果が不完全になる可能性があります。","ipcheck.ip.cn":"中国の出口 IPv4","ipcheck.ip.cloudflare":"Cloudflare 出口","ipcheck.ip.claude":"Claude 出口","ipcheck.ip.failed":"取得に失敗しました","ipcheck.ip.loading":"読み込み中...","ipcheck.trust.title":"信頼スコア","ipcheck.trust.subtitle":"Claude のリスク管理視点での IP クリーン度","ipcheck.trust.no_data":"データなし","ipcheck.trust.no_ip":"Claude の出口 IP を取得できず、スコアを算出できません","ipcheck.trust.no_score":"この IP のスコアデータはまだありません","ipcheck.trust.gauge.low":"0 高リスク","ipcheck.trust.gauge.high":"100 信頼可","ipcheck.trust.label.pristine":"極めてクリーン","ipcheck.trust.label.clean":"クリーン","ipcheck.trust.label.good":"良好","ipcheck.trust.label.neutral":"中立","ipcheck.trust.label.suspicious":"疑わしい","ipcheck.trust.label.unreachable":"アクセス不可","ipcheck.trust.text.excellent":"この IP の評判は非常に良好です","ipcheck.trust.text.great":"この IP の評判は優秀です","ipcheck.trust.text.minor":"この IP には軽微なリスクがあります","ipcheck.trust.text.moderate":"この IP には一定のリスクがあります","ipcheck.trust.text.severe":"この IP は極めて高リスクです","ipcheck.trust.text.restricted":"アクセス不可の地域にあり、Claude は厳格にリスク管理します","ipcheck.trust.region_warn.title":"Claude の出口 IP が {{region}} にあります","ipcheck.trust.region_warn.body":"Claude へのログインは推奨されません。アカウント停止のリスク管理を誘発しやすくなります。","ipcheck.trust.region_support":"Claude 対応地域","ipcheck.trust.region.accessible":"アクセス可","ipcheck.common.unknown":"不明","ipcheck.props.title":"IP の属性","ipcheck.props.region":"地域","ipcheck.props.city":"都市","ipcheck.props.type":"タイプ","ipcheck.props.asn":"ASN","ipcheck.props.org":"プロバイダー","ipcheck.props.residential":"家庭用","ipcheck.props.datacenter":"データセンター","ipcheck.security.title":"セキュリティ検出","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"プロキシ (Proxy)","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"ボット (Crawler)","ipcheck.security.abuser":"不正利用の記録","ipcheck.security.proxy_flag":"プロキシ","ipcheck.security.crawler_yes":"はい","ipcheck.security.crawler_no":"いいえ","ipcheck.security.abuser_yes":"記録あり","ipcheck.security.abuser_no":"記録なし","ipcheck.security.clean":"検出されませんでした","ipcheck.avail.title":"Claude の可用性","ipcheck.avail.tooltip":"Claude のサーバーは米国にあります。アジアからのアクセスで遅延が 100ms を超えるのは正常な状況です。","ipcheck.avail.refresh":"更新","ipcheck.avail.svc_row":"サービス状態","ipcheck.avail.latency.normal":"正常","ipcheck.avail.latency.good":"良好","ipcheck.avail.latency.slow":"やや遅い","ipcheck.avail.latency.unreachable":"アクセス不可","ipcheck.avail.svc.none":"すべて正常","ipcheck.avail.svc.minor":"軽微な障害","ipcheck.avail.svc.major":"重大な障害","ipcheck.avail.svc.critical":"深刻な障害","ipcheck.avail.svc.maintenance":"メンテナンス中","ipcheck.avail.svc.other":"サービス異常","ipcheck.dns.title":"DNS リーク検出","ipcheck.dns.status":"状態","ipcheck.dns.outlet":"DNS 出口","ipcheck.dns.outlet_ip":"DNS 出口 IP","ipcheck.dns.isp":"プロバイダー","ipcheck.dns.leaked":"リークの可能性あり","ipcheck.dns.no_leak":"リークは検出されませんでした","ipcheck.dns.encrypted":"DNS は暗号化または非公開","ipcheck.dns.cn_tag":"中国 DNS","ipcheck.udp.title":"WebRTC UDP リーク","ipcheck.udp.status":"状態","ipcheck.udp.outlet":"UDP 出口","ipcheck.udp.outlet_ip":"UDP 出口 IP","ipcheck.udp.origin":"所在地","ipcheck.udp.disabled":"WebRTC は無効です","ipcheck.udp.no_leak":"リークは検出されませんでした","ipcheck.udp.leaked":"リークの可能性あり","ipcheck.udp.anomaly":"異常","ipcheck.device.title":"デバイス情報","ipcheck.device.tz":"タイムゾーン","ipcheck.device.lang":"言語","ipcheck.device.os":"OS / ブラウザ","ipcheck.device.touch":"タッチスクリーン","ipcheck.device.net":"ネットワークタイプ","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL レンダラー","ipcheck.device.canvas_fp":"Canvas フィンガープリント","ipcheck.device.webgl_fp":"WebGL フィンガープリント","ipcheck.device.match":"一致","ipcheck.device.mismatch":"不一致","ipcheck.device.local":"ローカル","ipcheck.device.estimate_suffix":"(推定)","ipcheck.device.diff_equal":"オフセットにわずかな差があります","ipcheck.device.diff_ahead":"Claude が {{h}} 時間進んでいます","ipcheck.device.diff_behind":"Claude が {{h}} 時間遅れています","ipcheck.device.lang_expected":"Claude 出口でよく使われる言語","ipcheck.device.touch_yes":"はい","ipcheck.device.touch_no":"いいえ","ipcheck.device.dnt_on":"オン","ipcheck.device.dnt_off":"オフ","ipcheck.device.dnt_unset":"未設定","ipcheck.device.net_unsupported":"検出に非対応","ipcheck.device.unsupported":"非対応","ipcheck.history.title":"Claude 出口 IP の履歴","ipcheck.history.subtitle":"ブラウザのローカルにのみ保存され、最大 6 件まで保持されます","ipcheck.history.clear":"クリア","ipcheck.history.empty":"履歴はまだありません","ipcheck.history.current":"現在","ipcheck.region.CN":"中国本土","ipcheck.region.HK":"香港","ipcheck.region.MO":"マカオ","ipcheck.region.RU":"ロシア","ipcheck.region.KP":"北朝鮮","ipcheck.region.IR":"イラン","ipcheck.region.SY":"シリア","ipcheck.region.CU":"キューバ","ipcheck.region.BY":"ベラルーシ","ipcheck.region.VE":"ベネズエラ","leaderboard.profile_modal.close":"閉じる","leaderboard.profile_modal.loading":"ユーザープロフィールを読み込み中…","leaderboard.profile_modal.error":"ユーザープロフィールの読み込みに失敗しました。","leaderboard.profile_modal.empty":"このユーザーのプロフィールは公開されていません。","leaderboard.profile_modal.row_aria":"{{name}} のプロフィールを表示","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"ランク","leaderboard.profile_modal.hero.total_tokens":"トークン合計","leaderboard.profile_modal.hero.total_cost":"支出合計","leaderboard.profile_modal.hero.github":"GitHub プロフィール","leaderboard.profile_modal.stat.total_cost":"支出合計","leaderboard.profile_modal.stat.total_tokens":"トークン合計","leaderboard.profile_modal.stat.active_days":"アクティブ日数","leaderboard.profile_modal.stat.avg_per_day":"1 日平均支出","leaderboard.profile_modal.streak.current":"現在の連続","leaderboard.profile_modal.streak.longest":"最長連続","leaderboard.profile_modal.streak.days":"{{count}} 日","leaderboard.profile_modal.best_day.title":"ベストデー","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"{{count}} 個のモデルを使用","leaderboard.profile_modal.models.favorite":"お気に入りモデル","leaderboard.profile_modal.models.none":"モデルの記録はまだありません","leaderboard.profile_modal.heatmap.title":"アクティビティ(直近 365 日)","leaderboard.profile_modal.providers.title":"プロバイダー別の分布","leaderboard.profile_modal.providers.none":"この期間の使用データはありません。","leaderboard.profile_modal.view_full":"完全なプロフィールを表示","local_only.title":"クライアント内でご利用ください","local_only.body":"このページはお使いの端末上のデータを読み込むため、Mac アプリまたはコマンドラインの dashboard でのみ表示できます。","local_only.open_app":"Mac アプリ内で開く","local_only.download":"Mac アプリをダウンロード","dashboard.auth_gate.title":"Token Tracker にサインイン","dashboard.auth_gate.subtitle":"サインインして、クラウドでの API 使用量、コスト、トークン消費の傾向を同期および表示します。","dashboard.auth_gate.button":"今すぐサインイン","dashboard.expired_gate.title":"セッションの有効期限切れ","dashboard.expired_gate.subtitle":"セッションの有効期限が切れました。クラウドダッシュボードの表示を続けるには、もう一度サインインしてください。","dashboard.expired_gate.button":"再サインイン","shared.app_name":"Token Tracker","dashboard.auth_gate.hero_title":"AIエージェントのすべてのトークン消費","dashboard.auth_gate.hero_subtitle":"明確で透過的、マルチエンドポイント制御","dashboard.auth_gate.desc":"Claude Code、Cursor、Gemini CLIなどのすべての主流エージェントからのトークンクォータ、同時実行コスト、遅延統計をパブリッククラウドで安全に同期し、これまでにない包括的な可視化分析を提供します。","dashboard.auth_gate.feature.sync.title":"リアルタイムクラウド同期","dashboard.auth_gate.feature.sync.desc":"各エンドポイントの実行コストを自動的に収集し、プライベートクラウドに数秒で安全にアーカイブします。","dashboard.auth_gate.feature.anal.title":"多次元ダッシュボード分析","dashboard.auth_gate.feature.anal.desc":"モデル分類、時間枠ごとにトークン分布を統計し、コストの急増と消費構成をいつでも追跡できます。","dashboard.auth_gate.feature.guard.title":"ローカル優先の自律性","dashboard.auth_gate.feature.guard.desc":"Localhostモードではすべてのログイン認証を自動的にスキップし、ローカルのオフラインデバッグエクスペリエンスを完全に保護します。","dashboard.expired_gate.hero_title":"クラウドセッションの有効期限切れ","dashboard.expired_gate.desc":"プライバシーとクラウドドライブのセキュリティのため、有効なセッションは一定期間後に自動的に終了します。ダッシュボードを即座に復元するには、もう一度検証してください。","dashboard.expired_gate.feature.sec.title":"安全な保護","dashboard.expired_gate.feature.sec.desc":"暗号化された資格情報は期限が切れると自動的に破壊され、トークン資産のプライバシーを厳密に保護します。","dashboard.expired_gate.feature.restore.title":"シームレスな復元","dashboard.expired_gate.feature.restore.desc":"再ログイン後、ターミナルフックを再構成することなく、マルチデバイスのリアルタイムダッシュボードが自動的に復元されます。","dashboard.expired_gate.feature.cloud.title":"クロスデバイス同期","dashboard.expired_gate.feature.cloud.desc":"同期されたダッシュボードを介して、どこからでもトークンログを簡単に確認して開消を管理できます。","dashboard.device_filter.all":"すべてのデバイス","dashboard.device_filter.aria":"デバイスで絞り込む","dashboard.device_card.title":"デバイス別","dashboard.device_card.unnamed":"名称未設定のデバイス","nav.pet":"デスクトップペット","pet.page.eyebrow":"デスクトップコンパニオン","pet.page.title":"ペット","pet.page.subtitle":"コンパニオンを選び、実際の AI 利用状況への反応をプレビューできます。","pet.preview.states":"ペットの状態をプレビュー","pet.controls.title":"デスクトップ操作","pet.controls.show":"デスクトップペットを表示","pet.controls.show_hint":"コンパニオンをほかのウィンドウより手前に表示します。","pet.controls.size":"ペットのサイズ","pet.controls.native_only":"実際のペットを操作するには TokenTracker デスクトップアプリでこのページを開いてください。","pet.characters.title":"コンパニオンを選択","pet.characters.subtitle":"すべてのキャラクターが完全な状態システムと独自の配色・シルエットを備えています。","pet.character.clawd":"Clawd","pet.character.clawd_desc":"ハサミ型シルエットの元祖トークンキーパー。","pet.character.sprout":"Sprout","pet.character.sprout_desc":"葉の耳と小さな根の足を持つ苗木の精霊。","pet.character.byte":"Byte","pet.character.byte_desc":"表情豊かな画面とスラスターを持つ端末ロボット。","pet.character.ember":"Ember","pet.character.ember_desc":"炎の尾で好調な連続記録を祝うキツネの精霊。","pet.state.calm":"穏やか","pet.state.focus":"集中","pet.state.multitask":"マルチモデル","pet.state.streak":"連続記録","pet.state.celebrate":"新しい利用","pet.state.rest":"休憩","pet.size.small":"小","pet.size.medium":"中","pet.size.large":"大","pet.import.title":"Codex ペットをインポート","pet.import.subtitle":"codex-pets.net のリンクを貼るか、.zip を選択します。","pet.import.add":"追加","pet.import.zip":"パッケージを選択","pet.import.remove":"インポートしたペットを削除","pet.import.success":"ペットをインポートして選択しました。","pet.import.failed":"このペットをインポートできませんでした。","pet.import.busy":"インポート中…","pet.format.v2":"V2","pet.import.removed":"インポートしたペットを削除しました。","pet.import.url_label":"Codex Pets のURLまたはペットID"},l9={"landing.handle.default":"VIBE_USER","landing.handle.special":"ボルト","landing.screenshot.alt":"TokenTracker ダッシュボードのスクリーンショット","landing.nav.login":"ログイン","landing.nav.signup":"登録","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"コマンドをコピー","landing.install.action.copied":"コピーしました","landing.meta.title":"Token Tracker — AI Coding CLI のトークン使用状況トラッカー","landing.meta.description":"Claude Code、Cursor、Codex などのツールのトークン使用量を自動的に監視。ローカルファースト、プライバシー重視、設定不要。","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker シェア","share.meta.description":"Token Tracker ダッシュボードのスナップショットをシェア。モデル、プロジェクト、期間をまたいだ使用状況のインサイトを含みます。","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"「{{handle}}」を試す","landing.rank.expectation":"予想ランク:{{rank}}","landing.rank.singularity":"トップ","landing.rank.unranked":"ランク外","landing.cta.primary":"ダッシュボードへ","landing.cta.secondary":"GitHub","landing.v2.hero.title_line1":"あなたのすべての","landing.v2.hero.title_line2":"AI トークンを追跡","landing.v2.install.mac_cta":"macOS 版をダウンロード","landing.v2.install.win_cta":"Windows 版をダウンロード","landing.v2.install.desktop_cta":"デスクトップ版をダウンロード","landing.v2.install.os_macos":"macOS","landing.v2.install.os_windows":"Windows","landing.v2.install.availability":"macOS と Windows に対応","landing.v2.models.title":"対応する AI CLI ツール","landing.v2.compare.kicker":"シームレスな追跡","landing.v2.compare.title":"AI の使用量を当てずっぽうで考えるのはもうやめましょう。","landing.v2.compare.subtitle":"AI CLI ツールは生の履歴データを散らかったローカルファイルに隠しがちです。TokenTracker はそれらをローカルファーストのダッシュボードにリアルタイムで集約します。","landing.v2.distill.body":"100% ローカル処理。prompt やコードは一切アップロードしません。","landing.v2.compare.with.title":"Token Tracker あり","landing.v2.compare.with.p1":"集約された使用状況ダッシュボード","landing.v2.compare.with.p2":"リアルタイムのトークン指標","landing.v2.compare.with.p3":"100% ローカルでプライバシーも安心","landing.v2.compare.with.p4":"マルチクライアントのターミナル監査証跡","landing.v2.compare.without.title":"なし","landing.v2.compare.without.p1":"散らばった JSON ログファイル","landing.v2.compare.without.p2":"トークン消費がまったく見えない","landing.v2.compare.without.p3":"突然の API 請求","landing.v2.compare.without.p4":"過去の監査ログが皆無","landing.v2.leaderboard.kicker":"グローバル TOKEN リーダーボード","landing.v2.leaderboard.title":"AI Token 効率","landing.v2.leaderboard.subtitle":"ローカルの AI Token 使用量を匿名で同期し、グローバル効率リーダーボードに参加できます。世界中の開発者とモデルのコスト効率や呼び出し頻度を比較できます。","landing.v2.leaderboard.view_more":"リーダーボード全体を見る","landing.v2.footer.line":"Token Tracker — 開発者が、開発者のために作りました。","landing.v2.nav.status":"ステータス","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"Claude Code、Cursor、Codex などのツールのトークン使用量を自動的に監視。ローカルファースト、プライバシー重視、設定不要。","leaderboard.profile.nav.back":"リーダーボード","leaderboard.profile.nav.download":"ダウンロード","leaderboard.title":"リーダーボード","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"全期間","leaderboard.generated_at":"{{ts}} に更新","leaderboard.period.week":"週","leaderboard.period.month":"月","leaderboard.period.total":"全期間","leaderboard.me_label":"あなた","leaderboard.anon_label":"匿名","leaderboard.error.unknown":"不明なエラー","leaderboard.loading":"読み込み中…","leaderboard.empty":"データがありません","leaderboard.column.rank":"ランク","leaderboard.column.user":"ユーザー","leaderboard.column.total":"合計","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"その他","leaderboard.column.est_cost":"推定支出","leaderboard.signin_prompt":"ログインするとランキングに参加できます","leaderboard.signin_button":"ログイン","leaderboard.sync_prompt":"クラウド同期を有効にするとランキングに参加できます","leaderboard.sync_button.idle":"有効にして同期","leaderboard.sync_button.busy":"同期中…","leaderboard.pagination.page_size_label":"ページあたりの表示数","leaderboard.pagination.prev":"前のページ","leaderboard.pagination.next":"次のページ","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"{{page}} ページ目","share.modal.title":"あなたのデータをシェア","share.modal.subtitle":"ポスターカードを生成して、どこでもシェア。","share.modal.close":"閉じる","share.modal.action.x":"X にシェア","share.modal.action.download":"ダウンロード","share.modal.action.copy":"画像をコピー","share.modal.hint.x":"画像をツイートに貼り付け","share.modal.hint.copy":"クリップボードへ","share.modal.name_label":"表示名","share.modal.name_placeholder":"名前を入力","share.modal.style_label":"スタイル","share.modal.footer":"データは常にローカルに保持されます。画像はブラウザ内で生成され、アップロードされることはありません。","share.button.label":"シェア","share.button.aria":"シェアカードを開く","share.toast.copied":"画像をクリップボードにコピーしました","share.toast.downloaded":"画像を保存しました","share.toast.failed":"画像の生成に失敗しました","share.toast.working":"生成中…","share.variant.neon":"ネオン","share.variant.broadsheet":"特集号","share.date.month_year":"{{year}} 年 {{month}}","share.issue.all_time":"全期間","share.month_short.jan":"1 月","share.month_short.feb":"2 月","share.month_short.mar":"3 月","share.month_short.apr":"4 月","share.month_short.may":"5 月","share.month_short.jun":"6 月","share.month_short.jul":"7 月","share.month_short.aug":"8 月","share.month_short.sep":"9 月","share.month_short.oct":"10 月","share.month_short.nov":"11 月","share.month_short.dec":"12 月","share.hook.top_loyal":"{{name}} が使用量の {{percent}}% を占めました。","share.hook.days_record":"合計 {{days}} 日を記録。","share.hook.top_led":"{{name}} がリードし、割合は {{percent}}%。","share.hook.multi_models":"{{days}} 日間で {{count}} 個のモデルを使用。","share.hook.days_with_model":"{{name}} が {{days}} 日間付き合ってくれました。","share.hook.new_chapter":"新しい記録が、ここから始まります。","share.card.broadsheet.issue":"号数","share.card.broadsheet.by":"シェアした人","share.card.broadsheet.tracked_since":"追跡開始","share.card.broadsheet.total_tokens":"トークン総数","share.card.broadsheet.estimated_spend":"推定支出","share.card.broadsheet.billable_days":"{{days}} 日のアクティブ日","share.card.broadsheet.heatmap_title":"年間ヒートマップ","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} 日に記録あり","share.card.broadsheet.roster_title":"モデルランキング","share.card.broadsheet.roster_subtitle":"よく使うモデルのローテーション","share.card.broadsheet.empty":"今週は静かで、まだモデルのデータがありません。","share.card.broadsheet.global_rank":"全体ランク","share.card.broadsheet.active_days":"アクティブ","share.card.broadsheet.days_count":"{{days}} 日","share.card.broadsheet.track_yours":"あなた自身を追跡する","share.card.annual.report_title":"使用状況レポート","share.card.annual.less":"少","share.card.annual.more":"多","share.card.annual.heatmap_title":"トークンヒートマップ","share.card.annual.total_tokens":"トークン総数","share.card.annual.estimated_cost":"推定コスト","share.card.annual.longest_streak":"最長連続","share.card.annual.days_count":"{{days}} 日","share.card.annual.top_model":"人気モデル"},c9={"header.auth.sign_in_aria":"로그인","login.back_home":"홈으로 돌아가기","login.cloud_only":"클라우드 로그인이 설정되지 않았습니다. localhost의 로컬 대시보드를 사용하세요.","login.title":"로그인","login.subtitle":"이메일 또는 연결된 계정을 선택하세요.","login.dismiss":"닫기","login.verify_email_success":"이메일이 인증되었습니다. 아래에서 로그인할 수 있습니다.","login.verify_email_pending":"이메일에서 계정 인증을 완료한 후 로그인하세요.","login.oauth.continue":"{{provider}}(으)로 계속하기","login.divider":"또는","login.tab.sign_in":"로그인","login.tab.sign_up":"계정 만들기","login.field.name":"표시 이름","login.field.name_placeholder":"선택 사항","login.field.email":"이메일","login.field.password":"비밀번호","login.forgot_password":"비밀번호를 잊으셨나요?","login.password_hint":"최소 {{min}}자 이상.","login.submit.sign_in":"이메일로 로그인","login.submit.sign_up":"계정 만들기","reset_password.back_to_sign_in":"로그인으로 돌아가기","reset_password.title":"비밀번호 재설정","reset_password.subtitle":"재설정 링크를 받을 이메일을 입력하세요.","reset_password.request.submit":"재설정 링크 보내기","reset_password.request.sent":"이메일을 확인하고 코드를 입력하세요.","reset_password.field.code":"재설정 코드","reset_password.field.new_password":"새 비밀번호","reset_password.field.confirm_password":"비밀번호 확인","reset_password.reset.submit":"비밀번호 재설정","reset_password.error.password_mismatch":"비밀번호가 일치하지 않습니다.","reset_password.error.missing_token":"재설정 토큰이 없습니다. 새 재설정 링크를 요청하세요.","reset_password.success":"비밀번호가 업데이트되었습니다. 새 비밀번호로 로그인할 수 있습니다.","reset_password.success_cta":"로그인으로 돌아가기","auth.callback.processing":"처리 중…","auth.callback.success":"로그인 성공","auth.callback.redirecting":"TokenTracker로 돌아가는 중…","auth.callback.failed":"로그인을 완료하지 못했습니다. 다시 시도해 주세요.","auth.callback.close":"이 페이지 닫기","login_modal.subtitle":"로그인하여 리더보드에 참여하세요","login_modal.continue_email":"이메일로 계속하기","login_modal.divider_email":"이메일","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"M","shared.unit.billion_abbrev":"B","shared.data_source":"데이터 출처: {{source}}","shared.error.prefix":"오류: {{error}}","shared.status.unsynced":"—","shared.time.now":"방금","shared.time.m_ago":"{{n}}분 전","shared.time.h_ago":"{{n}}시간 전","shared.time.d_ago":"{{n}}일 전","error.boundary.title":"문제가 발생했습니다","error.boundary.subtitle":"이 화면을 표시하지 못했습니다","error.boundary.hint":"콘솔을 연 다음 페이지를 새로고침하세요","error.boundary.no_details":"오류 세부 정보 없음","error.boundary.action.reload":"새로고침","identity_card.rank_label":"시작일","identity_card.streak_label":"활동 일수","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}}일","usage.summary.total":"총 토큰","usage.summary.toggle_aria":"숫자 축약 표시 전환","usage.period.day":"일","usage.period.week":"주","usage.period.month":"월","usage.period.total":"전체","usage.period.custom":"사용자 지정","usage.metric.total":"전체","usage.metric.input":"입력","usage.metric.output":"출력","usage.metric.cached_input":"캐시된 입력","usage.metric.reasoning_output":"추론 출력","usage.button.refresh":"새로고침","usage.overview.tablist_aria":"기간","usage.overview.cost_breakdown_aria":"비용 내역 보기","usage.overview.distribution_aria":"제공자 분포: {{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}: {{percent}}%, {{tokens}} 토큰, {{cost}}. 클릭하여 세부 정보 {{action}}","usage.overview.expand":"펼치기","usage.overview.collapse":"접기","usage.overview.model_count":"모델 {{count}}개","usage.overview.model_details_aria":"{{provider}} 모델 세부 정보","widgets.page.title":"위젯","widgets.cta.open_gallery":"위젯 갤러리 열기","widgets.cta.download":"Mac 앱 다운로드","widgets.cta.macos_only":"macOS 전용","widgets.menubar.section.title":"메뉴 막대","widgets.gallery.section.title":"데스크톱 위젯","widgets.summary.name":"사용량 요약","widgets.summary.description":"오늘과 7일간의 사용량을 간결한 추세선으로 보여줍니다.","widgets.heatmap.name":"활동 히트맵","widgets.heatmap.description":"GitHub 스타일의 일별 캘린더. 연속 활동일과 쉬는 날을 한눈에 파악하세요.","widgets.topModels.name":"인기 모델","widgets.topModels.description":"토큰 비율로 정렬한 가장 많이 사용한 모델.","widgets.limits.name":"사용 한도","widgets.limits.description":"Claude, Codex, Cursor, Gemini 등의 실시간 사용 한도 진행 상황.","daily.sort.date.label":"날짜","daily.sort.date.title":"날짜순 정렬","daily.sort.total.label":"전체","daily.sort.total.title":"전체순 정렬","daily.sort.input.label":"입력","daily.sort.input.title":"입력순 정렬","daily.sort.output.label":"출력","daily.sort.output.title":"출력순 정렬","daily.sort.cached.label":"캐시","daily.sort.cached.title":"캐시된 입력순 정렬","daily.sort.reasoning.label":"추론","daily.sort.reasoning.title":"추론 출력순 정렬","daily.sort.conversations.label":"대화 수","daily.sort.conversations.title":"대화순 정렬","details.pagination.prev":"이전","details.pagination.next":"다음","limits.copilot.otelHint.title":"Copilot 토큰 사용량 추적","limits.copilot.otelHint.body":"한도 정보는 GitHub OAuth 토큰을 통해 로드됩니다. 토큰별 사용량도 기록하려면 Copilot의 OpenTelemetry 내보내기를 활성화하고 셸 프로필(~/.zshrc 또는 ~/.bashrc)에 다음 줄을 추가하세요:","limits.copilot.otelHint.copy":"복사","limits.copilot.otelHint.copied":"복사됨","limits.panel.title":"사용 한도","limits.panel.mode_separator":" · ","limits.label.cursor_plan":"플랜","limits.label.cursor_auto":"자동","limits.label.cursor_api":"API","limits.label.kiro_month":"월간","limits.label.kiro_bonus":"보너스","limits.label.kimi_weekly":"주간","limits.label.kimi_5h":"5h","limits.label.kimi_total":"전체","limits.label.kimi_parallel":"동시 실행: {{count}}","limits.explain.used":"{{label}}: {{used}}% 사용","limits.explain.on_track":"{{label}}: 양호, 초기화 전 약 {{pct}}%","limits.explain.ahead_eta":"{{label}}: 빠름, 약 {{eta}} 후 소진","limits.explain.ahead_pct":"{{label}}: 빠름, 초기화 전 약 {{pct}}%","limits.explain.body":"표시선은 균일 페이스 위치이며, 채움이 넘으면 빠른 편입니다.","limits.explain.remaining":"{{label}}: {{used}}% 남음","limits.explain.on_track_remaining":"{{label}}: 양호, 초기화 전 약 {{pct}}% 남음","limits.explain.ahead_pct_remaining":"{{label}}: 빠름, 초기화 전 약 {{pct}}% 남음","limits.explain.body_remaining":"표시선은 균일 페이스 위치이며, 채움이 못 미치면 빠른 편입니다.","limits.label.copilot_premium":"프리미엄","limits.label.copilot_chat":"채팅","limits.label.grok_month":"월간","limits.label.grok_ondemand":"온디맨드","limits.provider.claude":"Claude","limits.provider.codex":"Codex","limits.provider.cursor":"Cursor","limits.provider.gemini":"Gemini","limits.provider.kimi":"Kimi","limits.provider.kiro":"Kiro","limits.provider.grok":"Grok Build","limits.provider.copilot":"GitHub Copilot","limits.provider.antigravity":"Antigravity","limits.provider.zcode":"ZCode","limits.provider.opencode_go":"OpenCode Go","limits.label.zcode_glm52":"GLM-5.2","limits.label.zcode_glm5t":"GLM-5-Turbo","limits.label.opencode_go_5h":"5h","limits.label.opencode_go_weekly":"Weekly","limits.label.opencode_go_monthly":"Monthly","limits.label.claude_5h":"5h","limits.label.claude_7d":"7d","limits.label.claude_opus":"Opus","limits.label.codex_5h":"5h","limits.label.codex_7d":"7d","limits.label.codex_credits":"크레딧","limits.label.codex_spark_5h":"Spark 5h","limits.label.codex_spark_7d":"Spark 7d","limits.codex_credits.detail":"{{used}} / {{limit}} 크레딧 사용 · 남은 {{remaining}}","limits.codex_reset_bank.title":"리셋","limits.codex_reset_bank.row_label":"리셋 {{index}}","limits.codex_reset_bank.count_only":"리셋: {{count}}회 사용 가능 · 만료 시간 확인 불가","limits.label.gemini_pro":"Pro","limits.label.gemini_flash":"Flash","limits.label.gemini_lite":"Lite","limits.label.antigravity_claude_weekly":"Cl 7d","limits.label.antigravity_claude_5h":"Cl 5h","limits.label.antigravity_gemini_weekly":"Gm 7d","limits.label.antigravity_gemini_5h":"Gm 5h","limits.label.antigravity_live":"live","limits.label.antigravity_cached":"cached","limits.tooltip.antigravity_live":"실행 중인 로컬 Antigravity 프로세스에서 직접 가져온 실시간 제한입니다。","limits.tooltip.antigravity_cached":"캐시된 제한입니다. 업데이트하려면 Antigravity IDE/CLI를 실행하세요。","limits.bar.sub_one_percent":"<1","limits.status.not_connected":"연결되지 않음","limits.status.no_data":"실시간 한도 데이터가 반환되지 않았습니다","limits.status.all_hidden":"모든 한도 제공자가 숨겨져 있습니다. 표시 설정을 열어 다시 표시하세요.","nav.usage":"토큰","nav.limits":"한도","nav.widgets":"macOS 위젯","nav.skills":"Skills","nav.leaderboard":"리더보드","nav.collapse":"사이드바 접기","nav.expand":"사이드바 펼치기","nav.menu":"내비게이션 메뉴 열기","nav.close_menu":"내비게이션 메뉴 닫기","nav.aside_label":"주 내비게이션","nav.nav_label":"기본","limits.page.subtitle":"AI 도구 전반의 사용 한도와 할당량 사용 현황.","limits.settings.toggle_visible":"표시 여부 전환","limits.settings.display_mode_label":"사용량","limits.settings.display_mode_used":"사용됨","limits.settings.display_mode_remaining":"남음","limits.page.openSettings":"표시 설정","nav.group.general":"일반","nav.group.tools":"도구","nav.group.account":"계정","nav.settings":"설정","header.auth.open_settings":"설정 열기","settings.page.title":"설정","settings.page.subtitle":"계정, 외관 및 표시 환경설정을 관리하세요.","settings.section.appearance":"외관","settings.section.account":"계정","settings.section.limits":"한도 표시","settings.appearance.theme.label":"테마","settings.appearance.theme.hint":"대시보드 전반에서 Token Tracker가 표시되는 방식을 선택하세요.","settings.appearance.theme.light":"라이트","settings.appearance.theme.dark":"다크","settings.appearance.theme.system":"시스템","settings.account.displayName":"표시 이름","settings.account.edit":"편집","settings.account.save":"저장","settings.account.saving":"저장 중...","settings.account.cancel":"취소","settings.account.userId":"사용자 ID","settings.account.copyUserId":"사용자 ID 복사","settings.account.copy":"복사","settings.account.copied":"복사됨","settings.account.cloudSync":"클라우드 동기화","settings.account.cloudSyncHint":"로컬 사용량을 Token Tracker 클라우드 계정에 업로드합니다.","settings.account.publicProfile":"공개 프로필","settings.account.publicProfileHint":"공개 리더보드에 사용량을 표시합니다.","settings.account.displayNameAnonymousHint":"익명 — 리더보드에서 이름과 아바타가 숨겨집니다","settings.account.displayNameDisabledWhileAnon":"이름을 편집하려면 먼저 스위치를 켜세요","settings.account.githubUrl":"GitHub 프로필","settings.account.githubUrlHint":"리더보드에서 이름 옆에 GitHub 링크를 표시합니다.","settings.account.githubUrlPlaceholder":"사용자명 또는 https://github.com/사용자명","settings.account.githubUrlInvalid":"GitHub 사용자명 또는 https://github.com/사용자명 형식의 URL을 입력하세요.","settings.labs.qpd.label":"개발 가성비 및 PR 비용 분석","settings.labs.qpd.hint":"실험적 기능. 성과(outcomes.jsonl) 데이터를 토큰 소비 데이터와 연계하여 PR당 평균 토큰 비용 및 유효 토큰 비율을 산출합니다. 토큰 비용 통계에는 영향을 미치지 않습니다.","settings.labs.qpd.aria":"개발 가성비 카드 전환","leaderboard.github.aria":"GitHub 프로필 열기","leaderboard.github.tooltipAction":"클릭하여 GitHub 프로필 열기","leaderboard.github.tooltipPrefix":"여기에 표시하려면","leaderboard.github.tooltipSettingsLink":"설정","leaderboard.github.tooltipSuffix":"에서 설정하세요","settings.account.signOut":"로그아웃","settings.account.signIn":"로그인","settings.account.signedOutHint":"로그인하여 클라우드 동기화와 리더보드 환경설정을 관리하세요.","settings.section.menubar":"메뉴 막대 앱","settings.menubar.showStats":"메뉴 막대에 통계 표시","settings.menubar.showStatsHint":"메뉴 막대 아이콘 옆에 오늘의 토큰 수와 비용을 표시합니다.","settings.menubar.animatedIcon":"애니메이션 아이콘","settings.menubar.animatedIconHint":"메뉴 막대에서 Clawd 캐릭터를 깜빡이고 동기화 애니메이션을 재생합니다.","settings.menubar.confettiOnReset":"한도 초기화 시 색종이","settings.menubar.confettiOnResetHint":"한도에 근접한 뒤 사용 한도가 초기화되면 불꽃놀이로 축하합니다.","settings.menubar.launchAtLogin":"로그인 시 실행","settings.menubar.launchAtLoginHint":"macOS에 로그인할 때 TokenTrackerBar를 자동으로 시작합니다.","settings.menubar.syncNow":"지금 동기화","settings.menubar.syncNowHint":"로컬 AI 도구 로그를 즉시 파싱하고 업로드합니다.","settings.menubar.syncing":"동기화 중…","settings.menubar.updates":"업데이트","settings.menubar.checkUpdates":"업데이트 확인","settings.footer.statusPage":"시스템 상태","menubar.slot.primary":"첫 번째 위치","menubar.slot.secondary":"두 번째 위치","menubar.native_only":"라이브 메뉴 막대 표시를 편집하려면 macOS용 TokenTrackerBar를 여세요.","menubar.metric.today_tokens":"오늘 토큰","menubar.metric.today_cost":"오늘 비용","menubar.metric.last_7d_tokens":"최근 7일","menubar.metric.total_tokens":"총 토큰","menubar.metric.total_cost":"총 비용","menubar.metric.claude_5h":"Claude 5시간 한도","menubar.metric.claude_7d":"Claude 7일 한도","menubar.metric.codex_5h":"Codex 5시간 한도","menubar.metric.codex_7d":"Codex 7일 한도","menubar.metric.codex_credits":"Codex 크레딧 한도","menubar.metric.codex_spark_5h":"Codex Spark 5시간 한도","menubar.metric.codex_spark_7d":"Codex Spark 7일 한도","nav.ip_check":"Claude IP 확인","skills.page.title":"Skills","skills.tab.my":"내 Skills","skills.tab.browse":"둘러보기","skills.action.refresh":"새로고침","skills.action.install":"설치","skills.action.choose_targets":"대상 선택","skills.target.menu_label":"설치 위치","skills.target.none":"대상 없음","skills.toast.installed":"{{name}}을(를) {{targets}}에 설치했습니다.","skills.action.remove":"제거","skills.action.search":"검색","skills.action.search_aria":"skills 검색","skills.action.search_clear":"검색 지우기","skills.target.synced_summary":"{{targets}}에 동기화됨","skills.target.synced_none":"어떤 agent에도 동기화되지 않음","skills.row.open_details":"{{name}} 세부 정보 열기","skills.detail.close":"세부 정보 닫기","skills.detail.sync_section_title":"동기화 대상","skills.detail.remove_button":"모든 agent에서 제거","skills.detail.remove_confirm_hint":"모든 agent에서 이 skill의 동기화를 해제하고 로컬 복사본을 삭제합니다.","skills.filter.agent_label":"Agent","skills.filter.agent_all":"모든 agent","skills.filter.clear":"필터 지우기","skills.my.placeholder":"설치된 skills 필터…","skills.filter.result_count":"skill {{filtered}} / {{total}}개","skills.filter.result_count_browse":"결과 {{count}}개","skills.empty.no_match":"현재 필터에 일치하는 skill이 없습니다.","hint.dismiss":"힌트 닫기","hint.dismissible_aria":"닫을 수 있는 힌트","skills.card.installed":"설치됨","skills.card.targets_prefix":"설치 위치:","skills.card.targets_change":"변경","skills.card.installs":"설치 {{count}}회","skills.source.label":"출처","skills.source.all":"모든 저장소","skills.mode.repo":"저장소","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"활성화된 저장소에서 검색…","skills.browse.placeholder_repo":"{{repo}}에서 검색…","skills.browse.placeholder_skillssh":"skills.sh 레지스트리 검색…","skills.browse.empty_sources":"skill을 둘러보려면 아래에서 GitHub 저장소를 추가하세요.","skills.browse.add_repo_hint":"더 많은 skill이 필요하신가요? GitHub 저장소를 추가하세요.","skills.browse.manage_sources":"출처 관리","skills.browse.hint_skillssh":"skills.sh를 검색하려면 2자 이상 입력하세요.","skills.browse.loading_hint":"GitHub에서 skill 메타데이터를 가져오는 중입니다. 첫 로드는 최대 1분이 걸릴 수 있으며, 결과는 캐시됩니다.","skills.error.generic":"Skill 작업에 실패했습니다.","skills.confirm.remove_title":"{{name}}을(를) 제거할까요?","skills.confirm.remove_managed":"이 skill은 연결된 모든 AI 도구에서 제거됩니다. 몇 초 안에 실행을 취소할 수 있습니다.","skills.confirm.remove_local":"연결된 모든 AI 도구에서 디스크의 skill 폴더를 삭제합니다. 이 작업은 취소할 수 없습니다.","skills.toast.removed":"{{name}}을(를) 제거했습니다.","shared.action.undo":"실행 취소","shared.action.cancel":"취소","shared.action.apply":"적용","skills.empty.my":"아직 skill이 없습니다. 둘러보기를 열어 검색하고 설치하세요.","skills.empty.my_cta":"둘러보기","skills.empty.browse":"이 출처에서 skill을 찾을 수 없습니다.","skills.empty.search":"결과가 없습니다. 다른 검색어를 시도해 보세요.","skills.repo.placeholder":"owner/repository","skills.repo.add":"저장소 추가","skills.repo.invalid":"owner/repository 또는 GitHub 저장소 URL을 입력하세요.","skills.repo.remove":"저장소 제거","settings.appearance.language.label":"언어","settings.appearance.language.hint":"시스템을 선택하면 기본적으로 컴퓨터 언어를 따릅니다.","settings.appearance.language.system":"시스템","settings.appearance.language.english":"영어","settings.appearance.language.chinese":"중국어 간체","settings.appearance.language.traditional_chinese":"중국어 번체","settings.appearance.language.japanese":"일본어","settings.appearance.language.korean":"한국어","settings.appearance.currency.label":"통화","settings.appearance.currency.hint":"사용량 비용에 표시할 통화를 선택하세요.","settings.appearance.currency.opt.usd":"미국 달러 ($)","settings.appearance.currency.opt.eur":"유로 (€)","settings.appearance.currency.opt.gbp":"영국 파운드 (£)","settings.appearance.currency.opt.cny":"중국 위안 (¥)","settings.appearance.currency.opt.jpy":"일본 엔 (¥)","settings.appearance.currency.opt.hkd":"홍콩 달러 (HK$)","settings.appearance.currency.rate_source.default":"내장 기본 환율","settings.appearance.currency.rate_source.fetched":"출처: open.er-api.com","settings.appearance.currency.rate_updated":"{{when}} 업데이트됨","settings.appearance.currency.rate_never":"첫 새로고침 대기 중","qpd.card.title":"개발 가성비 및 PR 비용","qpd.card.badge":"BETA","qpd.card.subtitle":"머지된 PR 이력을 기반으로 각 모델의 평균 개발 비용을 산출합니다.","qpd.card.updating":"업데이트 중…","qpd.card.best_value":"최고 가성비","qpd.card.col_model":"모델","qpd.card.col_cost":"소비 비용","qpd.card.col_accepted":"머지된 PR","qpd.card.col_rate":"채택률","qpd.card.col_qpd":"PR당 비용","qpd.card.qpd_tooltip":"PR 1개를 머지하는 데 소요된 평균 토큰 비용 (총 비용 ÷ 머지된 PR 수)","qpd.card.totals":"머지됨: {{accepted}}/{{outcomes}} PR · 총 소비 {{cost}}","qpd.card.et":"유효 토큰: {{tokens}} (채택률 {{rate}})","qpd.card.et_tooltip":"유효 토큰 (Effective Tokens) — 최종적으로 채택 및 머지된 코드에 소비된 토큰의 비율","qpd.card.sparse_notice":"팁: 데이터 양이 적은 경우 가성비 수치가 왜곡될 수 있습니다. 조회 기간을 좁혀서 확인해 보세요."},u9={"usage.overview.antigravity_notice_title":"추정 토큰","usage.overview.cache_hit_rate_label":"캐시 적중률","usage.overview.cache_hit_rate_detail":"{{reused}} 재사용 / {{input}} 입력","usage.overview.antigravity_notice_body":"Antigravity 기록에는 실제 사용량 수치가 저장되지 않습니다. 여기 표시된 수치는 텍스트 길이(약 4자/토큰)로 추정한 값이며 Gemini의 프롬프트 캐시 할인은 반영되지 않으므로, 청구 금액이 아니라 상한 추정치로 참고하세요.","stats.period.today":"오늘","stats.period.week":"이번 주","stats.period.month":"이번 달","stats.period.all":"전체","stats.period.last_7d":"7일","stats.period.last_30d":"30일","stats.period.avg":"평균","stats.period.convs":"대화","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"모델 분석 접기","dashboard.core_index.expand_aria":"모델 분석 펼치기","dashboard.rolling.title":"최근 활동","dashboard.rolling.last_7d":"최근 7일","dashboard.rolling.last_30d":"최근 30일","dashboard.rolling.avg_active_day":"일 평균","dashboard.projects.title":"프로젝트 사용량","dashboard.projects.tokens_label":"토큰","dashboard.projects.stars_label":"STAR","dashboard.projects.limit_label":"표시","dashboard.projects.limit_aria":"저장소 표시 개수 선택","dashboard.projects.limit_top_3":"TOP 3","dashboard.projects.limit_top_6":"TOP 6","dashboard.projects.limit_top_10":"TOP 10","dashboard.projects.empty":"공개 저장소 없음","dashboard.widgets.title":"데스크톱 위젯","dashboard.widgets.hint":'데스크톱 우클릭 → 위젯 편집 → "TokenTracker" 검색',"dashboard.widgets.dismiss_aria":"위젯 소개 닫기","dashboard.cost_breakdown.title":"비용 내역","dashboard.cost_breakdown.total_label":"예상 총비용","dashboard.cost_breakdown.close":"닫기","trend.monitor.label":"사용 추세","trend.zoom.open_aria":"전체 화면으로 확대","trend.zoom.close_aria":"닫기","trend.zoom.badge":"트렌드 인사이트","trend.zoom.desc":"막대에 마우스를 올리면 토큰, 비용, 대화 수를 확인할 수 있습니다. 단위를 전환해 월에서 30분까지 살펴보세요.","trend.zoom.insight_badge":"인사이트","trend.zoom.tooltip.cost":"비용","trend.zoom.tooltip.conversations":"대화","trend.zoom.stats.tokens":"총 토큰","trend.zoom.stats.cost":"총 비용","trend.zoom.stats.conversations":"대화 수","trend.zoom.stats.peak":"최대 구간","trend.zoom.gran.aria":"단위","trend.zoom.gran.30min":"30분","trend.zoom.gran.day":"일","trend.zoom.gran.month":"월","trend.zoom.prev_day":"이전 날","trend.zoom.next_day":"다음 날","trend.zoom.loading":"불러오는 중…","trend.zoom.pick_day":"날짜 선택","trend.zoom.pick_range":"기간 선택","trend.zoom.insight.empty":"조용한 구간. 토큰이 단 하나도 흐르지 않았습니다.","trend.zoom.insight.calm":"가벼운 사용. 모델은 대부분 대기하다 필요할 때만 깨어났습니다.","trend.zoom.insight.steady":"{{active}}개 활성 구간에서 안정적인 리듬, 최대 {{peak}}. 요란하지 않게 일을 끝내는 페이스입니다.","trend.zoom.insight.heavy":"본격 가동: {{active}}개 구간이 뜨겁게 돌아가고 최대 {{peak}}. 흐름을 기다리지 않고 직접 만들어내는 사람의 출력입니다.","trend.zoom.insight.massive":"산업 규모. {{peak}} 피크와 식지 않는 처리량. 이 정도면 모델을 쓰는 게 아니라 공장을 돌리는 셈입니다.","heatmap.title":"활동 히트맵","heatmap.empty":"아직 활동 데이터가 없습니다.","heatmap.legend.less":"적음","heatmap.legend.more":"많음","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"토큰","heatmap.month.jan":"1월","heatmap.month.feb":"2월","heatmap.month.mar":"3월","heatmap.month.apr":"4월","heatmap.month.may":"5월","heatmap.month.jun":"6월","heatmap.month.jul":"7월","heatmap.month.aug":"8월","heatmap.month.sep":"9월","heatmap.month.oct":"10월","heatmap.month.nov":"11월","heatmap.month.dec":"12월","heatmap.day.sun":"일","heatmap.day.mon":"월","heatmap.day.tue":"화","heatmap.day.wed":"수","heatmap.day.thu":"목","heatmap.day.fri":"금","heatmap.day.sat":"토","dashboard.session_expired.copy_label":"npx --yes tokentracker-cli init 실행","dashboard.session_expired.copied":"복사됨","dashboard.install.prompt":"Node.js 18+ 설치 후 실행:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"설치 명령 복사","dashboard.install.copy_base":"init 명령 복사","dashboard.install.copied":"클립보드에 복사됨","dashboard.install.link_code.loading":"전용 코드 생성 중...","dashboard.install.link_code.failed":"전용 코드를 사용할 수 없음","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"일별 내역","dashboard.daily.empty":"아직 데이터가 없습니다. AI CLI를 사용한 다음 {{cmd}}을(를) 실행하세요.","dashboard.identity.title":"내 프로필","dashboard.identity.subtitle":"코딩 여정을 기록하세요","dashboard.identity.fallback":"익명","dashboard.overview.layout.drag_handle":"드래그하여 순서 변경","dashboard.overview.layout.reset":"레이아웃 재설정","dashboard.screenshot.twitter_text":"기록된 {{total_tokens}} 토큰.\\n{{model_name}}이(가) {{model_percent}}%로 1위.\\n\\n검증되지 않은 나의 AI 사용량 →","heatmap.3d.hover_tip":"클릭하여 3D 전체 화면 회전 분석 모드로 진입","heatmap.3d.modal.title":"토큰 3D 투시","heatmap.3d.modal.desc":"마우스 왼쪽 버튼으로 드래그하여 회전하세요. 마우스를 올리면 일별 활동과 다차원 지표를 확인할 수 있습니다.","heatmap.3d.modal.stats.total_tokens":"연간 총 토큰","heatmap.3d.modal.stats.precision_total_tokens":"정확한 연간 소비량","heatmap.3d.modal.stats.estimated_cost":"연간 예상 비용","heatmap.3d.modal.stats.active_rate_days":"활동 비율 / 일수","heatmap.3d.modal.stats.max_streak":"최장 연속 활동","heatmap.3d.modal.stats.days_suffix":"일","heatmap.3d.modal.stats.peak_day":"단일 최고 폭발","heatmap.3d.modal.stats.precision_peak_value":"정확한 일일 최고치","heatmap.3d.modal.stats.no_data":"데이터 없음","heatmap.3d.modal.legend.title":"활동 단계","heatmap.3d.modal.palette.emerald":"에메랄드 시티","heatmap.3d.modal.palette.ocean":"심해의 심연","heatmap.3d.modal.palette.neon":"사이버 네온","heatmap.3d.modal.palette.amber":"타오르는 호박빛","heatmap.3d.modal.control.play":"느린 자동 회전 시작","heatmap.3d.modal.control.pause":"자동 회전 일시정지","heatmap.3d.modal.control.reset":"3D 시점 초기화","heatmap.3d.modal.footer.tip":"핀치 확대 / 스크롤 확대 / 드래그로 3D 차트 회전","heatmap.3d.modal.ai.title.default":"꾸준한 창작자","heatmap.3d.modal.ai.eval.default":"기술의 강물 속에서 꾸준히 나아가세요. 매일의 코딩이 늘 웅장하지는 않더라도, 작은 활동 하나하나가 당신의 사고와 탐구를 기록합니다. 불꽃이 모여 결국 당신만의 디지털 바다로 수렴합니다.","heatmap.3d.modal.ai.title.peak":"최고 기여자","heatmap.3d.modal.ai.eval.peak":"올 한 해, 당신의 토큰 산출량은 극도로 높은 엔지니어링 밀도를 보여줍니다. 이 정도 규모의 개발은 중대형 시스템 기반의 리팩터링에 깊이 참여한 것과 맞먹으며, 키 입력 하나하나가 복잡한 로직을 결정론적 코드로 수렴시킵니다. 순수한 엔지니어링 열정의 증거입니다.","heatmap.3d.modal.ai.title.heavy":"고생산 개발자","heatmap.3d.modal.ai.eval.heavy":"탁월한 지속적 산출. 누적된 토큰이 수백만 개에 달하며, 이는 수십 편의 기술 중편 소설 분량에 해당합니다. 고도로 밀도 높은 코딩 리듬은 디지털 자산을 구축하는 당신의 뛰어난 실행력을 보여줍니다.","heatmap.3d.modal.ai.title.core":"핵심 생산성 전문가","heatmap.3d.modal.ai.eval.core":"매우 견고한 장기적 헌신. 지난 한 해 동안 당신은 고강도의 개발 리듬을 꾸준히 유지해 왔습니다. 탄탄한 코드 분량과 토큰 산출로 묵묵히 핵심 아키텍처를 쌓아 올린, 진정한 엔지니어링의 기둥입니다.","heatmap.3d.modal.ai.title.steady":"안정적인 개발자","heatmap.3d.modal.ai.eval.steady":"착실하고 굳건한 기술 축적. 토큰이 늘어나는 한 걸음 한 걸음이 미래의 기반을 다지는 벽돌입니다. 이 느리지만 꾸준한 리듬이야말로 뛰어난 개발자가 엔지니어링의 대가로 나아가는 길입니다.","heatmap.3d.voxel.joke.1":"🔥 완전 미쳤어요! {{value}} tokens 산출! 대형 언어 모델을 훈련하는 건가요, 아니면 직접 컴파일러를 만드는 건가요?","heatmap.3d.voxel.joke.2":"🚀 서사시급 산출! 총 {{value}} tokens. 오늘의 산출량이면 지구를 한 바퀴 돌 수 있어요. AI마저 당신에게 놀랐습니다!","heatmap.3d.voxel.joke.3":"⚡ 폭발의 날! {{value}} tokens. 코드가 샘솟아 키보드에서 연기가 나기 시작합니다!","heatmap.3d.voxel.level3":"⚡ 생산성 대폭발 ({{value}} tokens)! 높은 효율과 집중력, 이 최고의 상태를 계속 유지하세요!","heatmap.3d.voxel.level2":"🌱 점점 무르익는 중 ({{value}} tokens)! 꾸준한 산출, 키 입력 하나하나가 아키텍처에 기여하고 있습니다.","heatmap.3d.voxel.level1":"🍃 티끌 모아 태산 ({{value}} tokens). 작은 커밋도 미래에 대한 투자입니다. 복리의 힘을 받아들이세요!","heatmap.3d.voxel.level0":"💤 재충전 중. 코딩하지 않는 날에도 영감은 조용히 자라납니다.","ipcheck.page.title":"Claude IP 확인","ipcheck.page.subtitle":"Claude에 접속하는 출구 IP와 함께 평판, 지리 정보, 로그인에 영향을 주거나 사용 제한을 유발할 수 있는 위험 신호를 점검하세요.","ipcheck.mask.toggle":"IP 숨기기","ipcheck.ipv6.warn":"IPv6가 감지되었습니다. IPv6로 Claude Code에 접속하는 것은 권장하지 않으며, 일부 검사 결과가 불완전할 수 있습니다.","ipcheck.ip.cn":"중국 출구 IPv4","ipcheck.ip.cloudflare":"Cloudflare 출구","ipcheck.ip.claude":"Claude 출구","ipcheck.ip.failed":"가져올 수 없음","ipcheck.ip.loading":"불러오는 중...","ipcheck.trust.title":"신뢰 점수","ipcheck.trust.subtitle":"Claude 위험 관리 관점에서의 IP 청결도","ipcheck.trust.no_data":"데이터 없음","ipcheck.trust.no_ip":"Claude 출구 IP가 감지되지 않아 점수를 매길 수 없습니다","ipcheck.trust.no_score":"이 IP에 대한 점수 데이터가 없습니다","ipcheck.trust.gauge.low":"0 고위험","ipcheck.trust.gauge.high":"100 신뢰됨","ipcheck.trust.label.pristine":"매우 깨끗함","ipcheck.trust.label.clean":"깨끗함","ipcheck.trust.label.good":"양호","ipcheck.trust.label.neutral":"중립","ipcheck.trust.label.suspicious":"의심스러움","ipcheck.trust.label.unreachable":"접근 불가","ipcheck.trust.text.excellent":"평판이 매우 우수함","ipcheck.trust.text.great":"평판이 우수함","ipcheck.trust.text.minor":"경미한 위험","ipcheck.trust.text.moderate":"보통 수준의 위험","ipcheck.trust.text.severe":"심각한 위험","ipcheck.trust.text.restricted":"제한 지역 — Claude가 엄격한 위험 관리를 적용합니다","ipcheck.trust.region_warn.title":"Claude 출구 IP가 {{region}}에 있습니다","ipcheck.trust.region_warn.body":"로그인을 피하세요. 계정 플래그 처리를 유발할 가능성이 높습니다.","ipcheck.trust.region_support":"Claude 지원 지역","ipcheck.trust.region.accessible":"접근 가능","ipcheck.common.unknown":"알 수 없음","ipcheck.props.title":"IP 속성","ipcheck.props.region":"지역","ipcheck.props.city":"도시","ipcheck.props.type":"유형","ipcheck.props.asn":"ASN","ipcheck.props.org":"ISP","ipcheck.props.residential":"가정용","ipcheck.props.datacenter":"데이터센터","ipcheck.security.title":"보안 검사","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"프록시","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"크롤러","ipcheck.security.abuser":"악용 이력","ipcheck.security.proxy_flag":"프록시","ipcheck.security.crawler_yes":"예","ipcheck.security.crawler_no":"아니요","ipcheck.security.abuser_yes":"기록 있음","ipcheck.security.abuser_no":"기록 없음","ipcheck.security.clean":"감지되지 않음","ipcheck.avail.title":"Claude 가용성","ipcheck.avail.tooltip":"Claude 서버는 미국에 있으므로 아시아에서 100ms를 초과하는 지연은 정상입니다.","ipcheck.avail.refresh":"새로고침","ipcheck.avail.svc_row":"서비스 상태","ipcheck.avail.latency.normal":"정상","ipcheck.avail.latency.good":"양호","ipcheck.avail.latency.slow":"느림","ipcheck.avail.latency.unreachable":"접근 불가","ipcheck.avail.svc.none":"모든 시스템 정상","ipcheck.avail.svc.minor":"경미한 장애","ipcheck.avail.svc.major":"주요 장애","ipcheck.avail.svc.critical":"심각한 장애","ipcheck.avail.svc.maintenance":"점검 중","ipcheck.avail.svc.other":"서비스 이상","ipcheck.dns.title":"DNS 누출","ipcheck.dns.status":"상태","ipcheck.dns.outlet":"DNS 출구","ipcheck.dns.outlet_ip":"DNS 출구 IP","ipcheck.dns.isp":"제공업체","ipcheck.dns.leaked":"누출 가능성 있음","ipcheck.dns.no_leak":"누출이 감지되지 않음","ipcheck.dns.encrypted":"DNS 암호화 또는 비노출","ipcheck.dns.cn_tag":"중국 DNS","ipcheck.udp.title":"WebRTC UDP 누출","ipcheck.udp.status":"상태","ipcheck.udp.outlet":"UDP 출구","ipcheck.udp.outlet_ip":"UDP 출구 IP","ipcheck.udp.origin":"출처","ipcheck.udp.disabled":"WebRTC 비활성화됨","ipcheck.udp.no_leak":"누출이 감지되지 않음","ipcheck.udp.leaked":"누출 가능성 있음","ipcheck.udp.anomaly":"이상","ipcheck.device.title":"기기 정보","ipcheck.device.tz":"시간대","ipcheck.device.lang":"언어","ipcheck.device.os":"OS / 브라우저","ipcheck.device.touch":"터치","ipcheck.device.net":"네트워크 유형","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL 렌더러","ipcheck.device.canvas_fp":"Canvas 지문","ipcheck.device.webgl_fp":"WebGL 지문","ipcheck.device.match":"일치","ipcheck.device.mismatch":"불일치","ipcheck.device.local":"로컬","ipcheck.device.estimate_suffix":"(추정)","ipcheck.device.diff_equal":"약간의 오차","ipcheck.device.diff_ahead":"Claude가 {{h}}시간 빠름","ipcheck.device.diff_behind":"Claude가 {{h}}시간 느림","ipcheck.device.lang_expected":"Claude 지역 일반적","ipcheck.device.touch_yes":"예","ipcheck.device.touch_no":"아니요","ipcheck.device.dnt_on":"켜짐","ipcheck.device.dnt_off":"꺼짐","ipcheck.device.dnt_unset":"설정 안 됨","ipcheck.device.net_unsupported":"감지되지 않음","ipcheck.device.unsupported":"지원되지 않음","ipcheck.history.title":"Claude 출구 IP 기록","ipcheck.history.subtitle":"이 브라우저에만 저장되며 최대 6개까지 보관됩니다","ipcheck.history.clear":"지우기","ipcheck.history.empty":"아직 기록이 없습니다","ipcheck.history.current":"현재","ipcheck.region.CN":"중국 본토","ipcheck.region.HK":"홍콩","ipcheck.region.MO":"마카오","ipcheck.region.RU":"러시아","ipcheck.region.KP":"북한","ipcheck.region.IR":"이란","ipcheck.region.SY":"시리아","ipcheck.region.CU":"쿠바","ipcheck.region.BY":"벨라루스","ipcheck.region.VE":"베네수엘라","leaderboard.profile_modal.close":"닫기","leaderboard.profile_modal.loading":"프로필 불러오는 중…","leaderboard.profile_modal.error":"프로필을 불러오지 못했습니다.","leaderboard.profile_modal.empty":"이 프로필은 공개되지 않았습니다.","leaderboard.profile_modal.row_aria":"{{name}}의 프로필 열기","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"순위","leaderboard.profile_modal.hero.total_tokens":"총 토큰","leaderboard.profile_modal.hero.total_cost":"총비용","leaderboard.profile_modal.hero.github":"GitHub 프로필","leaderboard.profile_modal.stat.total_cost":"총비용","leaderboard.profile_modal.stat.total_tokens":"총 토큰","leaderboard.profile_modal.stat.active_days":"활동 일수","leaderboard.profile_modal.stat.avg_per_day":"일 평균","leaderboard.profile_modal.streak.current":"현재 연속","leaderboard.profile_modal.streak.longest":"최장 연속","leaderboard.profile_modal.streak.days":"{{count}}일","leaderboard.profile_modal.best_day.title":"최고의 날","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"{{count}}개 모델 사용","leaderboard.profile_modal.models.favorite":"최애 모델","leaderboard.profile_modal.models.none":"추적된 모델 없음","leaderboard.profile_modal.heatmap.title":"활동 (최근 365일)","leaderboard.profile_modal.providers.title":"제공자별","leaderboard.profile_modal.providers.none":"이 기간에는 사용 데이터가 없습니다.","leaderboard.profile_modal.view_full":"전체 프로필 보기","local_only.title":"앱에서 사용 가능","local_only.body":"이 페이지는 사용자의 컴퓨터에 있는 데이터를 읽으므로 Mac 앱 또는 CLI 대시보드에서만 작동합니다.","local_only.open_app":"Mac 앱에서 열기","local_only.download":"Mac 앱 받기","dashboard.auth_gate.title":"Token Tracker 로그인","dashboard.auth_gate.subtitle":"로그인하여 클라우드에서 API 사용량, 비용 및 토큰 소비 트렌드를 동기화하고 확인하세요.","dashboard.auth_gate.button":"로그인","dashboard.expired_gate.title":"세션 만료됨","dashboard.expired_gate.subtitle":"세션이 만료되었습니다. 클라우드 대시보드를 계속 보려면 다시 로그인하세요.","dashboard.expired_gate.button":"다시 로그인","shared.app_name":"Token Tracker","dashboard.auth_gate.hero_title":"AI 에이전트의 모든 토큰 소비","dashboard.auth_gate.hero_subtitle":"명확하고 투명한 멀티 엔드포인트 제어","dashboard.auth_gate.desc":"Claude Code, Cursor, Gemini CLI 등 모든 주류 에이전트의 토큰 쿼터, 동시 실행 비용 및 대기 시간 통계를 퍼블릭 클라우드에서 안전하게 동기화하여 전례 없는 종합 시각화 분석을 제공합니다.","dashboard.auth_gate.feature.sync.title":"실시간 클라우드 동기화","dashboard.auth_gate.feature.sync.desc":"각 엔드포인트의 실행 비용을 자동으로 수집하고 프라이빗 클라우드에 단 몇 초 만에 안전하게 아카이브합니다.","dashboard.auth_gate.feature.anal.title":"다차원 대시보드 분석","dashboard.auth_gate.feature.anal.desc":"모델 분류, 시간 프레임별로 토큰 분포를 통계하여 비용 급증 및 소비 구성을 언제든지 추적할 수 있습니다.","dashboard.auth_gate.feature.guard.title":"로컬 우선의 자율성","dashboard.auth_gate.feature.guard.desc":"Localhost 모드에서는 모든 로그인 인증을 자동으로 건너뛰어 로컬 오프라인 디버깅 경험을 완벽하게 보호합니다.","dashboard.expired_gate.hero_title":"클라우드 세션 만료됨","dashboard.expired_gate.desc":"개인 정보 및 클라우드 드라이브 보안을 위해 활성 세션은 일정 기간 후 자동으로 종료됩니다. 대시보드를 즉시 복원하려면 다시 인증해 주세요.","dashboard.expired_gate.feature.sec.title":"안전한 보호","dashboard.expired_gate.feature.sec.desc":"암호화된 자격 증명은 만료 시 자동으로 파기되어 토큰 자산의 개인 정보를 철저히 보호합니다.","dashboard.expired_gate.feature.restore.title":"원활한 데이터 복원","dashboard.expired_gate.feature.restore.desc":"다시 로그인하면 터미널 훅을 재구성할 필요 없이 멀티 디바이스 실시간 대시보드가 자동으로 복원됩니다.","dashboard.expired_gate.feature.cloud.title":"교차 장치 동기화","dashboard.expired_gate.feature.cloud.desc":"동기화된 대시보드를 통해 어디서나 토큰 로그를 간편하게 확인하고 지출을 관리할 수 있습니다.","dashboard.device_filter.all":"모든 기기","dashboard.device_filter.aria":"기기별 필터","dashboard.device_card.title":"기기별","dashboard.device_card.unnamed":"이름 없는 기기","nav.pet":"데스크톱 펫","pet.page.eyebrow":"데스크톱 동반자","pet.page.title":"펫","pet.page.subtitle":"동반자를 선택하고 실제 AI 활동에 어떻게 반응하는지 미리 보세요.","pet.preview.states":"펫 상태 미리보기","pet.controls.title":"데스크톱 제어","pet.controls.show":"데스크톱 펫 표시","pet.controls.show_hint":"동반자를 다른 창 위에 유지합니다.","pet.controls.size":"펫 크기","pet.controls.native_only":"실제 펫을 제어하려면 TokenTracker 데스크톱 앱에서 이 페이지를 여세요.","pet.characters.title":"동반자 선택","pet.characters.subtitle":"모든 캐릭터는 전체 상태 시스템과 고유한 색상 및 실루엣을 갖습니다.","pet.character.clawd":"Clawd","pet.character.clawd_desc":"집게발 실루엣의 오리지널 토큰 키퍼.","pet.character.sprout":"Sprout","pet.character.sprout_desc":"잎사귀 귀와 작은 뿌리발을 가진 새싹 정령.","pet.character.byte":"Byte","pet.character.byte_desc":"표정 화면과 호버 추진기를 가진 터미널 로봇.","pet.character.ember":"Ember","pet.character.ember_desc":"불꽃 꼬리로 생산성 연속 기록을 축하하는 여우 정령.","pet.state.calm":"차분함","pet.state.focus":"집중","pet.state.multitask":"멀티 모델","pet.state.streak":"연속 활동","pet.state.celebrate":"새 사용량","pet.state.rest":"휴식","pet.size.small":"작게","pet.size.medium":"보통","pet.size.large":"크게","pet.import.title":"Codex 펫 가져오기","pet.import.subtitle":"codex-pets.net 링크를 붙여넣거나 .zip을 선택하세요.","pet.import.add":"추가","pet.import.zip":"패키지 선택","pet.import.remove":"가져온 펫 삭제","pet.import.success":"펫을 가져와 선택했습니다.","pet.import.failed":"이 펫을 가져올 수 없습니다.","pet.import.busy":"가져오는 중…","pet.format.v2":"V2","pet.import.removed":"가져온 펫을 삭제했습니다.","pet.import.url_label":"Codex Pets URL 또는 펫 ID"},d9={"landing.handle.default":"VIBE_USER","landing.handle.special":"VOLT","landing.screenshot.alt":"TokenTracker 대시보드 스크린샷","landing.nav.login":"로그인","landing.nav.signup":"회원가입","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"명령 복사","landing.install.action.copied":"복사됨","landing.meta.title":"Token Tracker — AI Agent CLI를 위한 토큰 사용량 추적기","landing.meta.description":"Claude Code, Cursor, Codex 등의 토큰 사용량을 자동으로 모니터링하세요. 로컬 우선, 개인정보 보호 중심, 수동 설정 불필요.","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/dashboard-dark.png","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker 공유","share.meta.description":"모델, 프로젝트, 기간별 토큰 사용량 인사이트가 담긴 Token Tracker 대시보드 스냅샷을 공유하세요.","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/dashboard-dark.png","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"'{{handle}}' 입력해 보기","landing.rank.expectation":"예상 순위: {{rank}}","landing.rank.singularity":"정점","landing.rank.unranked":"순위 없음","landing.cta.primary":"대시보드 보기","landing.cta.secondary":"GitHub","landing.v2.hero.title_line1":"당신의 모든","landing.v2.hero.title_line2":"AI 토큰 추적","landing.v2.install.mac_cta":"macOS용 다운로드","landing.v2.install.win_cta":"Windows용 다운로드","landing.v2.install.desktop_cta":"데스크톱 앱 다운로드","landing.v2.install.os_macos":"macOS","landing.v2.install.os_windows":"Windows","landing.v2.install.availability":"macOS 및 Windows 지원","landing.v2.models.title":"지원하는 AI CLI 도구","landing.v2.compare.kicker":"매끄러운 추적","landing.v2.compare.title":"AI 사용량을 더 이상 추측하지 마세요.","landing.v2.compare.subtitle":"AI CLI 도구는 원본 사용량 데이터를 흩어진 로컬 파일에 숨겨둡니다. TokenTracker는 이를 로컬 퍼스트 대시보드로 실시간 정리합니다.","landing.v2.distill.body":"100% 로컬 처리. 프롬프트나 코드는 절대 수집하지 않습니다.","landing.v2.compare.with.title":"TOKEN TRACKER 사용 시","landing.v2.compare.with.p1":"통합된 사용량 대시보드","landing.v2.compare.with.p2":"실시간 토큰 지표","landing.v2.compare.with.p3":"100% 로컬, 개인정보 보장","landing.v2.compare.with.p4":"멀티 클라이언트 터미널 감사 추적","landing.v2.compare.without.title":"사용하지 않을 때","landing.v2.compare.without.p1":"흩어진 JSON 로그 파일","landing.v2.compare.without.p2":"토큰 소비량에 대한 깜깜이","landing.v2.compare.without.p3":"예상치 못한 API 청구서","landing.v2.compare.without.p4":"과거 감사 로그 부재","landing.v2.leaderboard.kicker":"글로벌 TOKEN 리더보드","landing.v2.leaderboard.title":"AI Token 효율성","landing.v2.leaderboard.subtitle":"로컬 AI Token 사용량을 익명으로 동기화하여 글로벌 효율성 리더보드에 참여할 수 있습니다. 전 세계 개발자들과 함께 모델 비용 효율성 및 호출 빈도를 벤치마킹하세요.","landing.v2.leaderboard.view_more":"전체 리더보드 보기","landing.v2.footer.line":"Token Tracker — 개발자가 만든, 개발자를 위한.","landing.v2.nav.status":"상태","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"CODEX","landing.v2.models.agent.claude_code":"CLAUDE CODE","landing.v2.models.agent.cursor":"CURSOR","landing.v2.models.agent.gemini":"GEMINI","landing.v2.models.agent.opencode":"OPENCODE","landing.v2.models.agent.openclaw":"OPENCLAW","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"Claude Code, Cursor, Codex 등의 토큰 사용량을 자동으로 모니터링하세요. 로컬 우선, 개인정보 보호 중심, 수동 설정 불필요.","leaderboard.profile.nav.back":"리더보드","leaderboard.profile.nav.download":"다운로드","leaderboard.title":"리더보드","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"전체 기간","leaderboard.generated_at":"{{ts}} 업데이트됨","leaderboard.period.week":"주","leaderboard.period.month":"월","leaderboard.period.total":"전체","leaderboard.me_label":"나","leaderboard.anon_label":"익명","leaderboard.error.unknown":"알 수 없는 오류","leaderboard.loading":"불러오는 중…","leaderboard.empty":"데이터 없음","leaderboard.column.rank":"순위","leaderboard.column.user":"사용자","leaderboard.column.total":"전체","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"GitHub Copilot","leaderboard.column.kimi":"Kimi Code","leaderboard.column.supplemental":"기타","leaderboard.column.est_cost":"예상 비용","leaderboard.signin_prompt":"로그인하여 리더보드에 참여하세요","leaderboard.signin_button":"로그인","leaderboard.sync_prompt":"클라우드 동기화를 켜면 순위에 표시됩니다","leaderboard.sync_button.idle":"켜고 동기화","leaderboard.sync_button.busy":"동기화 중...","leaderboard.pagination.page_size_label":"페이지당 행 수","leaderboard.pagination.prev":"이전","leaderboard.pagination.next":"다음","leaderboard.pagination.ellipsis":"…","leaderboard.pagination.page_unknown":"{{page}} 페이지","share.modal.title":"내 통계 공유","share.modal.subtitle":"포스터 스타일 카드를 생성해 어디든 공유하세요.","share.modal.close":"닫기","share.modal.action.x":"X에 공유","share.modal.action.download":"다운로드","share.modal.action.copy":"이미지 복사","share.modal.hint.x":"트윗에 이미지 붙여넣기","share.modal.hint.copy":"클립보드로","share.modal.name_label":"표시 이름","share.modal.name_placeholder":"이름을 입력하세요","share.modal.style_label":"스타일","share.modal.footer":"데이터는 항상 로컬에 보관됩니다 — 이미지는 브라우저에서 생성되며 절대 업로드되지 않습니다.","share.button.label":"공유","share.button.aria":"공유 카드 열기","share.toast.copied":"이미지가 클립보드에 복사되었습니다","share.toast.downloaded":"이미지가 저장되었습니다","share.toast.failed":"이미지를 생성하지 못했습니다","share.toast.working":"생성 중…","share.variant.neon":"네온","share.variant.broadsheet":"특집","share.date.month_year":"{{year}}년 {{month}}","share.issue.all_time":"전체 기간","share.month_short.jan":"1월","share.month_short.feb":"2월","share.month_short.mar":"3월","share.month_short.apr":"4월","share.month_short.may":"5월","share.month_short.jun":"6월","share.month_short.jul":"7월","share.month_short.aug":"8월","share.month_short.sep":"9월","share.month_short.oct":"10월","share.month_short.nov":"11월","share.month_short.dec":"12월","share.hook.top_loyal":"{{percent}}%를 {{name}}에 집중.","share.hook.days_record":"{{days}}일 기록.","share.hook.top_led":"{{name}} 선두 ({{percent}}%).","share.hook.multi_models":"{{count}}개 모델, {{days}}일에 걸쳐.","share.hook.days_with_model":"{{name}}와(과) 함께한 {{days}}일.","share.hook.new_chapter":"새로운 장의 시작.","share.card.broadsheet.issue":"호","share.card.broadsheet.by":"작성자","share.card.broadsheet.tracked_since":"추적 시작","share.card.broadsheet.total_tokens":"총 토큰","share.card.broadsheet.estimated_spend":"예상 지출","share.card.broadsheet.billable_days":"활동 {{days}}일","share.card.broadsheet.heatmap_title":"올해의 인쇄본","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}}일 기록","share.card.broadsheet.roster_title":"모델 명단","share.card.broadsheet.roster_subtitle":"정기적으로 사용하는 모델","share.card.broadsheet.empty":"한산한 한 주 — 윤전기가 조용했습니다.","share.card.broadsheet.global_rank":"전체 순위","share.card.broadsheet.active_days":"활동","share.card.broadsheet.days_count":"{{days}}일","share.card.broadsheet.track_yours":"내 것도 추적하기","share.card.annual.report_title":"토큰 리포트","share.card.annual.less":"적음","share.card.annual.more":"많음","share.card.annual.heatmap_title":"토큰 사용량 히트맵","share.card.annual.total_tokens":"총 토큰","share.card.annual.estimated_cost":"예상 비용","share.card.annual.longest_streak":"최장 연속","share.card.annual.days_count":"{{days}}일","share.card.annual.top_model":"인기 모델"},h9={"header.auth.sign_in_aria":"Anmelden","login.back_home":"Zurück zur Startseite","login.cloud_only":"Kein Cloud-Login konfiguriert. Nutze das lokale Dashboard unter localhost.","login.title":"Anmelden","login.subtitle":"Wähle E-Mail oder ein verbundenes Konto.","login.dismiss":"Schließen","login.verify_email_success":"E-Mail-Adresse bestätigt. Du kannst dich jetzt anmelden.","login.verify_email_pending":"Bitte schließe die E-Mail-Bestätigung vor der Anmeldung ab.","login.oauth.continue":"Weiter mit {{provider}}","login.divider":"oder","login.tab.sign_in":"Anmelden","login.tab.sign_up":"Registrieren","login.field.name":"Anzeigename","login.field.name_placeholder":"Optional","login.field.email":"E-Mail-Adresse","login.field.password":"Passwort","login.password_hint":"Mindestens {{min}} Zeichen.","login.submit.sign_in":"Per E-Mail anmelden","login.submit.sign_up":"Konto erstellen","auth.callback.processing":"Verarbeitung läuft…","auth.callback.success":"Erfolgreich angemeldet","auth.callback.redirecting":"Weiterleitung zu TokenTracker…","auth.callback.failed":"Anmeldung fehlgeschlagen. Bitte versuche es erneut.","auth.callback.close":"Diese Seite schließen","login_modal.subtitle":"Anmelden, um am Leaderboard teilzunehmen","login_modal.continue_email":"Per E-Mail fortfahren","login_modal.divider_email":"E-Mail","shared.placeholder.short":"--","shared.unit.percent":"%","shared.unit.thousand_abbrev":"K","shared.unit.million_abbrev":"Mio.","shared.unit.billion_abbrev":"Mrd.","shared.data_source":"Datenquelle: {{source}}","shared.error.prefix":"Fehler: {{error}}","shared.status.unsynced":"—","shared.time.now":"Gerade eben","error.boundary.title":"Ein Fehler ist aufgetreten","error.boundary.subtitle":"Diese Ansicht konnte nicht gerendert werden","error.boundary.hint":"Öffne die Konsole und lade die Seite neu","error.boundary.no_details":"Keine Fehlerdetails verfügbar","error.boundary.action.reload":"Neu laden","identity_card.rank_label":"Rang","identity_card.streak_label":"Aktive Tage","identity_card.rank_placeholder":"—","identity_card.streak_value":"{{days}} Tage","usage.summary.total":"Token insgesamt","usage.period.day":"Tag","usage.period.week":"Woche","usage.period.month":"Monat","usage.period.total":"Gesamt","usage.period.custom":"Benutzerdefiniert","usage.metric.total":"Gesamt","usage.metric.input":"Eingabe","usage.metric.output":"Ausgabe","usage.metric.cached_input":"Zwischengespeicherte Eingabe","usage.metric.reasoning_output":"Reasoning-Ausgabe","usage.button.refresh":"Aktualisieren","usage.overview.tablist_aria":"Zeitraum","usage.overview.cost_breakdown_aria":"Kostenaufschlüsselung anzeigen","usage.overview.distribution_aria":"Verteilung nach Quelle: {{items}}","usage.overview.distribution_item":"{{label}} {{percent}}%","usage.overview.provider_card_aria":"{{provider}}: {{percent}}%, {{tokens}} Token, {{cost}}. Klicken für {{action}}-Details","usage.overview.expand":"Ausklappen","usage.overview.collapse":"Einklappen","usage.overview.model_count":"{{count}} Modelle","usage.overview.model_details_aria":"Modelldetails für {{provider}}","widgets.page.title":"Widgets","widgets.cta.open_gallery":"Widget-Galerie öffnen","widgets.cta.download":"Mac App herunterladen","widgets.cta.macos_only":"Nur macOS","widgets.menubar.section.title":"Menüleiste","widgets.gallery.section.title":"Desktop-Widgets","widgets.summary.name":"Nutzungsübersicht","widgets.summary.description":"Nutzung von heute und den letzten 7 Tagen mit kompaktem Trend.","widgets.heatmap.name":"Heatmap","widgets.heatmap.description":"Aktive und inaktive Tage auf einen Blick, ähnlich wie bei GitHub.","widgets.topModels.name":"Top-Modelle","widgets.topModels.description":"Häufig genutzte Modelle, sortiert nach Token-Anteil.","widgets.limits.name":"Nutzungslimits","widgets.limits.description":"Echtzeit-Rate-Limit-Status für Claude, Codex, Cursor, Gemini u. a.","daily.sort.date.label":"Datum","daily.sort.date.title":"Nach Datum sortieren","daily.sort.total.label":"Gesamt","daily.sort.total.title":"Nach Gesamtwert sortieren","daily.sort.input.label":"Eingabe","daily.sort.input.title":"Nach Eingabe sortieren","daily.sort.output.label":"Ausgabe","daily.sort.output.title":"Nach Ausgabe sortieren","daily.sort.cached.label":"Cache","daily.sort.cached.title":"Nach Cache sortieren","daily.sort.reasoning.label":"Reasoning","daily.sort.reasoning.title":"Nach Reasoning sortieren","daily.sort.conversations.label":"Gespräche","daily.sort.conversations.title":"Nach Gesprächen sortieren","details.pagination.prev":"Vorherige Seite","details.pagination.next":"Nächste Seite","limits.copilot.otelHint.title":"Copilot-Token-Nutzung verfolgen","limits.copilot.otelHint.body":"Limit-Informationen werden über das GitHub OAuth-Token gelesen. Um die Token-Nutzung pro Token aufzuzeichnen, aktiviere den OpenTelemetry-Export von Copilot und füge Folgendes zu deiner Shell-Konfigurationsdatei (~/.zshrc oder ~/.bashrc) hinzu:","limits.copilot.otelHint.copy":"Kopieren","limits.copilot.otelHint.copied":"Kopiert","limits.panel.title":"Nutzungslimits","limits.panel.mode_separator":" · ","limits.label.cursor_plan":"Plan","limits.label.cursor_auto":"Auto","limits.label.cursor_api":"API","limits.label.kiro_month":"Monatlich","limits.label.kiro_bonus":"Bonus","limits.label.kimi_weekly":"Woche","limits.label.kimi_5h":"5h","limits.label.kimi_total":"Gesamt","limits.label.kimi_parallel":"Parallel: {{count}}","limits.label.copilot_premium":"Premium","limits.label.copilot_chat":"Chat","limits.status.not_connected":"Nicht verbunden","limits.status.no_data":"Keine Echtzeit-Limitdaten zurückgegeben","limits.status.all_hidden":"Alle Limit-Anbieter sind ausgeblendet. Öffne die Anzeigeeinstellungen, um sie wieder einzublenden.","nav.usage":"Nutzung","nav.limits":"Limits","nav.widgets":"Widgets","nav.skills":"Skills","nav.leaderboard":"Leaderboard","nav.collapse":"Seitenleiste einklappen","nav.expand":"Seitenleiste ausklappen","nav.menu":"Navigationsmenü öffnen","nav.close_menu":"Navigationsmenü schließen","nav.aside_label":"Hauptnavigation","nav.nav_label":"Navigation","limits.page.subtitle":"Rate-Limits und Kontingentnutzung deiner KI-Tools.","limits.settings.toggle_visible":"Sichtbarkeit umschalten","limits.settings.display_mode_label":"Anzeige","limits.settings.display_mode_used":"Verbraucht","limits.settings.display_mode_remaining":"Verbleibend","limits.page.openSettings":"Anzeigeeinstellungen","nav.group.general":"Allgemein","nav.group.tools":"Tools","nav.group.account":"Konto","nav.settings":"Einstellungen","header.auth.open_settings":"Einstellungen öffnen","settings.page.title":"Einstellungen","settings.page.subtitle":"Verwalte dein Konto, Erscheinungsbild und Anzeigeeinstellungen.","settings.section.appearance":"Erscheinungsbild","settings.section.account":"Konto","settings.section.limits":"Limit-Anzeige","settings.appearance.theme.label":"Design","settings.appearance.theme.hint":"Wähle, wie das TokenTracker-Dashboard dargestellt werden soll.","settings.appearance.theme.light":"Hell","settings.appearance.theme.dark":"Dunkel","settings.appearance.theme.system":"System","settings.appearance.language.label":"Sprache","settings.appearance.language.hint":"Bei „System“ wird standardmäßig die Sprache des Terminals verwendet.","settings.appearance.language.system":"System","settings.appearance.language.english":"Englisch","settings.appearance.language.german":"Deutsch","settings.appearance.language.chinese":"Chinesisch (Vereinfacht)","settings.appearance.language.traditional_chinese":"Chinesisch (Traditionell)","settings.appearance.language.japanese":"Japanisch","settings.appearance.language.korean":"Koreanisch","settings.appearance.currency.label":"Währung","settings.appearance.currency.hint":"Wähle die Währung für die Anzeige der Nutzungskosten.","settings.appearance.currency.opt.usd":"US-Dollar ($)","settings.appearance.currency.opt.eur":"Euro (€)","settings.appearance.currency.opt.gbp":"Britisches Pfund (£)","settings.appearance.currency.opt.cny":"Chinesischer Yuan (¥)","settings.appearance.currency.opt.jpy":"Japanischer Yen (¥)","settings.appearance.currency.opt.hkd":"Hongkong-Dollar (HK$)","settings.appearance.currency.rate_source.default":"Integrierte Standard-Wechselkurse","settings.appearance.currency.rate_source.fetched":"Datenquelle: open.er-api.com","settings.appearance.currency.rate_updated":"Aktualisiert {{when}}","settings.appearance.currency.rate_never":"Noch nicht aktualisiert","settings.account.displayName":"Anzeigename","settings.account.edit":"Bearbeiten","settings.account.save":"Speichern","settings.account.saving":"Wird gespeichert…","settings.account.cancel":"Abbrechen","settings.account.userId":"Benutzer-ID","settings.account.copyUserId":"Benutzer-ID kopieren","settings.account.copy":"Kopieren","settings.account.copied":"Kopiert","settings.account.cloudSync":"Cloud-Synchronisation","settings.account.cloudSyncHint":"Lade die lokale Nutzung in dein TokenTracker-Cloud-Konto hoch.","settings.account.publicProfile":"Öffentliches Profil","settings.account.publicProfileHint":"Zeige deine Nutzung auf dem öffentlichen Leaderboard an.","settings.account.displayNameAnonymousHint":"Im anonymen Modus werden dein Name und Avatar auf dem Leaderboard ausgeblendet","settings.account.displayNameDisabledWhileAnon":"Deaktiviere den anonymen Modus, bevor du deinen Namen bearbeitest","settings.account.githubUrl":"GitHub-Profil","settings.account.githubUrlHint":"Zeige einen GitHub-Link neben deinem Namen auf dem Leaderboard an.","settings.account.githubUrlPlaceholder":"Benutzername oder https://github.com/benutzername","settings.account.githubUrlInvalid":"Gib einen GitHub-Benutzernamen oder https://github.com/benutzername ein","settings.account.signOut":"Abmelden","settings.account.signIn":"Anmelden","settings.account.signedOutHint":"Melde dich an, um Cloud-Synchronisation und Leaderboard-Einstellungen zu verwalten.","settings.section.menubar":"Menüleiste","settings.menubar.showStats":"Statistiken in der Menüleiste anzeigen","settings.menubar.showStatsHint":"Zeige heutige Token und Kosten neben dem Menüleistensymbol an.","settings.menubar.animatedIcon":"Animiertes Icon","settings.menubar.animatedIconHint":"Lasse die Clawd-Figur blinken und Synchronisationsanimationen in der Menüleiste abspielen.","settings.menubar.launchAtLogin":"Beim Anmelden starten","settings.menubar.launchAtLoginHint":"Starte TokenTrackerBar automatisch beim Anmelden an macOS.","settings.menubar.syncNow":"Jetzt synchronisieren","settings.menubar.syncNowHint":"Analysiere und lade lokale KI-Tool-Protokolle sofort hoch.","settings.menubar.syncing":"Synchronisiere…","settings.menubar.updates":"Updates","settings.menubar.checkUpdates":"Nach Updates suchen","settings.footer.statusPage":"Systemstatus","leaderboard.github.aria":"GitHub-Profil öffnen","leaderboard.github.tooltipAction":"Klicken, um GitHub-Profil anzuzeigen","leaderboard.github.tooltipPrefix":"Konfiguriere dies in den","leaderboard.github.tooltipSettingsLink":"Einstellungen","leaderboard.github.tooltipSuffix":"","menubar.slot.primary":"Position 1","menubar.slot.secondary":"Position 2","menubar.native_only":"Öffne TokenTrackerBar für macOS, um die Menüleistenanzeige zu bearbeiten.","menubar.metric.today_tokens":"Heutige Token","menubar.metric.today_cost":"Heutige Kosten","menubar.metric.last_7d_tokens":"Letzte 7 Tage Token","menubar.metric.total_tokens":"Token insgesamt","menubar.metric.total_cost":"Kosten insgesamt","menubar.metric.claude_5h":"Claude 5-Stunden-Limit","menubar.metric.claude_7d":"Claude 7-Tage-Limit","menubar.metric.codex_5h":"Codex 5-Stunden-Limit","menubar.metric.codex_7d":"Codex 7-Tage-Limit","nav.ip_check":"Claude IP-Check","skills.page.title":"Skills","skills.tab.my":"Meine","skills.tab.browse":"Durchsuchen","skills.action.refresh":"Aktualisieren","skills.action.install":"Installieren","skills.action.choose_targets":"Ziele auswählen","skills.target.menu_label":"Installationsziel","skills.target.none":"Kein Ziel ausgewählt","skills.toast.installed":"{{name}} in {{targets}} installiert.","skills.action.remove":"Entfernen","skills.action.search":"Suchen","skills.action.search_aria":"Skills durchsuchen","skills.target.synced_summary":"Mit {{targets}} synchronisiert","skills.target.synced_none":"Noch mit keinem Agent synchronisiert","skills.row.open_details":"Details zu {{name}} anzeigen","skills.detail.close":"Details schließen","skills.detail.sync_section_title":"Synchronisationsziele","skills.detail.remove_button":"Von allen Agents entfernen","skills.detail.remove_confirm_hint":"Dadurch wird die Synchronisierung mit jedem Agent aufgehoben und die lokale Kopie gelöscht.","skills.filter.agent_label":"Agent","skills.filter.agent_all":"Alle Agents","skills.filter.clear":"Filter zurücksetzen","skills.filter.result_count":"{{filtered}} / {{total}} Skills","skills.filter.result_count_browse":"{{count}} Ergebnisse","skills.empty.no_match":"Keine Skills entsprechen den aktuellen Filtern.","hint.dismiss":"Hinweis schließen","hint.dismissible_aria":"Schließbarer Hinweis","skills.card.installed":"Installiert","skills.card.targets_prefix":"Installiert in:","skills.card.targets_change":"Ändern","skills.card.installs":"{{count}} Installationen","skills.source.label":"Quelle","skills.source.all":"Alle Repositories","skills.mode.repo":"Repository","skills.mode.skillssh":"skills.sh","skills.browse.placeholder_all":"In allen aktiven Repositories suchen…","skills.browse.placeholder_repo":"In {{repo}} suchen…","skills.browse.placeholder_skillssh":"In skills.sh-Repositories suchen…","skills.browse.empty_sources":"Füge GitHub-Repositories hinzu, um Skills zu durchsuchen.","skills.browse.add_repo_hint":"Mehr Skills gewünscht? Füge ein GitHub-Repository hinzu.","skills.browse.manage_sources":"Quellen verwalten","skills.browse.hint_skillssh":"Gib mindestens 2 Zeichen ein, um in skills.sh zu suchen.","skills.browse.loading_hint":"Rufe Skill-Informationen von GitHub ab. Der erste Ladevorgang kann etwa eine Minute dauern; Ergebnisse werden zwischengespeichert.","skills.error.generic":"Skill-Vorgang fehlgeschlagen.","skills.confirm.remove_title":"{{name}} entfernen?","skills.confirm.remove_managed":"Dieser Skill wird von allen verbundenen KI-Tools entfernt. Dies kann innerhalb weniger Sekunden rückgängig gemacht werden.","skills.confirm.remove_local":"Der Skill-Ordner wird aus allen KI-Tool-Verzeichnissen gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.","skills.toast.removed":"{{name}} entfernt.","shared.action.undo":"Rückgängig","shared.action.cancel":"Abbrechen","skills.empty.my":"Noch keine Skills. Suche oder installiere welche unter „Durchsuchen“.","skills.empty.my_cta":"Zum Durchsuchen","skills.empty.browse":"Keine Skills in dieser Quelle gefunden.","skills.empty.search":"Keine Ergebnisse. Versuche es mit anderen Suchbegriffen.","skills.repo.placeholder":"owner/repository","skills.repo.add":"Repository hinzufügen","skills.repo.invalid":"Gib owner/repository oder eine GitHub-Repository-URL ein.","skills.repo.remove":"Repository entfernen","limits.bar.sub_one_percent":"<1","limits.codex_reset_bank.count_only":"Reset-Bank: {{count}} verfügbar · Ablauf unbekannt","limits.codex_reset_bank.row_label":"Reset {{index}}","limits.codex_reset_bank.title":"Resets","limits.explain.ahead_eta":"{{label}}: schneller als nötig, ~{{eta}} bis Limit","limits.explain.ahead_pct":"{{label}}: schneller als nötig, ~{{pct}}% bis Reset","limits.explain.ahead_pct_remaining":"{{label}}: schneller als nötig, ~{{pct}}% übrig bis Reset","limits.explain.body":"Die Markierung zeigt das gleichmäßige Tempo an; wenn die Füllung darüber liegt, bist du schneller.","limits.explain.body_remaining":"Die Markierung zeigt das gleichmäßige Tempo an; wenn die Füllung darunter liegt, bist du schneller.","limits.explain.on_track":"{{label}}: auf Kurs, ~{{pct}}% bis Reset","limits.explain.on_track_remaining":"{{label}}: auf Kurs, ~{{pct}}% übrig bis Reset","limits.explain.remaining":"{{label}}: {{used}}% übrig","limits.explain.used":"{{label}}: {{used}}% verbraucht","limits.label.antigravity_cached":"cached","limits.label.antigravity_claude_5h":"Cl 5h","limits.label.antigravity_claude_weekly":"Cl 7d","limits.label.antigravity_gemini_5h":"Gm 5h","limits.label.antigravity_gemini_weekly":"Gm 7d","limits.label.antigravity_live":"live","limits.label.claude_5h":"5h","limits.label.claude_7d":"7d","limits.label.claude_opus":"Opus","limits.label.codex_5h":"5h","limits.label.codex_7d":"7d","limits.label.codex_spark_5h":"Spark 5h","limits.label.codex_spark_7d":"Spark 7d","limits.label.gemini_flash":"Flash","limits.label.gemini_lite":"Lite","limits.label.gemini_pro":"Pro","limits.label.grok_month":"Monat","limits.label.grok_ondemand":"On-Demand","limits.label.opencode_go_5h":"5h","limits.label.opencode_go_monthly":"Monatlich","limits.label.opencode_go_weekly":"Wöchentlich","limits.label.zcode_glm52":"GLM-5.2","limits.label.zcode_glm5t":"GLM-5-Turbo","limits.provider.antigravity":"Antigravity","limits.provider.claude":"Claude","limits.provider.codex":"Codex","limits.provider.copilot":"GitHub Copilot","limits.provider.cursor":"Cursor","limits.provider.gemini":"Gemini","limits.provider.grok":"Grok Build","limits.provider.kimi":"Kimi","limits.provider.kiro":"Kiro","limits.provider.opencode_go":"OpenCode Go","limits.provider.zcode":"ZCode","limits.tooltip.antigravity_cached":"Zwischengespeicherte Limits. Führe Antigravity IDE/CLI aus, um zu aktualisieren.","limits.tooltip.antigravity_live":"Echtzeit-Limits direkt vom laufenden Antigravity-Prozess.","login.forgot_password":"Passwort vergessen?","menubar.metric.codex_spark_5h":"Codex Spark 5h-Limit","menubar.metric.codex_spark_7d":"Codex Spark 7d-Limit","qpd.card.badge":"BETA","qpd.card.best_value":"Bestes Preis-Leistungs-Verhältnis","qpd.card.col_accepted":"PRs/Gesamt","qpd.card.col_cost":"Ausgaben","qpd.card.col_model":"Modell","qpd.card.col_qpd":"Kosten/PR","qpd.card.col_rate":"Akzeptanzrate","qpd.card.et":"Effektiv: {{tokens}} ({{rate}})","qpd.card.et_tooltip":"Effektive Tokens – der Anteil der Tokens, der in akzeptierte Arbeit statt Nachbesserung geflossen ist.","qpd.card.qpd_tooltip":"Durchschnittliche Token-Kosten pro akzeptiertem Ergebnis (Gesamtausgaben ÷ akzeptierte Ergebnisse).","qpd.card.sparse_notice":"Hinweis: Bei wenig Daten können die Verhältnisse verzerrt sein. Versuche einen engeren Zeitraum.","qpd.card.subtitle":"Durchschnittliche Token-Kosten pro gemergtem PR basierend auf deinem Verlauf.","qpd.card.title":"Qualität & durchschnittliche Kosten/PR","qpd.card.totals":"Gemergt {{accepted}}/{{outcomes}} PRs · Kosten {{cost}}","qpd.card.updating":"Aktualisiere …","reset_password.back_to_sign_in":"Zurück zur Anmeldung","reset_password.error.missing_token":"Reset-Token fehlt. Fordere einen neuen Reset-Link an.","reset_password.error.password_mismatch":"Passwörter stimmen nicht überein.","reset_password.field.code":"Reset-Code","reset_password.field.confirm_password":"Passwort bestätigen","reset_password.field.new_password":"Neues Passwort","reset_password.request.sent":"Prüfe deine E-Mails auf den Reset-Link und den Code.","reset_password.request.submit":"Reset-Link senden","reset_password.reset.submit":"Passwort zurücksetzen","reset_password.subtitle":"Gib deine E-Mail-Adresse ein, um einen Reset-Link zu erhalten.","reset_password.success":"Passwort aktualisiert. Du kannst dich mit dem neuen Passwort anmelden.","reset_password.success_cta":"Zurück zur Anmeldung","reset_password.title":"Passwort zurücksetzen","settings.labs.qpd.aria":"PR-Kosten-Effizienz-Analyse umschalten","settings.labs.qpd.hint":"Verknüpft GitHub PR-Verlauf, um durchschnittliche Lieferkosten und effektive Tokens pro Modell zu analysieren.","settings.labs.qpd.label":"PR-Kosten-Effizienz analysieren","settings.menubar.confettiOnReset":"Konfetti beim Reset","settings.menubar.confettiOnResetHint":"Zeigt ein Feuerwerk an, wenn ein Nutzungslimit zurücksetzt, nachdem du nah dran warst.","shared.action.apply":"Übernehmen","shared.time.d_ago":"vor {{n}} T","shared.time.h_ago":"vor {{n}} Std","shared.time.m_ago":"vor {{n}} Min","skills.action.search_clear":"Suche zurücksetzen","skills.my.placeholder":"Installierte Skills filtern …","usage.summary.toggle_aria":"Kompaktes Zahlenformat umschalten"},p9={"usage.overview.antigravity_notice_title":"Token sind Schätzwerte","usage.overview.antigravity_notice_body":"Antigravity-Lokalprotokolle enthalten keine tatsächlichen Nutzungsdaten, daher werden die Werte hier aus der Zeichenanzahl (ca. 4 Zeichen/Token) geschätzt, ohne Gemini Prompt-Cache-Rabatte. Betrachte diese Werte als grobe Obergrenze und nicht als Rechnungsgrundlage.","stats.period.today":"Heute","stats.period.week":"Diese Woche","stats.period.month":"Dieser Monat","stats.period.all":"Alle","stats.period.convs":"Gespräche","dashboard.core_index.collapse_label":"▾","dashboard.core_index.expand_label":"▸","dashboard.core_index.collapse_aria":"Modellaufschlüsselung einklappen","dashboard.core_index.expand_aria":"Modellaufschlüsselung ausklappen","dashboard.rolling.title":"Letzte Aktivität","dashboard.rolling.last_7d":"Letzte 7 Tage","dashboard.rolling.last_30d":"Letzte 30 Tage","dashboard.rolling.avg_active_day":"Täglicher Durchschnitt","dashboard.projects.title":"Projektnutzung","dashboard.projects.tokens_label":"Token","dashboard.projects.stars_label":"Markiert","dashboard.projects.limit_label":"Anzeige","dashboard.projects.limit_aria":"Anzahl der anzuzeigenden Repositorien wählen","dashboard.projects.limit_top_3":"Top 3","dashboard.projects.limit_top_6":"Top 6","dashboard.projects.limit_top_10":"Top 10","dashboard.projects.empty":"Keine öffentlichen Repositories","dashboard.widgets.title":"Desktop-Widgets","dashboard.widgets.hint":"Rechtsklick auf den Desktop → Widgets bearbeiten → Nach „TokenTracker“ suchen","dashboard.widgets.dismiss_aria":"Widget-Einführung schließen","dashboard.cost_breakdown.title":"Kostenaufschlüsselung","dashboard.cost_breakdown.total_label":"Geschätzte Gesamtkosten","dashboard.cost_breakdown.close":"Schließen","trend.monitor.label":"Nutzungstrend","trend.zoom.open_aria":"Vollbild öffnen","trend.zoom.close_aria":"Schließen","trend.zoom.badge":"Trendanalyse","trend.zoom.desc":"Fahre mit der Maus über die Balken, um Token, Kosten und Gespräche anzuzeigen. Wechsel die Granularität von Monaten bis zu 30-Minuten-Intervallen.","trend.zoom.insight_badge":"Analyse","trend.zoom.tooltip.cost":"Kosten","trend.zoom.tooltip.conversations":"Gespräche","trend.zoom.stats.tokens":"Token gesamt","trend.zoom.stats.cost":"Kosten gesamt","trend.zoom.stats.conversations":"Gespräche","trend.zoom.stats.peak":"Spitzenzeit","trend.zoom.gran.aria":"Granularität","trend.zoom.gran.30min":"30 Min.","trend.zoom.gran.day":"Tag","trend.zoom.gran.month":"Monat","trend.zoom.prev_day":"Vorheriger Tag","trend.zoom.next_day":"Nächster Tag","trend.zoom.loading":"Laden…","trend.zoom.pick_day":"Datum wählen","trend.zoom.pick_range":"Zeitraum wählen","trend.zoom.insight.empty":"Ruhige Zeit. Kein Token ist geflossen.","trend.zoom.insight.calm":"Zurückhaltende Nutzung. Die Modelle haben meist gewartet und nur bei Bedarf gearbeitet.","trend.zoom.insight.steady":"Stabiler Rhythmus mit {{active}} aktiven Abschnitten, Spitze bei {{peak}}. Ein Tempo, das Dinge erledigt, ohne Aufsehen zu erregen.","trend.zoom.insight.heavy":"Ernsthafte Betriebsamkeit: {{active}} Abschnitte unter Hochlast, Spitze bei {{peak}}. Die Leistung von jemandem, der nicht auf Dynamik wartet, sondern sie selbst erzeugt.","trend.zoom.insight.massive":"Industrielles Ausmaß. Spitze bei {{peak}} mit ungebrochenem Durchsatz. Bei dieser Menge betreibt man kein Modell mehr, sondern eine Fabrik.","heatmap.title":"Heatmap","heatmap.empty":"Noch keine Aktivitätsdaten vorhanden.","heatmap.legend.less":"Weniger","heatmap.legend.more":"Mehr","heatmap.legend.utc":"UTC","heatmap.tooltip":"{{day}} • {{value}} {{unit}} • {{tz}}","heatmap.unit.tokens":"Token","heatmap.month.jan":"Januar","heatmap.month.feb":"Februar","heatmap.month.mar":"März","heatmap.month.apr":"April","heatmap.month.may":"Mai","heatmap.month.jun":"Juni","heatmap.month.jul":"Juli","heatmap.month.aug":"August","heatmap.month.sep":"September","heatmap.month.oct":"Oktober","heatmap.month.nov":"November","heatmap.month.dec":"Dezember","heatmap.day.sun":"So","heatmap.day.mon":"Mo","heatmap.day.tue":"Di","heatmap.day.wed":"Mi","heatmap.day.thu":"Do","heatmap.day.fri":"Fr","heatmap.day.sat":"Sa","dashboard.session_expired.copy_label":"npx --yes tokentracker-cli init ausführen","dashboard.session_expired.copied":"Kopiert","dashboard.install.prompt":"Node.js 18+ installieren und dann ausführen:","dashboard.install.cmd.init":"npx --yes tokentracker-cli init","dashboard.install.cmd.init_link_code":"npx --yes tokentracker-cli init --link-code {{link_code}}","dashboard.install.copy":"Installationsbefehl kopieren","dashboard.install.copy_base":"Initialisierungsbefehl kopieren","dashboard.install.copied":"In die Zwischenablage kopiert","dashboard.install.link_code.loading":"Linking-Code wird generiert…","dashboard.install.link_code.failed":"Linking-Code nicht verfügbar","dashboard.install.cmd.sync":"npx --yes tokentracker-cli sync","dashboard.daily.title":"Tägliche Aufschlüsselung","dashboard.daily.empty":"Noch keine Daten. Nutze zuerst ein KI-CLI und führe dann {{cmd}} aus.","dashboard.identity.title":"Dein Profil","dashboard.identity.subtitle":"Verfolge deine Coding-Reise","dashboard.identity.fallback":"Anonymer Benutzer","dashboard.screenshot.title_line1":"AI-Coding-Assistenten","dashboard.screenshot.title_line2":"Jahresrückblick 2025","dashboard.screenshot.twitter_button":"Auf X teilen","dashboard.screenshot.twitter_label":"Auf X teilen","dashboard.screenshot.twitter_hint":"Bild wird automatisch in die Zwischenablage kopiert","dashboard.screenshot.twitter_text":"{{total_tokens}} aufgezeichnete Token.\\n{{model_name}} führt mit {{model_percent}}%.\\n\\nMeine AI-Nutzung, ungeprüft →\\ntokentracker.cc","heatmap.3d.hover_tip":"Klicke für den 3D-Vollbild-Analysemodus","heatmap.3d.modal.title":"3D-Ansicht der Token","heatmap.3d.modal.desc":"Ziehe mit gedrückter Maustaste, um frei zu rotieren, und fahre mit der Maus über Elemente, um tägliche Aktivitäten und Statistiken anzuzeigen.","heatmap.3d.modal.stats.total_tokens":"Jährliche Token-Gesamtmenge","heatmap.3d.modal.stats.precision_total_tokens":"Jährlicher genauer Verbrauch","heatmap.3d.modal.stats.estimated_cost":"Geschätzte Jahreskosten","heatmap.3d.modal.stats.active_rate_days":"Aktivitätsrate / Tage","heatmap.3d.modal.stats.max_streak":"Längste aktive Serie","heatmap.3d.modal.stats.days_suffix":"Tage","heatmap.3d.modal.stats.peak_day":"Täglicher Spitzenwert","heatmap.3d.modal.stats.precision_peak_value":"Genauer täglicher Spitzenwert","heatmap.3d.modal.stats.no_data":"Keine Daten","heatmap.3d.modal.legend.title":"Aktivitätsstufen","heatmap.3d.modal.palette.emerald":"Smaragdstadt","heatmap.3d.modal.palette.ocean":"Tiefer Ozean","heatmap.3d.modal.palette.neon":"Cyber-Neon","heatmap.3d.modal.palette.amber":"Glühende Abendröte","heatmap.3d.modal.control.play":"Langsame Autorotation starten","heatmap.3d.modal.control.pause":"Autorotation pausieren","heatmap.3d.modal.control.reset":"3D-Ansicht zurücksetzen","heatmap.3d.modal.footer.tip":"Zum Zoomen kneifen / Mausrad / Maus ziehen, um das 3D-Diagramm zu drehen","heatmap.3d.modal.ai.title.default":"Beständiger Entwickler","heatmap.3d.modal.ai.eval.default":"Du entwickelst kontinuierlich weiter. Nicht jeder Coding-Tag ist spektakulär, aber jede Aktivität zeigt, wie dein Projekt wächst.","heatmap.3d.modal.ai.title.peak":"Top-Performer","heatmap.3d.modal.ai.eval.peak":"Dein Token-Output war dieses Jahr außergewöhnlich hoch. Diese Entwicklungsleistung deutet auf intensive Arbeit an komplexen Systemen hin – mit viel Fokus, Ausdauer und technischer Tiefe.","heatmap.3d.modal.ai.title.heavy":"Vielproduzent","heatmap.3d.modal.ai.eval.heavy":"Millionen Token – ein starkes Jahr. Dein Coding-Rhythmus zeigt hohe Umsetzungskraft und konstante Arbeit an deinen Projekten.","heatmap.3d.modal.ai.title.core":"Zuverlässiger Entwickler","heatmap.3d.modal.ai.eval.core":"Äußerst beharrliches Langzeitengagement. Im vergangenen Jahr hast du über lange Zeiträume hinweg stabil eine hohe Entwicklungsintensität gehalten. Mit soliden Code-Zeilen und Token-Produktion baust du leise die Kernarchitektur des Projekts auf – du bist das Rückgrat der Entwicklung.","heatmap.3d.modal.ai.title.steady":"Stetig wachsender Ingenieur","heatmap.3d.modal.ai.eval.steady":"Solide und beständige technische Arbeit. Mit jedem Token legst du das Fundament für zukünftigen Code. Dieser langfristige Rhythmus ist der Weg, den jeder gute Entwickler gehen muss.","heatmap.3d.voxel.joke.1":"🔥 Unglaublich! {{value}} Token produziert! Trainierst du ein großes Modell oder schreibst du einen Compiler von Hand?","heatmap.3d.voxel.joke.2":"🚀 Epische Leistung! Insgesamt {{value}} Token. Deine heutige Produktion könnte die Erde umrunden – selbst die AI staunt über dich!","heatmap.3d.voxel.joke.3":"⚡ Explosiver Tag! {{value}} Token. Der Code sprudelt wie aus einer Quelle und deine Tastatur beginnt zu rauchen!","heatmap.3d.voxel.level3":"⚡ Produktivitätsexplosion ({{value}} Token)! Hoch effiziente, fokussierte Goldene Stunde – halt diesen Spitzenzustand!","heatmap.3d.voxel.level2":"🌱 Es läuft rund ({{value}} Token)! Stetige Leistung, jeder Tastendruck fügt einen weiteren Baustein zu einem großen Gebäude hinzu.","heatmap.3d.voxel.level1":"🍃 Kleinvieh macht auch Mist ({{value}} Token). Jeder kleine Commit ist eine Investition in die Zukunft – nutze den Zinseszinseffekt!","heatmap.3d.voxel.level0":"💤 Ein Tag zum Kräftesammeln. Auch an Tagen ohne Code wachsen die Ideen leise weiter.","ipcheck.page.title":"Claude IP-Check","ipcheck.page.subtitle":"Prüfe die aktuelle Ausgangs-IP, die IP-Reputation und Risikosignale deines Claude-Zugriffs, um Faktoren zu erkennen, die den Login beeinflussen können.","ipcheck.mask.toggle":"IP verbergen","ipcheck.ipv6.warn":"Du nutzt eine IPv6-Umgebung. Der Zugriff auf Claude Code per IPv6 wird nicht empfohlen; einige Ergebnisse können unvollständig sein.","ipcheck.ip.cn":"Chinesische Ausgangs-IPv4","ipcheck.ip.cloudflare":"Cloudflare-Ausgang","ipcheck.ip.claude":"Claude-Ausgang","ipcheck.ip.failed":"Abruf fehlgeschlagen","ipcheck.ip.loading":"Laden…","ipcheck.trust.title":"Vertrauenswürdigkeit","ipcheck.trust.subtitle":"IP-Reputation aus Sicht des Claude-Risikomanagements","ipcheck.trust.no_data":"Keine Daten","ipcheck.trust.no_ip":"Claude-Ausgangs-IP nicht ermittelbar, daher kein Score berechenbar","ipcheck.trust.no_score":"Noch keine Score-Daten für diese IP","ipcheck.trust.gauge.low":"0 Hohes Risiko","ipcheck.trust.gauge.high":"100 Vertrauenswürdig","ipcheck.trust.label.pristine":"Sehr sauber","ipcheck.trust.label.clean":"Sauber","ipcheck.trust.label.good":"Gut","ipcheck.trust.label.neutral":"Neutral","ipcheck.trust.label.suspicious":"Verdächtig","ipcheck.trust.label.unreachable":"Nicht erreichbar","ipcheck.trust.text.excellent":"Der Ruf dieser IP ist sehr gut","ipcheck.trust.text.great":"Der Ruf dieser IP ist ausgezeichnet","ipcheck.trust.text.minor":"Diese IP birgt geringfügige Risiken","ipcheck.trust.text.moderate":"Diese IP birgt gewisse Risiken","ipcheck.trust.text.severe":"Diese IP ist extrem risikoreich","ipcheck.trust.text.restricted":"Befindet sich in einer nicht zugänglichen Region; Claude handhabt das Risikomanagement streng","ipcheck.trust.region_warn.title":"Claude-Ausgangs-IP befindet sich in {{region}}","ipcheck.trust.region_warn.body":"Die Anmeldung bei Claude wird nicht empfohlen. Dies kann eher das Risikomanagement einer Kontosperrung auslösen.","ipcheck.trust.region_support":"Von Claude unterstützte Regionen","ipcheck.trust.region.accessible":"Zugänglich","ipcheck.common.unknown":"Unbekannt","ipcheck.props.title":"IP-Eigenschaften","ipcheck.props.region":"Region","ipcheck.props.city":"Stadt","ipcheck.props.type":"Typ","ipcheck.props.asn":"ASN","ipcheck.props.org":"Provider","ipcheck.props.residential":"Privatanschluss","ipcheck.props.datacenter":"Rechenzentrum","ipcheck.security.title":"Sicherheitserkennung","ipcheck.security.vpn":"VPN","ipcheck.security.proxy":"Proxy","ipcheck.security.tor":"Tor","ipcheck.security.crawler":"Bot (Crawler)","ipcheck.security.abuser":"Missbrauchsaufzeichnung","ipcheck.security.proxy_flag":"Proxy","ipcheck.security.crawler_yes":"Ja","ipcheck.security.crawler_no":"Nein","ipcheck.security.abuser_yes":"Aufzeichnung vorhanden","ipcheck.security.abuser_no":"Keine Aufzeichnung","ipcheck.security.clean":"Nicht erkannt","ipcheck.avail.title":"Claude-Verfügbarkeit","ipcheck.avail.tooltip":"Die Claude-Server befinden sich in den USA. Latenzen über 100 ms aus Asien sind normal.","ipcheck.avail.refresh":"Aktualisieren","ipcheck.avail.svc_row":"Dienststatus","ipcheck.avail.latency.normal":"Normal","ipcheck.avail.latency.good":"Gut","ipcheck.avail.latency.slow":"Etwas langsam","ipcheck.avail.latency.unreachable":"Nicht erreichbar","ipcheck.avail.svc.none":"Alles in Ordnung","ipcheck.avail.svc.minor":"Geringfügige Störung","ipcheck.avail.svc.major":"Schwerwiegende Störung","ipcheck.avail.svc.critical":"Kritische Störung","ipcheck.avail.svc.maintenance":"Wartungsarbeiten","ipcheck.avail.svc.other":"Dienstanomalie","ipcheck.dns.title":"DNS-Leck-Erkennung","ipcheck.dns.status":"Status","ipcheck.dns.outlet":"DNS-Ausgang","ipcheck.dns.outlet_ip":"DNS-Ausgangs-IP","ipcheck.dns.isp":"Provider","ipcheck.dns.leaked":"Mögliches Leck","ipcheck.dns.no_leak":"Kein Leck erkannt","ipcheck.dns.encrypted":"DNS ist verschlüsselt oder privat","ipcheck.dns.cn_tag":"China-DNS","ipcheck.udp.title":"WebRTC-UDP-Leck","ipcheck.udp.status":"Status","ipcheck.udp.outlet":"UDP-Ausgang","ipcheck.udp.outlet_ip":"UDP-Ausgangs-IP","ipcheck.udp.origin":"Standort","ipcheck.udp.disabled":"WebRTC ist deaktiviert","ipcheck.udp.no_leak":"Kein Leck erkannt","ipcheck.udp.leaked":"Mögliches Leck","ipcheck.udp.anomaly":"Anomalie","ipcheck.device.title":"Geräteinformationen","ipcheck.device.tz":"Zeitzone","ipcheck.device.lang":"Sprache","ipcheck.device.os":"OS / Browser","ipcheck.device.touch":"Touchscreen","ipcheck.device.net":"Netzwerktyp","ipcheck.device.dnt":"Do Not Track","ipcheck.device.webgl_render":"WebGL-Renderer","ipcheck.device.canvas_fp":"Canvas-Fingerabdruck","ipcheck.device.webgl_fp":"WebGL-Fingerabdruck","ipcheck.device.match":"Übereinstimmung","ipcheck.device.mismatch":"Keine Übereinstimmung","ipcheck.device.local":"Lokal","ipcheck.device.estimate_suffix":"(geschätzt)","ipcheck.device.diff_equal":"Geringfügige Abweichung im Offset","ipcheck.device.diff_ahead":"Claude ist {{h}} Stunden voraus","ipcheck.device.diff_behind":"Claude ist {{h}} Stunden zurück","ipcheck.device.lang_expected":"Häufig verwendete Sprache am Claude-Ausgang","ipcheck.device.touch_yes":"Ja","ipcheck.device.touch_no":"Nein","ipcheck.device.dnt_on":"Ein","ipcheck.device.dnt_off":"Aus","ipcheck.device.dnt_unset":"Nicht festgelegt","ipcheck.device.net_unsupported":"Erkennung nicht unterstützt","ipcheck.device.unsupported":"Nicht unterstützt","ipcheck.history.title":"Claude-Ausgangs-IP-Verlauf","ipcheck.history.subtitle":"Wird nur lokal im Browser gespeichert, max. 6 Einträge","ipcheck.history.clear":"Löschen","ipcheck.history.empty":"Noch kein Verlauf","ipcheck.history.current":"Aktuell","ipcheck.region.CN":"China","ipcheck.region.HK":"Hongkong","ipcheck.region.MO":"Macau","ipcheck.region.RU":"Russland","ipcheck.region.KP":"Nordkorea","ipcheck.region.IR":"Iran","ipcheck.region.SY":"Syrien","ipcheck.region.CU":"Kuba","ipcheck.region.BY":"Weißrussland","ipcheck.region.VE":"Venezuela","leaderboard.profile_modal.close":"Schließen","leaderboard.profile_modal.loading":"Benutzerprofil wird geladen…","leaderboard.profile_modal.error":"Fehler beim Laden des Benutzerprofils.","leaderboard.profile_modal.empty":"Das Profil dieses Benutzers ist nicht öffentlich.","leaderboard.profile_modal.row_aria":"Profil von {{name}} anzeigen","leaderboard.profile_modal.rank":"#{{rank}}","leaderboard.profile.hero.rank_label":"Rang","leaderboard.profile_modal.hero.total_tokens":"Token gesamt","leaderboard.profile_modal.hero.total_cost":"Ausgaben gesamt","leaderboard.profile_modal.hero.github":"GitHub-Profil","leaderboard.profile_modal.stat.total_cost":"Ausgaben gesamt","leaderboard.profile_modal.stat.total_tokens":"Token gesamt","leaderboard.profile_modal.stat.active_days":"Aktive Tage","leaderboard.profile_modal.stat.avg_per_day":"Durchschnittliche Ausgaben pro Tag","leaderboard.profile_modal.streak.current":"Aktuelle Serie","leaderboard.profile_modal.streak.longest":"Längste Serie","leaderboard.profile_modal.streak.days":"{{count}} Tage","leaderboard.profile_modal.best_day.title":"Bester Tag","leaderboard.profile_modal.best_day.none":"—","leaderboard.profile_modal.models.count":"{{count}} Modelle verwendet","leaderboard.profile_modal.models.favorite":"Lieblingsmodell","leaderboard.profile_modal.models.none":"Noch keine Modellaufzeichnungen","leaderboard.profile_modal.heatmap.title":"Aktivität (letzte 365 Tage)","leaderboard.profile_modal.providers.title":"Verteilung nach Anbieter","leaderboard.profile_modal.providers.none":"Keine Nutzungsdaten für diesen Zeitraum.","leaderboard.profile_modal.view_full":"Vollständiges Profil anzeigen","local_only.title":"Bitte im Client nutzen","local_only.body":"Diese Seite lädt Daten von deinem Gerät und kann daher nur in der Mac-App oder über das Dashboard in der Befehlszeile angezeigt werden.","local_only.open_app":"In der Mac-App öffnen","local_only.download":"Mac-App herunterladen","dashboard.auth_gate.title":"Bei Token Tracker anmelden","dashboard.auth_gate.subtitle":"Melde dich an, um deine API-Nutzung, Kosten und Token-Trends in der Cloud zu synchronisieren.","dashboard.auth_gate.button":"Jetzt anmelden","dashboard.expired_gate.title":"Sitzung abgelaufen","dashboard.expired_gate.subtitle":"Deine Sitzung ist abgelaufen. Bitte melde dich erneut an, um das Cloud-Dashboard weiter zu nutzen.","dashboard.expired_gate.button":"Erneut anmelden","shared.app_name":"Token Tracker","dashboard.auth_gate.hero_title":"Der gesamte Token-Verbrauch deines KI-Agenten","dashboard.auth_gate.hero_subtitle":"Klar, transparent, mit Multi-Endpoint-Kontrolle","dashboard.auth_gate.desc":"Synchronisiere Token-Kontingente, Kosten und Latenzstatistiken aller gängigen Agenten wie Claude Code, Cursor und Gemini CLI sicher in der Cloud und erhalte eine umfassende Visualisierungsanalyse.","dashboard.auth_gate.feature.sync.title":"Echtzeit-Cloud-Synchronisation","dashboard.auth_gate.feature.sync.desc":"Sammelt automatisch die Ausführungskosten jedes Endpunkts und archiviert sie sicher innerhalb weniger Sekunden in der privaten Cloud.","dashboard.auth_gate.feature.anal.title":"Mehrdimensionales Dashboard","dashboard.auth_gate.feature.anal.desc":"Zeigt die Token-Verteilung nach Modell und Zeitfenster an, sodass du Kostenanstiege und Verbrauchszusammensetzung jederzeit verfolgen kannst.","dashboard.auth_gate.feature.guard.title":"Lokale Autonomie","dashboard.auth_gate.feature.guard.desc":"Überspringe alle Login-Schritte im Localhost-Modus. So bleibt lokales Debugging schnell.","dashboard.expired_gate.hero_title":"Cloud-Sitzung abgelaufen","dashboard.expired_gate.desc":"Aus Gründen der Privatsphäre und Cloud-Sicherheit wird deine Sitzung nach einer gewissen Zeit beendet. Zur sofortigen Wiederherstellung des Dashboards melde dich bitte erneut an.","dashboard.expired_gate.feature.sec.title":"Sicherer Schutz","dashboard.expired_gate.feature.sec.desc":"Verschlüsselte Tokens rotieren automatisch und schützen so deine Daten.","dashboard.expired_gate.feature.restore.title":"Nahtlose Wiederherstellung","dashboard.expired_gate.feature.restore.desc":"Setze deine Charts sofort fort – ohne Terminal-Hooks neu zu konfigurieren.","dashboard.expired_gate.feature.cloud.title":"Geräteübergreifende Synchronisation","dashboard.expired_gate.feature.cloud.desc":"Über das synchronisierte Dashboard kannst du Token-Logs von überall einsehen.","dashboard.device_card.title":"Nach Gerät","dashboard.device_card.unnamed":"Unbekanntes Gerät","dashboard.device_filter.all":"Alle Geräte","dashboard.device_filter.aria":"Nach Gerät filtern","stats.period.avg":"⌀","stats.period.last_30d":"30 T","stats.period.last_7d":"7 T","usage.overview.cache_hit_rate_detail":"{{reused}} wiederverwendet / {{input}} Input","usage.overview.cache_hit_rate_label":"Cache-Trefferquote","dashboard.device_card.empty":"Keine aktiven Geräte gefunden","dashboard.device_card.account_scope":"Kontoweit","dashboard.device_card.account_scope_tip":"Über die Konto-API des Anbieters synchronisiert — keinem einzelnen Gerät zugeordnet","dashboard.device_card.rename_aria":"Gerät umbenennen","dashboard.device_card.rename_cancel":"Abbrechen","dashboard.device_card.rename_error":"Umbenennung fehlgeschlagen – dieser Name wird möglicherweise bereits verwendet.","dashboard.device_card.rename_placeholder":"Gerätename","dashboard.device_card.rename_save":"Namen speichern","nav.pet":"Desktop-Tier","pet.page.eyebrow":"Desktop-Begleiter","pet.page.title":"Pet","pet.page.subtitle":"Wähle einen Begleiter und sieh, wie er auf deine echte KI-Aktivität reagiert.","pet.preview.states":"Pet-Zustände ansehen","pet.controls.title":"Desktop-Steuerung","pet.controls.show":"Desktop-Pet anzeigen","pet.controls.show_hint":"Den Begleiter über anderen Fenstern halten.","pet.controls.size":"Pet-Größe","pet.controls.native_only":"Öffne diese Seite in der TokenTracker-Desktop-App, um das echte Pet zu steuern.","pet.characters.title":"Wähle deinen Begleiter","pet.characters.subtitle":"Jeder Charakter nutzt das vollständige Zustandssystem mit eigener Farbe und Silhouette.","pet.character.clawd":"Clawd","pet.character.clawd_desc":"Der originale Token-Hüter mit Scheren-Silhouette.","pet.character.sprout":"Sprout","pet.character.sprout_desc":"Ein Keimling-Geist mit Blattohren und kleinen Wurzelfüßen.","pet.character.byte":"Byte","pet.character.byte_desc":"Ein schwebender Terminal-Roboter mit ausdrucksstarken Bildschirmaugen.","pet.character.ember":"Ember","pet.character.ember_desc":"Ein Fuchsgeist mit Flammenschweif für produktive Serien.","pet.state.calm":"Ruhig","pet.state.focus":"Fokus","pet.state.multitask":"Multi-Modell","pet.state.streak":"Serie","pet.state.celebrate":"Neue Nutzung","pet.state.rest":"Pause","pet.size.small":"Klein","pet.size.medium":"Mittel","pet.size.large":"Groß","pet.import.title":"Codex-Pet importieren","pet.import.subtitle":"codex-pets.net-Link einfügen oder .zip-Paket wählen.","pet.import.add":"Hinzufügen","pet.import.zip":"Paket auswählen","pet.import.remove":"Importiertes Pet entfernen","pet.import.success":"Pet importiert und ausgewählt.","pet.import.failed":"Dieses Pet konnte nicht importiert werden.","pet.import.busy":"Wird importiert…","pet.format.v2":"V2","pet.import.removed":"Importiertes Pet entfernt.","pet.import.url_label":"Codex-Pets-URL oder Pet-ID"},f9={"landing.handle.default":"VIBE_USER","landing.handle.special":"BOLT","landing.screenshot.alt":"Screenshot des TokenTracker-Dashboards","landing.nav.login":"Anmelden","landing.nav.signup":"Registrieren","landing.install.command":"npx --yes tokentracker-cli","landing.install.action.copy":"Befehl kopieren","landing.install.action.copied":"Kopiert","landing.meta.title":"Token Tracker — KI-Token-Verbrauch für Coding-CLIs","landing.meta.description":"Überwache automatisch den Token-Verbrauch deiner KI-Entwicklungswerkzeuge wie Claude Code, Cursor und Codex. Lokal first, datenschutzorientiert, keine Konfiguration nötig.","landing.meta.og_site_name":"Token Tracker","landing.meta.og_type":"website","landing.meta.og_image":"https://www.tokentracker.cc/og-image.jpg","landing.meta.og_url":"https://www.tokentracker.cc/","landing.meta.twitter_card":"summary_large_image","share.meta.title":"Token Tracker – Teilen","share.meta.description":"Teile einen Schnappschuss deines TokenTracker-Dashboards mit Einblicken in die Nutzung nach Modell, Projekt und Zeitraum.","share.meta.og_site_name":"Token Tracker","share.meta.og_type":"website","share.meta.og_image":"https://www.tokentracker.cc/share-dashboard.jpg","share.meta.og_url":"https://www.tokentracker.cc/share","share.meta.twitter_card":"summary_large_image","landing.handle.placeholder":"Probiere ‚{{handle}}‘ aus","landing.rank.expectation":"Erwarteter Rang: {{rank}}","landing.rank.singularity":"Top","landing.rank.unranked":"Nicht platziert","landing.cta.primary":"Zum Dashboard","landing.cta.secondary":"GitHub","landing.v2.hero.title_line1":"Verfolge all deine","landing.v2.hero.title_line2":"KI-Token","landing.v2.install.mac_cta":"Für macOS herunterladen","landing.v2.install.win_cta":"Für Windows herunterladen","landing.v2.install.desktop_cta":"Desktop-App herunterladen","landing.v2.install.os_macos":"macOS","landing.v2.install.os_windows":"Windows","landing.v2.install.availability":"Verfügbar für macOS und Windows","landing.v2.models.title":"Unterstützte KI-CLI-Tools","landing.v2.compare.kicker":"Nahtloses Tracking","landing.v2.compare.title":"Hör auf, über deinen KI-Verbrauch zu raten.","landing.v2.compare.subtitle":"KI-CLI-Tools verstecken rohe Verlaufsdaten oft in unübersichtlichen lokalen Dateien. TokenTracker fasst sie in Echtzeit in einem lokalen Dashboard zusammen.","landing.v2.distill.body":"100 % lokal verarbeitet. Weder Prompts noch Code werden hochgeladen.","landing.v2.compare.with.title":"Mit Token Tracker","landing.v2.compare.with.p1":"Zentrales Nutzungs-Dashboard","landing.v2.compare.with.p2":"Echtzeit-Token-Metriken","landing.v2.compare.with.p3":"100 % lokal und datenschutzsicher","landing.v2.compare.with.p4":"Multi-Client-Terminal-Prüfpfad","landing.v2.compare.without.title":"Ohne","landing.v2.compare.without.p1":"Verstreute JSON-Logdateien","landing.v2.compare.without.p2":"Keinerlei Transparenz über Token-Verbrauch","landing.v2.compare.without.p3":"Plötzliche API-Rechnungen","landing.v2.compare.without.p4":"Keinerlei historische Prüflogs","landing.v2.leaderboard.kicker":"GLOBALE TOKEN-RANGLISTE","landing.v2.leaderboard.title":"KI-Token-Effizienz","landing.v2.leaderboard.subtitle":"Synchronisiere deine lokalen KI-Token-Daten anonym und nimm an der globalen Effizienz-Rangliste teil. Vergleiche Kosten und Nutzungsfrequenz mit Entwicklern und Modellen weltweit.","landing.v2.leaderboard.view_more":"Gesamte Rangliste anzeigen","landing.v2.footer.line":"Token Tracker — von Entwicklern, für Entwickler.","landing.v2.nav.status":"Status","landing.v2.nav.github":"GitHub","landing.v2.models.agent.codex":"Codex","landing.v2.models.agent.claude_code":"Claude Code","landing.v2.models.agent.cursor":"Cursor","landing.v2.models.agent.gemini":"Gemini","landing.v2.models.agent.opencode":"OpenCode","landing.v2.models.agent.openclaw":"OpenClaw","landing.v2.cta.primary":"Dashboard","landing.v2.hero.subtagline":"Überwache automatisch den Token-Verbrauch deiner KI-Entwicklungswerkzeuge wie Claude Code, Cursor und Codex. Lokal first, datenschutzorientiert, keine Konfiguration nötig.","leaderboard.profile.nav.back":"Rangliste","leaderboard.title":"Rangliste","leaderboard.range":"UTC {{period}} · {{from}} – {{to}}","leaderboard.range_loading":"UTC {{period}} · …","leaderboard.range.total":"Gesamter Zeitraum","leaderboard.generated_at":"Aktualisiert {{ts}}","leaderboard.period.week":"Woche","leaderboard.period.month":"Monat","leaderboard.period.total":"Gesamter Zeitraum","leaderboard.me_label":"Ich","leaderboard.anon_label":"Anonym","leaderboard.error.unknown":"Unbekannter Fehler","leaderboard.loading":"Laden…","leaderboard.empty":"Noch keine Daten","leaderboard.column.rank":"Rang","leaderboard.column.user":"Benutzer","leaderboard.column.total":"Gesamt","leaderboard.column.codex":"Codex","leaderboard.column.claude":"Claude","leaderboard.column.gemini":"Gemini","leaderboard.column.cursor":"Cursor","leaderboard.column.opencode":"OpenCode","leaderboard.column.openclaw":"OpenClaw","leaderboard.column.hermes":"Hermes","leaderboard.column.kiro":"Kiro","leaderboard.column.copilot":"Copilot","leaderboard.column.kimi":"Kimi","leaderboard.column.supplemental":"Sonstige","leaderboard.column.est_cost":"Geschätzte Kosten","leaderboard.signin_prompt":"Melde dich an, um am Ranking teilzunehmen","leaderboard.signin_button":"Anmelden","leaderboard.sync_prompt":"Aktiviere Cloud-Sync, um am Ranking teilzunehmen","leaderboard.sync_button.idle":"Aktivieren & synchronisieren","leaderboard.sync_button.busy":"Synchronisiere…","leaderboard.pagination.page_size_label":"Einträge pro Seite","leaderboard.pagination.prev":"Vorherige Seite","leaderboard.pagination.next":"Nächste Seite","leaderboard.pagination.ellipsis":"……","leaderboard.pagination.page_unknown":"Seite {{page}}","share.modal.title":"Teile deine Daten","share.modal.subtitle":"Erstelle eine Poster-Karte zum Teilen.","share.modal.close":"Schließen","share.modal.action.x":"Auf X teilen","share.modal.action.download":"Herunterladen","share.modal.action.copy":"Bild kopieren","share.modal.hint.x":"Bild in Tweet einfügen","share.modal.hint.copy":"In Zwischenablage","share.modal.name_label":"Anzeigename","share.modal.name_placeholder":"Namen eingeben","share.modal.style_label":"Stil","share.modal.footer":"Deine Daten bleiben lokal – Bilder werden in deinem Browser erzeugt, nie hochgeladen.","share.button.label":"Teilen","share.button.aria":"Teile-Karte öffnen","share.toast.copied":"Bild in Zwischenablage kopiert","share.toast.downloaded":"Bild gespeichert","share.toast.failed":"Bildgenerierung fehlgeschlagen","share.toast.working":"Generiere…","share.variant.neon":"Neon","share.variant.broadsheet":"Zeitung","share.date.month_year":"{{month}} {{year}}","share.issue.all_time":"Gesamter Zeitraum","share.month_short.jan":"Jan","share.month_short.feb":"Feb","share.month_short.mar":"Mär","share.month_short.apr":"Apr","share.month_short.may":"Mai","share.month_short.jun":"Jun","share.month_short.jul":"Jul","share.month_short.aug":"Aug","share.month_short.sep":"Sep","share.month_short.oct":"Okt","share.month_short.nov":"Nov","share.month_short.dec":"Dez","share.hook.top_loyal":"{{name}} machte {{percent}} % deines Verbrauchs aus.","share.hook.days_record":"Insgesamt {{days}} Tage aufgezeichnet.","share.hook.top_led":"{{name}} führte mit {{percent}} %.","share.hook.multi_models":"{{count}} Modelle in {{days}} Tagen genutzt.","share.hook.days_with_model":"{{name}} war {{days}} Tage lang an deiner Seite.","share.hook.new_chapter":"Eine neue Aufzeichnung beginnt hier.","share.card.broadsheet.issue":"Ausgabe","share.card.broadsheet.by":"Geteilt von","share.card.broadsheet.tracked_since":"Verfolgt seit","share.card.broadsheet.total_tokens":"Token gesamt","share.card.broadsheet.estimated_spend":"Geschätzte Ausgaben","share.card.broadsheet.billable_days":"{{days}} aktive Tage","share.card.broadsheet.heatmap_title":"Jahresübersicht","share.card.broadsheet.heatmap_days_on_record":"{{active}} / {{total}} Tagen mit Daten","share.card.broadsheet.roster_title":"Modell-Ranking","share.card.broadsheet.roster_subtitle":"Deine meistgenutzten Modelle","share.card.broadsheet.empty":"Diese Woche war ruhig – noch keine Modelldaten.","share.card.broadsheet.global_rank":"Globaler Rang","share.card.broadsheet.active_days":"Aktiv","share.card.broadsheet.days_count":"{{days}} Tage","share.card.broadsheet.track_yours":"Erstelle deine eigene","share.card.annual.report_title":"Nutzungsbericht","share.card.annual.less":"Weniger","share.card.annual.more":"Mehr","share.card.annual.heatmap_title":"Token-Heatmap","share.card.annual.total_tokens":"Token gesamt","share.card.annual.estimated_cost":"Geschätzte Kosten","share.card.annual.longest_streak":"Längste Serie","share.card.annual.days_count":"{{days}} Tage","share.card.annual.top_model":"Top-Modell","leaderboard.profile.nav.download":"Herunterladen"},bC="tokentracker-locale",Rl="system",Rp="en",kC="zh-CN",wC="zh-TW",xC="ja",PC="ko",SC="de",m9=/^zh[-_](hant|tw|hk|mo)\b/i;function CC(t){return/^zh(?:[-_]|$)/i.test(t)?m9.test(t)?wC:kC:/^ja(?:[-_]|$)/i.test(t)?xC:/^ko(?:[-_]|$)/i.test(t)?PC:/^de(?:[-_]|$)/i.test(t)?SC:null}function TC(t){return typeof t!="string"?Rp:CC(t.trim())||Rp}function If(t){return t===Rl?Rl:TC(t)}function g9(){return typeof navigator>"u"?[]:Array.isArray(navigator.languages)&&navigator.languages.length?navigator.languages.filter(t=>typeof t=="string"):typeof navigator.language=="string"?[navigator.language]:[]}function Lp(t,e=g9()){const n=If(t);if(n!==Rl)return n;const r=e.map(a=>typeof a=="string"?a.trim():"").find(a=>a.length>0);return r&&CC(r)||Rp}function u0(){return If(uu(bC)||Rl)}function v9(t){return du(bC,If(t))}const _9=["key","module","page","component","slot","text"],y9={[kC]:{...e9,...t9,...n9},[wC]:{...r9,...a9,...i9},[xC]:{...s9,...o9,...l9},[PC]:{...c9,...u9,...d9},[SC]:{...h9,...p9,...f9}};let $g=null,d0=Lp(u0());function b9(t){const e=[];let n=[],r="",a=!1;for(let s=0;s<t.length;s+=1){const l=t[s];if(a){l==='"'?t[s+1]==='"'?(r+='"',s+=1):a=!1:r+=l;continue}if(l==='"'){a=!0;continue}if(l===","){n.push(r),r="";continue}if(l===`
1162
- `){n.push(r),r="",n.every(c=>c.trim()==="")||e.push(n),n=[];continue}l!=="\r"&&(r+=l)}return n.push(r),n.every(s=>s.trim()==="")||e.push(n),e}function k9(t){const e=b9(t);if(!e.length)return{map:new Map,rows:[]};const n=e[0].map(c=>String(c).trim());if(_9.filter(c=>!n.includes(c)).length)return{map:new Map,rows:[]};const a=Object.fromEntries(n.map((c,d)=>[c,d])),s=[],l=new Map;return e.slice(1).forEach((c,d)=>{const h={key:String(c[a.key]||"").trim(),module:String(c[a.module]||"").trim(),page:String(c[a.page]||"").trim(),component:String(c[a.component]||"").trim(),slot:String(c[a.slot]||"").trim(),text:String(c[a.text]??"").trim()};h.key&&(l.has(h.key),l.set(h.key,h),s.push(h))}),{map:l,rows:s}}function w9(){return $g||($g=k9(QM)),$g}function x9(){return y9[d0]||{}}function P9(t){const e=x9()[String(t)];return typeof e=="string"&&e.trim()?e:null}function S9(t,e){return e?t.replace(/\{\{(\w+)\}\}/g,(n,r)=>e[r]==null?n:String(e[r])):t}function C9(t){return String(t).replace(/\\n/g,`
1163
- `)}function T9(t,e){return P9(e)||t?.text||e}function E9(t){d0=TC(t)}function oY(){return d0}function xe(t,e){const r=w9().map.get(t);return S9(C9(T9(r,t)),e)}const EC=k.createContext(null);function A9(){return Lp(u0())}function R9(t){typeof document>"u"||(document.documentElement.lang=t)}function fx(t,e){E9(t),e(n=>n===t?n:t)}function L9({children:t}){const[e,n]=k.useState(u0),[r,a]=k.useState(A9);k.useLayoutEffect(()=>{R9(r)},[r]),k.useLayoutEffect(()=>{Hr()&&hu("locale",e)},[e]),k.useLayoutEffect(()=>{if(e!==Rl||typeof window>"u")return;const c=()=>fx(Lp(Rl),a);return window.addEventListener("languagechange",c),()=>window.removeEventListener("languagechange",c)},[e]);const s=k.useCallback(c=>{const d=If(c);fx(Lp(d),a),n(d),v9(d),Hr()&&hu("locale",d)},[]),l=k.useMemo(()=>({locale:e,setLocale:s,resolvedLocale:r}),[e,r,s]);return R.jsx(EC.Provider,{value:l,children:t})}const I9="https://open.er-api.com/v6/latest/USD",D9=1440*60*1e3,M9=5e3;function N9(t,e=D9,n=Date.now()){return!t||!Number.isFinite(t)?!0:n-t>e}async function O9(t={}){const{timeoutMs:e=M9,fetchImpl:n,url:r=I9,codes:a=s0}=t,s=n??(typeof fetch<"u"?fetch:null);if(!s)throw new Error("fetch is not available");const l=typeof AbortController<"u"?new AbortController:null,c=l?setTimeout(()=>l.abort(),e):null;try{const d=await s(r,l?{signal:l.signal}:void 0);if(!d||!d.ok)throw new Error(`exchange rate fetch failed: ${d?.status??"no-response"}`);const p=(await d.json())?.rates;if(!p||typeof p!="object")throw new Error("exchange rate response missing rates");const m={USD:1};for(const v of a){if(v==="USD")continue;const y=p[v];Ep(y)&&(m[v]=y)}if(Object.keys(m).length<=1)throw new Error("no supported currency rates in response");return{rates:m,fetchedAt:Date.now()}}finally{c&&clearTimeout(c)}}const j9=k.createContext(null);function mx(t,e,n){Hr()&&(hu("currency",t),hu("currencySymbol",n),Ep(e)&&hu("exchangeRate",e))}function z9({children:t}){const[e,n]=k.useState(fM),r=k.useMemo(()=>vM(),[]),[a,s]=k.useState(r.rates),[l,c]=k.useState(r.source),[d,h]=k.useState(r.fetchedAt),p=k.useRef(!1),m=k.useRef(!1),v=k.useCallback((L,T,E)=>{s(L),c(T),h(E),_M({rates:L,source:T,fetchedAt:E})},[]),y=k.useCallback(async()=>{if(!p.current){p.current=!0;try{const{rates:L,fetchedAt:T}=await O9();v({...o0,...L},"fetched",T)}catch{}finally{p.current=!1}}},[v]),b=k.useCallback(L=>{const T=l0(L);n(T),mM(T);const E=zg(a,T),D=Jh(T);mx(T,E,D)},[a]);k.useEffect(()=>{m.current||e!==Au&&N9(d)&&(m.current=!0,y())},[e,d,y]),k.useEffect(()=>{const L=zg(a,e),T=Jh(e);mx(e,L,T)},[e,a]);const x=k.useMemo(()=>zg(a,e),[a,e]),P=k.useMemo(()=>Jh(e),[e]),A=k.useMemo(()=>({currency:e,rate:x,symbol:P,rates:a,rateSource:l,rateFetchedAt:d,setCurrency:b}),[e,x,P,a,l,d,b]);return R.jsx(j9.Provider,{value:A,children:t})}var Ip={},F9=()=>{window.va||(window.va=function(...e){window.vaq||(window.vaq=[]),window.vaq.push(e)})},U9="@vercel/analytics",$9="2.0.1";function AC(){return typeof window<"u"}function RC(){try{const t="production"}catch{}return"production"}function B9(t="auto"){if(t==="auto"){window.vam=RC();return}window.vam=t}function V9(){return(AC()?window.vam:RC())||"production"}function h0(){return V9()==="development"}function H9(t){return t.scriptSrc?pl(t.scriptSrc):h0()?"https://va.vercel-scripts.com/v1/script.debug.js":t.basePath?pl(`${t.basePath}/insights/script.js`):"/_vercel/insights/script.js"}function W9(t,e){var n;let r=t;if(e)try{r={...(n=JSON.parse(e))==null?void 0:n.analytics,...t}}catch{}B9(r.mode);const a={sdkn:U9+(r.framework?`/${r.framework}`:""),sdkv:$9};return r.disableAutoTrack&&(a.disableAutoTrack="1"),r.viewEndpoint&&(a.viewEndpoint=pl(r.viewEndpoint)),r.eventEndpoint&&(a.eventEndpoint=pl(r.eventEndpoint)),r.sessionEndpoint&&(a.sessionEndpoint=pl(r.sessionEndpoint)),h0()&&r.debug===!1&&(a.debug="false"),r.dsn&&(a.dsn=r.dsn),r.endpoint?a.endpoint=r.endpoint:r.basePath&&(a.endpoint=pl(`${r.basePath}/insights`)),{beforeSend:r.beforeSend,src:H9(r),dataset:a}}function pl(t){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("/")?t:`/${t}`}function G9(t={debug:!0},e){var n;if(!AC())return;const{beforeSend:r,src:a,dataset:s}=W9(t,e);if(F9(),r&&((n=window.va)==null||n.call(window,"beforeSend",r)),document.head.querySelector(`script[src*="${a}"]`))return;const l=document.createElement("script");l.src=a;for(const[c,d]of Object.entries(s))l.dataset[c]=d;l.defer=!0,l.onerror=()=>{const c=h0()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${a}. ${c}`)},document.head.appendChild(l)}function q9({route:t,path:e}){var n;(n=window.va)==null||n.call(window,"pageview",{route:t,path:e})}function K9(){if(!(typeof process>"u"||typeof Ip>"u"))return Ip.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function Y9(){if(!(typeof process>"u"||typeof Ip>"u"))return Ip.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}function Z9(t){return k.useEffect(()=>{var e;t.beforeSend&&((e=window.va)==null||e.call(window,"beforeSend",t.beforeSend))},[t.beforeSend]),k.useEffect(()=>{G9({framework:t.framework||"react",basePath:t.basePath??K9(),...t.route!==void 0&&{disableAutoTrack:!0},...t},t.configString??Y9())},[]),k.useEffect(()=>{t.route&&t.path&&q9({route:t.route,path:t.path})},[t.route,t.path]),null}var Dp={},J9=()=>{window.si||(window.si=function(...e){window.siq=window.siq||[],window.siq.push(e)})},X9="@vercel/speed-insights",Q9="2.0.0";function eN(){return typeof window<"u"}function tN(){try{const t="production"}catch{}return"production"}function LC(){return tN()==="development"}function nN(t){return t.scriptSrc?Mp(t.scriptSrc):LC()?"https://va.vercel-scripts.com/v1/speed-insights/script.debug.js":t.dsn?"https://va.vercel-scripts.com/v1/speed-insights/script.js":t.basePath?Mp(`${t.basePath}/speed-insights/script.js`):"/_vercel/speed-insights/script.js"}function rN(t,e){var n;let r=t;if(e)try{r={...(n=JSON.parse(e))==null?void 0:n.speedInsights,...t}}catch{}const a={sdkn:X9+(r.framework?`/${r.framework}`:""),sdkv:Q9};return r.sampleRate&&(a.sampleRate=r.sampleRate.toString()),r.route&&(a.route=r.route),LC()&&r.debug===!1&&(a.debug="false"),r.dsn&&(a.dsn=r.dsn),r.endpoint?a.endpoint=Mp(r.endpoint):r.basePath&&(a.endpoint=Mp(`${r.basePath}/speed-insights/vitals`)),{src:nN(r),beforeSend:r.beforeSend,dataset:a}}function Mp(t){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("/")?t:`/${t}`}function aN(t={},e){var n;if(!eN()||t.route===null)return null;J9();const{beforeSend:r,src:a,dataset:s}=rN(t,e);if(document.head.querySelector(`script[src*="${a}"]`))return null;r&&((n=window.si)==null||n.call(window,"beforeSend",r));const l=document.createElement("script");l.src=a,l.defer=!0;for(const[c,d]of Object.entries(s))l.dataset[c]=d;return l.onerror=()=>{console.log(`[Vercel Speed Insights] Failed to load script from ${a}. Please check if any content blockers are enabled and try again.`)},document.head.appendChild(l),{setRoute:c=>{l.dataset.route=c??void 0}}}function iN(){if(!(typeof process>"u"||typeof Dp>"u"))return Dp.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}function sN(){if(!(typeof process>"u"||typeof Dp>"u"))return Dp.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}function oN(t){k.useEffect(()=>{var n;t.beforeSend&&((n=window.si)==null||n.call(window,"beforeSend",t.beforeSend))},[t.beforeSend]);const e=k.useRef(null);return k.useEffect(()=>{if(!e.current){const n=aN({framework:t.framework??"react",basePath:t.basePath??iN(),...t},t.configString??sN());n&&(e.current=n.setRoute)}},[t]),k.useEffect(()=>{e.current&&t.route&&e.current(t.route)},[t.route]),null}const IC=(...t)=>t.filter((e,n,r)=>!!e&&e.trim()!==""&&r.indexOf(e)===n).join(" ").trim();const lN=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const cN=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,n,r)=>r?r.toUpperCase():n.toLowerCase());const gx=t=>{const e=cN(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Bg={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const uN=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},dN=k.createContext({}),hN=()=>k.useContext(dN),pN=k.forwardRef(({color:t,size:e,strokeWidth:n,absoluteStrokeWidth:r,className:a="",children:s,iconNode:l,...c},d)=>{const{size:h=24,strokeWidth:p=2,absoluteStrokeWidth:m=!1,color:v="currentColor",className:y=""}=hN()??{},b=r??m?Number(n??p)*24/Number(e??h):n??p;return k.createElement("svg",{ref:d,...Bg,width:e??h??Bg.width,height:e??h??Bg.height,stroke:t??v,strokeWidth:b,className:IC("lucide",y,a),...!s&&!uN(c)&&{"aria-hidden":"true"},...c},[...l.map(([x,P])=>k.createElement(x,P)),...Array.isArray(s)?s:[s]])});const Cn=(t,e)=>{const n=k.forwardRef(({className:r,...a},s)=>k.createElement(pN,{ref:s,iconNode:e,className:IC(`lucide-${lN(gx(t))}`,`lucide-${t}`,r),...a}));return n.displayName=gx(t),n};const fN=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],mN=Cn("arrow-left",fN);const gN=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],vN=Cn("chart-column",gN);const _N=[["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}],["path",{d:"m9 10-5 5 5 5",key:"1kshq7"}]],yN=Cn("corner-down-left",_N);const bN=[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]],kN=Cn("gauge",bN);const wN=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],xN=Cn("globe",wN);const PN=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],SN=Cn("layout-grid",PN);const CN=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],TN=Cn("mail",CN);const EN=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],AN=Cn("menu",EN);const RN=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],LN=Cn("monitor",RN);const IN=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],DC=Cn("moon",IN);const DN=[["circle",{cx:"11",cy:"4",r:"2",key:"vol9p0"}],["circle",{cx:"18",cy:"8",r:"2",key:"17gozi"}],["circle",{cx:"20",cy:"16",r:"2",key:"1v9bxh"}],["path",{d:"M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z",key:"1ydw1z"}]],MN=Cn("paw-print",DN);const NN=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],ON=Cn("puzzle",NN);const jN=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],zN=Cn("refresh-cw",jN);const FN=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],UN=Cn("search",FN);const $N=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],BN=Cn("settings",$N);const VN=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],MC=Cn("sun",VN);const HN=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],WN=Cn("triangle-alert",HN);const GN=[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]],qN=Cn("trophy",GN);const KN=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],p0=Cn("x",KN);function YN({children:t,variant:e="primary",size:n="md",onClick:r,disabled:a=!1,className:s="",as:l="button",...c}){const d="inline-flex items-center justify-center font-medium transition-all duration-200 rounded-md focus:outline-none focus:ring-2 focus:ring-oai-blue/30 active:scale-[0.98] active:duration-100",h={primary:"bg-oai-black dark:bg-oai-white text-white dark:text-oai-black border border-transparent hover:bg-oai-gray-800 dark:hover:bg-oai-gray-200 active:bg-oai-gray-900 dark:active:bg-oai-gray-300 disabled:bg-oai-gray-300 dark:disabled:bg-oai-gray-700 disabled:text-oai-gray-500 dark:disabled:text-oai-gray-400 focus:ring-oai-brand/30 transition-colors duration-200",secondary:"bg-oai-white dark:bg-oai-gray-900 text-oai-black dark:text-oai-white border border-oai-gray-300 dark:border-oai-gray-700 hover:border-oai-brand hover:text-oai-brand active:bg-oai-gray-50 dark:active:bg-oai-gray-800 active:border-oai-brand-dark disabled:text-oai-gray-400 dark:disabled:text-oai-gray-500 disabled:border-oai-gray-200 dark:disabled:border-oai-gray-700 focus:ring-oai-brand/30 transition-colors duration-200",ghost:"bg-transparent text-oai-gray-600 dark:text-oai-gray-300 border border-transparent hover:text-oai-brand hover:bg-oai-brand-50/50 dark:hover:bg-oai-brand-950/30 active:bg-oai-brand-50 dark:active:bg-oai-brand-900/50 disabled:text-oai-gray-400 dark:disabled:text-oai-gray-500 focus:ring-oai-brand/30 transition-colors duration-200"},p={sm:"h-8 px-3 text-sm",md:"h-10 px-4 text-sm",lg:"h-12 px-6 text-base"},m=a?"cursor-not-allowed opacity-60":"cursor-pointer",v=`${d} ${h[e]} ${p[n]} ${m} ${s}`;return R.jsx(l,{className:v,onClick:r,disabled:a,...c,children:t})}class ZN extends Pl.Component{constructor(e){super(e),this.state={error:null},this.handleReload=this.handleReload.bind(this)}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e)}handleReload(){typeof window>"u"||window.location.reload()}render(){const{error:e}=this.state;if(!e)return this.props.children;const n=String(e?.message||e||""),r=n?xe("shared.error.prefix",{error:n}):xe("error.boundary.no_details");return R.jsx("div",{className:"flex min-h-screen items-center justify-center bg-oai-white p-6 font-oai text-oai-black antialiased dark:bg-oai-gray-950 dark:text-oai-white",children:R.jsxs("div",{className:"w-full max-w-lg rounded-xl border border-oai-gray-200 bg-white p-6 text-center shadow-sm dark:border-oai-gray-800 dark:bg-oai-gray-900",children:[R.jsx("div",{className:"mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-amber-50 text-amber-600 dark:bg-amber-950/30 dark:text-amber-300",children:R.jsx(WN,{className:"h-5 w-5","aria-hidden":!0})}),R.jsx("div",{className:"mt-4 text-xs font-medium uppercase text-oai-gray-500 dark:text-oai-gray-400",children:xe("error.boundary.title")}),R.jsx("h1",{className:"mt-2 text-xl font-semibold text-oai-black dark:text-white",children:xe("error.boundary.subtitle")}),R.jsx("p",{className:"mt-2 text-sm text-oai-gray-500 dark:text-oai-gray-400",children:xe("error.boundary.hint")}),R.jsx("div",{className:"mt-4 max-h-32 overflow-auto rounded-lg border border-oai-gray-200 bg-oai-gray-50 px-3 py-2 text-left text-xs leading-5 text-oai-gray-600 dark:border-oai-gray-800 dark:bg-oai-gray-950 dark:text-oai-gray-300",children:r}),R.jsxs(YN,{type:"button",size:"md",onClick:this.handleReload,className:"mt-5",children:[R.jsx(zN,{className:"mr-2 h-4 w-4","aria-hidden":!0}),xe("error.boundary.action.reload")]})]})})}}function ed(){const t=k.useContext(EC);if(t===null)throw new Error("useLocale must be used within a LocaleProvider");return t}const d_="tokentracker-theme",NC=k.createContext(null);function JN(){if(typeof window>"u")return"system";try{const t=localStorage.getItem(d_);if(t==="light"||t==="dark"||t==="system")return t}catch{}return"system"}function vh(){return typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function XN(t){if(typeof document>"u")return;const e=document.documentElement;t==="dark"?e.classList.add("dark"):e.classList.remove("dark")}function QN({children:t}){const[e,n]=k.useState(JN),[r,a]=k.useState(()=>{if(e!=="system")return e;if(Hr()){const h=dx();if(typeof h=="boolean")return h?"dark":"light"}return vh()}),s=k.useRef(e);k.useEffect(()=>{s.current=e},[e]),k.useEffect(()=>{XN(r)},[r]),k.useLayoutEffect(()=>{if(e==="system"){if(Hr()){const h=dx();a(typeof h=="boolean"?h?"dark":"light":vh()),KM();return}a(vh())}else a(e)},[e]),k.useEffect(()=>Hr()?qM(p=>{s.current==="system"&&a(p?"dark":"light")}):void 0,[]),k.useEffect(()=>{if(typeof window>"u"||e!=="system"||Hr())return;const h=window.matchMedia("(prefers-color-scheme: dark)"),p=m=>{const v=m.matches?"dark":"light";a(v)};return h.addEventListener?(h.addEventListener("change",p),()=>h.removeEventListener("change",p)):(h.addListener(p),()=>h.removeListener(p))},[e]),k.useEffect(()=>{const h=e==="system"&&!Hr()?vh():r;YM(h,e)},[r,e]);const l=k.useCallback(h=>{if(n(h),typeof window<"u")try{localStorage.setItem(d_,h)}catch{}},[]),c=k.useCallback(()=>{l(h=>{const p=h==="dark"?"light":"dark";if(typeof window<"u")try{localStorage.setItem(d_,p)}catch{}return p})},[]),d=k.useMemo(()=>({theme:e,setTheme:l,toggleTheme:c,resolvedTheme:r}),[e,l,c,r]);return R.jsx(NC.Provider,{value:d,children:t})}const OC=k.createContext({isOpen:!1,openLoginModal:()=>{},closeLoginModal:()=>{}});function eO({children:t}){const[e,n]=k.useState(!1),r=k.useCallback(()=>n(!0),[]),a=k.useCallback(()=>n(!1),[]);return R.jsx(OC.Provider,{value:{isOpen:e,openLoginModal:r,closeLoginModal:a},children:t})}function jC(){return k.useContext(OC)}const f0=k.createContext({});function m0(t){const e=k.useRef(null);return e.current===null&&(e.current=t()),e.current}const tO=typeof window<"u",g0=tO?k.useLayoutEffect:k.useEffect,Df=k.createContext(null);function v0(t,e){t.indexOf(e)===-1&&t.push(e)}function Np(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const Za=(t,e,n)=>n>e?e:n<t?t:n;let _0=()=>{};const hs={},zC=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t),FC=t=>typeof t=="object"&&t!==null,UC=t=>/^0[^.\s]+$/u.test(t);function $C(t){let e;return()=>(e===void 0&&(e=t()),e)}const Kr=t=>t,td=(...t)=>t.reduce((e,n)=>r=>n(e(r))),Lu=(t,e,n)=>{const r=e-t;return r?(n-t)/r:1};class y0{constructor(){this.subscriptions=[]}add(e){return v0(this.subscriptions,e),()=>Np(this.subscriptions,e)}notify(e,n,r){const a=this.subscriptions.length;if(a)if(a===1)this.subscriptions[0](e,n,r);else for(let s=0;s<a;s++){const l=this.subscriptions[s];l&&l(e,n,r)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const Ar=t=>t*1e3,Wr=t=>t/1e3,BC=(t,e)=>e?t*(1e3/e):0,VC=(t,e,n)=>(((1-3*n+3*e)*t+(3*n-6*e))*t+3*e)*t,nO=1e-7,rO=12;function aO(t,e,n,r,a){let s,l,c=0;do l=e+(n-e)/2,s=VC(l,r,a)-t,s>0?n=l:e=l;while(Math.abs(s)>nO&&++c<rO);return l}function nd(t,e,n,r){if(t===e&&n===r)return Kr;const a=s=>aO(s,0,1,t,n);return s=>s===0||s===1?s:VC(a(s),e,r)}const HC=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2,WC=t=>e=>1-t(1-e),GC=nd(.33,1.53,.69,.99),b0=WC(GC),qC=HC(b0),KC=t=>t>=1?1:(t*=2)<1?.5*b0(t):.5*(2-Math.pow(2,-10*(t-1))),k0=t=>1-Math.sin(Math.acos(t)),YC=WC(k0),ZC=HC(k0),iO=nd(.42,0,1,1),sO=nd(0,0,.58,1),JC=nd(.42,0,.58,1),oO=t=>Array.isArray(t)&&typeof t[0]!="number",XC=t=>Array.isArray(t)&&typeof t[0]=="number",lO={linear:Kr,easeIn:iO,easeInOut:JC,easeOut:sO,circIn:k0,circInOut:ZC,circOut:YC,backIn:b0,backInOut:qC,backOut:GC,anticipate:KC},cO=t=>typeof t=="string",vx=t=>{if(XC(t)){_0(t.length===4);const[e,n,r,a]=t;return nd(e,n,r,a)}else if(cO(t))return lO[t];return t},_h=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function uO(t){let e=new Set,n=new Set,r=!1,a=!1;const s=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function c(h){s.has(h)&&(d.schedule(h),t()),h(l)}const d={schedule:(h,p=!1,m=!1)=>{const y=m&&r?e:n;return p&&s.add(h),y.add(h),h},cancel:h=>{n.delete(h),s.delete(h)},process:h=>{if(l=h,r){a=!0;return}r=!0;const p=e;e=n,n=p,e.forEach(c),e.clear(),r=!1,a&&(a=!1,d.process(h))}};return d}const dO=40;function QC(t,e){let n=!1,r=!0;const a={delta:0,timestamp:0,isProcessing:!1},s=()=>n=!0,l=_h.reduce((T,E)=>(T[E]=uO(s),T),{}),{setup:c,read:d,resolveKeyframes:h,preUpdate:p,update:m,preRender:v,render:y,postRender:b}=l,x=()=>{const T=hs.useManualTiming,E=T?a.timestamp:performance.now();n=!1,T||(a.delta=r?1e3/60:Math.max(Math.min(E-a.timestamp,dO),1)),a.timestamp=E,a.isProcessing=!0,c.process(a),d.process(a),h.process(a),p.process(a),m.process(a),v.process(a),y.process(a),b.process(a),a.isProcessing=!1,n&&e&&(r=!1,t(x))},P=()=>{n=!0,r=!0,a.isProcessing||t(x)};return{schedule:_h.reduce((T,E)=>{const D=l[E];return T[E]=($,I=!1,S=!1)=>(n||P(),D.schedule($,I,S)),T},{}),cancel:T=>{for(let E=0;E<_h.length;E++)l[_h[E]].cancel(T)},state:a,steps:l}}const{schedule:Ot,cancel:ps,state:On,steps:Vg}=QC(typeof requestAnimationFrame<"u"?requestAnimationFrame:Kr,!0);let Qh;function hO(){Qh=void 0}const nr={now:()=>(Qh===void 0&&nr.set(On.isProcessing||hs.useManualTiming?On.timestamp:performance.now()),Qh),set:t=>{Qh=t,queueMicrotask(hO)}},eT=t=>e=>typeof e=="string"&&e.startsWith(t),tT=eT("--"),pO=eT("var(--"),w0=t=>pO(t)?fO.test(t.split("/*")[0].trim()):!1,fO=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function _x(t){return typeof t!="string"?!1:t.split("/*")[0].includes("var(--")}const Wl={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},Iu={...Wl,transform:t=>Za(0,1,t)},yh={...Wl,default:1},pu=t=>Math.round(t*1e5)/1e5,x0=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function mO(t){return t==null}const gO=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,P0=(t,e)=>n=>!!(typeof n=="string"&&gO.test(n)&&n.startsWith(t)||e&&!mO(n)&&Object.prototype.hasOwnProperty.call(n,e)),nT=(t,e,n)=>r=>{if(typeof r!="string")return r;const[a,s,l,c]=r.match(x0);return{[t]:parseFloat(a),[e]:parseFloat(s),[n]:parseFloat(l),alpha:c!==void 0?parseFloat(c):1}},vO=t=>Za(0,255,t),Hg={...Wl,transform:t=>Math.round(vO(t))},Xs={test:P0("rgb","red"),parse:nT("red","green","blue"),transform:({red:t,green:e,blue:n,alpha:r=1})=>"rgba("+Hg.transform(t)+", "+Hg.transform(e)+", "+Hg.transform(n)+", "+pu(Iu.transform(r))+")"};function _O(t){let e="",n="",r="",a="";return t.length>5?(e=t.substring(1,3),n=t.substring(3,5),r=t.substring(5,7),a=t.substring(7,9)):(e=t.substring(1,2),n=t.substring(2,3),r=t.substring(3,4),a=t.substring(4,5),e+=e,n+=n,r+=r,a+=a),{red:parseInt(e,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:a?parseInt(a,16)/255:1}}const h_={test:P0("#"),parse:_O,transform:Xs.transform},rd=t=>({test:e=>typeof e=="string"&&e.endsWith(t)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${t}`}),vi=rd("deg"),Va=rd("%"),De=rd("px"),yO=rd("vh"),bO=rd("vw"),yx={...Va,parse:t=>Va.parse(t)/100,transform:t=>Va.transform(t*100)},fl={test:P0("hsl","hue"),parse:nT("hue","saturation","lightness"),transform:({hue:t,saturation:e,lightness:n,alpha:r=1})=>"hsla("+Math.round(t)+", "+Va.transform(pu(e))+", "+Va.transform(pu(n))+", "+pu(Iu.transform(r))+")"},vn={test:t=>Xs.test(t)||h_.test(t)||fl.test(t),parse:t=>Xs.test(t)?Xs.parse(t):fl.test(t)?fl.parse(t):h_.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?Xs.transform(t):fl.transform(t),getAnimatableNone:t=>{const e=vn.parse(t);return e.alpha=0,vn.transform(e)}},kO=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function wO(t){return isNaN(t)&&typeof t=="string"&&(t.match(x0)?.length||0)+(t.match(kO)?.length||0)>0}const rT="number",aT="color",xO="var",PO="var(",bx="${}",SO=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Ll(t){const e=t.toString(),n=[],r={color:[],number:[],var:[]},a=[];let s=0;const c=e.replace(SO,d=>(vn.test(d)?(r.color.push(s),a.push(aT),n.push(vn.parse(d))):d.startsWith(PO)?(r.var.push(s),a.push(xO),n.push(d)):(r.number.push(s),a.push(rT),n.push(parseFloat(d))),++s,bx)).split(bx);return{values:n,split:c,indexes:r,types:a}}function CO(t){return Ll(t).values}function iT({split:t,types:e}){const n=t.length;return r=>{let a="";for(let s=0;s<n;s++)if(a+=t[s],r[s]!==void 0){const l=e[s];l===rT?a+=pu(r[s]):l===aT?a+=vn.transform(r[s]):a+=r[s]}return a}}function TO(t){return iT(Ll(t))}const EO=t=>typeof t=="number"?0:vn.test(t)?vn.getAnimatableNone(t):t,AO=(t,e)=>typeof t=="number"?e?.trim().endsWith("/")?t:0:EO(t);function RO(t){const e=Ll(t);return iT(e)(e.values.map((r,a)=>AO(r,e.split[a])))}const ba={test:wO,parse:CO,createTransformer:TO,getAnimatableNone:RO};function Wg(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function LO({hue:t,saturation:e,lightness:n,alpha:r}){t/=360,e/=100,n/=100;let a=0,s=0,l=0;if(!e)a=s=l=n;else{const c=n<.5?n*(1+e):n+e-n*e,d=2*n-c;a=Wg(d,c,t+1/3),s=Wg(d,c,t),l=Wg(d,c,t-1/3)}return{red:Math.round(a*255),green:Math.round(s*255),blue:Math.round(l*255),alpha:r}}function Op(t,e){return n=>n>0?e:t}const Nt=(t,e,n)=>t+(e-t)*n,Gg=(t,e,n)=>{const r=t*t,a=n*(e*e-r)+r;return a<0?0:Math.sqrt(a)},IO=[h_,Xs,fl],DO=t=>IO.find(e=>e.test(t));function kx(t){const e=DO(t);if(!e)return!1;let n=e.parse(t);return e===fl&&(n=LO(n)),n}const wx=(t,e)=>{const n=kx(t),r=kx(e);if(!n||!r)return Op(t,e);const a={...n};return s=>(a.red=Gg(n.red,r.red,s),a.green=Gg(n.green,r.green,s),a.blue=Gg(n.blue,r.blue,s),a.alpha=Nt(n.alpha,r.alpha,s),Xs.transform(a))},p_=new Set(["none","hidden"]);function MO(t,e){return p_.has(t)?n=>n<=0?t:e:n=>n>=1?e:t}function NO(t,e){return n=>Nt(t,e,n)}function S0(t){return typeof t=="number"?NO:typeof t=="string"?w0(t)?Op:vn.test(t)?wx:zO:Array.isArray(t)?sT:typeof t=="object"?vn.test(t)?wx:OO:Op}function sT(t,e){const n=[...t],r=n.length,a=t.map((s,l)=>S0(s)(s,e[l]));return s=>{for(let l=0;l<r;l++)n[l]=a[l](s);return n}}function OO(t,e){const n={...t,...e},r={};for(const a in n)t[a]!==void 0&&e[a]!==void 0&&(r[a]=S0(t[a])(t[a],e[a]));return a=>{for(const s in r)n[s]=r[s](a);return n}}function jO(t,e){const n=[],r={color:0,var:0,number:0};for(let a=0;a<e.values.length;a++){const s=e.types[a],l=t.indexes[s][r[s]],c=t.values[l]??0;n[a]=c,r[s]++}return n}const zO=(t,e)=>{const n=ba.createTransformer(e),r=Ll(t),a=Ll(e);return r.indexes.var.length===a.indexes.var.length&&r.indexes.color.length===a.indexes.color.length&&r.indexes.number.length>=a.indexes.number.length?p_.has(t)&&!a.values.length||p_.has(e)&&!r.values.length?MO(t,e):td(sT(jO(r,a),a.values),n):Op(t,e)};function oT(t,e,n){return typeof t=="number"&&typeof e=="number"&&typeof n=="number"?Nt(t,e,n):S0(t)(t,e)}const FO=t=>{const e=({timestamp:n})=>t(n);return{start:(n=!0)=>Ot.update(e,n),stop:()=>ps(e),now:()=>On.isProcessing?On.timestamp:nr.now()}},lT=(t,e,n=10)=>{let r="";const a=Math.max(Math.round(e/n),2);for(let s=0;s<a;s++)r+=Math.round(t(s/(a-1))*1e4)/1e4+", ";return`linear(${r.substring(0,r.length-2)})`},jp=2e4;function C0(t){let e=0;const n=50;let r=t.next(e);for(;!r.done&&e<jp;)e+=n,r=t.next(e);return e>=jp?1/0:e}function UO(t,e=100,n){const r=n({...t,keyframes:[0,e]}),a=Math.min(C0(r),jp);return{type:"keyframes",ease:s=>r.next(a*s).value/e,duration:Wr(a)}}const ln={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function f_(t,e){return t*Math.sqrt(1-e*e)}const $O=12;function BO(t,e,n){let r=n;for(let a=1;a<$O;a++)r=r-t(r)/e(r);return r}const qg=.001;function VO({duration:t=ln.duration,bounce:e=ln.bounce,velocity:n=ln.velocity,mass:r=ln.mass}){let a,s,l=1-e;l=Za(ln.minDamping,ln.maxDamping,l),t=Za(ln.minDuration,ln.maxDuration,Wr(t)),l<1?(a=h=>{const p=h*l,m=p*t,v=p-n,y=f_(h,l),b=Math.exp(-m);return qg-v/y*b},s=h=>{const m=h*l*t,v=m*n+n,y=Math.pow(l,2)*Math.pow(h,2)*t,b=Math.exp(-m),x=f_(Math.pow(h,2),l);return(-a(h)+qg>0?-1:1)*((v-y)*b)/x}):(a=h=>{const p=Math.exp(-h*t),m=(h-n)*t+1;return-qg+p*m},s=h=>{const p=Math.exp(-h*t),m=(n-h)*(t*t);return p*m});const c=5/t,d=BO(a,s,c);if(t=Ar(t),isNaN(d))return{stiffness:ln.stiffness,damping:ln.damping,duration:t};{const h=Math.pow(d,2)*r;return{stiffness:h,damping:l*2*Math.sqrt(r*h),duration:t}}}const HO=["duration","bounce"],WO=["stiffness","damping","mass"];function xx(t,e){return e.some(n=>t[n]!==void 0)}function GO(t){let e={velocity:ln.velocity,stiffness:ln.stiffness,damping:ln.damping,mass:ln.mass,isResolvedFromDuration:!1,...t};if(!xx(t,WO)&&xx(t,HO))if(e.velocity=0,t.visualDuration){const n=t.visualDuration,r=2*Math.PI/(n*1.2),a=r*r,s=2*Za(.05,1,1-(t.bounce||0))*Math.sqrt(a);e={...e,mass:ln.mass,stiffness:a,damping:s}}else{const n=VO({...t,velocity:0});e={...e,...n,mass:ln.mass},e.isResolvedFromDuration=!0}return e}function zp(t=ln.visualDuration,e=ln.bounce){const n=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:e}:t;let{restSpeed:r,restDelta:a}=n;const s=n.keyframes[0],l=n.keyframes[n.keyframes.length-1],c={done:!1,value:s},{stiffness:d,damping:h,mass:p,duration:m,velocity:v,isResolvedFromDuration:y}=GO({...n,velocity:-Wr(n.velocity||0)}),b=v||0,x=h/(2*Math.sqrt(d*p)),P=l-s,A=Wr(Math.sqrt(d/p)),L=Math.abs(P)<5;r||(r=L?ln.restSpeed.granular:ln.restSpeed.default),a||(a=L?ln.restDelta.granular:ln.restDelta.default);let T,E,D,$,I,S;if(x<1)D=f_(A,x),$=(b+x*A*P)/D,T=F=>{const Z=Math.exp(-x*A*F);return l-Z*($*Math.sin(D*F)+P*Math.cos(D*F))},I=x*A*$+P*D,S=x*A*P-$*D,E=F=>Math.exp(-x*A*F)*(I*Math.sin(D*F)+S*Math.cos(D*F));else if(x===1){T=Z=>l-Math.exp(-A*Z)*(P+(b+A*P)*Z);const F=b+A*P;E=Z=>Math.exp(-A*Z)*(A*F*Z-b)}else{const F=A*Math.sqrt(x*x-1);T=re=>{const ae=Math.exp(-x*A*re),te=Math.min(F*re,300);return l-ae*((b+x*A*P)*Math.sinh(te)+F*P*Math.cosh(te))/F};const Z=(b+x*A*P)/F,ee=x*A*Z-P*F,ue=x*A*P-Z*F;E=re=>{const ae=Math.exp(-x*A*re),te=Math.min(F*re,300);return ae*(ee*Math.sinh(te)+ue*Math.cosh(te))}}const j={calculatedDuration:y&&m||null,velocity:F=>Ar(E(F)),next:F=>{if(!y&&x<1){const ee=Math.exp(-x*A*F),ue=Math.sin(D*F),re=Math.cos(D*F),ae=l-ee*($*ue+P*re),te=Ar(ee*(I*ue+S*re));return c.done=Math.abs(te)<=r&&Math.abs(l-ae)<=a,c.value=c.done?l:ae,c}const Z=T(F);if(y)c.done=F>=m;else{const ee=Ar(E(F));c.done=Math.abs(ee)<=r&&Math.abs(l-Z)<=a}return c.value=c.done?l:Z,c},toString:()=>{const F=Math.min(C0(j),jp),Z=lT(ee=>j.next(F*ee).value,F,30);return F+"ms "+Z},toTransition:()=>{}};return j}zp.applyToOptions=t=>{const e=UO(t,100,zp);return t.ease=e.ease,t.duration=Ar(e.duration),t.type="keyframes",t};const qO=5;function cT(t,e,n){const r=Math.max(e-qO,0);return BC(n-t(r),e-r)}function m_({keyframes:t,velocity:e=0,power:n=.8,timeConstant:r=325,bounceDamping:a=10,bounceStiffness:s=500,modifyTarget:l,min:c,max:d,restDelta:h=.5,restSpeed:p}){const m=t[0],v={done:!1,value:m},y=S=>c!==void 0&&S<c||d!==void 0&&S>d,b=S=>c===void 0?d:d===void 0||Math.abs(c-S)<Math.abs(d-S)?c:d;let x=n*e;const P=m+x,A=l===void 0?P:l(P);A!==P&&(x=A-m);const L=S=>-x*Math.exp(-S/r),T=S=>A+L(S),E=S=>{const j=L(S),F=T(S);v.done=Math.abs(j)<=h,v.value=v.done?A:F};let D,$;const I=S=>{y(v.value)&&(D=S,$=zp({keyframes:[v.value,b(v.value)],velocity:cT(T,S,v.value),damping:a,stiffness:s,restDelta:h,restSpeed:p}))};return I(0),{calculatedDuration:null,next:S=>{let j=!1;return!$&&D===void 0&&(j=!0,E(S),I(S)),D!==void 0&&S>=D?$.next(S-D):(!j&&E(S),v)}}}function KO(t,e,n){const r=[],a=n||hs.mix||oT,s=t.length-1;for(let l=0;l<s;l++){let c=a(t[l],t[l+1]);if(e){const d=Array.isArray(e)?e[l]||Kr:e;c=td(d,c)}r.push(c)}return r}function YO(t,e,{clamp:n=!0,ease:r,mixer:a}={}){const s=t.length;if(_0(s===e.length),s===1)return()=>e[0];if(s===2&&e[0]===e[1])return()=>e[1];const l=t[0]===t[1];t[0]>t[s-1]&&(t=[...t].reverse(),e=[...e].reverse());const c=KO(e,r,a),d=c.length,h=p=>{if(l&&p<t[0])return e[0];let m=0;if(d>1)for(;m<t.length-2&&!(p<t[m+1]);m++);const v=Lu(t[m],t[m+1],p);return c[m](v)};return n?p=>h(Za(t[0],t[s-1],p)):h}function ZO(t,e){const n=t[t.length-1];for(let r=1;r<=e;r++){const a=Lu(0,e,r);t.push(Nt(n,1,a))}}function JO(t){const e=[0];return ZO(e,t.length-1),e}function XO(t,e){return t.map(n=>n*e)}function QO(t,e){return t.map(()=>e||JC).splice(0,t.length-1)}function fu({duration:t=300,keyframes:e,times:n,ease:r="easeInOut"}){const a=oO(r)?r.map(vx):vx(r),s={done:!1,value:e[0]},l=XO(n&&n.length===e.length?n:JO(e),t),c=YO(l,e,{ease:Array.isArray(a)?a:QO(e,a)});return{calculatedDuration:t,next:d=>(s.value=c(d),s.done=d>=t,s)}}const ej=t=>t!==null;function Mf(t,{repeat:e,repeatType:n="loop"},r,a=1){const s=t.filter(ej),c=a<0||e&&n!=="loop"&&e%2===1?0:s.length-1;return!c||r===void 0?s[c]:r}const tj={decay:m_,inertia:m_,tween:fu,keyframes:fu,spring:zp};function uT(t){typeof t.type=="string"&&(t.type=tj[t.type])}class T0{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(e=>{this.resolve=e})}notifyFinished(){this.resolve()}then(e,n){return this.finished.then(e,n)}}const nj=t=>t/100;class Fp extends T0{constructor(e){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{const{motionValue:n}=this.options;n&&n.updatedAt!==nr.now()&&this.tick(nr.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=e,this.initAnimation(),this.play(),e.autoplay===!1&&this.pause()}initAnimation(){const{options:e}=this;uT(e);const{type:n=fu,repeat:r=0,repeatDelay:a=0,repeatType:s,velocity:l=0}=e;let{keyframes:c}=e;const d=n||fu;d!==fu&&typeof c[0]!="number"&&(this.mixKeyframes=td(nj,oT(c[0],c[1])),c=[0,100]);const h=d({...e,keyframes:c});s==="mirror"&&(this.mirroredGenerator=d({...e,keyframes:[...c].reverse(),velocity:-l})),h.calculatedDuration===null&&(h.calculatedDuration=C0(h));const{calculatedDuration:p}=h;this.calculatedDuration=p,this.resolvedDuration=p+a,this.totalDuration=this.resolvedDuration*(r+1)-a,this.generator=h}updateTime(e){const n=Math.round(e-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(e,n=!1){const{generator:r,totalDuration:a,mixKeyframes:s,mirroredGenerator:l,resolvedDuration:c,calculatedDuration:d}=this;if(this.startTime===null)return r.next(0);const{delay:h=0,keyframes:p,repeat:m,repeatType:v,repeatDelay:y,type:b,onUpdate:x,finalKeyframe:P}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,e):this.speed<0&&(this.startTime=Math.min(e-a/this.speed,this.startTime)),n?this.currentTime=e:this.updateTime(e);const A=this.currentTime-h*(this.playbackSpeed>=0?1:-1),L=this.playbackSpeed>=0?A<0:A>a;this.currentTime=Math.max(A,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=a);let T=this.currentTime,E=r;if(m){const S=Math.min(this.currentTime,a)/c;let j=Math.floor(S),F=S%1;!F&&S>=1&&(F=1),F===1&&j--,j=Math.min(j,m+1),j%2&&(v==="reverse"?(F=1-F,y&&(F-=y/c)):v==="mirror"&&(E=l)),T=Za(0,1,F)*c}let D;L?(this.delayState.value=p[0],D=this.delayState):D=E.next(T),s&&!L&&(D.value=s(D.value));let{done:$}=D;!L&&d!==null&&($=this.playbackSpeed>=0?this.currentTime>=a:this.currentTime<=0);const I=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&$);return I&&b!==m_&&(D.value=Mf(p,this.options,P,this.speed)),x&&x(D.value),I&&this.finish(),D}then(e,n){return this.finished.then(e,n)}get duration(){return Wr(this.calculatedDuration)}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+Wr(e)}get time(){return Wr(this.currentTime)}set time(e){e=Ar(e),this.currentTime=e,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=e:this.driver&&(this.startTime=this.driver.now()-e/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=e,this.tick(e))}getGeneratorVelocity(){const e=this.currentTime;if(e<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(e);const n=this.generator.next(e).value;return cT(r=>this.generator.next(r).value,e,n)}get speed(){return this.playbackSpeed}set speed(e){const n=this.playbackSpeed!==e;n&&this.driver&&this.updateTime(nr.now()),this.playbackSpeed=e,n&&this.driver&&(this.time=Wr(this.currentTime))}play(){if(this.isStopped)return;const{driver:e=FO,startTime:n}=this.options;this.driver||(this.driver=e(a=>this.tick(a))),this.options.onPlay?.();const r=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=r):this.holdTime!==null?this.startTime=r-this.holdTime:this.startTime||(this.startTime=n??r),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(nr.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(e){return this.startTime=0,this.tick(e,!0)}attachTimeline(e){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),e.observe(this)}}function rj(t){for(let e=1;e<t.length;e++)t[e]??(t[e]=t[e-1])}const Qs=t=>t*180/Math.PI,g_=t=>{const e=Qs(Math.atan2(t[1],t[0]));return v_(e)},aj={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:t=>(Math.abs(t[0])+Math.abs(t[3]))/2,rotate:g_,rotateZ:g_,skewX:t=>Qs(Math.atan(t[1])),skewY:t=>Qs(Math.atan(t[2])),skew:t=>(Math.abs(t[1])+Math.abs(t[2]))/2},v_=t=>(t=t%360,t<0&&(t+=360),t),Px=g_,Sx=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]),Cx=t=>Math.sqrt(t[4]*t[4]+t[5]*t[5]),ij={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:Sx,scaleY:Cx,scale:t=>(Sx(t)+Cx(t))/2,rotateX:t=>v_(Qs(Math.atan2(t[6],t[5]))),rotateY:t=>v_(Qs(Math.atan2(-t[2],t[0]))),rotateZ:Px,rotate:Px,skewX:t=>Qs(Math.atan(t[4])),skewY:t=>Qs(Math.atan(t[1])),skew:t=>(Math.abs(t[1])+Math.abs(t[4]))/2};function __(t){return t.includes("scale")?1:0}function y_(t,e){if(!t||t==="none")return __(e);const n=t.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let r,a;if(n)r=ij,a=n;else{const c=t.match(/^matrix\(([-\d.e\s,]+)\)$/u);r=aj,a=c}if(!a)return __(e);const s=r[e],l=a[1].split(",").map(oj);return typeof s=="function"?s(l):l[s]}const sj=(t,e)=>{const{transform:n="none"}=getComputedStyle(t);return y_(n,e)};function oj(t){return parseFloat(t.trim())}const Gl=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ql=new Set([...Gl,"pathRotation"]),Tx=t=>t===Wl||t===De,lj=new Set(["x","y","z"]),cj=Gl.filter(t=>!lj.has(t));function uj(t){const e=[];return cj.forEach(n=>{const r=t.getValue(n);r!==void 0&&(e.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),e}const ls={width:({x:t},{paddingLeft:e="0",paddingRight:n="0",boxSizing:r})=>{const a=t.max-t.min;return r==="border-box"?a:a-parseFloat(e)-parseFloat(n)},height:({y:t},{paddingTop:e="0",paddingBottom:n="0",boxSizing:r})=>{const a=t.max-t.min;return r==="border-box"?a:a-parseFloat(e)-parseFloat(n)},top:(t,{top:e})=>parseFloat(e),left:(t,{left:e})=>parseFloat(e),bottom:({y:t},{top:e})=>parseFloat(e)+(t.max-t.min),right:({x:t},{left:e})=>parseFloat(e)+(t.max-t.min),x:(t,{transform:e})=>y_(e,"x"),y:(t,{transform:e})=>y_(e,"y")};ls.translateX=ls.x;ls.translateY=ls.y;const ao=new Set;let b_=!1,k_=!1,w_=!1;function dT(){if(k_){const t=Array.from(ao).filter(r=>r.needsMeasurement),e=new Set(t.map(r=>r.element)),n=new Map;e.forEach(r=>{const a=uj(r);a.length&&(n.set(r,a),r.render())}),t.forEach(r=>r.measureInitialState()),e.forEach(r=>{r.render();const a=n.get(r);a&&a.forEach(([s,l])=>{r.getValue(s)?.set(l)})}),t.forEach(r=>r.measureEndState()),t.forEach(r=>{r.suspendedScrollY!==void 0&&window.scrollTo(0,r.suspendedScrollY)})}k_=!1,b_=!1,ao.forEach(t=>t.complete(w_)),ao.clear()}function hT(){ao.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(k_=!0)})}function dj(){w_=!0,hT(),dT(),w_=!1}class E0{constructor(e,n,r,a,s,l=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...e],this.onComplete=n,this.name=r,this.motionValue=a,this.element=s,this.isAsync=l}scheduleResolve(){this.state="scheduled",this.isAsync?(ao.add(this),b_||(b_=!0,Ot.read(hT),Ot.resolveKeyframes(dT))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:e,name:n,element:r,motionValue:a}=this;if(e[0]===null){const s=a?.get(),l=e[e.length-1];if(s!==void 0)e[0]=s;else if(r&&n){const c=r.readValue(n,l);c!=null&&(e[0]=c)}e[0]===void 0&&(e[0]=l),a&&s===void 0&&a.set(e[0])}rj(e)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(e=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,e),ao.delete(this)}cancel(){this.state==="scheduled"&&(ao.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const hj=t=>t.startsWith("--");function pT(t,e,n){hj(e)?t.style.setProperty(e,n):t.style[e]=n}const pj={};function fT(t,e){const n=$C(t);return()=>pj[e]??n()}const fj=fT(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),mT=fT(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),tu=([t,e,n,r])=>`cubic-bezier(${t}, ${e}, ${n}, ${r})`,Ex={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:tu([0,.65,.55,1]),circOut:tu([.55,0,1,.45]),backIn:tu([.31,.01,.66,-.59]),backOut:tu([.33,1.53,.69,.99])};function gT(t,e){if(t)return typeof t=="function"?mT()?lT(t,e):"ease-out":XC(t)?tu(t):Array.isArray(t)?t.map(n=>gT(n,e)||Ex.easeOut):Ex[t]}function mj(t,e,n,{delay:r=0,duration:a=300,repeat:s=0,repeatType:l="loop",ease:c="easeOut",times:d}={},h=void 0){const p={[e]:n};d&&(p.offset=d);const m=gT(c,a);Array.isArray(m)&&(p.easing=m);const v={delay:r,duration:a,easing:Array.isArray(m)?"linear":m,fill:"both",iterations:s+1,direction:l==="reverse"?"alternate":"normal"};return h&&(v.pseudoElement=h),t.animate(p,v)}function vT(t){return typeof t=="function"&&"applyToOptions"in t}function gj({type:t,...e}){return vT(t)&&mT()?t.applyToOptions(e):(e.duration??(e.duration=300),e.ease??(e.ease="easeOut"),e)}class _T extends T0{constructor(e){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!e)return;const{element:n,name:r,keyframes:a,pseudoElement:s,allowFlatten:l=!1,finalKeyframe:c,onComplete:d}=e;this.isPseudoElement=!!s,this.allowFlatten=l,this.options=e,_0(typeof e.type!="string");const h=gj(e);this.animation=mj(n,r,a,h,s),h.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!s){const p=Mf(a,this.options,c,this.speed);this.updateMotionValue&&this.updateMotionValue(p),pT(n,r,p),this.animation.cancel()}d?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:e}=this;e==="idle"||e==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const e=this.options?.element;!this.isPseudoElement&&e?.isConnected&&this.animation.commitStyles?.()}get duration(){const e=this.animation.effect?.getComputedTiming?.().duration||0;return Wr(Number(e))}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+Wr(e)}get time(){return Wr(Number(this.animation.currentTime)||0)}set time(e){const n=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Ar(e),n&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(e){e<0&&(this.finishedTime=null),this.animation.playbackRate=e}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(e){this.manualStartTime=this.animation.startTime=e}attachTimeline({timeline:e,rangeStart:n,rangeEnd:r,observe:a}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,e&&fj()?(this.animation.timeline=e,n&&(this.animation.rangeStart=n),r&&(this.animation.rangeEnd=r),Kr):a(this)}}const yT={anticipate:KC,backInOut:qC,circInOut:ZC};function vj(t){return t in yT}function _j(t){typeof t.ease=="string"&&vj(t.ease)&&(t.ease=yT[t.ease])}const Kg=10;class yj extends _T{constructor(e){_j(e),uT(e),super(e),e.startTime!==void 0&&e.autoplay!==!1&&(this.startTime=e.startTime),this.options=e}updateMotionValue(e){const{motionValue:n,onUpdate:r,onComplete:a,element:s,...l}=this.options;if(!n)return;if(e!==void 0){n.set(e);return}const c=new Fp({...l,autoplay:!1}),d=Math.max(Kg,nr.now()-this.startTime),h=Za(0,Kg,d-Kg),p=c.sample(d).value,{name:m}=this.options;s&&m&&pT(s,m,p),n.setWithVelocity(c.sample(Math.max(0,d-h)).value,p,h),c.stop()}}const Ax=(t,e)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(ba.test(t)||t==="0")&&!t.startsWith("url("));function bj(t){const e=t[0];if(t.length===1)return!0;for(let n=0;n<t.length;n++)if(t[n]!==e)return!0}function kj(t,e,n,r){const a=t[0];if(a===null)return!1;if(e==="display"||e==="visibility")return!0;const s=t[t.length-1],l=Ax(a,e),c=Ax(s,e);return!l||!c?!1:bj(t)||(n==="spring"||vT(n))&&r}function x_(t){t.duration=0,t.type="keyframes"}const bT=new Set(["opacity","clipPath","filter","transform"]),wj=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function xj(t){for(let e=0;e<t.length;e++)if(typeof t[e]=="string"&&wj.test(t[e]))return!0;return!1}const Pj=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),Sj=$C(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function Cj(t){const{motionValue:e,name:n,repeatDelay:r,repeatType:a,damping:s,type:l,keyframes:c}=t;if(!(e?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:h,transformTemplate:p}=e.owner.getProps();return Sj()&&n&&(bT.has(n)||Pj.has(n)&&xj(c))&&(n!=="transform"||!p)&&!h&&!r&&a!=="mirror"&&s!==0&&l!=="inertia"}const Tj=40;class Ej extends T0{constructor({autoplay:e=!0,delay:n=0,type:r="keyframes",repeat:a=0,repeatDelay:s=0,repeatType:l="loop",keyframes:c,name:d,motionValue:h,element:p,...m}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=nr.now();const v={autoplay:e,delay:n,type:r,repeat:a,repeatDelay:s,repeatType:l,name:d,motionValue:h,element:p,...m},y=p?.KeyframeResolver||E0;this.keyframeResolver=new y(c,(b,x,P)=>this.onKeyframesResolved(b,x,v,!P),d,h,p),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(e,n,r,a){this.keyframeResolver=void 0;const{name:s,type:l,velocity:c,delay:d,isHandoff:h,onUpdate:p}=r;this.resolvedAt=nr.now();let m=!0;kj(e,s,l,c)||(m=!1,(hs.instantAnimations||!d)&&p?.(Mf(e,r,n)),e[0]=e[e.length-1],x_(r),r.repeat=0);const y={startTime:a?this.resolvedAt?this.resolvedAt-this.createdAt>Tj?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...r,keyframes:e},b=m&&!h&&Cj(y),x=y.motionValue?.owner?.current;let P;if(b)try{P=new yj({...y,element:x})}catch{P=new Fp(y)}else P=new Fp(y);P.finished.then(()=>{this.notifyFinished()}).catch(Kr),this.pendingTimeline&&(this.stopTimeline=P.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=P}get finished(){return this._animation?this.animation.finished:this._finished}then(e,n){return this.finished.finally(e).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),dj()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(e){this.animation.time=e}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(e){this.animation.speed=e}get startTime(){return this.animation.startTime}attachTimeline(e){return this._animation?this.stopTimeline=this.animation.attachTimeline(e):this.pendingTimeline=e,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function kT(t,e,n,r=0,a=1){const s=Array.from(t).sort((h,p)=>h.sortNodePosition(p)).indexOf(e),l=t.size,c=(l-1)*r;return typeof n=="function"?n(s,l):a===1?s*r:c-s*r}const Rx=30,Aj=t=>!isNaN(parseFloat(t)),Lx={current:void 0};class Rj{constructor(e,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=r=>{const a=nr.now();if(this.updatedAt!==a&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(r),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const s of this.dependents)s.dirty()},this.hasAnimated=!1,this.setCurrent(e),this.owner=n.owner}setCurrent(e){this.current=e,this.updatedAt=nr.now(),this.canTrackVelocity===null&&e!==void 0&&(this.canTrackVelocity=Aj(this.current))}setPrevFrameValue(e=this.current){this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt}onChange(e){return this.on("change",e)}on(e,n){this.events[e]||(this.events[e]=new y0);const r=this.events[e].add(n);return e==="change"?()=>{r(),Ot.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const e in this.events)this.events[e].clear()}attach(e,n){this.passiveEffect=e,this.stopPassiveEffect=n}set(e){this.passiveEffect?this.passiveEffect(e,this.updateAndNotify):this.updateAndNotify(e)}setWithVelocity(e,n,r){this.set(n),this.prev=void 0,this.prevFrameValue=e,this.prevUpdatedAt=this.updatedAt-r}jump(e,n=!0){this.updateAndNotify(e),this.prev=e,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(e){this.dependents||(this.dependents=new Set),this.dependents.add(e)}removeDependent(e){this.dependents&&this.dependents.delete(e)}get(){return Lx.current&&Lx.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){const e=nr.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||e-this.updatedAt>Rx)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,Rx);return BC(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(e){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=e(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Il(t,e){return new Rj(t,e)}function wT(t,e){if(t?.inherit&&e){const{inherit:n,...r}=t;return{...e,...r}}return t}function A0(t,e){const n=t?.[e]??t?.default??t;return n!==t?wT(n,t):n}const Lj={type:"spring",stiffness:500,damping:25,restSpeed:10},Ij=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),Dj={type:"keyframes",duration:.8},Mj={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Nj=(t,{keyframes:e})=>e.length>2?Dj:ql.has(t)?t.startsWith("scale")?Ij(e[1]):Lj:Mj,Oj=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function jj(t){for(const e in t)if(!Oj.has(e))return!0;return!1}const R0=(t,e,n,r={},a,s)=>l=>{const c=A0(r,t)||{},d=c.delay||r.delay||0;let{elapsed:h=0}=r;h=h-Ar(d);const p={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:e.getVelocity(),...c,delay:-h,onUpdate:v=>{e.set(v),c.onUpdate&&c.onUpdate(v)},onComplete:()=>{l(),c.onComplete&&c.onComplete()},name:t,motionValue:e,element:s?void 0:a};jj(c)||Object.assign(p,Nj(t,p)),p.duration&&(p.duration=Ar(p.duration)),p.repeatDelay&&(p.repeatDelay=Ar(p.repeatDelay)),p.from!==void 0&&(p.keyframes[0]=p.from);let m=!1;if((p.type===!1||p.duration===0&&!p.repeatDelay)&&(x_(p),p.delay===0&&(m=!0)),(hs.instantAnimations||hs.skipAnimations||a?.shouldSkipAnimations||c.skipAnimations)&&(m=!0,x_(p),p.delay=0),p.allowFlatten=!c.type&&!c.ease,m&&!s&&e.get()!==void 0){const v=Mf(p.keyframes,c);if(v!==void 0){Ot.update(()=>{p.onUpdate(v),p.onComplete()});return}}return c.isSync?new Fp(p):new Ej(p)},zj=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function Fj(t){const e=zj.exec(t);if(!e)return[,];const[,n,r,a]=e;return[`--${n??r}`,a]}function xT(t,e,n=1){const[r,a]=Fj(t);if(!r)return;const s=window.getComputedStyle(e).getPropertyValue(r);if(s){const l=s.trim();return zC(l)?parseFloat(l):l}return w0(a)?xT(a,e,n+1):a}function Ix(t){const e=[{},{}];return t?.values.forEach((n,r)=>{e[0][r]=n.get(),e[1][r]=n.getVelocity()}),e}function L0(t,e,n,r){if(typeof e=="function"){const[a,s]=Ix(r);e=e(n!==void 0?n:t.custom,a,s)}if(typeof e=="string"&&(e=t.variants&&t.variants[e]),typeof e=="function"){const[a,s]=Ix(r);e=e(n!==void 0?n:t.custom,a,s)}return e}function io(t,e,n){const r=t.getProps();return L0(r,e,n!==void 0?n:r.custom,t)}const PT=new Set(["width","height","top","left","right","bottom",...Gl]),P_=t=>Array.isArray(t);function Uj(t,e,n){t.hasValue(e)?t.getValue(e).set(n):t.addValue(e,Il(n))}function $j(t){return P_(t)?t[t.length-1]||0:t}function Bj(t,e){const n=io(t,e);let{transitionEnd:r={},transition:a={},...s}=n||{};s={...s,...r};for(const l in s){const c=$j(s[l]);Uj(t,l,c)}}const zn=t=>!!(t&&t.getVelocity);function Vj(t){return!!(zn(t)&&t.add)}function S_(t,e){const n=t.getValue("willChange");if(Vj(n))return n.add(e);if(!n&&hs.WillChange){const r=new hs.WillChange("auto");t.addValue("willChange",r),r.add(e)}}function I0(t){return t.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`)}const Hj="framerAppearId",ST="data-"+I0(Hj);function CT(t){return t.props[ST]}function Wj({protectedKeys:t,needsAnimating:e},n){const r=t.hasOwnProperty(n)&&e[n]!==!0;return e[n]=!1,r}function TT(t,e,{delay:n=0,transitionOverride:r,type:a}={}){let{transition:s,transitionEnd:l,...c}=e;const d=t.getDefaultTransition();s=s?wT(s,d):d;const h=s?.reduceMotion,p=s?.skipAnimations;r&&(s=r);const m=[],v=a&&t.animationState&&t.animationState.getState()[a],y=s?.path;y&&y.animateVisualElement(t,c,s,n,m);for(const b in c){const x=t.getValue(b,t.latestValues[b]??null),P=c[b];if(P===void 0||v&&Wj(v,b))continue;const A={delay:n,...A0(s||{},b)};p&&(A.skipAnimations=!0);const L=x.get();if(L!==void 0&&!x.isAnimating()&&!Array.isArray(P)&&P===L&&!A.velocity){Ot.update(()=>x.set(P));continue}let T=!1;if(window.MotionHandoffAnimation){const $=CT(t);if($){const I=window.MotionHandoffAnimation($,b,Ot);I!==null&&(A.startTime=I,T=!0)}}S_(t,b);const E=h??t.shouldReduceMotion;x.start(R0(b,x,P,E&&PT.has(b)?{type:!1}:A,t,T));const D=x.animation;D&&m.push(D)}if(l){const b=()=>Ot.update(()=>{l&&Bj(t,l)});m.length?Promise.all(m).then(b):b()}return m}function C_(t,e,n={}){const r=io(t,e,n.type==="exit"?t.presenceContext?.custom:void 0);let{transition:a=t.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(a=n.transitionOverride);const s=r?()=>Promise.all(TT(t,r,n)):()=>Promise.resolve(),l=t.variantChildren&&t.variantChildren.size?(d=0)=>{const{delayChildren:h=0,staggerChildren:p,staggerDirection:m}=a;return Gj(t,e,d,h,p,m,n)}:()=>Promise.resolve(),{when:c}=a;if(c){const[d,h]=c==="beforeChildren"?[s,l]:[l,s];return d().then(()=>h())}else return Promise.all([s(),l(n.delay)])}function Gj(t,e,n=0,r=0,a=0,s=1,l){const c=[];for(const d of t.variantChildren)d.notify("AnimationStart",e),c.push(C_(d,e,{...l,delay:n+(typeof r=="function"?0:r)+kT(t.variantChildren,d,r,a,s)}).then(()=>d.notify("AnimationComplete",e)));return Promise.all(c)}function qj(t,e,n={}){t.notify("AnimationStart",e);let r;if(Array.isArray(e)){const a=e.map(s=>C_(t,s,n));r=Promise.all(a)}else if(typeof e=="string")r=C_(t,e,n);else{const a=typeof e=="function"?io(t,e,n.custom):e;r=Promise.all(TT(t,a,n))}return r.then(()=>{t.notify("AnimationComplete",e)})}const Kj={test:t=>t==="auto",parse:t=>t},ET=t=>e=>e.test(t),AT=[Wl,De,Va,vi,bO,yO,Kj],Dx=t=>AT.find(ET(t));function Yj(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||UC(t):!0}const Zj=new Set(["brightness","contrast","saturate","opacity"]);function Jj(t){const[e,n]=t.slice(0,-1).split("(");if(e==="drop-shadow")return t;const[r]=n.match(x0)||[];if(!r)return t;const a=n.replace(r,"");let s=Zj.has(e)?1:0;return r!==n&&(s*=100),e+"("+s+a+")"}const Xj=/\b([a-z-]*)\(.*?\)/gu,T_={...ba,getAnimatableNone:t=>{const e=t.match(Xj);return e?e.map(Jj).join(" "):t}},E_={...ba,getAnimatableNone:t=>{const e=ba.parse(t);return ba.createTransformer(t)(e.map(r=>typeof r=="number"?0:typeof r=="object"?{...r,alpha:1}:r))}},Mx={...Wl,transform:Math.round},Qj={rotate:vi,pathRotation:vi,rotateX:vi,rotateY:vi,rotateZ:vi,scale:yh,scaleX:yh,scaleY:yh,scaleZ:yh,skew:vi,skewX:vi,skewY:vi,distance:De,translateX:De,translateY:De,translateZ:De,x:De,y:De,z:De,perspective:De,transformPerspective:De,opacity:Iu,originX:yx,originY:yx,originZ:De},Up={borderWidth:De,borderTopWidth:De,borderRightWidth:De,borderBottomWidth:De,borderLeftWidth:De,borderRadius:De,borderTopLeftRadius:De,borderTopRightRadius:De,borderBottomRightRadius:De,borderBottomLeftRadius:De,width:De,maxWidth:De,height:De,maxHeight:De,top:De,right:De,bottom:De,left:De,inset:De,insetBlock:De,insetBlockStart:De,insetBlockEnd:De,insetInline:De,insetInlineStart:De,insetInlineEnd:De,padding:De,paddingTop:De,paddingRight:De,paddingBottom:De,paddingLeft:De,paddingBlock:De,paddingBlockStart:De,paddingBlockEnd:De,paddingInline:De,paddingInlineStart:De,paddingInlineEnd:De,margin:De,marginTop:De,marginRight:De,marginBottom:De,marginLeft:De,marginBlock:De,marginBlockStart:De,marginBlockEnd:De,marginInline:De,marginInlineStart:De,marginInlineEnd:De,fontSize:De,backgroundPositionX:De,backgroundPositionY:De,...Qj,zIndex:Mx,fillOpacity:Iu,strokeOpacity:Iu,numOctaves:Mx},ez={...Up,color:vn,backgroundColor:vn,outlineColor:vn,fill:vn,stroke:vn,borderColor:vn,borderTopColor:vn,borderRightColor:vn,borderBottomColor:vn,borderLeftColor:vn,filter:T_,WebkitFilter:T_,mask:E_,WebkitMask:E_},RT=t=>ez[t],tz=new Set([T_,E_]);function LT(t,e){let n=RT(t);return tz.has(n)||(n=ba),n.getAnimatableNone?n.getAnimatableNone(e):void 0}const nz=new Set(["auto","none","0"]);function rz(t,e,n){let r=0,a;for(;r<t.length&&!a;){const s=t[r];typeof s=="string"&&!nz.has(s)&&Ll(s).values.length&&(a=t[r]),r++}if(a&&n)for(const s of e)t[s]=LT(n,a)}class az extends E0{constructor(e,n,r,a,s){super(e,n,r,a,s,!0)}readKeyframes(){const{unresolvedKeyframes:e,element:n,name:r}=this;if(!n||!n.current)return;super.readKeyframes();for(let p=0;p<e.length;p++){let m=e[p];if(typeof m=="string"&&(m=m.trim(),w0(m))){const v=xT(m,n.current);v!==void 0&&(e[p]=v),p===e.length-1&&(this.finalKeyframe=m)}}if(this.resolveNoneKeyframes(),!PT.has(r)||e.length!==2)return;const[a,s]=e,l=Dx(a),c=Dx(s),d=_x(a),h=_x(s);if(d!==h&&ls[r]){this.needsMeasurement=!0;return}if(l!==c)if(Tx(l)&&Tx(c))for(let p=0;p<e.length;p++){const m=e[p];typeof m=="string"&&(e[p]=parseFloat(m))}else ls[r]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:e,name:n}=this,r=[];for(let a=0;a<e.length;a++)(e[a]===null||Yj(e[a]))&&r.push(a);r.length&&rz(e,r,n)}measureInitialState(){const{element:e,unresolvedKeyframes:n,name:r}=this;if(!e||!e.current)return;r==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=ls[r](e.measureViewportBox(),window.getComputedStyle(e.current)),n[0]=this.measuredOrigin;const a=n[n.length-1];a!==void 0&&e.getValue(r,a).jump(a,!1)}measureEndState(){const{element:e,name:n,unresolvedKeyframes:r}=this;if(!e||!e.current)return;const a=e.getValue(n);a&&a.jump(this.measuredOrigin,!1);const s=r.length-1,l=r[s];r[s]=ls[n](e.measureViewportBox(),window.getComputedStyle(e.current)),l!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=l),this.removedTransforms?.length&&this.removedTransforms.forEach(([c,d])=>{e.getValue(c).set(d)}),this.resolveNoneKeyframes()}}const D0=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"];function IT(t,e,n){if(t==null)return[];if(t instanceof EventTarget)return[t];if(typeof t=="string"){let r=document;const a=n?.[t]??r.querySelectorAll(t);return a?Array.from(a):[]}return Array.from(t).filter(r=>r!=null)}const A_=(t,e)=>e&&typeof t=="number"?e.transform(t):t;function ep(t){return FC(t)&&"offsetHeight"in t&&!("ownerSVGElement"in t)}const{schedule:M0}=QC(queueMicrotask,!1),ma={x:!1,y:!1};function DT(){return ma.x||ma.y}function iz(t){return t==="x"||t==="y"?ma[t]?null:(ma[t]=!0,()=>{ma[t]=!1}):ma.x||ma.y?null:(ma.x=ma.y=!0,()=>{ma.x=ma.y=!1})}function MT(t,e){const n=IT(t),r=new AbortController,a={passive:!0,...e,signal:r.signal};return[n,a,()=>r.abort()]}function sz(t){return!(t.pointerType==="touch"||DT())}function oz(t,e,n={}){const[r,a,s]=MT(t,n);return r.forEach(l=>{let c=!1,d=!1,h;const p=()=>{l.removeEventListener("pointerleave",b)},m=P=>{h&&(h(P),h=void 0),p()},v=P=>{c=!1,window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v),d&&(d=!1,m(P))},y=()=>{c=!0,window.addEventListener("pointerup",v,a),window.addEventListener("pointercancel",v,a)},b=P=>{if(P.pointerType!=="touch"){if(c){d=!0;return}m(P)}},x=P=>{if(!sz(P))return;d=!1;const A=e(l,P);typeof A=="function"&&(h=A,l.addEventListener("pointerleave",b,a))};l.addEventListener("pointerenter",x,a),l.addEventListener("pointerdown",y,a)}),s}const NT=(t,e)=>e?t===e?!0:NT(t,e.parentElement):!1,N0=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1,lz=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function cz(t){return lz.has(t.tagName)||t.isContentEditable===!0}const uz=new Set(["INPUT","SELECT","TEXTAREA"]);function dz(t){return uz.has(t.tagName)||t.isContentEditable===!0}const tp=new WeakSet;function Nx(t){return e=>{e.key==="Enter"&&t(e)}}function Yg(t,e){t.dispatchEvent(new PointerEvent("pointer"+e,{isPrimary:!0,bubbles:!0}))}const hz=(t,e)=>{const n=t.currentTarget;if(!n)return;const r=Nx(()=>{if(tp.has(n))return;Yg(n,"down");const a=Nx(()=>{Yg(n,"up")}),s=()=>Yg(n,"cancel");n.addEventListener("keyup",a,e),n.addEventListener("blur",s,e)});n.addEventListener("keydown",r,e),n.addEventListener("blur",()=>n.removeEventListener("keydown",r),e)};function Ox(t){return N0(t)&&!DT()}const jx=new WeakSet;function pz(t,e,n={}){const[r,a,s]=MT(t,n),l=c=>{const d=c.currentTarget;if(!Ox(c)||jx.has(c))return;tp.add(d),n.stopPropagation&&jx.add(c);const h=e(d,c),p={...a,capture:!0},m=(b,x)=>{window.removeEventListener("pointerup",v,p),window.removeEventListener("pointercancel",y,p),tp.has(d)&&tp.delete(d),Ox(b)&&typeof h=="function"&&h(b,{success:x})},v=b=>{m(b,d===window||d===document||n.useGlobalTarget||NT(d,b.target))},y=b=>{m(b,!1)};window.addEventListener("pointerup",v,p),window.addEventListener("pointercancel",y,p)};return r.forEach(c=>{(n.useGlobalTarget?window:c).addEventListener("pointerdown",l,a),ep(c)&&(c.addEventListener("focus",h=>hz(h,a)),!cz(c)&&!c.hasAttribute("tabindex")&&(c.tabIndex=0))}),s}function O0(t){return FC(t)&&"ownerSVGElement"in t}const np=new WeakMap;let rp;const OT=(t,e,n)=>(r,a)=>a&&a[0]?a[0][t+"Size"]:O0(r)&&"getBBox"in r?r.getBBox()[e]:r[n],fz=OT("inline","width","offsetWidth"),mz=OT("block","height","offsetHeight");function gz({target:t,borderBoxSize:e}){np.get(t)?.forEach(n=>{n(t,{get width(){return fz(t,e)},get height(){return mz(t,e)}})})}function vz(t){t.forEach(gz)}function _z(){typeof ResizeObserver>"u"||(rp=new ResizeObserver(vz))}function yz(t,e){rp||_z();const n=IT(t);return n.forEach(r=>{let a=np.get(r);a||(a=new Set,np.set(r,a)),a.add(e),rp?.observe(r)}),()=>{n.forEach(r=>{const a=np.get(r);a?.delete(e),a?.size||rp?.unobserve(r)})}}const ap=new Set;let ml;function bz(){ml=()=>{const t={get width(){return window.innerWidth},get height(){return window.innerHeight}};ap.forEach(e=>e(t))},window.addEventListener("resize",ml)}function kz(t){return ap.add(t),ml||bz(),()=>{ap.delete(t),!ap.size&&typeof ml=="function"&&(window.removeEventListener("resize",ml),ml=void 0)}}function zx(t,e){return typeof t=="function"?kz(t):yz(t,e)}function wz(t){return O0(t)&&t.tagName==="svg"}const xz=[...AT,vn,ba],Pz=t=>xz.find(ET(t)),Fx=()=>({translate:0,scale:1,origin:0,originPoint:0}),gl=()=>({x:Fx(),y:Fx()}),Ux=()=>({min:0,max:0}),Pn=()=>({x:Ux(),y:Ux()}),Sz=new WeakMap;function Nf(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}function Du(t){return typeof t=="string"||Array.isArray(t)}const j0=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],z0=["initial",...j0];function Of(t){return Nf(t.animate)||z0.some(e=>Du(t[e]))}function jT(t){return!!(Of(t)||t.variants)}function Cz(t,e,n){for(const r in e){const a=e[r],s=n[r];if(zn(a))t.addValue(r,a);else if(zn(s))t.addValue(r,Il(a,{owner:t}));else if(s!==a)if(t.hasValue(r)){const l=t.getValue(r);l.liveStyle===!0?l.jump(a):l.hasAnimated||l.set(a)}else{const l=t.getStaticValue(r);t.addValue(r,Il(l!==void 0?l:a,{owner:t}))}}for(const r in n)e[r]===void 0&&t.removeValue(r);return e}const $p={current:null},F0={current:!1},Tz=typeof window<"u";function zT(){if(F0.current=!0,!!Tz)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),e=()=>$p.current=t.matches;t.addEventListener("change",e),e()}else $p.current=!1}const $x=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let Bp={};function FT(t){Bp=t}function Ez(){return Bp}class Az{scrapeMotionValuesFromProps(e,n,r){return{}}constructor({parent:e,props:n,presenceContext:r,reducedMotionConfig:a,skipAnimations:s,blockInitialAnimation:l,visualState:c},d={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=E0,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const y=nr.now();this.renderScheduledAt<y&&(this.renderScheduledAt=y,Ot.render(this.render,!1,!0))};const{latestValues:h,renderState:p}=c;this.latestValues=h,this.baseTarget={...h},this.initialValues=n.initial?{...h}:{},this.renderState=p,this.parent=e,this.props=n,this.presenceContext=r,this.depth=e?e.depth+1:0,this.reducedMotionConfig=a,this.skipAnimationsConfig=s,this.options=d,this.blockInitialAnimation=!!l,this.isControllingVariants=Of(n),this.isVariantNode=jT(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(e&&e.current);const{willChange:m,...v}=this.scrapeMotionValuesFromProps(n,{},this);for(const y in v){const b=v[y];h[y]!==void 0&&zn(b)&&b.set(h[y])}}mount(e){if(this.hasBeenMounted)for(const n in this.initialValues)this.values.get(n)?.jump(this.initialValues[n]),this.latestValues[n]=this.initialValues[n];this.current=e,Sz.set(e,this),this.projection&&!this.projection.instance&&this.projection.mount(e),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,r)=>this.bindToMotionValue(r,n)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(F0.current||zT(),this.shouldReduceMotion=$p.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,this.parent?.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){this.projection&&this.projection.unmount(),ps(this.notifyUpdate),ps(this.render),this.valueSubscriptions.forEach(e=>e()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const e in this.events)this.events[e].clear();for(const e in this.features){const n=this.features[e];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(e){this.children.add(e),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(e)}removeChild(e){this.children.delete(e),this.enteringChildren&&this.enteringChildren.delete(e)}bindToMotionValue(e,n){if(this.valueSubscriptions.has(e)&&this.valueSubscriptions.get(e)(),n.accelerate&&bT.has(e)&&this.current instanceof HTMLElement){const{factory:l,keyframes:c,times:d,ease:h,duration:p}=n.accelerate,m=new _T({element:this.current,name:e,keyframes:c,times:d,ease:h,duration:Ar(p)}),v=l(m);this.valueSubscriptions.set(e,()=>{v(),m.cancel()});return}const r=ql.has(e);r&&this.onBindTransform&&this.onBindTransform();const a=n.on("change",l=>{this.latestValues[e]=l,this.props.onUpdate&&Ot.preRender(this.notifyUpdate),r&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let s;typeof window<"u"&&window.MotionCheckAppearSync&&(s=window.MotionCheckAppearSync(this,e,n)),this.valueSubscriptions.set(e,()=>{a(),s&&s()})}sortNodePosition(e){return!this.current||!this.sortInstanceNodePosition||this.type!==e.type?0:this.sortInstanceNodePosition(this.current,e.current)}updateFeatures(){let e="animation";for(e in Bp){const n=Bp[e];if(!n)continue;const{isEnabled:r,Feature:a}=n;if(!this.features[e]&&a&&r(this.props)&&(this.features[e]=new a(this)),this.features[e]){const s=this.features[e];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Pn()}getStaticValue(e){return this.latestValues[e]}setStaticValue(e,n){this.latestValues[e]=n}update(e,n){(e.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=e,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;r<$x.length;r++){const a=$x[r];this.propEventSubscriptions[a]&&(this.propEventSubscriptions[a](),delete this.propEventSubscriptions[a]);const s="on"+a,l=e[s];l&&(this.propEventSubscriptions[a]=this.on(a,l))}this.prevMotionValues=Cz(this,this.scrapeMotionValuesFromProps(e,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(e){return this.props.variants?this.props.variants[e]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(e){const n=this.getClosestVariantNode();if(n)return n.variantChildren&&n.variantChildren.add(e),()=>n.variantChildren.delete(e)}addValue(e,n){const r=this.values.get(e);n!==r&&(r&&this.removeValue(e),this.bindToMotionValue(e,n),this.values.set(e,n),this.latestValues[e]=n.get())}removeValue(e){this.values.delete(e);const n=this.valueSubscriptions.get(e);n&&(n(),this.valueSubscriptions.delete(e)),delete this.latestValues[e],this.removeValueFromRenderState(e,this.renderState)}hasValue(e){return this.values.has(e)}getValue(e,n){if(this.props.values&&this.props.values[e])return this.props.values[e];let r=this.values.get(e);return r===void 0&&n!==void 0&&(r=Il(n===null?void 0:n,{owner:this}),this.addValue(e,r)),r}readValue(e,n){let r=this.latestValues[e]!==void 0||!this.current?this.latestValues[e]:this.getBaseTargetFromProps(this.props,e)??this.readValueFromInstance(this.current,e,this.options);return r!=null&&(typeof r=="string"&&(zC(r)||UC(r))?r=parseFloat(r):!Pz(r)&&ba.test(n)&&(r=LT(e,n)),this.setBaseTarget(e,zn(r)?r.get():r)),zn(r)?r.get():r}setBaseTarget(e,n){this.baseTarget[e]=n}getBaseTarget(e){const{initial:n}=this.props;let r;if(typeof n=="string"||typeof n=="object"){const s=L0(this.props,n,this.presenceContext?.custom);s&&(r=s[e])}if(n&&r!==void 0)return r;const a=this.getBaseTargetFromProps(this.props,e);return a!==void 0&&!zn(a)?a:this.initialValues[e]!==void 0&&r===void 0?void 0:this.baseTarget[e]}on(e,n){return this.events[e]||(this.events[e]=new y0),this.events[e].add(n)}notify(e,...n){this.events[e]&&this.events[e].notify(...n)}scheduleRenderMicrotask(){M0.render(this.render)}}class UT extends Az{constructor(){super(...arguments),this.KeyframeResolver=az}sortInstanceNodePosition(e,n){return e.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(e,n){const r=e.style;return r?r[n]:void 0}removeValueFromRenderState(e,{vars:n,style:r}){delete n[e],delete r[e]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:e}=this.props;zn(e)&&(this.childSubscription=e.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}class vs{constructor(e){this.isMounted=!1,this.node=e}update(){}}function $T({top:t,left:e,right:n,bottom:r}){return{x:{min:e,max:n},y:{min:t,max:r}}}function Rz({x:t,y:e}){return{top:e.min,right:t.max,bottom:e.max,left:t.min}}function Lz(t,e){if(!e)return t;const n=e({x:t.left,y:t.top}),r=e({x:t.right,y:t.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function Zg(t){return t===void 0||t===1}function R_({scale:t,scaleX:e,scaleY:n}){return!Zg(t)||!Zg(e)||!Zg(n)}function Ws(t){return R_(t)||BT(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function BT(t){return Bx(t.x)||Bx(t.y)}function Bx(t){return t&&t!=="0%"}function Vp(t,e,n){const r=t-n,a=e*r;return n+a}function Vx(t,e,n,r,a){return a!==void 0&&(t=Vp(t,a,r)),Vp(t,n,r)+e}function L_(t,e=0,n=1,r,a){t.min=Vx(t.min,e,n,r,a),t.max=Vx(t.max,e,n,r,a)}function VT(t,{x:e,y:n}){L_(t.x,e.translate,e.scale,e.originPoint),L_(t.y,n.translate,n.scale,n.originPoint)}const Hx=.999999999999,Wx=1.0000000000001;function Iz(t,e,n,r=!1){const a=n.length;if(!a)return;e.x=e.y=1;let s,l;for(let c=0;c<a;c++){s=n[c],l=s.projectionDelta;const{visualElement:d}=s.options;d&&d.props.style&&d.props.style.display==="contents"||(r&&s.options.layoutScroll&&s.scroll&&s!==s.root&&(za(t.x,-s.scroll.offset.x),za(t.y,-s.scroll.offset.y)),l&&(e.x*=l.x.scale,e.y*=l.y.scale,VT(t,l)),r&&Ws(s.latestValues)&&ip(t,s.latestValues,s.layout?.layoutBox))}e.x<Wx&&e.x>Hx&&(e.x=1),e.y<Wx&&e.y>Hx&&(e.y=1)}function za(t,e){t.min+=e,t.max+=e}function Gx(t,e,n,r,a=.5){const s=Nt(t.min,t.max,a);L_(t,e,n,s,r)}function qx(t,e){return typeof t=="string"?parseFloat(t)/100*(e.max-e.min):t}function ip(t,e,n){const r=n??t;Gx(t.x,qx(e.x,r.x),e.scaleX,e.scale,e.originX),Gx(t.y,qx(e.y,r.y),e.scaleY,e.scale,e.originY)}function HT(t,e){return $T(Lz(t.getBoundingClientRect(),e))}function Dz(t,e,n){const r=HT(t,n),{scroll:a}=e;return a&&(za(r.x,a.offset.x),za(r.y,a.offset.y)),r}const Mz={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Nz=Gl.length;function Oz(t,e,n){let r="",a=!0;for(let l=0;l<Nz;l++){const c=Gl[l],d=t[c];if(d===void 0)continue;let h=!0;if(typeof d=="number")h=d===(c.startsWith("scale")?1:0);else{const p=parseFloat(d);h=c.startsWith("scale")?p===1:p===0}if(!h||n){const p=A_(d,Up[c]);if(!h){a=!1;const m=Mz[c]||c;r+=`${m}(${p}) `}n&&(e[c]=p)}}const s=t.pathRotation;return s&&(a=!1,r+=`rotate(${A_(s,Up.pathRotation)}) `),r=r.trim(),n?r=n(e,a?"":r):a&&(r="none"),r}function U0(t,e,n){const{style:r,vars:a,transformOrigin:s}=t;let l=!1,c=!1;for(const d in e){const h=e[d];if(ql.has(d)){l=!0;continue}else if(tT(d)){a[d]=h;continue}else{const p=A_(h,Up[d]);d.startsWith("origin")?(c=!0,s[d]=p):r[d]=p}}if(e.transform||(l||n?r.transform=Oz(e,t.transform,n):r.transform&&(r.transform="none")),c){const{originX:d="50%",originY:h="50%",originZ:p=0}=s;r.transformOrigin=`${d} ${h} ${p}`}}function WT(t,{style:e,vars:n},r,a){const s=t.style;let l;for(l in e)s[l]=e[l];a?.applyProjectionStyles(s,r);for(l in n)s.setProperty(l,n[l])}function Kx(t,e){return e.max===e.min?0:t/(e.max-e.min)*100}const jc={correct:(t,e)=>{if(!e.target)return t;if(typeof t=="string")if(De.test(t))t=parseFloat(t);else return t;const n=Kx(t,e.target.x),r=Kx(t,e.target.y);return`${n}% ${r}%`}},jz={correct:(t,{treeScale:e,projectionDelta:n})=>{const r=t,a=ba.parse(t);if(a.length>5)return r;const s=ba.createTransformer(t),l=typeof a[0]!="number"?1:0,c=n.x.scale*e.x,d=n.y.scale*e.y;a[0+l]/=c,a[1+l]/=d;const h=Nt(c,d,.5);return typeof a[2+l]=="number"&&(a[2+l]/=h),typeof a[3+l]=="number"&&(a[3+l]/=h),s(a)}},I_={borderRadius:{...jc,applyTo:[...D0]},borderTopLeftRadius:jc,borderTopRightRadius:jc,borderBottomLeftRadius:jc,borderBottomRightRadius:jc,boxShadow:jz};function GT(t,{layout:e,layoutId:n}){return ql.has(t)||t.startsWith("origin")||(e||n!==void 0)&&(!!I_[t]||t==="opacity")}function $0(t,e,n){const r=t.style,a=e?.style,s={};if(!r)return s;for(const l in r)(zn(r[l])||a&&zn(a[l])||GT(l,t)||n?.getValue(l)?.liveStyle!==void 0)&&(s[l]=r[l]);return s}function zz(t){return window.getComputedStyle(t)}class Fz extends UT{constructor(){super(...arguments),this.type="html",this.renderInstance=WT}readValueFromInstance(e,n){if(ql.has(n))return this.projection?.isProjecting?__(n):sj(e,n);{const r=zz(e),a=(tT(n)?r.getPropertyValue(n):r[n])||0;return typeof a=="string"?a.trim():a}}measureInstanceViewportBox(e,{transformPagePoint:n}){return HT(e,n)}build(e,n,r){U0(e,n,r.transformTemplate)}scrapeMotionValuesFromProps(e,n,r){return $0(e,n,r)}}const Uz={offset:"stroke-dashoffset",array:"stroke-dasharray"},$z={offset:"strokeDashoffset",array:"strokeDasharray"};function Bz(t,e,n=1,r=0,a=!0){t.pathLength=1;const s=a?Uz:$z;t[s.offset]=`${-r}`,t[s.array]=`${e} ${n}`}const Vz=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function qT(t,{attrX:e,attrY:n,attrScale:r,pathLength:a,pathSpacing:s=1,pathOffset:l=0,...c},d,h,p){if(U0(t,c,h),d){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:m,style:v}=t;m.transform&&(v.transform=m.transform,delete m.transform),(v.transform||m.transformOrigin)&&(v.transformOrigin=m.transformOrigin??"50% 50%",delete m.transformOrigin),v.transform&&(v.transformBox=p?.transformBox??"fill-box",delete m.transformBox);for(const y of Vz)m[y]!==void 0&&(v[y]=m[y],delete m[y]);e!==void 0&&(m.x=e),n!==void 0&&(m.y=n),r!==void 0&&(m.scale=r),a!==void 0&&Bz(m,a,s,l,!1)}const KT=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),YT=t=>typeof t=="string"&&t.toLowerCase()==="svg";function Hz(t,e,n,r){WT(t,e,void 0,r);for(const a in e.attrs)t.setAttribute(KT.has(a)?a:I0(a),e.attrs[a])}function ZT(t,e,n){const r=$0(t,e,n);for(const a in t)if(zn(t[a])||zn(e[a])){const s=Gl.indexOf(a)!==-1?"attr"+a.charAt(0).toUpperCase()+a.substring(1):a;r[s]=t[a]}return r}class Wz extends UT{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Pn}getBaseTargetFromProps(e,n){return e[n]}readValueFromInstance(e,n){if(ql.has(n)){const r=RT(n);return r&&r.default||0}return n=KT.has(n)?n:I0(n),e.getAttribute(n)}scrapeMotionValuesFromProps(e,n,r){return ZT(e,n,r)}build(e,n,r){qT(e,n,this.isSVGTag,r.transformTemplate,r.style)}renderInstance(e,n,r,a){Hz(e,n,r,a)}mount(e){this.isSVGTag=YT(e.tagName),super.mount(e)}}const Gz=z0.length;function JT(t){if(!t)return;if(!t.isControllingVariants){const n=t.parent?JT(t.parent)||{}:{};return t.props.initial!==void 0&&(n.initial=t.props.initial),n}const e={};for(let n=0;n<Gz;n++){const r=z0[n],a=t.props[r];(Du(a)||a===!1)&&(e[r]=a)}return e}function XT(t,e){if(!Array.isArray(e))return!1;const n=e.length;if(n!==t.length)return!1;for(let r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0}const qz=[...j0].reverse(),Kz=j0.length;function Yz(t){return e=>Promise.all(e.map(({animation:n,options:r})=>qj(t,n,r)))}function Zz(t){let e=Yz(t),n=Yx(),r=!0,a=!1;const s=h=>(p,m)=>{const v=io(t,m,h==="exit"?t.presenceContext?.custom:void 0);if(v){const{transition:y,transitionEnd:b,...x}=v;p={...p,...x,...b}}return p};function l(h){e=h(t)}function c(h){const{props:p}=t,m=JT(t.parent)||{},v=[],y=new Set;let b={},x=1/0;for(let A=0;A<Kz;A++){const L=qz[A],T=n[L],E=p[L]!==void 0?p[L]:m[L],D=Du(E),$=L===h?T.isActive:null;$===!1&&(x=A);let I=E===m[L]&&E!==p[L]&&D;if(I&&(r||a)&&t.manuallyAnimateOnMount&&(I=!1),T.protectedKeys={...b},!T.isActive&&$===null||!E&&!T.prevProp||Nf(E)||typeof E=="boolean")continue;if(L==="exit"&&T.isActive&&$!==!0){T.prevResolvedValues&&(b={...b,...T.prevResolvedValues});continue}const S=Jz(T.prevProp,E);let j=S||L===h&&T.isActive&&!I&&D||A>x&&D,F=!1;const Z=Array.isArray(E)?E:[E];let ee=Z.reduce(s(L),{});$===!1&&(ee={});const{prevResolvedValues:ue={}}=T,re={...ue,...ee},ae=H=>{j=!0,y.has(H)&&(F=!0,y.delete(H)),T.needsAnimating[H]=!0;const Q=t.getValue(H);Q&&(Q.liveStyle=!1)};for(const H in re){const Q=ee[H],W=ue[H];if(b.hasOwnProperty(H))continue;let N=!1;P_(Q)&&P_(W)?N=!XT(Q,W)||S:N=Q!==W,N?Q!=null?ae(H):y.add(H):Q!==void 0&&y.has(H)?ae(H):T.protectedKeys[H]=!0}T.prevProp=E,T.prevResolvedValues=ee,T.isActive&&(b={...b,...ee}),(r||a)&&t.blockInitialAnimation&&(j=!1);const te=I&&S;j&&(!te||F)&&v.push(...Z.map(H=>{const Q={type:L};if(typeof H=="string"&&(r||a)&&!te&&t.manuallyAnimateOnMount&&t.parent){const{parent:W}=t,N=io(W,H);if(W.enteringChildren&&N){const{delayChildren:q}=N.transition||{};Q.delay=kT(W.enteringChildren,t,q)}}return{animation:H,options:Q}}))}if(y.size){const A={};if(typeof p.initial!="boolean"){const L=io(t,Array.isArray(p.initial)?p.initial[0]:p.initial);L&&L.transition&&(A.transition=L.transition)}y.forEach(L=>{const T=t.getBaseTarget(L),E=t.getValue(L);E&&(E.liveStyle=!0),A[L]=T??null}),v.push({animation:A})}let P=!!v.length;return r&&(p.initial===!1||p.initial===p.animate)&&!t.manuallyAnimateOnMount&&(P=!1),r=!1,a=!1,P?e(v):Promise.resolve()}function d(h,p){if(n[h].isActive===p)return Promise.resolve();t.variantChildren?.forEach(v=>v.animationState?.setActive(h,p)),n[h].isActive=p;const m=c(h);for(const v in n)n[v].protectedKeys={};return m}return{animateChanges:c,setActive:d,setAnimateFunction:l,getState:()=>n,reset:()=>{n=Yx(),a=!0}}}function Jz(t,e){return typeof e=="string"?e!==t:Array.isArray(e)?!XT(e,t):!1}function Ns(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Yx(){return{animate:Ns(!0),whileInView:Ns(),whileHover:Ns(),whileTap:Ns(),whileDrag:Ns(),whileFocus:Ns(),exit:Ns()}}function D_(t,e){t.min=e.min,t.max=e.max}function ha(t,e){D_(t.x,e.x),D_(t.y,e.y)}function Zx(t,e){t.translate=e.translate,t.scale=e.scale,t.originPoint=e.originPoint,t.origin=e.origin}const QT=1e-4,Xz=1-QT,Qz=1+QT,e5=.01,eF=0-e5,tF=0+e5;function rr(t){return t.max-t.min}function nF(t,e,n){return Math.abs(t-e)<=n}function Jx(t,e,n,r=.5){t.origin=r,t.originPoint=Nt(e.min,e.max,t.origin),t.scale=rr(n)/rr(e),t.translate=Nt(n.min,n.max,t.origin)-t.originPoint,(t.scale>=Xz&&t.scale<=Qz||isNaN(t.scale))&&(t.scale=1),(t.translate>=eF&&t.translate<=tF||isNaN(t.translate))&&(t.translate=0)}function mu(t,e,n,r){Jx(t.x,e.x,n.x,r?r.originX:void 0),Jx(t.y,e.y,n.y,r?r.originY:void 0)}function Xx(t,e,n,r=0){const a=r?Nt(n.min,n.max,r):n.min;t.min=a+e.min,t.max=t.min+rr(e)}function rF(t,e,n,r){Xx(t.x,e.x,n.x,r?.x),Xx(t.y,e.y,n.y,r?.y)}function Qx(t,e,n,r=0){const a=r?Nt(n.min,n.max,r):n.min;t.min=e.min-a,t.max=t.min+rr(e)}function Hp(t,e,n,r){Qx(t.x,e.x,n.x,r?.x),Qx(t.y,e.y,n.y,r?.y)}function e2(t,e,n,r,a){return t-=e,t=Vp(t,1/n,r),a!==void 0&&(t=Vp(t,1/a,r)),t}function aF(t,e=0,n=1,r=.5,a,s=t,l=t){if(Va.test(e)&&(e=parseFloat(e),e=Nt(l.min,l.max,e/100)-l.min),typeof e!="number")return;let c=Nt(s.min,s.max,r);t===s&&(c-=e),t.min=e2(t.min,e,n,c,a),t.max=e2(t.max,e,n,c,a)}function t2(t,e,[n,r,a],s,l){aF(t,e[n],e[r],e[a],e.scale,s,l)}const iF=["x","scaleX","originX"],sF=["y","scaleY","originY"];function n2(t,e,n,r){t2(t.x,e,iF,n?n.x:void 0,r?r.x:void 0),t2(t.y,e,sF,n?n.y:void 0,r?r.y:void 0)}function r2(t){return t.translate===0&&t.scale===1}function t5(t){return r2(t.x)&&r2(t.y)}function a2(t,e){return t.min===e.min&&t.max===e.max}function oF(t,e){return a2(t.x,e.x)&&a2(t.y,e.y)}function i2(t,e){return Math.round(t.min)===Math.round(e.min)&&Math.round(t.max)===Math.round(e.max)}function n5(t,e){return i2(t.x,e.x)&&i2(t.y,e.y)}function s2(t){return rr(t.x)/rr(t.y)}function o2(t,e){return t.translate===e.translate&&t.scale===e.scale&&t.originPoint===e.originPoint}function ja(t){return[t("x"),t("y")]}function lF(t,e,n){let r="";const a=t.x.translate/e.x,s=t.y.translate/e.y,l=n?.z||0;if((a||s||l)&&(r=`translate3d(${a}px, ${s}px, ${l}px) `),(e.x!==1||e.y!==1)&&(r+=`scale(${1/e.x}, ${1/e.y}) `),n){const{transformPerspective:h,rotate:p,pathRotation:m,rotateX:v,rotateY:y,skewX:b,skewY:x}=n;h&&(r=`perspective(${h}px) ${r}`),p&&(r+=`rotate(${p}deg) `),m&&(r+=`rotate(${m}deg) `),v&&(r+=`rotateX(${v}deg) `),y&&(r+=`rotateY(${y}deg) `),b&&(r+=`skewX(${b}deg) `),x&&(r+=`skewY(${x}deg) `)}const c=t.x.scale*e.x,d=t.y.scale*e.y;return(c!==1||d!==1)&&(r+=`scale(${c}, ${d})`),r||"none"}const cF=D0.length,l2=t=>typeof t=="string"?parseFloat(t):t,c2=t=>typeof t=="number"||De.test(t);function uF(t,e,n,r,a,s){a?(t.opacity=Nt(0,n.opacity??1,dF(r)),t.opacityExit=Nt(e.opacity??1,0,hF(r))):s&&(t.opacity=Nt(e.opacity??1,n.opacity??1,r));for(let l=0;l<cF;l++){const c=D0[l];let d=u2(e,c),h=u2(n,c);if(d===void 0&&h===void 0)continue;d||(d=0),h||(h=0),d===0||h===0||c2(d)===c2(h)?(t[c]=Math.max(Nt(l2(d),l2(h),r),0),(Va.test(h)||Va.test(d))&&(t[c]+="%")):t[c]=h}(e.rotate||n.rotate)&&(t.rotate=Nt(e.rotate||0,n.rotate||0,r))}function u2(t,e){return t[e]!==void 0?t[e]:t.borderRadius}const dF=r5(0,.5,YC),hF=r5(.5,.95,Kr);function r5(t,e,n){return r=>r<t?0:r>e?1:n(Lu(t,e,r))}function pF(t,e,n){const r=zn(t)?t:Il(t);return r.start(R0("",r,e,n)),r.animation}function Mu(t,e,n,r={passive:!0}){return t.addEventListener(e,n,r),()=>t.removeEventListener(e,n,r)}const fF=(t,e)=>t.depth-e.depth;class mF{constructor(){this.children=[],this.isDirty=!1}add(e){v0(this.children,e),this.isDirty=!0}remove(e){Np(this.children,e),this.isDirty=!0}forEach(e){this.isDirty&&this.children.sort(fF),this.isDirty=!1,this.children.forEach(e)}}function gF(t,e){const n=nr.now(),r=({timestamp:a})=>{const s=a-n;s>=e&&(ps(r),t(s-e))};return Ot.setup(r,!0),()=>ps(r)}function sp(t){return zn(t)?t.get():t}class vF{constructor(){this.members=[]}add(e){v0(this.members,e);for(let n=this.members.length-1;n>=0;n--){const r=this.members[n];if(r===e||r===this.lead||r===this.prevLead)continue;const a=r.instance;(!a||a.isConnected===!1)&&!r.snapshot&&(Np(this.members,r),r.unmount())}e.scheduleRender()}remove(e){if(Np(this.members,e),e===this.prevLead&&(this.prevLead=void 0),e===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(e){for(let n=this.members.indexOf(e)-1;n>=0;n--){const r=this.members[n];if(r.isPresent!==!1&&r.instance?.isConnected!==!1)return this.promote(r),!0}return!1}promote(e,n){const r=this.lead;if(e!==r&&(this.prevLead=r,this.lead=e,e.show(),r)){r.updateSnapshot(),e.scheduleRender();const{layoutDependency:a}=r.options,{layoutDependency:s}=e.options;(a===void 0||a!==s)&&(e.resumeFrom=r,n&&(r.preserveOpacity=!0),r.snapshot&&(e.snapshot=r.snapshot,e.snapshot.latestValues=r.animationValues||r.latestValues),e.root?.isUpdating&&(e.isLayoutDirty=!0)),e.options.crossfade===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(e=>{e.options.onExitComplete?.(),e.resumingFrom?.options.onExitComplete?.()})}scheduleRender(){this.members.forEach(e=>e.instance&&e.scheduleRender(!1))}removeLeadSnapshot(){this.lead?.snapshot&&(this.lead.snapshot=void 0)}}const op={hasAnimatedSinceResize:!0,hasEverUpdated:!1},Jg=["","X","Y","Z"],_F=1e3;let yF=0;function Xg(t,e,n,r){const{latestValues:a}=e;a[t]&&(n[t]=a[t],e.setStaticValue(t,0),r&&(r[t]=0))}function a5(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:e}=t.options;if(!e)return;const n=CT(e);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:a,layoutId:s}=t.options;window.MotionCancelOptimisedAnimation(n,"transform",Ot,!(a||s))}const{parent:r}=t;r&&!r.hasCheckedOptimisedAppear&&a5(r)}function i5({attachResizeListener:t,defaultParent:e,measureScroll:n,checkIsScrollRoot:r,resetTransform:a}){return class{constructor(l={},c=e?.()){this.id=yF++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(wF),this.nodes.forEach(EF),this.nodes.forEach(AF),this.nodes.forEach(xF)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=l,this.root=c?c.root||c:this,this.path=c?[...c.path,c]:[],this.parent=c,this.depth=c?c.depth+1:0;for(let d=0;d<this.path.length;d++)this.path[d].shouldResetTransform=!0;this.root===this&&(this.nodes=new mF)}addEventListener(l,c){return this.eventHandlers.has(l)||this.eventHandlers.set(l,new y0),this.eventHandlers.get(l).add(c)}notifyListeners(l,...c){const d=this.eventHandlers.get(l);d&&d.notify(...c)}hasListeners(l){return this.eventHandlers.has(l)}mount(l){if(this.instance)return;this.isSVG=O0(l)&&!wz(l),this.instance=l;const{layoutId:c,layout:d,visualElement:h}=this.options;if(h&&!h.current&&h.mount(l),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(d||c)&&(this.isLayoutDirty=!0),t){let p,m=0;const v=()=>this.root.updateBlockedByResize=!1;Ot.read(()=>{m=window.innerWidth}),t(l,()=>{const y=window.innerWidth;y!==m&&(m=y,this.root.updateBlockedByResize=!0,p&&p(),p=gF(v,250),op.hasAnimatedSinceResize&&(op.hasAnimatedSinceResize=!1,this.nodes.forEach(p2)))})}c&&this.root.registerSharedNode(c,this),this.options.animate!==!1&&h&&(c||d)&&this.addEventListener("didUpdate",({delta:p,hasLayoutChanged:m,hasRelativeLayoutChanged:v,layout:y})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const b=this.options.transition||h.getDefaultTransition()||MF,{onLayoutAnimationStart:x,onLayoutAnimationComplete:P}=h.getProps(),A=!this.targetLayout||!n5(this.targetLayout,y),L=!m&&v;if(this.options.layoutRoot||this.resumeFrom||L||m&&(A||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const T={...A0(b,"layout"),onPlay:x,onComplete:P};(h.shouldReduceMotion||this.options.layoutRoot)&&(T.delay=0,T.type=!1),this.startAnimation(T),this.setAnimationOrigin(p,L,T.path)}else m||p2(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=y})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const l=this.getStack();l&&l.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),ps(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(RF),this.animationId++)}getTransformTemplate(){const{visualElement:l}=this.options;return l&&l.getProps().transformTemplate}willUpdate(l=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&a5(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let p=0;p<this.path.length;p++){const m=this.path[p];m.shouldResetTransform=!0,(typeof m.latestValues.x=="string"||typeof m.latestValues.y=="string")&&(m.isLayoutDirty=!0),m.updateScroll("snapshot"),m.options.layoutRoot&&m.willUpdate(!1)}const{layoutId:c,layout:d}=this.options;if(c===void 0&&!d)return;const h=this.getTransformTemplate();this.prevTransformTemplateValue=h?h(this.latestValues,""):void 0,this.updateSnapshot(),l&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const d=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),d&&this.nodes.forEach(SF),this.nodes.forEach(d2);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(h2);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(CF),this.nodes.forEach(TF),this.nodes.forEach(bF),this.nodes.forEach(kF)):this.nodes.forEach(h2),this.clearAllSnapshots();const c=nr.now();On.delta=Za(0,1e3/60,c-On.timestamp),On.timestamp=c,On.isProcessing=!0,Vg.update.process(On),Vg.preRender.process(On),Vg.render.process(On),On.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,M0.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(PF),this.sharedNodes.forEach(LF)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Ot.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Ot.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!rr(this.snapshot.measuredBox.x)&&!rr(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let d=0;d<this.path.length;d++)this.path[d].updateScroll();const l=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=Pn()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:c}=this.options;c&&c.notify("LayoutMeasure",this.layout.layoutBox,l?l.layoutBox:void 0)}updateScroll(l="measure"){let c=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===l&&(c=!1),c&&this.instance){const d=r(this.instance);this.scroll={animationId:this.root.animationId,phase:l,isRoot:d,offset:n(this.instance),wasRoot:this.scroll?this.scroll.isRoot:d}}}resetTransform(){if(!a)return;const l=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,c=this.projectionDelta&&!t5(this.projectionDelta),d=this.getTransformTemplate(),h=d?d(this.latestValues,""):void 0,p=h!==this.prevTransformTemplateValue;l&&this.instance&&(c||Ws(this.latestValues)||p)&&(a(this.instance,h),this.shouldResetTransform=!1,this.scheduleRender())}measure(l=!0){const c=this.measurePageBox();let d=this.removeElementScroll(c);return l&&(d=this.removeTransform(d)),NF(d),{animationId:this.root.animationId,measuredBox:c,layoutBox:d,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:l}=this.options;if(!l)return Pn();const c=l.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(OF))){const{scroll:h}=this.root;h&&(za(c.x,h.offset.x),za(c.y,h.offset.y))}return c}removeElementScroll(l){const c=Pn();if(ha(c,l),this.scroll?.wasRoot)return c;for(let d=0;d<this.path.length;d++){const h=this.path[d],{scroll:p,options:m}=h;h!==this.root&&p&&m.layoutScroll&&(p.wasRoot&&ha(c,l),za(c.x,p.offset.x),za(c.y,p.offset.y))}return c}applyTransform(l,c=!1,d){const h=d||Pn();ha(h,l);for(let p=0;p<this.path.length;p++){const m=this.path[p];!c&&m.options.layoutScroll&&m.scroll&&m!==m.root&&(za(h.x,-m.scroll.offset.x),za(h.y,-m.scroll.offset.y)),Ws(m.latestValues)&&ip(h,m.latestValues,m.layout?.layoutBox)}return Ws(this.latestValues)&&ip(h,this.latestValues,this.layout?.layoutBox),h}removeTransform(l){const c=Pn();ha(c,l);for(let d=0;d<this.path.length;d++){const h=this.path[d];if(!Ws(h.latestValues))continue;let p;h.instance&&(R_(h.latestValues)&&h.updateSnapshot(),p=Pn(),ha(p,h.measurePageBox())),n2(c,h.latestValues,h.snapshot?.layoutBox,p)}return Ws(this.latestValues)&&n2(c,this.latestValues),c}setTargetDelta(l){this.targetDelta=l,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(l){this.options={...this.options,...l,crossfade:l.crossfade!==void 0?l.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==On.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(l=!1){const c=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=c.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=c.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=c.isSharedProjectionDirty);const d=!!this.resumingFrom||this!==c;if(!(l||d&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:p,layoutId:m}=this.options;if(!this.layout||!(p||m))return;this.resolvedRelativeTargetAt=On.timestamp;const v=this.getClosestProjectingParent();v&&this.linkedParentVersion!==v.layoutVersion&&!v.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&v&&v.layout?this.createRelativeTarget(v,this.layout.layoutBox,v.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=Pn(),this.targetWithTransforms=Pn()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),rF(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):ha(this.target,this.layout.layoutBox),VT(this.target,this.targetDelta)):ha(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&v&&!!v.resumingFrom==!!this.resumingFrom&&!v.options.layoutScroll&&v.target&&this.animationProgress!==1?this.createRelativeTarget(v,this.target,v.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||R_(this.parent.latestValues)||BT(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(l,c,d){this.relativeParent=l,this.linkedParentVersion=l.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Pn(),this.relativeTargetOrigin=Pn(),Hp(this.relativeTargetOrigin,c,d,this.options.layoutAnchor||void 0),ha(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const l=this.getLead(),c=!!this.resumingFrom||this!==l;let d=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(d=!1),c&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(d=!1),this.resolvedRelativeTargetAt===On.timestamp&&(d=!1),d)return;const{layout:h,layoutId:p}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(h||p))return;ha(this.layoutCorrected,this.layout.layoutBox);const m=this.treeScale.x,v=this.treeScale.y;Iz(this.layoutCorrected,this.treeScale,this.path,c),l.layout&&!l.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(l.target=l.layout.layoutBox,l.targetWithTransforms=Pn());const{target:y}=l;if(!y){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Zx(this.prevProjectionDelta.x,this.projectionDelta.x),Zx(this.prevProjectionDelta.y,this.projectionDelta.y)),mu(this.projectionDelta,this.layoutCorrected,y,this.latestValues),(this.treeScale.x!==m||this.treeScale.y!==v||!o2(this.projectionDelta.x,this.prevProjectionDelta.x)||!o2(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",y))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(l=!0){if(this.options.visualElement?.scheduleRender(),l){const c=this.getStack();c&&c.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=gl(),this.projectionDelta=gl(),this.projectionDeltaWithTransform=gl()}setAnimationOrigin(l,c=!1,d){const h=this.snapshot,p=h?h.latestValues:{},m={...this.latestValues},v=gl();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!c;const y=Pn(),b=h?h.source:void 0,x=this.layout?this.layout.source:void 0,P=b!==x,A=this.getStack(),L=!A||A.members.length<=1,T=!!(P&&!L&&this.options.crossfade===!0&&!this.path.some(DF));this.animationProgress=0;let E;const D=d?.interpolateProjection(l);this.mixTargetDelta=$=>{const I=$/1e3,S=D?.(I);S?(v.x.translate=S.x,v.x.scale=Nt(l.x.scale,1,I),v.x.origin=l.x.origin,v.x.originPoint=l.x.originPoint,v.y.translate=S.y,v.y.scale=Nt(l.y.scale,1,I),v.y.origin=l.y.origin,v.y.originPoint=l.y.originPoint):(f2(v.x,l.x,I),f2(v.y,l.y,I)),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Hp(y,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),IF(this.relativeTarget,this.relativeTargetOrigin,y,I),E&&oF(this.relativeTarget,E)&&(this.isProjectionDirty=!1),E||(E=Pn()),ha(E,this.relativeTarget)),P&&(this.animationValues=m,uF(m,p,this.latestValues,I,T,L)),S&&S.rotate!==void 0&&(this.animationValues||(this.animationValues=m),this.animationValues.pathRotation=S.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=I},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(l){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(ps(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Ot.update(()=>{op.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=Il(0)),this.motionValue.jump(0,!1),this.currentAnimation=pF(this.motionValue,[0,1e3],{...l,velocity:0,isSync:!0,onUpdate:c=>{this.mixTargetDelta(c),l.onUpdate&&l.onUpdate(c)},onComplete:()=>{l.onComplete&&l.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const l=this.getStack();l&&l.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(_F),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const l=this.getLead();let{targetWithTransforms:c,target:d,layout:h,latestValues:p}=l;if(!(!c||!d||!h)){if(this!==l&&this.layout&&h&&s5(this.options.animationType,this.layout.layoutBox,h.layoutBox)){d=this.target||Pn();const m=rr(this.layout.layoutBox.x);d.x.min=l.target.x.min,d.x.max=d.x.min+m;const v=rr(this.layout.layoutBox.y);d.y.min=l.target.y.min,d.y.max=d.y.min+v}ha(c,d),ip(c,p),mu(this.projectionDeltaWithTransform,this.layoutCorrected,c,p)}}registerSharedNode(l,c){this.sharedNodes.has(l)||this.sharedNodes.set(l,new vF),this.sharedNodes.get(l).add(c);const h=c.options.initialPromotionConfig;c.promote({transition:h?h.transition:void 0,preserveFollowOpacity:h&&h.shouldPreserveFollowOpacity?h.shouldPreserveFollowOpacity(c):void 0})}isLead(){const l=this.getStack();return l?l.lead===this:!0}getLead(){const{layoutId:l}=this.options;return l?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:l}=this.options;return l?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:l}=this.options;if(l)return this.root.sharedNodes.get(l)}promote({needsReset:l,transition:c,preserveFollowOpacity:d}={}){const h=this.getStack();h&&h.promote(this,d),l&&(this.projectionDelta=void 0,this.needsReset=!0),c&&this.setOptions({transition:c})}relegate(){const l=this.getStack();return l?l.relegate(this):!1}resetSkewAndRotation(){const{visualElement:l}=this.options;if(!l)return;let c=!1;const{latestValues:d}=l;if((d.z||d.rotate||d.rotateX||d.rotateY||d.rotateZ||d.skewX||d.skewY)&&(c=!0),!c)return;const h={};d.z&&Xg("z",l,h,this.animationValues);for(let p=0;p<Jg.length;p++)Xg(`rotate${Jg[p]}`,l,h,this.animationValues),Xg(`skew${Jg[p]}`,l,h,this.animationValues);l.render();for(const p in h)l.setStaticValue(p,h[p]),this.animationValues&&(this.animationValues[p]=h[p]);l.scheduleRender()}applyProjectionStyles(l,c){if(!this.instance||this.isSVG)return;if(!this.isVisible){l.visibility="hidden";return}const d=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,l.visibility="",l.opacity="",l.pointerEvents=sp(c?.pointerEvents)||"",l.transform=d?d(this.latestValues,""):"none";return}const h=this.getLead();if(!this.projectionDelta||!this.layout||!h.target){this.options.layoutId&&(l.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,l.pointerEvents=sp(c?.pointerEvents)||""),this.hasProjected&&!Ws(this.latestValues)&&(l.transform=d?d({},""):"none",this.hasProjected=!1);return}l.visibility="";const p=h.animationValues||h.latestValues;this.applyTransformsToTarget();let m=lF(this.projectionDeltaWithTransform,this.treeScale,p);d&&(m=d(p,m)),l.transform=m;const{x:v,y}=this.projectionDelta;l.transformOrigin=`${v.origin*100}% ${y.origin*100}% 0`,h.animationValues?l.opacity=h===this?p.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:p.opacityExit:l.opacity=h===this?p.opacity!==void 0?p.opacity:"":p.opacityExit!==void 0?p.opacityExit:0;for(const b in I_){if(p[b]===void 0)continue;const{correct:x,applyTo:P,isCSSVariable:A}=I_[b],L=m==="none"?p[b]:x(p[b],h);if(P){const T=P.length;for(let E=0;E<T;E++)l[P[E]]=L}else A?this.options.visualElement.renderState.vars[b]=L:l[b]=L}this.options.layoutId&&(l.pointerEvents=h===this?sp(c?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(l=>l.currentAnimation?.stop()),this.root.nodes.forEach(d2),this.root.sharedNodes.clear()}}}function bF(t){t.updateLayout()}function kF(t){const e=t.resumeFrom?.snapshot||t.snapshot;if(t.isLead()&&t.layout&&e&&t.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:r}=t.layout,{animationType:a}=t.options,s=e.source!==t.layout.source;if(a==="size")ja(p=>{const m=s?e.measuredBox[p]:e.layoutBox[p],v=rr(m);m.min=n[p].min,m.max=m.min+v});else if(a==="x"||a==="y"){const p=a==="x"?"y":"x";D_(s?e.measuredBox[p]:e.layoutBox[p],n[p])}else s5(a,e.layoutBox,n)&&ja(p=>{const m=s?e.measuredBox[p]:e.layoutBox[p],v=rr(n[p]);m.max=m.min+v,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[p].max=t.relativeTarget[p].min+v)});const l=gl();mu(l,n,e.layoutBox);const c=gl();s?mu(c,t.applyTransform(r,!0),e.measuredBox):mu(c,n,e.layoutBox);const d=!t5(l);let h=!1;if(!t.resumeFrom){const p=t.getClosestProjectingParent();if(p&&!p.resumeFrom){const{snapshot:m,layout:v}=p;if(m&&v){const y=t.options.layoutAnchor||void 0,b=Pn();Hp(b,e.layoutBox,m.layoutBox,y);const x=Pn();Hp(x,n,v.layoutBox,y),n5(b,x)||(h=!0),p.options.layoutRoot&&(t.relativeTarget=x,t.relativeTargetOrigin=b,t.relativeParent=p)}}}t.notifyListeners("didUpdate",{layout:n,snapshot:e,delta:c,layoutDelta:l,hasLayoutChanged:d,hasRelativeLayoutChanged:h})}else if(t.isLead()){const{onExitComplete:n}=t.options;n&&n()}t.options.transition=void 0}function wF(t){t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function xF(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function PF(t){t.clearSnapshot()}function d2(t){t.clearMeasurements()}function SF(t){t.isLayoutDirty=!0,t.updateLayout()}function h2(t){t.isLayoutDirty=!1}function CF(t){t.isAnimationBlocked&&t.layout&&!t.isLayoutDirty&&(t.snapshot=t.layout,t.isLayoutDirty=!0)}function TF(t){const{visualElement:e}=t.options;e&&e.getProps().onBeforeLayoutMeasure&&e.notify("BeforeLayoutMeasure"),t.resetTransform()}function p2(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function EF(t){t.resolveTargetDelta()}function AF(t){t.calcProjection()}function RF(t){t.resetSkewAndRotation()}function LF(t){t.removeLeadSnapshot()}function f2(t,e,n){t.translate=Nt(e.translate,0,n),t.scale=Nt(e.scale,1,n),t.origin=e.origin,t.originPoint=e.originPoint}function m2(t,e,n,r){t.min=Nt(e.min,n.min,r),t.max=Nt(e.max,n.max,r)}function IF(t,e,n,r){m2(t.x,e.x,n.x,r),m2(t.y,e.y,n.y,r)}function DF(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const MF={duration:.45,ease:[.4,0,.1,1]},g2=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),v2=g2("applewebkit/")&&!g2("chrome/")?Math.round:Kr;function _2(t){t.min=v2(t.min),t.max=v2(t.max)}function NF(t){_2(t.x),_2(t.y)}function s5(t,e,n){return t==="position"||t==="preserve-aspect"&&!nF(s2(e),s2(n),.2)}function OF(t){return t!==t.root&&t.scroll?.wasRoot}const jF=i5({attachResizeListener:(t,e)=>Mu(t,"resize",e),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),Qg={current:void 0},o5=i5({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!Qg.current){const t=new jF({});t.mount(window),t.setOptions({layoutScroll:!0}),Qg.current=t}return Qg.current},resetTransform:(t,e)=>{t.style.transform=e!==void 0?e:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),B0=k.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});function y2(t,e){if(typeof t=="function")return t(e);t!=null&&(t.current=e)}function zF(...t){return e=>{let n=!1;const r=t.map(a=>{const s=y2(a,e);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let a=0;a<r.length;a++){const s=r[a];typeof s=="function"?s():y2(t[a],null)}}}}function FF(...t){return k.useCallback(zF(...t),t)}class UF extends k.Component{getSnapshotBeforeUpdate(e){const n=this.props.childRef.current;if(ep(n)&&e.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const r=n.offsetParent,a=ep(r)&&r.offsetWidth||0,s=ep(r)&&r.offsetHeight||0,l=getComputedStyle(n),c=this.props.sizeRef.current;c.height=parseFloat(l.height),c.width=parseFloat(l.width),c.top=n.offsetTop,c.left=n.offsetLeft,c.right=a-c.width-c.left,c.bottom=s-c.height-c.top,c.direction=l.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function $F({children:t,isPresent:e,anchorX:n,anchorY:r,root:a,pop:s}){const l=k.useId(),c=k.useRef(null),d=k.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:h}=k.useContext(B0),p=t.props?.ref??t?.ref,m=FF(c,p);return k.useInsertionEffect(()=>{const{width:v,height:y,top:b,left:x,right:P,bottom:A,direction:L}=d.current;if(e||s===!1||!c.current||!v||!y)return;const T=L==="rtl",E=n==="left"?T?`right: ${P}`:`left: ${x}`:T?`left: ${x}`:`right: ${P}`,D=r==="bottom"?`bottom: ${A}`:`top: ${b}`;c.current.dataset.motionPopId=l;const $=document.createElement("style");h&&($.nonce=h);const I=a??document.head;return I.appendChild($),$.sheet&&$.sheet.insertRule(`
1164
- [data-motion-pop-id="${l}"] {
1165
- position: absolute !important;
1166
- width: ${v}px !important;
1167
- height: ${y}px !important;
1168
- ${E}px !important;
1169
- ${D}px !important;
1170
- }
1171
- `),()=>{c.current?.removeAttribute("data-motion-pop-id"),I.contains($)&&I.removeChild($)}},[e]),R.jsx(UF,{isPresent:e,childRef:c,sizeRef:d,pop:s,children:s===!1?t:k.cloneElement(t,{ref:m})})}const BF=({children:t,initial:e,isPresent:n,onExitComplete:r,custom:a,presenceAffectsLayout:s,mode:l,anchorX:c,anchorY:d,root:h})=>{const p=m0(VF),m=k.useId(),v=k.useRef(n),y=k.useRef(r);g0(()=>{v.current=n,y.current=r});let b=!0,x=k.useMemo(()=>(b=!1,{id:m,initial:e,isPresent:n,custom:a,onExitComplete:P=>{p.set(P,!0);for(const A of p.values())if(!A)return;r&&r()},register:P=>(p.set(P,!1),()=>{p.delete(P),!v.current&&!p.size&&y.current?.()})}),[n,p,r]);return s&&b&&(x={...x}),k.useMemo(()=>{p.forEach((P,A)=>p.set(A,!1))},[n]),k.useEffect(()=>{!n&&!p.size&&r&&r()},[n]),t=R.jsx($F,{pop:l==="popLayout",isPresent:n,anchorX:c,anchorY:d,root:h,children:t}),R.jsx(Df.Provider,{value:x,children:t})};function VF(){return new Map}function l5(t=!0){const e=k.useContext(Df);if(e===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:a}=e,s=k.useId();k.useEffect(()=>{if(t)return a(s)},[t]);const l=k.useCallback(()=>t&&r&&r(s),[s,r,t]);return!n&&r?[!1,l]:[!0]}const bh=t=>t.key||"";function b2(t){const e=[];return k.Children.forEach(t,n=>{k.isValidElement(n)&&e.push(n)}),e}const c5=({children:t,custom:e,initial:n=!0,onExitComplete:r,presenceAffectsLayout:a=!0,mode:s="sync",propagate:l=!1,anchorX:c="left",anchorY:d="top",root:h})=>{const[p,m]=l5(l),v=k.useMemo(()=>b2(t),[t]),y=l&&!p?[]:v.map(bh),b=k.useRef(!0),x=k.useRef(v),P=m0(()=>new Map),A=k.useRef(new Set),[L,T]=k.useState(v),[E,D]=k.useState(v);g0(()=>{b.current=!1,x.current=v;for(let S=0;S<E.length;S++){const j=bh(E[S]);y.includes(j)?(P.delete(j),A.current.delete(j)):P.get(j)!==!0&&P.set(j,!1)}},[E,y.length,y.join("-")]);const $=[];if(v!==L){let S=[...v];for(let j=0;j<E.length;j++){const F=E[j],Z=bh(F);y.includes(Z)||(S.splice(j,0,F),$.push(F))}return s==="wait"&&$.length&&(S=$),D(b2(S)),T(v),null}const{forceRender:I}=k.useContext(f0);return R.jsx(R.Fragment,{children:E.map(S=>{const j=bh(S),F=l&&!p?!1:v===E||y.includes(j),Z=()=>{if(A.current.has(j))return;if(P.has(j))A.current.add(j),P.set(j,!0);else return;let ee=!0;P.forEach(ue=>{ue||(ee=!1)}),ee&&(I?.(),D(x.current),l&&m?.(),r&&r())};return R.jsx(BF,{isPresent:F,initial:!b.current||n?void 0:!1,custom:e,presenceAffectsLayout:a,mode:s,root:h,onExitComplete:F?void 0:Z,anchorX:c,anchorY:d,children:S},j)})})},u5=k.createContext({strict:!1}),k2={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let w2=!1;function HF(){if(w2)return;const t={};for(const e in k2)t[e]={isEnabled:n=>k2[e].some(r=>!!n[r])};FT(t),w2=!0}function d5(){return HF(),Ez()}function WF(t){const e=d5();for(const n in t)e[n]={...e[n],...t[n]};FT(e)}const GF=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Wp(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||GF.has(t)}let h5=t=>!Wp(t);function qF(t){typeof t=="function"&&(h5=e=>e.startsWith("on")?!Wp(e):t(e))}try{qF(require("@emotion/is-prop-valid").default)}catch{}function KF(t,e,n){const r={};for(const a in t)a==="values"&&typeof t.values=="object"||zn(t[a])||(h5(a)||n===!0&&Wp(a)||!e&&!Wp(a)||t.draggable&&a.startsWith("onDrag"))&&(r[a]=t[a]);return r}const jf=k.createContext({});function YF(t,e){if(Of(t)){const{initial:n,animate:r}=t;return{initial:n===!1||Du(n)?n:void 0,animate:Du(r)?r:void 0}}return t.inherit!==!1?e:{}}function ZF(t){const{initial:e,animate:n}=YF(t,k.useContext(jf));return k.useMemo(()=>({initial:e,animate:n}),[x2(e),x2(n)])}function x2(t){return Array.isArray(t)?t.join(" "):t}const V0=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function p5(t,e,n){for(const r in e)!zn(e[r])&&!GT(r,n)&&(t[r]=e[r])}function JF({transformTemplate:t},e){return k.useMemo(()=>{const n=V0();return U0(n,e,t),Object.assign({},n.vars,n.style)},[e])}function XF(t,e){const n=t.style||{},r={};return p5(r,n,t),Object.assign(r,JF(t,e)),r}function QF(t,e){const n={},r=XF(t,e);return t.drag&&t.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(n.tabIndex=0),n.style=r,n}const f5=()=>({...V0(),attrs:{}});function eU(t,e,n,r){const a=k.useMemo(()=>{const s=f5();return qT(s,e,YT(r),t.transformTemplate,t.style),{...s.attrs,style:{...s.style}}},[e]);if(t.style){const s={};p5(s,t.style,t),a.style={...s,...a.style}}return a}const tU=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function H0(t){return typeof t!="string"||t.includes("-")?!1:!!(tU.indexOf(t)>-1||/[A-Z]/u.test(t))}function nU(t,e,n,{latestValues:r},a,s=!1,l){const d=(l??H0(t)?eU:QF)(e,r,a,t),h=KF(e,typeof t=="string",s),p=t!==k.Fragment?{...h,...d,ref:n}:{},{children:m}=e,v=k.useMemo(()=>zn(m)?m.get():m,[m]);return k.createElement(t,{...p,children:v})}function rU({scrapeMotionValuesFromProps:t,createRenderState:e},n,r,a){return{latestValues:aU(n,r,a,t),renderState:e()}}function aU(t,e,n,r){const a={},s=r(t,{});for(const v in s)a[v]=sp(s[v]);let{initial:l,animate:c}=t;const d=Of(t),h=jT(t);e&&h&&!d&&t.inherit!==!1&&(l===void 0&&(l=e.initial),c===void 0&&(c=e.animate));let p=n?n.initial===!1:!1;p=p||l===!1;const m=p?c:l;if(m&&typeof m!="boolean"&&!Nf(m)){const v=Array.isArray(m)?m:[m];for(let y=0;y<v.length;y++){const b=L0(t,v[y]);if(b){const{transitionEnd:x,transition:P,...A}=b;for(const L in A){let T=A[L];if(Array.isArray(T)){const E=p?T.length-1:0;T=T[E]}T!==null&&(a[L]=T)}for(const L in x)a[L]=x[L]}}}return a}const m5=t=>(e,n)=>{const r=k.useContext(jf),a=k.useContext(Df),s=()=>rU(t,e,r,a);return n?s():m0(s)},iU=m5({scrapeMotionValuesFromProps:$0,createRenderState:V0}),sU=m5({scrapeMotionValuesFromProps:ZT,createRenderState:f5}),oU=Symbol.for("motionComponentSymbol");function lU(t,e,n){const r=k.useRef(n);k.useInsertionEffect(()=>{r.current=n});const a=k.useRef(null);return k.useCallback(s=>{s&&t.onMount?.(s),e&&(s?e.mount(s):e.unmount());const l=r.current;if(typeof l=="function")if(s){const c=l(s);typeof c=="function"&&(a.current=c)}else a.current?(a.current(),a.current=null):l(s);else l&&(l.current=s)},[e])}const g5=k.createContext({});function ll(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function cU(t,e,n,r,a,s){const{visualElement:l}=k.useContext(jf),c=k.useContext(u5),d=k.useContext(Df),h=k.useContext(B0),p=h.reducedMotion,m=h.skipAnimations,v=k.useRef(null),y=k.useRef(!1);r=r||c.renderer,!v.current&&r&&(v.current=r(t,{visualState:e,parent:l,props:n,presenceContext:d,blockInitialAnimation:d?d.initial===!1:!1,reducedMotionConfig:p,skipAnimations:m,isSVG:s}),y.current&&v.current&&(v.current.manuallyAnimateOnMount=!0));const b=v.current,x=k.useContext(g5);b&&!b.projection&&a&&(b.type==="html"||b.type==="svg")&&uU(v.current,n,a,x);const P=k.useRef(!1);k.useInsertionEffect(()=>{b&&P.current&&b.update(n,d)});const A=n[ST],L=k.useRef(!!A&&typeof window<"u"&&!window.MotionHandoffIsComplete?.(A)&&window.MotionHasOptimisedAnimation?.(A));return g0(()=>{y.current=!0,b&&(P.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),b.scheduleRenderMicrotask(),L.current&&b.animationState&&b.animationState.animateChanges())}),k.useEffect(()=>{b&&(!L.current&&b.animationState&&b.animationState.animateChanges(),L.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(A)}),L.current=!1),b.enteringChildren=void 0)}),b}function uU(t,e,n,r){const{layoutId:a,layout:s,drag:l,dragConstraints:c,layoutScroll:d,layoutRoot:h,layoutAnchor:p,layoutCrossfade:m}=e;t.projection=new n(t.latestValues,e["data-framer-portal-id"]?void 0:v5(t.parent)),t.projection.setOptions({layoutId:a,layout:s,alwaysMeasureLayout:!!l||c&&ll(c),visualElement:t,animationType:typeof s=="string"?s:"both",initialPromotionConfig:r,crossfade:m,layoutScroll:d,layoutRoot:h,layoutAnchor:p})}function v5(t){if(t)return t.options.allowProjection!==!1?t.projection:v5(t.parent)}function ev(t,{forwardMotionProps:e=!1,type:n}={},r,a){r&&WF(r);const s=n?n==="svg":H0(t),l=s?sU:iU;function c(h,p){let m;const v={...k.useContext(B0),...h,layoutId:dU(h)},{isStatic:y}=v,b=ZF(h),x=l(h,y);if(!y&&typeof window<"u"){hU();const P=pU(v);m=P.MeasureLayout,b.visualElement=cU(t,x,v,a,P.ProjectionNode,s)}return R.jsxs(jf.Provider,{value:b,children:[m&&b.visualElement?R.jsx(m,{visualElement:b.visualElement,...v}):null,nU(t,h,lU(x,b.visualElement,p),x,y,e,s)]})}c.displayName=`motion.${typeof t=="string"?t:`create(${t.displayName??t.name??""})`}`;const d=k.forwardRef(c);return d[oU]=t,d}function dU({layoutId:t}){const e=k.useContext(f0).id;return e&&t!==void 0?e+"-"+t:t}function hU(t,e){k.useContext(u5).strict}function pU(t){const e=d5(),{drag:n,layout:r}=e;if(!n&&!r)return{};const a={...n,...r};return{MeasureLayout:n?.isEnabled(t)||r?.isEnabled(t)?a.MeasureLayout:void 0,ProjectionNode:a.ProjectionNode}}function fU(t,e){if(typeof Proxy>"u")return ev;const n=new Map,r=(s,l)=>ev(s,l,t,e),a=(s,l)=>r(s,l);return new Proxy(a,{get:(s,l)=>l==="create"?r:(n.has(l)||n.set(l,ev(l,void 0,t,e)),n.get(l))})}const mU=(t,e)=>e.isSVG??H0(t)?new Wz(e):new Fz(e,{allowProjection:t!==k.Fragment});class gU extends vs{constructor(e){super(e),e.animationState||(e.animationState=Zz(e))}updateAnimationControlsSubscription(){const{animate:e}=this.node.getProps();Nf(e)&&(this.unmountControls=e.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:e}=this.node.getProps(),{animate:n}=this.node.prevProps||{};e!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let vU=0;class _U extends vs{constructor(){super(...arguments),this.id=vU++,this.isExitComplete=!1}update(){if(!this.node.presenceContext)return;const{isPresent:e,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||e===r)return;if(e&&r===!1){if(this.isExitComplete){const{initial:s,custom:l}=this.node.getProps();if(typeof s=="string"||typeof s=="object"&&s!==null&&!Array.isArray(s)){const c=io(this.node,s,l);if(c){const{transition:d,transitionEnd:h,...p}=c;for(const m in p)this.node.getValue(m)?.jump(p[m])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const a=this.node.animationState.setActive("exit",!e);n&&!e&&a.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:e,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),e&&(this.unmount=e(this.id))}unmount(){}}const yU={animation:{Feature:gU},exit:{Feature:_U}};function ad(t){return{point:{x:t.pageX,y:t.pageY}}}const bU=t=>e=>N0(e)&&t(e,ad(e));function gu(t,e,n,r){return Mu(t,e,bU(n),r)}const _5=({current:t})=>t?t.ownerDocument.defaultView:null,P2=(t,e)=>Math.abs(t-e);function kU(t,e){const n=P2(t.x,e.x),r=P2(t.y,e.y);return Math.sqrt(n**2+r**2)}const S2=new Set(["auto","scroll"]);class y5{constructor(e,n,{transformPagePoint:r,contextWindow:a=window,dragSnapToOrigin:s=!1,distanceThreshold:l=3,element:c}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=b=>{this.handleScroll(b.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=kh(this.lastRawMoveEventInfo,this.transformPagePoint));const b=tv(this.lastMoveEventInfo,this.history),x=this.startEvent!==null,P=kU(b.offset,{x:0,y:0})>=this.distanceThreshold;if(!x&&!P)return;const{point:A}=b,{timestamp:L}=On;this.history.push({...A,timestamp:L});const{onStart:T,onMove:E}=this.handlers;x||(T&&T(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),E&&E(this.lastMoveEvent,b)},this.handlePointerMove=(b,x)=>{this.lastMoveEvent=b,this.lastRawMoveEventInfo=x,this.lastMoveEventInfo=kh(x,this.transformPagePoint),Ot.update(this.updatePoint,!0)},this.handlePointerUp=(b,x)=>{this.end();const{onEnd:P,onSessionEnd:A,resumeAnimation:L}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&L&&L(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const T=tv(b.type==="pointercancel"?this.lastMoveEventInfo:kh(x,this.transformPagePoint),this.history);this.startEvent&&P&&P(b,T),A&&A(b,T)},!N0(e))return;this.dragSnapToOrigin=s,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=l,this.contextWindow=a||window;const d=ad(e),h=kh(d,this.transformPagePoint),{point:p}=h,{timestamp:m}=On;this.history=[{...p,timestamp:m}];const{onSessionStart:v}=n;v&&v(e,tv(h,this.history));const y={passive:!0,capture:!0};this.removeListeners=td(gu(this.contextWindow,"pointermove",this.handlePointerMove,y),gu(this.contextWindow,"pointerup",this.handlePointerUp,y),gu(this.contextWindow,"pointercancel",this.handlePointerUp,y)),c&&this.startScrollTracking(c)}startScrollTracking(e){let n=e.parentElement;for(;n;){const r=getComputedStyle(n);(S2.has(r.overflowX)||S2.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(e){const n=this.scrollPositions.get(e);if(!n)return;const r=e===window,a=r?{x:window.scrollX,y:window.scrollY}:{x:e.scrollLeft,y:e.scrollTop},s={x:a.x-n.x,y:a.y-n.y};s.x===0&&s.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=s.x,this.lastMoveEventInfo.point.y+=s.y):this.history.length>0&&(this.history[0].x-=s.x,this.history[0].y-=s.y),this.scrollPositions.set(e,a),Ot.update(this.updatePoint,!0))}updateHandlers(e){this.handlers=e}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),ps(this.updatePoint)}}function kh(t,e){return e?{point:e(t.point)}:t}function C2(t,e){return{x:t.x-e.x,y:t.y-e.y}}function tv({point:t},e){return{point:t,delta:C2(t,b5(e)),offset:C2(t,wU(e)),velocity:xU(e,.1)}}function wU(t){return t[0]}function b5(t){return t[t.length-1]}function xU(t,e){if(t.length<2)return{x:0,y:0};let n=t.length-1,r=null;const a=b5(t);for(;n>=0&&(r=t[n],!(a.timestamp-r.timestamp>Ar(e)));)n--;if(!r)return{x:0,y:0};r===t[0]&&t.length>2&&a.timestamp-r.timestamp>Ar(e)*2&&(r=t[1]);const s=Wr(a.timestamp-r.timestamp);if(s===0)return{x:0,y:0};const l={x:(a.x-r.x)/s,y:(a.y-r.y)/s};return l.x===1/0&&(l.x=0),l.y===1/0&&(l.y=0),l}function PU(t,{min:e,max:n},r){return e!==void 0&&t<e?t=r?Nt(e,t,r.min):Math.max(t,e):n!==void 0&&t>n&&(t=r?Nt(n,t,r.max):Math.min(t,n)),t}function T2(t,e,n){return{min:e!==void 0?t.min+e:void 0,max:n!==void 0?t.max+n-(t.max-t.min):void 0}}function SU(t,{top:e,left:n,bottom:r,right:a}){return{x:T2(t.x,n,a),y:T2(t.y,e,r)}}function E2(t,e){let n=e.min-t.min,r=e.max-t.max;return e.max-e.min<t.max-t.min&&([n,r]=[r,n]),{min:n,max:r}}function CU(t,e){return{x:E2(t.x,e.x),y:E2(t.y,e.y)}}function TU(t,e){let n=.5;const r=rr(t),a=rr(e);return a>r?n=Lu(e.min,e.max-r,t.min):r>a&&(n=Lu(t.min,t.max-a,e.min)),Za(0,1,n)}function EU(t,e){const n={};return e.min!==void 0&&(n.min=e.min-t.min),e.max!==void 0&&(n.max=e.max-t.min),n}const M_=.35;function AU(t=M_){return t===!1?t=0:t===!0&&(t=M_),{x:A2(t,"left","right"),y:A2(t,"top","bottom")}}function A2(t,e,n){return{min:R2(t,e),max:R2(t,n)}}function R2(t,e){return typeof t=="number"?t:t[e]||0}const RU=new WeakMap;class LU{constructor(e){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Pn(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=e}start(e,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:a}=this.visualElement;if(a&&a.isPresent===!1)return;const s=m=>{n&&this.snapToCursor(ad(m).point),this.stopAnimation()},l=(m,v)=>{const{drag:y,dragPropagation:b,onDragStart:x}=this.getProps();if(y&&!b&&(this.openDragLock&&this.openDragLock(),this.openDragLock=iz(y),!this.openDragLock))return;this.latestPointerEvent=m,this.latestPanInfo=v,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),ja(A=>{let L=this.getAxisMotionValue(A).get()||0;if(Va.test(L)){const{projection:T}=this.visualElement;if(T&&T.layout){const E=T.layout.layoutBox[A];E&&(L=rr(E)*(parseFloat(L)/100))}}this.originPoint[A]=L}),x&&Ot.update(()=>x(m,v),!1,!0),S_(this.visualElement,"transform");const{animationState:P}=this.visualElement;P&&P.setActive("whileDrag",!0)},c=(m,v)=>{this.latestPointerEvent=m,this.latestPanInfo=v;const{dragPropagation:y,dragDirectionLock:b,onDirectionLock:x,onDrag:P}=this.getProps();if(!y&&!this.openDragLock)return;const{offset:A}=v;if(b&&this.currentDirection===null){this.currentDirection=DU(A),this.currentDirection!==null&&x&&x(this.currentDirection);return}this.updateAxis("x",v.point,A),this.updateAxis("y",v.point,A),this.visualElement.render(),P&&Ot.update(()=>P(m,v),!1,!0)},d=(m,v)=>{this.latestPointerEvent=m,this.latestPanInfo=v,this.stop(m,v),this.latestPointerEvent=null,this.latestPanInfo=null},h=()=>{const{dragSnapToOrigin:m}=this.getProps();(m||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:p}=this.getProps();this.panSession=new y5(e,{onSessionStart:s,onStart:l,onMove:c,onSessionEnd:d,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:p,distanceThreshold:r,contextWindow:_5(this.visualElement),element:this.visualElement.current})}stop(e,n){const r=e||this.latestPointerEvent,a=n||this.latestPanInfo,s=this.isDragging;if(this.cancel(),!s||!a||!r)return;const{velocity:l}=a;this.startAnimation(l);const{onDragEnd:c}=this.getProps();c&&Ot.postRender(()=>c(r,a))}cancel(){this.isDragging=!1;const{projection:e,animationState:n}=this.visualElement;e&&(e.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(e,n,r){const{drag:a}=this.getProps();if(!r||!wh(e,a,this.currentDirection))return;const s=this.getAxisMotionValue(e);let l=this.originPoint[e]+r[e];this.constraints&&this.constraints[e]&&(l=PU(l,this.constraints[e],this.elastic[e])),s.set(l)}resolveConstraints(){const{dragConstraints:e,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,a=this.constraints;e&&ll(e)?this.constraints||(this.constraints=this.resolveRefConstraints()):e&&r?this.constraints=SU(r.layoutBox,e):this.constraints=!1,this.elastic=AU(n),a!==this.constraints&&!ll(e)&&r&&this.constraints&&!this.hasMutatedConstraints&&ja(s=>{this.constraints!==!1&&this.getAxisMotionValue(s)&&(this.constraints[s]=EU(r.layoutBox[s],this.constraints[s]))})}resolveRefConstraints(){const{dragConstraints:e,onMeasureDragConstraints:n}=this.getProps();if(!e||!ll(e))return!1;const r=e.current,{projection:a}=this.visualElement;if(!a||!a.layout)return!1;a.root&&(a.root.scroll=void 0,a.root.updateScroll());const s=Dz(r,a.root,this.visualElement.getTransformPagePoint());let l=CU(a.layout.layoutBox,s);if(n){const c=n(Rz(l));this.hasMutatedConstraints=!!c,c&&(l=$T(c))}return l}startAnimation(e){const{drag:n,dragMomentum:r,dragElastic:a,dragTransition:s,dragSnapToOrigin:l,onDragTransitionEnd:c}=this.getProps(),d=this.constraints||{},h=ja(p=>{if(!wh(p,n,this.currentDirection))return;let m=d&&d[p]||{};(l===!0||l===p)&&(m={min:0,max:0});const v=a?200:1e6,y=a?40:1e7,b={type:"inertia",velocity:r?e[p]:0,bounceStiffness:v,bounceDamping:y,timeConstant:750,restDelta:1,restSpeed:10,...s,...m};return this.startAxisValueAnimation(p,b)});return Promise.all(h).then(c)}startAxisValueAnimation(e,n){const r=this.getAxisMotionValue(e);return S_(this.visualElement,e),r.start(R0(e,r,0,n,this.visualElement,!1))}stopAnimation(){ja(e=>this.getAxisMotionValue(e).stop())}getAxisMotionValue(e){const n=`_drag${e.toUpperCase()}`,a=this.visualElement.getProps()[n];return a||this.visualElement.getValue(e,this.visualElement.latestValues[e]??0)}snapToCursor(e){ja(n=>{const{drag:r}=this.getProps();if(!wh(n,r,this.currentDirection))return;const{projection:a}=this.visualElement,s=this.getAxisMotionValue(n);if(a&&a.layout){const{min:l,max:c}=a.layout.layoutBox[n],d=s.get()||0;s.set(e[n]-Nt(l,c,.5)+d)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:e,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!ll(n)||!r||!this.constraints)return;this.stopAnimation();const a={x:0,y:0};ja(l=>{const c=this.getAxisMotionValue(l);if(c&&this.constraints!==!1){const d=c.get();a[l]=TU({min:d,max:d},this.constraints[l])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.constraints=!1,this.resolveConstraints(),ja(l=>{if(!wh(l,e,null))return;const c=this.getAxisMotionValue(l),{min:d,max:h}=this.constraints[l];c.set(Nt(d,h,a[l]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;RU.set(this.visualElement,this);const e=this.visualElement.current,n=gu(e,"pointerdown",h=>{const{drag:p,dragListener:m=!0}=this.getProps(),v=h.target,y=v!==e&&dz(v);p&&m&&!y&&this.start(h)});let r;const a=()=>{const{dragConstraints:h}=this.getProps();ll(h)&&h.current&&(this.constraints=this.resolveRefConstraints(),r||(r=IU(e,h.current,()=>this.scalePositionWithinConstraints())))},{projection:s}=this.visualElement,l=s.addEventListener("measure",a);s&&!s.layout&&(s.root&&s.root.updateScroll(),s.updateLayout()),Ot.read(a);const c=Mu(window,"resize",()=>this.scalePositionWithinConstraints()),d=s.addEventListener("didUpdate",(({delta:h,hasLayoutChanged:p})=>{this.isDragging&&p&&(ja(m=>{const v=this.getAxisMotionValue(m);v&&(this.originPoint[m]+=h[m].translate,v.set(v.get()+h[m].translate))}),this.visualElement.render())}));return()=>{c(),n(),l(),d&&d(),r&&r()}}getProps(){const e=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:a=!1,dragConstraints:s=!1,dragElastic:l=M_,dragMomentum:c=!0}=e;return{...e,drag:n,dragDirectionLock:r,dragPropagation:a,dragConstraints:s,dragElastic:l,dragMomentum:c}}}function L2(t){let e=!0;return()=>{if(e){e=!1;return}t()}}function IU(t,e,n){const r=zx(t,L2(n)),a=zx(e,L2(n));return()=>{r(),a()}}function wh(t,e,n){return(e===!0||e===t)&&(n===null||n===t)}function DU(t,e=10){let n=null;return Math.abs(t.y)>e?n="y":Math.abs(t.x)>e&&(n="x"),n}class MU extends vs{constructor(e){super(e),this.removeGroupControls=Kr,this.removeListeners=Kr,this.controls=new LU(e)}mount(){const{dragControls:e}=this.node.getProps();e&&(this.removeGroupControls=e.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Kr}update(){const{dragControls:e}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};e!==n&&(this.removeGroupControls(),e&&(this.removeGroupControls=e.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const nv=t=>(e,n)=>{t&&Ot.update(()=>t(e,n),!1,!0)};class NU extends vs{constructor(){super(...arguments),this.removePointerDownListener=Kr}onPointerDown(e){this.session=new y5(e,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:_5(this.node)})}createPanHandlers(){const{onPanSessionStart:e,onPanStart:n,onPan:r,onPanEnd:a}=this.node.getProps();return{onSessionStart:nv(e),onStart:nv(n),onMove:nv(r),onEnd:(s,l)=>{delete this.session,a&&Ot.postRender(()=>a(s,l))}}}mount(){this.removePointerDownListener=gu(this.node.current,"pointerdown",e=>this.onPointerDown(e))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let rv=!1;class OU extends k.Component{componentDidMount(){const{visualElement:e,layoutGroup:n,switchLayoutGroup:r,layoutId:a}=this.props,{projection:s}=e;s&&(n.group&&n.group.add(s),r&&r.register&&a&&r.register(s),rv&&s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),op.hasEverUpdated=!0}getSnapshotBeforeUpdate(e){const{layoutDependency:n,visualElement:r,drag:a,isPresent:s}=this.props,{projection:l}=r;return l&&(l.isPresent=s,e.layoutDependency!==n&&l.setOptions({...l.options,layoutDependency:n}),rv=!0,a||e.layoutDependency!==n||n===void 0||e.isPresent!==s?l.willUpdate():this.safeToRemove(),e.isPresent!==s&&(s?l.promote():l.relegate()||Ot.postRender(()=>{const c=l.getStack();(!c||!c.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:e,layoutAnchor:n}=this.props,{projection:r}=e;r&&(r.options.layoutAnchor=n,r.root.didUpdate(),M0.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:e,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:a}=e;rv=!0,a&&(a.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(a),r&&r.deregister&&r.deregister(a))}safeToRemove(){const{safeToRemove:e}=this.props;e&&e()}render(){return null}}function k5(t){const[e,n]=l5(),r=k.useContext(f0);return R.jsx(OU,{...t,layoutGroup:r,switchLayoutGroup:k.useContext(g5),isPresent:e,safeToRemove:n})}const jU={pan:{Feature:NU},drag:{Feature:MU,ProjectionNode:o5,MeasureLayout:k5}};function I2(t,e,n){const{props:r}=t;t.animationState&&r.whileHover&&t.animationState.setActive("whileHover",n==="Start");const a="onHover"+n,s=r[a];s&&Ot.postRender(()=>s(e,ad(e)))}class zU extends vs{mount(){const{current:e}=this.node;e&&(this.unmount=oz(e,(n,r)=>(I2(this.node,r,"Start"),a=>I2(this.node,a,"End"))))}unmount(){}}class FU extends vs{constructor(){super(...arguments),this.isActive=!1}onFocus(){let e=!1;try{e=this.node.current.matches(":focus-visible")}catch{e=!0}!e||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=td(Mu(this.node.current,"focus",()=>this.onFocus()),Mu(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function D2(t,e,n){const{props:r}=t;if(t.current instanceof HTMLButtonElement&&t.current.disabled)return;t.animationState&&r.whileTap&&t.animationState.setActive("whileTap",n==="Start");const a="onTap"+(n==="End"?"":n),s=r[a];s&&Ot.postRender(()=>s(e,ad(e)))}class UU extends vs{mount(){const{current:e}=this.node;if(!e)return;const{globalTapTarget:n,propagate:r}=this.node.props;this.unmount=pz(e,(a,s)=>(D2(this.node,s,"Start"),(l,{success:c})=>D2(this.node,l,c?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:r?.tap===!1})}unmount(){}}const N_=new WeakMap,av=new WeakMap,$U=t=>{const e=N_.get(t.target);e&&e(t)},BU=t=>{t.forEach($U)};function VU({root:t,...e}){const n=t||document;av.has(n)||av.set(n,{});const r=av.get(n),a=JSON.stringify(e);return r[a]||(r[a]=new IntersectionObserver(BU,{root:t,...e})),r[a]}function HU(t,e,n){const r=VU(e);return N_.set(t,n),r.observe(t),()=>{N_.delete(t),r.unobserve(t)}}const WU={some:0,all:1};class GU extends vs{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.stopObserver?.();const{viewport:e={}}=this.node.getProps(),{root:n,margin:r,amount:a="some",once:s}=e,l={root:n?n.current:void 0,rootMargin:r,threshold:typeof a=="number"?a:WU[a]},c=d=>{const{isIntersecting:h}=d;if(this.isInView===h||(this.isInView=h,s&&!h&&this.hasEnteredView))return;h&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",h);const{onViewportEnter:p,onViewportLeave:m}=this.node.getProps(),v=h?p:m;v&&v(d)};this.stopObserver=HU(this.node.current,l,c)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:e,prevProps:n}=this.node;["amount","margin","root"].some(qU(e,n))&&this.startObserver()}unmount(){this.stopObserver?.(),this.hasEnteredView=!1,this.isInView=!1}}function qU({viewport:t={}},{viewport:e={}}={}){return n=>t[n]!==e[n]}const KU={inView:{Feature:GU},tap:{Feature:UU},focus:{Feature:FU},hover:{Feature:zU}},YU={layout:{ProjectionNode:o5,MeasureLayout:k5}},ZU={...yU,...KU,...jU,...YU},JU=fU(ZU,mU);function XU(){!F0.current&&zT();const[t]=k.useState($p.current);return t}const vu=JU;function w5(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var a=t.length;for(e=0;e<a;e++)t[e]&&(n=w5(t[e]))&&(r&&(r+=" "),r+=n)}else for(n in t)t[n]&&(r&&(r+=" "),r+=n);return r}function QU(){for(var t,e,n=0,r="",a=arguments.length;n<a;n++)(t=arguments[n])&&(e=w5(t))&&(r&&(r+=" "),r+=e);return r}const e$=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r<t.length;r++)n[r]=t[r];for(let r=0;r<e.length;r++)n[t.length+r]=e[r];return n},t$=(t,e)=>({classGroupId:t,validator:e}),x5=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),Gp="-",M2=[],n$="arbitrary..",r$=t=>{const e=i$(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return a$(l);const c=l.split(Gp),d=c[0]===""&&c.length>1?1:0;return P5(c,d,e)},getConflictingClassGroupIds:(l,c)=>{if(c){const d=r[l],h=n[l];return d?h?e$(h,d):d:h||M2}return n[l]||M2}}},P5=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const a=t[e],s=n.nextPart.get(a);if(s){const h=P5(t,e+1,s);if(h)return h}const l=n.validators;if(l===null)return;const c=e===0?t.join(Gp):t.slice(e).join(Gp),d=l.length;for(let h=0;h<d;h++){const p=l[h];if(p.validator(c))return p.classGroupId}},a$=t=>t.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?n$+r:void 0})(),i$=t=>{const{theme:e,classGroups:n}=t;return s$(n,e)},s$=(t,e)=>{const n=x5();for(const r in t){const a=t[r];W0(a,n,r,e)}return n},W0=(t,e,n,r)=>{const a=t.length;for(let s=0;s<a;s++){const l=t[s];o$(l,e,n,r)}},o$=(t,e,n,r)=>{if(typeof t=="string"){l$(t,e,n);return}if(typeof t=="function"){c$(t,e,n,r);return}u$(t,e,n,r)},l$=(t,e,n)=>{const r=t===""?e:S5(e,t);r.classGroupId=n},c$=(t,e,n,r)=>{if(d$(t)){W0(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(t$(n,t))},u$=(t,e,n,r)=>{const a=Object.entries(t),s=a.length;for(let l=0;l<s;l++){const[c,d]=a[l];W0(d,S5(e,c),n,r)}},S5=(t,e)=>{let n=t;const r=e.split(Gp),a=r.length;for(let s=0;s<a;s++){const l=r[s];let c=n.nextPart.get(l);c||(c=x5(),n.nextPart.set(l,c)),n=c}return n},d$=t=>"isThemeGetter"in t&&t.isThemeGetter===!0,h$=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const a=(s,l)=>{n[s]=l,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(s){let l=n[s];if(l!==void 0)return l;if((l=r[s])!==void 0)return a(s,l),l},set(s,l){s in n?n[s]=l:a(s,l)}}},O_="!",N2=":",p$=[],O2=(t,e,n,r,a)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:a}),f$=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=a=>{const s=[];let l=0,c=0,d=0,h;const p=a.length;for(let x=0;x<p;x++){const P=a[x];if(l===0&&c===0){if(P===N2){s.push(a.slice(d,x)),d=x+1;continue}if(P==="/"){h=x;continue}}P==="["?l++:P==="]"?l--:P==="("?c++:P===")"&&c--}const m=s.length===0?a:a.slice(d);let v=m,y=!1;m.endsWith(O_)?(v=m.slice(0,-1),y=!0):m.startsWith(O_)&&(v=m.slice(1),y=!0);const b=h&&h>d?h-d:void 0;return O2(s,y,v,b)};if(e){const a=e+N2,s=r;r=l=>l.startsWith(a)?s(l.slice(a.length)):O2(p$,!1,l,void 0,!0)}if(n){const a=r;r=s=>n({className:s,parseClassName:a})}return r},m$=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let a=[];for(let s=0;s<n.length;s++){const l=n[s],c=l[0]==="[",d=e.has(l);c||d?(a.length>0&&(a.sort(),r.push(...a),a=[]),r.push(l)):a.push(l)}return a.length>0&&(a.sort(),r.push(...a)),r}},g$=t=>({cache:h$(t.cacheSize),parseClassName:f$(t),sortModifiers:m$(t),postfixLookupClassGroupIds:v$(t),...r$(t)}),v$=t=>{const e=Object.create(null),n=t.postfixLookupClassGroups;if(n)for(let r=0;r<n.length;r++)e[n[r]]=!0;return e},_$=/\s+/,y$=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:a,sortModifiers:s,postfixLookupClassGroupIds:l}=e,c=[],d=t.trim().split(_$);let h="";for(let p=d.length-1;p>=0;p-=1){const m=d[p],{isExternal:v,modifiers:y,hasImportantModifier:b,baseClassName:x,maybePostfixModifierPosition:P}=n(m);if(v){h=m+(h.length>0?" "+h:h);continue}let A=!!P,L;if(A){const I=x.substring(0,P);L=r(I);const S=L&&l[L]?r(x):void 0;S&&S!==L&&(L=S,A=!1)}else L=r(x);if(!L){if(!A){h=m+(h.length>0?" "+h:h);continue}if(L=r(x),!L){h=m+(h.length>0?" "+h:h);continue}A=!1}const T=y.length===0?"":y.length===1?y[0]:s(y).join(":"),E=b?T+O_:T,D=E+L;if(c.indexOf(D)>-1)continue;c.push(D);const $=a(L,A);for(let I=0;I<$.length;++I){const S=$[I];c.push(E+S)}h=m+(h.length>0?" "+h:h)}return h},b$=(...t)=>{let e=0,n,r,a="";for(;e<t.length;)(n=t[e++])&&(r=C5(n))&&(a&&(a+=" "),a+=r);return a},C5=t=>{if(typeof t=="string")return t;let e,n="";for(let r=0;r<t.length;r++)t[r]&&(e=C5(t[r]))&&(n&&(n+=" "),n+=e);return n},k$=(t,...e)=>{let n,r,a,s;const l=d=>{const h=e.reduce((p,m)=>m(p),t());return n=g$(h),r=n.cache.get,a=n.cache.set,s=c,c(d)},c=d=>{const h=r(d);if(h)return h;const p=y$(d,n);return a(d,p),p};return s=l,(...d)=>s(b$(...d))},w$=[],xn=t=>{const e=n=>n[t]||w$;return e.isThemeGetter=!0,e},T5=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,E5=/^\((?:(\w[\w-]*):)?(.+)\)$/i,x$=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,P$=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,S$=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,C$=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,T$=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,E$=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ts=t=>x$.test(t),lt=t=>!!t&&!Number.isNaN(Number(t)),Ia=t=>!!t&&Number.isInteger(Number(t)),iv=t=>t.endsWith("%")&&lt(t.slice(0,-1)),hi=t=>P$.test(t),A5=()=>!0,A$=t=>S$.test(t)&&!C$.test(t),G0=()=>!1,R$=t=>T$.test(t),L$=t=>E$.test(t),I$=t=>!Te(t)&&!Ae(t),D$=t=>t.startsWith("@container")&&(t[10]==="/"&&t[11]!==void 0||t[11]==="s"&&t[16]!==void 0&&t.startsWith("-size/",10)||t[11]==="n"&&t[18]!==void 0&&t.startsWith("-normal/",10)),M$=t=>_s(t,I5,G0),Te=t=>T5.test(t),Os=t=>_s(t,D5,A$),j2=t=>_s(t,B$,lt),N$=t=>_s(t,N5,A5),O$=t=>_s(t,M5,G0),z2=t=>_s(t,R5,G0),j$=t=>_s(t,L5,L$),xh=t=>_s(t,O5,R$),Ae=t=>E5.test(t),zc=t=>bo(t,D5),z$=t=>bo(t,M5),F2=t=>bo(t,R5),F$=t=>bo(t,I5),U$=t=>bo(t,L5),Ph=t=>bo(t,O5,!0),$$=t=>bo(t,N5,!0),_s=(t,e,n)=>{const r=T5.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},bo=(t,e,n=!1)=>{const r=E5.exec(t);return r?r[1]?e(r[1]):n:!1},R5=t=>t==="position"||t==="percentage",L5=t=>t==="image"||t==="url",I5=t=>t==="length"||t==="size"||t==="bg-size",D5=t=>t==="length",B$=t=>t==="number",M5=t=>t==="family-name",N5=t=>t==="number"||t==="weight",O5=t=>t==="shadow",V$=()=>{const t=xn("color"),e=xn("font"),n=xn("text"),r=xn("font-weight"),a=xn("tracking"),s=xn("leading"),l=xn("breakpoint"),c=xn("container"),d=xn("spacing"),h=xn("radius"),p=xn("shadow"),m=xn("inset-shadow"),v=xn("text-shadow"),y=xn("drop-shadow"),b=xn("blur"),x=xn("perspective"),P=xn("aspect"),A=xn("ease"),L=xn("animate"),T=()=>["auto","avoid","all","avoid-page","page","left","right","column"],E=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],D=()=>[...E(),Ae,Te],$=()=>["auto","hidden","clip","visible","scroll"],I=()=>["auto","contain","none"],S=()=>[Ae,Te,d],j=()=>[ts,"full","auto",...S()],F=()=>[Ia,"none","subgrid",Ae,Te],Z=()=>["auto",{span:["full",Ia,Ae,Te]},Ia,Ae,Te],ee=()=>[Ia,"auto",Ae,Te],ue=()=>["auto","min","max","fr",Ae,Te],re=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ae=()=>["start","end","center","stretch","center-safe","end-safe"],te=()=>["auto",...S()],le=()=>[ts,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...S()],H=()=>[ts,"screen","full","dvw","lvw","svw","min","max","fit",...S()],Q=()=>[ts,"screen","full","lh","dvh","lvh","svh","min","max","fit",...S()],W=()=>[t,Ae,Te],N=()=>[...E(),F2,z2,{position:[Ae,Te]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],pe=()=>["auto","cover","contain",F$,M$,{size:[Ae,Te]}],ke=()=>[iv,zc,Os],de=()=>["","none","full",h,Ae,Te],be=()=>["",lt,zc,Os],je=()=>["solid","dashed","dotted","double"],$e=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Le=()=>[lt,iv,F2,z2],St=()=>["","none",b,Ae,Te],un=()=>["none",lt,Ae,Te],jt=()=>["none",lt,Ae,Te],_t=()=>[lt,Ae,Te],Zt=()=>[ts,"full",...S()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[hi],breakpoint:[hi],color:[A5],container:[hi],"drop-shadow":[hi],ease:["in","out","in-out"],font:[I$],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[hi],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[hi],shadow:[hi],spacing:["px",lt],text:[hi],"text-shadow":[hi],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ts,Te,Ae,P]}],container:["container"],"container-type":[{"@container":["","normal","size",Ae,Te]}],"container-named":[D$],columns:[{columns:[lt,Te,Ae,c]}],"break-after":[{"break-after":T()}],"break-before":[{"break-before":T()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:D()}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:I()}],"overscroll-x":[{"overscroll-x":I()}],"overscroll-y":[{"overscroll-y":I()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:j()}],"inset-x":[{"inset-x":j()}],"inset-y":[{"inset-y":j()}],start:[{"inset-s":j(),start:j()}],end:[{"inset-e":j(),end:j()}],"inset-bs":[{"inset-bs":j()}],"inset-be":[{"inset-be":j()}],top:[{top:j()}],right:[{right:j()}],bottom:[{bottom:j()}],left:[{left:j()}],visibility:["visible","invisible","collapse"],z:[{z:[Ia,"auto",Ae,Te]}],basis:[{basis:[ts,"full","auto",c,...S()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[lt,ts,"auto","initial","none",Te]}],grow:[{grow:["",lt,Ae,Te]}],shrink:[{shrink:["",lt,Ae,Te]}],order:[{order:[Ia,"first","last","none",Ae,Te]}],"grid-cols":[{"grid-cols":F()}],"col-start-end":[{col:Z()}],"col-start":[{"col-start":ee()}],"col-end":[{"col-end":ee()}],"grid-rows":[{"grid-rows":F()}],"row-start-end":[{row:Z()}],"row-start":[{"row-start":ee()}],"row-end":[{"row-end":ee()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ue()}],"auto-rows":[{"auto-rows":ue()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...re(),"normal"]}],"justify-items":[{"justify-items":[...ae(),"normal"]}],"justify-self":[{"justify-self":["auto",...ae()]}],"align-content":[{content:["normal",...re()]}],"align-items":[{items:[...ae(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ae(),{baseline:["","last"]}]}],"place-content":[{"place-content":re()}],"place-items":[{"place-items":[...ae(),"baseline"]}],"place-self":[{"place-self":["auto",...ae()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:te()}],mx:[{mx:te()}],my:[{my:te()}],ms:[{ms:te()}],me:[{me:te()}],mbs:[{mbs:te()}],mbe:[{mbe:te()}],mt:[{mt:te()}],mr:[{mr:te()}],mb:[{mb:te()}],ml:[{ml:te()}],"space-x":[{"space-x":S()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":S()}],"space-y-reverse":["space-y-reverse"],size:[{size:le()}],"inline-size":[{inline:["auto",...H()]}],"min-inline-size":[{"min-inline":["auto",...H()]}],"max-inline-size":[{"max-inline":["none",...H()]}],"block-size":[{block:["auto",...Q()]}],"min-block-size":[{"min-block":["auto",...Q()]}],"max-block-size":[{"max-block":["none",...Q()]}],w:[{w:[c,"screen",...le()]}],"min-w":[{"min-w":[c,"screen","none",...le()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[l]},...le()]}],h:[{h:["screen","lh",...le()]}],"min-h":[{"min-h":["screen","lh","none",...le()]}],"max-h":[{"max-h":["screen","lh",...le()]}],"font-size":[{text:["base",n,zc,Os]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,$$,N$]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",iv,Te]}],"font-family":[{font:[z$,O$,e]}],"font-features":[{"font-features":[Te]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,Ae,Te]}],"line-clamp":[{"line-clamp":[lt,"none",Ae,j2]}],leading:[{leading:[s,...S()]}],"list-image":[{"list-image":["none",Ae,Te]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ae,Te]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:W()}],"text-color":[{text:W()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...je(),"wavy"]}],"text-decoration-thickness":[{decoration:[lt,"from-font","auto",Ae,Os]}],"text-decoration-color":[{decoration:W()}],"underline-offset":[{"underline-offset":[lt,"auto",Ae,Te]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:S()}],"tab-size":[{tab:[Ia,Ae,Te]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ae,Te]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ae,Te]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:N()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Ia,Ae,Te],radial:["",Ae,Te],conic:[Ia,Ae,Te]},U$,j$]}],"bg-color":[{bg:W()}],"gradient-from-pos":[{from:ke()}],"gradient-via-pos":[{via:ke()}],"gradient-to-pos":[{to:ke()}],"gradient-from":[{from:W()}],"gradient-via":[{via:W()}],"gradient-to":[{to:W()}],rounded:[{rounded:de()}],"rounded-s":[{"rounded-s":de()}],"rounded-e":[{"rounded-e":de()}],"rounded-t":[{"rounded-t":de()}],"rounded-r":[{"rounded-r":de()}],"rounded-b":[{"rounded-b":de()}],"rounded-l":[{"rounded-l":de()}],"rounded-ss":[{"rounded-ss":de()}],"rounded-se":[{"rounded-se":de()}],"rounded-ee":[{"rounded-ee":de()}],"rounded-es":[{"rounded-es":de()}],"rounded-tl":[{"rounded-tl":de()}],"rounded-tr":[{"rounded-tr":de()}],"rounded-br":[{"rounded-br":de()}],"rounded-bl":[{"rounded-bl":de()}],"border-w":[{border:be()}],"border-w-x":[{"border-x":be()}],"border-w-y":[{"border-y":be()}],"border-w-s":[{"border-s":be()}],"border-w-e":[{"border-e":be()}],"border-w-bs":[{"border-bs":be()}],"border-w-be":[{"border-be":be()}],"border-w-t":[{"border-t":be()}],"border-w-r":[{"border-r":be()}],"border-w-b":[{"border-b":be()}],"border-w-l":[{"border-l":be()}],"divide-x":[{"divide-x":be()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":be()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...je(),"hidden","none"]}],"divide-style":[{divide:[...je(),"hidden","none"]}],"border-color":[{border:W()}],"border-color-x":[{"border-x":W()}],"border-color-y":[{"border-y":W()}],"border-color-s":[{"border-s":W()}],"border-color-e":[{"border-e":W()}],"border-color-bs":[{"border-bs":W()}],"border-color-be":[{"border-be":W()}],"border-color-t":[{"border-t":W()}],"border-color-r":[{"border-r":W()}],"border-color-b":[{"border-b":W()}],"border-color-l":[{"border-l":W()}],"divide-color":[{divide:W()}],"outline-style":[{outline:[...je(),"none","hidden"]}],"outline-offset":[{"outline-offset":[lt,Ae,Te]}],"outline-w":[{outline:["",lt,zc,Os]}],"outline-color":[{outline:W()}],shadow:[{shadow:["","none",p,Ph,xh]}],"shadow-color":[{shadow:W()}],"inset-shadow":[{"inset-shadow":["none",m,Ph,xh]}],"inset-shadow-color":[{"inset-shadow":W()}],"ring-w":[{ring:be()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:W()}],"ring-offset-w":[{"ring-offset":[lt,Os]}],"ring-offset-color":[{"ring-offset":W()}],"inset-ring-w":[{"inset-ring":be()}],"inset-ring-color":[{"inset-ring":W()}],"text-shadow":[{"text-shadow":["none",v,Ph,xh]}],"text-shadow-color":[{"text-shadow":W()}],opacity:[{opacity:[lt,Ae,Te]}],"mix-blend":[{"mix-blend":[...$e(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":$e()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[lt]}],"mask-image-linear-from-pos":[{"mask-linear-from":Le()}],"mask-image-linear-to-pos":[{"mask-linear-to":Le()}],"mask-image-linear-from-color":[{"mask-linear-from":W()}],"mask-image-linear-to-color":[{"mask-linear-to":W()}],"mask-image-t-from-pos":[{"mask-t-from":Le()}],"mask-image-t-to-pos":[{"mask-t-to":Le()}],"mask-image-t-from-color":[{"mask-t-from":W()}],"mask-image-t-to-color":[{"mask-t-to":W()}],"mask-image-r-from-pos":[{"mask-r-from":Le()}],"mask-image-r-to-pos":[{"mask-r-to":Le()}],"mask-image-r-from-color":[{"mask-r-from":W()}],"mask-image-r-to-color":[{"mask-r-to":W()}],"mask-image-b-from-pos":[{"mask-b-from":Le()}],"mask-image-b-to-pos":[{"mask-b-to":Le()}],"mask-image-b-from-color":[{"mask-b-from":W()}],"mask-image-b-to-color":[{"mask-b-to":W()}],"mask-image-l-from-pos":[{"mask-l-from":Le()}],"mask-image-l-to-pos":[{"mask-l-to":Le()}],"mask-image-l-from-color":[{"mask-l-from":W()}],"mask-image-l-to-color":[{"mask-l-to":W()}],"mask-image-x-from-pos":[{"mask-x-from":Le()}],"mask-image-x-to-pos":[{"mask-x-to":Le()}],"mask-image-x-from-color":[{"mask-x-from":W()}],"mask-image-x-to-color":[{"mask-x-to":W()}],"mask-image-y-from-pos":[{"mask-y-from":Le()}],"mask-image-y-to-pos":[{"mask-y-to":Le()}],"mask-image-y-from-color":[{"mask-y-from":W()}],"mask-image-y-to-color":[{"mask-y-to":W()}],"mask-image-radial":[{"mask-radial":[Ae,Te]}],"mask-image-radial-from-pos":[{"mask-radial-from":Le()}],"mask-image-radial-to-pos":[{"mask-radial-to":Le()}],"mask-image-radial-from-color":[{"mask-radial-from":W()}],"mask-image-radial-to-color":[{"mask-radial-to":W()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":E()}],"mask-image-conic-pos":[{"mask-conic":[lt]}],"mask-image-conic-from-pos":[{"mask-conic-from":Le()}],"mask-image-conic-to-pos":[{"mask-conic-to":Le()}],"mask-image-conic-from-color":[{"mask-conic-from":W()}],"mask-image-conic-to-color":[{"mask-conic-to":W()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:N()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ae,Te]}],filter:[{filter:["","none",Ae,Te]}],blur:[{blur:St()}],brightness:[{brightness:[lt,Ae,Te]}],contrast:[{contrast:[lt,Ae,Te]}],"drop-shadow":[{"drop-shadow":["","none",y,Ph,xh]}],"drop-shadow-color":[{"drop-shadow":W()}],grayscale:[{grayscale:["",lt,Ae,Te]}],"hue-rotate":[{"hue-rotate":[lt,Ae,Te]}],invert:[{invert:["",lt,Ae,Te]}],saturate:[{saturate:[lt,Ae,Te]}],sepia:[{sepia:["",lt,Ae,Te]}],"backdrop-filter":[{"backdrop-filter":["","none",Ae,Te]}],"backdrop-blur":[{"backdrop-blur":St()}],"backdrop-brightness":[{"backdrop-brightness":[lt,Ae,Te]}],"backdrop-contrast":[{"backdrop-contrast":[lt,Ae,Te]}],"backdrop-grayscale":[{"backdrop-grayscale":["",lt,Ae,Te]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[lt,Ae,Te]}],"backdrop-invert":[{"backdrop-invert":["",lt,Ae,Te]}],"backdrop-opacity":[{"backdrop-opacity":[lt,Ae,Te]}],"backdrop-saturate":[{"backdrop-saturate":[lt,Ae,Te]}],"backdrop-sepia":[{"backdrop-sepia":["",lt,Ae,Te]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ae,Te]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[lt,"initial",Ae,Te]}],ease:[{ease:["linear","initial",A,Ae,Te]}],delay:[{delay:[lt,Ae,Te]}],animate:[{animate:["none",L,Ae,Te]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[x,Ae,Te]}],"perspective-origin":[{"perspective-origin":D()}],rotate:[{rotate:un()}],"rotate-x":[{"rotate-x":un()}],"rotate-y":[{"rotate-y":un()}],"rotate-z":[{"rotate-z":un()}],scale:[{scale:jt()}],"scale-x":[{"scale-x":jt()}],"scale-y":[{"scale-y":jt()}],"scale-z":[{"scale-z":jt()}],"scale-3d":["scale-3d"],skew:[{skew:_t()}],"skew-x":[{"skew-x":_t()}],"skew-y":[{"skew-y":_t()}],transform:[{transform:[Ae,Te,"","none","gpu","cpu"]}],"transform-origin":[{origin:D()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Zt()}],"translate-x":[{"translate-x":Zt()}],"translate-y":[{"translate-y":Zt()}],"translate-z":[{"translate-z":Zt()}],"translate-none":["translate-none"],zoom:[{zoom:[Ia,Ae,Te]}],accent:[{accent:W()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:W()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ae,Te]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":W()}],"scrollbar-track-color":[{"scrollbar-track":W()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ae,Te]}],fill:[{fill:["none",...W()]}],"stroke-w":[{stroke:[lt,zc,Os,j2]}],stroke:[{stroke:["none",...W()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},H$=k$(V$);function Bt(...t){return H$(QU(t))}const W$=R.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",children:[R.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1Z",fill:"#4285F4"}),R.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23Z",fill:"#34A853"}),R.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18A10.96 10.96 0 0 0 1 12c0 1.77.42 3.44 1.18 4.93l3.66-2.84Z",fill:"#FBBC05"}),R.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53Z",fill:"#EA4335"})]}),G$=R.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor",children:R.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12Z"})}),q$={google:W$,github:G$},K$={google:"Google",github:"GitHub",microsoft:"Microsoft",discord:"Discord",apple:"Apple"};function Y$(t){return K$[t]||String(t||"").replace(/-/g," ")}function Z$(t){if(typeof t=="string"&&t.trim())return t.trim();if(t&&typeof t=="object"){if(typeof t.token=="string"&&t.token.trim())return t.token.trim();if(typeof t.otp=="string"&&t.otp.trim())return t.otp.trim()}return""}function J$({title:t,subtitle:e,className:n="",onSuccess:r,hideLogo:a=!1,initialMode:s="signin",tokenFromUrl:l="",initialEmail:c="",initialCode:d=""}){ed();const{enabled:h,signedIn:p,refreshUser:m,signInWithPassword:v,signUp:y,signInWithOAuth:b,getPublicAuthConfig:x,sendResetPasswordEmail:P,exchangeResetPasswordToken:A,resetPassword:L}=yo(),[T,E]=k.useState(s),[D,$]=k.useState(c),[I,S]=k.useState(""),[j,F]=k.useState(""),[Z,ee]=k.useState(""),[ue,re]=k.useState(d),[ae,te]=k.useState(!1),[le,H]=k.useState(null),[Q,W]=k.useState(null),[N,q]=k.useState(!1),[pe,ke]=k.useState(!!(s!=="signin"||c)),[de,be]=k.useState(!0),[je,$e]=k.useState([]),[Le,St]=k.useState(8);k.useEffect(()=>{s&&E(s)},[s]),k.useEffect(()=>{c&&$(c)},[c]),k.useEffect(()=>{d&&re(d)},[d]),k.useEffect(()=>{if(!h)return;let Qe=!0;return be(!0),(async()=>{const{data:st,error:It}=await x();if(Qe){if(It||!st)$e(["google","github"]);else{const Et=Array.isArray(st.oAuthProviders)?st.oAuthProviders:[],Dn=Array.isArray(st.customOAuthProviders)?st.customOAuthProviders:[];$e([...Et,...Dn]),typeof st.passwordMinLength=="number"&&st.passwordMinLength>0&&St(st.passwordMinLength)}be(!1)}})(),()=>{Qe=!1}},[h,x]),k.useEffect(()=>{p&&r&&r()},[p,r]);const un=k.useMemo(()=>typeof window>"u"?"":!!window.webkit?.messageHandlers?.nativeOAuth?`${window.location.origin}/auth/callback`:`${window.location.origin}/`,[]),jt=k.useMemo(()=>typeof window>"u"?"/reset-password":`${window.location.origin}/reset-password`,[]),_t=k.useCallback(async Qe=>{H(null),te(!0);try{const{error:st}=await b(Qe,un);st&&H(st.message||String(st))}finally{te(!1)}},[b,un]);k.useEffect(()=>{if(!h||de||p||typeof window>"u")return;const Qe=window.location.search;if(!Qe)return;const st=new URLSearchParams(Qe),It=st.get("native")==="1",Et=st.get("provider");It&&Et&&[...je].includes(Et)&&_t(Et)},[h,de,p,je,_t]);const Zt=k.useCallback(async Qe=>{Qe.preventDefault(),H(null),te(!0);try{if(T==="signup"){const{data:It,error:Et}=await y({email:D.trim(),password:I,name:Z.trim()||void 0});if(Et){H(Et.message||String(Et));return}if(It?.requireEmailVerification){W(xe("login.verify_email_pending")),E("signin");return}await m();return}const{error:st}=await v({email:D.trim(),password:I});if(st){H(st.message||String(st));return}await m()}finally{te(!1)}},[T,D,I,Z,y,v,m]),ta=k.useCallback(async Qe=>{Qe.preventDefault(),H(null),te(!0);try{const st=D.trim(),{error:It}=await P({email:st,redirectTo:jt});if(It){H(It.message||String(It));return}$(st),W(xe("reset_password.request.sent")),E("reset_confirm")}finally{te(!1)}},[D,jt,P]),In=k.useCallback(async Qe=>{if(Qe.preventDefault(),H(null),I!==j){H(xe("reset_password.error.password_mismatch"));return}te(!0);try{let st=l;if(!st){const{data:Et,error:Dn}=await A({email:D.trim(),code:ue.trim()});if(Dn){H(Dn.message||String(Dn));return}if(st=Z$(Et),!st){H(xe("reset_password.error.missing_token"));return}}const{error:It}=await L({newPassword:I,otp:st});if(It){H(It.message||String(It));return}q(!0),W(xe("reset_password.success"))}finally{te(!1)}},[ue,j,D,A,I,L,l]);if(!h)return null;const Vt=T==="reset_email"||T==="reset_confirm";return R.jsxs("div",{className:Bt("w-full bg-white dark:bg-oai-gray-950 p-6 transition-colors duration-200",n),children:[Vt&&R.jsxs("button",{type:"button",onClick:()=>{E("signin"),W(null),H(null),q(!1),S(""),F("")},className:"flex items-center gap-1.5 text-xs font-medium text-oai-gray-500 hover:text-oai-black dark:hover:text-white transition-colors mb-4 focus:outline-none",children:[R.jsx(mN,{className:"h-3.5 w-3.5"}),xe("reset_password.back_to_sign_in")]}),R.jsxs("div",{className:Bt("mb-6",Vt?"text-left":"text-center"),children:[!a&&!Vt&&R.jsxs("div",{className:"flex items-center justify-center gap-2 mb-2",children:[R.jsx("img",{src:"/app-icon.png",alt:"",width:28,height:28,className:"rounded-md"}),R.jsx("span",{className:"text-lg font-semibold text-oai-black dark:text-white font-oai tracking-tight",children:xe("shared.app_name")})]}),R.jsx("h2",{className:Bt("text-sm font-semibold text-oai-black dark:text-white tracking-tight mb-1",(a||Vt)&&"text-base font-bold md:text-lg"),children:Vt?xe("reset_password.title"):t||xe("login_modal.subtitle")}),!Vt&&e&&R.jsx("p",{className:"text-xs text-oai-gray-500 dark:text-oai-gray-400 mt-1.5 leading-relaxed max-w-[320px] mx-auto",children:e}),Vt&&R.jsx("p",{className:"text-xs text-oai-gray-500 dark:text-oai-gray-400 mt-1.5 leading-relaxed max-w-[320px]",children:Q&&T==="reset_confirm"&&!N?Q:xe("reset_password.subtitle")})]}),Q&&(!Vt||N)&&R.jsx("div",{className:"mb-4 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900/50 px-3 py-2 text-xs text-oai-gray-700 dark:text-oai-gray-300",children:Q}),le&&R.jsx("p",{className:"mb-4 text-sm text-red-500 dark:text-red-400 text-center",role:"alert",children:le}),T==="reset_email"&&R.jsxs("form",{onSubmit:ta,className:"space-y-3",children:[R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-reset-email",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("login.field.email")}),R.jsx("input",{id:"card-reset-email",type:"email",autoComplete:"email",required:!0,value:D,onChange:Qe=>$(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),R.jsx("button",{type:"submit",disabled:ae,className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors disabled:opacity-50",children:xe("reset_password.request.submit")})]}),T==="reset_confirm"&&(N?R.jsx("button",{type:"button",onClick:()=>{E("signin"),q(!1),W(null),H(null),S(""),F("")},className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors text-center shadow-sm",children:xe("reset_password.success_cta")}):R.jsxs("form",{onSubmit:In,className:"space-y-3",children:[!l&&R.jsxs(R.Fragment,{children:[R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-reset-email-confirm",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("login.field.email")}),R.jsx("input",{id:"card-reset-email-confirm",type:"email",autoComplete:"email",required:!0,value:D,onChange:Qe=>$(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-reset-code",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("reset_password.field.code")}),R.jsx("input",{id:"card-reset-code",type:"text",inputMode:"numeric",autoComplete:"one-time-code",required:!0,value:ue,onChange:Qe=>re(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]})]}),R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-reset-password",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("reset_password.field.new_password")}),R.jsx("input",{id:"card-reset-password",type:"password",autoComplete:"new-password",required:!0,minLength:8,value:I,onChange:Qe=>S(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-reset-password-confirm",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("reset_password.field.confirm_password")}),R.jsx("input",{id:"card-reset-password-confirm",type:"password",autoComplete:"new-password",required:!0,minLength:8,value:j,onChange:Qe=>F(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),R.jsx("button",{type:"submit",disabled:ae,className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors disabled:opacity-50",children:xe("reset_password.reset.submit")})]})),!Vt&&R.jsxs(R.Fragment,{children:[R.jsx("div",{className:"space-y-2.5 mb-5",children:de?R.jsxs("div",{className:"space-y-2.5",children:[R.jsx("div",{className:"h-10 rounded-lg bg-oai-gray-100 dark:bg-oai-gray-900/50 animate-pulse"}),R.jsx("div",{className:"h-10 rounded-lg bg-oai-gray-100 dark:bg-oai-gray-900/50 animate-pulse"})]}):je.map(Qe=>R.jsxs("button",{type:"button",disabled:ae,onClick:()=>_t(Qe),className:Bt("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors disabled:opacity-50","flex items-center justify-center gap-2.5"),children:[q$[Qe]||null,xe("login.oauth.continue",{provider:Y$(Qe)})]},Qe))}),pe?R.jsxs(R.Fragment,{children:[R.jsxs("div",{className:"relative mb-5",children:[R.jsx("div",{className:"absolute inset-0 flex items-center",children:R.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),R.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:R.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:xe("login_modal.divider_email")})})]}),R.jsxs("div",{className:"flex rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 p-0.5 bg-oai-gray-50 dark:bg-oai-gray-900/50 mb-4",children:[R.jsx("button",{type:"button",className:Bt("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",T==="signin"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{E("signin"),H(null)},children:xe("login.tab.sign_in")}),R.jsx("button",{type:"button",className:Bt("flex-1 py-1.5 text-xs font-medium rounded-md transition-colors",T==="signup"?"bg-white dark:bg-oai-gray-800 text-oai-black dark:text-white shadow-sm":"text-oai-gray-500 hover:text-oai-gray-700 dark:hover:text-oai-gray-300"),onClick:()=>{E("signup"),H(null)},children:xe("login.tab.sign_up")})]}),R.jsxs("form",{onSubmit:Zt,className:"space-y-3",children:[T==="signup"&&R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-name",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("login.field.name")}),R.jsx("input",{id:"card-name",type:"text",autoComplete:"name",value:Z,onChange:Qe=>ee(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500",placeholder:xe("login.field.name_placeholder")})]}),R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-email",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("login.field.email")}),R.jsx("input",{id:"card-email",type:"email",autoComplete:"email",required:!0,value:D,onChange:Qe=>$(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"})]}),R.jsxs("div",{children:[R.jsx("label",{htmlFor:"card-password",className:"block text-xs font-medium text-oai-gray-500 mb-1",children:xe("login.field.password")}),R.jsx("input",{id:"card-password",type:"password",autoComplete:T==="signup"?"new-password":"current-password",required:!0,minLength:T==="signup"?Le:void 0,value:I,onChange:Qe=>S(Qe.target.value),className:"w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-oai-gray-50 dark:bg-oai-gray-900 px-3 text-sm text-oai-black dark:text-white placeholder-oai-gray-400 dark:placeholder-oai-gray-600 focus:outline-none focus:ring-2 focus:ring-oai-brand-500"}),T==="signup"&&R.jsx("p",{className:"mt-1 text-xs text-oai-gray-400 dark:text-oai-gray-600",children:xe("login.password_hint",{min:String(Le)})}),T==="signin"&&R.jsx("div",{className:"mt-1 text-right",children:R.jsx("button",{type:"button",onClick:()=>{E("reset_email"),H(null),W(null)},className:"text-xs font-medium text-oai-gray-500 hover:text-oai-black dark:hover:text-white no-underline bg-transparent border-0 p-0 cursor-pointer focus:outline-none",children:xe("login.forgot_password")})})]}),R.jsx("button",{type:"submit",disabled:ae,className:"w-full h-10 rounded-lg bg-oai-gray-900 dark:bg-white text-white dark:text-oai-gray-950 text-sm font-semibold hover:bg-oai-gray-800 dark:hover:bg-oai-gray-100 transition-colors disabled:opacity-50",children:xe(T==="signup"?"login.submit.sign_up":"login.submit.sign_in")})]})]}):R.jsxs(R.Fragment,{children:[R.jsxs("div",{className:"relative mb-5",children:[R.jsx("div",{className:"absolute inset-0 flex items-center",children:R.jsx("span",{className:"w-full border-t border-oai-gray-200 dark:border-oai-gray-800"})}),R.jsx("div",{className:"relative flex justify-center text-xs uppercase tracking-wider",children:R.jsx("span",{className:"bg-white dark:bg-oai-gray-950 px-3 text-oai-gray-400 dark:text-oai-gray-600",children:xe("login.divider")})})]}),R.jsxs("button",{type:"button",onClick:()=>ke(!0),className:Bt("w-full h-10 rounded-lg border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-900 text-sm font-medium text-oai-black dark:text-white","hover:bg-oai-gray-100 dark:hover:bg-oai-gray-800 hover:border-oai-gray-300 dark:hover:border-oai-gray-600 transition-colors","flex items-center justify-center gap-2.5"),children:[R.jsx(TN,{className:"h-[18px] w-[18px] text-oai-gray-500 dark:text-oai-gray-400",strokeWidth:1.75}),xe("login_modal.continue_email")]})]})]})]})}function X$(){const{isOpen:t,closeLoginModal:e}=jC(),{enabled:n}=yo();return k.useEffect(()=>{if(!t)return;const r=a=>{a.key==="Escape"&&e()};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[t,e]),n?R.jsx(c5,{children:t&&R.jsxs(vu.div,{className:"fixed inset-0 z-[100] flex items-center justify-center p-4",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[R.jsx(vu.div,{className:"absolute inset-0 bg-black/40 dark:bg-black/60",onClick:e,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0}}),R.jsxs(vu.div,{className:"relative w-full max-w-[420px] rounded-2xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-950 shadow-2xl overflow-hidden",initial:{opacity:0,scale:.95,y:10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},transition:{duration:.2},onClick:r=>r.stopPropagation(),children:[R.jsx("button",{type:"button",onClick:e,className:"absolute right-4 top-4 z-10 text-oai-gray-400 dark:text-oai-gray-500 hover:text-oai-black dark:hover:text-white transition-colors",children:R.jsx(p0,{className:"h-5 w-5"})}),R.jsx(J$,{onSuccess:e,className:"p-6 bg-transparent"})]})]})}):null}const Q$={VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"},cY="https://tokentracker.statuspage.io/",eB="https://github.com/mm7894215/TokenTracker",j5=`${eB}/releases/latest`,uY=`${j5}/download/TokenTrackerBar.dmg`,dY=`${j5}/download/TokenTracker-Setup.exe`;function tB(){if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"))return"";const e=typeof import.meta<"u"?Q$:void 0;return(e?.VITE_TOKENTRACKER_BACKEND_BASE_URL||e?.VITE_INSFORGE_BASE_URL||Ya()).trim()}function nB(){return Ya()}function rB(t=""){if(typeof t!="string"||t.length===0)return!1;const e=new URLSearchParams(t),n=String(e.get("screenshot")||"").toLowerCase();return n==="1"||n==="true"}const aB=300*1e3,iB=720*60*1e3;function q0(t){return typeof t=="string"&&/^https?:\/\//i.test(t.trim())}function sB(t,e=Date.now()){if(!t?.token||!t?.deviceId||!t?.issuedAt)return!0;const n=Date.parse(t.issuedAt);return Number.isFinite(n)?n+iB<=e:!0}async function z5(t,e){const n=Ya();if(!q0(n)||!t)return;const r=n.replace(/\/$/,""),a=Hl(),s={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${t}`};a&&(s.apikey=a);try{await fetch(`${r}/functions/tokentracker-leaderboard-refresh`,{method:"POST",headers:s,body:JSON.stringify({period:"week",source:e})})}catch{}}async function oB(){try{const t=await fetch("/functions/tokentracker-machine-id",{headers:{Accept:"application/json"},cache:"no-store"});if(t.ok){const e=await t.json().catch(()=>null),n=typeof e?.machineId=="string"?e.machineId.trim():null;if(n&&n.length>=8)return n}}catch{}return null}async function lB(t){const e=Ya();if(!q0(e)||!t)return null;const n=e.replace(/\/$/,""),r=Hl(),a={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${t}`};r&&(a.apikey=r);const s=typeof navigator<"u"&&typeof navigator.platform=="string"?navigator.platform:"web",l=await oB();if(!l)return null;const c=`Token Tracker (dashboard) #${l.slice(0,8)}`,d=await fetch(`${n}/functions/tokentracker-device-token-issue`,{method:"POST",headers:a,body:JSON.stringify({device_name:c,platform:s,machine_id:l})});if(!d.ok)return null;const h=await d.json().catch(()=>null),p=typeof h?.token=="string"?h.token:null,m=typeof h?.device_id=="string"?h.device_id:null;return!p||!m?null:{token:p,deviceId:m,issuedAt:typeof h?.created_at=="string"?h.created_at:new Date().toISOString()}}async function U2(t){const{deviceToken:e,insforgeBaseUrl:n,drain:r}=t,a={deviceToken:e};r===!0&&(a.drain=!0);const s=n||Ya();q0(s)&&(a.insforgeBaseUrl=s.trim());const l=await Xu(),c=await fetch("/functions/tokentracker-local-sync",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",...l},body:JSON.stringify(a)}),d=await c.json().catch(()=>({}));if(!c.ok){const h=typeof d.error=="string"?d.error:`HTTP ${c.status}`;throw new Error(h)}return d}async function $2(t){const e=await t();if(!e)return null;const n=Z3();if(n&&!sB(n))return n;const r=await lB(e);return r?(nM(r),r):null}async function F5(t,e={}){let n=await t();if(!n)return null;let r=await $2(async()=>n);if(!r)return n;try{return await U2({deviceToken:r.token,insforgeBaseUrl:Ya(),drain:e.drain===!0}),n}catch(a){if(!Z3()||(J3(),n=await t(),!n)||(r=await $2(async()=>n),!r))throw a;return await U2({deviceToken:r.token,insforgeBaseUrl:Ya(),drain:e.drain===!0}),n}}async function cB(t){const e=rM();if(Date.now()-e<aB)return;const n=await F5(t);n&&(X3(Date.now()),await z5(n,"cloud-sync-auto"))}async function hY(t){const e=await F5(t,{drain:!0});e&&(X3(Date.now()),await z5(e,"cloud-sync-now"))}function uB(t){const e=t.replace(/\/+$/,"")||"/";return e==="/share"||e==="/share.html"||e.startsWith("/share/")}function dB(t){const e=t.replace(/\/+$/,"")||"/";return e==="/login"||e==="/landing"||uB(e)?!1:e==="/"||e==="/dashboard"||e.startsWith("/leaderboard")}function hB(){const t=_r(),e=yo(),n=k.useRef(!1);k.useEffect(()=>{if(!Cp()||!dB(t.pathname||"/")||!e.enabled||!e.signedIn||e.loading||!Tp())return;let r=!1;const a=window.setTimeout(()=>{(async()=>{if(!(r||n.current)){n.current=!0;try{await cB(()=>e.getAccessToken())}catch(s){console.warn("[tokentracker] cloud usage sync:",s)}finally{n.current=!1}}})()},2500);return()=>{r=!0,window.clearTimeout(a)}},[t.pathname,e.enabled,e.signedIn,e.loading,e.getAccessToken])}function pB(){const t=k.useContext(NC);if(t===null)throw new Error("useTheme must be used within a ThemeProvider");return t}function fB({prefersReducedMotion:t,screenshotCapture:e}){return!(e||t)}function mB(t){if(!t||typeof t!="object")return null;const e=t.user_metadata&&typeof t.user_metadata=="object"?t.user_metadata:{},n=t.profile&&typeof t.profile=="object"?t.profile:{},r=e.avatar_url||e.picture||n.avatar_url||t.avatar_url;return typeof r=="string"&&r.trim()?r.trim():null}function gB(t){return t?Rf()?`/api/avatar-proxy?url=${encodeURIComponent(t)}`:t:null}function Sh(t){const e=String(t||"").trim();if(!e)return"?";const n=e.split(/\s+/).filter(Boolean);return n.length>=2?(n[0][0]+n[n.length-1][0]).toUpperCase():e.slice(0,2).toUpperCase()}function B2({className:t,variant:e="header",collapsed:n=!1,onAfterAction:r}){ed();const a=e==="sidebar",{enabled:s,loading:l,signedIn:c,user:d,displayName:h}=yo(),{openLoginModal:p}=jC(),m=Ul(),v=k.useMemo(()=>mB(d),[d]),y=k.useMemo(()=>gB(v),[v]),[b,x]=Pl.useState(!1);if(Pl.useEffect(()=>{x(!1)},[y]),!s)return null;if(l)return R.jsx("div",{className:Bt("h-9 w-9 shrink-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse",t),"aria-hidden":!0});if(!c)return a?R.jsxs("button",{type:"button",onClick:()=>{p(),r?.()},className:Bt("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] font-medium text-oai-gray-700 dark:text-oai-gray-300 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 min-w-0",n?"h-8 w-8 justify-center px-0":"w-full",t),"aria-label":xe("header.auth.sign_in_aria"),title:n?xe("header.auth.sign_in_aria"):void 0,children:[R.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:R.jsx("img",{src:"/app-icon.png",alt:"",width:18,height:18,className:"h-[18px] w-[18px] rounded"})}),!n&&R.jsx("span",{className:"truncate flex-1 text-left",children:xe("header.auth.sign_in_aria")})]}):R.jsx("button",{type:"button",onClick:p,className:Bt("shrink-0 inline-flex h-9 items-center justify-center gap-1.5 rounded-md px-4 text-sm font-medium transition-colors duration-200 ease-out shadow-sm ring-1 ring-oai-gray-200 dark:ring-white/10 bg-oai-gray-900 text-white hover:bg-oai-gray-800 active:bg-oai-gray-950 dark:bg-white dark:text-oai-gray-900 dark:hover:bg-oai-gray-100 dark:active:bg-oai-gray-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-oai-gray-950",t),"aria-label":xe("header.auth.sign_in_aria"),children:xe("header.auth.sign_in_aria")});const P=()=>{m("/settings"),r?.()};return R.jsx("div",{className:Bt(a?"relative flex w-full shrink-0 items-center":"relative flex shrink-0 items-center",t),children:R.jsxs("button",{type:"button",onClick:P,className:Bt(a?Bt("flex w-full items-center gap-2 rounded-md px-2 py-1.5 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 transition-colors min-w-0",n&&"justify-center px-0 py-0 h-9 w-9"):"flex items-center gap-2 rounded-md pl-1 pr-2 py-1 border border-transparent hover:bg-oai-gray-100 dark:hover:bg-oai-gray-900/80 hover:border-oai-gray-200 dark:hover:border-oai-gray-800 transition-colors"),"aria-label":xe("header.auth.open_settings"),title:a&&n?h:void 0,children:[a?R.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:y&&!b?R.jsx("img",{src:y,alt:"",width:20,height:20,className:"h-5 w-5 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700",referrerPolicy:"no-referrer",onError:()=>x(!0)}):Sh(h)==="?"?R.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-oai-brand-600/30 text-white ring-1 ring-oai-brand-500/50",children:R.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",className:"w-3 h-3 opacity-80",children:R.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"})})}):R.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-oai-brand-600 text-[9px] font-semibold text-white ring-1 ring-oai-brand-500/50",children:Sh(h)})}):y&&!b?R.jsx("img",{src:y,alt:"",width:32,height:32,className:"h-8 w-8 rounded-full object-cover ring-1 ring-oai-gray-300 dark:ring-oai-gray-700 shrink-0",referrerPolicy:"no-referrer",onError:()=>x(!0)}):Sh(h)==="?"?R.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-oai-brand-600/30 text-white ring-1 ring-oai-brand-500/50",children:R.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",className:"w-4 h-4 opacity-80",children:R.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"})})}):R.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-oai-brand-600 text-xs font-semibold text-white ring-1 ring-oai-brand-500/50",children:Sh(h)}),a?!n&&R.jsx("span",{className:"truncate text-[13px] font-medium text-oai-gray-900 dark:text-oai-gray-200 flex-1 text-left min-w-0",children:h}):R.jsx("span",{className:"hidden sm:inline truncate text-sm font-medium text-oai-gray-900 dark:text-oai-gray-200 max-w-[120px]",children:h})]})})}const j_="tt.sidebarCollapsed";function U5(){return[{id:"general",label:xe("nav.group.general"),items:[{id:"usage",to:"/dashboard",icon:vN,label:xe("nav.usage")},{id:"limits",to:"/limits",icon:kN,label:xe("nav.limits")},{id:"leaderboard",to:"/leaderboard",icon:qN,label:xe("nav.leaderboard")}]},{id:"tools",label:xe("nav.group.tools"),items:[{id:"widgets",to:"/widgets",icon:SN,label:xe("nav.widgets")},{id:"pet",to:"/pet-settings",icon:MN,label:xe("nav.pet")},{id:"skills",to:"/skills",icon:ON,label:xe("nav.skills")},{id:"ip-check",to:"/ip-check",icon:xN,label:xe("nav.ip_check")}]},{id:"account",label:xe("nav.group.account"),items:[{id:"settings",to:"/settings",icon:BN,label:xe("nav.settings")}]}]}function vB(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(j_)==="1"}catch{return!1}}function _B(){const[t,e]=k.useState(vB),n=k.useCallback(()=>{e(r=>{const a=!r;try{typeof window<"u"&&window.localStorage.setItem(j_,a?"1":"0")}catch{}return a})},[]);return k.useEffect(()=>{if(typeof window>"u")return;const r=a=>{a.key===j_&&e(a.newValue==="1")};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)},[]),{collapsed:t,toggle:n}}function yB(t,e){const n=t.replace(/\/+$/,"")||"/";return e==="/dashboard"?n==="/dashboard"||n==="/":e==="/leaderboard"?n==="/leaderboard"||n.startsWith("/leaderboard/"):n===e}function bB({label:t,collapsed:e,first:n}){return e?n?null:R.jsx("div",{className:"mx-2 my-2 h-px bg-oai-gray-200/70 dark:bg-oai-gray-800/70","aria-hidden":!0}):R.jsx("div",{className:Bt("px-3 pb-1 text-[10px] uppercase tracking-wider text-oai-gray-500 dark:text-oai-gray-500",n?"pt-2":"pt-4"),children:t})}function kB({item:t,collapsed:e,active:n,onClick:r}){const a=t.icon;return R.jsxs(xf,{to:t.to,onClick:r,title:e?t.label:void 0,"aria-current":n?"page":void 0,className:Bt("flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px] no-underline transition-colors",e&&"justify-center px-0 py-2",n?"bg-oai-gray-200/70 text-oai-black font-medium dark:bg-oai-gray-800 dark:text-white":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/50 hover:text-oai-black dark:hover:bg-oai-gray-800/60 dark:hover:text-white"),children:[R.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:R.jsx(a,{className:"h-[15px] w-[15px]","aria-hidden":!0})}),!e&&R.jsx("span",{className:"truncate",children:t.label})]})}function wB({as:t="button",title:e,onClick:n,href:r,children:a,className:s,...l}){const c=Bt("flex h-10 w-10 items-center justify-center rounded-lg text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",s);return t==="a"?R.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",title:e,"aria-label":e,className:c,...l,children:a}):R.jsx("button",{type:"button",title:e,"aria-label":e,onClick:n,className:c,...l,children:a})}function xB({repo:t="mm7894215/TokenTracker",glassChrome:e=!1}){const[n,r]=k.useState(null);return k.useEffect(()=>{if(typeof window>"u")return;const a=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;fB({prefersReducedMotion:a,screenshotCapture:!1})&&fetch(`https://api.github.com/repos/${t}`).then(s=>s.json()).then(s=>{s&&typeof s.stargazers_count=="number"&&r(s.stargazers_count)}).catch(()=>{})},[t]),R.jsxs("a",{href:`https://github.com/${t}`,target:"_blank",rel:"noopener noreferrer","aria-label":n!==null?`Star on GitHub (${n})`:"Star on GitHub",className:Bt("inline-flex h-7 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium transition-colors no-underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",e?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:[R.jsx("svg",{height:"12",viewBox:"0 0 16 16",width:"12",className:"shrink-0 fill-current",children:R.jsx("path",{d:"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"})}),R.jsx("span",{children:"Star"}),n!==null&&R.jsx("span",{className:"text-[10px] text-oai-gray-500 dark:text-oai-gray-500 tabular-nums",children:n})]})}const PB=[{value:"light",label:"Light",Icon:MC},{value:"dark",label:"Dark",Icon:DC},{value:"system",label:"System",Icon:LN}];function SB({theme:t,resolvedTheme:e,onSetTheme:n,glassChrome:r=!1}){const[a,s]=k.useState(!1),l=k.useRef(null),c=e==="dark"?DC:MC;return k.useEffect(()=>{if(!a)return;const d=p=>{l.current&&!l.current.contains(p.target)&&s(!1)},h=p=>{p.key==="Escape"&&s(!1)};return document.addEventListener("mousedown",d),document.addEventListener("keydown",h),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",h)}},[a]),R.jsxs("div",{ref:l,className:"relative",children:[R.jsx("button",{type:"button","aria-label":"Theme","aria-expanded":a,"aria-haspopup":"menu",title:"Theme",onClick:()=>s(d=>!d),className:Bt("inline-flex h-7 w-7 items-center justify-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",r?"border border-gray-500/20 dark:border-gray-500/30 bg-gray-500/[0.04] dark:bg-gray-500/[0.06] backdrop-blur-[2px] text-oai-gray-700 dark:text-oai-gray-300 hover:bg-gray-500/10 dark:hover:bg-gray-500/12 hover:border-gray-500/30 dark:hover:border-gray-500/40 hover:text-oai-black dark:hover:text-white":"border border-oai-gray-200 dark:border-oai-gray-700 text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white hover:border-oai-gray-300 dark:hover:border-oai-gray-600"),children:R.jsx(c,{className:"h-3.5 w-3.5","aria-hidden":!0})}),a&&R.jsx("div",{role:"menu",className:"absolute bottom-full left-0 mb-2 z-50 min-w-[140px] py-1 rounded-lg border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 shadow-lg",children:PB.map(({value:d,label:h,Icon:p})=>{const m=t===d;return R.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{n(d),s(!1)},className:Bt("flex w-full items-center gap-2.5 px-3 py-1.5 text-[13px] transition-colors",m?"text-oai-black dark:text-white bg-oai-gray-100 dark:bg-oai-gray-800":"text-oai-gray-600 dark:text-oai-gray-400 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800/60 hover:text-oai-black dark:hover:text-white"),children:[R.jsx(p,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),R.jsx("span",{children:h})]},d)})})]})}function $5({collapsed:t,onToggleCollapsed:e,onItemClick:n,showCloseButton:r=!1,onClose:a,glassChrome:s=!1}){const c=_r()?.pathname||"/",{theme:d,resolvedTheme:h,setTheme:p}=pB(),{resolvedLocale:m}=ed(),v=k.useMemo(()=>U5(),[m]);return R.jsxs(R.Fragment,{children:[R.jsx("div",{className:Bt("px-2 pt-2 pb-2",t&&"flex justify-center"),children:r?R.jsxs("div",{className:"flex items-center gap-2",children:[R.jsx("div",{className:"flex-1 min-w-0",children:R.jsx(B2,{variant:"sidebar",collapsed:t,onAfterAction:n})}),R.jsx("button",{type:"button",onClick:a,"aria-label":xe("nav.close_menu"),title:xe("nav.close_menu"),className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-oai-gray-500 dark:text-oai-gray-500 hover:bg-oai-gray-200/60 dark:hover:bg-oai-gray-800 hover:text-oai-gray-900 dark:hover:text-oai-gray-200 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:R.jsx(p0,{className:"h-4 w-4",strokeWidth:1.75,"aria-hidden":!0})})]}):R.jsx(B2,{variant:"sidebar",collapsed:t,onAfterAction:n})}),R.jsx("nav",{"aria-label":xe("nav.nav_label"),className:"flex-1 px-2 pb-2 flex flex-col overflow-y-auto",children:v.map((y,b)=>R.jsxs("div",{className:"flex flex-col",children:[R.jsx(bB,{label:y.label,collapsed:t,first:b===0}),R.jsx("div",{className:"flex flex-col gap-0.5",children:y.items.filter(x=>!(x.to==="/widgets"&&Lf())).map(x=>R.jsx(kB,{item:x,collapsed:t,active:yB(c,x.to),onClick:n},x.id))})]},y.id))}),R.jsxs("div",{className:Bt("flex items-center px-2 py-3",t?"flex-col justify-center gap-2":"justify-between gap-2"),children:[R.jsx(SB,{theme:d,resolvedTheme:h,onSetTheme:p,glassChrome:s}),R.jsx("div",{className:"flex items-center gap-1.5",children:!t&&R.jsx(xB,{glassChrome:s})})]})]})}function CB({collapsed:t,onToggleCollapsed:e}){const n=k.useMemo(()=>typeof window>"u"?!1:Hr()||Rf(),[]);return R.jsx("aside",{"data-native-sidebar":!0,"aria-label":xe("nav.aside_label"),className:Bt("hidden lg:flex flex-col shrink-0 h-full min-h-0 transition-[width] duration-200",t?"w-[72px]":"w-[220px]"),children:R.jsx($5,{collapsed:t,onToggleCollapsed:e,glassChrome:n})})}function TB({open:t,onClose:e}){return k.useEffect(()=>{if(!t)return;const n=r=>{r.key==="Escape"&&e()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[t,e]),k.useEffect(()=>{if(!t)return;const n=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=n}},[t]),t?R.jsxs("div",{className:"lg:hidden fixed inset-0 z-[80] flex",children:[R.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-sm",onClick:e,"aria-hidden":!0}),R.jsx("aside",{"aria-label":xe("nav.aside_label"),className:"relative w-[260px] max-w-[80vw] flex flex-col bg-oai-white dark:bg-oai-gray-900 border-r border-oai-gray-200 dark:border-oai-gray-800 shadow-2xl",children:R.jsx($5,{collapsed:!1,showCloseButton:!0,onClose:e,onItemClick:e})})]}):null}function EB({onOpenDrawer:t}){return R.jsxs("div",{className:"lg:hidden flex items-center justify-between gap-2 px-3 h-14 border-b border-oai-gray-200 dark:border-oai-gray-800",children:[R.jsx(wB,{title:xe("nav.menu"),onClick:t,children:R.jsx(AN,{className:"h-5 w-5","aria-hidden":!0})}),R.jsxs(xf,{to:"/landing",className:"flex items-center gap-2 no-underline hover:opacity-80 transition-opacity","aria-label":"Token Tracker",children:[R.jsx("img",{src:"/app-icon.png",alt:"",width:24,height:24,className:"rounded-md"}),R.jsx("span",{className:"text-sm font-semibold text-oai-black dark:text-oai-white",children:"Token Tracker"})]}),R.jsx("div",{className:"w-10 shrink-0","aria-hidden":!0})]})}function AB({children:t}){const{collapsed:e,toggle:n}=_B(),[r,a]=k.useState(!1),s=k.useCallback(()=>a(!0),[]),l=k.useCallback(()=>a(!1),[]),c=k.useMemo(()=>typeof window>"u"?!1:Hr()||Rf(),[]);return R.jsxs("div",{className:Bt("fixed inset-0 flex flex-col text-oai-black dark:text-oai-white font-sans overflow-hidden",Lf()&&"tt-native-glass-shell",c?"bg-transparent":"bg-oai-gray-100 dark:bg-oai-gray-950"),children:[c&&R.jsx("div",{className:"h-7 shrink-0",style:{WebkitAppRegion:"drag"},"aria-hidden":!0}),R.jsxs("div",{className:"flex-1 min-h-0 flex",children:[R.jsx(CB,{collapsed:e,onToggleCollapsed:n}),R.jsx(TB,{open:r,onClose:l}),R.jsx("div",{className:"flex-1 min-w-0 min-h-0 p-2 lg:pl-0 lg:pr-3 lg:pb-3 flex flex-col",children:R.jsxs("div",{className:Bt("flex-1 min-h-0 flex flex-col bg-oai-white dark:bg-oai-gray-900 border border-oai-gray-200 dark:border-oai-gray-800 overflow-hidden",c?"tt-native-main-card":"rounded-2xl",!c&&"shadow-sm"),children:[R.jsx(EB,{onOpenDrawer:s}),R.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:t})]})})]})]})}function RB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z"})})}function LB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",className:e,children:R.jsx("path",{d:"M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z"})})}function IB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z"})})}function DB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"})})}function MB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815"})})}function NB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 -1 22 28",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M4.125 20.149c-2.69 5.959 3.036 7.453 7.26 3.966 1.24 3.91 5.898.993 7.569-2.036 3.682-6.678 2.195-13.49 1.813-14.895-2.617-9.582-15.699-9.592-17.95.049-.526 1.687-.535 3.606-.833 5.598-.15 1.005-.256 1.646-.645 2.703-.223.607-.53 1.147-1.014 2.056-.75 1.412-.434 4.138 3.434 2.724v.001ZM11.895 11.332c-1.073 0-1.234-1.283-1.234-2.048 0-.69.124-1.239.358-1.586a1 1 0 0 1 .876-.462c.375 0 .697.158.924.47.259.354.395.9.395 1.578 0 1.283-.493 2.048-1.319 2.048Zm4.416 0c-1.073 0-1.234-1.283-1.234-2.048 0-.69.124-1.239.358-1.586a1 1 0 0 1 .876-.462c.375 0 .697.158.924.47.259.354.396.9.396 1.578 0 1.283-.494 2.048-1.32 2.048Z"})})}function OB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M16 6H8v12h8V6zm4 16H4V2h16v20z"})})}function jB({size:t=16,className:e=""}){return R.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:[R.jsx("path",{d:"M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z"}),R.jsx("path",{d:"M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z"})]})}function zB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z"})})}function V2({size:t=16,className:e=""}){return R.jsxs("svg",{width:t,height:t,viewBox:"0 0 64 60",fill:"none",className:e,"aria-hidden":"true",children:[R.jsx("path",{fill:"currentColor",d:"M37.2114 3.75318C37.6821 3.33106 37.7106 3.31457 38.0558 3.29385C38.6149 3.2531 39.1272 3.52199 39.9989 4.31564C42.0356 6.16652 44.8714 9.97183 46.6346 13.2212L47.3163 14.4819L48.2782 14.9605C49.2072 15.4299 50.7308 16.3923 51.3672 16.9085C51.655 17.1464 51.6956 17.1508 51.9947 17.0344C53.3454 16.5084 55.2803 17.206 56.9869 18.8432C58.5231 20.3155 59.9943 22.8312 60.558 24.9308C60.6403 25.2687 60.7493 25.9952 60.7891 26.5362C60.9177 28.4358 60.3092 29.9532 59.1362 30.64C58.8965 30.7784 58.8801 30.8158 58.8868 31.4132C58.9409 34.2583 58.1741 37.0985 56.6335 39.8679C54.8946 42.9773 51.7981 46.1938 47.6074 49.2243C45.357 50.8619 40.0323 53.964 37.6248 55.0532C31.8578 57.6496 27.2346 58.646 23.2188 58.154C20.8236 57.8638 18.1124 56.9287 16.5082 55.8433C16.086 55.5515 16.0191 55.5329 15.6966 55.6251C13.9793 56.1185 11.73 55.1053 9.81931 52.9844C9.05725 52.1366 7.82714 50.0548 7.42839 48.9409C6.50606 46.3339 6.68976 43.9816 7.91836 42.5767C8.23573 42.2149 8.2453 42.1995 8.17598 41.5912C8.06148 40.5951 8.00971 39.1206 8.06202 38.1692L8.10361 37.2803L6.76977 34.9212C4.70378 31.2451 3.3912 28.1582 2.88489 25.7998C2.61762 24.5066 2.63385 23.9324 2.96214 23.5078C3.16198 23.2515 3.81796 22.9866 4.60785 22.8407C6.59665 22.4917 10.9334 22.8076 15.7581 23.6595L16.259 23.7458L17.3608 22.7713C19.1891 21.1519 20.4038 20.244 22.6429 18.8478C24.9768 17.3876 27.6108 16.1858 30.577 15.2346L31.5295 14.9294L32.0526 13.5561C33.9257 8.61146 35.8437 4.96584 37.2114 3.75318ZM21.5208 29.0919C19.404 30.314 18.3453 30.9251 17.5676 31.6099C14.4179 34.3835 13.2414 38.777 14.5823 42.7537C14.9135 43.7357 15.5247 44.7942 16.7469 46.9111C17.9691 49.0279 18.5801 50.0865 19.2649 50.8643C22.0385 54.014 26.4316 55.1918 30.4084 53.8509C31.3904 53.5198 32.4489 52.9085 34.5657 51.6863L46.7442 44.6551C48.8613 43.4328 49.9205 42.8214 50.6983 42.1365C53.8479 39.363 55.0245 34.9695 53.6835 30.9927C53.3524 30.0107 52.7412 28.9522 51.519 26.8354C50.2968 24.7185 49.6858 23.66 49.0009 22.8822C46.2274 19.7325 41.8342 18.5547 37.8575 19.8956C36.8754 20.2267 35.8163 20.8383 33.6993 22.0606L21.5208 29.0919Z"}),R.jsx("g",{transform:"rotate(-30 22.6953 37.6011)",children:R.jsx("rect",{x:"22.6953",y:"37.6011",width:"4.81084",height:"9.99175",rx:"2.40542",fill:"currentColor"})}),R.jsx("g",{transform:"rotate(-30 35.6748 30.1074)",children:R.jsx("rect",{x:"35.6748",y:"30.1074",width:"4.81084",height:"9.99175",rx:"2.40542",fill:"currentColor"})})]})}function FB({size:t=16,className:e=""}){return R.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",className:e,children:[R.jsx("path",{d:"M5.938 12.835c.127-.039.285.02.373.143.028.038.036.092.046.14.003.014-.02.033-.04.05-.124-.098-.24-.194-.354-.291-.011-.01-.016-.027-.025-.042zM8.396 9.412c.195-.032.39-.06.588-.05a.54.54 0 01.148.026c.202.071.402.147.601.224.028.01.05.036.075.055l-.013.027a9.203 9.203 0 01-.26-.089c-.115-.038-.213-.077-.315-.098-.25-.05-.25-.046-.292-.014l.574.144c.275.139.55.276.823.417.042.022.09.057.107.098.026.06.063.076.117.072.066-.006.132-.017.213-.027l-.04.086c.051.08.142.02.216.064-.074.13-.247.09-.334.199l.061.074-.12.087c0 .106-.038.168-.306.243l.026.085-.196.042.07.124h-.25l-.007.137c-.081-.01-.161-.018-.244-.027l-.053.123c-.027-.008-.052-.011-.073-.023-.067-.038-.128-.056-.195.006-.019.017-.063.014-.093.008-.026-.006-.05-.029-.07-.042-.11.095-.11.095-.208.003-.057.046-.12.074-.186.011-.063.027-.123-.02-.178-.014-.07.007-.097-.035-.133-.07l-.13.033c-.013-.236-.194-.19-.34-.203.005-.072.05-.092.095-.094a.474.474 0 01.159.022c.164.05.32.12.496.138.203.021.405.029.601-.015.265-.059.52-.149.707-.365.049-.056.083-.127.117-.195.019-.038.02-.084-.02-.116a1.397 1.397 0 00-.382-.217c.024.12-.031.182-.115.221 0 .014-.004.025 0 .03.08.115.084.16-.007.267a1.39 1.39 0 01-.218.211.477.477 0 01-.641-.05 1.36 1.36 0 01-.133-.152c-.078-.107-.076-.108-.033-.236-.165-.08-.128-.226-.104-.364.008-.05.028-.096.049-.163-.04.014-.067.017-.087.032a.897.897 0 00-.316.357c-.007.016-.01.034-.02.047-.012.015-.034.038-.045.035-.02-.006-.037-.027-.05-.045-.008-.012-.007-.032-.012-.057h-.126l.053-.172a14.82 14.82 0 00-.039-.049l.11-.284c-.06.026-.091.044-.124.051-.03.007-.064 0-.095 0 0-.031-.01-.07.004-.092.149-.22.305-.428.593-.476z"}),R.jsx("path",{d:"M8.06 10.788c-.003-.038-.004-.075.037-.062.016.006.034.048.028.067-.01.04-.038.032-.064-.005z"}),R.jsx("path",{d:"M11.981.009c.226-.012.453-.011.679 0 .247.01.495.024.74.062.401.064.798.157 1.19.273.463.138.92.299 1.356.511a7.31 7.31 0 012.948 2.642c.292.469.536.963.739 1.479.219.556.446 1.11.623 1.683.204.654.329 1.326.458 1.997.097.504.182 1.01.29 1.511.156.722.329 1.44.494 2.16.186.812.4 1.615.63 2.415.102.355.193.713.282 1.072.11.436.202.876.254 1.323.031.278.066.557.073.837a7.56 7.56 0 01-.017.88c-.037.413-.1.818-.226 1.212a5.017 5.017 0 01-.915 1.649l-.13.156.018.023c.043-.023.088-.041.127-.068.2-.138.373-.307.531-.49.4-.46.721-.973.975-1.529a3.59 3.59 0 00.325-1.72c-.024-.424-.097-.834-.3-1.213-.013-.027-.015-.06-.03-.121.05.035.082.048.101.072.107.13.22.258.315.398.33.494.46 1.052.486 1.64a3.75 3.75 0 01-.47 1.97c-.36.655-.887 1.14-1.526 1.506-.193.111-.394.21-.595.308-.157.078-.248.211-.318.365a.522.522 0 00-.033.406.359.359 0 01.013.139c-.005.077-.077.155-.14.162-.054.006-.125-.043-.15-.116a1.206 1.206 0 01-.06-.233c-.04-.314-.155-.6-.308-.87a3.906 3.906 0 00-.73-.91 2.129 2.129 0 00-.897-.524 4.093 4.093 0 00-.692-.131c-.075-.008-.15-.04-.22.01.18.06.363.11.538.18.434.173.82.43 1.18.728.308.255.58.543.794.884.098.155.186.315.227.496.027.123.042.25.067.375.013.062-.002.109-.053.144-.047.033-.122.034-.163-.01a.455.455 0 01-.08-.14c-.03-.073-.038-.159-.078-.225a7.314 7.314 0 00-1.423-1.664c-.16-.137-.329-.26-.537-.323-.376-.114-.753-.203-1.15-.154-.213.025-.427.032-.64.053a1.6 1.6 0 00-.736.278 5.14 5.14 0 00-.834.72c-.329.342-.642.699-.955 1.055-.136.155-.264.319-.314.531a5.227 5.227 0 00-.012.051.096.096 0 01-.09.076h-.31c-.046 0-.082-.048-.072-.094.023-.108.045-.216.07-.324.075-.325.19-.635.368-.917.024-.039.04-.088.104-.08l.01.049.027.077c.28-.435.571-.834.996-1.135.283-.204.584-.378.89-.55a.196.196 0 00-.098-.002c-.162.043-.325.084-.485.134-.402.124-.764.33-1.11.566-.147.1-.298.193-.414.333a7.314 7.314 0 00-1.07 1.767.845.845 0 00-.04.12.075.075 0 01-.072.056h-.494c-.04 0-.062-.051-.036-.082.123-.14.246-.282.377-.415.275-.281.58-.532.777-.884.027-.048.063-.09.095-.135.238-.333.54-.607.818-.902.082-.086.175-.16.26-.24.029-.027.053-.057.079-.085l-.018-.025-.135.041c-.034.017-.07.031-.102.05-.248.144-.494.292-.743.433-.408.23-.825.439-1.209.711-.281.2-.591.358-.889.533-.02.012-.044.015-.08.028-.015-.135.143-.201.108-.336-.033.014-.064.02-.085.038-.111.096-.227.19-.328.296-.148.157-.284.325-.425.488-.125.143-.25.286-.373.431A.153.153 0 019.89 24H8.762a.316.316 0 00.016-.042c.028-.09.085-.172.083-.28-.091-.018-.162.001-.212.077a4.45 4.45 0 00-.136.215c-.01.016-.024.03-.042.03h-.093c-.019 0-.029-.022-.017-.037.071-.088.14-.178.209-.268.001-.002-.006-.012-.012-.024-.014.004-.03.006-.045.013-.176.09-.352.181-.527.274a.363.363 0 01-.168.042H5.202c-.026 0-.039-.036-.019-.053.21-.178.402-.374.558-.605.335-.496.538-1.047.667-1.629.004-.02-.003-.043-.006-.091-.037.048-.059.072-.076.1a1.943 1.943 0 01-.334.415c-.28.258-.59.448-.983.464-.297.012-.588 0-.865-.127-.46-.21-.722-.57-.794-1.072-.025-.17-.017-.171-.182-.219A3.513 3.513 0 011.97 20.6a2.286 2.286 0 01-.808-1.13 3.569 3.569 0 01-.16-1.245c.002-.034.016-.067.024-.1.032.023.046.043.05.066.033.153.059.308.096.46.086.355.257.664.516.92.258.256.571.419.91.532.358.118.717.138 1.07-.016a1.89 1.89 0 00.621-.452c.328-.348.533-.76.648-1.223.009-.034.005-.071.007-.11-.015.006-.026.006-.03.011-.031.05-.064.1-.093.152-.284.502-.679.887-1.196 1.135-.351.17-.718.255-1.11.159a1.607 1.607 0 01-.971-.64 2.006 2.006 0 01-.368-.924 2.903 2.903 0 01.02-.886c.05-.439.466-1.17.742-1.271-.02.063-.035.112-.053.16-.043.116-.097.227-.13.345a1.901 1.901 0 00-.05.82c.033.212.09.416.204.6.147.236.346.407.62.465.11.023.225.014.338.018a.576.576 0 00.386-.131c.164-.128.282-.292.366-.481.168-.375.24-.777.309-1.179.05-.296.093-.594.133-.893.039-.281.071-.563.104-.845.026-.232.048-.464.074-.696.024-.228.052-.455.076-.683.024-.227.047-.455.069-.683.013-.14.022-.28.034-.42l.037-.417c.022-.25.041-.5.065-.748.008-.082-.02-.132-.09-.177a2.46 2.46 0 01-.492-.418c-.1-.109-.188-.228-.282-.342-.035-.042-.056-.097-.116-.118a2.084 2.084 0 00.275.597c.06.092.131.176.196.265.063.086.182.115.234.226-.028.003-.046.01-.06.006a4.74 4.74 0 01-.22-.057 2.71 2.71 0 01-1.287-.819c-.435-.487-.656-1.076-.71-1.723a5.206 5.206 0 01.014-1.06c.072-.602.22-1.186.45-1.745.155-.376.338-.741.526-1.102.205-.393.466-.75.765-1.076.512-.559 1.104-1.024 1.726-1.448.717-.49 1.478-.898 2.277-1.233C8.244.828 8.767.632 9.31.494c.655-.166 1.31-.33 1.982-.415.229-.03.458-.058.688-.07zm-1.847 22.82c-.07.06-.147.111-.207.18-.238.27-.464.549-.668.869l-.044.108a.177.177 0 00.093-.057c.174-.19.351-.378.519-.574.104-.122.195-.255.288-.386.024-.034.03-.08.046-.12l-.027-.02zm1.65-3.695a5.51 5.51 0 00-.653.593l-.37.386a.963.963 0 01-.377.25 1.372 1.372 0 01-.467.09c-.044 0-.087.006-.151.012.028.058.043.097.064.131.15.242.301.482.45.724.136.22.276.438.399.666.068.125.105.267.156.404.077.027.14-.018.202-.048.29-.135.579-.274.867-.412.213-.101.437-.186.636-.31.347-.215.68-.455 1.018-.685.015-.01.026-.028.042-.046-.023-.019-.038-.037-.056-.044-.287-.111-.527-.3-.77-.482a5.319 5.319 0 01-.506-.42 1.757 1.757 0 01-.41-.653c-.019-.049-.045-.095-.075-.156zm-5.847.264c-.06.096-.097.194-.132.293a3.38 3.38 0 01-.555 1.01c-.2.25-.455.412-.762.493-.23.06-.464.076-.7.07-.048-.002-.097.002-.158.005.016.04.021.066.035.085.1.145.23.246.4.295.157.046.316.034.498.023.181-.037.343-.115.485-.234.238-.199.402-.454.536-.732.175-.363.264-.751.342-1.144.01-.053.008-.11.011-.164zm14.945-4.586c.008.029.016.057.027.107.024.155.051.31.072.464.03.219.067.437.078.657.017.344.027.689-.014 1.033-.037.315-.063.633-.116.946a6.153 6.153 0 01-.46 1.518c-.008.018-.01.039-.02.082.047-.03.077-.042.098-.064.085-.083.17-.167.248-.255.271-.305.458-.66.596-1.043.18-.498.228-1.011.145-1.531-.103-.65-.33-1.263-.597-1.881a9.055 9.055 0 00-.024-.055l-.033.022zM5.797 8.29a.26.26 0 00.018.153c.124.251.25.501.379.75.025.049.066.09.03.163-.284.06-.578.119-.88.255.059.038.097.06.132.087.042.032.112.058.09.12-.01.033-.075.048-.117.072.017.01.043.021.067.036.166.102.33.207.447.368.138.192.229.404.188.644-.079.469-.306.85-.69 1.132-.054.04-.106.083-.161.122a.243.243 0 00-.103.245.77.77 0 00.055.195c.083.196.22.35.375.492.083.076.159.164.222.257a.37.37 0 01.025.377c-.023.05-.05.099-.076.148-.03.06-.028.111.022.162.041.042.08.089.112.138.038.058.078.079.147.05a.486.486 0 01.333-.006c.16.046.302.126.444.21.13.077.264.149.4.219.067.035.14.05.219.026.071-.022.124.01.145.076.02.064-.003.108-.074.139-.07.03-.137.063-.209.088-.1.035-.201.073-.314.077-.013-.107.11-.088.127-.159-.206-.126-.643-.145-.801-.034.063.112.035.21-.096.313-.13-.1-.025-.202.002-.3a.209.209 0 00-.249.17c-.015.101.067.216.178.224.108.007.218-.005.326-.012.06-.005.12-.027.199 0-.103.123-.248.127-.357.19.002.05.07.086.019.131-.053.048-.095-.001-.132-.03-.08-.063-.16-.126-.231-.197a.474.474 0 01-.157-.311.52.52 0 00-.043-.172c-.032-.074-.032-.137.033-.19-.018-.03-.028-.053-.045-.072a1.222 1.222 0 01-.196-.369c-.053-.137-.046-.264.048-.381.024-.03.05-.06.064-.095a.664.664 0 00.047-.168c.017-.165-.064-.287-.182-.387-.186-.156-.36-.322-.46-.551-.005-.011-.024-.017-.037-.026-.011.017-.024.027-.025.038-.019.185-.045.37-.052.557-.014.377.058.743.162 1.104.118.41.289.798.488 1.173.267.502.537 1.002.812 1.5.055.098.13.189.208.27.198.202.452.272.724.273.202 0 .404-.006.605-.026.295-.03.59-.073.884-.113.183-.025.365-.057.548-.08.21-.026.38.073.522.21.16.156.305.327.447.5.22.265.397.56.554.867.05.098.07.1.147.03.13-.121.26-.242.394-.36.067-.059.088-.12.067-.213a3.535 3.535 0 01-.085-.796c.002-.157.006-.314.018-.471.015-.224.03-.45.06-.672a59.114 59.114 0 01.362-2.298c.087-.493.182-.984.268-1.477.06-.347.118-.694.162-1.043.034-.273.055-.55.063-.825.011-.332.003-.665.002-.998 0-.077.004-.155-.01-.23-.028-.142-.01-.155-.162-.19a5.826 5.826 0 00-.607-.107c-.146-.018-.207-.053-.221-.19-.006-.049-.025-.098-.041-.146-.009-.025-.024-.048-.046-.09l-.025.264c-.009.096-.029.116-.127.115-.055 0-.11-.008-.164-.008-.476 0-.952-.008-1.426.032-.095.008-.173-.015-.226-.103-.04-.066-.088-.126-.134-.186-.063-.084-.086-.093-.182-.06-.195.068-.388.138-.582.21a2.71 2.71 0 00-.675.394.986.986 0 01-.323.168c-.033.01-.07.008-.127.013.02-.066.024-.114.047-.15.064-.105.135-.205.205-.306.023-.033.049-.063.073-.095l-.015-.023-.201.037c-.146.04-.296.07-.437.122-.148.053-.266.023-.386-.072a3.623 3.623 0 01-.733-.786l-.093-.132zm8.592 8.963l-.147.09c-.22.134-.44.266-.659.402-.093.058-.184.12-.27.188-.085.07-.124.161-.072.272.047.1.093.2.147.294.047.08.124.138.213.147.11.01.228.012.336-.012.217-.05.372-.205.528-.357a.291.291 0 00.087-.308c-.046-.18-.079-.365-.118-.547-.011-.052-.027-.103-.045-.169zm-.257-2.409c-.12.291-.205.597-.325.91-.151.433-.294.87-.435 1.323.036-.01.054-.01.067-.018.261-.16.522-.324.785-.484.054-.033.071-.078.065-.138-.012-.13-.024-.262-.034-.393l-.068-.886c-.008-.103-.02-.206-.029-.31-.009 0-.017-.002-.026-.004zm3.081-8.13l.099.285c.08.231.159.463.24.714l.58 1.952c.187.63.372 1.262.558 1.893.114.382.235.762.343 1.146.072.257.126.519.186.799.044.206.087.413.127.64.034.106.023.226.077.325l.025-.006-.068-.362c-.038-.206-.077-.412-.113-.638-.015-.07-.029-.141-.046-.211-.095-.396-.177-.796-.29-1.187-.196-.685-.413-1.364-.618-2.046-.165-.549-.322-1.1-.488-1.648-.069-.227-.15-.45-.226-.695l-.117-.336c-.037-.107-.075-.216-.115-.322-.04-.106-.084-.21-.127-.314a7.558 7.558 0 01-.027.01zM6.225 14.304c-.063-.001-.115.014-.134.083a.35.35 0 00.41.012 4.533 4.533 0 00-.276-.095zM5.23 11.98c-.026-.027-.057-.048-.075.002-.012.032-.007.07-.01.113.082-.037.082-.037.085-.115zm.062-1.189a.135.135 0 00-.088.056.197.197 0 00-.025.11c.005.152.01.306.026.457a.751.751 0 00.066.218c.061.136.157.167.288.101.055-.027.06-.054.025-.11a4.52 4.52 0 01-.129-.211c-.015-.068-.066-.131-.033-.207.04-.09-.076-.116-.074-.19V10.874c-.003-.038-.006-.087-.056-.083zm-.017-.968a.867.867 0 00-.467.127c-.076.045-.084.07-.05.158.034.087.07.173.115.254.064.117.09.125.21.077a.657.657 0 01.336-.053c.202.022.357.136.504.264l.092.077c.007-.006.014-.013.022-.018-.019-.105-.035-.226-.149-.264-.157-.053-.324-.075-.508-.117l-.24-.005c.24-.169.452-.044.687.009-.063-.115-.153-.147-.23-.193-.082-.05-.17-.092-.25-.144-.06-.037-.12-.08-.072-.172zm10.233.325c-.23-.01-.427.08-.608.211-.034.026-.06.065-.105.117.087.026.15.046.232.065.044-.015.088-.03.13-.046.306-.114.61-.115.904.031.126.063.237.04.366-.005-.02-.031-.03-.054-.045-.071a.986.986 0 00-.448-.273c-.14-.044-.284-.024-.426-.03zM7.99 6.483a.308.308 0 00.002.133c.08.321.156.643.242.962.104.387.27.75.456 1.103.02.037.061.08.098.087a.404.404 0 00.253-.051l-.472-.84c-.23-.448-.405-.92-.579-1.394zM10.397.497c-.2-.008-.405.004-.603.034-.236.035-.47.087-.7.152-.287.08-.569.18-.852.273-.04.013-.074.038-.11.058.028.014.05.018.07.014.287-.068.58-.085.873-.09.134-.002.269.009.402.025.19.024.382.048.57.09.456.104.874.3 1.265.556.464.306.888.66 1.257 1.078.205.232.395.475.56.739.17.274.315.561.449.856.273.601.456 1.232.6 1.876.04.173.07.348.1.524.017.104.065.167.17.19.122.028.2.105.22.251-.003.102-.06.174-.129.24a1.065 1.065 0 00-.268.358.164.164 0 00.083-.039c.08-.086.162-.172.235-.265a.56.56 0 00.13-.333c.009-.05.022-.1.024-.15.007-.124-.017-.15-.143-.168-.025-.004-.049-.014-.073-.015-.082-.007-.125-.063-.137-.131-.033-.198-.004-.355.247-.408.086-.018.174-.03.26-.042.158-.023.315-.053.473-.067.14-.012.19.033.226.167.008.029.018.057.021.087.019.179-.008.225-.141.288-.027.013-.055.024-.078.042a.148.148 0 00-.051.067c-.039.144.073.382.206.445l.673.32c.023.011.05.015.075.023l.018-.026c-.015-.008-.032-.013-.044-.024a2.27 2.27 0 00-.544-.32 4.898 4.898 0 00-.173-.075.203.203 0 01-.126-.191c-.003-.085.045-.154.128-.187l.059-.025c.099-.044.118-.076.112-.187a.384.384 0 00-.008-.063c-.067-.294-.123-.59-.205-.88a9.478 9.478 0 00-.826-2.036 7.465 7.465 0 00-1.39-1.805 4.536 4.536 0 00-1.177-.824 3.656 3.656 0 00-1.016-.328 6.155 6.155 0 00-.712-.074zm6.719 5.955c.01.014.018.028.038.034l-.022-.044-.016.01zM4.103 3.917a.062.062 0 01-.03.012.455.455 0 01-.04.039c-.01.01-.02.02-.045.04l-.363.354c-.088.085-.17.178-.266.253-.284.22-.425.53-.544.855a.132.132 0 00-.007.071c.013.055.033.108.052.168l.074.026c-.017.056-.03.105-.047.152-.058.164-.118.327-.175.491-.005.015.008.036.019.077.08-.175.158-.33.225-.489.228-.544.484-1.074.819-1.561.09-.133.182-.266.283-.401.004-.006.007-.013.022-.03.001-.016.003-.032.015-.04l.008-.017zm12.976 2.408a.023.023 0 01.009.019.073.073 0 00-.006.01.188.188 0 00.007.02l.018.022c.002-.007.007-.016.005-.021-.003-.01-.012-.018-.02-.038a1.331 1.331 0 01-.013-.012zM4.199 4.48c-.003.004-.008.008-.027.014-.005.013-.011.025-.031.047a2.085 2.085 0 01-.124.167c-.048.07-.116.055-.181.041-.134-.028-.228.016-.287.143-.089.187-.187.37-.273.56-.049.108-.11.216-.118.36.081.003.154.007.228.008h.228a2.563 2.563 0 01-.079.264c-.01.052-.022.103-.033.155l.02.004c.018-.046.037-.092.067-.153.066-.142.13-.285.2-.426.02-.04.034-.1.116-.092 0 .043.004.084 0 .124-.005.045-.017.09-.028.143.141.043.086.174.115.269.102-.022.104-.195.248-.144v.205l.017.002.439-1.059c-.13 0-.246-.02-.358.033-.024.011-.058-.001-.108-.004.075-.15.139-.278.211-.417a.128.128 0 01.025-.036c0-.015-.001-.03.008-.038l.006-.02c-.005.006-.01.011-.028.017-.004.012-.009.024-.026.045a.085.085 0 01-.032.033c-.123.157-.09.164-.258.106-.079-.027-.078-.028-.047-.144.028-.046.056-.093.098-.15 0-.016-.001-.032.007-.042L4.2 4.48zm2.073-.67c-.003.006-.007.011-.027.016-.094.125-.194.246-.28.377-.155.238-.301.481-.451.723-.14.224-.345.368-.575.481-.017.008-.04.006-.079.011.012-.059.016-.109.033-.153a6.076 6.076 0 01.229-.518l-.007-.02a.138.138 0 01-.035.025c-.028.05-.055.1-.093.164-.26.424-.443.817-.442.95.024.004.048.011.073.013.177.013.188.007.26-.165.03-.07.077-.12.147-.15l.175-.07c.044-.018.085-.057.146-.032.003.05-.01.11.014.145.042.062.044.125.047.193.002.049.017.098.026.147.029-.034.039-.065.05-.097.142-.39.277-.782.428-1.17.1-.256.22-.504.33-.756.013-.03.013-.067.03-.092V3.81zm3.987-.34c0 .045.01.084.021.123.042.16.094.318.124.48.024.133.023.27.028.406 0 .033-.019.067-.032.11-.094-.058-.047-.158-.106-.215h-.125c-.015.072-.01.152-.046.2-.066.085-.155.154-.236.227-.043.038-.078.018-.103-.025l-.046-.087c-.065.035-.117.069-.172.093-.116.051-.235.095-.35.147-.085.038-.09.053-.07.147.014.075.034.148.047.223.013.072.05.109.123.124.233.05.462.115.657.265.058-.102.058-.102.168-.151.03-.014.06-.03.092-.042.08-.03.115-.017.15.06.023.048.041.098.066.158.06-.14-.042-.267.017-.416.157.18.24.39.375.567a.235.235 0 00.022-.098c.002-.124 0-.247.002-.371 0-.034.013-.067.02-.1l.032-.003c.11.155.13.354.226.52a3.036 3.036 0 00-.01-.392c-.004-.045 0-.074.05-.088.08.036.116.14.215.158-.03-.275-.423-1.137-.798-1.635-.114-.127-.2-.28-.34-.386zm-2.667.696c-.019.034-.03.05-.037.067-.061.185-.125.37-.18.556-.031.105-.087.169-.195.19-.09.019-.178.052-.268.073-.038.009-.089.015-.118-.003-.024-.016-.025-.069-.036-.106-.064.076-.082.087-.17.047-.133-.062-.262-.135-.393-.201-.048-.025-.093-.063-.17-.03-.043.12-.091.25-.137.382-.099.28-.087.242.095.453.046.048.102.03.154.023.054-.009.106-.03.16-.036.13-.013.26-.08.367-.015.204-.064.387-.122.571-.178.05-.015.089.005.114.054.022.042.034.093.082.121.038-.056-.013-.128.063-.178l.14.241-.042-1.46zm.278.358c-.096-.01-.107.01-.11.108-.002.038-.003.078.002.115.03.2.099.386.174.57.002.006.012.01.022.015l.078-.05c.052.036.081.088.153.088.205-.002.41.014.616.012.099-.001.158.042.205.12.018.03.024.077.088.066l-.08-.394c-.05-.195-.085-.395-.172-.589-.057.057-.114.068-.18.046a.72.72 0 00-.135-.028c-.22-.028-.44-.059-.66-.08zm10.254-1.727c.089.163.155.316.139.491-.016.168.026.342-.044.516-.047-.033-.088-.082-.112-.075-.117.035-.164-.057-.227-.115a4.772 4.772 0 01-.286-.29l-.104-.113a4.856 4.856 0 01-.023.019c.035.046.07.093.11.156.04.064.084.127.122.193.034.058.065.118.031.205-.082-.01-.164-.019-.246-.032-.06-.01-.101 0-.124.07-.031.098-.037.096-.15.09.02.042.036.08.057.116.041.074.03.138-.03.196-.06.06-.118.122-.178.181a.175.175 0 01-.185.046c-.222-.061-.447-.113-.67-.174-.032-.009-.063-.04-.086-.068-.03-.04-.052-.087-.08-.13-.044-.07-.09-.138-.136-.207a.18.18 0 00-.014.105c.012.127.03.253.035.38.005.1-.024.12-.121.104-.104-.017-.206-.04-.31-.058-.064-.012-.131-.028-.202.03l.081.208c.09 0 .166-.01.237.002a.819.819 0 01.458.251c.078.083.154.168.241.26l.018-.005c-.004-.006-.008-.013-.01-.04.014-.056-.062-.118.018-.178.031.03.064.057.088.09.058.078.111.159.169.257l.089.141.024-.013a2093.819 2093.819 0 01-.427-.934c.055.007.083.007.108.016.193.07.385.142.577.216.074.028.147.06.219.094.062.028.112.018.157-.033.05-.056.102-.112.154-.167.05-.051.095-.046.132.014.016.025.026.053.04.08.071.138.143.277.217.433l.159.308.025-.011c-.044-.106-.07-.218-.138-.334-.057-.182-.168-.346-.206-.545.136.034.362.326.567.732l.057.074.018-.011a1.563 1.563 0 01-.052-.127c-.046-.145-.097-.29-.136-.436-.022-.083-.036-.173.022-.26l.109.058-.026-.207.027-.016c.022.02.05.036.065.06.073.108.143.22.215.33.01.016.029.029.043.043-.036-.217-.2-.38-.229-.626l.155.112c.014-.166.012-.319.042-.465.032-.158-.023-.297-.063-.445.024.004.036.006.055.025.092.124.183.249.277.371.02.027.05.047.069.087l.04.063.019-.015a.293.293 0 01-.053-.082 27.922 27.922 0 01-.332-.49c-.221-.311-.363-.467-.485-.521zm-6.57.327c-.003.161.092.275.069.415l-.368.087c.09.139.032.237-.052.331-.05.057-.092.122-.143.178-.037.04-.046.078-.018.126l.16.275c.029.048.072.066.128.064.076-.003.152 0 .228-.001.116-.003.216.022.275.137.006.014.02.024.044.052.004-.059-.003-.098.01-.13.016-.04.04-.099.072-.108.084-.023.173-.024.26-.03.013-.001.027.018.04.029l.071.065c.019-.11-.082-.198-.024-.31l.126.04c-.026-.123-.07-.245-.071-.366 0-.123.051-.243.115-.36.107.062.16.156.234.253.183.265.36.533.494.834.165-.078.27.068.407.088-.003-.106-.133-.441-.197-.492a.142.142 0 00-.102-.028c-.06.011-.119.039-.191.063-.025-.039-.056-.078-.077-.122a3.936 3.936 0 00-.473-.783c-.076-.094-.16-.182-.228-.26l-.391.285c-.049.035-.094.03-.132-.017l-.169-.207c-.025-.03-.053-.059-.097-.108z"})]})}function UB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"currentColor",className:e,children:R.jsx("path",{d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"})})}function $B({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:e,"aria-hidden":"true",children:R.jsx("g",{transform:"translate(3.4502, 3)",fill:"#9570BE",children:R.jsx("path",{d:"M3.17890888,3.6 L3.17890888,0 L16,0 L16,3.6 L3.17890888,3.6 Z M9.642,7.2 L9.64218223,10.8 L0,10.8 L0,3.6 L16,3.6 L16,7.2 L9.642,7.2 Z M3.17890888,18 L3.178,14.4 L0,14.4 L0,10.8 L16,10.8 L16,18 L3.17890888,18 Z",fillRule:"nonzero"})})})}function BB({size:t=16,className:e=""}){return R.jsxs("svg",{width:t,height:t,viewBox:"0 0 120 90",fill:"currentColor",className:e,children:[R.jsx("rect",{x:"10",y:"8",width:"100",height:"12",rx:"2"}),R.jsx("rect",{x:"25",y:"20",width:"12",height:"62",rx:"2"}),R.jsx("rect",{x:"75",y:"20",width:"12",height:"45",rx:"2"}),R.jsx("rect",{x:"71",y:"55",width:"20",height:"16",rx:"3"}),R.jsx("rect",{x:"76",y:"71",width:"3",height:"8",rx:"1"}),R.jsx("rect",{x:"82",y:"71",width:"3",height:"8",rx:"1"})]})}function VB({size:t=16,className:e=""}){return R.jsxs("svg",{width:t,height:t,viewBox:"0 0 120 90",fill:"currentColor",className:e,children:[R.jsx("rect",{x:"10",y:"8",width:"100",height:"12",rx:"2"}),R.jsx("rect",{x:"25",y:"20",width:"12",height:"62",rx:"2"}),R.jsx("rect",{x:"83",y:"20",width:"12",height:"62",rx:"2"})]})}function HB({size:t=16,className:e=""}){return R.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",className:e,children:[R.jsx("path",{d:"M9 3v2"}),R.jsx("path",{d:"M15 3v2"}),R.jsx("rect",{x:"4",y:"6",width:"16",height:"13",rx:"3"}),R.jsx("circle",{cx:"9",cy:"13",r:"1.4",fill:"currentColor",stroke:"none"}),R.jsx("circle",{cx:"15",cy:"13",r:"1.4",fill:"currentColor",stroke:"none"}),R.jsx("path",{d:"M9 16h6"})]})}function WB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M12.105 2L9.927 4.953H.653L2.83 2h9.276zM23.254 19.048L21.078 22h-9.242l2.174-2.952h9.244zM24 2L9.264 22H0L14.736 2H24z"})})}function GB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M20.113 5.5l-.442 1.557a.157.157 0 01-.196.106l-7.414-2.157a.16.16 0 00-.143.028l-7.342 5.74a.159.159 0 01-.074.032l-4.37.656a.154.154 0 00-.132.162l.02.245c.005.078.071.14.152.141l5.074.128.058.002 3.75-1.953a.16.16 0 01.164.01l2.657 1.847a.152.152 0 01.066.125l-.023 2.45c0 .032.01.063.028.089l3.737 5.227c.03.04.077.065.129.065h1.182a.153.153 0 00.14-.224l-2.664-4.919a.15.15 0 01.005-.152l1.389-2.169a.156.156 0 01.062-.055l4.965-2.456a.16.16 0 01.158.01l1.418.921a.16.16 0 00.087.026h1.289c.125 0 .2-.136.13-.237l-3.578-5.29c-.074-.109-.246-.082-.282.044z"})})}function qB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M21.595 23.61c1.167-.254 2.405-.944 2.405-.944l-2.167-1.784a12.124 12.124 0 01-2.695-3.131 12.127 12.127 0 00-3.97-4.049l-.794-.462a1.115 1.115 0 01-.488-.815.844.844 0 01.154-.575c.413-.582 2.548-3.115 2.94-3.44.503-.416 1.065-.762 1.586-1.159.074-.056.148-.112.221-.17.003-.002.007-.004.009-.007.167-.131.325-.272.45-.438.453-.524.563-.988.59-1.193-.061-.197-.244-.639-.753-1.148.319.02.705.272 1.056.569.235-.376.481-.773.727-1.171.165-.266-.08-.465-.086-.471h-.001V3.22c-.007-.007-.206-.25-.471-.086-.567.35-1.134.702-1.639 1.021 0 0-.597-.012-1.305.599a2.464 2.464 0 00-.438.45l-.007.009c-.058.072-.114.147-.17.221-.397.521-.743 1.083-1.16 1.587-.323.391-2.857 2.526-3.44 2.94a.842.842 0 01-.574.153 1.115 1.115 0 01-.815-.488l-.462-.794a12.123 12.123 0 00-4.049-3.97 12.133 12.133 0 01-3.13-2.695L1.332 0S.643 1.238.39 2.405c.352.428 1.27 1.49 2.34 2.302C1.58 4.167.73 3.75.06 3.4c-.103.765-.063 1.92.043 2.816.726.317 1.961.806 3.219 1.066-1.006.236-2.11.278-2.961.262.15.554.358 1.119.64 1.688.119.263.25.52.39.77.452.125 2.222.383 3.164.171l-2.51.897a27.776 27.776 0 002.544 2.726c2.031-1.092 2.494-1.241 4.018-2.238-2.467 2.008-3.108 2.828-3.8 3.67l-.483.678c-.25.351-.469.725-.65 1.117-.61 1.31-1.47 4.1-1.47 4.1-.154.486.202.842.674.674 0 0 2.79-.861 4.1-1.47.392-.182.766-.4 1.118-.65l.677-.483c.227-.187.453-.37.701-.586 0 0 1.705 2.02 3.458 3.349l.896-2.511c-.211.942.046 2.712.17 3.163.252.142.509.272.772.392.569.28 1.134.49 1.688.64-.016-.853.026-1.956.261-2.962.26 1.258.75 2.493 1.067 3.219.895.106 2.051.146 2.816.043a73.87 73.87 0 01-1.308-2.67c.811 1.07 1.874 1.988 2.302 2.34h-.001z"})})}function KB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",className:e,children:R.jsx("path",{d:"M0 0v24h24V0H0zm22.222 22.222H1.778V1.778h20.444v20.444zm-7.555-4.964h2.222v1.778h-2.794L12.89 17.83v-2.794h1.778v2.222zm4 0h-1.778v-2.222h-2.222v-1.778h2.793l1.207 1.207v2.793zm-7.556-2.591H9.333v-1.778h1.778v1.778zm-5.778-1.778h1.778v4h4v1.778H6.54L5.333 17.46V12.89zm13.334-3.556v1.778h-5.778V9.333h1.987V7.111h-1.987V5.333h2.558l1.206 1.207v2.793h2.014zm-11.556-2h2.222l1.778 1.778v2H9.333v-2H7.111v2H5.333V5.333h1.778v2zm4 0H9.333v-2h1.778v2z"})})}function YB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",className:e,children:R.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.125 2.75C2.9179 2.75 2.75 2.9179 2.75 3.125V11.375H2V3.125C2 2.50368 2.50368 2 3.125 2H13.1723C13.6735 2 13.9244 2.6059 13.5701 2.96025L7.38189 9.14843H9.125V8.375H9.875V9.33593C9.875 9.6466 9.6232 9.8984 9.3125 9.8984H6.63189L5.34282 11.1875H11.1875V6.5H11.9375V11.1875C11.9375 11.6017 11.6017 11.9375 11.1875 11.9375H4.59282L3.28032 13.25H12.875C13.0821 13.25 13.25 13.0821 13.25 12.875V4.625H14V12.875C14 13.4963 13.4963 14 12.875 14H2.82767C2.32653 14 2.07557 13.3941 2.42992 13.0397L8.59468 6.875H6.875V7.625H6.125V6.6875C6.125 6.37684 6.37684 6.125 6.6875 6.125H9.34468L10.6571 4.8125H4.8125V9.5H4.0625V4.8125C4.0625 4.39829 4.39829 4.0625 4.8125 4.0625H11.4071L12.7197 2.75H3.125Z"})})}function ZB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor",fillRule:"evenodd",xmlns:"http://www.w3.org/2000/svg",className:e,children:R.jsx("path",{d:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z"})})}const JB={CLAUDE:RB,ZCODE:WB,CODEBUDDY:V2,WORKBUDDY:V2,CODEX:LB,COPILOT:zB,CRAFT:$B,CURSOR:IB,DEEPSEEK:ZB,DROID:HB,GEMINI:DB,GITHUB:UB,GOOSE:qB,GROK:MB,HERMES:FB,KIMI:jB,KIRO:NB,KILOCODE:KB,OPENCODE:OB,OMP:BB,PI:VB,ROOCODE:GB,ZED:YB},XB={ANTIGRAVITY:"/brand-logos/antigravity.svg",CLAUDE:"/brand-logos/claude-code.svg",CODEX:"/brand-logos/codex.svg",DEEPSEEK:"/brand-logos/deepseek.svg",GEMINI:"/brand-logos/gemini.svg","KILO-CLI":"/brand-logos/kilo.svg","KILO-CODE":"/brand-logos/kilo.svg",MIMO:"/brand-logos/mimo.svg",OPENCLAW:"/brand-logos/openclaw.svg",OPENCODE:"/brand-logos/opencode.svg"};function QB({size:t=16,className:e=""}){return R.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:e,children:R.jsx("circle",{cx:"12",cy:"12",r:"7.5",strokeDasharray:"3 3"})})}function eV({provider:t,size:e=16,color:n,className:r=""}){const a=t?.toUpperCase?.()||"",s=XB[a];if(s)return R.jsx("img",{src:s,alt:"",width:e,height:e,className:r,style:{width:e,height:e,objectFit:"contain"},"aria-hidden":!0});const l=JB[a];return l?R.jsx(l,{size:e,className:r}):R.jsx(QB,{size:e,className:`text-oai-gray-400 dark:text-oai-gray-500 shrink-0 ${r}`})}const B5="tokentracker-skills";async function ko(t){const e=new URL(`/functions/${B5}`,window.location.origin);if(t)for(const[a,s]of Object.entries(t))s!=null&&s!==""&&e.searchParams.set(a,String(s));const n=await fetch(e.toString(),{headers:{Accept:"application/json"},cache:"no-store"}),r=await n.json().catch(()=>null);if(!n.ok)throw new Error(r?.error||`Request failed with HTTP ${n.status}`);return r}async function ys(t){const e=await Xu(),n=await fetch(`/functions/${B5}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",...e},cache:"no-store",body:JSON.stringify(t)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok===!1)throw new Error(r?.error||`Request failed with HTTP ${n.status}`);return r}function tV(){return ko({mode:"installed"})}function pY(t={}){return ko({mode:"discover",...t.force?{force:1}:{}})}function fY(t,e=0,n=20){return ko({mode:"search",q:t,offset:e,limit:n})}function mY(){return ko({mode:"repos"})}function gY(t,e){return ys({action:"install",skill:t,targets:e})}function vY(t){return ys({action:"uninstall",id:t})}function _Y(t){return ys({action:"restore",id:t})}function yY(t,e){return ys({action:"set_targets",id:t,targets:e})}function bY(t,e){return ys({action:"import_local",directory:t,targets:e})}function kY(t,e){return ys({action:"delete_local",directory:t,targets:e||[]})}function wY(t){return ys({action:"add_repo",repo:t})}function xY(t,e){return ys({action:"remove_repo",owner:t,name:e})}function PY(t={}){return ko({mode:"popular",...t.force?{force:1}:{}})}function SY(t={}){return ko({mode:"updates",...t.force?{force:1}:{}})}function CY(t={}){return ko({mode:"skill_usage",...t.force?{force:1}:{}})}const nV=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");function rV(){const t=Ul(),e=XU(),[n,r]=k.useState(!1),[a,s]=k.useState(""),[l,c]=k.useState(0),[d,h]=k.useState([]),p=k.useRef(null),m=k.useRef(null);k.useEffect(()=>{const T=E=>{(E.metaKey||E.ctrlKey)&&(E.key==="k"||E.key==="K")&&(E.preventDefault(),r($=>!$))};return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)},[]),k.useEffect(()=>{if(!n)return;s(""),c(0);const T=requestAnimationFrame(()=>p.current?.focus());return nV&&!d.length&&tV().then(E=>h(E?.skills||[])).catch(()=>h([])),()=>cancelAnimationFrame(T)},[n,d.length]);const v=k.useMemo(()=>{const T=U5().flatMap(D=>D.items.map($=>({kind:"page",id:`page:${$.id}`,label:$.label,sub:xe("cmdk.group.pages"),Icon:$.icon,run:()=>t($.to)}))),E=(d||[]).map(D=>({kind:"skill",id:`skill:${D.id||D.directory}`,label:D.name||D.directory,sub:D.repoOwner&&D.repoName?`${D.repoOwner}/${D.repoName}`:xe("cmdk.group.skills"),provider:(D.targets||[])[0]||"claude",run:()=>t(`/skills?skill=${encodeURIComponent(D.directory||D.id)}`)}));return[...T,...E]},[t,d]),y=k.useMemo(()=>{const T=a.trim().toLowerCase();return T?v.filter(E=>E.label.toLowerCase().includes(T)||String(E.sub||"").toLowerCase().includes(T)):v},[v,a]);k.useEffect(()=>{l>=y.length&&c(y.length?y.length-1:0)},[l,y.length]),k.useEffect(()=>{if(!n)return;m.current?.querySelector(`[data-cmdk-index="${l}"]`)?.scrollIntoView({block:"nearest"})},[l,n]);const b=k.useCallback(()=>r(!1),[]),x=k.useCallback(T=>{T&&(b(),T.run())},[b]),P=T=>{T.key==="ArrowDown"?(T.preventDefault(),c(E=>Math.min(E+1,Math.max(0,y.length-1)))):T.key==="ArrowUp"?(T.preventDefault(),c(E=>Math.max(E-1,0))):T.key==="Enter"?(T.preventDefault(),x(y[l])):T.key==="Escape"&&(T.preventDefault(),b())},A={duration:e?0:.12},L=e?{duration:0}:{type:"spring",stiffness:460,damping:34,mass:.6};return R.jsx(c5,{children:n?R.jsxs(vu.div,{className:"fixed inset-0 z-[120] flex items-start justify-center px-4 pt-[16vh]",initial:e?!1:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:A,children:[R.jsx("button",{type:"button","aria-label":xe("cmdk.close"),onClick:b,className:"absolute inset-0 cursor-default bg-oai-black/40"}),R.jsxs(vu.div,{role:"dialog","aria-modal":"true","aria-label":xe("cmdk.open_aria"),initial:e?!1:{opacity:0,y:-8,scale:.985},animate:{opacity:1,y:0,scale:1},exit:e?{opacity:0}:{opacity:0,y:-8,scale:.985},transition:L,className:"relative w-full max-w-xl overflow-hidden rounded-2xl border border-oai-gray-200 bg-oai-white shadow-2xl dark:border-oai-gray-800 dark:bg-oai-gray-950",children:[R.jsxs("div",{className:"flex items-center gap-2.5 border-b border-oai-gray-200 px-4 dark:border-oai-gray-800",children:[R.jsx(UN,{className:"h-4 w-4 shrink-0 text-oai-gray-400","aria-hidden":!0}),R.jsx("input",{ref:p,type:"text",value:a,onChange:T=>{s(T.target.value),c(0)},onKeyDown:P,"aria-label":xe("cmdk.placeholder"),"aria-controls":"cmdk-listbox","aria-activedescendant":y[l]?`cmdk-opt-${l}`:void 0,role:"combobox","aria-expanded":"true",placeholder:xe("cmdk.placeholder"),className:"h-12 w-full bg-transparent text-sm text-oai-black placeholder:text-oai-gray-400 focus:outline-none dark:text-white"})]}),R.jsx("div",{ref:m,id:"cmdk-listbox",role:"listbox",className:"max-h-[min(56vh,22rem)] overflow-y-auto p-1.5",children:y.length===0?R.jsx("div",{className:"px-3 py-8 text-center text-sm text-oai-gray-500 dark:text-oai-gray-400",children:xe("cmdk.empty")}):y.map((T,E)=>{const D=E===l;return R.jsxs("button",{type:"button",role:"option",id:`cmdk-opt-${E}`,"data-cmdk-index":E,"aria-selected":D,onMouseMove:()=>c(E),onClick:()=>x(T),className:Bt("flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm transition-colors",D?"bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800/70 dark:text-white":"text-oai-gray-700 dark:text-oai-gray-200"),children:[R.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center text-oai-gray-500 dark:text-oai-gray-400",children:T.kind==="skill"?R.jsx(eV,{provider:T.provider,size:16}):R.jsx(T.Icon,{className:"h-4 w-4","aria-hidden":!0})}),R.jsx("span",{className:"min-w-0 flex-1 truncate font-medium",children:T.label}),R.jsx("span",{className:"shrink-0 truncate text-xs text-oai-gray-400 dark:text-oai-gray-500",children:T.sub}),D?R.jsx(yN,{className:"h-3.5 w-3.5 shrink-0 text-oai-gray-400","aria-hidden":!0}):null]},T.id)})})]})]}):null})}const aV=[];function K0(t){k.useEffect(t,aV)}const H2={};function Kl(t,e){const n=k.useRef(H2);return n.current===H2&&(n.current=t(e)),n}const iV=()=>{},Gr=typeof document<"u"?k.useLayoutEffect:iV;function sV(t,e){return function(r,...a){const s=new URL(t);return s.searchParams.set("code",r.toString()),a.forEach(l=>s.searchParams.append("args[]",l)),`${e} error #${r}; visit ${s} for the full message.`}}const Yl=sV("https://base-ui.com/production-error","Base UI"),Y0=k.createContext(void 0);function Z0(){const t=k.useContext(Y0);if(!t)throw new Error(Yl(73));return t}const pa=(t,e,n,r,a,s,...l)=>{if(l.length>0)throw new Error(Yl(1));let c;if(t&&e&&n&&r&&a&&s)c=(d,h,p,m)=>{const v=t(d,h,p,m),y=e(d,h,p,m),b=n(d,h,p,m),x=r(d,h,p,m),P=a(d,h,p,m);return s(v,y,b,x,P,h,p,m)};else if(t&&e&&n&&r&&a)c=(d,h,p,m)=>{const v=t(d,h,p,m),y=e(d,h,p,m),b=n(d,h,p,m),x=r(d,h,p,m);return a(v,y,b,x,h,p,m)};else if(t&&e&&n&&r)c=(d,h,p,m)=>{const v=t(d,h,p,m),y=e(d,h,p,m),b=n(d,h,p,m);return r(v,y,b,h,p,m)};else if(t&&e&&n)c=(d,h,p,m)=>{const v=t(d,h,p,m),y=e(d,h,p,m);return n(v,y,h,p,m)};else if(t&&e)c=(d,h,p,m)=>{const v=t(d,h,p,m);return e(v,h,p,m)};else if(t)c=t;else throw new Error("Missing arguments");return c};var sv={exports:{}},ov={};var W2;function oV(){if(W2)return ov;W2=1;var t=Hu();function e(m,v){return m===v&&(m!==0||1/m===1/v)||m!==m&&v!==v}var n=typeof Object.is=="function"?Object.is:e,r=t.useState,a=t.useEffect,s=t.useLayoutEffect,l=t.useDebugValue;function c(m,v){var y=v(),b=r({inst:{value:y,getSnapshot:v}}),x=b[0].inst,P=b[1];return s(function(){x.value=y,x.getSnapshot=v,d(x)&&P({inst:x})},[m,y,v]),a(function(){return d(x)&&P({inst:x}),m(function(){d(x)&&P({inst:x})})},[m]),l(y),y}function d(m){var v=m.getSnapshot;m=m.value;try{var y=v();return!n(m,y)}catch{return!0}}function h(m,v){return v()}var p=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?h:c;return ov.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:p,ov}var G2;function V5(){return G2||(G2=1,sv.exports=oV()),sv.exports}var lV=V5(),lv={exports:{}},cv={};var q2;function cV(){if(q2)return cv;q2=1;var t=Hu(),e=V5();function n(h,p){return h===p&&(h!==0||1/h===1/p)||h!==h&&p!==p}var r=typeof Object.is=="function"?Object.is:n,a=e.useSyncExternalStore,s=t.useRef,l=t.useEffect,c=t.useMemo,d=t.useDebugValue;return cv.useSyncExternalStoreWithSelector=function(h,p,m,v,y){var b=s(null);if(b.current===null){var x={hasValue:!1,value:null};b.current=x}else x=b.current;b=c(function(){function A($){if(!L){if(L=!0,T=$,$=v($),y!==void 0&&x.hasValue){var I=x.value;if(y(I,$))return E=I}return E=$}if(I=E,r(T,$))return I;var S=v($);return y!==void 0&&y(I,S)?(T=$,I):(T=$,E=S)}var L=!1,T,E,D=m===void 0?null:m;return[function(){return A(p())},D===null?void 0:function(){return A(D())}]},[p,m,v,y]);var P=a(h,b[0],b[1]);return l(function(){x.hasValue=!0,x.value=P},[P]),d(P),P},cv}var K2;function uV(){return K2||(K2=1,lv.exports=cV()),lv.exports}var dV=uV();const hV=parseInt(k.version,10);function J0(t){return hV>=t}const pV=J0(19),fV=pV?gV:vV;function H5(t,e,n,r,a){return fV(t,e,n,r,a)}function mV(t,e,n,r,a){const s=k.useCallback(()=>e(t.getSnapshot(),n,r,a),[t,e,n,r,a]);return lV.useSyncExternalStore(t.subscribe,s,s)}function gV(t,e,n,r,a){return mV(t,e,n,r,a)}function vV(t,e,n,r,a){return dV.useSyncExternalStoreWithSelector(t.subscribe,t.getSnapshot,t.getSnapshot,s=>e(s,n,r,a))}class _V{constructor(e){this.state=e,this.listeners=new Set,this.updateTick=0}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;setState(e){if(this.state===e)return;this.state=e,this.updateTick+=1;const n=this.updateTick;for(const r of this.listeners){if(n!==this.updateTick)return;r(e)}}update(e){for(const n in e)if(!Object.is(this.state[n],e[n])){this.setState({...this.state,...e});return}}set(e,n){Object.is(this.state[e],n)||this.setState({...this.state,[e]:n})}notifyAll(){const e={...this.state};this.setState(e)}use(e,n,r,a){return H5(this,e,n,r,a)}}const X0={...yS},uv=X0.useInsertionEffect,yV=uv&&uv!==X0.useLayoutEffect?uv:t=>t();function fo(t){const e=Kl(bV).current;return e.next=t,yV(e.effect),e.trampoline}function bV(){const t={next:void 0,callback:kV,trampoline:(...e)=>t.callback?.(...e),effect:()=>{t.callback=t.next}};return t}function kV(){}function wV(){}const TY=Object.freeze([]),eo=Object.freeze({});class xV extends _V{constructor(e,n={},r){super(e),this.context=n,this.selectors=r}useSyncedValue(e,n){k.useDebugValue(e);const r=this;Gr(()=>{r.state[e]!==n&&r.set(e,n)},[r,e,n])}useSyncedValueWithCleanup(e,n){const r=this;Gr(()=>(r.state[e]!==n&&r.set(e,n),()=>{r.set(e,void 0)}),[r,e,n])}useSyncedValues(e){const n=this,r=Object.values(e);Gr(()=>{n.update(e)},[n,...r])}useControlledProp(e,n){k.useDebugValue(e);const r=this,a=n!==void 0;Gr(()=>{a&&!Object.is(r.state[e],n)&&r.setState({...r.state,[e]:n})},[r,e,n,a])}select(e,n,r,a){const s=this.selectors[e];return s(this.state,n,r,a)}useState(e,n,r,a){return k.useDebugValue(e),H5(this,this.selectors[e],n,r,a)}useContextCallback(e,n){k.useDebugValue(e);const r=fo(n??wV);this.context[e]=r}useStateSetter(e){const n=k.useRef(void 0);return n.current===void 0&&(n.current=r=>{this.set(e,r)}),n.current}observe(e,n){let r;typeof e=="function"?r=e:r=this.selectors[e];let a=r(this.state);return n(a,a,this),this.subscribe(s=>{const l=r(s);if(!Object.is(a,l)){const c=a;a=l,n(l,c,this)}})}}function zf(){return typeof window<"u"}function ka(t){return Q0(t)?(t.nodeName||"").toLowerCase():"#document"}function Ti(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function PV(t){var e;return(e=(Q0(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function Q0(t){return zf()?t instanceof Node||t instanceof Ti(t).Node:!1}function eb(t){return zf()?t instanceof Element||t instanceof Ti(t).Element:!1}function fs(t){return zf()?t instanceof HTMLElement||t instanceof Ti(t).HTMLElement:!1}function qp(t){return!zf()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Ti(t).ShadowRoot}function W5(t){const{overflow:e,overflowX:n,overflowY:r,display:a}=Ff(t);return/auto|scroll|overlay|hidden|clip/.test(e+r+n)&&a!=="inline"&&a!=="contents"}function EY(t){return/^(table|td|th)$/.test(ka(t))}function SV(t){try{if(t.matches(":popover-open"))return!0}catch{}try{return t.matches(":modal")}catch{return!1}}const CV=/transform|translate|scale|rotate|perspective|filter/,TV=/paint|layout|strict|content/,js=t=>!!t&&t!=="none";let dv;function EV(t){const e=eb(t)?Ff(t):t;return js(e.transform)||js(e.translate)||js(e.scale)||js(e.rotate)||js(e.perspective)||!AV()&&(js(e.backdropFilter)||js(e.filter))||CV.test(e.willChange||"")||TV.test(e.contain||"")}function AY(t){let e=z_(t);for(;fs(e)&&!G5(e);){if(EV(e))return e;if(SV(e))return null;e=z_(e)}return null}function AV(){return dv==null&&(dv=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),dv}function G5(t){return/^(html|body|#document)$/.test(ka(t))}function Ff(t){return Ti(t).getComputedStyle(t)}function RY(t){return eb(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function z_(t){if(ka(t)==="html")return t;const e=t.assignedSlot||t.parentNode||qp(t)&&t.host||PV(t);return qp(e)?e.host:e}function q5(t){const e=z_(t);return G5(e)?t.ownerDocument?t.ownerDocument.body:t.body:fs(e)&&W5(e)?e:q5(e)}function Y2(t,e,n){var r;e===void 0&&(e=[]),n===void 0&&(n=!0);const a=q5(t),s=a===((r=t.ownerDocument)==null?void 0:r.body),l=Ti(a);if(s){const c=RV(l);return e.concat(l,l.visualViewport||[],W5(a)?a:[],c&&n?Y2(c):[])}else return e.concat(a,Y2(a,[],n))}function RV(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function K5(...t){return()=>{for(let e=0;e<t.length;e+=1){const n=t[e];n&&n()}}}function ya(t){return t?.ownerDocument||document}function to(t,e,n,r){return t.addEventListener(e,n,r),()=>{t.removeEventListener(e,n,r)}}const Ch=null;class LV{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;const n=this.callbacks,r=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,r>0)for(let a=0;a<n.length;a+=1)n[a]?.(e)};request(e){const n=this.nextId;return this.nextId+=1,this.callbacks.push(e),this.callbacksCount+=1,!this.isScheduled&&(requestAnimationFrame(this.tick),this.isScheduled=!0),n}cancel(e){const n=e-this.startId;n<0||n>=this.callbacks.length||(this.callbacks[n]=null,this.callbacksCount-=1)}}const Th=new LV;class tb{static create(){return new tb}static request(e){return Th.request(e)}static cancel(e){return Th.cancel(e)}currentId=Ch;request(e){this.cancel(),this.currentId=Th.request(()=>{this.currentId=Ch,e()})}cancel=()=>{this.currentId!==Ch&&(Th.cancel(this.currentId),this.currentId=Ch)};disposeEffect=()=>this.cancel}function IV(){const t=Kl(tb.create).current;return K0(t.disposeEffect),t}const Fc=0;class Nu{static create(){return new Nu}currentId=Fc;start(e,n){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Fc,n()},e)}isStarted(){return this.currentId!==Fc}clear=()=>{this.currentId!==Fc&&(clearTimeout(this.currentId),this.currentId=Fc)};disposeEffect=()=>this.clear}function DV(){const t=Kl(Nu.create).current;return K0(t.disposeEffect),t}let Z2=0;function Y5(t){return Z2+=1,`${t}-${Math.random().toString(36).slice(2,6)}-${Z2}`}function hv(t,e){if(typeof t=="string")return{description:t};if(typeof t=="function"){const n=t(e);return typeof n=="string"?{description:n}:n}return t}function MV(){return typeof navigator>"u"?{userAgent:"",platform:"",maxTouchPoints:0}:{userAgent:navigator.userAgent,platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??0}}const{userAgent:NV,platform:OV,maxTouchPoints:jV}=MV(),Uf=NV.toLowerCase(),Ou=OV.toLowerCase(),Z5=/^i(os$|p)/.test(Ou)||Ou==="macintel"&&jV>1,J2="android",LY=Ou===J2||Uf.includes(J2),zV=!Z5&&Ou.startsWith("mac");Ou.startsWith("win");const FV=zV||Z5,nb=typeof CSS<"u"&&!!CSS.supports?.("-webkit-backdrop-filter:none");!nb&&Uf.includes("firefox");!nb&&Uf.includes("chrom");const UV=FV,$V=/jsdom|happydom/.test(Uf),X2="data-base-ui-focusable",J5="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])",IY="ArrowLeft",DY="ArrowRight",MY="ArrowUp",NY="ArrowDown";function kl(t){let e=t.activeElement;for(;e?.shadowRoot?.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function Ei(t,e){if(!t||!e)return!1;const n=e.getRootNode?.();if(t.contains(e))return!0;if(n&&qp(n)){let r=e;for(;r;){if(t===r)return!0;r=r.parentNode||r.host}}return!1}function no(t){return"composedPath"in t?t.composedPath()[0]:t.target}function OY(t,e){if(!eb(t))return!1;const n=t;if(e.hasElement(n))return!n.hasAttribute("data-trigger-disabled");for(const[,r]of e.entries())if(Ei(r,n))return!r.hasAttribute("data-trigger-disabled");return!1}function jY(t,e){if(e==null)return!1;if("composedPath"in t)return t.composedPath().includes(e);const n=t;return n.target!=null&&e.contains(n.target)}function zY(t){return t.matches("html,body")}function BV(t){return fs(t)&&t.matches(J5)}function FY(t){return t?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${J5}`)!=null}function UY(t){return t?t.getAttribute("role")==="combobox"&&BV(t):!1}function F_(t){if(!t||$V)return!0;try{return t.matches(":focus-visible")}catch{return!0}}function $Y(t){return t?t.hasAttribute(X2)?t:t.querySelector(`[${X2}]`)||t:null}function BY(t,e){return e<0||e>=t.length}function VY(t,e){return X5(t.current,{disabledIndices:e})}function HY(t,e){return X5(t.current,{decrement:!0,startingIndex:t.current.length,disabledIndices:e})}function X5(t,{startingIndex:e=-1,decrement:n=!1,disabledIndices:r,amount:a=1}={}){let s=e;do s+=n?-a:a;while(s>=0&&s<=t.length-1&&VV(t,s,r));return s}function VV(t,e,n){if(typeof n=="function"?n(e):n?.includes(e)??!1)return!0;const a=t[e];return a?Q5(a)?!n&&(a.hasAttribute("disabled")||a.getAttribute("aria-disabled")==="true"):!0:!1}function HV(t){return t.visibility==="hidden"||t.visibility==="collapse"}function Q5(t,e=t?Ff(t):null){return!t||!t.isConnected||!e||HV(e)?!1:typeof t.checkVisibility=="function"?t.checkVisibility():e.display!=="none"&&e.display!=="contents"}const WV='a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';function GV(t){const e=t.assignedSlot;if(e)return e;if(t.parentElement)return t.parentElement;const n=t.getRootNode();return qp(n)?n.host:null}function U_(t){for(const e of Array.from(t.children))if(ka(e)==="summary")return e;return null}function qV(t,e){const n=U_(e);return!!n&&(t===n||Ei(n,t))}function e4(t){const e=t?ka(t):"";return t!=null&&t.matches(WV)&&(e!=="summary"||t.parentElement!=null&&ka(t.parentElement)==="details"&&U_(t.parentElement)===t)&&(e!=="details"||U_(t)==null)&&(e!=="input"||t.type!=="hidden")}function t4(t){if(!e4(t)||!t.isConnected||t.matches(":disabled"))return!1;for(let e=t;e;e=GV(e)){const n=e!==t,r=ka(e)==="slot";if(e.hasAttribute("inert")||n&&ka(e)==="details"&&!e.open&&!qV(t,e)||e.hasAttribute("hidden")||!r&&!KV(e,n))return!1}return!0}function KV(t,e){const n=Ff(t);return e?n.display!=="none":Q5(t,n)}function n4(t){const e=t.tabIndex;if(e<0){const n=ka(t);if(n==="details"||n==="audio"||n==="video"||fs(t)&&t.isContentEditable)return 0}return e}function pv(t){if(ka(t)!=="input")return null;const e=t;return e.type==="radio"&&e.name!==""?e:null}function YV(t,e){const n=pv(t);if(!n)return!0;const r=e.find(a=>{const s=pv(a);return s?.name===n.name&&s.form===n.form&&s.checked});return r?r===n:e.find(a=>{const s=pv(a);return s?.name===n.name&&s.form===n.form})===n}function r4(t){if(fs(t)&&ka(t)==="slot"){const e=t.assignedElements({flatten:!0});if(e.length>0)return e}return fs(t)&&t.shadowRoot?Array.from(t.shadowRoot.children):Array.from(t.children)}function a4(t,e){r4(t).forEach(n=>{e4(n)&&e.push(n),a4(n,e)})}function i4(t,e,n){r4(t).forEach(r=>{fs(r)&&r.matches(e)&&n.push(r),i4(r,e,n)})}function WY(t){return t4(t)&&n4(t)>=0}function ZV(t){const e=[];return a4(t,e),e.filter(t4)}function rb(t){const e=ZV(t);return e.filter(n=>n4(n)>=0&&YV(n,e))}function s4(t,e){const n=rb(t),r=n.length;if(r===0)return;const a=kl(ya(t)),s=n.indexOf(a),l=s===-1?e===1?0:r-1:s+e;return n[l]}function JV(t){return s4(ya(t).body,1)||t}function XV(t){return s4(ya(t).body,-1)||t}function o4(t,e){if(!t)return null;const n=rb(ya(t).body),r=n.length;if(r===0)return null;const a=n.indexOf(t);if(a===-1)return null;const s=(a+e+r)%r;return n[s]}function GY(t){return o4(t,1)}function qY(t){return o4(t,-1)}function fv(t,e){const n=e||t.currentTarget,r=t.relatedTarget;return!r||!Ei(n,r)}function QV(t){rb(t).forEach(n=>{n.dataset.tabindex=n.getAttribute("tabindex")||"",n.setAttribute("tabindex","-1")})}function Q2(t){const e=[];i4(t,"[data-tabindex]",e),e.forEach(n=>{const r=n.dataset.tabindex;delete n.dataset.tabindex,r?n.setAttribute("tabindex",r):n.removeAttribute("tabindex")})}function Eh(t){const e=new Map;let n=0,r=0;return t.forEach((a,s)=>{const l=a.transitionStatus==="ending";e.set(a.id,{value:a,domIndex:s,visibleIndex:l?-1:n,offsetY:r}),r+=a.height||0,l||(n+=1)}),e}function mv(t,e){let n=0;return t.map(r=>{if(r.transitionStatus==="ending")return r;const a=n>=e;return n+=1,r.limited===a?r:{...r,limited:a}})}const Ah=t=>t.toastMetadata,Da={toasts:pa(t=>t.toasts),isEmpty:pa(t=>t.toasts.length===0),toast:pa(Ah,(t,e)=>t.get(e)?.value),toastIndex:pa(Ah,(t,e)=>t.get(e)?.domIndex??-1),toastOffsetY:pa(Ah,(t,e)=>t.get(e)?.offsetY??0),toastVisibleIndex:pa(Ah,(t,e)=>t.get(e)?.visibleIndex??-1),hovering:pa(t=>t.hovering),focused:pa(t=>t.focused),expanded:pa(t=>t.hovering||t.focused),expandedOrOutOfFocus:pa(t=>t.hovering||t.focused||!t.isWindowFocused),prevFocusElement:pa(t=>t.prevFocusElement)};class eH extends xV{timers=new Map;areTimersPaused=!1;constructor(e){super({...e,toastMetadata:Eh(e.toasts)},{},Da)}setFocused(e){this.set("focused",e)}setHovering(e){this.set("hovering",e)}setIsWindowFocused(e){this.set("isWindowFocused",e)}setPrevFocusElement(e){this.set("prevFocusElement",e)}setViewport=e=>{this.set("viewport",e)};syncProviderProps(e){const n=this.state.limit!==e.limit;if(this.state.timeout===e.timeout&&!n)return;const r={timeout:e.timeout,limit:e.limit};if(n){const a=mv(this.state.toasts,e.limit);r.toasts=a,r.toastMetadata=Eh(a)}this.update(r)}disposeEffect=()=>()=>{this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear()};removeToast(e,n={}){const r=Da.toastIndex(this.state,e);if(r===-1)return;const a=this.state.toasts[r];n.skipOnRemove||a?.onRemove?.();const s=[...this.state.toasts];s.splice(r,1),this.setToasts(s)}addToast=e=>{const{timeout:n,limit:r}=this.state,a=e.id||Y5("toast");if(e.id){const d=Da.toast(this.state,e.id);if(d)if(d.transitionStatus==="ending")this.removeToast(e.id,{skipOnRemove:!0});else{const{id:h,transitionStatus:p,...m}=e;return this.updateToastInternal(e.id,m,{resetTimer:!0,markUpdated:!0}),e.id}}const s={...e,id:a,updateKey:0,transitionStatus:"starting"},l=[s,...this.state.toasts];this.setToasts(mv(l,r));const c=s.timeout??n;return s.type!=="loading"&&c>0&&this.scheduleTimer(a,c,()=>this.closeToast(a)),Da.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),a};updateToast=(e,n)=>{this.updateToastInternal(e,n,{markUpdated:!0})};updateToastInternal=(e,n,r={})=>{const{timeout:a,toasts:s}=this.state,l=Da.toast(this.state,e)??null;if(!l||l.transitionStatus==="ending")return;const c={...l,...n,...r.markUpdated&&{updateKey:(l.updateKey??0)+1}};this.setToasts(s.map(x=>x.id===e?c:x));const d=c.timeout??a,h=l?.timeout??a,p=Object.hasOwn(n,"timeout"),m=c.transitionStatus!=="ending"&&c.type!=="loading"&&d>0,v=this.timers.has(e),y=h!==d,b=l?.type==="loading";if(!m&&v){this.clearTimer(e);return}m&&(!v||y||p||b||r.resetTimer)&&(this.clearTimer(e),this.scheduleTimer(e,d,()=>this.closeToast(e)),Da.expandedOrOutOfFocus(this.state)&&this.pauseTimers())};closeToast=e=>{const n=e===void 0,{limit:r,toasts:a}=this.state;let s;if(n)s=a,this.clearTimers();else{const p=Da.toast(this.state,e);if(!p)return;s=[p],this.clearTimer(e)}const l=a.map(p=>n||p.id===e?{...p,transitionStatus:"ending",height:0}:p),c=mv(l,r),d={toasts:c,toastMetadata:Eh(c)};c.some(p=>p.transitionStatus!=="ending")||(d.hovering=!1,d.focused=!1),this.update(d),s.forEach(p=>{p.transitionStatus!=="ending"&&p.onClose?.()}),this.handleFocusManagement(e)};promiseToast=(e,n)=>{const r=hv(n.loading),a=this.addToast({...r,type:"loading"}),s=e.then(l=>{const c=hv(n.success,l);return this.updateToast(a,{...c,type:"success",timeout:c.timeout}),l}).catch(l=>{const c=hv(n.error,l);return this.updateToast(a,{...c,type:"error",timeout:c.timeout}),Promise.reject(l)});return{}.hasOwnProperty.call(n,"setPromise")&&n.setPromise(s),s};pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(e=>{if(e.timeout){e.timeout.clear();const n=Date.now()-e.start,r=e.delay-n;e.remaining=r>0?r:0}}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((e,n)=>{e.remaining=e.remaining>0?e.remaining:e.delay,e.timeout??=Nu.create(),e.timeout.start(e.remaining,()=>{this.handleTimerFired(n),e.callback()}),e.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}handleDocumentPointerDown=e=>{if(e.pointerType!=="touch")return;const n=no(e);Ei(this.state.viewport,n)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))};scheduleTimer(e,n,r){const a=Date.now(),s=!Da.expandedOrOutOfFocus(this.state),l=s?Nu.create():void 0;l?.start(n,()=>{this.handleTimerFired(e),r()}),this.timers.set(e,{timeout:l,start:s?a:0,delay:n,remaining:n,callback:r})}clearTimers(){this.timers.forEach(e=>{e.timeout?.clear()}),this.timers.clear(),this.areTimersPaused=!1}clearTimer(e){this.timers.get(e)?.timeout?.clear(),this.timers.delete(e),this.resetPausedStateIfNoTimersRemain()}handleTimerFired(e){this.timers.delete(e),this.resetPausedStateIfNoTimersRemain()}resetPausedStateIfNoTimersRemain(){this.timers.size===0&&(this.areTimersPaused=!1)}setToasts(e){const n={toasts:e,toastMetadata:Eh(e)};e.length===0&&(n.hovering=!1,n.focused=!1),this.update(n)}handleFocusManagement(e){const n=kl(ya(this.state.viewport));if(!this.state.viewport||!Ei(this.state.viewport,n)||!F_(n))return;if(e===void 0){this.restoreFocusToPrevElement();return}const r=Da.toasts(this.state),a=Da.toastIndex(this.state,e);let s=null,l=a+1;for(;l<r.length;){if(r[l].transitionStatus!=="ending"){s=r[l];break}l+=1}if(!s)for(l=a-1;l>=0;){if(r[l].transitionStatus!=="ending"){s=r[l];break}l-=1}s?s.ref?.current?.focus():this.restoreFocusToPrevElement()}}const tH=function(e){const{children:n,timeout:r=5e3,limit:a=3,toastManager:s}=e,l=Kl(()=>new eH({timeout:r,limit:a,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return K0(l.disposeEffect),k.useEffect(function(){return s?s[" subscribe"](({action:h,options:p})=>{const m=p.id;h==="promise"&&p.promise?l.promiseToast(p.promise,p):h==="update"&&m?l.updateToast(m,p):h==="close"?l.closeToast(m):l.addToast(p)}):void 0},[l,s]),Gr(()=>{l.syncProviderProps({timeout:r,limit:a})},[l,r,a]),R.jsx(Y0.Provider,{value:l,children:n})},l4={clipPath:"inset(50%)",overflow:"hidden",whiteSpace:"nowrap",border:0,padding:0,width:1,height:1,margin:-1},c4={...l4,position:"fixed",top:0,left:0},KY={...l4,position:"absolute"},_u=k.forwardRef(function(e,n){const[r,a]=k.useState();Gr(()=>{UV&&nb&&a("button")},[]);const s={tabIndex:0,role:r};return R.jsx("span",{...e,ref:n,style:c4,"aria-hidden":r?void 0:!0,...s,"data-base-ui-focus-guard":""})});function eP(t,e,n,r){const a=Kl(u4).current;return rH(a,t,e,n,r)&&d4(a,[t,e,n,r]),a.callback}function nH(t){const e=Kl(u4).current;return aH(e,t)&&d4(e,t),e.callback}function u4(){return{callback:null,cleanup:null,refs:[]}}function rH(t,e,n,r,a){return t.refs[0]!==e||t.refs[1]!==n||t.refs[2]!==r||t.refs[3]!==a}function aH(t,e){return t.refs.length!==e.length||t.refs.some((n,r)=>n!==e[r])}function d4(t,e){if(t.refs=e,e.every(n=>n==null)){t.callback=null;return}t.callback=n=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),n!=null){const r=Array(e.length).fill(null);for(let a=0;a<e.length;a+=1){const s=e[a];if(s!=null)switch(typeof s){case"function":{const l=s(n);typeof l=="function"&&(r[a]=l);break}case"object":{s.current=n;break}}}t.cleanup=()=>{for(let a=0;a<e.length;a+=1){const s=e[a];if(s!=null)switch(typeof s){case"function":{const l=r[a];typeof l=="function"?l():s(null);break}case"object":{s.current=null;break}}}}}}}function tP(t){if(!k.isValidElement(t))return null;const e=t,n=e.props;return(J0(19)?n?.ref:e.ref)??null}function $_(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function iH(t,e){const n={};for(const r in t){const a=t[r];if(e?.hasOwnProperty(r)){const s=e[r](a);s!=null&&Object.assign(n,s);continue}a===!0?n[`data-${r.toLowerCase()}`]="":a&&(n[`data-${r.toLowerCase()}`]=a.toString())}return n}function sH(t,e){return typeof t=="function"?t(e):t}function oH(t,e){return typeof t=="function"?t(e):t}const ab={};function ib(t,e,n,r,a){if(!n&&!r&&!a&&!t)return Kp(e);let s=Kp(t);return e&&(s=nu(s,e)),n&&(s=nu(s,n)),r&&(s=nu(s,r)),a&&(s=nu(s,a)),s}function lH(t){if(t.length===0)return ab;if(t.length===1)return Kp(t[0]);let e=Kp(t[0]);for(let n=1;n<t.length;n+=1)e=nu(e,t[n]);return e}function Kp(t){return sb(t)?{...p4(t,ab)}:cH(t)}function nu(t,e){return sb(e)?p4(e,t):uH(t,e)}function cH(t){const e={...t};for(const n in e){const r=e[n];h4(n,r)&&(e[n]=f4(r))}return e}function uH(t,e){if(!e)return t;for(const n in e){const r=e[n];switch(n){case"style":{t[n]=$_(t.style,r);break}case"className":{t[n]=m4(t.className,r);break}default:h4(n,r)?t[n]=dH(t[n],r):t[n]=r}}return t}function h4(t,e){const n=t.charCodeAt(0),r=t.charCodeAt(1),a=t.charCodeAt(2);return n===111&&r===110&&a>=65&&a<=90&&(typeof e=="function"||typeof e>"u")}function sb(t){return typeof t=="function"}function p4(t,e){return sb(t)?t(e):t??ab}function dH(t,e){return e?t?(...n)=>{const r=n[0];if(g4(r)){const s=r;Yp(s);const l=e(...n);return s.baseUIHandlerPrevented||t?.(...n),l}const a=e(...n);return t?.(...n),a}:f4(e):t}function f4(t){return t&&((...e)=>{const n=e[0];return g4(n)&&Yp(n),t(...e)})}function Yp(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function m4(t,e){return e?t?e+" "+t:e:t}function g4(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}function id(t,e,n={}){const r=e.render,a=hH(e,n);if(n.enabled===!1)return null;const s=n.state??eo;return mH(t,r,a,s)}function hH(t,e={}){const{className:n,style:r,render:a}=t,{state:s=eo,ref:l,props:c,stateAttributesMapping:d,enabled:h=!0}=e,p=h?sH(n,s):void 0,m=h?oH(r,s):void 0,v=h?iH(s,d):eo,y=h&&c?pH(c):void 0,b=h?$_(v,y)??{}:eo;return typeof document<"u"&&(h?Array.isArray(l)?b.ref=nH([b.ref,tP(a),...l]):b.ref=eP(b.ref,tP(a),l):eP(null,null)),h?(p!==void 0&&(b.className=m4(b.className,p)),m!==void 0&&(b.style=$_(b.style,m)),b):eo}function pH(t){return Array.isArray(t)?lH(t):ib(void 0,t)}const fH=Symbol.for("react.lazy");function mH(t,e,n,r){if(e){if(typeof e=="function")return e(n,r);const a=ib(n,e.props);a.ref=n.ref;let s=e;return s?.$$typeof===fH&&(s=k.Children.toArray(e)[0]),k.cloneElement(s,a)}if(t&&typeof t=="string")return gH(t,n);throw new Error(Yl(8))}function gH(t,e){return t==="button"?k.createElement("button",{type:"button",...e,key:e.key}):t==="img"?k.createElement("img",{alt:"",...e,key:e.key}):k.createElement(t,e)}let vH=(function(t){return t.frontmostHeight="--toast-frontmost-height",t})({});const _H=k.forwardRef(function(e,n){const{render:r,className:a,style:s,children:l,...c}=e,d=Z0(),h=DV(),p=k.useRef(!1),m=k.useRef(!1),v=k.useRef(!1),y=d.useState("isEmpty"),b=d.useState("toasts"),x=d.useState("focused"),P=d.useState("expanded"),A=d.useState("prevFocusElement"),L=b[0]?.height??0,T=k.useMemo(()=>b.some(H=>H.transitionStatus==="ending"),[b]),E=k.useMemo(()=>b.filter(H=>H.priority==="high"),[b]);k.useEffect(()=>{const H=d.state.viewport;if(!H)return;function Q(N){y||N.key==="F6"&&no(N)!==H&&(N.preventDefault(),d.setPrevFocusElement(kl(ya(H))),H?.focus({preventScroll:!0}),d.pauseTimers(),d.setFocused(!0))}const W=Ti(H);return to(W,"keydown",Q)},[d,y]),k.useEffect(()=>{const H=d.state.viewport;if(!H||y)return;const Q=Ti(H);function W(q){no(q)===Q&&(d.setIsWindowFocused(!1),d.pauseTimers())}function N(q){if(q.relatedTarget)return;const pe=no(q),ke=kl(ya(H));(pe===Q||!Ei(H,pe)||!F_(ke))&&d.resumeTimers(),h.start(0,()=>d.setIsWindowFocused(!0))}return K5(to(Q,"blur",W,!0),to(Q,"focus",N,!0))},[d,h,y]),k.useEffect(()=>{const H=d.state.viewport;if(!H||y)return;const Q=ya(H);return to(Q,"pointerdown",d.handleDocumentPointerDown,!0)},[y,d]);function D(H){const Q=d.state.viewport;if(Q)if(p.current=!0,H.relatedTarget===Q){const W=b.find(N=>N.transitionStatus!=="ending"&&!N.limited);W?W.ref?.current?.focus():d.restoreFocusToPrevElement()}else d.restoreFocusToPrevElement()}function $(H){H.key==="Tab"&&H.shiftKey&&no(H.nativeEvent)===d.state.viewport&&(H.preventDefault(),d.restoreFocusToPrevElement(),d.resumeTimers())}function I(){d.state.toasts.some(Q=>Q.transitionStatus==="ending")||v.current||!m.current||(d.state.isWindowFocused&&d.resumeTimers(),d.setHovering(!1),m.current=!1)}k.useEffect(I,[T,d]);function S(){d.pauseTimers(),d.setHovering(!0),m.current=!1}function j(){d.state.isWindowFocused&&d.resumeTimers()}function F(){d.state.toasts.some(Q=>Q.transitionStatus==="ending")||v.current?m.current=!0:(j(),d.setHovering(!1))}function Z(H){H.pointerType==="touch"&&(v.current=!0)}function ee(H){H.pointerType==="touch"&&(v.current=!1,I())}function ue(){if(p.current){p.current=!1;return}x||F_(kl(ya(d.state.viewport)))&&(d.setFocused(!0),d.pauseTimers())}function re(H){!x||Ei(d.state.viewport,H.relatedTarget)||(d.setFocused(!1),j())}const ae={tabIndex:-1,role:"region","aria-live":"polite","aria-atomic":!1,"aria-relevant":"additions text","aria-label":"Notifications",onMouseEnter:S,onMouseMove:S,onMouseLeave:F,onFocus:ue,onBlur:re,onKeyDown:$,onClick:ue,onPointerDown:Z,onPointerUp:ee,onPointerCancel:ee},te={expanded:P},le=id("div",e,{ref:[n,d.setViewport],state:te,props:[ae,{style:{[vH.frontmostHeight]:L?`${L}px`:void 0}},c,{children:R.jsxs(k.Fragment,{children:[!y&&A&&R.jsx(_u,{onFocus:D}),l,!y&&A&&R.jsx(_u,{onFocus:D})]})}]});return R.jsxs(k.Fragment,{children:[!y&&A&&R.jsx(_u,{onFocus:D}),le,!x&&E.length>0&&R.jsx("div",{style:c4,children:E.map(H=>R.jsxs("div",{role:"alert","aria-atomic":!0,children:[R.jsx("div",{children:H.title}),R.jsx("div",{children:H.description})]},H.id))})]})});function yH(t){return J0(19)?t:t?"true":void 0}const v4=k.createContext(void 0);function _4(){const t=k.useContext(v4);if(!t)throw new Error(Yl(66));return t}let ob=(function(t){return t.startingStyle="data-starting-style",t.endingStyle="data-ending-style",t})({});const bH={[ob.startingStyle]:""},kH={[ob.endingStyle]:""},wH={transitionStatus(t){return t==="starting"?bH:t==="ending"?kH:null}};function xH(t){return t==null?t:"current"in t?t.current:t}function PH(t,e=!1,n=!0){const r=IV();return fo((a,s=null)=>{r.cancel();const l=xH(t);if(l==null)return;const c=l,d=()=>{$l.flushSync(a)};if(typeof c.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){a();return}function h(){Promise.all(c.getAnimations().map(p=>p.finished)).then(()=>{s?.aborted||d()}).catch(()=>{if(n){s?.aborted||d();return}const p=c.getAnimations();!s?.aborted&&p.length>0&&p.some(m=>m.pending||m.playState!=="finished")&&h()})}if(e){const p=ob.startingStyle;if(!c.hasAttribute(p)){r.request(h);return}const m=new MutationObserver(()=>{c.hasAttribute(p)||(m.disconnect(),h())});m.observe(c,{attributes:!0,attributeFilter:[p]}),s?.addEventListener("abort",()=>m.disconnect(),{once:!0});return}r.request(h)})}function SH(t){const{enabled:e=!0,open:n,ref:r,onComplete:a}=t,s=fo(a),l=PH(r,n,!1);k.useEffect(()=>{if(!e)return;const c=new AbortController;return l(s,c.signal),()=>{c.abort()}},[e,n,s,l])}let zs=(function(t){return t.index="--toast-index",t.offsetY="--toast-offset-y",t.height="--toast-height",t.swipeMovementX="--toast-swipe-movement-x",t.swipeMovementY="--toast-swipe-movement-y",t})({});const YY=500,ZY={style:{transition:"none"}},JY="data-base-ui-click-trigger",CH="data-base-ui-swipe-ignore",TH="data-swipe-ignore",EH=`[${CH}]`,AH=`[${TH}]`,XY={fallbackAxisSide:"none"},QY={fallbackAxisSide:"end"},RH={clipPath:"inset(50%)",position:"fixed",top:0,left:0};function nP(t,e,n){switch(t){case"up":return-n;case"down":return n;case"left":return-e;case"right":return e;default:return 0}}function LH(t){const n=Ti(t).getComputedStyle(t).transform;let r=0,a=0,s=1;if(n&&n!=="none"){const l=n.match(/matrix(?:3d)?\(([^)]+)\)/);if(l){const c=l[1].split(", ").map(parseFloat);c.length===6?(r=c[4],a=c[5],s=Math.sqrt(c[0]*c[0]+c[1]*c[1])):c.length===16&&(r=c[12],a=c[13],s=c[0])}}return{x:r,y:a,scale:s}}const IH={...wH,swipeDirection(t){return t?{"data-swipe-direction":t}:null}},Uc=40,DH=10,ns=.5,MH=1,NH=`${EH},${AH}`,OH=k.forwardRef(function(e,n){const{toast:r,render:a,className:s,swipeDirection:l=["down","right"],style:c,...d}=e,h=r.positionerProps?.anchor!==void 0;let p=[];h||(p=Array.isArray(l)?l:[l]);const m=p.length>0,v=Z0(),[y,b]=k.useState(void 0),[x,P]=k.useState(!1),[A,L]=k.useState(!1),[T,E]=k.useState(!1),[D,$]=k.useState({x:0,y:0}),[I,S]=k.useState({x:0,y:0,scale:1}),[j,F]=k.useState(),[Z,ee]=k.useState(),[ue,re]=k.useState(null),ae=k.useRef(null),te=k.useRef({x:0,y:0}),le=k.useRef({x:0,y:0,scale:1}),H=k.useRef(void 0),Q=k.useRef(0),W=k.useRef(!1),N=k.useRef({x:0,y:0}),q=k.useRef(!1),pe=k.useRef({x:0,y:0}),ke=k.useRef(null),de=k.useRef(null),be=v.useState("toastIndex",r.id),je=v.useState("toastVisibleIndex",r.id),$e=v.useState("toastOffsetY",r.id),Le=v.useState("focused"),St=v.useState("expanded");SH({open:r.transitionStatus!=="ending",ref:ae,onComplete(){r.transitionStatus==="ending"&&v.removeToast(r.id)}});const un=fo((tt=!1)=>{const et=ae.current;if(!et)return;const kt=et.style.height;et.style.height="auto";const nn=et.offsetHeight;et.style.height=kt;function zt(){v.updateToastInternal(r.id,{ref:ae,height:nn,...r.transitionStatus==="starting"?{transitionStatus:void 0}:{}})}tt?$l.flushSync(zt):zt()});Gr(un,[un]);function jt(tt){pe.current=tt,$(tt)}Gr(()=>()=>{de.current?.abort()},[]);function _t(tt,et){let kt=tt,nn=et;return!p.includes("left")&&!p.includes("right")?kt=tt>0?tt**ns:-(Math.abs(tt)**ns):(!p.includes("right")&&tt>0&&(kt=tt**ns),!p.includes("left")&&tt<0&&(kt=-(Math.abs(tt)**ns))),!p.includes("up")&&!p.includes("down")?nn=et>0?et**ns:-(Math.abs(et)**ns):(!p.includes("down")&&et>0&&(nn=et**ns),!p.includes("up")&&et<0&&(nn=-(Math.abs(et)**ns))),{x:kt,y:nn}}const Zt=fo(tt=>{if(tt.pointerId!==ke.current)return;ke.current=null,de.current?.abort(),de.current=null,P(!1),L(!1),re(null);const et=le.current;if(tt.type==="pointercancel"||W.current){jt({x:et.x,y:et.y}),b(void 0);return}let kt=!1;const nn=pe.current,zt=nn.x-et.x,At=nn.y-et.y;let xt;for(const na of p){switch(na){case"right":zt>Uc&&(kt=!0,xt="right");break;case"left":zt<-Uc&&(kt=!0,xt="left");break;case"down":At>Uc&&(kt=!0,xt="down");break;case"up":At<-Uc&&(kt=!0,xt="up");break}if(kt)break}kt?(b(xt),E(!0),v.closeToast(r.id)):(jt({x:et.x,y:et.y}),b(void 0))});function ta(tt){if(tt.button!==0)return;tt.pointerType==="touch"&&v.pauseTimers();const et=no(tt.nativeEvent);if(et?et.closest(`button,a,input,textarea,[role="button"],${NH}`):!1)return;if(W.current=!1,H.current=void 0,Q.current=0,ke.current=tt.pointerId,te.current={x:tt.clientX,y:tt.clientY},N.current=te.current,ae.current){const zt=LH(ae.current);le.current=zt,S(zt),jt({x:zt.x,y:zt.y})}v.setHovering(!0),P(!0),L(!1),re(null),q.current=!0;const nn=ae.current;if(nn){de.current?.abort();const zt=new AbortController;de.current=zt;const At=ya(nn);At.addEventListener("pointerup",Zt,{signal:zt.signal}),At.addEventListener("pointercancel",Zt,{signal:zt.signal}),nn.setPointerCapture?.(tt.pointerId)}}function In(tt){if(tt.pointerId!==ke.current)return;tt.preventDefault(),q.current&&(te.current={x:tt.clientX,y:tt.clientY},q.current=!1);const{clientY:et,clientX:kt,movementX:nn,movementY:zt}=tt;(zt<0&&et>N.current.y||zt>0&&et<N.current.y)&&(N.current={x:N.current.x,y:et}),(nn<0&&kt>N.current.x||nn>0&&kt<N.current.x)&&(N.current={x:kt,y:N.current.y});const At=kt-te.current.x,xt=et-te.current.y,na=et-N.current.y,Zl=kt-N.current.x;if(!A&&Math.sqrt(At*At+xt*xt)>=MH&&(L(!0),ue===null)){const ra=p.includes("left")||p.includes("right"),bs=p.includes("up")||p.includes("down");if(ra&&bs){const Ri=Math.abs(At),br=Math.abs(xt);re(Ri>br?"horizontal":"vertical")}}let Tn;if(!H.current)ue==="vertical"?xt>0?Tn="down":xt<0&&(Tn="up"):ue==="horizontal"?At>0?Tn="right":At<0&&(Tn="left"):Math.abs(At)>=Math.abs(xt)?Tn=At>0?"right":"left":Tn=xt>0?"down":"up",Tn&&p.includes(Tn)&&(H.current=Tn,Q.current=nP(Tn,At,xt),b(Tn));else{const Sa=H.current,ra=nP(Sa,Zl,na);ra>Uc?(W.current=!1,b(Sa)):!(p.includes("left")&&p.includes("right"))&&!(p.includes("up")&&p.includes("down"))&&Q.current-ra>=DH&&(W.current=!0)}const ei=_t(At,xt);let Xn=le.current.x,Pa=le.current.y;ue==="horizontal"?(p.includes("left")||p.includes("right"))&&(Xn+=ei.x):(ue==="vertical"||(p.includes("left")||p.includes("right"))&&(Xn+=ei.x),(p.includes("up")||p.includes("down"))&&(Pa+=ei.y)),jt({x:Xn,y:Pa})}function Vt(tt){if(tt.key==="Escape"){if(!ae.current||!Ei(ae.current,kl(ya(ae.current))))return;v.closeToast(r.id)}}k.useEffect(()=>{if(!m)return;const tt=ae.current;if(!tt)return;function et(kt){ke.current===null||!Ei(tt,no(kt))||kt.preventDefault()}return to(tt,"touchmove",et,{passive:!1})},[m]);function Qe(){if(!x&&D.x===I.x&&D.y===I.y&&!T)return{[zs.swipeMovementX]:"0px",[zs.swipeMovementY]:"0px"};const tt=D.x-I.x,et=D.y-I.y;return{transition:x?"none":void 0,transform:x?`translateX(${D.x}px) translateY(${D.y}px) scale(${I.scale})`:void 0,[zs.swipeMovementX]:`${tt}px`,[zs.swipeMovementY]:`${et}px`}}const st=r.priority==="high",It={role:st?"alertdialog":"dialog",tabIndex:0,"aria-modal":!1,"aria-labelledby":j,"aria-describedby":Z,"aria-hidden":st&&!Le?!0:void 0,onPointerDown:m?ta:void 0,onPointerMove:m?In:void 0,onPointerUp:m?Zt:void 0,onPointerCancel:m?Zt:void 0,onKeyDown:Vt,inert:yH(r.limited),style:{...Qe(),[zs.index]:r.transitionStatus==="ending"?be:je,[zs.offsetY]:`${$e}px`,[zs.height]:r.height?`${r.height}px`:void 0}},Et=k.useMemo(()=>({rootRef:ae,toast:r,titleId:j,setTitleId:F,descriptionId:Z,setDescriptionId:ee,swiping:x,swipeDirection:y,recalculateHeight:un,index:be,visibleIndex:je,expanded:St}),[r,j,Z,x,y,un,be,je,St]),Dn={transitionStatus:r.transitionStatus,expanded:St,limited:r.limited||!1,type:r.type,swiping:Et.swiping,swipeDirection:Et.swipeDirection},xa=id("div",e,{ref:[n,Et.rootRef],state:Dn,stateAttributesMapping:IH,props:[It,d]});return R.jsx(v4.Provider,{value:Et,children:xa})});let rP=0;function jH(t,e="mui"){const[n,r]=k.useState(t),a=t||n;return k.useEffect(()=>{n==null&&(rP+=1,r(`${e}-${rP}`))},[n,e]),a}const aP=X0.useId;function y4(t,e){if(aP!==void 0){const n=aP();return t??(e?`${e}-${n}`:n)}return jH(t,e)}const zH=k.forwardRef(function(e,n){const{render:r,className:a,style:s,id:l,children:c,...d}=e,{toast:h,setTitleId:p}=_4(),m=c??h.title,v=!!m,y=y4(l);Gr(()=>{if(v)return p(y),()=>{p(void 0)}},[v,y,p]);const b={type:h.type},x=id("h2",e,{ref:n,state:b,props:{...d,id:y,children:m}});return v?x:null}),FH=k.createContext(void 0);function UH(t=!1){const e=k.useContext(FH);if(e===void 0&&!t)throw new Error(Yl(16));return e}function $H(t){const{focusableWhenDisabled:e,disabled:n,composite:r=!1,tabIndex:a=0,isNativeButton:s}=t,l=r&&e!==!1,c=r&&e===!1;return{props:k.useMemo(()=>{const h={onKeyDown(p){n&&e&&p.key!=="Tab"&&p.preventDefault()}};return r||(h.tabIndex=a,!s&&n&&(h.tabIndex=e?a:-1)),(s&&(e||l)||!s&&n)&&(h["aria-disabled"]=n),s&&(!e||c)&&(h.disabled=n),h},[r,n,e,l,c,s,a])}}function BH(t={}){const{disabled:e=!1,focusableWhenDisabled:n,tabIndex:r=0,native:a=!0,composite:s}=t,l=k.useRef(null),c=UH(!0),d=s??c!==void 0,{props:h}=$H({focusableWhenDisabled:n,disabled:e,composite:d,tabIndex:r,isNativeButton:a}),p=k.useCallback(()=>{const y=l.current;gv(y)&&d&&e&&h.disabled===void 0&&y.disabled&&(y.disabled=!1)},[e,h.disabled,d]);Gr(p,[p]);const m=k.useCallback((y={})=>{const{onClick:b,onMouseDown:x,onKeyUp:P,onKeyDown:A,onPointerDown:L,...T}=y;return ib({onClick(E){if(e){E.preventDefault();return}b?.(E)},onMouseDown(E){e||x?.(E)},onKeyDown(E){if(e||(Yp(E),A?.(E),E.baseUIHandlerPrevented))return;const D=E.target===E.currentTarget,$=E.currentTarget,I=gv($),S=!a&&VH($),j=D&&(a?I:!S),F=E.key==="Enter",Z=E.key===" ",ee=$.getAttribute("role"),ue=ee?.startsWith("menuitem")||ee==="option"||ee==="gridcell";if(D&&d&&Z){if(E.defaultPrevented&&ue)return;E.preventDefault(),S||a&&I?($.click(),E.preventBaseUIHandler()):j&&(b?.(E),E.preventBaseUIHandler());return}j&&(!a&&(Z||F)&&E.preventDefault(),!a&&F&&b?.(E))},onKeyUp(E){if(!e){if(Yp(E),P?.(E),E.target===E.currentTarget&&a&&d&&gv(E.currentTarget)&&E.key===" "){E.preventDefault();return}E.baseUIHandlerPrevented||E.target===E.currentTarget&&!a&&!d&&E.key===" "&&b?.(E)}},onPointerDown(E){if(e){E.preventDefault();return}L?.(E)}},a?{type:"button"}:{role:"button"},h,T)},[e,h,d,a]),v=fo(y=>{l.current=y,p()});return{getButtonProps:m,buttonRef:v}}function gv(t){return fs(t)&&t.tagName==="BUTTON"}function VH(t){return!!(t?.tagName==="A"&&t?.href)}const HH=k.forwardRef(function(e,n){const{render:r,className:a,style:s,disabled:l,nativeButton:c=!0,...d}=e,h=Z0(),{toast:p}=_4(),m=h.useState("expanded"),[v,y]=k.useState(!1),{getButtonProps:b,buttonRef:x}=BH({disabled:l,native:c}),P={type:p.type};return id("button",e,{ref:[n,x],state:P,props:[{"aria-hidden":!m&&!v,onClick(){h.closeToast(p.id)},onFocus(){y(!0)},onBlur(){y(!1)}},d,b]})}),eZ="none",tZ="trigger-press",nZ="trigger-hover",rZ="outside-press",aZ="item-press",iZ="close-press",WH="focus-out",sZ="escape-key",oZ="list-navigation",lZ="cancel-open",cZ="imperative-action",uZ="window-resize";function GH(t,e,n,r){let a=!1,s=!1;const l=eo;return{reason:t,event:e??new Event("base-ui"),cancel(){a=!0},allowPropagation(){s=!0},get isCanceled(){return a},get isPropagationAllowed(){return s},trigger:n,...l}}function qH(t){return`data-base-ui-${t}`}const b4=k.createContext(null),KH=()=>k.useContext(b4),YH=qH("portal");function k4(t={}){const{ref:e,container:n,componentProps:r=eo,elementProps:a}=t,s=y4(),c=KH()?.portalNode,[d,h]=k.useState(null),[p,m]=k.useState(null),v=fo(P=>{P!==null&&m(P)}),y=k.useRef(null);Gr(()=>{if(n===null){y.current&&(y.current=null,m(null),h(null));return}if(s==null)return;const P=(n&&(Q0(n)?n:n.current))??c??document.body;if(P==null){y.current&&(y.current=null,m(null),h(null));return}y.current!==P&&(y.current=P,m(null),h(P))},[n,c,s]);const b=id("div",r,{ref:[e,v],props:[{id:s,[YH]:""},a]});return{portalNode:p,portalSubtree:d&&b?$l.createPortal(b,d):null}}const dZ=k.forwardRef(function(e,n){const{render:r,className:a,style:s,children:l,container:c,renderGuards:d,...h}=e,{portalNode:p,portalSubtree:m}=k4({container:c,ref:n,componentProps:e,elementProps:h}),v=k.useRef(null),y=k.useRef(null),b=k.useRef(null),x=k.useRef(null),[P,A]=k.useState(null),L=k.useRef(!1),T=P?.modal,E=P?.open,D=typeof d=="boolean"?d:!!P&&!P.modal&&P.open&&!!p;k.useEffect(()=>{if(!p||T)return;function I(S){p&&S.relatedTarget&&fv(S)&&(S.type==="focusin"?L.current&&(Q2(p),L.current=!1):(QV(p),L.current=!0))}return K5(to(p,"focusin",I,!0),to(p,"focusout",I,!0))},[p,T]),Gr(()=>{!p||E!==!0||!L.current||(Q2(p),L.current=!1)},[E,p]);const $=k.useMemo(()=>({beforeOutsideRef:v,afterOutsideRef:y,beforeInsideRef:b,afterInsideRef:x,portalNode:p,setFocusManagerState:A}),[p]);return R.jsxs(k.Fragment,{children:[m,R.jsxs(b4.Provider,{value:$,children:[D&&p&&R.jsx(_u,{"data-type":"outside",ref:v,onFocus:I=>{if(fv(I,p))b.current?.focus();else{const S=P?P.domReference:null;XV(S)?.focus()}}}),D&&p&&R.jsx("span",{"aria-owns":p.id,style:RH}),p&&$l.createPortal(l,p),D&&p&&R.jsx(_u,{"data-type":"outside",ref:y,onFocus:I=>{if(fv(I,p))x.current?.focus();else{const S=P?P.domReference:null;JV(S)?.focus(),P?.closeOnFocusOut&&P?.onOpenChange(!1,GH(WH,I.nativeEvent))}}})]})]})}),ZH=k.forwardRef(function(e,n){const{children:r,container:a,className:s,render:l,style:c,...d}=e,{portalNode:h,portalSubtree:p}=k4({container:a,ref:n,componentProps:e,elementProps:d});return!p&&!h?null:R.jsxs(k.Fragment,{children:[p,h&&$l.createPortal(r,h)]})}),JH=ZH;function XH(){const t=k.useContext(Y0);if(!t)throw new Error(Yl(73));const e=t.useState("toasts");return k.useMemo(()=>({toasts:e,add:t.addToast,close:t.closeToast,update:t.updateToast,promise:t.promiseToast}),[e,t])}function QH(){const t=new Set;function e(n){t.forEach(r=>r(n))}return{" subscribe":function(r){return t.add(r),()=>{t.delete(r)}},add(n){const r=n.id||Y5("toast"),a={...n,id:r,transitionStatus:"starting"};return e({action:"add",options:a}),r},close(n){e({action:"close",options:{id:n}})},update(n,r){e({action:"update",options:{...r,id:n}})},promise(n,r){let a=n;return e({action:"promise",options:{...r,promise:n,setPromise(s){a=s}}}),a}}}const lb=QH();function hZ(t){return lb.add(t)}function eW({children:t}){return R.jsxs(tH,{toastManager:lb,children:[t,R.jsx(JH,{children:R.jsx(_H,{className:"fixed inset-x-0 top-6 z-[100] mx-auto flex w-full max-w-sm flex-col items-center gap-2 px-4 outline-none",children:R.jsx(tW,{})})})]})}function tW(){const{toasts:t}=XH();return t.map(e=>{const n=e.data?.onUndo;return R.jsxs(OH,{toast:e,className:Bt("pointer-events-auto flex w-full items-center gap-3 rounded-xl border border-oai-gray-200 bg-oai-white px-4 py-3 shadow-xl transition-all duration-200 ease-out","data-[starting-style]:-translate-y-3 data-[starting-style]:opacity-0","data-[ending-style]:-translate-y-3 data-[ending-style]:opacity-0","dark:border-oai-gray-800 dark:bg-oai-gray-900"),children:[R.jsx(zH,{className:"min-w-0 flex-1 text-sm font-medium text-oai-black dark:text-white"}),n?R.jsx("button",{type:"button",onClick:()=>{n(),lb.close(e.id)},className:"shrink-0 rounded-md px-2 py-1 text-xs font-semibold text-oai-gray-600 transition-colors hover:bg-oai-gray-100 hover:text-oai-black focus:outline-none focus:ring-2 focus:ring-oai-gray-400/30 dark:text-oai-gray-300 dark:hover:bg-oai-gray-800 dark:hover:text-white",children:xe("shared.action.undo")}):null,R.jsx(HH,{"aria-label":xe("shared.action.dismiss"),className:"-mr-1 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-oai-gray-400 transition-colors hover:bg-oai-gray-100 hover:text-oai-black focus:outline-none focus:ring-2 focus:ring-oai-gray-400/30 dark:hover:bg-oai-gray-800 dark:hover:text-white",children:R.jsx(p0,{className:"h-3.5 w-3.5","aria-hidden":!0})})]},e.id)})}const cb=Object.freeze(["limits","leaderboard"]),nW=Object.freeze({limits:"/limits",leaderboard:"/leaderboard"}),rW=Object.freeze({limits:()=>Un(()=>import("./LimitsPage-6I5EU7qe.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),leaderboard:()=>Un(()=>import("./LeaderboardPage-BFUOxX6P.js"),__vite__mapDeps([8,9,10,11,12,13,14,15,16]))}),w4="total",x4=0,iP=20,aW=Object.freeze([10,20,50,100]),iW="tokentracker:leaderboard:pageSize",sW=20,oW=Object.freeze(["dashboard-existing","silent-preload","page-load","manual-refresh"]);let sP=0,Yr;class lW{constructor(e={}){this.limits=null,this.leaderboard=new Map,this.leaderboardMaxEntries=dW(e.leaderboardMaxEntries)}read(e,n){return sd(e),e==="limits"?!this.limits||this.limits.contextKey!==n?null:lp(this.limits):n?lp(this.leaderboard.get(n)):null}write(e,n={}){if(e.targetKey==="limits"){this.limits=e;return}this.leaderboard.has(e.contextKey)&&this.leaderboard.delete(e.contextKey),this.leaderboard.set(e.contextKey,e),this.evictLeaderboardEntries(n.activeContextKey||e.contextKey)}evictLeaderboardEntries(e=null){for(;this.leaderboard.size>this.leaderboardMaxEntries;){const n=Array.from(this.leaderboard.keys()).find(r=>r!==e)||this.leaderboard.keys().next().value;this.leaderboard.delete(n)}}snapshot(){return{limits:lp(this.limits),leaderboard:{maxEntries:this.leaderboardMaxEntries,size:this.leaderboard.size,keys:Array.from(this.leaderboard.keys())}}}}class cW{constructor(e={}){sP+=1,this.sessionId=`dashboard-preload-${sP}`,this.createdAt=Date.now(),this.completedAt=null,this.startedAfterMainContentVisible=!1,this.cache=new lW(e),this.targets={limits:oP("limits"),leaderboard:oP("leaderboard")}}}function oP(t){return{key:t,route:nW[t],resourceStatus:"idle",stateStatus:"idle",error:null,resourcePromise:null,resourceModule:null,resourceRequestId:0,statePromise:null,stateRequestId:0,pendingStateContextKey:null}}function uW(t={}){return new cW(t)}function dW(t){const e=Number(t);return!Number.isInteger(e)||e<1?sW:e}Yr=uW();function sd(t){if(!cb.includes(t))throw new Error(`Unknown dashboard preload target: ${t}`)}function P4(t){return t?typeof t=="string"?t:t.message||String(t):null}function hW(t,e){return oW.includes(t)?t:e}function pW(t){const e=Number(t);return Number.isFinite(e)?e:Date.now()}function lp(t){return t?{...t}:null}function lP(){const t=cb.every(e=>{const n=Yr.targets[e];return n.resourceStatus==="fulfilled"||n.resourceStatus==="rejected"});Yr.completedAt=t?Date.now():null}function fW(){Yr.startedAfterMainContentVisible=!0}function ub(t,e={}){sd(t);const n=Object.entries(e).filter(([,r])=>r!==void 0).sort(([r],[a])=>r.localeCompare(a)).map(([r,a])=>`${r}=${a===null?"null":String(a)}`);return`${t}:${n.join("|")}`}function mW(t,e={}){sd(t);const n=Yr.targets[t];if(n.resourceStatus==="fulfilled")return Promise.resolve(n.resourceModule);if(n.resourceStatus==="pending"&&n.resourcePromise)return n.resourcePromise;const r=e.loader||rW[t],a=n.resourceRequestId+1;n.resourceRequestId=a,n.resourceStatus="pending",n.error=null;const s=Promise.resolve().then(()=>r()).then(l=>n.resourceRequestId!==a||n.resourcePromise!==s?null:(n.resourceStatus="fulfilled",n.resourceModule=l,n.error=null,lP(),l)).catch(l=>(n.resourceRequestId!==a||n.resourcePromise!==s||(n.resourceStatus="rejected",n.error=P4(l),lP()),null));return n.resourcePromise=s,s}function gW(t={}){const e=t.loaders||{};return Promise.all(cb.map(n=>mW(n,{loader:e[n]})))}function S4(t,e){sd(t);const n=Yr.targets[t],r=e?.status||"fulfilled",a={targetKey:t,status:r,data:e?.data??null,error:P4(e?.error),source:hW(e?.source,"silent-preload"),generatedAt:pW(e?.generatedAt),updatedAt:Date.now(),contextKey:e?.contextKey||ub(t,e?.context||{})};return n.stateStatus=r,r==="rejected"||r==="skipped"?n.error=a.error:r==="fulfilled"&&(n.error=null,Yr.cache.write(a,{activeContextKey:e?.activeContextKey})),lp(a)}function C4(t,e){return sd(t),Yr.cache.read(t,e)}function pZ(t,e={}){return S4("limits",{data:t,source:e.source||"dashboard-existing",contextKey:e.contextKey||T4(e.context||{}),generatedAt:e.generatedAt,status:e.status||"fulfilled",error:e.error})}function T4(t={}){return ub("limits",{state:"current",...t})}function fZ(t=T4()){return C4("limits",t)}function B_(t,e={}){return S4("leaderboard",{activeContextKey:e.activeContextKey,data:t,source:e.source||"silent-preload",contextKey:e.contextKey||db(e.context||{}),generatedAt:e.generatedAt,status:e.status||"fulfilled",error:e.error})}function vW(t){return C4("leaderboard",t)}function E4(){if(typeof window>"u")return iP;try{const t=window.localStorage.getItem(iW),e=Number(t);if(aW.includes(e))return e}catch{}return iP}function A4(t={}){const e=t.userId;return e!==void 0?e||null:t.cloudUser?.id||null}function R4(t={}){return typeof t.accessMode=="string"&&t.accessMode.trim()?t.accessMode.trim():t.mockEnabled?"mock":t.baseUrl?"cloud":"unavailable"}function db(t={}){const e=!!t.mockEnabled,n=t.baseUrl??"";return ub("leaderboard",{accessMode:R4({...t,baseUrl:n,mockEnabled:e}),baseUrl:n,mockEnabled:e,offset:t.offset??x4,pageSize:t.pageSize??E4(),period:t.period||w4,userId:A4(t)})}function Rh(t,e){const n=Yr.targets.leaderboard;return n.stateRequestId+=1,n.statePromise=null,n.pendingStateContextKey=null,B_(null,{contextKey:e,status:"skipped",error:t})}function _W(t={}){const e=Yr,n=!!t.mockEnabled,r=t.baseUrl??"",a=R4({...t,baseUrl:r,mockEnabled:n}),s=t.period||w4,l=t.pageSize??E4(),c=t.offset??x4,d=A4(t),h=db({accessMode:a,baseUrl:r,mockEnabled:n,offset:c,pageSize:l,period:s,userId:d});if(!n&&t.authLoading)return Promise.resolve(Rh("auth-loading",h));if(!n&&!t.signedIn&&a!=="public")return Promise.resolve(Rh("not-signed-in",h));if(!n&&!r)return Promise.resolve(Rh("missing-base-url",h));if(!n&&a==="unavailable")return Promise.resolve(Rh("access-unavailable",h));const p=e.targets.leaderboard,m=vW(h);if(m)return Promise.resolve(m);if(p.stateStatus==="pending"&&p.statePromise&&p.pendingStateContextKey===h)return p.statePromise;const v=p.stateRequestId+1;p.stateRequestId=v,p.stateStatus="pending",p.pendingStateContextKey=h,p.error=null;const y=Promise.resolve().then(()=>GM({userId:d,period:s,limit:l,offset:c})).then(b=>Yr!==e||p.stateRequestId!==v||p.statePromise!==y?null:(p.pendingStateContextKey=null,B_(b,{contextKey:h}))).catch(b=>(Yr!==e||p.stateRequestId!==v||p.statePromise!==y||(p.pendingStateContextKey=null,B_(null,{contextKey:h,status:"rejected",error:b})),null));return p.statePromise=y,y}const yW=typeof window<"u"?window.location.search:"",cP=new URLSearchParams(yW),Lh=cP.get("insforge_code")||cP.get("code")||null,bW=typeof window<"u"&&!!window.webkit?.messageHandlers?.nativeOAuth;function kW(){ed();const{loading:t,signedIn:e}=yo(),n=Ul(),[r,a]=k.useState("processing"),[s,l]=k.useState(null),c=k.useRef(!1);k.useEffect(()=>{if(!(!Lh||c.current)){if(c.current=!0,bW){l(!1);return}(async()=>{try{const p=await(await fetch("/api/auth-bridge/verifier")).json();l(!!p?.native)}catch{l(!1)}})()}},[]),k.useEffect(()=>{if(s!==!0||!Lh)return;a("redirecting");const h=setTimeout(()=>{window.location.href=`tokentracker://auth/callback?insforge_code=${encodeURIComponent(Lh)}`},200);return()=>clearTimeout(h)},[s]),k.useEffect(()=>{if(s!==!1||t)return;if(e){n("/dashboard",{replace:!0});return}const h=setTimeout(()=>{e||a("failed")},12e3);return()=>clearTimeout(h)},[s,t,e,n]),k.useEffect(()=>{if(!Lh&&s===null){const h=setTimeout(()=>a("failed"),3e3);return()=>clearTimeout(h)}},[s]);const d=()=>{n("/dashboard",{replace:!0})};return r==="processing"&&s!==!0&&(s===null||s===!1&&t)?R.jsx("div",{className:"min-h-screen bg-oai-gray-950"}):R.jsx("div",{className:"min-h-screen bg-oai-gray-950 text-white font-oai antialiased dark flex items-center justify-center",children:R.jsxs("div",{className:"text-center space-y-4 max-w-sm px-4",children:[r==="processing"&&R.jsxs(R.Fragment,{children:[R.jsx("div",{className:"w-8 h-8 border-2 border-oai-gray-600 border-t-white rounded-full animate-spin mx-auto"}),R.jsx("p",{className:"text-oai-gray-400 text-sm",children:xe("auth.callback.processing")})]}),r==="redirecting"&&R.jsxs(R.Fragment,{children:[R.jsx("div",{className:"w-12 h-12 mx-auto rounded-full bg-green-500/15 flex items-center justify-center",children:R.jsx("svg",{className:"w-6 h-6 text-green-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:R.jsx("path",{d:"M20 6 9 17l-5-5"})})}),R.jsx("p",{className:"text-white text-sm font-medium",children:xe("auth.callback.success")}),R.jsx("p",{className:"text-oai-gray-500 text-xs",children:xe("auth.callback.redirecting")})]}),r==="failed"&&R.jsxs("div",{className:"space-y-3",children:[R.jsx("p",{className:"text-oai-gray-300 text-sm",children:xe("auth.callback.failed")}),R.jsx("button",{type:"button",onClick:d,className:"px-4 py-2 rounded-lg bg-oai-gray-800 text-sm text-white hover:bg-oai-gray-700 transition-colors",children:xe("auth.callback.close")})]})]})})}const wW=k.lazy(()=>Un(()=>import("./DashboardPage-CN0buIso.js"),__vite__mapDeps([17,13,1,14,18,19,20,11,21,3,9,10,12,22,23,4,24,25,26])).then(t=>({default:t.DashboardPage}))),xW=k.lazy(()=>Un(()=>import("./IpCheckPage-CamsHe6o.js"),[])),PW=k.lazy(()=>Un(()=>import("./LandingPage-D4ygTHwO.js"),__vite__mapDeps([27,28,16,12,29,7,26,30])).then(t=>({default:t.LandingPage}))),SW=k.lazy(()=>Un(()=>import("./LeaderboardPage-BFUOxX6P.js"),__vite__mapDeps([8,9,10,11,12,13,14,15,16])).then(t=>({default:t.LeaderboardPage}))),CW=k.lazy(()=>Un(()=>import("./LeaderboardProfilePage-DeVBEYtg.js"),__vite__mapDeps([31,14,28,32,15,18,19,6,33,12,20,11,7])).then(t=>({default:t.LeaderboardProfilePage}))),TW=k.lazy(()=>Un(()=>import("./LimitsPage-6I5EU7qe.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])).then(t=>({default:t.LimitsPage}))),EW=k.lazy(()=>Un(()=>import("./LoginPage-D8smF1gU.js"),[]).then(t=>({default:t.LoginPage}))),AW=k.lazy(()=>Un(()=>import("./ResetPasswordPage-CzSqJfuA.js"),[]).then(t=>({default:t.ResetPasswordPage}))),RW=k.lazy(()=>Un(()=>import("./DevicePage-BL9ew9-m.js"),[])),LW=k.lazy(()=>Un(()=>import("./WrappedPage-BuP9KXqF.js"),[])),IW=k.lazy(()=>Un(()=>import("./SettingsPage-DlHXcFdJ.js"),__vite__mapDeps([34,2,35,3,25,12,29,14,9,10,11,19,36,37,20,38,7])).then(t=>({default:t.SettingsPage}))),DW=k.lazy(()=>Un(()=>import("./SkillsPage--Kcv1pxG.js"),__vite__mapDeps([39,5,6,7,3,37,20,11,38,19,14,23,12,40,10,22])).then(t=>({default:t.SkillsPage}))),MW=k.lazy(()=>Un(()=>import("./WidgetsPage-DwtJ9CKU.js"),__vite__mapDeps([41,9,10,11,12,36,35,3,4,6,7])).then(t=>({default:t.WidgetsPage}))),NW=k.lazy(()=>Un(()=>import("./PetPage-BlMYvJn2.js"),__vite__mapDeps([42,35,3,24,4,33,23,40])).then(t=>({default:t.PetPage})));function OW(){const{resolvedLocale:t}=ed(),e=_r(),n=yo();hB();const r=k.useRef(!1),a=k.useRef(!1),s=k.useRef(new Set),l=$n(),c=k.useMemo(()=>typeof window>"u"?!1:rB(window.location.search),[]),d=e?.pathname||"/",h=new URL(window.location.href),p=h.pathname.replace(/\/+$/,"")||"/",v=p.match(/^\/share\/([^/?#]+)$/i)?.[1]||null,y=h.searchParams.get("token")||null,b=v||y,x=p==="/share"||p==="/share.html"||p.startsWith("/share/"),P=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),A=d.replace(/\/+$/,"")||"/",L=A==="/"||A==="/dashboard",T=A==="/leaderboard",E=A.match(/^\/u\/([^/]+)$/i),D=E?E[1]:null,$=!!(n.enabled&&n.signedIn),I=P||$,S=!1,j=tB(),F=!I&&!l&&!P,Z=l?"mock":n.loading?"unavailable":$?"cloud":I?"local":"unavailable",ee=k.useCallback(()=>{if(!r.current||!l&&n.loading||!l&&!I)return;const be={accessMode:Z,baseUrl:nB(),mockEnabled:l,signedIn:I,authLoading:!!n.loading,userId:$&&n.user?.id||null},je=db(be);s.current.has(je)||(s.current.add(je),_W(be))},[$,n.loading,n.user?.id,Z,l,I]),ue=k.useCallback(()=>{L&&(r.current||(r.current=!0,fW()),a.current||(a.current=!0,gW()),ee())},[L,ee]);k.useEffect(()=>{ee()},[ee]);const re=k.useMemo(()=>!n.enabled||!$?null:{getAccessToken:()=>n.getAccessToken(),name:n.displayName||"",userId:n.user?.id||null},[$,n]);let ae=P||l||c?"dashboard":"landing";A==="/landing"&&(ae="landing"),A==="/dashboard"&&(ae="dashboard"),T&&(ae="dashboard"),D&&(ae="dashboard");const te=A==="/limits",le=A==="/settings",H=A==="/skills",Q=A==="/widgets",W=A==="/pet-settings",N=A==="/ip-check";(te||le||H||Q||W||N)&&(ae="dashboard");let q=wW;D?q=CW:A==="/leaderboard"?q=SW:te?q=TW:le?q=IW:H?q=DW:Q?q=MW:W?q=NW:N&&(q=xW);const pe=!x&&!F&&(A==="/dashboard"||A==="/"||T||te||le||H||Q||W||N);if(!P&&!$&&!x&&!n.loading&&ae==="dashboard"&&!T&&!D&&A!=="/login"&&A!=="/reset-password"&&A!=="/landing"&&A!=="/auth/callback"&&A!=="/auth/native-callback")return R.jsx(N8,{to:"/login",replace:!0});let de=null;if(A==="/auth/callback"||A==="/auth/native-callback")de=R.jsx(kW,{});else if(A==="/login")de=R.jsx(EW,{});else if(A==="/reset-password")de=R.jsx(AW,{});else if(A==="/device")de=R.jsx(RW,{});else if(A==="/wrapped")de=R.jsx(LW,{});else if(ae==="landing")de=R.jsx(PW,{signInUrl:"/login",signUpUrl:"/login"});else{const be=R.jsx(q,{baseUrl:j,auth:re,signedIn:I,sessionSoftExpired:S,signOut:()=>n.enabled?n.signOut():Promise.resolve(),publicMode:x,publicToken:b,userId:D,signInUrl:"/login",signUpUrl:"/login",onMainContentVisible:ue},t);pe?de=R.jsx(AB,{children:be}):de=be}return R.jsx(ZN,{children:R.jsx(QN,{children:R.jsx(eW,{children:R.jsxs(eO,{children:[R.jsx(k.Suspense,{fallback:null,children:de}),pe?R.jsx(rV,{}):null,R.jsx(X$,{}),R.jsx(Z9,{}),R.jsx(oN,{})]})})})})}var J=typeof window<"u"?window:void 0,Sn=typeof globalThis<"u"?globalThis:J;typeof self>"u"&&(Sn.self=Sn),typeof File>"u"&&(Sn.File=function(){});var ar=Sn?.navigator,we=Sn?.document,pn=Sn?.location,V_=Sn?.fetch,H_=Sn!=null&&Sn.XMLHttpRequest&&"withCredentials"in new Sn.XMLHttpRequest?Sn.XMLHttpRequest:void 0,uP=Sn?.AbortController,jW=Sn?.CompressionStream,gr=ar?.userAgent,Ue=J??{};function L4(){return!(!J||J.navigator.onLine===!1)}var dP="1.398.3",on={DEBUG:!1,LIB_VERSION:dP,LIB_NAME:"web",JS_SDK_VERSION:dP};function hP(t,e,n,r,a,s,l){try{var c=t[s](l),d=c.value}catch(h){return void n(h)}c.done?e(d):Promise.resolve(d).then(r,a)}function _n(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var s=t.apply(e,n);function l(d){hP(s,r,a,l,c,"next",d)}function c(d){hP(s,r,a,l,c,"throw",d)}l(void 0)}))}}function me(){return me=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},me.apply(null,arguments)}function I4(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)!==-1)continue;n[r]=t[r]}return n}var pP=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function fP(t){return typeof t=="string"||t}function mP(t){return typeof t=="string"?t:void 0}var $c,bi=(function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t})({}),gP=(function(t){return t.GZipJS="gzip-js",t.Base64="base64",t})({}),zW=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],FW=["token"],D4="NativeGzipValidationError",W_=t=>t.length>=2&&t[0]===31&&t[1]===139,vP=(t,e)=>t===gP.GZipJS||e===gP.GZipJS||e==="gzip",_P=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",Ih=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=D4,e},UW=(function(){var t=_n((function*(e,n){18>e.size&&Ih("too-short");var r=new Uint8Array(yield e.slice(0,10).arrayBuffer());W_(r)&&r[2]===8||Ih("invalid-header");var a=new DataView(yield e.slice(e.size-8).arrayBuffer());a.getUint32(0,!0)!==(l=>{for(var c=(()=>{if($c)return $c;$c=[];for(var p=0;256>p;p++){for(var m=p,v=0;8>v;v++)m=1&m?3988292384^m>>>1:m>>>1;$c[p]=m>>>0}return $c})(),d=4294967295,h=0;l.length>h;h++)d=c[255&(d^l[h])]^d>>>8;return(4294967295^d)>>>0})(n)&&Ih("invalid-crc");var s=n.length>>>0;a.getUint32(4,!0)!==s&&Ih("invalid-size")}));return function(e,n){return t.apply(this,arguments)}})();function G_(){return G_=_n((function*(t,e,n){e===void 0&&(e=!0);try{var r=new TextEncoder().encode(t),a=new CompressionStream("gzip"),s=a.writable.getWriter(),l=s.write(r).then((()=>s.close())).catch((function(){var h=_n((function*(p){try{yield s.abort(p)}catch{}throw p}));return function(p){return h.apply(this,arguments)}})()),c=new Response(a.readable).blob(),[d]=yield Promise.all([c,l]);return yield UW(d,r),d}catch(h){if(n!=null&&n.rethrow)throw h;return e&&console.error("Failed to gzip compress data",h),null}})),G_.apply(this,arguments)}var $W=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],yP=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var n=t.toLowerCase();return $W.concat(e).some((r=>{var a=r.toLowerCase();return n.indexOf(a)!==-1}))};function Ke(t,e){return t.indexOf(e)!==-1}var $f=function(t){return t.trim()},q_=function(t){return t.replace(/^\$/,"")},M4=Object.prototype,N4=M4.hasOwnProperty,Bf=M4.toString,ct=Array.isArray||function(t){return Bf.call(t)==="[object Array]"},_a=t=>typeof t=="function",qt=t=>t===Object(t)&&!ct(t),cs=t=>{if(qt(t)){for(var e in t)if(N4.call(t,e))return!1;return!0}return!1},ye=t=>t===void 0,Lt=t=>Bf.call(t)=="[object String]",K_=t=>Lt(t)&&t.trim().length===0,sr=t=>t===null,nt=t=>ye(t)||sr(t),Fn=t=>Bf.call(t)=="[object Number]"&&t==t,_i=t=>Fn(t)&&t>0,Ha=t=>Bf.call(t)==="[object Boolean]",BW=t=>t instanceof FormData,VW=t=>Ke(zW,t),HW=t=>Ke(FW,t);function O4(t){return t===null||typeof t!="object"}function Zp(t,e){return{}.toString.call(t)==="[object "+e+"]"}function hb(t){return typeof Event<"u"&&(function(e,n){try{return e instanceof n}catch{return!1}})(t,Event)}var WW=[!0,"true",1,"1","yes"],vv=t=>Ke(WW,t),GW=[!1,"false",0,"0","no"];function $a(t,e,n,r,a){return e>n&&(r.warn("min cannot be greater than max."),e=n),Fn(t)?t>n?(r.warn(" cannot be greater than max: "+n+". Using max value instead."),n):e>t?(r.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(r.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+a),$a(a||n,e,n,r))}class qW{constructor(e){this.Ee={},this.Pe=e.Pe,this.Fe=$a(e.bucketSize,0,100,e.Ae),this.$e=$a(e.refillRate,0,this.Fe,e.Ae),this.De=$a(e.refillInterval,0,864e5,e.Ae)}Ne(e,n){var r=Math.floor((n-e.lastAccess)/this.De);r>0&&(e.tokens=Math.min(e.tokens+r*this.$e,this.Fe),e.lastAccess=e.lastAccess+r*this.De)}consumeRateLimit(e){var n,r=Date.now(),a=String(e),s=this.Ee[a];return s?this.Ne(s,r):this.Ee[a]=s={tokens:this.Fe,lastAccess:r},s.tokens===0||(s.tokens--,s.tokens===0&&((n=this.Pe)==null||n.call(this,e)),s.tokens===0)}stop(){this.Ee={}}}var Rr="Mobile",Jp="iOS",Pi="Android",Dl="Tablet",j4=Pi+" "+Dl,z4="iPad",F4="Apple",U4=F4+" Watch",yu="Safari",Ml="BlackBerry",$4="Samsung",B4=$4+"Browser",V4=$4+" Internet",so="Chrome",KW=so+" OS",H4=so+" "+Jp,pb="Internet Explorer",W4=pb+" "+Rr,fb="Opera",YW=fb+" Mini",mb="Edge",G4="Microsoft "+mb,wl="Firefox",q4=wl+" "+Jp,ju="Nintendo",zu="PlayStation",xl="Xbox",K4=Pi+" "+Rr,Y4=Rr+" "+yu,ru="Windows",Y_=ru+" Phone",bP="Nokia",Z_="Ouya",Z4="Generic",ZW=Z4+" "+Rr.toLowerCase(),J4=Z4+" "+Dl.toLowerCase(),J_="Konqueror",X4="Oculus Browser",Xp="Vivaldi",Q4="Yandex",Qp="Whale",X_="DuckDuckGo",eE="Pale Moon",ef="Waterfox",bu="Brave",tE="Google Search App",Xt="(\\d+(\\.\\d+)?)",_v=new RegExp("Version/"+Xt),JW=new RegExp(xl,"i"),XW=new RegExp(zu+" \\w+","i"),QW=new RegExp(ju+" \\w+","i"),gb=new RegExp(Ml+"|PlayBook|BB10","i"),eG={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},nE=function(t,e,n,r){e=e||"";var a=(function(s){return s!=null&&s.brave?bu:null})(n);return a||(r!=null&&r.detectGoogleSearchApp&&Ke(t,"GSA/")?tE:Ke(t," OPR/")&&Ke(t,"Mini")?YW:Ke(t," OPR/")?fb:gb.test(t)?Ml:Ke(t,"IE"+Rr)||Ke(t,"WPDesktop")?W4:Ke(t,"OculusBrowser")?X4:Ke(t,B4)?V4:Ke(t,mb)||Ke(t,"Edg/")?G4:Ke(t,Xp+"/")?Xp:Ke(t,"YaBrowser/")?Q4:Ke(t,Qp+"/")?Qp:Ke(t,X_+"/")||Ke(t,"Ddg/")?X_:Ke(t,"FBIOS")?"Facebook "+Rr:Ke(t,"UCWEB")||Ke(t,"UCBrowser")?"UC Browser":Ke(t,"CriOS")?H4:Ke(t,"CrMo")||Ke(t,so)?so:Ke(t,Pi)&&Ke(t,yu)?K4:Ke(t,"FxiOS")?q4:Ke(t.toLowerCase(),J_.toLowerCase())?J_:Ke(t,bu+"/")?bu:((s,l)=>l&&Ke(l,F4)||(function(c){return Ke(c,yu)&&!Ke(c,so)&&!Ke(c,Pi)})(s))(t,e)?Ke(t,Rr)?Y4:yu:Ke(t,"PaleMoon/")?eE:Ke(t,ef+"/")?ef:Ke(t,wl)?wl:Ke(t,"MSIE")||Ke(t,"Trident/")?pb:Ke(t,"Gecko")?wl:"")},tG={[W4]:[new RegExp("rv:"+Xt)],[G4]:[new RegExp(mb+"?\\/"+Xt)],[so]:[new RegExp("("+so+"|CrMo)\\/"+Xt)],[H4]:[new RegExp("CriOS\\/"+Xt)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+Xt)],[yu]:[_v],[Y4]:[_v],[fb]:[new RegExp("(Opera|OPR)\\/"+Xt)],[wl]:[new RegExp(wl+"\\/"+Xt)],[q4]:[new RegExp("FxiOS\\/"+Xt)],[J_]:[new RegExp("Konqueror[:/]?"+Xt,"i")],[Ml]:[new RegExp(Ml+" "+Xt),_v],[K4]:[new RegExp("android\\s"+Xt,"i")],[V4]:[new RegExp(B4+"\\/"+Xt)],[X4]:[new RegExp("OculusBrowser\\/"+Xt)],[Xp]:[new RegExp(Xp+"\\/"+Xt)],[Q4]:[new RegExp("YaBrowser\\/"+Xt)],[Qp]:[new RegExp(Qp+"\\/"+Xt)],[bu]:[new RegExp(bu+"\\/"+Xt)],[X_]:[new RegExp("(DuckDuckGo|Ddg)\\/"+Xt)],[eE]:[new RegExp("PaleMoon\\/"+Xt)],[ef]:[new RegExp(ef+"\\/"+Xt)],[tE]:[new RegExp("GSA\\/"+Xt)],[pb]:[new RegExp("(rv:|MSIE )"+Xt)],Mozilla:[new RegExp("rv:"+Xt)]},nG=function(t,e,n,r){var a=nE(t,e,n,r),s=tG[a];if(ye(s))return null;for(var l=0;s.length>l;l++){var c=t.match(s[l]);if(c)return parseFloat(c[c.length-2])}return null},kP=[[new RegExp(xl+"; "+xl+" (.*?)[);]","i"),t=>[xl,t&&t[1]||""]],[new RegExp(ju,"i"),[ju,""]],[new RegExp(zu,"i"),[zu,""]],[gb,[Ml,""]],[new RegExp(ru,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[Y_,""];if(new RegExp(Rr).test(e)&&!/IEMobile\b/.test(e))return[ru+" "+Rr,""];var n=/Windows NT ([0-9.]+)/i.exec(e);if(n&&n[1]){var r=eG[n[1]]||"";return/arm/i.test(e)&&(r="RT"),[ru,r]}return[ru,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[Jp,[t[3],t[4],t[5]||"0"].join(".")]:[Jp,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=ye(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+Pi+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Pi+")","i"),t=>t&&t[2]?[Pi,[t[2],t[3],t[4]||"0"].join(".")]:[Pi,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[KW,""]],[/Linux|debian/i,["Linux",""]]],wP=function(t){return QW.test(t)?ju:XW.test(t)?zu:JW.test(t)?xl:new RegExp(Z_,"i").test(t)?Z_:new RegExp("("+Y_+"|WPDesktop)","i").test(t)?Y_:/iPad/.test(t)?z4:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?U4:gb.test(t)?Ml:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(bP,"i").test(t)?bP:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(Rr).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Pi:j4:new RegExp("(pda|"+Rr+")","i").test(t)?ZW:new RegExp(Dl,"i").test(t)&&!new RegExp(Dl+" pc","i").test(t)?J4:""},rG=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function xP(t,e){return typeof(n=t)=="string"&&rG.test(n)?t:e();var n}function ms(t){return t&&t.split("#")[0]}function yv(t,e){var n=setTimeout(t,e);return n?.unref&&n?.unref(),n}var aG=t=>t instanceof Error,rE={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},iG=rE.info;function aE(t){if(Ha(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(ct(t))return{arrayValue:{values:t.map((e=>aE(e)))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function iE(t){var e=[];for(var n in t){var r=t[n];sr(r)||ye(r)||e.push({key:n,value:aE(r)})}return e}function sG(t,e){var n=t.level||"info",{text:r,number:a}=rE[n]||iG,s=String(Date.now())+"000000",l={};e.distinctId&&(l.posthogDistinctId=e.distinctId),e.sessionId&&(l.sessionId=e.sessionId),e.windowId&&(l["window.id"]=e.windowId),nt(e.sessionStartTimestamp)||(l.sessionStartTimestamp=String(e.sessionStartTimestamp)),nt(e.lastActivityTimestamp)||(l.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(l["url.full"]=e.currentUrl),e.screenName&&(l["screen.name"]=e.screenName),e.appState&&(l["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(l.feature_flags=e.activeFeatureFlags);var c=me({},l,t.attributes||{}),d={timeUnixNano:s,observedTimeUnixNano:s,severityNumber:a,severityText:r,body:{stringValue:t.body},attributes:iE(c)};return t.trace_id&&(d.traceId=t.trace_id),t.span_id&&(d.spanId=t.span_id),ye(t.trace_flags)||(d.flags=t.trace_flags),d}function sE(t,e,n){return me({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":n})}function oE(t,e,n,r){return{resourceLogs:[{resource:{attributes:iE(e)},scopeLogs:[{scope:{name:n,version:r},logRecords:t}]}]}}let oG=class{constructor(t,e,n,r,a,s,l){var c;s===void 0&&(s=()=>Promise.resolve()),this._instance=t,this.Se=e,this.Ae=n,this.qe=r,this.Be=a,this.je=s,this.He=l,this.Ue=null,this.ze=0,this.Ve=0,this.We=0,this.Ge=0,this.Ze=!1,this.Qe=e.maxBufferSize,this.Je=Math.max((c=e.maxQueueSize)!==null&&c!==void 0?c:e.maxBufferSize,e.maxBufferSize),this.Ye=e.flushIntervalMs,this.Ke=e.maxBatchRecordsPerPost,this.Xe=e.rateCapWindowMs,this.et=e.maxLogsPerInterval}reset(){this.tt(),this.Ue=null,this.We=0,this.Ge=0,this.Ze=!1,this.ze=0,this.Ve=0,this.Ke=this.Se.maxBatchRecordsPerPost}onReconnect(){this.Ve=0,this.rt()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.it(t);if(e!==null)if(e.body){if(this.nt()){var n={record:sG(e,this.qe())};this.Be((()=>this.st(n)))}}else this.Ae.info("Log was rejected in beforeSend function")}}it(t){var e=this.Se.beforeSend;if(!e)return t;var n=ct(e)?e:[e],r=t;for(var a of n)try{var s=a(r);if(!s)return this.Ae.info("Log was rejected in beforeSend function"),null;r=s}catch(l){return this.Ae.error("Error in beforeSend function for log:",l),null}return r}nt(){if(this.et===void 0)return!0;var t=Date.now(),e=t-this.We;return this.Xe>e&&e>=0||(this.We=t,this.Ge=0,this.Ze=!1),this.et>this.Ge?(this.Ge++,!0):(this.Ze||(this.Ae.warn("captureLog dropping logs: exceeded "+this.et+" logs per "+this.Xe+"ms"),this.Ze=!0),!1)}flush(){var t=this;return _n((function*(){if(!t._instance.isDisabled)return t.Ue||(t.Ue=t.ot().finally((()=>{t.Ue=null}))),t.Ue}))()}ot(){var t=this;return _n((function*(){var e;t.tt();var n=(e=t._instance.getPersistedProperty(bi.LogsQueue))!==null&&e!==void 0?e:[];if(n.length!==0)for(var r=n.length,a=0;n.length>0&&r>a;){var s,l;t.ze=0;var c=Math.min(n.length,t.Ke),d=n.slice(0,c),h=oE(d.map((m=>m.record)),t.ut(),(s=t.He)!==null&&s!==void 0?s:t._instance.getLibraryId(),t._instance.getLibraryVersion()),p=yield t._instance.ht(h);if(p.kind==="too-large"&&d.length>1)t.Ke=Math.max(1,Math.floor(d.length/2)),t.Ae.warn("Received 413 when sending logs batch of size "+d.length+", reducing batch size to "+t.Ke);else if(p.kind==="retry-later"||(p.kind==="too-large"?t.Ae.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):p.kind==="ok"&&t.Se.maxBatchRecordsPerPost>t.Ke&&(t.Ke=Math.min(t.Se.maxBatchRecordsPerPost,t.Ke+1)),yield t.dt(d.length),n=(l=t._instance.getPersistedProperty(bi.LogsQueue))!==null&&l!==void 0?l:[],a+=d.length,p.kind==="fatal"))throw p.error}}))()}dt(t){var e=this;return _n((function*(){var n,r=Math.max(0,t-e.ze),a=(n=e._instance.getPersistedProperty(bi.LogsQueue))!==null&&n!==void 0?n:[];e._instance.setPersistedProperty(bi.LogsQueue,a.slice(r)),yield e.je()}))()}ut(){return sE(this.Se,this._instance.getLibraryId(),this._instance.getLibraryVersion())}st(t){var e;if(!this._instance.optedOut){var n=(e=this._instance.getPersistedProperty(bi.LogsQueue))!==null&&e!==void 0?e:[];this.Je>n.length||(n.shift(),this.ze++,this.Ae.info("Logs queue is full, dropping oldest record.")),n.push(t),this._instance.setPersistedProperty(bi.LogsQueue,n),this.Qe>n.length?this.ct():this.rt()}}ct(t){t===void 0&&(t=this.Ye),this.vt||(this.vt=yv((()=>{this.vt=void 0,this.rt()}),t))}ft(){var t=Math.min(Math.max(0,this.Ve-1),6);return this.Ye*Math.pow(2,t)}yt(){var t=this._instance.getPersistedProperty(bi.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return _n((function*(){e.tt();var n=e.flush().catch((()=>{}));t!==void 0?yield Promise.race([n,new Promise((r=>yv(r,t)))]):yield n}))()}flushWithTimeout(t){var e=this;return _n((function*(){var n=!1,r=e.flush(),a=new Promise((s=>yv((()=>{n=!0,s()}),t)));try{yield Promise.race([r,a])}finally{n&&r.catch((()=>{}))}}))()}rt(){this.flush().then((()=>{this.Ve=0}),(t=>{this.Ve++,this.Ae.error("PostHog logs flush failed:",t)})).finally((()=>{!this._instance.isDisabled&&this.yt()&&this.ct(this.ft())}))}tt(){this.vt&&(clearTimeout(this.vt),this.vt=void 0)}};var Dh,PP,bv;function lG(t){var e=globalThis._posthogChunkIds;if(e){var n=Object.keys(e);return bv&&n.length===PP||(PP=n.length,bv=n.reduce(((r,a)=>{Dh||(Dh={});var s=Dh[a];if(s)r[s[0]]=s[1];else for(var l=t(a),c=l.length-1;c>=0;c--){var d=l[c],h=d?.filename,p=e[a];if(h&&p){r[h]=p,Dh[a]=[h,p];break}}return r}),{})),bv}}class cG{constructor(e,n,r){r===void 0&&(r=[]),this.coercers=e,this.stackParser=n,this.modifiers=r}buildFromUnknown(e,n){n===void 0&&(n={});var r=n&&n.mechanism||{handled:!0,type:"generic"},a=this.buildCoercingContext(r,n,0).apply(e),s=this.buildParsingContext(n),l=this.parseStacktrace(a,s);return{$exception_list:this.convertToExceptionList(l,r),$exception_level:"error"}}modifyFrames(e){var n=this;return _n((function*(){for(var r of e)r.stacktrace&&r.stacktrace.frames&&ct(r.stacktrace.frames)&&(r.stacktrace.frames=yield n.applyModifiers(r.stacktrace.frames));return e}))()}coerceFallback(e){var n;return{type:"Error",value:"Unknown error",stack:(n=e.syntheticException)==null?void 0:n.stack,synthetic:!0}}parseStacktrace(e,n){var r,a;return e.cause!=null&&(r=this.parseStacktrace(e.cause,n)),e.stack!=""&&e.stack!=null&&(a=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?n.skipFirstLines:0),n.chunkIdMap)),me({},e,{cause:r,stack:a})}applyChunkIds(e,n){return e.map((r=>(r.filename&&n&&(r.chunk_id=n[r.filename]),r)))}applyCoercers(e,n){for(var r of this.coercers)if(r.match(e))return r.coerce(e,n);return this.coerceFallback(n)}applyModifiers(e){var n=this;return _n((function*(){var r=e;for(var a of n.modifiers)r=yield a(r);return r}))()}convertToExceptionList(e,n){var r,a,s,l={type:e.type,value:e.value,mechanism:{type:(r=n.type)!==null&&r!==void 0?r:"generic",handled:(a=n.handled)===null||a===void 0||a,synthetic:(s=e.synthetic)!==null&&s!==void 0&&s}};e.stack&&(l.stacktrace={type:"raw",frames:e.stack});var c=[l];return e.cause!=null&&c.push(...this.convertToExceptionList(e.cause,me({},n,{handled:!0}))),c}buildParsingContext(e){var n;return{chunkIdMap:lG(this.stackParser),skipFirstLines:(n=e.skipFirstLines)!==null&&n!==void 0?n:1}}buildCoercingContext(e,n,r){r===void 0&&(r=0);var a=(s,l)=>{if(4>=l){var c=this.buildCoercingContext(e,n,l);return this.applyCoercers(s,c)}};return me({},n,{syntheticException:r==0?n.syntheticException:void 0,mechanism:e,apply:s=>a(s,r),next:s=>a(s,r+1)})}}var Nl="?";function Q_(t,e,n,r,a){var s={platform:t,filename:e,function:n==="<anonymous>"?Nl:n,in_app:!0};return ye(r)||(s.lineno=r),ye(a)||(s.colno=a),s}var lE=(t,e)=>{var n=t.indexOf("safari-extension")!==-1,r=t.indexOf("safari-web-extension")!==-1;return n||r?[t.indexOf("@")!==-1?t.split("@")[0]:Nl,n?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},uG=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,dG=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,hG=/\((\S*)(?::(\d+))(?::(\d+))\)/,pG=(t,e)=>{var n=uG.exec(t);if(n){var[,r,a,s]=n;return Q_(e,r,Nl,+a,+s)}var l=dG.exec(t);if(l){if(l[2]&&l[2].indexOf("eval")===0){var c=hG.exec(l[2]);c&&(l[2]=c[1],l[3]=c[2],l[4]=c[3])}var[d,h]=lE(l[1]||Nl,l[2]);return Q_(e,h,d,l[3]?+l[3]:void 0,l[4]?+l[4]:void 0)}},fG=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,mG=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,gG=(t,e)=>{var n=fG.exec(t);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var r=mG.exec(n[3]);r&&(n[1]=n[1]||"eval",n[3]=r[1],n[4]=r[2],n[5]="")}var a=n[3],s=n[1]||Nl;return[s,a]=lE(s,a),Q_(e,a,s,n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}},SP=/\(error: (.*)\)/;class vG{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,n){var r=Lt(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:r?e.stack:void 0,cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var n=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?n+": "+e.message:n}isDOMException(e){return Zp(e,"DOMException")}isDOMError(e){return Zp(e,"DOMError")}}class _G{match(e){return(n=>n instanceof Error)(e)}coerce(e,n){return{type:this.getType(e),value:this.getMessage(e,n),stack:this.getStack(e),cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,n){var r=e.message;return String(r.error&&typeof r.error.message=="string"?r.error.message:r)}getStack(e){return e.stacktrace||e.stack||void 0}}class yG{constructor(){}match(e){return Zp(e,"ErrorEvent")&&e.error!=null}coerce(e,n){var r;return n.apply(e.error)||{type:"ErrorEvent",value:e.message,stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}}var bG=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class kG{match(e){return typeof e=="string"}coerce(e,n){var r,[a,s]=this.getInfos(e);return{type:a??"Error",value:s??e,stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}getInfos(e){var n="Error",r=e,a=e.match(bG);return a&&(n=a[1],r=a[2]),[n,r]}}var wG=["fatal","error","warning","log","info","debug"];function cE(t,e){e===void 0&&(e=40);var n=Object.keys(t);if(n.sort(),!n.length)return"[object has no keys]";for(var r=n.length;r>0;r--){var a=n.slice(0,r).join(", ");if(e>=a.length)return r===n.length?a:a.length>e?a.slice(0,e)+"...":a}return""}class xG{match(e){return typeof e=="object"&&e!==null}coerce(e,n){var r,a=this.getErrorPropertyFromObject(e);return a?n.apply(a):{type:this.getType(e),value:this.getValue(e),stack:(r=n.syntheticException)==null?void 0:r.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return hb(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var n="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(n+=" with message: '"+e.message+"'"),n}if("message"in e&&typeof e.message=="string")return e.message;var r=this.getObjectClassName(e);return(r&&r!=="Object"?"'"+r+"'":"Object")+" captured as exception with keys: "+cE(e)}isSeverityLevel(e){return Lt(e)&&!K_(e)&&wG.indexOf(e)>=0}getErrorPropertyFromObject(e){for(var n in e)if({}.hasOwnProperty.call(e,n)){var r=e[n];if(aG(r))return r}}getObjectClassName(e){try{var n=Object.getPrototypeOf(e);return n?n.constructor.name:void 0}catch{return}}}class PG{match(e){return hb(e)}coerce(e,n){var r,a=e.constructor.name;return{type:a,value:a+" captured as exception with keys: "+cE(e),stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}}class SG{match(e){return O4(e)}coerce(e,n){var r;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}}class CG{match(e){return Zp(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!hb(e))return!1;try{var n=e.detail;return n!=null&&typeof n=="object"&&"reason"in n}catch{return!1}}coerce(e,n){var r,a=this.getUnhandledRejectionReason(e);return O4(a)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(a),stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}:n.apply(a)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var tf="$message",nf="$timestamp",TG=new Set([tf,nf]),kv={enabled:!0,max_bytes:32768};function rf(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:kv.enabled,max_bytes:AG(t.max_bytes,kv.max_bytes)}:me({},kv)}class EG{constructor(e){this.bt=[],this._t=0,this.Se=rf(e)}setConfig(e){this.Se=rf(e),this.wt()}add(e){var n=(function(a){var s,l,c;try{c=[],s=(l=JSON.stringify(a,(function(v,y){if(typeof y=="bigint")return y.toString();if(typeof y!="function"&&typeof y!="symbol"){if(y instanceof Error)return{name:y.name,message:y.message,stack:y.stack};if(y&&typeof y=="object"){for(;c.length>0&&c[c.length-1]!==this;)c.pop();if(c.includes(y))return"[Circular]";c.push(y)}return y}})))!==null&&l!==void 0?l:"null"}catch{return}try{var d=JSON.parse(s);if(!qt(d))return;var h=d,p=h[tf],m=h[nf];return!Lt(p)||p.trim().length===0||!Lt(m)&&!Fn(m)?void 0:{step:h,json:s}}catch{return}})(e);if(n){var r=(function(a){if(typeof TextEncoder<"u")return new TextEncoder().encode(a).length;for(var s=encodeURIComponent(a),l=0,c=0;s.length>c;c++)s[c]==="%"?(l+=1,c+=2):l+=1;return l})(n.json);r>this.Se.max_bytes||(this.bt.push({step:n.step,bytes:r}),this._t+=r,this.wt())}}getAttachable(){return this.bt.map((e=>e.step))}clear(){this.bt=[],this._t=0}size(){return this.bt.length}wt(){for(;this._t>this.Se.max_bytes&&this.bt.length>0;){var e=this.bt.shift();e&&(this._t-=e.bytes)}}}function AG(t,e){if(!Fn(t)||t===1/0||t===-1/0)return e;var n=Math.floor(t);return 0>n?e:n}var uE=function(t,e){var{debugEnabled:n}=e===void 0?{}:e,r={k(a){if(J&&(on.DEBUG||Ue.POSTHOG_DEBUG||n)&&!ye(J.console)&&J.console){for(var s=("__rrweb_original__"in J.console[a])?J.console[a].__rrweb_original__:J.console[a],l=arguments.length,c=new Array(l>1?l-1:0),d=1;l>d;d++)c[d-1]=arguments[d];s(t,...c)}},debug(){for(var a=arguments.length,s=new Array(a),l=0;a>l;l++)s[l]=arguments[l];r.k("debug",...s)},info(){for(var a=arguments.length,s=new Array(a),l=0;a>l;l++)s[l]=arguments[l];r.k("log",...s)},warn(){for(var a=arguments.length,s=new Array(a),l=0;a>l;l++)s[l]=arguments[l];r.k("warn",...s)},error(){for(var a=arguments.length,s=new Array(a),l=0;a>l;l++)s[l]=arguments[l];r.k("error",...s)},critical(){for(var a=arguments.length,s=new Array(a),l=0;a>l;l++)s[l]=arguments[l];console.error(t,...s)},uninitializedWarning(a){r.error("You must initialize PostHog before calling "+a)},createLogger:(a,s)=>uE(t+" "+a,s)};return r},_e=uE("[PostHog.js]"),tn=_e.createLogger,RG=tn("[ExternalScriptsLoader]"),wv=(t,e,n)=>{if(t.config.disable_external_dependency_loading)return RG.warn(e+" was requested but loading of external scripts is disabled."),n("Loading of external scripts is disabled");var r=we?.querySelectorAll("script");if(r){for(var a,s=function(){if(r[l].src===e){var d=r[l];return d.__posthog_loading_callback_fired?{v:n()}:(d.addEventListener("load",(h=>{d.__posthog_loading_callback_fired=!0,n(void 0,h)})),d.onerror=h=>n(h),{v:void 0})}},l=0;r.length>l;l++)if(a=s())return a.v}var c=()=>{if(!we)return n("document not found");var d=we.createElement("script");if(d.type="text/javascript",d.crossOrigin="anonymous",d.src=e,d.onload=m=>{d.__posthog_loading_callback_fired=!0,n(void 0,m)},d.onerror=m=>n(m),t.config.prepare_external_dependency_script&&(d=t.config.prepare_external_dependency_script(d)),!d)return n("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")we.head.appendChild(d);else{var h,p=we.querySelectorAll("body > script");p.length>0?(h=p[0].parentNode)==null||h.insertBefore(d,p[0]):we.body.appendChild(d)}};we!=null&&we.body?c():we?.addEventListener("DOMContentLoaded",c)};Ue.__PosthogExtensions__=Ue.__PosthogExtensions__||{},Ue.__PosthogExtensions__.loadExternalDependency=(t,e,n)=>{if(e!=="remote-config"){var r;if(t.config.strict_script_versioning)r=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var a="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var s=3e5;a=a+"&t="+Math.floor(Date.now()/s)*s}r=t.requestRouter.endpointFor("assets",a)}wv(t,r,n)}else{var l=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");wv(t,l,n)}},Ue.__PosthogExtensions__.loadSiteApp=(t,e,n)=>{var r=t.requestRouter.endpointFor("api",e);wv(t,r,n)};var dE="$people_distinct_id",af="$device_id",xv="$device_model",au="__alias",iu="__timers",ey="$autocapture_disabled_server_side",ty="$heatmaps_enabled_server_side",ny="$exception_capture_enabled_server_side",ry="$error_tracking_suppression_rules",ay="$error_tracking_capture_extension_exceptions",iy="$web_vitals_enabled_server_side",vb="$dead_clicks_enabled_server_side",_b="$product_tours_enabled_server_side",sy="$web_vitals_allowed_metrics",ro="$session_recording_remote_config",hE="$replay_sample_rate",pE="$replay_override_sampling",fE="$replay_override_linked_flag",mE="$replay_override_url_trigger",gE="$replay_override_event_trigger",vl="$sesid",yb="$session_is_sampled",Ys="$enabled_feature_flags",cp="$active_feature_flags",su="$early_access_features",oy="$feature_flag_details",up="$feature_flag_payloads",ly="$feature_flag_request_id",yi="$override_feature_flags",cl="$override_feature_flag_payloads",Gs="$stored_person_properties",qs="$stored_group_properties",cy="$surveys",sf="$surveys_loaded_at",uy="$surveys_activated",ou="ph_product_tours",ku="$flag_call_reported",dy="$flag_call_reported_session_id",hy="$feature_flag_errors",Fu="$feature_flag_evaluated_at",ga="$user_state",py="$client_session_props",fy="$capture_rate_limit",my="$initial_campaign_params",gy="$initial_referrer_info",of="$initial_person_info",lf="$epp",vE="__POSTHOG_TOOLBAR__",Mh="$posthog_cookieless",_E="$sdk_debug_extensions_init_method",yE="$sdk_debug_extensions_init_time_ms",bE="$sdk_debug_recording_script_not_loaded",vy="PostHog loadExternalDependency extension not found.",Ks="on_reject",wi="always",Qo="anonymous",el="identified",_y="identified_only",cf="visibilitychange",uf="beforeunload",ul="$pageview",Pv="$pageleave",Sv="$identify",CP="$groupidentify";function Nh(t,e){ct(t)&&t.forEach(e)}function Mt(t,e){if(!nt(t))if(ct(t))t.forEach(e);else if(BW(t))t.forEach(((r,a)=>e(r,a)));else for(var n in t)N4.call(t,n)&&e(t[n],n)}var $t=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];for(var a of n)for(var s in a)a[s]!==void 0&&(t[s]=a[s]);return t};function dp(t){for(var e=Object.keys(t),n=e.length,r=new Array(n);n--;)r[n]=[e[n],t[e[n]]];return r}var TP=function(t){try{return t()}catch{return}},LG=function(t){return function(){try{for(var e=arguments.length,n=new Array(e),r=0;e>r;r++)n[r]=arguments[r];return t.apply(this,n)}catch(a){_e.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),_e.critical(a)}}},bb=function(t){var e={};return Mt(t,(function(n,r){(Lt(n)&&n.length>0||Fn(n))&&(e[r]=n)})),e},IG=["herokuapp.com","vercel.app","netlify.app"];function DG(t){var e=t?.hostname;if(!Lt(e))return!1;var n=e.split(".").slice(-2).join(".");for(var r of IG)if(n===r)return!1;return!0}function Qt(t,e,n,r){var{capture:a=!1,passive:s=!0}=r??{};t?.addEventListener(e,n,{capture:a,passive:s})}function kE(t){return t.name==="ph_toolbar_internal"}Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return Fn(t)&&isFinite(t)&&Math.floor(t)===t});class df{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,n,r,a){if(!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(r)||!Number.isInteger(a)||0>e||0>n||0>r||0>a||e>0xffffffffffff||n>4095||r>1073741823||a>4294967295)throw new RangeError("invalid field value");var s=new Uint8Array(16);return s[0]=e/Math.pow(2,40),s[1]=e/Math.pow(2,32),s[2]=e/Math.pow(2,24),s[3]=e/Math.pow(2,16),s[4]=e/Math.pow(2,8),s[5]=e,s[6]=112|n>>>8,s[7]=n,s[8]=128|r>>>24,s[9]=r>>>16,s[10]=r>>>8,s[11]=r,s[12]=a>>>24,s[13]=a>>>16,s[14]=a>>>8,s[15]=a,new df(s)}toString(){for(var e="",n=0;this.bytes.length>n;n++)e=e+(this.bytes[n]>>>4).toString(16)+(15&this.bytes[n]).toString(16),n!==3&&n!==5&&n!==7&&n!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new df(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var n=0;16>n;n++){var r=this.bytes[n]-e.bytes[n];if(r!==0)return Math.sign(r)}return 0}}class MG{constructor(){this.S=0,this.C=0,this.I=new NG}generate(){var e=this.generateOrAbort();if(ye(e)){this.S=0;var n=this.generateOrAbort();if(ye(n))throw new Error("Could not generate UUID after timestamp reset");return n}return e}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.M();else{if(this.S>=e+1e4)return;this.C++,this.C>4398046511103&&(this.S++,this.M())}return df.fromFieldsV7(this.S,Math.trunc(this.C/Math.pow(2,30)),this.C&Math.pow(2,30)-1,this.I.nextUint32())}M(){this.C=1024*this.I.nextUint32()+(1023&this.I.nextUint32())}}var EP,wE=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};J&&!ye(J.crypto)&&crypto.getRandomValues&&(wE=t=>crypto.getRandomValues(t));class NG{constructor(){this.R=new Uint32Array(8),this.O=1/0}nextUint32(){return this.R.length>this.O||(wE(this.R),this.O=0),this.R[this.O++]}}var ki=()=>OG().toString(),OG=()=>(EP||(EP=new MG)).generate(),Bc="",jG=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,Fa={N:()=>!!we,D(t){_e.error("cookieStore error: "+t)},A(t){if(we){try{for(var e=t+"=",n=we.cookie.split(";").filter((s=>s.length)),r=0;n.length>r;r++){for(var a=n[r];a.charAt(0)==" ";)a=a.substring(1,a.length);if(a.indexOf(e)===0)return decodeURIComponent(a.substring(e.length,a.length))}}catch{}return null}},F(t){var e;try{e=JSON.parse(Fa.A(t))||{}}catch{}return e},q(t,e,n,r,a){if(!we)return!1;try{var s="",l="",c=(function(p,m){if(m){var v=(function(b,x){if(x===void 0&&(x=we),Bc)return Bc;if(!x||["localhost","127.0.0.1"].includes(b))return"";for(var P=b.split("."),A=Math.min(P.length,8),L="dmn_chk_"+ki();!Bc&&A--;){var T=P.slice(A).join("."),E=L+"=1;domain=."+T+";path=/";x.cookie=E+";max-age=3",x.cookie.includes(L)&&(x.cookie=E+";max-age=0",Bc=T)}return Bc})(p);if(!v){var y=(b=>{var x=b.match(jG);return x?x[0]:""})(p);y!==v&&_e.info("Warning: cookie subdomain discovery mismatch",y,v),v=y}return v?"; domain=."+v:""}return""})(we.location.hostname,r);if(n){var d=new Date;d.setTime(d.getTime()+864e5*n),s="; expires="+d.toUTCString()}a&&(l="; secure");var h=t+"="+encodeURIComponent(JSON.stringify(e))+s+"; SameSite=Lax; path=/"+c+l;return h.length>3686.4&&_e.warn("cookieStore warning: large cookie, len="+h.length),we.cookie=h,!0}catch{return!1}},P(t,e){if(we!=null&&we.cookie)try{Fa.q(t,"",-1,e)}catch{return}}},Cv=null,Dt={N(){if(!sr(Cv))return Cv;var t=!0;if(ye(J))t=!1;else try{var e="__mplssupport__";Dt.q(e,"xyz"),Dt.A(e)!=='"xyz"'&&(t=!1),Dt.P(e)}catch{t=!1}return t||_e.error("localStorage unsupported; falling back to cookie store"),Cv=t,t},D(t){_e.error("localStorage error: "+t)},A(t){try{return J?.localStorage.getItem(t)}catch(e){Dt.D(e)}return null},F(t){try{return JSON.parse(Dt.A(t))||{}}catch{}return null},q(t,e){try{return J?.localStorage.setItem(t,JSON.stringify(e)),!0}catch(n){Dt.D(n)}return!1},P(t){try{J?.localStorage.removeItem(t)}catch(e){Dt.D(e)}}},zG=[af,"distinct_id",vl,yb,lf,of,ga],Oh={},FG={N:()=>!0,D(t){_e.error("memoryStorage error: "+t)},A:t=>Oh[t]||null,F:t=>Oh[t]||null,q:(t,e)=>(Oh[t]=e,!0),P(t){delete Oh[t]}},Fs=null,jn={N(){if(!sr(Fs))return Fs;if(Fs=!0,ye(J))Fs=!1;else try{var t="__support__";jn.q(t,"xyz"),jn.A(t)!=='"xyz"'&&(Fs=!1),jn.P(t)}catch{Fs=!1}return Fs},D(t){_e.error("sessionStorage error: ",t)},A(t){try{return J?.sessionStorage.getItem(t)}catch(e){jn.D(e)}return null},F(t){try{return JSON.parse(jn.A(t))||null}catch{}return null},q(t,e){try{return J?.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(n){jn.D(n)}return!1},P(t){try{J?.sessionStorage.removeItem(t)}catch(e){jn.D(e)}}};class UG{constructor(e){this._instance=e}get Se(){return this._instance.config}get consent(){return this.kt()?0:this.St}isOptedOut(){return this.Se.cookieless_mode===wi||this.isRejected()||this.consent===-1&&this.Se.cookieless_mode===Ks}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Se.opt_out_capturing_by_default}optInOut(e){this.Ct.q(this.It,e?1:0,this.Se.cookie_expiration,this.Se.cross_subdomain_cookie,this.Se.secure_cookie)}reset(){this.Ct.P(this.It,this.Se.cross_subdomain_cookie)}get It(){var{token:e,opt_out_capturing_cookie_prefix:n,consent_persistence_name:r}=this._instance.config;return r||(n?n+e:"__ph_opt_in_out_"+e)}get St(){var e=this.Ct.A(this.It);return vv(e)?1:Ke(GW,e)?0:-1}get Ct(){var e=this.Se.opt_out_capturing_persistence_type,n=e==="localStorage"?Dt:Fa;if(!this.Tt||this.Tt!==n){this.Tt=n;var r=e==="localStorage"?Fa:Dt;r.A(this.It)&&(this.Tt.A(this.It)||this.optInOut(vv(r.A(this.It))),r.P(this.It,this.Se.cross_subdomain_cookie))}return this.Tt}kt(){return!!this.Se.respect_dnt&&[ar?.doNotTrack,ar?.msDoNotTrack,Ue.doNotTrack].some((e=>vv(e)))}}function xE(t,e){var n,r=t==null||(n=t.config)==null?void 0:n.get_current_url;if(!_a(r))return e;try{var a=r(e);return Lt(a)&&a?a:e}catch(s){return _e.error("Error in get_current_url, falling back to window.location.href",s),e}}var $G=1,BG=3,VG=11;function AP(t){return t instanceof Element&&(t.id===vE||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function gs(t){return!!t&&t.nodeType===$G}function Er(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function PE(t){return!!t&&t.nodeType===BG}function SE(t){return!!t&&t.nodeType===VG&&gs(t.host)}function kb(t){return t?$f(t).split(/\s+/):[]}function RP(t,e){var n=(function(r){var a,s=J==null||(a=J.location)==null?void 0:a.href;return ye(s)?void 0:xE(r,s)})(e);return!!(n&&t&&t.some((r=>n.match(r))))}function hf(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return kb(e)}function CE(t){return nt(t)?null:$f(t).split(/(\s+)/).filter((e=>wu(e))).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Uu(t){var e="";return by(t)&&!RE(t)&&t.childNodes&&t.childNodes.length&&Mt(t.childNodes,(function(n){var r;PE(n)&&n.textContent&&(e+=(r=CE(n.textContent))!==null&&r!==void 0?r:"")})),$f(e)}function Tv(t){return ye(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null;var e}var wb=["a","button","form","input","select","textarea","label"];function yy(t,e){if(ye(e))return!0;var n,r=function(s){if(e.some((l=>(function(c,d){var h=c.matches||c.matchesSelector||c.msMatchesSelector||c.mozMatchesSelector||c.webkitMatchesSelector||c.oMatchesSelector;try{return!!h&&h.call(c,d)}catch{return!1}})(s,l))))return{v:!0}};for(var a of t)if(n=r(a))return n.v;return!1}function TE(t){var e=t.parentNode;return!(!e||!gs(e))&&e}var HG=[".ph-no-autocapture","[data-ph-no-autocapture]"],EE=["next","previous","prev",">","<"],WG=[...EE,"+","-","−","–"],LP=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,IP=[".ph-no-rageclick",".ph-no-capture"],GG=["","text","search","email","password","url","tel","number"];function DP(t,e){if(!J||xb(t))return!1;var n,r,a,s,l;if(Ha(e)?(n=!!e&&IP,r=void 0,a=!1):(n=(s=e?.css_selector_ignorelist)!==null&&s!==void 0?s:IP,r=e?.content_ignorelist,a=(l=e?.ignore_text_selection)!==null&&l!==void 0&&l),n===!1||a&&(function(d){return!(!d||!gs(d))&&(!!Er(d,"textarea")||(Er(d,"input")?Ke(GG,(d.getAttribute("type")||"").toLowerCase()):(function(h){if(h.isContentEditable)return!0;var p=h.getAttribute==null?void 0:h.getAttribute("contenteditable");return p==="true"||p===""})(d)))})(t))return!1;var{targetElementList:c}=AE(t,!1);return!(function(d,h){if(d===!1||ye(d))return!1;var p;if(d===!0)p=EE;else{if(!ct(d))return!1;if(d.length>10)return _e.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;p=d.map((m=>m.toLowerCase()))}return h.some((m=>{var{safeText:v,ariaLabel:y}=m;return p.some((b=>LP(v,b)||LP(y,b)))}))})(r,c.map((d=>{var h;return{safeText:Uu(d).toLowerCase(),ariaLabel:((h=d.getAttribute("aria-label"))==null?void 0:h.toLowerCase().trim())||""}})))&&!yy(c,n)}var xb=t=>!t||Er(t,"html")||!gs(t),AE=(t,e)=>{if(!J||xb(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var n=!1,r=[t],a=t;a.parentNode&&!Er(a,"body");)if(SE(a.parentNode))r.push(a.parentNode.host),a=a.parentNode.host;else{var s=TE(a);if(!s)break;if(e||wb.indexOf(s.tagName.toLowerCase())>-1)n=!0;else try{var l=J.getComputedStyle(s);l&&l.getPropertyValue("cursor")==="pointer"&&(n=!0)}catch{}r.push(s),a=s}return{parentIsUsefulElement:n,targetElementList:r}};function by(t){for(var e=t;e.parentNode&&!Er(e,"body");e=e.parentNode){var n=hf(e);if(Ke(n,"ph-sensitive")||Ke(n,"ph-no-capture"))return!1}if(Ke(hf(t),"ph-include"))return!0;var r=t.type||"";if(Lt(r))switch(r.toLowerCase()){case"hidden":case"password":return!1}var a=t.name||t.id||"";return!Lt(a)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(a.replace(/[^a-zA-Z0-9]/g,""))}function RE(t){return!!(Er(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Er(t,"select")||Er(t,"textarea")||t.getAttribute("contenteditable")==="true")}var LE="(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})",qG=new RegExp("^(?:"+LE+")$"),KG=new RegExp(LE),IE="\\d{3}-?\\d{2}-?\\d{4}",YG=new RegExp("^("+IE+")$"),ZG=new RegExp("("+IE+")");function wu(t,e){return e===void 0&&(e=!0),!(nt(t)||Lt(t)&&(t=$f(t),(e?qG:KG).test((t||"").replace(/[- ]/g,""))||(e?YG:ZG).test(t)))}function MP(t){var e=Uu(t);return wu(e=(e+" "+DE(t)).trim())?e:""}function DE(t){var e="";return t&&t.childNodes&&t.childNodes.length&&Mt(t.childNodes,(function(n){var r;if(n&&((r=n.tagName)==null?void 0:r.toLowerCase())==="span")try{var a=Uu(n);e=(e+" "+a).trim(),n.childNodes&&n.childNodes.length&&(e=(e+" "+DE(n)).trim())}catch(s){_e.error("[AutoCapture]",s)}})),e}function NP(t){return t.replace(/"|\\"/g,'\\"')}function JG(t){var e=t.attr__class;return e?ct(e)?e:kb(e):void 0}var jh=tn("[Dead Clicks]"),XG=()=>!0,QG=t=>{var e,n=!((e=t.instance.persistence)==null||!e.get_property(vb)),r=t.instance.config.capture_dead_clicks;return Ha(r)?r:!!qt(r)||n};class OP{get lazyLoadedDeadClicksAutocapture(){return this.Et}constructor(e,n,r){this.instance=e,this.isEnabled=n,this.onCapture=r,this.startIfEnabledOrStop()}onRemoteConfig(e){"captureDeadClicks"in e&&(this.instance.persistence&&this.instance.persistence.register({[vb]:e.captureDeadClicks}),this.startIfEnabledOrStop())}startIfEnabledOrStop(){this.isEnabled(this)?this.Mt((()=>{this.Pt()})):this.stop()}Mt(e){var n,r;(n=Ue.__PosthogExtensions__)!=null&&n.initDeadClicksAutocapture?e():(r=Ue.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"dead-clicks-autocapture",(a=>{a?jh.error("failed to load script",a):e()}))}Pt(){var e;if(we){if(!this.Et&&(e=Ue.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var n=qt(this.instance.config.capture_dead_clicks)?this.instance.config.capture_dead_clicks:{};n.__onCapture=this.onCapture,this.Et=Ue.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,n),this.Et.start(we),jh.info("starting...")}}else jh.error("`document` not found. Cannot start.")}stop(){this.Et&&(this.Et.stop(),this.Et=void 0,jh.info("stopping..."))}}var Ev=tn("[SegmentIntegration]"),ME="posthog-js";function NE(t,e){var{organization:n,projectId:r,prefix:a,severityAllowList:s=["error"],sendExceptionsToPostHog:l=!0}=e===void 0?{}:e;return c=>{var d,h,p,m,v;if(s!=="*"&&!s.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var y=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=y,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var b,x=((d=c.exception)==null?void 0:d.values)||[],P=x.map((L=>me({},L,{stacktrace:L.stacktrace?me({},L.stacktrace,{type:"raw",frames:(L.stacktrace.frames||[]).map((T=>me({},T,{platform:"web:javascript"})))}):void 0}))),A={$exception_message:((h=x[0])==null?void 0:h.value)||c.message,$exception_type:(p=x[0])==null?void 0:p.type,$exception_level:c.level,$exception_list:P,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((m=x[0])==null?void 0:m.value)||c.message,$sentry_exception_type:(v=x[0])==null?void 0:v.type,$sentry_tags:c.tags};return n&&r&&(A.$sentry_url=(a||"https://sentry.io/organizations/")+n+"/issues/?project="+r+"&query="+c.event_id),l&&((b=t.exceptions)==null||b.sendExceptionEvent(A)),c}}class eq{constructor(e,n,r,a,s,l){this.name=ME,this.setupOnce=function(c){c(NE(e,{organization:n,projectId:r,prefix:a,severityAllowList:s,sendExceptionsToPostHog:l==null||l}))}}}class jP{constructor(e){this.Rt=(n,r,a)=>{a&&(a.noSessionId||a.activityTimeout||a.sessionPastMaximumLength||a.crossTabAdoption)&&(_e.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:n,changeReason:a}),this.Ot=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.Lt()}Lt(){var e;this.Ft=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.Rt)}destroy(){var e;(e=this.Ft)==null||e.call(this),this.Ft=void 0}doPageView(e,n){var r,a=this.At(e,n);return this.Ot={pathname:(r=J?.location.pathname)!==null&&r!==void 0?r:"",pageViewId:n,timestamp:e},this._instance.scrollManager.resetContext(),a}doPageLeave(e){var n;return this.At(e,(n=this.Ot)==null?void 0:n.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.Ot)==null?void 0:e.pageViewId}}At(e,n){var r=this.Ot;if(!r)return{$pageview_id:n};var a={$pageview_id:n,$prev_pageview_id:r.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var{maxScrollHeight:l,lastScrollY:c,maxScrollY:d,maxContentHeight:h,lastContentY:p,maxContentY:m}=s;if(!(ye(l)||ye(c)||ye(d)||ye(h)||ye(p)||ye(m))){l=Math.ceil(l),c=Math.ceil(c),d=Math.ceil(d),h=Math.ceil(h),p=Math.ceil(p),m=Math.ceil(m);var v=l>1?$a(c/l,0,1,_e):1,y=l>1?$a(d/l,0,1,_e):1,b=h>1?$a(p/h,0,1,_e):1,x=h>1?$a(m/h,0,1,_e):1;a=$t(a,{$prev_pageview_last_scroll:c,$prev_pageview_last_scroll_percentage:v,$prev_pageview_max_scroll:d,$prev_pageview_max_scroll_percentage:y,$prev_pageview_last_content:p,$prev_pageview_last_content_percentage:b,$prev_pageview_max_content:m,$prev_pageview_max_content_percentage:x})}}return r.pathname&&(a.$prev_pageview_pathname=r.pathname),r.timestamp&&(a.$prev_pageview_duration=(e.getTime()-r.timestamp.getTime())/1e3),a}}var zh=["flags","surveys"],tq={[dE]:{exposure:"hidden"},[au]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[iu]:{exposure:"hidden"},[ey]:{exposure:"event"},[ty]:{exposure:"hidden"},[ny]:{exposure:"event"},[ry]:{exposure:"hidden"},[ay]:{exposure:"event"},[iy]:{exposure:"event"},[vb]:{exposure:"event"},[_b]:{exposure:"hidden"},[sy]:{exposure:"event"},[ro]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[vl]:{exposure:"hidden"},[yb]:{exposure:"event"},[hE]:{exposure:"event",shouldSkipFromEventProperties:t=>sr(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[Ys]:{exposure:"derived",storageGroup:"flags",shouldSkipFromEventProperties:(t,e)=>e(),transformToEventProperties(t){if(!qt(t))return{};for(var e={},n=Object.keys(t),r=0;n.length>r;r++)e["$feature/"+n[r]]=t[n[r]];return e}},[cp]:{exposure:"event",storageGroup:"flags"},[su]:{exposure:"hidden"},[oy]:{exposure:"hidden",storageGroup:"flags"},[up]:{exposure:"event",storageGroup:"flags"},[ly]:{exposure:"event",storageGroup:"flags",volatile:!0},[yi]:{exposure:"event"},[cl]:{exposure:"hidden"},[Gs]:{exposure:"hidden"},[qs]:{exposure:"hidden"},[cy]:{exposure:"hidden",storageGroup:"surveys"},[sf]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[uy]:{exposure:"event"},[ou]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[ku]:{exposure:"hidden"},[dy]:{exposure:"hidden"},[hy]:{exposure:"hidden"},[Fu]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[ga]:{exposure:"hidden"},[py]:{exposure:"hidden"},[fy]:{exposure:"hidden"},[my]:{exposure:"hidden"},[gy]:{exposure:"hidden"},[of]:{exposure:"hidden"},[lf]:{exposure:"hidden"},[pE]:{exposure:"event"},[fE]:{exposure:"event"},[mE]:{exposure:"event"},[gE]:{exposure:"event"},[_E]:{exposure:"event"},[yE]:{exposure:"event"},[bE]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},nq=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],Us=t=>{var e=tq[t];if(e)return e;for(var[n,r]of nq)if(t.indexOf(n)===0)return r},$u=t=>{var e=we?.createElement("a");return ye(e)?null:(e.href=t,e)},Ol=function(t,e){for(var n,r=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),a=0;r.length>a;a++){var s=r[a].split("=");if(s[0]===e){n=s;break}}if(!ct(n)||2>n.length)return"";var l=n[1];try{l=decodeURIComponent(l)}catch{_e.error("Skipping decoding for malformed query param: "+l)}return l.replace(/\+/g," ")},Bu=function(t,e,n){if(!t||!e||!e.length)return t;for(var r=t.split("#"),a=r[1],s=(r[0]||"").split("?"),l=s[1],c=s[0],d=(l||"").split("&"),h=[],p=0;d.length>p;p++){var m=d[p].split("=");ct(m)&&(e.includes(m[0])?h.push(m[0]+"="+n):h.push(d[p]))}var v=c;return l!=null&&(v+="?"+h.join("&")),a!=null&&(v+="#"+a),v},pf=function(t,e){var n=t.match(new RegExp(e+"=([^&]*)"));return n?n[1]:null},OE=(t,e)=>t>=e&&L4(),jE=(t,e,n,r)=>{if(t===0){if(L4()){var a=e+1;return a===n&&r(),a}return e}return 0},Fh="https?://(.*)",jl=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],rq=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...jl],Vu="<masked>",aq=["li_fat_id"];function zE(t,e,n){if(!we)return{};var r,a=e?[...jl,...n||[]]:[],s=FE(Bu(we.URL,a,Vu),t),l=(r={},Mt(aq,(function(c){var d=Fa.A(c);r[c]=d||null})),r);return $t(l,s)}function FE(t,e){var n=rq.concat(e||[]),r={};return Mt(n,(function(a){var s=Ol(t,a);r[a]=s||null})),r}function UE(t){var e=(function(s){return s?s.search(Fh+"google.([^/?]*)")===0?"google":s.search(Fh+"bing.com")===0?"bing":s.search(Fh+"yahoo.com")===0?"yahoo":s.search(Fh+"duckduckgo.com")===0?"duckduckgo":null:null})(t),n=e!="yahoo"?"q":"p",r={};if(!sr(e)){r.$search_engine=e;var a=we?Ol(we.referrer,n):"";a.length&&(r.ph_keyword=a)}return r}function zP(){return navigator.language||navigator.userLanguage}var ff="$direct";function $E(){return we?.referrer||ff}function BE(t,e,n){n===void 0&&(n=!1);var r=t?[...jl,...e||[]]:[],a=n?ms(pn?.href):pn?.href,s=a?.substring(0,1e3);return{r:$E().substring(0,1e3),u:s?Bu(s,r,Vu):void 0}}function VE(t,e){var n;e===void 0&&(e=!1);var{r,u:a}=t,s=e?ms(a):a,l={$referrer:r,$referring_domain:r==null?void 0:r==ff?ff:(n=$u(r))==null?void 0:n.host};if(s){l.$current_url=s;var c=$u(s);l.$host=c?.host,l.$pathname=c?.pathname;var d=FE(s);$t(l,d)}if(r){var h=UE(r);$t(l,h)}return l}function HE(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function iq(){try{return new Date().getTimezoneOffset()}catch{return}}var sq={flags:Fu,surveys:sf},oq=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],tl="main";class Av{constructor(e,n,r){if(r===void 0&&(r=!0),this.$t={},this.Dt=!1,this.Nt=!1,this.Se=e,this.qt=r,this.props={},this.Bt=!1,this.jt=(s=>{var l="";return s.token&&(l=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+l+"_posthog"})(e),this.Ct=this.Ht(e),this.Nt=this.Ut(e),this.load(),e.debug&&_e.info("Persistence loaded",e.persistence,me({},this.props)),this.update_config(e,e,n),this.save(),J){var a=()=>this.flush();Qt(J,"beforeunload",a,{capture:!1}),Qt(J,"pagehide",a,{capture:!1})}}zt(){var e,n=(e=this.Se)==null?void 0:e.persistence_save_debounce_ms;return Fn(n)&&n>0?n:0}isDisabled(){return!!this.Vt}Ht(e){oq.indexOf(e.persistence.toLowerCase())===-1&&(_e.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var n,r=(function(l,c){l===void 0&&(l=[]),c===void 0&&(c=!1);var d=[...zG,...l];return me({},Dt,{F(h){try{var p={};try{p=Fa.F(h)||{}}catch{}var m,v=JSON.parse(Dt.A(h)||"{}");if(c){var y={};for(var b in p){var x=p[b];sr(x)||x===""||(y[b]=x)}m=$t(v,y)}else m=$t(p,v);return Dt.q(h,m),m}catch{}return null},q(h,p,m,v,y,b){var x=Dt.q(h,p,void 0,void 0,b);try{var P={};d.forEach((A=>{p[A]&&(P[A]=p[A])})),Object.keys(P).length&&Fa.q(h,P,m,v,y,b)}catch(A){Dt.D(A)}return x},P(h,p){try{J?.localStorage.removeItem(h),Fa.P(h,p)}catch(m){Dt.D(m)}}})})(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),a=!1,s=e.persistence.toLowerCase();return s==="localstorage"&&Dt.N()?(n=Dt,a=!0):s==="localstorage+cookie"&&r.N()?(n=r,a=!0):s==="sessionstorage"&&jn.N()?n=jn:s==="memory"?n=FG:s==="cookie"?n=Fa:r.N()?(n=r,a=!0):n=Fa,this.Dt=a,n}Wt(e){return this.jt+"__"+e}Ut(e){return this.Dt&&!!e.split_storage}Gt(e){var n=e??this.Se.feature_flag_cache_ttl_ms;if(!n||0>=n)return!1;var r=this.props[Fu];return!r||typeof r!="number"||Date.now()-r>n}properties(){var e={};return Mt(this.props,((n,r)=>{var a=Us(r);if(a?.exposure==="derived"){if(a.shouldSkipFromEventProperties!=null&&a.shouldSkipFromEventProperties(n,r===Ys?()=>this.Gt():()=>!1))return;a.transformToEventProperties&&$t(e,a.transformToEventProperties(n))}else if(!a||a.exposure==="event"){if(a!=null&&a.shouldSkipFromEventProperties!=null&&a.shouldSkipFromEventProperties(n,(()=>!1)))return;e[r]=n}})),e}load(){if(!this.Vt){var e=this.Ct.F(this.jt);e&&(this.props=$t({},e)),this.Nt&&this.Zt()}}Zt(){for(var e of zh){var n=Dt.F(this.Wt(e));if(n&&!cs(n)){var r=this.Qt(e);r.persisted=!0,this.Jt(e)||(r.fingerprint=this.Yt(n,e)),this.Kt(e,n)||$t(this.props,n)}}}Jt(e){return Object.keys(this.props).some((n=>{var r;return((r=Us(n))==null?void 0:r.storageGroup)===e}))}Kt(e,n){var r=sq[e];if(!r)return!1;var a=n[r],s=this.props[r];return Fn(a)&&Fn(s)&&s>a}refreshKey(e){var n;if(!this.Vt){var r=this.Nt?(n=Us(e))==null?void 0:n.storageGroup:void 0,a=r?Dt.F(this.Wt(r)):this.Ct.F(this.jt);if(a&&e in a)this.Xt(e,a[e]);else{if(r){var s=this.Ct.F(this.jt);if(s&&e in s)return void this.Xt(e,s[e])}this.er(e)}}}save(){if(!this.Vt){var e=this.zt();e>0?ye(this.tr)&&(this.tr=setTimeout((()=>{this.tr=void 0,this.rr()}),e)):this.rr()}}flush(){ye(this.tr)||(clearTimeout(this.tr),this.tr=void 0,this.rr())}rr(){this.Vt||(this.Nt?this.ir():this.nr(this.Ct,this.jt,this.props,tl))}ir(){var{main:e,groups:n}=this.sr();for(var r of(this.nr(this.Ct,this.jt,e,tl),zh)){var a,s=n[r];(!cs(s)||(a=this.$t[r])!=null&&a.persisted)&&this.nr(Dt,this.Wt(r),s,r)}}sr(){var e={},n={};for(var r of zh)n[r]={};return Mt(this.props,((a,s)=>{var l,c=(l=Us(s))==null?void 0:l.storageGroup;c?n[c][s]=a:e[s]=a})),{main:e,groups:n}}Yt(e,n){if(n===tl)return JSON.stringify(e)+"|"+this.ar+"|"+this.lr+"|"+this.ur;var r={};return Mt(e,((a,s)=>{var l;r[s]=(l=Us(s))!=null&&l.volatile?"__volatile__":a})),JSON.stringify(r)}nr(e,n,r,a){var s=this.Qt(a);if(a===tl||s.dirty||ye(s.fingerprint)){var l;try{if((l=this.Yt(r,a))===s.fingerprint)return void(s.dirty=!1)}catch{l=void 0}e.q(n,r,this.ar,this.lr,this.ur,this.Se.debug)?(s.dirty=!1,a!==tl&&(s.persisted=!0),ye(l)||(s.fingerprint=l)):this.Se.debug&&_e.warn('failed to persist storage entry "'+n+'"; will retry on next save')}}remove(e){var{keepGroupEntries:n=!1}=e===void 0?{}:e;if(ye(this.tr)||(clearTimeout(this.tr),this.tr=void 0),this.Ct.P(this.jt,!1),this.Ct.P(this.jt,!0),!n&&this.qt)for(var r of zh)Dt.P(this.Wt(r));n?delete this.$t[tl]:this.$t={}}clear(){this.remove(),this.props={}}register_once(e,n,r){if(qt(e)){ye(n)&&(n="None"),this.ar=ye(r)?this.hr:r;var a=!1;if(Mt(e,((s,l)=>{this.props.hasOwnProperty(l)&&this.props[l]!==n||(this.Xt(l,s),a=!0)})),a)return this.save(),!0}return!1}register(e,n){if(qt(e)){this.ar=ye(n)?this.hr:n;var r=!1;if(Mt(e,((a,s)=>{e.hasOwnProperty(s)&&this.props[s]!==a&&(this.Xt(s,a),r=!0)})),r)return this.save(),!0}return!1}unregister(e){e in this.props&&(this.er(e),this.save())}update_campaign_params(){if(!this.Bt){var e=zE(this.Se.custom_campaign_params,this.Se.mask_personal_data_properties,this.Se.custom_personal_data_properties);cs(bb(e))||this.register(e),this.Bt=!0}}update_search_keyword(){var e;this.register((e=we?.referrer)?UE(e):{})}update_referrer_info(){var e;this.register_once({$referrer:$E(),$referring_domain:we!=null&&we.referrer&&((e=$u(we.referrer))==null?void 0:e.host)||ff},void 0)}set_initial_person_info(){this.props[my]||this.props[gy]||this.register_once({[of]:BE(this.Se.mask_personal_data_properties,this.Se.custom_personal_data_properties,this.Se.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};Mt([gy,my],(a=>{var s=this.props[a];s&&Mt(s,(function(l,c){e["$initial_"+q_(c)]=l}))}));var n=this.props[of];if(n){var r=(function(a,s){s===void 0&&(s=!1);var l=VE(a,s),c={};return Mt(l,(function(d,h){c["$initial_"+q_(h)]=d})),c})(n,this.Se.disable_capture_url_hashes);$t(e,r)}return e}safe_merge(e){return Mt(this.props,(function(n,r){r in e||(e[r]=n)})),e}update_config(e,n,r){this.hr=this.ar=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!r),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var a=e.persistence!==n.persistence||!((d,h)=>{if(d.length!==h.length)return!1;var p=[...d].sort(),m=[...h].sort();return p.every(((v,y)=>v===m[y]))})(e.cookie_persisted_properties||[],n.cookie_persisted_properties||[]),s=a?this.Ht(e):this.Ct,l=this.Ut(e);if(a||l!==this.Nt){var c=this.props;this.clear(),this.Ct=s,this.Nt=l,this.props=c,this.save()}}set_disabled(e){this.Vt=e,this.Vt?this.remove():this.save()}set_cross_subdomain(e){e!==this.lr&&(this.lr=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.ur&&(this.ur=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,n){var r=this.props[iu]||{};r[e]=n,this.Xt(iu,r),this.save()}remove_event_timer(e){var n=this.props[iu]||{},r=n[e];return ye(r)||(delete n[e],this.Xt(iu,n),this.save()),r}get_property(e){return this.props[e]}set_property(e,n){this.Xt(e,n),this.save()}Xt(e,n){var r;this.props[e]=n,(r=Us(e))!=null&&r.volatile||this.dr(e)}er(e){delete this.props[e],this.dr(e)}dr(e){var n,r=(n=Us(e))==null?void 0:n.storageGroup;r&&(this.Qt(r).dirty=!0)}Qt(e){return this.$t[e]||(this.$t[e]={})}}var Vc={Activation:"events",Cancellation:"cancelEvents"},Rv={Popover:"popover",API:"api",Widget:"widget"},lq={Always:"always"},xi={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},Lv={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},ky={Popover:"popover",Inline:"inline"},cq={SHOWN:"product tour shown"},FP={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},UP=tn("[RateLimiter]");class uq{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=n=>{var r=n.text;if(r&&r.length)try{(JSON.parse(r).quota_limited||[]).forEach((a=>{UP.info((a||"events")+" is quota limited."),this.serverLimits[a]=new Date().getTime()+6e4}))}catch(a){return void UP.warn('could not rate limit - continuing. Error: "'+a?.message+'"',{text:r})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var n,r,a;e===void 0&&(e=!1);var{captureEventsBurstLimit:s,captureEventsPerSecond:l}=this,c=new Date().getTime(),d=(n=(r=this.instance.persistence)==null?void 0:r.get_property(fy))!==null&&n!==void 0?n:{tokens:s,last:c};d.tokens+=(c-d.last)/1e3*l,d.last=c,d.tokens>s&&(d.tokens=s);var h=1>d.tokens;return h||e||(d.tokens=Math.max(0,d.tokens-1)),!h||this.lastEventRateLimited||e||this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited. Config is set to "+l+" events per second and "+s+" events burst limit."},{skip_client_rate_limiting:!0}),this.lastEventRateLimited=h,(a=this.instance.persistence)==null||a.set_property(fy,d),{isRateLimited:h,remainingTokens:d.tokens}}isServerRateLimited(e){var n=this.serverLimits[e||"events"]||!1;return n!==!1&&new Date().getTime()<n}}var Hc=tn("[RemoteConfig]");class WE{constructor(e){this._instance=e}get remoteConfig(){var e;return(e=Ue._POSTHOG_REMOTE_CONFIG)==null||(e=e[this._instance.config.token])==null?void 0:e.config}cr(e){var n,r;(n=Ue.__PosthogExtensions__)!=null&&n.loadExternalDependency?(r=Ue.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,"remote-config",(()=>e(this.remoteConfig))):e()}vr(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback(n){e(n.json)}})}load(){try{if(this.remoteConfig)return Hc.info("Using preloaded remote config",this.remoteConfig),this.pr(this.remoteConfig),void this.gr();if(this._instance.mr())return void Hc.warn("Remote config is disabled. Falling back to local config.");this.cr((e=>{if(!e)return Hc.info("No config found after loading remote JS config. Falling back to JSON."),void this.vr((n=>{this.pr(n),this.gr()}));this.pr(e),this.gr()}))}catch(e){Hc.error("Error loading remote config",e)}}stop(){this.yr&&(clearInterval(this.yr),this.yr=void 0)}refresh(){!this._instance.mr()&&we&&we.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}gr(){var e;if(!this.yr){var n=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;n!==0&&(this.yr=setInterval((()=>{this.refresh()}),n))}}pr(e){var n;e||Hc.error("Failed to fetch remote config from PostHog."),this._instance.pr(e??{}),e?.hasFeatureFlags!==!1&&(this._instance.config.advanced_disable_feature_flags_on_first_load||(n=this._instance.featureFlags)==null||n.ensureFlagsLoaded())}}var Br={GZipJS:"gzip-js",Base64:"base64"},Zr=Uint8Array,vr=Uint16Array,zl=Uint32Array,Pb=new Zr([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Sb=new Zr([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),$P=new Zr([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),GE=function(t,e){for(var n=new vr(31),r=0;31>r;++r)n[r]=e+=1<<t[r-1];var a=new zl(n[30]);for(r=1;30>r;++r)for(var s=n[r];n[r+1]>s;++s)a[s]=s-n[r]<<5|r;return[n,a]},qE=GE(Pb,2),wy=qE[1];qE[0][28]=258,wy[258]=28;for(var BP=GE(Sb,0)[1],KE=new vr(32768),Yt=0;32768>Yt;++Yt){var nl=(43690&Yt)>>>1|(21845&Yt)<<1;KE[Yt]=((65280&(nl=(61680&(nl=(52428&nl)>>>2|(13107&nl)<<2))>>>4|(3855&nl)<<4))>>>8|(255&nl)<<8)>>>1}var xu=function(t,e,n){for(var r=t.length,a=0,s=new vr(e);r>a;++a)++s[t[a]-1];var l,c=new vr(e);for(a=0;e>a;++a)c[a]=c[a-1]+s[a-1]<<1;for(l=new vr(r),a=0;r>a;++a)l[a]=KE[c[t[a]-1]++]>>>15-t[a];return l},mo=new Zr(288);for(Yt=0;144>Yt;++Yt)mo[Yt]=8;for(Yt=144;256>Yt;++Yt)mo[Yt]=9;for(Yt=256;280>Yt;++Yt)mo[Yt]=7;for(Yt=280;288>Yt;++Yt)mo[Yt]=8;var mf=new Zr(32);for(Yt=0;32>Yt;++Yt)mf[Yt]=5;var dq=xu(mo,9),hq=xu(mf,5),YE=function(t){return(t/8>>0)+(7&t&&1)},ZE=function(t,e,n){(n==null||n>t.length)&&(n=t.length);var r=new(t instanceof vr?vr:t instanceof zl?zl:Zr)(n-e);return r.set(t.subarray(e,n)),r},pi=function(t,e,n){var r=e/8>>0;t[r]|=n<<=7&e,t[r+1]|=n>>>8},Wc=function(t,e,n){var r=e/8>>0;t[r]|=n<<=7&e,t[r+1]|=n>>>8,t[r+2]|=n>>>16},Iv=function(t,e){for(var n=[],r=0;t.length>r;++r)t[r]&&n.push({s:r,f:t[r]});var a=n.length,s=n.slice();if(!a)return[new Zr(0),0];if(a==1){var l=new Zr(n[0].s+1);return l[n[0].s]=1,[l,1]}n.sort((function(D,$){return D.f-$.f})),n.push({s:-1,f:25001});var c=n[0],d=n[1],h=0,p=1,m=2;for(n[0]={s:-1,f:c.f+d.f,l:c,r:d};p!=a-1;)c=n[n[m].f>n[h].f?h++:m++],d=n[h!=p&&n[m].f>n[h].f?h++:m++],n[p++]={s:-1,f:c.f+d.f,l:c,r:d};var v=s[0].s;for(r=1;a>r;++r)s[r].s>v&&(v=s[r].s);var y=new vr(v+1),b=xy(n[p-1],y,0);if(b>e){r=0;var x=0,P=b-e,A=1<<P;for(s.sort((function(D,$){return y[$.s]-y[D.s]||D.f-$.f}));a>r;++r){var L=s[r].s;if(e>=y[L])break;x+=A-(1<<b-y[L]),y[L]=e}for(x>>>=P;x>0;){var T=s[r].s;e>y[T]?x-=1<<e-y[T]++-1:++r}for(;r>=0&&x;--r){var E=s[r].s;y[E]==e&&(--y[E],++x)}b=e}return[new Zr(y),b]},xy=function(t,e,n){return t.s==-1?Math.max(xy(t.l,e,n+1),xy(t.r,e,n+1)):e[t.s]=n},VP=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new vr(++e),r=0,a=t[0],s=1,l=function(d){n[r++]=d},c=1;e>=c;++c)if(t[c]==a&&c!=e)++s;else{if(!a&&s>2){for(;s>138;s-=138)l(32754);s>2&&(l(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(l(a),--s;s>6;s-=6)l(8304);s>2&&(l(s-3<<5|8208),s=0)}for(;s--;)l(a);s=1,a=t[c]}return[n.subarray(0,r),e]},Gc=function(t,e){for(var n=0,r=0;e.length>r;++r)n+=t[r]*e[r];return n},Py=function(t,e,n){var r=n.length,a=YE(e+2);t[a]=255&r,t[a+1]=r>>>8,t[a+2]=255^t[a],t[a+3]=255^t[a+1];for(var s=0;r>s;++s)t[a+s+4]=n[s];return 8*(a+4+r)},HP=function(t,e,n,r,a,s,l,c,d,h,p){pi(e,p++,n),++a[256];for(var m=Iv(a,15),v=m[0],y=m[1],b=Iv(s,15),x=b[0],P=b[1],A=VP(v),L=A[0],T=A[1],E=VP(x),D=E[0],$=E[1],I=new vr(19),S=0;L.length>S;++S)I[31&L[S]]++;for(S=0;D.length>S;++S)I[31&D[S]]++;for(var j=Iv(I,7),F=j[0],Z=j[1],ee=19;ee>4&&!F[$P[ee-1]];--ee);var ue,re,ae,te,le=h+5<<3,H=Gc(a,mo)+Gc(s,mf)+l,Q=Gc(a,v)+Gc(s,x)+l+14+3*ee+Gc(I,F)+(2*I[16]+3*I[17]+7*I[18]);if(H>=le&&Q>=le)return Py(e,p,t.subarray(d,d+h));if(pi(e,p,1+(H>Q)),p+=2,H>Q){ue=xu(v,y),re=v,ae=xu(x,P),te=x;var W=xu(F,Z);for(pi(e,p,T-257),pi(e,p+5,$-1),pi(e,p+10,ee-4),p+=14,S=0;ee>S;++S)pi(e,p+3*S,F[$P[S]]);p+=3*ee;for(var N=[L,D],q=0;2>q;++q){var pe=N[q];for(S=0;pe.length>S;++S)pi(e,p,W[ke=31&pe[S]]),p+=F[ke],ke>15&&(pi(e,p,pe[S]>>>5&127),p+=pe[S]>>>12)}}else ue=dq,re=mo,ae=hq,te=mf;for(S=0;c>S;++S)if(r[S]>255){var ke;Wc(e,p,ue[257+(ke=r[S]>>>18&31)]),p+=re[ke+257],ke>7&&(pi(e,p,r[S]>>>23&31),p+=Pb[ke]);var de=31&r[S];Wc(e,p,ae[de]),p+=te[de],de>3&&(Wc(e,p,r[S]>>>5&8191),p+=Sb[de])}else Wc(e,p,ue[r[S]]),p+=re[r[S]];return Wc(e,p,ue[256]),p+re[256]},pq=new zl([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),fq=(function(){for(var t=new zl(256),e=0;256>e;++e){for(var n=e,r=9;--r;)n=(1&n&&3988292384)^n>>>1;t[e]=n}return t})(),Dv=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8};function mq(t,e){e===void 0&&(e={});var n=(function(){var m=4294967295;return{p(v){for(var y=m,b=0;v.length>b;++b)y=fq[255&y^v[b]]^y>>>8;m=y},d(){return 4294967295^m}}})(),r=t.length;n.p(t);var a,s,l,c,d,h=(c=10+((a=e).filename&&a.filename.length+1||0),d=8,(function(m,v,y,b,x,P){var A=m.length,L=new Zr(b+A+5*(1+Math.floor(A/7e3))+x),T=L.subarray(b,L.length-x),E=0;if(!v||8>A)for(var D=0;A>=D;D+=65535){var $=D+65535;A>$?E=Py(T,E,m.subarray(D,$)):(T[D]=!0,E=Py(T,E,m.subarray(D,A)))}else{for(var I=pq[v-1],S=I>>>13,j=8191&I,F=(1<<y)-1,Z=new vr(32768),ee=new vr(F+1),ue=Math.ceil(y/3),re=2*ue,ae=function(xa){return(m[xa]^m[xa+1]<<ue^m[xa+2]<<re)&F},te=new zl(25e3),le=new vr(288),H=new vr(32),Q=0,W=0,N=(D=0,0),q=0,pe=0;A>D;++D){var ke=ae(D),de=32767&D,be=ee[ke];if(Z[de]=be,ee[ke]=de,D>=q){var je=A-D;if((Q>7e3||N>24576)&&je>423){E=HP(m,T,0,te,le,H,W,N,pe,D-pe,E),N=Q=W=0,pe=D;for(var $e=0;286>$e;++$e)le[$e]=0;for($e=0;30>$e;++$e)H[$e]=0}var Le=2,St=0,un=j,jt=de-be&32767;if(je>2&&ke==ae(D-jt))for(var _t=Math.min(S,je)-1,Zt=Math.min(32767,D),ta=Math.min(258,je);Zt>=jt&&--un&&de!=be;){if(m[D+Le]==m[D+Le-jt]){for(var In=0;ta>In&&m[D+In]==m[D+In-jt];++In);if(In>Le){if(Le=In,St=jt,In>_t)break;var Vt=Math.min(jt,In-2),Qe=0;for($e=0;Vt>$e;++$e){var st=D-jt+$e+32768&32767,It=st-Z[st]+32768&32767;It>Qe&&(Qe=It,be=st)}}}jt+=(de=be)-(be=Z[de])+32768&32767}if(St){te[N++]=268435456|wy[Le]<<18|BP[St];var Et=31&wy[Le],Dn=31&BP[St];W+=Pb[Et]+Sb[Dn],++le[257+Et],++H[Dn],q=D+Le,++Q}else te[N++]=m[D],++le[m[D]]}}E=HP(m,T,!0,te,le,H,W,N,pe,D-pe,E)}return ZE(L,0,b+YE(E)+x)})(s=t,(l=e).level==null?6:l.level,l.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):12+l.mem,c,d)),p=h.length;return(function(m,v){var y=v.filename;if(m[0]=31,m[1]=139,m[2]=8,m[8]=2>v.level?4:v.level==9?2:0,m[9]=3,v.mtime!=0&&Dv(m,4,Math.floor(new Date(v.mtime||Date.now())/1e3)),y){m[3]=8;for(var b=0;y.length>=b;++b)m[b+10]=y.charCodeAt(b)}})(h,e),Dv(h,p-8,n.d()),Dv(h,p-4,r),h}var gq=!!H_||!!V_,JE="text/plain",hp=!1,Sy=(t,e)=>{var[n,r]=t.split("#"),[a,s]=n.split("?");if(!s)return t;var l=s.split("&").filter((c=>c.split("=")[0]!==e)).join("&");return a+(l?"?"+l:"")+(r?"#"+r:"")},XE=function(t,e,n){var r;n===void 0&&(n=!0);var[a,s]=t.split("?"),l=me({},e),c=(r=s?.split("&").map((h=>{var p,[m,v]=h.split("="),y=n&&(p=l[m])!==null&&p!==void 0?p:v;return delete l[m],m+"="+y})))!==null&&r!==void 0?r:[],d=(function(h,p){var m,v;p===void 0&&(p="&");var y=[];return Mt(h,(function(b,x){ye(b)||ye(x)||x==="undefined"||(m=encodeURIComponent((P=>P instanceof File)(b)?b.name:b.toString()),v=encodeURIComponent(x),y[y.length]=v+"="+m)})),y.join(p)})(l);return d&&c.push(d),a+"?"+c.join("&")},_l=(t,e)=>JSON.stringify(t,((n,r)=>typeof r=="bigint"?r.toString():r),e),WP=t=>{if(t.xt)return t.xt;var{data:e,compression:n}=t;if(e){if(n===Br.GZipJS){var r=mq((function(c,d){var h=c.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(c);for(var p=new Zr(c.length+(c.length>>>1)),m=0,v=function(P){p[m++]=P},y=0;h>y;++y){if(m+5>p.length){var b=new Zr(m+8+(h-y<<1));b.set(p),p=b}var x=c.charCodeAt(y);128>x?v(x):2048>x?(v(192|x>>>6),v(128|63&x)):x>55295&&57344>x?(v(240|(x=65536+(1047552&x)|1023&c.charCodeAt(++y))>>>18),v(128|x>>>12&63),v(128|x>>>6&63),v(128|63&x)):(v(224|x>>>12),v(128|x>>>6&63),v(128|63&x))}return ZE(p,0,m)})(_l(e)),{mtime:0});return{contentType:JE,body:r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength),estimatedSize:r.byteLength}}if(n===Br.Base64){var a=(function(c){return c&&btoa(encodeURIComponent(c).replace(/%([0-9A-F]{2})/g,((d,h)=>String.fromCharCode(parseInt(h,16)))))})(_l(e)),s=(c=>"data="+encodeURIComponent(typeof c=="string"?c:_l(c)))(a);return{contentType:"application/x-www-form-urlencoded",body:s,estimatedSize:new Blob([s]).size}}var l=_l(e);return{contentType:"application/json",body:l,estimatedSize:new Blob([l]).size}}},QE=t=>{var e,n,r=()=>({url:Sy(t.url,"compression"),encodedBody:WP(me({},t,{compression:void 0,xt:void 0}))});try{e=WP(t)}catch(a){if(vP(t.compression,Ol(t.url,"compression")))return _e.error("Failed to gzip request body, sending uncompressed payload",a),r();throw a}return e&&vP(t.compression,Ol(t.url,"compression"))&&!((n=e.body)instanceof ArrayBuffer?W_(new Uint8Array(n)):ArrayBuffer.isView(n)&&W_(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)))?(hp=!0,r()):{url:t.url,encodedBody:e}},GP=t=>{try{return QE(t)}catch(e){return _e.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},vq=(function(){var t=_n((function*(e){var n=_l(e.data),r=yield(function(s,l,c){return G_.apply(this,arguments)})(n,on.DEBUG,{rethrow:!0});if(!r)return e;var a=yield r.arrayBuffer();return me({},e,{xt:{contentType:JE,body:a,estimatedSize:a.byteLength}})}));return function(e){return t.apply(this,arguments)}})(),_q=["/e/","/s/"],qP=(t,e)=>{var n=(a=>{var s=(l=>{var c=$u(l),d=c?.pathname||l.split(/[?#]/)[0];return d?d[0]==="/"?d:"/"+d:"/"})(a);return _q.some((l=>((c,d)=>c.slice(c.length-d.length)===d)(s,l)))})(t),r=n?Sy(t,"ver"):t;return XE(e===Br.GZipJS?Sy(r,"compression"):r,me({_:new Date().getTime().toString()},n?{}:{ver:on.JS_SDK_VERSION},e===Br.GZipJS?{}:{compression:e}))},pp=[];V_&&pp.push({transport:"fetch",method(t){var e,n=GP(t);if(n){var{url:r,encodedBody:a}=n,{contentType:s,body:l,estimatedSize:c}=a??{},d=new Headers;Mt(t.headers,(function(v,y){d.append(y,v)})),s&&d.append("Content-Type",s);var h=null,p=!1;if(uP){var m=new uP;h={signal:m.signal,timeout:setTimeout((()=>{var v,y;p=!0,m.abort((v=t.timeout,(y=new Error("PostHog request timed out"+(v?" after "+v+"ms":""))).name="AbortError",y))}),t.timeout)}}V_(r,me({method:t?.method||"GET",headers:d,keepalive:t.method==="POST"&&52428.8>(c||0),body:l,signal:(e=h)==null?void 0:e.signal},t.fetchOptions)).then((v=>v.text().then((y=>{var b={statusCode:v.status,text:y};if(v.status===200)try{b.json=JSON.parse(y)}catch(x){_e.error(x)}t.callback==null||t.callback(b)})))).catch((v=>{p&&v?.name==="AbortError"?_e.warn(v):_e.error(v),t.callback==null||t.callback({statusCode:0,error:v})})).finally((()=>h?clearTimeout(h.timeout):null))}}}),H_&&pp.push({transport:"XHR",method(t){var e=GP(t);if(e){var n=new H_,{url:r,encodedBody:a}=e;n.open(t.method||"GET",r,!0);var{contentType:s,body:l}=a??{};Mt(t.headers,(function(c,d){n.setRequestHeader(d,c)})),s&&n.setRequestHeader("Content-Type",s),t.timeout&&(n.timeout=t.timeout),n.onreadystatechange=()=>{if(n.readyState===4){var c={statusCode:n.status,text:n.responseText};if(n.status===200)try{c.json=JSON.parse(n.responseText)}catch{}t.callback==null||t.callback(c)}},n.send(l)}}}),ar!=null&&ar.sendBeacon&&pp.push({transport:"sendBeacon",method(t){try{var{url:e,encodedBody:n}=QE(t),{contentType:r,body:a}=n??{};if(!a)return;var s=a instanceof Blob?a:new Blob([a],{type:r});ar.sendBeacon(e,s)}catch{}}});var Cy=3e3;class yq{constructor(e,n){this.br=!0,this._r=[],this.wr=$a(n?.flush_interval_ms||Cy,250,5e3,_e.createLogger("flush interval"),Cy),this.kr=e}enqueue(e){this._r.push(e),this.Sr||this.Cr()}unload(){this.Ir();var e=this._r.length>0?this.Tr():{},n=Object.values(e);[...n.filter((r=>r.url.indexOf("/e")===0)),...n.filter((r=>r.url.indexOf("/e")!==0))].map((r=>{this.Er(me({},r,{transport:"sendBeacon"}))}))}enable(){this.br=!1,this.Cr()}Cr(){var e=this;this.br||(this.Sr=setTimeout((()=>{if(this.Ir(),this._r.length>0){var n=this.Tr(),r=function(){var s=n[a],l=new Date().getTime();s.data&&ct(s.data)&&Mt(s.data,(c=>{c.offset=Math.abs(c.timestamp-l),delete c.timestamp})),e.Er(s)};for(var a in n)r()}}),this.wr))}Er(e){try{this.kr(e)}catch(n){_e.error(n)}}Ir(){clearTimeout(this.Sr),this.Sr=void 0}Tr(){var e={};return Mt(this._r,(n=>{var r,a=n,s=(a?a.batchKey:null)||a.url;ye(e[s])&&(e[s]=me({},a,{data:[]})),(r=e[s].data)==null||r.push(a.data)})),this._r=[],e}}var bq=["retriesPerformedSoFar"];class kq{constructor(e){this.Mr=!1,this.Pr=3e3,this._r=[],this._instance=e,this._r=[],this.Rr=!0,!ye(J)&&"onLine"in J.navigator&&(this.Rr=J.navigator.onLine,this.Or=()=>{this.Rr=!0,this.Lr()},this.Fr=()=>{this.Rr=!1},Qt(J,"online",this.Or),Qt(J,"offline",this.Fr))}get length(){return this._r.length}retriableRequest(e){var{retriesPerformedSoFar:n}=e,r=I4(e,bq);_i(n)&&(r.url=XE(r.url,{retry_count:n})),this._instance._send_request(me({},r,{callback:a=>{if(a.statusCode!==200&&(400>a.statusCode||a.statusCode>=500)){if((a.statusCode===0?3:10)>(n??0))return void this.st(me({retriesPerformedSoFar:n},r));a.statusCode===0&&_e.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(n??0)+" retries.")}r.callback==null||r.callback(a)}}))}st(e){var n=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=n+1;var r=(function(l){var c=3e3*Math.pow(2,l),d=c/2,h=Math.min(18e5,c),p=Math.random()-.5;return Math.ceil(h+p*(h-d))})(n),a=Date.now()+r;this._r.push({retryAt:a,requestOptions:e});var s="Enqueued failed request for retry in "+r;navigator.onLine||(s+=" (Browser is offline)"),_e.warn(s),this.Mr||(this.Mr=!0,this.Ar())}Ar(){if(this.$r&&clearTimeout(this.$r),this._r.length===0)return this.Mr=!1,void(this.$r=void 0);this.$r=setTimeout((()=>{this.Rr&&this._r.length>0&&this.Lr(),this.Ar()}),this.Pr)}Lr(){var e=Date.now(),n=[],r=this._r.filter((s=>e>s.retryAt||(n.push(s),!1)));if(this._r=n,r.length>0)for(var{requestOptions:a}of r)this.retriableRequest(a)}unload(){for(var{requestOptions:e}of(this.$r&&(clearTimeout(this.$r),this.$r=void 0),this.Mr=!1,ye(J)||(this.Or&&(J.removeEventListener("online",this.Or),this.Or=void 0),this.Fr&&(J.removeEventListener("offline",this.Fr),this.Fr=void 0)),this._r))try{this._instance._send_request(me({},e,{transport:"sendBeacon"}))}catch(n){_e.error(n)}this._r=[]}}class wq{constructor(e){this.Dr=()=>{var n,r,a,s;this.Nr||(this.Nr={});var l=this.scrollElement(),c=this.scrollY(),d=l?Math.max(0,l.scrollHeight-l.clientHeight):0,h=c+(l?.clientHeight||0),p=l?.scrollHeight||0;this.Nr.lastScrollY=Math.ceil(c),this.Nr.maxScrollY=Math.max(c,(n=this.Nr.maxScrollY)!==null&&n!==void 0?n:0),this.Nr.maxScrollHeight=Math.max(d,(r=this.Nr.maxScrollHeight)!==null&&r!==void 0?r:0),this.Nr.lastContentY=h,this.Nr.maxContentY=Math.max(h,(a=this.Nr.maxContentY)!==null&&a!==void 0?a:0),this.Nr.maxContentHeight=Math.max(p,(s=this.Nr.maxContentHeight)!==null&&s!==void 0?s:0)},this._instance=e}get qr(){return this._instance.config.scroll_root_selector}getContext(){return this.Nr}resetContext(){var e=this.Nr;return setTimeout(this.Dr,0),e}startMeasuringScrollPosition(){Qt(J,"scroll",this.Dr,{capture:!0}),Qt(J,"scrollend",this.Dr,{capture:!0}),Qt(J,"resize",this.Dr)}scrollElement(){if(!this.qr)return J?.document.documentElement;var e=ct(this.qr)?this.qr:[this.qr];for(var n of e){var r=J?.document.querySelector(n);if(r)return r}}Br(e){var n=e==="y"?"scrollTop":"scrollLeft";if(this.qr){var r=this.scrollElement();return r&&r[n]||0}return J?e==="y"?J.scrollY||J.pageYOffset||J.document.documentElement.scrollTop||0:J.scrollX||J.pageXOffset||J.document.documentElement.scrollLeft||0:0}scrollY(){return this.Br("y")}scrollX(){return this.Br("x")}}var xq=t=>BE(t?.config.mask_personal_data_properties,t?.config.custom_personal_data_properties,t?.config.disable_capture_url_hashes);class KP{constructor(e,n,r,a){this.jr=s=>{var l=this.Hr();if(!l||l.sessionId!==s){var c={sessionId:s,props:this.Ur(this._instance)};this.zr.register({[py]:c})}},this._instance=e,this.Vr=n,this.zr=r,this.Ur=a||xq,this.Vr.onSessionId(this.jr)}Hr(){return this.zr.props[py]}getSetOnceProps(){var e,n=(e=this.Hr())==null?void 0:e.props;return n?"r"in n?VE(n,this._instance.config.disable_capture_url_hashes):{$referring_domain:n.referringDomain,$pathname:n.initialPathName,utm_source:n.utm_source,utm_campaign:n.utm_campaign,utm_medium:n.utm_medium,utm_content:n.utm_content,utm_term:n.utm_term}:{}}getSessionProps(){var e={};return Mt(bb(this.getSetOnceProps()),((n,r)=>{r==="$current_url"&&(r="url"),e["$session_entry_"+q_(r)]=n})),e}}class Cb{constructor(){this.Wr={}}on(e,n){return this.Wr[e]||(this.Wr[e]=[]),this.Wr[e].push(n),()=>{this.Wr[e]=this.Wr[e].filter((r=>r!==n))}}emit(e,n){for(var r of this.Wr[e]||[])r(n);for(var a of this.Wr["*"]||[])a(e,n)}}var qc=tn("[SessionId]");class YP{on(e,n){return this.Gr.on(e,n)}constructor(e,n,r){var a;if(this.Zr=null,this.Qr=[],this.Jr=void 0,this.Yr=!1,this.Gr=new Cb,this.Kr=(h,p)=>!(!_i(h)||!_i(p))&&Math.abs(h-p)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===wi)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Se=e.config,this.zr=e.persistence,this.Xr=void 0,this.ei=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.ti=n||ki,this.ri=r||ki;var s=this.Se.persistence_name||this.Se.token;if(this._sessionTimeoutMs=1e3*$a(this.Se.session_idle_timeout_seconds||1800,60,36e3,qc.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.ii(),this.ni="ph_"+s+"_window_id",this.si="ph_"+s+"_primary_window_exists",this.oi()){var l=jn.F(this.ni),c=jn.F(this.si);l&&!c?this.Xr=l:jn.P(this.ni),jn.q(this.si,!0)}if((a=this.Se.bootstrap)!=null&&a.sessionID)try{var d=(h=>{var p=this.Se.bootstrap.sessionID.replace(/-/g,"");if(p.length!==32)throw new Error("Not a valid UUID");if(p[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(p.substring(0,12),16)})();this.ai(this.Se.bootstrap.sessionID,new Date().getTime(),d)}catch(h){qc.error("Invalid sessionID in bootstrap",h)}this.li()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return ye(this.Qr)&&(this.Qr=[]),this.Qr.push(e),this.ei&&e(this.ei,this.Xr),()=>{this.Qr=this.Qr.filter((n=>n!==e))}}oi(){return this.Se.persistence!=="memory"&&!this.zr.Vt&&jn.N()}ui(e){e!==this.Xr&&(this.Xr=e,this.oi()&&jn.q(this.ni,e))}hi(){return this.Xr?this.Xr:this.oi()?jn.F(this.ni):null}di(e){var n=this.Zr;return!sr(n)&&!sr(e)&&5e3>Math.abs(e-n)}ai(e,n,r){var a=n!==this._sessionActivityTimestamp,s=!(e!==this.ei||r!==this._sessionStartTimestamp);this._sessionStartTimestamp=r,this._sessionActivityTimestamp=n,this.ei=e,s&&!a||s&&this.di(n)||(this.Zr=n,this.zr.register({[vl]:[n,e,r]}))}ci(){var e,n=(e=this.Se)==null?void 0:e.persistence_save_debounce_ms;return _i(n)&&n>0}vi(){this.ci()?this.zr.refreshKey(vl):(this.zr.flush(),this.zr.load())}fi(){var e;if(!sr(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Zr){this.vi();var[,n,r]=this.pi();n===this.ei&&r===this._sessionStartTimestamp&&(this.Zr=this._sessionActivityTimestamp,this.zr.register({[vl]:[this._sessionActivityTimestamp,(e=this.ei)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.zr.flush())}}gi(){var[e]=this.pi(),n=_i(e)?e:0,r=_i(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(n,r)}mi(e){return this.vi(),this.Kr(e,this.gi())}pi(){var e=this.zr.props[vl];return ct(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Zr=null,clearTimeout(this.yi),this.yi=void 0,this.ai(null,null,null)}destroy(){this.Yr=!0,this.fi(),clearTimeout(this.yi),this.yi=void 0,this.Jr&&J&&(J.removeEventListener(uf,this.Jr,{capture:!1}),this.Jr=void 0),this.Qr=[]}li(){this.Jr=()=>{this.fi(),this.oi()&&jn.P(this.si)},Qt(J,uf,this.Jr,{capture:!1})}checkAndGetSessionAndWindowId(e,n){if(e===void 0&&(e=!1),n===void 0&&(n=null),this.Se.cookieless_mode===wi)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var r=n||new Date().getTime(),[,a,s]=this.pi(),l=this.gi(),c=this.hi(),d=_i(s)&&Math.abs(r-s)>864e5,h=!1,p=!1,m=!a,v=a,y=!m&&!e&&this.Kr(r,l);y&&((y=this.mi(r))||qc.info("cross-tab refresh kept the session alive",{sessionId:a}),[,a,s]=this.pi()),m||y||d?(a=this.ti(),c=this.ri(),qc.info("new session ID generated",{sessionId:a,windowId:c,changeReason:{noSessionId:m,activityTimeout:y,sessionPastMaximumLength:d}}),s=r,h=!0):(c||(c=this.ri(),h=!0),(p=a!==v)&&(qc.info("adopted cross-tab session id",{sessionId:a,windowId:c}),h=!0));var b=_i(l)&&e&&!d?l:r,x=_i(s)?s:new Date().getTime();this.ui(c),this.ai(a,b,x),e||this.ii();var P={noSessionId:m,activityTimeout:y,sessionPastMaximumLength:d,crossTabAdoption:p};return h&&this.Qr.forEach((A=>A(a,c,P))),{sessionId:a,windowId:c,sessionStartTimestamp:x,changeReason:h?P:void 0,lastActivityTimestamp:l}}ii(){this.Yr||(clearTimeout(this.yi),this.yi=setTimeout((()=>{if(!this.Yr)if(this.mi(new Date().getTime())){var e=this.ei;this.resetSessionId(),this.Gr.emit("forcedIdleReset",{idleSessionId:e})}else this.ii()}),1.1*this.sessionTimeoutMs))}}var e6=function(t,e){if(!t)return!1;var n=t.userAgent;if(n&&yP(n,e))return!0;try{var r=t?.userAgentData;if(r!=null&&r.brands&&r.brands.some((a=>yP(a?.brand,e))))return!0}catch{}return!!t.webdriver};function t6(){return(t6=_n((function*(){var t=ar?.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),n=e?.model;return Lt(n)&&n.length>0?n:void 0}catch(r){return void _e.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",r)}}))).apply(this,arguments)}var gf=function(t,e){if(!(function(n){try{new RegExp(n)}catch{return!1}return!0})(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function ZP(t,e,n){return _l({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:n})}var n6={exact:(t,e)=>e.some((n=>t.some((r=>n===r)))),is_not:(t,e)=>e.every((n=>t.every((r=>n!==r)))),regex:(t,e)=>e.some((n=>t.some((r=>gf(n,r))))),not_regex:(t,e)=>e.every((n=>t.every((r=>!gf(n,r))))),icontains:(t,e)=>e.map(Uh).some((n=>t.map(Uh).some((r=>n.includes(r))))),not_icontains:(t,e)=>e.map(Uh).every((n=>t.map(Uh).every((r=>!n.includes(r))))),gt:(t,e)=>e.some((n=>{var r=parseFloat(n);return!isNaN(r)&&t.some((a=>r>parseFloat(a)))})),lt:(t,e)=>e.some((n=>{var r=parseFloat(n);return!isNaN(r)&&t.some((a=>r<parseFloat(a)))}))},Uh=t=>t.toLowerCase();function r6(t,e){return!t||Object.entries(t).every((n=>{var[r,a]=n,s=e?.[r];if(ye(s)||sr(s))return!1;var l=[String(s)],c=n6[a.operator];return!!c&&c(a.values,l)}))}var Ty="custom",JP="i.posthog.com",Pq=/^\/static\//;class Sq{constructor(e){this.bi={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,n=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return n||(n=this.apiHost.replace("."+JP,".posthog.com")),n==="https://app.posthog.com"?"https://us.posthog.com":n}get region(){return this.bi[this.apiHost]||(this.bi[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":Ty),this.bi[this.apiHost]}wi(e){if(Pq.test(e)){var n=this.instance.config.asset_host;if(typeof n=="string")return n.trim().replace(/\/$/,"")||void 0}}endpointFor(e,n){if(n===void 0&&(n=""),n&&(n=n[0]==="/"?n:"/"+n),e==="ui")return this.uiHost+n;if(e==="flags")return this.flagsApiHost+n;if(e==="assets"){var r=this.wi(n);if(r)return""+r+n}if(this.region===Ty)return this.apiHost+n;var a=JP+n;switch(e){case"assets":return"https://"+this.region+"-assets."+a;case"api":return"https://"+this.region+"."+a}}}var Rt=tn("[Surveys]"),Ey="seenSurvey_",a6=t=>{try{var e=(n=>((r,a)=>{var s=""+Ey+a.id;return a.current_iteration&&a.current_iteration>0&&(s=""+Ey+a.id+"_"+a.current_iteration),s})(0,n))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(n){Rt.error("Failed to persist survey seen state",n)}},Cq=[Rv.Popover,Rv.Widget,Rv.API],Tq={ignoreConditions:!1,ignoreDelay:!1,displayType:ky.Popover},Eq=tn("[PostHog ExternalIntegrations]"),Aq={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class Rq{constructor(e){this._instance=e}Mt(e,n){var r;(r=Ue.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,e,(a=>{if(a)return Eq.error("failed to load script",a);n()}))}startIfEnabledOrStop(){var e=this,n=function(l){var c,d,h;!a||(c=Ue.__PosthogExtensions__)!=null&&(c=c.integrations)!=null&&c[l]||e.Mt(Aq[l],(()=>{var p;(p=Ue.__PosthogExtensions__)==null||(p=p.integrations)==null||(p=p[l])==null||p.start(e._instance)})),!a&&(d=Ue.__PosthogExtensions__)!=null&&(d=d.integrations)!=null&&d[l]&&((h=Ue.__PosthogExtensions__)==null||(h=h.integrations)==null||(h=h[l])==null||h.stop())};for(var[r,a]of Object.entries((s=this._instance.config.integrations)!==null&&s!==void 0?s:{})){var s;n(r)}}}var Pu={},Mv=0,vf=()=>{},XP='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',Kc="Surveys module not available",QP="sanitize_properties is deprecated. Use before_send instead",i6="Invalid value for property_denylist config: ",dl="posthog",s6=!gq&&gr?.indexOf("MSIE")===-1&&gr?.indexOf("Mozilla")===-1,eS=t=>{var e;return me({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:DG(we?.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:vf,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:pn&&Lt(pn?.search)&&pn.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(J==null||(e=J.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(n){_e.error("Bad HTTP status: "+n.statusCode+" "+n.text)},get_device_id:n=>n,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:_y,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:Cy},error_tracking:{},_onCapture:vf},(n=>({rageclick:n&&n>="2026-05-30"?{content_ignorelist:WG,ignore_text_selection:!0}:!n||"2025-11-30">n||{content_ignorelist:!0},capture_pageview:!n||"2025-05-24">n||"history_change",session_recording:n&&n>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:n&&n>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:n&&n>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:n&&n>="2026-01-30"?"head":"body",internal_or_test_user_hostname:n&&n>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:n&&n>="2026-05-30"?250:0,split_storage:!(!n||"2026-05-30">n),detect_google_search_app:!(!n||"2026-05-30">n),disable_capture_url_hashes:!(!n||"2026-06-25">n)}))(t))},Lq=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],tS=t=>{var e={};for(var[n,r]of Lq)ye(t[n])||(e[r]=t[n]);var a=$t({},e,t),s=t.__preview_external_dependency_versioned_paths;return ye(s)||(ye(t.strict_script_versioning)&&(a.strict_script_versioning=!!s),Lt(s)&&ye(t.asset_host)&&(a.asset_host=s)),ct(t.property_blacklist)&&(ye(t.property_denylist)?a.property_denylist=t.property_blacklist:ct(t.property_denylist)?a.property_denylist=[...t.property_blacklist,...t.property_denylist]:_e.error(i6+t.property_denylist)),a};class Iq{constructor(){this.__forceAllowLocalhost=!1}get xi(){return this.__forceAllowLocalhost}set xi(e){_e.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class Vr{ki(e,n){if(e){var r=this.Si.indexOf(e);r!==-1&&this.Si.splice(r,1)}return this.Si.push(n),n.initialize==null||n.initialize(),n}Ci(){return this.config.cookieless_mode===wi||this.config.cookieless_mode===Ks&&this.consent.isRejected()}get decideEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Iq,this.Ii=!1,this.version=on.LIB_VERSION,this.Ti=new Cb,this.Si=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=eS(),this.SentryIntegration=eq,this.sentryIntegration=r=>(function(a,s){var l=NE(a,s);return{name:ME,processEvent:c=>l(c)}})(this,r),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.Ei=!1,this.Mi=null,this.Pi=null,this.Ri=null,this.scrollManager=new wq(this),this.pageViewManager=new jP(this),this.rateLimiter=new uq(this),this.requestRouter=new Sq(this),this.consent=new UG(this),this.externalIntegrations=new Rq(this);var n=(e=Vr.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=n.featureFlags&&new n.featureFlags(this),this.toolbar=n.toolbar&&new n.toolbar(this),this.surveys=n.surveys&&new n.surveys(this),this.conversations=n.conversations&&new n.conversations(this),this.logs=n.logs&&new n.logs(this),this.experiments=n.experiments&&new n.experiments(this),this.exceptions=n.exceptions&&new n.exceptions(this),this.people={set:(r,a,s)=>{var l=Lt(r)?{[r]:a}:r;this.setPersonProperties(l),s?.({})},set_once:(r,a,s)=>{var l=Lt(r)?{[r]:a}:r;this.setPersonProperties(void 0,l),s?.({})}},this.on("eventCaptured",(r=>_e.info('send "'+r?.event+'"',r)))}init(e,n,r){if(r&&r!==dl){var a,s=(a=Pu[r])!==null&&a!==void 0?a:new Vr;return s._init(e,n,r),Pu[r]=s,Pu[dl][r]=s,s}return this._init(e,n,r)}_init(e,n,r){var a,s;n===void 0&&(n={});var l=Lt(e)?e.trim():"";if(!l)return _e.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config={},n.debug=this.Oi(n.debug),this.Li=n,this.Fi=[],n.person_profiles?this.Pi=n.person_profiles:n.process_person&&(this.Pi=n.process_person);var c=eS(n.defaults),d=tS(n),h=$t({},c,d,{name:r,token:l});qt(c.rageclick)&&qt(d.rageclick)&&(h.rageclick=$t({},c.rageclick,d.rageclick)),qt(c.session_recording)&&qt(d.session_recording)&&(h.session_recording=$t({},c.session_recording,d.session_recording)),this.set_config(h),this.config.on_xhr_error&&_e.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=n.disable_compression?void 0:Br.GZipJS;var p=this.Ai();this.persistence=new Av(this.config,p),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new Av(me({},this.config,{persistence:"sessionStorage"}),p,!1);var m=me({},this.persistence.props),v=me({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.$i=new yq((E=>this.Di(E)),this.config.request_queue_config),this.Ni=new kq(this),this.__request_queue=[];var y=this.Ci();if(y||(this.sessionManager=new YP(this),this.sessionPropsManager=new KP(this,this.sessionManager,this.persistence)),this.config.__preview_deferred_init_extensions?(_e.info("Deferring extension initialization to improve startup performance"),setTimeout((()=>{this.qi(y)}),0)):(_e.info("Initializing extensions synchronously"),this.qi(y)),on.DEBUG=on.DEBUG||this.config.debug,on.DEBUG&&_e.info("Starting in debug mode",{this:this,config:n,thisC:me({},this.config),p:m,s:v}),!this.config.identity_distinct_id||(a=n.bootstrap)!=null&&a.distinctID||(n.bootstrap=me({},n.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((s=n.bootstrap)==null?void 0:s.distinctID)!==void 0){var b=n.bootstrap.distinctID,x=this.get_distinct_id(),P=this.persistence.get_property(ga);if(n.bootstrap.isIdentifiedID&&x!=null&&x!==b&&P===Qo)this.identify(b);else if(n.bootstrap.isIdentifiedID&&x!=null&&x!==b&&P===el)_e.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var A=this.config.get_device_id(ki()),L=n.bootstrap.isIdentifiedID?A:b;this.persistence.set_property(ga,n.bootstrap.isIdentifiedID?el:Qo),this.register({distinct_id:b,$device_id:L})}}if(y)this.register_once({distinct_id:Mh,$device_id:null},"");else if(!this.get_distinct_id()){var T=this.config.get_device_id(ki());this.register_once({distinct_id:T,$device_id:T},""),this.persistence.set_property(ga,Qo)}return Qt(J,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),n.segment?(function(E,D){var $=E.config.segment;if(!$)return D();(function(I,S){var j=I.config.segment;if(!j)return S();var F=ee=>{var ue=()=>ee.anonymousId()||ki();I.config.get_device_id=ue,ee.id()&&(I.register({distinct_id:ee.id(),$device_id:ue()}),I.persistence.set_property(ga,el)),S()},Z=j.user();"then"in Z&&_a(Z.then)?Z.then(F):F(Z)})(E,(()=>{$.register((I=>{typeof Promise<"u"&&Promise.resolve||Ev.warn("This browser does not have Promise support, and can not use the segment integration");var S=(j,F)=>{if(!F)return j;j.event.userId||j.event.anonymousId===I.get_distinct_id()||(Ev.info("No userId set, resetting PostHog"),I.reset()),j.event.userId&&j.event.userId!==I.get_distinct_id()&&(Ev.info("UserId set, identifying with PostHog"),I.identify(j.event.userId));var Z=I.calculateEventProperties(F,j.event.properties);return j.event.properties=Object.assign({},Z,j.event.properties),j};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:j=>S(j,j.event.event),page:j=>S(j,ul),identify:j=>S(j,Sv),screen:j=>S(j,"$screen")}})(E)).then((()=>{D()}))}))})(this,(()=>this.Bi())):this.Bi(),_a(this.config._onCapture)&&this.config._onCapture!==vf&&(_e.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",(E=>this.config._onCapture(E.event,E)))),this.config.ip&&_e.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||(function(){return t6.apply(this,arguments)})().then((E=>{E&&this.register({[xv]:E})})).catch(vf),this}qi(e){var n,r,a,s,l,c,d,h=performance.now(),p=me({},Vr.__defaultExtensionClasses,this.config.__extensionClasses),m=[];p.featureFlags&&this.Si.push(this.featureFlags=(n=this.featureFlags)!==null&&n!==void 0?n:new p.featureFlags(this)),p.exceptions&&this.Si.push(this.exceptions=(r=this.exceptions)!==null&&r!==void 0?r:new p.exceptions(this)),p.historyAutocapture&&this.Si.push(this.historyAutocapture=new p.historyAutocapture(this)),p.tracingHeaders&&this.Si.push(this.tracingHeaders=new p.tracingHeaders(this)),p.siteApps&&this.Si.push(this.siteApps=new p.siteApps(this)),p.sessionRecording&&!e&&this.Si.push(this.sessionRecording=new p.sessionRecording(this)),this.config.disable_scroll_properties||m.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),p.autocapture&&this.Si.push(this.autocapture=new p.autocapture(this)),p.surveys&&this.Si.push(this.surveys=(a=this.surveys)!==null&&a!==void 0?a:new p.surveys(this)),p.logs&&this.Si.push(this.logs=(s=this.logs)!==null&&s!==void 0?s:new p.logs(this)),p.conversations&&this.Si.push(this.conversations=(l=this.conversations)!==null&&l!==void 0?l:new p.conversations(this)),p.productTours&&this.Si.push(this.productTours=new p.productTours(this)),p.heatmaps&&this.Si.push(this.heatmaps=new p.heatmaps(this)),p.webVitalsAutocapture&&this.Si.push(this.webVitalsAutocapture=new p.webVitalsAutocapture(this)),p.exceptionObserver&&this.Si.push(this.exceptionObserver=new p.exceptionObserver(this)),p.deadClicksAutocapture&&this.Si.push(this.deadClicksAutocapture=new p.deadClicksAutocapture(this,QG)),p.toolbar&&this.Si.push(this.toolbar=(c=this.toolbar)!==null&&c!==void 0?c:new p.toolbar(this)),p.experiments&&this.Si.push(this.experiments=(d=this.experiments)!==null&&d!==void 0?d:new p.experiments(this)),this.Si.forEach((v=>{v.initialize&&m.push((()=>{v.initialize==null||v.initialize()}))})),m.push((()=>{if(this.ji){var v=this.ji;this.ji=void 0,this.pr(v)}})),this.Hi(m,h)}Hi(e,n){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-n>=30&&e.length>0)return void setTimeout((()=>{this.Hi(e,n)}),0);var r=e.shift();if(r)try{r()}catch(s){_e.error("Error initializing extension:",s)}}var a=Math.round(performance.now()-n);this.register_for_session({[_E]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[yE]:a}),this.config.__preview_deferred_init_extensions&&_e.info("PostHog extensions initialized ("+a+"ms)")}pr(e){var n;if(!we||!we.body)return _e.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((()=>{this.pr(e)}),500);this.config.__preview_deferred_init_extensions&&(this.ji=e),this.Ui=e,this.compression=void 0,e.supportedCompression&&!this.config.disable_compression&&(this.compression=Ke(e.supportedCompression,Br.GZipJS)?Br.GZipJS:Ke(e.supportedCompression,Br.Base64)?Br.Base64:void 0),(n=e.analytics)!=null&&n.endpoint&&(this.analyticsDefaultEndpoint=e.analytics.endpoint),this.set_config({person_profiles:this.Pi?this.Pi:_y}),this.Si.forEach((r=>r.onRemoteConfig==null?void 0:r.onRemoteConfig(e)))}Bi(){try{this.config.loaded(this)}catch(r){_e.critical("`loaded` function failed",r)}if(this.zi(),this.config.internal_or_test_user_hostname&&pn!=null&&pn.hostname){var e=pn.hostname,n=this.config.internal_or_test_user_hostname;(typeof n=="string"?e===n:n.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||this.Ci())&&this.Vi()}),1),this.Wi=new WE(this),this.Wi.load()}zi(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.$i)==null||e.enable())}_dom_loaded(){this.is_capturing()&&Nh(this.__request_queue,(e=>this.Di(e))),this.__request_queue=[],this.zi()}_handle_unload(){var e,n,r,a;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),this.config.request_batching?(this.Gi()&&this.capture(Pv),(n=this.logs)==null||n.flushLogs("sendBeacon"),(r=this.$i)==null||r.unload(),(a=this.Ni)==null||a.unload()):this.Gi()&&this.capture(Pv,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?s6?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=me({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(ye(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(n=>{var r,a,s,l=me({},n);l.timeout=l.timeout||6e4,l.url=qP(l.url,l.compression);var c=(r=l.transport)!==null&&r!==void 0?r:"fetch",d=pp.filter((p=>!l.disableTransport||!p.transport||!l.disableTransport.includes(p.transport))),h=(a=(s=(function(p,m){for(var v=0;p.length>v;v++)if(p[v].transport===c)return p[v]})(d))==null?void 0:s.method)!==null&&a!==void 0?a:d[0].method;if(!h)throw new Error("No available transport method");c!=="sendBeacon"&&l.data&&l.compression===Br.GZipJS&&jW&&typeof Promise<"u"&&!hp?vq(l).then((p=>{h(p)})).catch((p=>{if(_P(p))return hp=!0,void h(me({},l,{compression:void 0,url:qP(n.url,void 0)}));(m=>{if(!m||typeof m!="object")return!1;var v="name"in m?String(m.name):"";return _P(m)||v===D4})(p)&&(hp=!0),h(l)})):h(l)})(me({},e,{callback:n=>{var r,a;this.rateLimiter.checkForLimiting(n),400>n.statusCode||(r=(a=this.config).on_request_error)==null||r.call(a,n),e.callback==null||e.callback(n)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Di(e){this.Ni?this.Ni.retriableRequest(e):this._send_request(e)}_execute_array(e){Mv++;try{var n,r=[],a=[],s=[];Nh(e,(c=>{if(c)if(ct(n=c[0]))s.push(c);else if(_a(c))try{c.call(this)}catch(d){_e.error("Error executing queued PostHog call",c,d)}else ct(c)&&n==="alias"?r.push(c):ct(c)&&n.indexOf("capture")!==-1&&_a(this[n])?s.push(c):a.push(c)}));var l=function(c,d){Nh(c,(function(h){try{if(ct(h[0])){var p=d;Mt(h,(function(m){p=p[m[0]].apply(p,m.slice(1))}))}else d[h[0]].apply(d,h.slice(1))}catch(m){_e.error("Error executing queued PostHog call",h,m)}}))};l(r,this),l(a,this),l(s,this)}finally{Mv--}}push(e){if(Mv>0&&ct(e)&&Lt(e[0])){var n=Vr.prototype[e[0]];_a(n)&&n.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,n,r){var a,s,l,c,d;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.$i){if(this.is_capturing())if(!ye(e)&&Lt(e)){var h=!this.config.opt_out_useragent_filter&&this._is_bot();if(!h||this.config.__preview_capture_bot_pageviews){var p=r!=null&&r.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(p==null||!p.isRateLimited){n!=null&&n.$current_url&&!Lt(n?.$current_url)&&(_e.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),n==null||delete n.$current_url),e!=="$exception"||r!=null&&r.Zi||_e.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var m=new Date,v=r?.timestamp||m,y=xP(r?.uuid,ki),b={uuid:y,event:e,properties:this.calculateEventProperties(e,n||{},v,y)};e===ul&&this.config.__preview_capture_bot_pageviews&&h&&(b.event="$bot_pageview",b.properties.$browser_type="bot"),p&&(b.properties.$lib_rate_limit_remaining_tokens=p.remainingTokens),r?.$set&&(b.$set=r?.$set);var x=r?.$unset;x&&(b.$unset=x);var P,A,L,T=this.Qi(r?.$set_once,e!==CP,e===Sv);if(T&&(b.$set_once=T),r!=null&&r._noTruncate||(s=this.config.properties_string_max_length,l=b,c=F=>Lt(F)?F.slice(0,s):F,d=new Set,b=(function F(Z,ee){return Z!==Object(Z)?c?c(Z):Z:d.has(Z)?void 0:(d.add(Z),ct(Z)?(ue=[],Nh(Z,(re=>{ue.push(F(re))}))):(ue={},Mt(Z,((re,ae)=>{d.has(re)||(ue[ae]=F(re))}))),ue);var ue})(l)),b.timestamp=v,ye(r?.timestamp)||(b.properties.$event_time_override_provided=!0,b.properties.$event_time_override_system_time=m),e===xi.DISMISSED||e===xi.SENT){var E=n?.[Lv.SURVEY_ID],D=n?.[Lv.SURVEY_ITERATION];a6({id:E,current_iteration:D}),b.$set=me({},b.$set,{[(P={id:E,current_iteration:D},A=e===xi.SENT?"responded":"dismissed",L="$survey_"+A+"/"+P.id,P.current_iteration&&P.current_iteration>0&&(L="$survey_"+A+"/"+P.id+"/"+P.current_iteration),L)]:!0})}else e===xi.SHOWN&&(b.$set=me({},b.$set,{[Lv.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===cq.SHOWN){var $=n?.[FP.TOUR_TYPE];$&&(b.$set=me({},b.$set,{[FP.TOUR_LAST_SEEN_DATE+"/"+$]:new Date().toISOString()}))}var I=me({},b.properties.$set,b.$set);if(cs(I)||this.setPersonPropertiesForFlags(I),!nt(this.config.before_send)){var S=this.it(b);if(!S)return;(b=S).uuid=xP(b.uuid,ki)}this.Ti.emit("eventCaptured",b);var j={method:"POST",url:(a=r?._url)!==null&&a!==void 0?a:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),data:b,compression:"best-available",batchKey:r?._batchKey,transport:r?.transport};return!this.config.request_batching||r&&(r==null||!r._batchKey)||r!=null&&r.send_instantly?this.Di(j):this.$i.enqueue(j),b}_e.critical("This capture call is ignored due to client rate limiting.")}}else _e.error("No event name provided to posthog.capture")}else _e.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",(n=>e(n.event,n)))}calculateEventProperties(e,n,r,a,s){if(r=r||new Date,!this.persistence||!this.sessionPersistence)return n;var l=s?void 0:this.persistence.remove_event_timer(e),c=me({},n);if(c.token=this.config.token,c.$config_defaults=this.config.defaults,this.Ci()&&(c.$cookieless_mode=!0),e==="$snapshot"){var d=me({},this.persistence.properties(),this.sessionPersistence.properties());return c.distinct_id=d.distinct_id,(!Lt(c.distinct_id)&&!Fn(c.distinct_id)||K_(c.distinct_id))&&_e.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),c}var h,p=(function(A,L,T,E){var D,$,I,S;if(E===void 0&&(E=!1),!gr)return{};var j,F,Z,ee,ue,re,ae,te,le,H=A?[...jl,...L||[]]:[],[Q,W]=(function(ke){for(var de=0;kP.length>de;de++){var[be,je]=kP[de],$e=be.exec(ke),Le=$e&&(_a(je)?je($e,ke):je);if(Le)return Le}return["",""]})(gr),N=(j=typeof navigator<"u"?navigator:void 0)!=null&&j.brave?{brave:!0}:{},q={detectGoogleSearchApp:T},pe=$t(bb({$os:Q,$os_version:W,$browser:nE(gr,navigator.vendor,N,q),$device:wP(gr),$device_type:(Z=gr,ee={userAgentDataPlatform:(D=navigator)==null||(D=D.userAgentData)==null?void 0:D.platform,maxTouchPoints:($=navigator)==null?void 0:$.maxTouchPoints,screenWidth:J==null||(I=J.screen)==null?void 0:I.width,screenHeight:J==null||(S=J.screen)==null?void 0:S.height,devicePixelRatio:J?.devicePixelRatio},le=wP(Z),le===z4||le===j4||le==="Kobo"||le==="Kindle Fire"||le===J4?Dl:le===ju||le===xl||le===zu||le===Z_?"Console":le===U4?"Wearable":le?Rr:ee?.userAgentDataPlatform==="Android"&&((ue=ee?.maxTouchPoints)!==null&&ue!==void 0?ue:0)>0?600>Math.min((re=ee?.screenWidth)!==null&&re!==void 0?re:0,(ae=ee?.screenHeight)!==null&&ae!==void 0?ae:0)/((te=ee?.devicePixelRatio)!==null&&te!==void 0?te:1)?Rr:Dl:"Desktop"),$timezone:HE(),$timezone_offset:iq()}),{$current_url:Bu(E?ms(pn?.href):pn?.href,H,Vu),$host:pn?.host,$pathname:pn?.pathname,$raw_user_agent:gr.length>1e3?gr.substring(0,997)+"...":gr,$browser_version:nG(gr,navigator.vendor,N,q),$browser_language:zP(),$browser_language_prefix:(F=zP(),typeof F=="string"?F.split("-")[0]:void 0),$screen_height:J?.screen.height,$screen_width:J?.screen.width,$viewport_height:J?.innerHeight,$viewport_width:J?.innerWidth,$lib:on.LIB_NAME,$lib_version:on.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return on.SDK_DIST_CHANNEL&&(pe.$sdk_dist_channel=on.SDK_DIST_CHANNEL),pe})(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var{sessionId:m,windowId:v}=this.sessionManager.checkAndGetSessionAndWindowId(s,r.getTime());c.$session_id=m,c.$window_id=v}this.sessionPropsManager&&$t(c,this.sessionPropsManager.getSessionProps());try{var y;this.sessionRecording&&$t(c,this.sessionRecording.sdkDebugProperties),c.$sdk_debug_retry_queue_size=(y=this.Ni)==null?void 0:y.length}catch(A){c.$sdk_debug_error_capturing_properties=String(A)}if(this.requestRouter.region===Ty&&(c.$lib_custom_api_host=this.config.api_host),h=e!==ul||s?e!==Pv||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(r):this.pageViewManager.doPageView(r,a),c=$t(c,h),e===ul&&we&&(c.title=we.title),!ye(l)){var b=r.getTime()-l;c.$duration=parseFloat((b/1e3).toFixed(3))}gr&&this.config.opt_out_useragent_filter&&(c.$browser_type=this._is_bot()?"bot":"browser"),(c=$t({},p,this.persistence.properties(),this.sessionPersistence.properties(),c)).$is_identified=this._isIdentified(),ct(this.config.property_denylist)?Mt(this.config.property_denylist,(function(A){delete c[A]})):_e.error(i6+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var x=this.config.sanitize_properties;x&&(_e.error(QP),c=x(c,e));var P=this.Ji();return c.$process_person_profile=P,P&&!s&&this.Yi("_calculate_event_properties"),c}Qi(e,n,r){var a;if(n===void 0&&(n=!0),r===void 0&&(r=!1),!this.persistence||!this.Ji()||this.Ii&&!r)return e;var s=this.persistence.get_initial_props(),l=(a=this.sessionPropsManager)==null?void 0:a.getSetOnceProps(),c=$t({},s,l||{},e||{}),d=this.config.sanitize_properties;return d&&(_e.error(QP),c=d(c,"$set_once")),n&&(this.Ii=!0),cs(c)?void 0:c}register(e,n){var r;(r=this.persistence)==null||r.register(e,n)}register_once(e,n,r){var a;(a=this.persistence)==null||a.register_once(e,n,r)}register_for_session(e){var n;(n=this.sessionPersistence)==null||n.register(e)}unregister(e){var n;(n=this.persistence)==null||n.unregister(e)}unregister_for_session(e){var n;(n=this.sessionPersistence)==null||n.unregister(e)}Ki(e,n){this.register({[e]:n})}getFeatureFlag(e,n){var r;return(r=this.featureFlags)==null?void 0:r.getFeatureFlag(e,n)}getFeatureFlagPayload(e){var n;return(n=this.featureFlags)==null?void 0:n.getFeatureFlagPayload(e)}getFeatureFlagResult(e,n){var r;return(r=this.featureFlags)==null?void 0:r.getFeatureFlagResult(e,n)}getAllFeatureFlags(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,n){var r;return(r=this.featureFlags)==null?void 0:r.isFeatureEnabled(e,n)}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,n,r){var a;(a=this.featureFlags)==null||a.updateFlags(e,n,r)}updateEarlyAccessFeatureEnrollment(e,n,r){var a;(a=this.featureFlags)==null||a.updateEarlyAccessFeatureEnrollment(e,n,r)}getEarlyAccessFeatures(e,n,r){var a;return n===void 0&&(n=!1),(a=this.featureFlags)==null?void 0:a.getEarlyAccessFeatures(e,n,r)}on(e,n){return this.Ti.on(e,n)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:Kc}),()=>{})}onSessionId(e){var n,r;return(n=(r=this.sessionManager)==null?void 0:r.onSessionId(e))!==null&&n!==void 0?n:()=>{}}getSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getSurveys(e,n):e([],{isLoaded:!1,error:Kc})}getActiveMatchingSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,n):e([],{isLoaded:!1,error:Kc})}renderSurvey(e,n){var r;(r=this.surveys)==null||r.renderSurvey(e,n)}displaySurvey(e,n){var r;n===void 0&&(n=Tq),(r=this.surveys)==null||r.displaySurvey(e,n)}cancelPendingSurvey(e){var n;(n=this.surveys)==null||n.cancelPendingSurvey(e)}canRenderSurvey(e){var n,r;return(n=(r=this.surveys)==null?void 0:r.canRenderSurvey(e))!==null&&n!==void 0?n:{visible:!1,disabledReason:Kc}}canRenderSurveyAsync(e,n){var r,a;return n===void 0&&(n=!1),(r=(a=this.surveys)==null?void 0:a.canRenderSurveyAsync(e,n))!==null&&r!==void 0?r:Promise.resolve({visible:!1,disabledReason:Kc})}Xi(e){return!e||K_(e)?(_e.critical("Unique user id has not been set in posthog.identify"),!1):e===Mh?(_e.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(_e.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,n,r){if(!this.__loaded||!this.persistence)return _e.uninitializedWarning("posthog.identify");if(Fn(e)&&(e=e.toString(),_e.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Xi(e)&&this.Yi("posthog.identify")){var a=this.get_distinct_id();this.register({$user_id:e}),this.get_property(af)||this.register_once({$had_persisted_distinct_id:!0,$device_id:a},""),e!==a&&e!==this.get_property(au)&&(this.unregister(au),this.register({distinct_id:e}));var s,l=(this.persistence.get_property(ga)||Qo)===Qo;e!==a&&l?(this.persistence.set_property(ga,el),this.setPersonPropertiesForFlags({$set:n||{},$set_once:r||{}},!1),this.capture(Sv,{distinct_id:e,$anon_distinct_id:a},{$set:n||{},$set_once:r||{}}),this.Ri=ZP(e,n,r),(s=this.featureFlags)==null||s.setAnonymousDistinctId(a)):(n||r)&&this.setPersonProperties(n,r),e!==a&&(this.reloadFeatureFlags(),this.unregister(ku))}}setPersonProperties(e,n){if((e||n)&&this.Yi("posthog.setPersonProperties")){var r=ZP(this.get_distinct_id(),e,n);this.Ri!==r?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:n||{}},!0),this.capture("$set",{$set:e||{},$set_once:n||{}}),this.Ri=r):_e.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var n,r=(ct(e)?e:[e]).filter((a=>Lt(a)&&a.length>0));r.length!==0&&this.Yi("posthog.unsetPersonProperties")&&((n=this.featureFlags)==null||n.unsetPersonPropertiesForFlags(r,!0),this.capture("$set",{$unset:r}),this.Ri=null)}group(e,n,r){if(e&&n){var a=this.getGroups(),s=a[e]!==n;if(s&&this.resetGroupPropertiesForFlags(e),this.register({$groups:me({},a,{[e]:n})}),s||r){var l={$group_type:e,$group_key:n};r&&(l.$group_set=r),this.capture(CP,l)}r&&this.setGroupPropertiesForFlags({[e]:r}),s&&!r&&this.reloadFeatureFlags()}else _e.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,n){var r;n===void 0&&(n=!0),(r=this.featureFlags)==null||r.setPersonPropertiesForFlags(e,n)}resetPersonPropertiesForFlags(e){var n;e===void 0&&(e=!0),(n=this.featureFlags)==null||n.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,n){var r;n===void 0&&(n=!0),this.Yi("posthog.setGroupPropertiesForFlags")&&((r=this.featureFlags)==null||r.setGroupPropertiesForFlags(e,n))}resetGroupPropertiesForFlags(e){var n;(n=this.featureFlags)==null||n.resetGroupPropertiesForFlags(e)}reset(e){var n,r,a,s,l,c,d,h,p;if(_e.info("reset"),!this.__loaded)return _e.uninitializedWarning("posthog.reset");var m,v=this.get_property(af),y=this.get_property(xv),b=this.get_property(ro);if(this.consent.reset(),(n=this.persistence)==null||n.clear(),(r=this.sessionPersistence)==null||r.clear(),ye(b)||(m=this.persistence)==null||m.register({[ro]:b}),(a=this.surveys)==null||a.reset(),(s=this.Wi)==null||s.stop(),(l=this.featureFlags)==null||l.reset(),(c=this.conversations)==null||c.reset(),(d=this.logs)==null||d.reset(),(h=this.persistence)==null||h.set_property(ga,Qo),(p=this.sessionManager)==null||p.resetSessionId(),this.Ri=null,this.config.cookieless_mode===wi)this.register_once({distinct_id:Mh,$device_id:null},"");else{var x=this.config.get_device_id(ki());this.register_once({distinct_id:x,$device_id:e?x:v},""),e||ye(y)||this.register({[xv]:y})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var n=this;return _n((function*(){var r,a,s,l;n.__loaded?((r=n.logs)==null||r.flushLogs("sendBeacon"),(a=n.$i)==null||a.unload(),(s=n.Ni)==null||s.unload(),(l=n.featureFlags)==null||l.destroy()):_e.uninitializedWarning("posthog.shutdown")}))()}setIdentity(e,n){var r;this.config.identity_distinct_id=e,this.config.identity_hash=n,this.alias(e),(r=this.conversations)==null||r.en()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.tn()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,n;return(e=(n=this.sessionManager)==null?void 0:n.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var{sessionId:n,sessionStartTimestamp:r}=this.sessionManager.checkAndGetSessionAndWindowId(!0),a=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+n);if(e!=null&&e.withTimestamp&&r){var s,l=(s=e.timestampLookBack)!==null&&s!==void 0?s:10;if(!r)return a;a+="?t="+Math.max(Math.floor((new Date().getTime()-r)/1e3)-l,0)}return a}alias(e,n){return e===this.get_property(dE)?(_e.critical("Attempting to create alias for existing People user - aborting."),-2):this.Yi("posthog.alias")?(ye(n)&&(n=this.get_distinct_id()),e!==n?(this.Ki(au,e),this.capture("$create_alias",{alias:e,distinct_id:n})):(_e.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var n=me({},this.config);if(qt(e)){var r,a,s,l,c,d,h,p,m,v,y;$t(this.config,tS(e));var b=this.Ai();(r=this.persistence)==null||r.update_config(this.config,n,b),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new Av(me({},this.config,{persistence:"sessionStorage"}),b,!1);var x=this.Oi(this.config.debug);Ha(x)&&(this.config.debug=x),Ha(this.config.debug)&&(this.config.debug?(on.DEBUG=!0,Dt.N()&&Dt.q("ph_debug",!0),_e.info("set_config",{config:e,oldConfig:n,newConfig:me({},this.config)})):(on.DEBUG=!1,Dt.N()&&Dt.P("ph_debug"))),(a=this.exceptionObserver)==null||a.onConfigChange(),(s=this.exceptions)==null||s.onConfigChange(),(l=this.sessionRecording)==null||l.startIfEnabledOrStop(),(c=this.tracingHeaders)==null||c.startIfEnabledOrStop(),(d=this.autocapture)==null||d.startIfEnabled(),(h=this.heatmaps)==null||h.startIfEnabled(),(p=this.exceptionObserver)==null||p.startIfEnabledOrStop(),(m=this.deadClicksAutocapture)==null||m.startIfEnabledOrStop(),(v=this.surveys)==null||v.loadIfEnabled(),this.rn(),(y=this.externalIntegrations)==null||y.startIfEnabledOrStop()}}_overrideSDKInfo(e,n){on.LIB_NAME=e,on.LIB_VERSION=n}startSessionRecording(e){var n,r,a,s,l,c=e===!0,d={sampling:c||!(e==null||!e.sampling),linked_flag:c||!(e==null||!e.linked_flag),url_trigger:c||!(e==null||!e.url_trigger),event_trigger:c||!(e==null||!e.event_trigger)};Object.values(d).some(Boolean)&&((n=this.sessionManager)==null||n.checkAndGetSessionAndWindowId(),d.sampling&&((r=this.sessionRecording)==null||r.overrideSampling()),d.linked_flag&&((a=this.sessionRecording)==null||a.overrideLinkedFlag()),d.url_trigger&&((s=this.sessionRecording)==null||s.overrideTrigger("url")),d.event_trigger&&((l=this.sessionRecording)==null||l.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,n){if(this.exceptions){var r=new Error("PostHog syntheticException"),a=this.exceptions.buildProperties(e,{handled:!0,syntheticException:r});return this.exceptions.sendExceptionEvent(me({},a,n))}}addExceptionStep(e,n){var r;(r=this.exceptions)==null||r.addExceptionStep(e,n)}captureLog(e){var n;(n=this.logs)==null||n.captureLog(e)}get logger(){var e,n;return(e=(n=this.logs)==null?void 0:n.logger)!==null&&e!==void 0?e:Vr.nn}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var n,r;return(n=(r=this.toolbar)==null?void 0:r.loadToolbar(e))!==null&&n!==void 0&&n}get_property(e){var n;return(n=this.persistence)==null?void 0:n.props[e]}getSessionProperty(e){var n;return(n=this.sessionPersistence)==null?void 0:n.props[e]}toString(){var e,n=(e=this.config.name)!==null&&e!==void 0?e:dl;return n!==dl&&(n=dl+"."+n),n}_isIdentified(){var e,n;return((e=this.persistence)==null?void 0:e.get_property(ga))===el||((n=this.sessionPersistence)==null?void 0:n.get_property(ga))===el}Ji(){var e,n;return!(this.config.person_profiles==="never"||this.config.person_profiles===_y&&!this._isIdentified()&&cs(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[au])&&((n=this.persistence)==null||(n=n.props)==null||!n[lf]))}Gi(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Ji()||this.Yi("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Yi("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Yi(e){return this.config.person_profiles==="never"?(_e.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Ki(lf,!0),!0)}Ai(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==Ks)}rn(){var e,n,r,a,s=this.Ai();return((e=this.persistence)==null?void 0:e.Vt)!==s&&((r=this.persistence)==null||r.set_disabled(s)),((n=this.sessionPersistence)==null?void 0:n.Vt)!==s&&((a=this.sessionPersistence)==null||a.set_disabled(s)),s}opt_in_capturing(e){var n;if(this.config.cookieless_mode!==wi){if(this.Ci()){var r,a,s,l,c;this.reset(!0),(r=this.sessionManager)==null||r.destroy(),(a=this.pageViewManager)==null||a.destroy(),this.sessionManager=new YP(this),this.pageViewManager=new jP(this),this.persistence&&(this.sessionPropsManager=new KP(this,this.sessionManager,this.persistence));var d,h=(s=(l=this.config.__extensionClasses)==null?void 0:l.sessionRecording)!==null&&s!==void 0?s:(c=Vr.__defaultExtensionClasses)==null?void 0:c.sessionRecording;h&&(this.sessionRecording=this.ki(this.sessionRecording,new h(this)),this.Ui&&((d=this.sessionRecording)==null||d.onRemoteConfig==null||d.onRemoteConfig(this.Ui)))}var p,m;this.consent.optInOut(!0),this.rn(),this.zi(),(n=this.sessionRecording)==null||n.startIfEnabledOrStop(),this.config.cookieless_mode==Ks&&((p=this.surveys)==null||p.loadIfEnabled()),(ye(e?.captureEventName)||e!=null&&e.captureEventName)&&this.capture((m=e?.captureEventName)!==null&&m!==void 0?m:"$opt_in",e?.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Vi()}else _e.warn(XP)}opt_out_capturing(){var e,n,r;this.config.cookieless_mode!==wi?(this.config.cookieless_mode===Ks&&this.consent.isOptedIn()&&this.reset(!0),this.consent.optInOut(!1),this.rn(),this.config.cookieless_mode===Ks&&(this.register({distinct_id:Mh,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(n=this.sessionManager)==null||n.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Vi(),this.zi())):_e.warn(XP)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===wi||(this.config.cookieless_mode===Ks?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.rn()}_is_bot(){return ar?e6(ar,this.config.custom_blocked_useragents):void 0}Vi(){we&&(we.visibilityState==="visible"?this.Ei||(this.Ei=!0,this.capture(ul,{title:we.title},{send_instantly:!0}),this.Mi&&(we.removeEventListener(cf,this.Mi),this.Mi=null)):this.Mi||(this.Mi=this.Vi.bind(this),Qt(we,cf,this.Mi)))}debug(e){e===!1?(J?.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(J?.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}mr(){var e,n,r,a,s,l,c=this.Li||{};return"advanced_disable_flags"in c?!!c.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(_e.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(r="advanced_disable_decide",a=_e,s=(n="advanced_disable_flags")in(e=c)&&!nt(e[n]),l=r in e&&!nt(e[r]),s?e[n]:!!l&&(a&&a.warn("Config field '"+r+"' is deprecated. Please use '"+n+"' instead. The old field will be removed in a future major version."),e[r]))}it(e){var n;if(nt(this.config.before_send))return e;var r=Object.keys((n=e.properties)!==null&&n!==void 0?n:{}).filter(HW),a=ct(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var l of a){if(s=l(s),nt(s)){var c="Event '"+e.event+"' was rejected in beforeSend function";return VW(e.event)?_e.warn(c+". This can cause unexpected behavior."):_e.info(c),null}s.properties&&!cs(s.properties)||_e.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var d of r)if(s.properties&&nt(s.properties[d]))return _e.warn("Event '"+e.event+"' had its '"+d+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return s}getPageViewId(){var e;return(e=this.pageViewManager.Ot)==null?void 0:e.pageViewId}captureTraceFeedback(e,n){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:n})}captureTraceMetric(e,n,r){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:n,$ai_metric_value:String(r)})}Oi(e){var n=Ha(e)&&!e,r=Dt.N()&&Dt.A("ph_debug")==="true";return!n&&(!!r||e)}}Vr.__defaultExtensionClasses={},Vr.nn=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),(function(t,e){for(var n=0;e.length>n;n++)t.prototype[e[n]]=LG(t.prototype[e[n]])})(Vr,["identify"]);class nS{constructor(e){this.disabled=e===!1;var n=qt(e)?e:{};this.thresholdPx=n.threshold_px||30,this.timeoutMs=n.timeout_ms||1e3,this.clickCount=n.click_count||3,this.clicks=[]}isRageClick(e,n,r){if(this.disabled)return!1;var a=this.clicks[this.clicks.length-1];if(a&&Math.abs(e-a.x)+Math.abs(n-a.y)<this.thresholdPx&&this.timeoutMs>r-a.timestamp){if(this.clicks.push({x:e,y:n,timestamp:r}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:n,timestamp:r}];return!1}}var Nv="$copy_autocapture",Ov=tn("[AutoCapture]");function jv(t,e){return e.length>t?e.slice(0,t)+"...":e}function Dq(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!gs(e));return e}function Mq(t,e){var n,r,{e:a,maskAllElementAttributes:s,maskAllText:l,elementAttributeIgnoreList:c,elementsChainAsString:d,disableCaptureUrlHashes:h}=e;if(!gs(t))return{props:{}};for(var p=[t],m=t;m.parentNode&&!Er(m,"body");)if(SE(m.parentNode))p.push(m.parentNode.host),m=m.parentNode.host;else{if(!gs(m.parentNode))break;p.push(m.parentNode),m=m.parentNode}var v,y,b=[],x={},P=!1,A=!1;if(Mt(p,($=>{var I=by($);if(Er($,"a")){var S=$.getAttribute("href");P=!!(I&&S&&wu(S))&&(h?ms(S):S)}Ke(hf($),"ph-no-capture")&&(A=!0),b.push((function(F,Z,ee,ue,re){re===void 0&&(re=!1);var ae=F.tagName.toLowerCase(),te={tag_name:ae};wb.indexOf(ae)>-1&&!ee&&(te.$el_text=ae.toLowerCase()==="a"||ae.toLowerCase()==="button"?jv(1024,MP(F)):jv(1024,Uu(F)));var le=hf(F);le.length>0&&(te.classes=le.filter((function(N){return N!==""}))),Mt(F.attributes,(function(N){var q;if((!RE(F)||["name","id","class","aria-label"].indexOf(N.name)!==-1)&&(ue==null||!ue.includes(N.name))&&!Z&&wu(N.value)&&(!Lt(q=N.name)||q.substring(0,10)!=="_ngcontent"&&q.substring(0,7)!=="_nghost")){var pe=N.value;N.name==="class"&&(pe=kb(pe).join(" ")),te["attr__"+N.name]=jv(1024,N.name==="href"&&re?ms(pe):pe)}}));for(var H=1,Q=1,W=F;W=Dq(W);)H++,W.tagName===F.tagName&&Q++;return te.nth_child=H,te.nth_of_type=Q,te})($,s,l,c,h));var j=(function(F){if(!by(F))return{};var Z={};return Mt(F.attributes,(function(ee){if(ee.name&&ee.name.indexOf("data-ph-capture-attribute")===0){var ue=ee.name.replace("data-ph-capture-attribute-",""),re=ee.value;ue&&re&&wu(re)&&(Z[ue]=re)}})),Z})($);$t(x,j)})),A)return{props:{},explicitNoCapture:A};if(l||(b[0].$el_text=Er(t,"a")||Er(t,"button")?MP(t):Uu(t)),P){var L,T;b[0].attr__href=P;var E=(L=$u(P))==null?void 0:L.host,D=J==null||(T=J.location)==null?void 0:T.host;E&&D&&E!==D&&(v=P)}return{props:$t({$event_type:a.type,$ce_version:1},d?{}:{$elements:b},{$elements_chain:(y=b,(function($){return $.map((I=>{var S,j,F="";if(I.tag_name&&(F+=I.tag_name),I.attr_class)for(var Z of(I.attr_class.sort(),I.attr_class))F+="."+Z.replace(/"/g,"");var ee=me({},I.text?{text:I.text}:{},{"nth-child":(S=I.nth_child)!==null&&S!==void 0?S:0,"nth-of-type":(j=I.nth_of_type)!==null&&j!==void 0?j:0},I.href?{href:I.href}:{},I.attr_id?{attr_id:I.attr_id}:{},I.attributes),ue={};return dp(ee).sort(((re,ae)=>{var[te]=re,[le]=ae;return te.localeCompare(le)})).forEach((re=>{var[ae,te]=re;return ue[NP(ae.toString())]=NP(te.toString())})),(F+=":")+dp(ue).map((re=>{var[ae,te]=re;return ae+'="'+te+'"'})).join("")})).join(";")})((function($){return $.map((I=>{var S,j,F={text:(S=I.$el_text)==null?void 0:S.slice(0,400),tag_name:I.tag_name,href:(j=I.attr__href)==null?void 0:j.slice(0,2048),attr_class:JG(I),attr_id:I.attr__id,nth_child:I.nth_child,nth_of_type:I.nth_of_type,attributes:{}};return dp(I).filter((Z=>{var[ee]=Z;return ee.indexOf("attr__")===0})).forEach((Z=>{var[ee,ue]=Z;return F.attributes[ee]=ue})),F}))})(y)))},(n=b[0])!=null&&n.$el_text?{$el_text:(r=b[0])==null?void 0:r.$el_text}:{},v&&a.type==="click"?{$external_click_url:v}:{},x)}}var Yc=tn("[ExceptionAutocapture]"),rS=()=>{},Nq=tn("[TracingHeaders]"),$s=tn("[Web Vitals]"),aS=9e5,iS="disabled",sS="lazy_loading",Zc="awaiting_config",$h="missing_config";tn("[SessionRecording]"),tn("[SessionRecording]");var Ay="[SessionRecording]",fi=tn(Ay),Oq=tn("[Heatmaps]");function oS(t){return qt(t)&&"clientX"in t&&"clientY"in t&&Fn(t.clientX)&&Fn(t.clientY)}var zv=tn("[Product Tours]"),Fv=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(_b))},jq=["$set_once","$set"],Ma=tn("[SiteApps]"),lS="Error while initializing PostHog app with config id ";function rl(t,e,n){if(nt(t))return!1;switch(n){case"exact":return t===e;case"contains":var r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(r,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class zq{constructor(e){this.sn=new Cb,this.an=(n,r)=>this.ln(n,r)&&this.un(n,r)&&this.hn(n,r)&&this.dn(n,r),this.ln=(n,r)=>r==null||!r.event||n?.event===r?.event,this._instance=e,this.cn=new Set,this.vn=new Set}init(){var e,n;ye((e=this._instance)==null?void 0:e._addCaptureHook)||(n=this._instance)==null||n._addCaptureHook(((r,a)=>{this.on(r,a)}))}register(e){var n,r;if(!ye((n=this._instance)==null?void 0:n._addCaptureHook)&&(e.forEach((l=>{var c,d;(c=this.vn)==null||c.add(l),(d=l.steps)==null||d.forEach((h=>{var p;(p=this.cn)==null||p.add(h?.event||"")}))})),(r=this._instance)!=null&&r.autocapture)){var a,s=new Set;e.forEach((l=>{var c;(c=l.steps)==null||c.forEach((d=>{d!=null&&d.selector&&s.add(d?.selector)}))})),(a=this._instance)==null||a.autocapture.setElementSelectors(s)}}on(e,n){var r;n!=null&&e.length!=0&&(this.cn.has(e)||this.cn.has(n?.event))&&this.vn&&((r=this.vn)==null?void 0:r.size)>0&&this.vn.forEach((a=>{this.fn(n,a)&&this.sn.emit("actionCaptured",a.name)}))}pn(e){this.onAction("actionCaptured",(n=>e(n)))}fn(e,n){if(n?.steps==null)return!1;for(var r of n.steps)if(this.an(e,r))return!0;return!1}onAction(e,n){return this.sn.on(e,n)}un(e,n){if(n!=null&&n.url){var r,a=e==null||(r=e.properties)==null?void 0:r.$current_url;if(!a||typeof a!="string"||!rl(a,n.url,n.url_matching||"contains"))return!1}return!0}hn(e,n){return!!this.gn(e,n)&&!!this.mn(e,n)&&!!this.yn(e,n)}gn(e,n){var r;if(n==null||!n.href)return!0;var a=this.bn(e);if(a.length>0)return a.some((c=>rl(c.href,n.href,n.href_matching||"exact")));var s,l=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";return!!l&&rl((s=l.match(/(?::|")href="(.*?)"/))?s[1]:"",n.href,n.href_matching||"exact")}mn(e,n){var r;if(n==null||!n.text)return!0;var a=this.bn(e);if(a.length>0)return a.some((h=>rl(h.text,n.text,n.text_matching||"exact")||rl(h.$el_text,n.text,n.text_matching||"exact")));var s,l,c,d=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";return!!d&&(s=(function(h){for(var p,m=[],v=/(?::|")text="(.*?)"/g;!nt(p=v.exec(h));)m.includes(p[1])||m.push(p[1]);return m})(d),l=n.text,c=n.text_matching||"exact",s.some((h=>rl(h,l,c))))}yn(e,n){var r,a;if(n==null||!n.selector)return!0;var s=e==null||(r=e.properties)==null?void 0:r.$element_selectors;if(s!=null&&s.includes(n.selector))return!0;var l=(e==null||(a=e.properties)==null?void 0:a.$elements_chain)||"";if(n.selector_regex&&l)try{return new RegExp(n.selector_regex).test(l)}catch{return!1}return!1}bn(e){var n;return(e==null||(n=e.properties)==null?void 0:n.$elements)==null?[]:e?.properties.$elements}dn(e,n){return n==null||!n.properties||n.properties.length===0||r6(n.properties.reduce(((r,a)=>{var s=ct(a.value)?a.value.map(String):a.value!=null?[String(a.value)]:[];return r[a.key]={values:s,operator:a.operator||"exact"},r}),{}),e?.properties)}}class Fq{constructor(e){this._n=[],this._instance=e,this.wn=new Map,this.xn=new Map,this.kn=new Map}Sn(e,n){return!!e&&r6(e.propertyFilters,n?.properties)}Cn(e,n){var r=new Map;return e.forEach((a=>{var s;(s=a.conditions)==null||(s=s[n])==null||(s=s.values)==null||s.forEach((l=>{if(l!=null&&l.name){var c=r.get(l.name)||[];c.push(a.id),r.set(l.name,c)}}))})),r}In(e,n,r){var a=(r===Vc.Activation?this.wn:this.xn).get(e),s=[];return this.Tn((l=>{s=l.filter((c=>a?.includes(c.id)))})),s.filter((l=>{var c,d=(c=l.conditions)==null||(c=c[r])==null||(c=c.values)==null?void 0:c.find((h=>h.name===e));return this.Sn(d,n)}))}register(e){var n;ye((n=this._instance)==null?void 0:n._addCaptureHook)||(this.En(e),this.Mn(e))}Mn(e){var n=e.filter((r=>{var a,s;return((a=r.conditions)==null?void 0:a.actions)&&((s=r.conditions)==null||(s=s.actions)==null||(s=s.values)==null?void 0:s.length)>0}));n.length!==0&&(this.Pn==null&&(this.Pn=new zq(this._instance),this.Pn.init(),this.Pn.pn((r=>{this.onAction(r)}))),n.forEach((r=>{var a,s,l,c,d;r.conditions&&(a=r.conditions)!=null&&a.actions&&(s=r.conditions)!=null&&(s=s.actions)!=null&&s.values&&((l=r.conditions)==null||(l=l.actions)==null||(l=l.values)==null?void 0:l.length)>0&&((c=this.Pn)==null||c.register(r.conditions.actions.values),(d=r.conditions)==null||(d=d.actions)==null||(d=d.values)==null||d.forEach((h=>{if(h&&h.name){var p=this.kn.get(h.name);p&&p.push(r.id),this.kn.set(h.name,p||[r.id])}})))})))}En(e){var n,r=e.filter((s=>{var l,c;return((l=s.conditions)==null?void 0:l.events)&&((c=s.conditions)==null||(c=c.events)==null||(c=c.values)==null?void 0:c.length)>0})),a=e.filter((s=>{var l,c;return((l=s.conditions)==null?void 0:l.cancelEvents)&&((c=s.conditions)==null||(c=c.cancelEvents)==null||(c=c.values)==null?void 0:c.length)>0}));r.length===0&&a.length===0||((n=this._instance)==null||n._addCaptureHook(((s,l)=>{this.onEvent(s,l)})),this.wn=this.Cn(e,Vc.Activation),this.xn=this.Cn(e,Vc.Cancellation))}onEvent(e,n){var r,a,s=this.Rn(),l=(n==null||(r=n.properties)==null?void 0:r.$survey_id)||(n==null||(a=n.properties)==null?void 0:a.$product_tour_id);if(l&&this.getActivatedIds().includes(l)){var c=this.On(e,l);if(c==="consume")return s.info("event consumed activated item, removing it",{event:e,itemId:l}),void this.Ln([l]);if(c==="persist")return s.info("shown item promoted to persisted activation",{event:e,itemId:l}),void this.Fn(l)}if(this.xn.has(e)){var d=this.In(e,n,Vc.Cancellation);d.length>0&&(s.info("cancel event matched, cancelling items",{event:e,itemsToCancel:d.map((p=>p.id))}),this.Ln(d.map((p=>p.id))),d.forEach((p=>this.An(p.id))))}if(this.wn.has(e)){s.info("event name matched",{event:e,eventPayload:n,items:this.wn.get(e)});var h=this.In(e,n,Vc.Activation);this.$n(h.map((p=>p.id)))}}onAction(e){this.kn.has(e)&&this.$n(this.kn.get(e)||[])}$n(e){e.length!==0&&(this._n=[...new Set([...this._n,...e])],this.Rn().info("updating activated items",{activatedItems:this.getActivatedIds()}))}Fn(e){this._n=this._n.filter((r=>r!==e));var n=this.Dn();n.includes(e)||this.Nn([...n,e])}Ln(e){var n=new Set(e);this._n=this._n.filter((s=>!n.has(s)));var r=this.Dn(),a=r.filter((s=>!n.has(s)));a.length!==r.length&&this.Nn(a)}Dn(){var e,n=this.qn();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n])||[]}getActivatedIds(){return[...new Set([...this.Dn(),...this._n])].filter((e=>!this.Bn(e)))}reset(){this._n=[],this.Dn().length>0&&this.Nn([])}getEventToItemsMap(){return this.wn}jn(){return this.Pn}}class Uq extends Fq{constructor(e){super(e)}qn(){return uy}Hn(){return xi.SHOWN}Tn(e){var n;(n=this._instance)==null||n.getSurveys(e)}An(e){var n;(n=this._instance)==null||n.cancelPendingSurvey(e)}Rn(){return Rt}Nn(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[uy]:e})}Bn(){return!1}On(e,n){var r;this.Tn((s=>{r=s.find((l=>l.id===n))}));var a=!r||(function(s){var l,c,d,h=((l=(c=s.conditions)==null||(c=c.events)==null||(c=c.values)==null?void 0:c.length)!==null&&l!==void 0?l:0)>0;return s.schedule===lq.Always||!((d=s.conditions)==null||(d=d.events)==null||!d.repeatedActivation||!h)})(r);return a?e===xi.SHOWN?"consume":"ignore":e===xi.SHOWN?"persist":e===xi.DISMISSED||e===xi.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var Uv="SDK is not enabled or survey functionality is not yet loaded",cS="Disabled. Not loading surveys.",$q=J!=null&&J.location?pf(J.location.hash,"__posthog")||pf(location.hash,"state"):null,uS="_postHogToolbarParams",dS=tn("[Toolbar]"),mn=tn("[FeatureFlags]"),Bs=tn("[FeatureFlags]",{debugEnabled:!0}),$v=`" failed. Feature flags didn't load in time.`,hS=t=>{for(var e={},n=0;t.length>n;n++)e[t[n]]=!0;return e},pS=t=>{var e={};for(var[n,r]of dp(t||{}))r&&(e[n]=r);return e},mi=tn("[Error tracking]"),fS="Refusing to render web experiment since the viewer is a likely bot",Bq={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>gf(e,t),not_regex:(t,e)=>!gf(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class Yn{get Se(){return this._instance.config}constructor(e){var n=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(r){r===void 0&&(r=!1),n.getWebExperiments((a=>{Yn.Un("retrieved web experiments from the server"),n.zn=new Map,a.forEach((s=>{if(s.feature_flag_key){var l;n.zn&&(Yn.Un("setting flag key ",s.feature_flag_key," to web experiment ",s),(l=n.zn)==null||l.set(s.feature_flag_key,s));var c=n._instance.getFeatureFlag(s.feature_flag_key);Lt(c)&&s.variants[c]&&n.Vn(s.name,c,s.variants[c].transforms)}else if(s.variants)for(var d in s.variants){var h=s.variants[d];Yn.Wn(h,n._instance)&&n.Vn(s.name,d,h.transforms)}}))}),r)},this._instance=e,this._instance.onFeatureFlags((r=>{this.onFeatureFlags(r)}))}initialize(){}onFeatureFlags(e){if(this._is_bot())Yn.Un(fS);else if(!this.Se.disable_web_experiments){if(nt(this.zn))return this.zn=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Yn.Un("applying feature flags",e),e.forEach((n=>{var r;if(this.zn&&(r=this.zn)!=null&&r.has(n)){var a,s=this._instance.getFeatureFlag(n),l=(a=this.zn)==null?void 0:a.get(n);s&&l!=null&&l.variants[s]&&this.Vn(l.name,s,l.variants[s].transforms)}}))}}previewWebExperiment(){var e=Yn.getWindowLocation();if(e!=null&&e.search){var n=Ol(e?.search,"__experiment_id"),r=Ol(e?.search,"__experiment_variant");n&&r&&(Yn.Un("previewing web experiments "+n+" && "+r),this.getWebExperiments((a=>{this.Gn(parseInt(n),r,a)}),!1,!0))}}loadIfEnabled(){this.Se.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,n,r){if(this.Se.disable_web_experiments&&!r)return e([]);var a=this._instance.get_property("$web_experiments");if(a&&!n)return e(a);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Se.token),method:"GET",callback:s=>e(s.statusCode===200&&s.json&&s.json.experiments||[])})}Gn(e,n,r){var a=r.filter((s=>s.id===e));a&&a.length>0&&(Yn.Un("Previewing web experiment ["+a[0].name+"] with variant ["+n+"]"),this.Vn(a[0].name,n,a[0].variants[n].transforms))}static Wn(e,n){return!nt(e.conditions)&&Yn.Zn(e,n)&&Yn.Qn(e)}static Zn(e,n){var r;if(nt(e.conditions)||nt((r=e.conditions)==null?void 0:r.url))return!0;var a=Yn.getWindowLocation();if(a){var s,l,c,d=xE(n,a.href);return(s=e.conditions)==null||!s.url||Bq[(l=(c=e.conditions)==null?void 0:c.urlMatchType)!==null&&l!==void 0?l:"icontains"](e.conditions.url,d)}return!1}static getWindowLocation(){return J?.location}static Qn(e){var n;if(nt(e.conditions)||nt((n=e.conditions)==null?void 0:n.utm))return!0;var r=zE();if(r.utm_source){var a,s,l,c,d,h,p,m,v=(a=e.conditions)==null||(a=a.utm)==null||!a.utm_campaign||((s=e.conditions)==null||(s=s.utm)==null?void 0:s.utm_campaign)==r.utm_campaign,y=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_source||((c=e.conditions)==null||(c=c.utm)==null?void 0:c.utm_source)==r.utm_source,b=(d=e.conditions)==null||(d=d.utm)==null||!d.utm_medium||((h=e.conditions)==null||(h=h.utm)==null?void 0:h.utm_medium)==r.utm_medium,x=(p=e.conditions)==null||(p=p.utm)==null||!p.utm_term||((m=e.conditions)==null||(m=m.utm)==null?void 0:m.utm_term)==r.utm_term;return v&&b&&x&&y}return!1}static Un(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;n>a;a++)r[a-1]=arguments[a];_e.info("[WebExperiments] "+e,r)}Vn(e,n,r){this._is_bot()?Yn.Un(fS):n!=="control"?r.forEach((a=>{if(a.selector){var s;Yn.Un("applying transform of variant "+n+" for experiment "+e+" ",a);var l=(s=document)==null?void 0:s.querySelectorAll(a.selector);l?.forEach((c=>{var d=c;a.html&&(d.innerHTML=a.html),a.css&&d.setAttribute("style",a.css)}))}})):Yn.Un("Control variants leave the page unmodified.")}_is_bot(){return ar&&this._instance?e6(ar,this.Se.custom_blocked_useragents):void 0}}var zr=tn("[Conversations]"),Vs="Conversations not available yet.",mS="console",Vf={featureFlags:class{constructor(t){this.Jn=!1,this.Yn=!1,this.Kn=!1,this.Xn=!1,this.es=!1,this.ts=!1,this.rs=!1,this.ns=!1,this.ss=0,this.os=()=>{var e=this.ls();this.ss=0,e&&this.reloadFeatureFlags()},this._instance=t,this.featureFlagEventHandlers=[],J&&Qt(J,"online",this.os)}destroy(){J?.removeEventListener("online",this.os)}get Se(){return this._instance.config}get zr(){return this._instance.persistence}us(t){return this._instance.get_property(t)}hs(){var t,e;return(t=(e=this.zr)==null?void 0:e.Gt(this.Se.feature_flag_cache_ttl_ms))!==null&&t!==void 0&&t}ds(){return!!this.hs()&&(this.ns||this.Kn||(this.ns=!0,mn.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}cs(){var t,e=(t=this.Se.evaluation_contexts)!==null&&t!==void 0?t:this.Se.evaluation_environments;return!this.Se.evaluation_environments||this.Se.evaluation_contexts||this.rs||(mn.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.rs=!0),e!=null&&e.length?e.filter((n=>{var r=n&&typeof n=="string"&&n.trim().length>0;return r||mn.error("Invalid evaluation context found:",n,"Expected non-empty string"),r})):[]}vs(){return this.cs().length>0}fs(){var t=this.Se.flag_keys;if(!ye(t)){if(ct(t))return t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||mn.error("Invalid flag key found:",e,"Expected non-empty string"),n}));mn.error("Invalid flag_keys found:",t,"Expected array of non-empty strings")}}initialize(){var t,e,{config:n}=this._instance,r=(t=(e=n.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(r).length){var a,s,l=(a=(s=n.bootstrap)==null?void 0:s.featureFlagPayloads)!==null&&a!==void 0?a:{},c=Object.keys(r).filter((h=>!!r[h])).reduce(((h,p)=>(h[p]=r[p]||!1,h)),{}),d=Object.keys(l).filter((h=>c[h])).reduce(((h,p)=>(l[p]&&(h[p]=l[p]),h)),{});this.receivedFeatureFlags({featureFlags:c,featureFlagPayloads:d})}}updateFlags(t,e,n){var r,a,s=n!=null&&n.merge&&(r=this.us(Ys))!==null&&r!==void 0?r:{},l=n!=null&&n.merge&&(a=this.us(up))!==null&&a!==void 0?a:{},c=me({},s,t),d=me({},l,e),h={};for(var[p,m]of Object.entries(c))h[p]={key:p,enabled:fP(m),variant:mP(m),reason:void 0,metadata:ye(d?.[p])?void 0:{id:0,version:void 0,description:void 0,payload:d[p]}};this.receivedFeatureFlags({flags:h})}get hasLoadedFlags(){return this.Yn}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.us(oy),e=this.us(yi),n=this.us(cl);if(!n&&!e)return t||{};var r=$t({},t||{}),a=[...new Set([...Object.keys(n||{}),...Object.keys(e||{})])];for(var s of a){var l,c,d=r[s],h=e?.[s],p=ye(h)?(l=d?.enabled)!==null&&l!==void 0&&l:!!h,m=ye(h)?d.variant:typeof h=="string"?h:void 0,v=n?.[s],y=me({},d,{enabled:p,variant:p?m??d?.variant:void 0});p!==d?.enabled&&(y.original_enabled=d?.enabled),m!==d?.variant&&(y.original_variant=d?.variant),v&&(y.metadata=me({},d?.metadata,{payload:v,original_payload:d==null||(c=d.metadata)==null?void 0:c.payload})),r[s]=y}return this.Jn||(mn.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:n,finalDetails:r}),this.Jn=!0),r}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map((n=>{var r=t[n];return{key:n,enabled:fP(r),variant:mP(r),payload:pP(e[n])}}))}getFlagVariants(){var t=this.us(Ys),e=this.us(yi);if(!e)return t||{};for(var n=$t({},t),r=Object.keys(e),a=0;r.length>a;a++)n[r[a]]=e[r[a]];return this.Jn||(mn.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:n}),this.Jn=!0),n}getFlagPayloads(){var t=this.us(up),e=this.us(cl);if(!e)return t||{};for(var n=$t({},t||{}),r=Object.keys(e),a=0;r.length>a;a++)n[r[a]]=e[r[a]];return this.Jn||(mn.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:n}),this.Jn=!0),n}reloadFeatureFlags(){this.Xn||this.Se.advanced_disable_feature_flags||this.ls()||this.ps||(this._instance.Ti.emit("featureFlagsReloading",!0),this.ps=setTimeout((()=>{this.gs()}),5))}ys(){clearTimeout(this.ps),this.ps=void 0}ensureFlagsLoaded(){this.Yn||this.Kn||this.ps||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this.Xn=t}gs(t){var e;if(this.ys(),!this._instance.mr()&&!this.ls())if(this.Kn)this.es=!0;else{var n=this.Se.token,r=this.us(af),a={token:n,distinct_id:this._instance.get_distinct_id(),groups:this._instance.getGroups(),$anon_distinct_id:this.$anon_distinct_id,person_properties:me({},((e=this.zr)==null?void 0:e.get_initial_props())||{},this.us(Gs)||{}),group_properties:this.us(qs),timezone:HE()};sr(r)||ye(r)||(a.$device_id=r),(t!=null&&t.disableFlags||this.Se.advanced_disable_feature_flags)&&(a.disable_flags=!0),this.vs()&&(a.evaluation_contexts=this.cs());var s=this.fs();ye(s)||(a.flag_keys=s);var l=!!this.Se.advanced_only_evaluate_survey_feature_flags,c=this._instance.requestRouter.endpointFor("flags","/flags/?v=2"+(this.Se.advanced_only_evaluate_survey_feature_flags?"&only_evaluate_survey_feature_flags=true":""));this.Kn=!0,this._instance._send_request({method:"POST",url:c,data:a,compression:this.Se.disable_compression?void 0:Br.Base64,timeout:this.Se.feature_flag_request_timeout_ms,callback:d=>{var h,p,m,v=!0;if(this.bs(d.statusCode),d.statusCode===200&&(this.es||(this.$anon_distinct_id=void 0),v=!1),this.Kn=!1,!a.disable_flags||this.es){this.ts=!v;var y=[];d.error?d.error instanceof Error?y.push(d.error.name==="AbortError"?"timeout":"connection_error"):y.push("unknown_error"):d.statusCode!==200&&y.push("api_error_"+d.statusCode),(h=d.json)!=null&&h.errorsWhileComputingFlags&&y.push("errors_while_computing_flags");var b,x=!((p=d.json)==null||(p=p.quotaLimited)==null||!p.includes("feature_flags"));x&&y.push("quota_limited"),(m=this.zr)==null||m.register({[hy]:y}),x?mn.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):(a.disable_flags||this.receivedFeatureFlags((b=d.json)!==null&&b!==void 0?b:{},v,{partialResponse:l}),this.es&&(this.es=!1,this.gs()))}}})}}ls(){return OE(this.ss,3)}bs(t){this.ss=jE(t,this.ss,3,(()=>mn.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes.")))}getFeatureFlag(t,e){var n;if(e===void 0&&(e={}),!e.fresh||this.ts)if(this.Yn||this.getFlags()&&this.getFlags().length>0){if(!this.ds()){var r=this.getFeatureFlagResult(t,e);return(n=r?.variant)!==null&&n!==void 0?n:r?.enabled}}else mn.warn('getFeatureFlag for key "'+t+$v)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e?.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ts)if(this.Yn||this.getFlags()&&this.getFlags().length>0){if(!this.ds()){var n=this.getFlagVariants(),r=t in n,a=n[t],s=this.getFlagPayloads()[t],l=String(a),c=this.us(ly)||void 0,d=this.us(Fu)||void 0,h=this.us(ku)||{};if(this.Se.advanced_feature_flags_dedup_per_session){var p,m=this._instance.get_session_id(),v=this.us(dy);m&&m!==v&&(h={},(p=this.zr)==null||p.register({[ku]:h,[dy]:m}))}if((e.send_event||!("send_event"in e))&&(!(t in h)||!h[t].includes(l))){var y,b,x,P,A,L,T,E,D,$;ct(h[t])?h[t].push(l):h[t]=[l],(y=this.zr)==null||y.register({[ku]:h});var I=this.getFeatureFlagDetails(t),S=[...(b=this.us(hy))!==null&&b!==void 0?b:[]];ye(a)&&S.push("flag_missing");var j={$feature_flag:t,$feature_flag_response:a,$feature_flag_payload:s||null,$feature_flag_request_id:c,$feature_flag_evaluated_at:d,$feature_flag_bootstrapped_response:((x=this.Se.bootstrap)==null||(x=x.featureFlags)==null?void 0:x[t])||null,$feature_flag_bootstrapped_payload:((P=this.Se.bootstrap)==null||(P=P.featureFlagPayloads)==null?void 0:P[t])||null,$used_bootstrap_value:!this.ts};ye(I==null||(A=I.metadata)==null?void 0:A.version)||(j.$feature_flag_version=I.metadata.version);var F,Z=(L=I==null||(T=I.reason)==null?void 0:T.description)!==null&&L!==void 0?L:I==null||(E=I.reason)==null?void 0:E.code;Z&&(j.$feature_flag_reason=Z),I!=null&&(D=I.metadata)!=null&&D.id&&(j.$feature_flag_id=I.metadata.id),ye(I?.original_variant)&&ye(I?.original_enabled)||(j.$feature_flag_original_response=ye(I.original_variant)?I.original_enabled:I.original_variant),I!=null&&($=I.metadata)!=null&&$.original_payload&&(j.$feature_flag_original_payload=I==null||(F=I.metadata)==null?void 0:F.original_payload),S.length&&(j.$feature_flag_error=S.join(",")),this._instance.capture("$feature_flag_called",j)}if(r)return{key:t,enabled:!!a,variant:typeof a=="string"?a:void 0,payload:pP(s)}}}else mn.warn('getFeatureFlagResult for key "'+t+$v)}getRemoteConfigPayload(t,e){var n=this.Se.token,r={distinct_id:this._instance.get_distinct_id(),token:n};this.vs()&&(r.evaluation_contexts=this.cs());var a=this.fs();ye(a)||(r.flag_keys=a),this._instance._send_request({method:"POST",url:this._instance.requestRouter.endpointFor("flags","/flags/?v=2"),data:r,compression:this.Se.disable_compression?void 0:Br.Base64,timeout:this.Se.feature_flag_request_timeout_ms,callback(s){var l,c=(l=s.json)==null?void 0:l.featureFlagPayloads;e(c?.[t]||void 0)}})}isFeatureEnabled(t,e){if(e===void 0&&(e={}),!e.fresh||this.ts){if(this.Yn||this.getFlags()&&this.getFlags().length>0){var n=this.getFeatureFlag(t,e);return ye(n)?void 0:!!n}mn.warn('isFeatureEnabled for key "'+t+$v)}}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((e=>e!==t))}receivedFeatureFlags(t,e,n){if(this.zr){this.Yn=!0;var r=this.getFlagVariants(),a=this.getFlagPayloads(),s=this.getFlagsWithDetails();(function(l,c,d,h,p,m){d===void 0&&(d={}),h===void 0&&(h={}),p===void 0&&(p={});var v=(S=>{var j=S.flags;return j?(S.featureFlags=Object.fromEntries(Object.keys(j).map((F=>{var Z;return[F,(Z=j[F].variant)!==null&&Z!==void 0?Z:j[F].enabled]}))),S.featureFlagPayloads=Object.fromEntries(Object.keys(j).filter((F=>j[F].enabled)).filter((F=>{var Z;return(Z=j[F].metadata)==null?void 0:Z.payload})).map((F=>{var Z;return[F,(Z=j[F].metadata)==null?void 0:Z.payload]})))):S.featureFlags&&mn.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),S})(l),y=v.flags,b=v.featureFlags,x=v.featureFlagPayloads;if(b){var P=l.requestId,A=l.evaluatedAt;if(ct(b)){mn.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var L={};if(b)for(var T=0;b.length>T;T++)L[b[T]]=!0;c&&c.register({[cp]:b,[Ys]:L})}else{var E=b,D=x,$=y;if(m!=null&&m.partialResponse)E=me({},d,E),D=me({},h,D),$=me({},p,$);else if(l.errorsWhileComputingFlags)if(y){var I=new Set(Object.keys(y).filter((S=>{var j;return!((j=y[S])!=null&&j.failed)})));E=me({},d,Object.fromEntries(Object.entries(E).filter((S=>{var[j]=S;return I.has(j)})))),D=me({},h,Object.fromEntries(Object.entries(D||{}).filter((S=>{var[j]=S;return I.has(j)})))),$=me({},p,Object.fromEntries(Object.entries($||{}).filter((S=>{var[j]=S;return I.has(j)}))))}else E=me({},d,E),D=me({},h,D),$=me({},p,$);c&&c.register(me({[cp]:Object.keys(pS(E)),[Ys]:E||{},[up]:D||{},[oy]:$||{}},P?{[ly]:P}:{},A?{[Fu]:A}:{}))}}})(t,this.zr,r,a,s,n),e||(this.ns=!1),this._s(e)}}override(t,e){e===void 0&&(e=!1),mn.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){if(!this._instance.__loaded||!this.zr)return mn.uninitializedWarning("posthog.featureFlags.overrideFeatureFlags");if(t===!1)return this.zr.unregister(yi),this.zr.unregister(cl),this._s(),Bs.info("All overrides cleared");if(ct(t)){var e=hS(t);return this.zr.register({[yi]:e}),this._s(),Bs.info("Flag overrides set",{flags:t})}if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var n,r=t;if(this.Jn=!!((n=r.suppressWarning)!==null&&n!==void 0&&n),"flags"in r){if(r.flags===!1)this.zr.unregister(yi),Bs.info("Flag overrides cleared");else if(r.flags){if(ct(r.flags)){var a=hS(r.flags);this.zr.register({[yi]:a})}else this.zr.register({[yi]:r.flags});Bs.info("Flag overrides set",{flags:r.flags})}}return"payloads"in r&&(r.payloads===!1?(this.zr.unregister(cl),Bs.info("Payload overrides cleared")):r.payloads&&(this.zr.register({[cl]:r.payloads}),Bs.info("Payload overrides set",{payloads:r.payloads}))),void this._s()}if(t&&typeof t=="object")return this.zr.register({[yi]:t}),this._s(),Bs.info("Flag overrides set",{flags:t});mn.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.Yn){var{flags:e,flagVariants:n}=this.ws();try{t(e,n)}catch(r){mn.error("Error while running feature flags callback",r)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,n){var r,a=(this.us(su)||[]).find((d=>d.flagKey===t)),s={["$feature_enrollment/"+t]:e},l={$feature_flag:t,$feature_enrollment:e,$set:s};a&&(l.$early_access_feature_name=a.name),n&&(l.$feature_enrollment_stage=n),this._instance.capture("$feature_enrollment_update",l),this.setPersonPropertiesForFlags(s,!1);var c=me({},this.getFlagVariants(),{[t]:e});(r=this.zr)==null||r.register({[cp]:Object.keys(pS(c)),[Ys]:c}),this._s()}getEarlyAccessFeatures(t,e,n){e===void 0&&(e=!1);var r=this.us(su),a=n?"&"+n.map((s=>"stage="+s)).join("&"):"";if(r&&!e)return t(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/early_access_features/?token="+this.Se.token+a),method:"GET",callback:s=>{var l,c;if(s.json){var d=s.json.earlyAccessFeatures;return(l=this.zr)==null||l.unregister(su),(c=this.zr)==null||c.register({[su]:d}),t(d)}}})}ws(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter((n=>e[n])),flagVariants:Object.keys(e).filter((n=>e[n])).reduce(((n,r)=>(n[r]=e[r],n)),{})}}_s(t){var{flags:e,flagVariants:n}=this.ws();this.featureFlagEventHandlers.forEach((r=>{try{r(e,n,{errorsLoading:t})}catch(a){mn.error("Error while running feature flags callback",a)}}))}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.us(Gs)||{},r=t?.$set||(t!=null&&t.$set_once?{}:t),a=t?.$set_once,s={};if(a)for(var l in a)({}).hasOwnProperty.call(a,l)&&(l in n||(s[l]=a[l]));this._instance.register({[Gs]:me({},n,s,r)}),e&&this._instance.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=me({},this.us(Gs)||{});t.forEach((r=>{delete n[r]})),this._instance.register({[Gs]:n}),e&&this._instance.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this._instance.unregister(Gs),t&&this._instance.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.us(qs)||{};Object.keys(n).length!==0&&Object.keys(n).forEach((r=>{n[r]=me({},n[r],t[r]),delete t[r]})),this._instance.register({[qs]:me({},n,t)}),e&&this._instance.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.us(qs)||{};this._instance.register({[qs]:me({},e,{[t]:{}})})}else this._instance.unregister(qs)}reset(){this.Yn=!1,this.Kn=!1,this.Xn=!1,this.es=!1,this.ts=!1,this.$anon_distinct_id=void 0,this.ys(),this.Jn=!1,this.ss=0}}},Vq={sessionRecording:class{get Se(){return this._instance.config}get zr(){return this._instance.persistence}get started(){var t;return!((t=this.xs)==null||!t.isStarted)}get status(){var t,e;return this.ks===Zc||this.ks===$h?this.ks:(t=(e=this.xs)==null?void 0:e.status)!==null&&t!==void 0?t:this.ks}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.ks=iS,this.Ss=void 0,this._instance=t,!this._instance.sessionManager)throw fi.error("started without valid sessionManager"),new Error(Ay+" started without valid sessionManager. This is a bug.");if(this.Se.cookieless_mode===wi)throw new Error(Ay+' cannot be used with cookieless_mode="always"')}initialize(){this.startIfEnabledOrStop()}get Cs(){var t,e=!((t=this._instance.get_property(ro))==null||!t.enabled),n=!this.Se.disable_session_recording,r=this.Se.disable_session_recording||this._instance.consent.isOptedOut();return J&&e&&n&&!r}startIfEnabledOrStop(t){var e;if(!this.Cs||(e=this.xs)==null||!e.isStarted){var n=!ye(Object.assign)&&!ye(Array.from);this.Cs&&n?(this.Is(t),fi.info("starting")):(this.ks=iS,this.stopRecording())}}Is(t){var e,n,r;this.Cs&&(this.ks!==Zc&&this.ks!==$h&&(this.ks=sS),Ue!=null&&(e=Ue.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(n=Ue.__PosthogExtensions__)!=null&&n.initSessionRecording?this.Ts(t):(r=Ue.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,this.Es,(a=>{if(a)return fi.error("could not load recorder",a);this.Ts(t)})))}stopRecording(){var t,e;(t=this.Ss)==null||t.call(this),this.Ss=void 0,(e=this.xs)==null||e.stop()}Ms(){var t,e;(t=this.Ss)==null||t.call(this),this.Ss=void 0,(e=this.xs)==null||e.discard()}Ps(){var t,e;(t=this.zr)==null||t.unregister(yb),(e=this.zr)==null||e.unregister(hE)}Rs(t,e){if(nt(t))return null;var n,r=Fn(t)?t:parseFloat(t);return typeof(n=r)!="number"||!Number.isFinite(n)||0>n||n>1?(fi.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):r}Os(t){if(this.zr){var e,n,r=this.zr,a=()=>{var s,l=t.sessionRecording===!1?void 0:t.sessionRecording,c=this.Rs((s=this.Se.session_recording)==null?void 0:s.sampleRate,"session_recording.sampleRate"),d=this.Rs(l?.sampleRate,"remote config sampleRate"),h=c??d;nt(h)&&this.Ps();var p=l?.minimumDurationMilliseconds;r.register({[ro]:me({cache_timestamp:Date.now(),enabled:!!l},l,{networkPayloadCapture:me({capturePerformance:t.capturePerformance},l?.networkPayloadCapture),canvasRecording:{enabled:l?.recordCanvas,fps:l?.canvasFps,quality:l?.canvasQuality},sampleRate:h,minimumDurationMilliseconds:ye(p)?null:p,endpoint:l?.endpoint,triggerMatchType:l?.triggerMatchType,masking:l?.masking,urlTriggers:l?.urlTriggers,version:l?.version,triggerGroups:l?.triggerGroups})})};a(),(e=this.Ss)==null||e.call(this),this.Ss=(n=this._instance.sessionManager)==null?void 0:n.onSessionId(a)}}onRemoteConfig(t){return"sessionRecording"in t?t.sessionRecording===!1?(this.Os(t),void this.Ms()):(this.Os(t),void this.startIfEnabledOrStop()):(this.ks===Zc&&(this.ks=$h,fi.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var n;e===void 0&&(e="log"),(n=this.xs)!=null&&n.log?this.xs.log(t,e):fi.warn("log called before recorder was ready")}get Es(){var t,e,n=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(ro);return(n==null||(e=n.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}Ls(){var t,e,n=this._instance.get_property(ro);if(!n)return!1;try{e=typeof n=="object"?n:JSON.parse(n)}catch(a){return fi.warn("persisted remote config for session recording is invalid and will be ignored",a),!1}var r=(t=e.cache_timestamp)!==null&&t!==void 0?t:Date.now();return 36e5>=Date.now()-r}Ts(t){var e,n;if((e=Ue.__PosthogExtensions__)==null||!e.initSessionRecording)return fi.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[bE]:!0});if(this.xs||(this.xs=(n=Ue.__PosthogExtensions__)==null?void 0:n.initSessionRecording(this._instance),this.xs._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.Ls())return this.ks===$h||this.ks===Zc?void 0:(this.ks=Zc,fi.info("persisted remote config is stale, requesting fresh config before starting"),void new WE(this._instance).load());this.ks=sS,this.xs.start(t)}onRRwebEmit(t){var e;(e=this.xs)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.xs||(e=this.zr)==null||e.register({[fE]:!0}),(t=this.xs)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.xs||(e=this.zr)==null||e.register({[pE]:!0}),(t=this.xs)==null||t.overrideSampling()}overrideTrigger(t){var e,n;this.xs||(n=this.zr)==null||n.register({[t==="url"?mE:gE]:!0}),(e=this.xs)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.xs)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var n;return!((n=this.xs)==null||!n.tryAddCustomEvent(t,e))}}},Hq={autocapture:class{constructor(t){this.Fs=!1,this.As=null,this.$s=!1,this.instance=t,this.rageclicks=new nS(t.config.rageclick),this.Ds=null}initialize(){this.startIfEnabled()}get Se(){var t,e,n=qt(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=(t=n.url_allowlist)==null?void 0:t.map((r=>new RegExp(r))),n.url_ignorelist=(e=n.url_ignorelist)==null?void 0:e.map((r=>new RegExp(r))),n}Ns(){if(this.isBrowserSupported()){if(J&&we){var t=n=>{n=n||J?.event;try{this.qs(n)}catch(r){Ov.error("Failed to capture event",r)}};if(Qt(we,"submit",t,{capture:!0}),Qt(we,"change",t,{capture:!0}),Qt(we,"click",t,{capture:!0}),this.Se.capture_copied_text){var e=n=>{n=n||J?.event;try{this.qs(n,Nv)}catch(r){Ov.error("Failed to capture copy/cut event",r)}};Qt(we,"copy",e,{capture:!0}),Qt(we,"cut",e,{capture:!0})}}}else Ov.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.Fs&&(this.Ns(),this.Fs=!0)}onRemoteConfig(t){t.elementsChainAsString&&(this.$s=t.elementsChainAsString),this.instance.persistence&&this.instance.persistence.register({[ey]:!!t.autocapture_opt_out}),this.As=!!t.autocapture_opt_out,this.startIfEnabled()}setElementSelectors(t){this.Ds=t}getElementSelectors(t){var e,n=[];return(e=this.Ds)==null||e.forEach((r=>{var a=we?.querySelectorAll(r);a?.forEach((s=>{t===s&&n.push(r)}))})),n}get isEnabled(){var t,e,n=(t=this.instance.persistence)==null?void 0:t.props[ey];if(sr(this.As)&&!Ha(n)&&!this.instance.mr())return!1;var r=(e=this.As)!==null&&e!==void 0?e:!!n;return!!this.instance.config.autocapture&&!r}qs(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var n,r=Tv(t);PE(r)&&(r=r.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&DP(r,this.instance.config.rageclick)&&this.qs(t,"$rageclick");var a=e===Nv;if(r&&(function(m,v,y,b,x,P){var A,L,T,E,D,$;if(y===void 0&&(y=void 0),!J||xb(m)||(A=y)!=null&&A.url_allowlist&&!RP(y.url_allowlist,P)||(L=y)!=null&&L.url_ignorelist&&RP(y.url_ignorelist,P))return!1;if((T=y)!=null&&T.dom_event_allowlist){var I=y.dom_event_allowlist;if(I&&!I.some((ee=>v.type===ee)))return!1}var{parentIsUsefulElement:S,targetElementList:j}=AE(m,b);if(!(function(ee,ue){var re=ue?.element_allowlist;if(ye(re))return!0;var ae,te=function(H){if(re.some((Q=>H.tagName.toLowerCase()===Q)))return{v:!0}};for(var le of ee)if(ae=te(le))return ae.v;return!1})(j,y)||!yy(j,(E=y)==null?void 0:E.css_selector_allowlist)||yy(j,(D=($=y)==null?void 0:$.css_selector_ignorelist)!==null&&D!==void 0?D:HG))return!1;try{var F=J.getComputedStyle(m);if(F&&F.getPropertyValue("cursor")==="pointer"&&v.type==="click")return!0}catch{}var Z=m.tagName.toLowerCase();switch(Z){case"html":return!1;case"form":return(x||["submit"]).indexOf(v.type)>=0;case"input":case"select":case"textarea":return(x||["change","click"]).indexOf(v.type)>=0;default:return S?(x||["click"]).indexOf(v.type)>=0:(x||["click"]).indexOf(v.type)>=0&&(wb.indexOf(Z)>-1||m.getAttribute("contenteditable")==="true")}})(r,t,this.Se,a,a?["copy","cut"]:void 0,this.instance)){var{props:s,explicitNoCapture:l}=Mq(r,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Se.element_attribute_ignorelist,elementsChainAsString:this.$s,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes});if(l)return!1;var c=this.getElementSelectors(r);if(c&&c.length>0&&(s.$element_selectors=c),e===Nv){var d,h=CE(J==null||(d=J.getSelection())==null?void 0:d.toString()),p=t.type||"clipboard";if(!h)return!1;s.$selected_content=h,s.$copy_type=p}return this.instance.capture(e,s),!0}}}isBrowserSupported(){return _a(we?.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this.Bs=(J==null||(e=J.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(_e.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.js&&this.js(),this.js=void 0,_e.info("History API monitoring stopped")}monitorHistoryChanges(){J&&J.history&&(this.Hs("pushState"),this.Hs("replaceState"),this.Us())}Hs(t){var e;if(J&&((e=J.history[t])==null||!e.__posthog_wrapped__)){var n=this;(function(r,a,s){try{if(!(a in r))return rS;var l={next:r[a]},c=s((function(){for(var d=arguments.length,h=new Array(d),p=0;d>p;p++)h[p]=arguments[p];return l.next.apply(this,h)}));return _a(c)&&(c.prototype=c.prototype||{},Object.defineProperties(c,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:l}})),r[a]=c,()=>{if(r[a]!==c)for(var d=r[a];_a(d)&&d.__posthog_layer__;){var h=d.__posthog_layer__;if(h.next===c)return void(h.next=l.next);d=h.next}else r[a]=l.next}}catch{return rS}})(J.history,t,(r=>function(a,s,l){r.call(this,a,s,l),n.zs(t)}))}}zs(t){try{var e,n=J==null||(e=J.location)==null?void 0:e.pathname;if(!n)return;n!==this.Bs&&this.isEnabled&&this._instance.capture(ul,{navigation_type:t}),this.Bs=n}catch(r){_e.error("Error capturing "+t+" pageview",r)}}Us(){if(!this.js){var t=()=>{this.zs("popstate")};Qt(J,"popstate",t),this.js=()=>{J&&J.removeEventListener("popstate",t)}}}},heatmaps:class{get Se(){return this.instance.config}constructor(t){var e;this.Vs=!1,this.Fs=!1,this.Ws=null,this.instance=t,this.Vs=!((e=this.instance.persistence)==null||!e.props[ty]),this.rageclicks=new nS(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return qt(this.Se.capture_heatmaps)&&this.Se.capture_heatmaps.flush_interval_milliseconds&&(t=this.Se.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return nt(this.Se.capture_heatmaps)?nt(this.Se.enable_heatmaps)?this.Vs:this.Se.enable_heatmaps:this.Se.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.Fs)return;Oq.info("starting..."),this.Gs(),this.ke()}else{var t;clearInterval((t=this.Ws)!==null&&t!==void 0?t:void 0),this.Zs(),this.getAndClearBuffer()}}onRemoteConfig(t){if("heatmaps"in t){var e=!!t.heatmaps;this.instance.persistence&&this.instance.persistence.register({[ty]:e}),this.Vs=e,this.startIfEnabled()}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Qs(t){this.fe(t.originalEvent,"deadclick")}ke(){this.Ws&&clearInterval(this.Ws),this.Ws=we?.visibilityState==="visible"?setInterval(this.Lr.bind(this),this.flushIntervalMilliseconds):null}Gs(){J&&we&&(this.Js=this.Lr.bind(this),Qt(J,uf,this.Js),this.Ys=t=>this.fe(t||J?.event),Qt(we,"click",this.Ys,{capture:!0}),this.Ks=t=>this.Xs(t||J?.event),Qt(we,"mousemove",this.Ks,{capture:!0}),this.eo=new OP(this.instance,XG,this.Qs.bind(this)),this.eo.startIfEnabledOrStop(),this.ro=this.ke.bind(this),Qt(we,cf,this.ro),this.Fs=!0)}Zs(){var t;J&&we&&(this.Js&&J.removeEventListener(uf,this.Js),this.Ys&&we.removeEventListener("click",this.Ys,{capture:!0}),this.Ks&&we.removeEventListener("mousemove",this.Ks,{capture:!0}),this.ro&&we.removeEventListener(cf,this.ro),clearTimeout(this.io),(t=this.eo)==null||t.stop(),this.Fs=!1)}no(t,e){var n=this.instance.scrollManager.scrollY(),r=this.instance.scrollManager.scrollX(),a=this.instance.scrollManager.scrollElement(),s=(function(l,c,d){for(var h=l;h&&gs(h)&&!Er(h,"body");){if(h===d)return!1;var p=void 0;try{var m,v,y;p=(m=(v=(y=h.ownerDocument)==null?void 0:y.defaultView)!==null&&v!==void 0?v:J)==null?void 0:m.getComputedStyle(h).position}catch{return!1}if(Ke(c,p))return!0;h=TE(h)}return!1})(Tv(t),["fixed","sticky"],a);return{x:t.clientX+(s?0:r),y:t.clientY+(s?0:n),target_fixed:s,type:e}}fe(t,e){var n;if(e===void 0&&(e="click"),!AP(t.target)&&oS(t)){var r=this.no(t,e);(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,new Date().getTime())&&DP(Tv(t),this.instance.config.rageclick)&&this.so(me({},r,{type:"rageclick"})),this.so(r)}}Xs(t){!AP(t.target)&&oS(t)&&(clearTimeout(this.io),this.io=setTimeout((()=>{this.so(this.no(t,"mousemove"))}),500))}so(t){if(J){var e=this.Se.disable_capture_url_hashes?ms(J.location.href):J.location.href,n=this.Se.custom_personal_data_properties,r=this.Se.mask_personal_data_properties?[...jl,...n||[]]:[],a=Bu(e,r,Vu);this.R=this.R||{},this.R[a]||(this.R[a]=[]),this.R[a].push(t)}}Lr(){this.R&&!cs(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:OP,webVitalsAutocapture:class{constructor(t){var e;this.Vs=!1,this.Fs=!1,this.R={url:void 0,metrics:[],firstMetricTimestamp:void 0},this.oo=()=>{clearTimeout(this.ao),this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",this.R.metrics.reduce(((n,r)=>me({},n,{["$web_vitals_"+r.name+"_event"]:me({},r),["$web_vitals_"+r.name+"_value"]:r.value})),{})),this.R={url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.lo=n=>{var r;this.R=this.R||{url:void 0,metrics:[],firstMetricTimestamp:void 0};var a=this.uo();if(!ye(a))if(nt(n?.name)||nt(n?.value))$s.error("Invalid metric received",n);else if(!this.ho||this.ho>n.value){this.R.url!==a&&(this.oo(),this.ao=setTimeout(this.oo,this.flushToCaptureTimeoutMs)),ye(this.R.url)&&(this.R.url=a),this.R.firstMetricTimestamp=ye(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,n.attribution&&n.attribution.interactionTargetElement&&(n.attribution.interactionTargetElement=void 0);var s=(r=this._instance.sessionManager)==null?void 0:r.checkAndGetSessionAndWindowId(!0),l=me({},n,{$current_url:a,timestamp:Date.now()});ye(s)||(l.$session_id=s.sessionId,l.$window_id=s.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.oo()}else $s.error("Ignoring metric with value >= "+this.ho,n)},this.do=()=>{if(!this.Fs){var n,r,a,s,l=Ue.__PosthogExtensions__;ye(l)||ye(l.postHogWebVitalsCallbacks)||({onLCP:n,onCLS:r,onFCP:a,onINP:s}=l.postHogWebVitalsCallbacks),n&&r&&a&&s?(this.allowedMetrics.indexOf("LCP")>-1&&n(this.lo.bind(this)),this.allowedMetrics.indexOf("CLS")>-1&&r(this.lo.bind(this)),this.allowedMetrics.indexOf("FCP")>-1&&a(this.lo.bind(this)),this.allowedMetrics.indexOf("INP")>-1&&s(this.lo.bind(this)),this.Fs=!0):$s.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Vs=!((e=this._instance.persistence)==null||!e.props[iy]),this.startIfEnabled()}get co(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,n=qt(this.co)?(t=this.co)==null?void 0:t.web_vitals_allowed_metrics:void 0;return nt(n)?((e=this._instance.persistence)==null?void 0:e.props[sy])||["CLS","FCP","INP","LCP"]:n}get flushToCaptureTimeoutMs(){return(qt(this.co)?this.co.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=qt(this.co)?this.co.web_vitals_attribution:void 0;return t!=null&&t}get ho(){var t=qt(this.co)&&Fn(this.co.__web_vitals_max_value)?this.co.__web_vitals_max_value:aS;return t>0&&6e4>=t?aS:t}get isEnabled(){var t=pn?.protocol;if(t!=="http:"&&t!=="https:")return $s.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=qt(this.co)?this.co.web_vitals:Ha(this.co)?this.co:void 0;return Ha(e)?e:this.Vs}startIfEnabled(){this.isEnabled&&!this.Fs&&($s.info("enabled, starting..."),this.Mt(this.do))}onRemoteConfig(t){if("capturePerformance"in t){var e=qt(t.capturePerformance)&&!!t.capturePerformance.web_vitals,n=qt(t.capturePerformance)?t.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[iy]:e}),this._instance.persistence.register({[sy]:n})),this.Vs=e,this.startIfEnabled()}}Mt(t){var e,n;(e=Ue.__PosthogExtensions__)!=null&&e.postHogWebVitalsCallbacks?t():(n=Ue.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,this.useAttribution?"web-vitals-with-attribution":"web-vitals",(r=>{r?$s.error("failed to load script",r):t()}))}uo(){var t=J?this._instance.config.disable_capture_url_hashes?ms(J.location.href):J.location.href:void 0;if(t){var e=this._instance.config.custom_personal_data_properties,n=this._instance.config.mask_personal_data_properties?[...jl,...e||[]]:[];return Bu(t,n,Vu)}$s.error("Could not determine current URL")}}},Wq={exceptionObserver:class{constructor(t){var e,n,r;this.do=()=>{var a;if(J&&this.isEnabled&&(a=Ue.__PosthogExtensions__)!=null&&a.errorWrappingFunctions){var s=Ue.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,l=Ue.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,c=Ue.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.vo&&this.Se.capture_unhandled_errors&&(this.vo=s(this.captureException.bind(this))),!this.fo&&this.Se.capture_unhandled_rejections&&(this.fo=l(this.captureException.bind(this))),!this.po&&this.Se.capture_console_errors&&(this.po=c(this.captureException.bind(this)))}catch(d){Yc.error("failed to start",d),this.mo()}}},this._instance=t,this.yo=!((e=this._instance.persistence)==null||!e.props[ny]),this.bo=new qW({refillRate:(n=this._instance.config.error_tracking.__exceptionRateLimiterRefillRate)!==null&&n!==void 0?n:1,bucketSize:(r=this._instance.config.error_tracking.__exceptionRateLimiterBucketSize)!==null&&r!==void 0?r:10,refillInterval:1e4,Ae:Yc}),this.Se=this._o(),this.startIfEnabledOrStop()}_o(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return qt(t)?e=me({},e,t):(ye(t)?this.yo:t)&&(e=me({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Se.capture_console_errors||this.Se.capture_unhandled_errors||this.Se.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Yc.info("enabled"),this.mo(),this.Mt(this.do)):this.mo()}Mt(t){var e,n;(e=Ue.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(n=Ue.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"exception-autocapture",(r=>{if(r)return Yc.error("failed to load script",r);t()}))}mo(){var t,e,n;(t=this.vo)==null||t.call(this),this.vo=void 0,(e=this.fo)==null||e.call(this),this.fo=void 0,(n=this.po)==null||n.call(this),this.po=void 0}onRemoteConfig(t){"autocaptureExceptions"in t&&(this.yo=!!t.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[ny]:this.yo}),this.Se=this._o(),this.startIfEnabledOrStop())}onConfigChange(){this.Se=this._o()}captureException(t){var e,n,r,a=(e=t==null||(n=t.$exception_list)==null||(n=n[0])==null?void 0:n.type)!==null&&e!==void 0?e:"Exception";this.bo.consumeRateLimit(a)?Yc.info("Skipping exception capture because of client rate limiting.",{exception:a}):(r=this._instance.exceptions)==null||r.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,n;this.wo=[],this.xo=new cG([new vG,new CG,new yG,new _G,new PG,new xG,new kG,new SG],(function(r){for(var a=arguments.length,s=new Array(a>1?a-1:0),l=1;a>l;l++)s[l-1]=arguments[l];return function(c,d){d===void 0&&(d=0);for(var h=[],p=c.split(`
1172
- `),m=d;p.length>m;m++){var v=p[m];if(1024>=v.length){var y=SP.test(v)?v.replace(SP,"$1"):v;if(!y.match(/\S*Error: /)){for(var b of s){var x=b(y,r);if(x){h.push(x);break}}if(h.length>=50)break}}}return(function(P){if(!P.length)return[];var A=Array.from(P);return A.reverse(),A.slice(0,50).map((L=>{return me({},L,{filename:L.filename||(T=A,T[T.length-1]||{}).filename,function:L.function||Nl});var T}))})(h)}})("web:javascript",pG,gG)),this._instance=t,this.wo=(e=(n=this._instance.persistence)==null?void 0:n.get_property(ry))!==null&&e!==void 0?e:[],this.ko=rf(this.So()),this.Co=new EG(this.ko)}onConfigChange(){this.ko=rf(this.So()),this.Co.setConfig(this.ko)}onRemoteConfig(t){var e,n,r;if("errorTracking"in t){var a=(e=(n=t.errorTracking)==null?void 0:n.suppressionRules)!==null&&e!==void 0?e:[],s=(r=t.errorTracking)==null?void 0:r.captureExtensionExceptions;this.wo=a,this._instance.persistence&&this._instance.persistence.register({[ry]:this.wo,[ay]:s})}}get Io(){var t,e=!!this._instance.get_property(ay),n=this._instance.config.error_tracking.captureExtensionExceptions;return(t=n??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.xo.buildFromUnknown(t,{syntheticException:e?.syntheticException,mechanism:{handled:e?.handled}})}addExceptionStep(t,e){if(this.ko.enabled)try{if(!Lt(t)||t.trim().length===0)return void mi.warn("Ignoring exception step because message must be a non-empty string");var n=this.To(e),{sanitizedProperties:r,droppedKeys:a}=(function(s){if(!s)return{sanitizedProperties:{},droppedKeys:[]};var l=[];return{sanitizedProperties:Object.keys(s).reduce(((c,d)=>TG.has(d)?(l.push(d),c):(c[d]=s[d],c)),{}),droppedKeys:l}})(n);a.length>0&&mi.warn("Ignoring reserved exception step fields",{droppedKeys:a}),this.Co.add(me({[tf]:t,[nf]:new Date().toISOString()},r))}catch(s){mi.error("Failed to add exception step. Ignoring breadcrumb.",s)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.Eo(e)){if(this.Mo(e))return this.Po("Exception dropped: matched a suppression rule"),void mi.info("Skipping exception capture because a suppression rule matched");if(!this.Io&&this.Ro(e))return this.Po("Exception dropped: thrown by a browser extension"),void mi.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.Oo(e))return this.Po("Exception dropped: thrown by the PostHog SDK"),void mi.info("Skipping exception capture because it was thrown by the PostHog SDK")}var n=this.ko.enabled&&nt(t.$exception_steps)?this.Lo(t):t;try{var r=this._instance.capture("$exception",n,{_noTruncate:!0,_batchKey:"exceptionEvent",Zi:!0});return r&&this.Co.clear(),r}catch(a){return mi.error("Failed to capture exception event. Dropping this exception.",a),void this.Co.clear()}}catch(a){return void mi.error("Failed to process exception event. Ignoring this exception.",a)}}Lo(t){try{var e=this.Co.getAttachable();return e.length===0?t:me({},t,{$exception_steps:e})}catch(n){return mi.error("Failed to read buffered exception steps. Capturing exception without steps.",n),t}}Po(t){this.ko.enabled&&this.Co.add({[tf]:t,[nf]:new Date().toISOString()})}To(t){return qt(t)?me({},t):{}}So(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}Mo(t){if(t.length===0)return!1;var e=t.reduce(((n,r)=>{var{type:a,value:s}=r;return Lt(a)&&a.length>0&&n.$exception_types.push(a),Lt(s)&&s.length>0&&n.$exception_values.push(s),n}),{$exception_types:[],$exception_values:[]});return this.wo.some((n=>{var r=n.values.map((a=>{var s,l=n6[a.operator],c=ct(a.value)?a.value:[a.value],d=(s=e[a.key])!==null&&s!==void 0?s:[];return c.length>0&&l(c,d)}));return n.type==="OR"?r.some(Boolean):r.every(Boolean)}))}Ro(t){return t.flatMap((e=>{var n,r;return(n=(r=e.stacktrace)==null?void 0:r.frames)!==null&&n!==void 0?n:[]})).some((e=>e.filename&&e.filename.startsWith("chrome-extension://")))}Oo(t){if(t.length>0){var e,n,r,a,s=(e=(n=t[0].stacktrace)==null?void 0:n.frames)!==null&&e!==void 0?e:[],l=s[s.length-1];return(r=l==null||(a=l.filename)==null?void 0:a.includes("posthog.com/static"))!==null&&r!==void 0&&r}return!1}Eo(t){return!nt(t)&&ct(t)}}},Gq=me({productTours:class{get zr(){return this._instance.persistence}constructor(t){this.Fo=null,this.Ao=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if("productTours"in t){var e,n;if(this.zr&&this.zr.register({[_b]:!!t.productTours}),!Fv(this._instance))return!this.Fo&&nt((e=this.zr)==null?void 0:e.props[ou])||zv.info("product tours disabled; stopping and clearing cached tours"),(n=this.Fo)==null||n.stop(),this.Fo=null,void this.clearCache();this.loadIfEnabled()}}loadIfEnabled(){!this.Fo&&Fv(this._instance)&&this.Mt((()=>this.$o()))}Mt(t){var e,n;(e=Ue.__PosthogExtensions__)!=null&&e.generateProductTours?t():(n=Ue.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"product-tours",(r=>{r?zv.error("Could not load product tours script",r):t()}))}$o(){var t;!this.Fo&&(t=Ue.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.Fo=Ue.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!ct(this.Ao)||e){var n=this.zr;if(n){var r=n.props[ou];if(ct(r)&&!e)return this.Ao=r,void t(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",callback:a=>{if(Fv(this._instance)){var s=a.statusCode;if(s!==200||!a.json){var l="Product Tours API could not be loaded, status: "+s;return zv.error(l),void t([],{isLoaded:!1,error:l})}var c=ct(a.json.product_tours)?a.json.product_tours:[];this.Ao=c,n&&n.register({[ou]:c}),t(c,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.Ao,{isLoaded:!0})}getActiveProductTours(t){nt(this.Fo)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.Fo.getActiveProductTours(t)}showProductTour(t){var e;(e=this.Fo)==null||e.showTourById(t)}previewTour(t){this.Fo?this.Fo.previewTour(t):this.Mt((()=>{var e;this.$o(),(e=this.Fo)==null||e.previewTour(t)}))}dismissProductTour(){var t;(t=this.Fo)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.Fo)==null||t.nextStep()}previousStep(){var t;(t=this.Fo)==null||t.previousStep()}clearCache(){var t;this.Ao=null,(t=this.zr)==null||t.unregister(ou)}resetTour(t){var e;(e=this.Fo)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.Fo)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.Fo)==null||e.cancelPendingTour(t)}}},Vf),qq={siteApps:class{constructor(t){this.Do=0,this._instance=t,this.No=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}qo(t,e){if(e){var n=this.globalsForEvent(e);this.No.push(n),this.No.length>1e3&&(this.No=this.No.slice(10))}}get siteAppLoaders(){var t;return(t=Ue._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.qo.bind(this));this.Bo=()=>{t(),this.No=[],this.Bo=void 0}}}globalsForEvent(t){var e,n,r,a,s,l,c;if(!t)throw new Error("Event payload is required");var d={},h=this._instance.get_property("$groups")||[],p=this._instance.get_property("$stored_group_properties")||{};for(var[m,v]of Object.entries(p))d[m]={id:h[m],type:m,properties:v};var{$set_once:y,$set:b}=t;return{event:me({},I4(t,jq),{properties:me({},t.properties,b?{$set:me({},(e=(n=t.properties)==null?void 0:n.$set)!==null&&e!==void 0?e:{},b)}:{},y?{$set_once:me({},(r=(a=t.properties)==null?void 0:a.$set_once)!==null&&r!==void 0?r:{},y)}:{}),elements_chain:(s=(l=t.properties)==null?void 0:l.$elements_chain)!==null&&s!==void 0?s:"",distinct_id:(c=t.properties)==null?void 0:c.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:d}}jo(t){var e,n=(e=t.tagName)==null?void 0:e.toLowerCase();return n==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(Ma.error("prepare_external_dependency_stylesheet returned null"),null):n==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(Ma.error("prepare_external_dependency_script returned null"),null):t}Ho(){var t,e,n,r,a,s,l,c;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var d=we?.defaultView,h=d==null||(t=d.Node)==null?void 0:t.prototype;if(!d||!h)return()=>{};if(this.Do++,this.Uo)return this.zo();var p=[],m=this,v=new WeakSet,y=(P,A,L)=>{if(P!=null&&P[A]){var T=P[A];P[A]=L(T),p.push((()=>{P[A]=T}))}},b=P=>{if(v.has(P))return P;var A=m.jo(P);return A&&v.add(A),A},x=P=>P.map((A=>typeof A=="string"?A:b(A))).filter((A=>!sr(A)));return y(h,"appendChild",(P=>function(A){var L=b(A);return L?P.call(this,L):A})),y(h,"insertBefore",(P=>function(A,L){var T=b(A);return T?P.call(this,T,L):A})),y(h,"replaceChild",(P=>function(A,L){var T=b(A);return T?P.call(this,T,L):L})),[(e=d.Element)==null?void 0:e.prototype,(n=d.Document)==null?void 0:n.prototype,(r=d.DocumentFragment)==null?void 0:r.prototype].forEach((P=>{y(P,"append",(A=>function(){for(var L=arguments.length,T=new Array(L),E=0;L>E;E++)T[E]=arguments[E];return A.apply(this,x(T))})),y(P,"prepend",(A=>function(){for(var L=arguments.length,T=new Array(L),E=0;L>E;E++)T[E]=arguments[E];return A.apply(this,x(T))}))})),[(a=d.Element)==null?void 0:a.prototype,(s=d.CharacterData)==null?void 0:s.prototype,(l=d.DocumentType)==null?void 0:l.prototype].forEach((P=>{y(P,"before",(A=>function(){for(var L=arguments.length,T=new Array(L),E=0;L>E;E++)T[E]=arguments[E];return A.apply(this,x(T))})),y(P,"after",(A=>function(){for(var L=arguments.length,T=new Array(L),E=0;L>E;E++)T[E]=arguments[E];return A.apply(this,x(T))})),y(P,"replaceWith",(A=>function(){for(var L=arguments.length,T=new Array(L),E=0;L>E;E++)T[E]=arguments[E];var D=x(T);return T.length&&!D.length?void 0:A.apply(this,D)}))})),y((c=d.Element)==null?void 0:c.prototype,"insertAdjacentElement",(P=>function(A,L){var T=b(L);return T?P.call(this,A,T):null})),this.Uo=()=>{p.forEach((P=>P())),this.Uo=void 0},this.zo()}zo(){var t=!1;return()=>{var e;t||(t=!0,this.Do--,this.Do===0&&((e=this.Uo)==null||e.call(this)))}}Vo(t,e){e===void 0&&(e=!0);var n=this.Ho();try{var r=t(n);return e&&n(),r}catch(a){throw n(),a}}setupSiteApp(t){var e=this.apps[t.id],n=()=>{var l;!e.errored&&this.No.length&&(Ma.info("Processing "+this.No.length+" events for site app with id "+t.id),this.No.forEach((c=>this.Vo((()=>e.processEvent==null?void 0:e.processEvent(c))))),e.processedBuffer=!0),Object.values(this.apps).every((c=>c.processedBuffer||c.errored))&&((l=this.Bo)==null||l.call(this))},r=!1,a=l=>{e.errored=!l,e.loaded=!0,Ma.info("Site app with id "+t.id+" "+(l?"loaded":"errored")),r&&n()};try{var{processEvent:s}=this.Vo((l=>t.init({posthog:this._instance,callback(c){l(),a(c)}})),!1);s&&(e.processEvent=s),r=!0}catch(l){Ma.error(lS+t.id,l),a(!1)}if(r&&e.loaded)try{n()}catch(l){Ma.error("Error while processing buffered events PostHog app with config id "+t.id,l),e.errored=!0}}Wo(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var n of t)this.setupSiteApp(n)}Go(t){var e=this;if(Object.keys(this.apps).length!==0){var n=this.globalsForEvent(t),r=function(s){try{e.Vo((()=>s.processEvent==null?void 0:s.processEvent(n)))}catch(l){Ma.error("Error while processing event "+t.event+" for site app "+s.id,l)}};for(var a of Object.values(this.apps))r(a)}}onRemoteConfig(t){var e,n,r,a=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Wo(),void this._instance.on("eventCaptured",(d=>this.Go(d)))):void Ma.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((n=this.Bo)==null||n.call(this),(r=t.siteApps)!=null&&r.length)if(this.isEnabled){var s=function(d){var h;Ue["__$$ph_site_app_"+d]=a._instance,(h=Ue.__PosthogExtensions__)==null||h.loadSiteApp==null||h.loadSiteApp(a._instance,c,(p=>{if(p)return Ma.error(lS+d,p)}))};for(var{id:l,url:c}of t.siteApps)s(l)}else Ma.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}},Kq={tracingHeaders:class{constructor(t){this.Zo=void 0,this.Qo=void 0,this.Jo=void 0,this.do=()=>{var e,n,r=this.Yo();r?(ye(this.Zo)&&(this.Zo=(e=Ue.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(r,(()=>this._instance.get_distinct_id()),this._instance.sessionManager)),ye(this.Qo)&&(this.Qo=(n=Ue.__PosthogExtensions__)==null||(n=n.tracingHeadersPatchFns)==null?void 0:n._patchFetch(r,(()=>this._instance.get_distinct_id()),this._instance.sessionManager))):this.mo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}Mt(t){var e,n;(e=Ue.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(n=Ue.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"tracing-headers",(r=>{if(r)return Nq.error("failed to load script",r);t()}))}Ko(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Yo(){var t=this.Ko();return ct(t)?(ct(this.Jo)?this.Jo.splice(0,this.Jo.length,...t):this.Jo=[...t],t.length>0?this.Jo:void 0):(ct(this.Jo)&&this.Jo.splice(0),this.Jo=t||void 0,this.Jo)}mo(){var t,e;(t=this.Zo)==null||t.call(this),(e=this.Qo)==null||e.call(this),this.Zo=void 0,this.Qo=void 0}startIfEnabledOrStop(){this.Yo()?this.Mt(this.do):this.mo()}}},Yq=me({surveys:class{get Se(){return this._instance.config}constructor(t){this.Xo=void 0,this._surveyManager=null,this.ea=!1,this.ta=[],this.ra=null,this.ia=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Se.disable_surveys){var e=t.surveys;if(nt(e))return Rt.warn("Flags not loaded yet. Not loading surveys.");var n=ct(e);this.Xo=n?e.length>0:e,Rt.info("flags response received, isSurveysEnabled: "+this.Xo),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],n=0;n<localStorage.length;n++){var r=localStorage.key(n);(r!=null&&r.startsWith(Ey)||r!=null&&r.startsWith("inProgressSurvey_"))&&e.push(r)}e.forEach((a=>localStorage.removeItem(a)))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.ea)Rt.info("Already initializing surveys, skipping...");else if(this.Se.disable_surveys)Rt.info(cS);else if(this.Se.cookieless_mode&&this._instance.consent.isOptedOut())Rt.info("Not loading surveys in cookieless mode without consent.");else{var t=Ue?.__PosthogExtensions__;if(t){if(!ye(this.Xo)||this.Se.advanced_enable_surveys){var e=this.Xo||this.Se.advanced_enable_surveys;this.ea=!0;try{var n=t.generateSurveys;if(n)return void this.na(n,e);var r=t.loadExternalDependency;if(!r)return void this.sa(vy);r(this._instance,"surveys",(a=>{a||!t.generateSurveys?this.sa("Could not load surveys script",a):this.na(t.generateSurveys,e)}))}catch(a){throw this.sa("Error initializing surveys",a),a}finally{this.ea=!1}}}else Rt.error("PostHog Extensions not found.")}}na(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new Uq(this._instance),Rt.info("Surveys loaded successfully"),this.oa({isLoaded:!0})}sa(t,e){Rt.error(t,e),this.oa({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.ta.push(t),this._surveyManager&&this.oa({isLoaded:!0}),()=>{this.ta=this.ta.filter((e=>e!==t))}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Se.disable_surveys)return Rt.info(cS),t([]);var n,r=this._instance.get_property(cy);if(r&&!e)return t(r,{isLoaded:!0}),void(this.aa()&&this.getSurveys((()=>{}),!0));typeof Promise<"u"&&this.ra?this.ra.then((a=>{var{surveys:s,context:l}=a;return t(s,l)})):(typeof Promise<"u"&&(this.ra=new Promise((a=>{n=a}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Se.token),method:"GET",timeout:this.Se.surveys_request_timeout_ms,callback:a=>{var s;this.ra=null;var l=a.statusCode;if(l!==200||!a.json){var c="Surveys API could not be loaded, status: "+l;Rt.error(c),this.ia=Date.now();var d={isLoaded:!1,error:c};return t([],d),void(n==null||n({surveys:[],context:d}))}this.ia=null;var h,p=a.json.surveys||[],m=p.filter((y=>(function(b){return!(!b.start_date||b.end_date)})(y)&&((function(b){var x;return!((x=b.conditions)==null||(x=x.events)==null||(x=x.values)==null||!x.length)})(y)||(function(b){var x;return!((x=b.conditions)==null||(x=x.actions)==null||(x=x.values)==null||!x.length)})(y))));m.length>0&&((h=this._surveyEventReceiver)==null||h.register(m)),(s=this._instance.persistence)==null||s.register({[cy]:p,[sf]:Date.now()});var v={isLoaded:!0};t(p,v),n?.({surveys:p,context:v})}}))}aa(){return this.la()&&!this.ra&&!this.ua()}la(){var t=this._instance.get_property(sf);return Fn(t)&&Date.now()-t>3e5}ua(){return Fn(this.ia)&&3e5>Date.now()-this.ia}markSurveyAsSeen(t,e){var n,r={id:t,current_iteration:(n=e?.iteration)!==null&&n!==void 0?n:null};a6(r);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}oa(t){for(var e of this.ta)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(n){Rt.error("Error in survey callback",n)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!nt(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);Rt.warn("init was not called")}ha(t){var e=null;return this.getSurveys((n=>{var r;e=(r=n.find((a=>a.id===t)))!==null&&r!==void 0?r:null})),e}da(t){if(nt(this._surveyManager))return{eligible:!1,reason:Uv};var e=typeof t=="string"?this.ha(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(nt(this._surveyManager))return Rt.warn("init was not called"),{visible:!1,disabledReason:Uv};var e=this.da(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return nt(this._surveyManager)?(Rt.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:Uv})):new Promise((n=>{this.getSurveys((r=>{var a,s=(a=r.find((c=>c.id===t)))!==null&&a!==void 0?a:null;if(s){var l=this.da(s);n({visible:l.eligible,disabledReason:l.reason})}else n({visible:!1,disabledReason:"Survey not found"})}),e)}))}renderSurvey(t,e,n){var r;if(nt(this._surveyManager))Rt.warn("init was not called");else{var a=typeof t=="string"?this.ha(t):t;if(a!=null&&a.id)if(Cq.includes(a.type)){var s=we?.querySelector(e);if(s)return(r=a.appearance)!=null&&r.surveyPopupDelaySeconds?(Rt.info("Rendering survey "+a.id+" with delay of "+a.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout((()=>{var l,c;Rt.info("Rendering survey "+a.id+" with delay of "+((l=a.appearance)==null?void 0:l.surveyPopupDelaySeconds)+" seconds"),(c=this._surveyManager)==null||c.renderSurvey(a,s,n),Rt.info("Survey "+a.id+" rendered")}),1e3*a.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(a,s,n);Rt.warn("Survey element not found")}else Rt.warn("Surveys of type "+a.type+" cannot be rendered in the app");else Rt.warn("Survey not found")}}displaySurvey(t,e){var n;if(nt(this._surveyManager))Rt.warn("init was not called");else{var r=this.ha(t);if(r){var a=r;if((n=r.appearance)!=null&&n.surveyPopupDelaySeconds&&e.ignoreDelay&&(a=me({},r,{appearance:me({},r.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==ky.Popover&&e.initialResponses&&Rt.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var s=this.canRenderSurvey(r);if(!s.visible)return void Rt.warn("Survey is not eligible to be displayed: ",s.disabledReason)}e.displayType!==ky.Inline?this._surveyManager.handlePopoverSurvey(a,e):this.renderSurvey(a,e.selector,e.properties)}else Rt.warn("Survey not found")}}cancelPendingSurvey(t){nt(this._surveyManager)?Rt.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload()}}},Vf),Zq={toolbar:class{constructor(t){this.instance=t}ca(t){Ue.ph_toolbar_state=t}va(){var t;return(t=Ue.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,n){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),kE(this.instance.config)||!J||!we)return!1;t=t??J.location,n=n??J.history;try{if(!e){try{J.localStorage.setItem("test","test"),J.localStorage.removeItem("test")}catch{return!1}e=J?.localStorage}var r,a=$q||pf(t.hash,"__posthog")||pf(t.hash,"state"),s=a?TP((()=>JSON.parse(atob(decodeURIComponent(a)))))||TP((()=>JSON.parse(decodeURIComponent(a)))):null;return s&&s.action==="ph_authorize"?((r=s).source="url",r&&Object.keys(r).length>0&&(s.desiredHash?t.hash=s.desiredHash:n?n.replaceState(n.state,"",t.pathname+t.search):t.hash="")):((r=JSON.parse(e.getItem(uS)||"{}")).source="localstorage",delete r.userIntent),!(!r.token||this.instance.config.token!==r.token||(this.loadToolbar(r),0))}catch{return!1}}fa(t){var e=Ue.ph_load_toolbar||Ue.ph_load_editor;!nt(e)&&_a(e)?e(t,this.instance):dS.warn("No toolbar load function found")}loadToolbar(t){var e=!(we==null||!we.getElementById(vE));if(!J||e)return!1;var n=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,r=me({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},n?{instrument:!1}:{});if(J.localStorage.setItem(uS,JSON.stringify(me({},r,{source:void 0}))),this.va()===2)this.fa(r);else if(this.va()===0){var a;this.ca(1),(a=Ue.__PosthogExtensions__)==null||a.loadExternalDependency==null||a.loadExternalDependency(this.instance,"toolbar",(s=>{if(s)return dS.error("[Toolbar] Failed to load",s),void this.ca(0);this.ca(2),this.fa(r)})),Qt(J,"turbolinks:load",(()=>{this.ca(0),this.loadToolbar(r)}))}return!0}pa(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,n){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),this.maybeLoadToolbar(t,e,n)}}},Jq=me({experiments:Yn},Vf),Xq=me({},Vf,Vq,Hq,Wq,Gq,qq,Yq,Kq,Zq,Jq,{conversations:class{constructor(t){this.ga=void 0,this._conversationsManager=null,this.ma=!1,this.ya=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations){var e=t.conversations;nt(e)||(Ha(e)?this.ga=e:(this.ga=e.enabled,this.ya=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.ga=void 0,this.ya=null}loadIfEnabled(){if(!(this._conversationsManager||this.ma||this._instance.config.disable_conversations||kE(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=Ue?.__PosthogExtensions__;if(t&&!ye(this.ga)&&this.ga)if(this.ya&&this.ya.token){this.ma=!0;try{var e=t.initConversations;if(e)return this.ba(e),void(this.ma=!1);var n=t.loadExternalDependency;if(!n)return void this._a(vy);n(this._instance,"conversations",(r=>{r||!t.initConversations?this._a("Could not load conversations script",r):this.ba(t.initConversations),this.ma=!1}))}catch(r){this._a("Error initializing conversations",r),this.ma=!1}}else zr.error("Conversations enabled but missing token in remote config.")}}ba(t){if(this.ya)try{this._conversationsManager=t(this.ya,this._instance),zr.info("Conversations loaded successfully")}catch(e){this._a("Error completing conversations initialization",e)}else zr.error("Cannot complete initialization: remote config is null")}_a(t,e){zr.error(t,e),this._conversationsManager=null,this.ma=!1}show(){this._conversationsManager?this._conversationsManager.show():zr.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.ga===!0&&!sr(this._conversationsManager)}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,n){var r=this;return _n((function*(){return r._conversationsManager?r._conversationsManager.sendMessage(t,e,n):(zr.warn(Vs),null)}))()}getMessages(t,e){var n=this;return _n((function*(){return n._conversationsManager?n._conversationsManager.getMessages(t,e):(zr.warn(Vs),null)}))()}markAsRead(t){var e=this;return _n((function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(zr.warn(Vs),null)}))()}getTickets(t){var e=this;return _n((function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(zr.warn(Vs),null)}))()}requestRestoreLink(t){var e=this;return _n((function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(zr.warn(Vs),null)}))()}restoreFromToken(t){var e=this;return _n((function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(zr.warn(Vs),null)}))()}restoreFromUrlToken(){var t=this;return _n((function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(zr.warn(Vs),null)}))()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}en(){var t;(t=this._conversationsManager)==null||t.setIdentity()}tn(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},{logs:class{constructor(t){var e;this.wa=!1,this.xa=!1,this.Ae=tn("[logs]"),this._r=[],this.ka=[],this.ss=0,this.Sa=()=>{var n,r;this.ss=0,(n=this.Ca)==null||n.onReconnect(),(r=this.Ia)==null||r.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.wa=!0),J&&Qt(J,"online",this.Sa)}Ta(t,e,n,r){var a,s=(function(l,c){var d,h,p,m,v,y,b,x=(d=l?.flushIntervalMs)!==null&&d!==void 0?d:3e3,P=(h=l?.maxBufferSize)!==null&&h!==void 0?h:100,A=c!=null&&c.consoleCapture?void 0:(p=l?.maxLogsPerInterval)!==null&&p!==void 0?p:1e3,L=ye(A)?Math.max(P,2048):Math.max(P,A),T=l?.resourceAttributes;return{serviceName:(m=(v=T?.["service.name"])!==null&&v!==void 0?v:l?.serviceName)!==null&&m!==void 0?m:c?.serviceNameDefault,serviceVersion:(y=T?.["service.version"])!==null&&y!==void 0?y:l?.serviceVersion,environment:(b=T?.["deployment.environment"])!==null&&b!==void 0?b:l?.environment,resourceAttributes:T,beforeSend:l?.beforeSend,flushIntervalMs:x,maxBufferSize:P,maxQueueSize:L,maxBatchRecordsPerPost:100,rateCapWindowMs:x,maxLogsPerInterval:A,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}})((a=this._instance)==null||(a=a.config)==null?void 0:a.logs,n);return[new oG(this.Ea(t,e),s,this.Ae,(()=>this.Ma()),(l=>l()),void 0,r),s]}Pa(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;return this.Ca&&this.Ra===n||((e=this.Ca)==null||e.reset(),this.Ra=n,[this.Ca,this.Oa]=this.Ta((()=>this._r),(r=>{this._r=r}))),this.Ca}La(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;return this.Ia&&this.Fa===n||((e=this.Ia)==null||e.reset(),this.Fa=n,[this.Ia,this.Aa]=this.Ta((()=>this.ka),(r=>{this.ka=r}),{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},mS)),this.Ia}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e,n=(e=t.logs)==null?void 0:e.captureConsoleLogs;!nt(n)&&n&&(this.wa=!0,this.loadIfEnabled())}reset(){var t,e;this._r=[],(t=this.Ca)==null||t.reset(),this.ka=[],(e=this.Ia)==null||e.reset(),this.ss=0}captureLog(t){this.Pa().captureLog(t)}le(t){this.La().captureLog(t)}get logger(){return this.$a||(this.$a={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.$a}flushLogs(t){t?this.Da(t):(this.Ca&&this.Ca.flush().catch((e=>this.Ae.error("PostHog logs flush failed:",e))),this.Ia&&this.Ia.flush().catch((e=>this.Ae.error("PostHog logs flush failed:",e))))}loadIfEnabled(){if(this.wa&&!this.xa){var t=Ue?.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",(n=>{var r;n||(r=t.logs)==null||!r.initializeLogs?this.Ae.error("Could not load logs script",n):(t.logs.initializeLogs(this._instance),this.xa=!0)})):this.Ae.error(vy)}else this.Ae.error("PostHog Extensions not found.")}}Ea(t,e){var n=this._instance;return{get isDisabled(){return!1},get optedOut(){return!n.is_capturing()},getPersistedProperty:r=>r===bi.LogsQueue?t():void 0,setPersistedProperty(r,a){var s;r===bi.LogsQueue&&e((s=a)!==null&&s!==void 0?s:[])},ht:r=>this.ht(r),getLibraryId:()=>on.LIB_NAME,getLibraryVersion:()=>on.LIB_VERSION}}ht(t){return new Promise((e=>{if(OE(this.ss,3))e({kind:"fatal",error:new Error("logs endpoint is unreachable, dropping batch")});else{var n=!1,r=s=>{n||(n=!0,clearTimeout(a),e(s))},a=setTimeout((()=>r({kind:"retry-later",error:new Error("logs request timed out")})),9e4);this._instance._send_request({method:"POST",url:this.Na(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:s=>{var l=s.statusCode;if(this.qa(l),l>=200&&300>l)r({kind:"ok"});else if(l===413)r({kind:"too-large"});else if(l!==0&&l!==429&&500>l)r({kind:"fatal",error:new Error("logs request failed with status "+l)});else{var c;r({kind:"retry-later",error:(c=s.error)!==null&&c!==void 0?c:new Error("logs request failed with status "+l)})}}})}}))}qa(t){(t!==0||this._instance.__loaded)&&(this.ss=jE(t,this.ss,3,(()=>this.Ae.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes."))))}Da(t){this._r.length>0&&this.Ba(t,this._r,this.Oa,on.LIB_NAME,(e=>{this._r=e})),this.ka.length>0&&this.Ba(t,this.ka,this.Aa,mS,(e=>{this.ka=e}))}Ba(t,e,n,r,a){if(e.length!==0){var s=e.map((c=>c.record));a([]);var l=oE(s,sE(n,on.LIB_NAME,on.LIB_VERSION),r,on.LIB_VERSION);this._instance._send_request({method:"POST",url:this.Na(),data:l,compression:"best-available",batchKey:"logs",transport:t})}}Na(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}Ma(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var{sessionId:n,windowId:r,sessionStartTimestamp:a,lastActivityTimestamp:s}=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0);e.sessionId=n,e.windowId=r,nt(a)||(e.sessionStartTimestamp=a),nt(s)||(e.lastActivityTimestamp=s)}if(Ue!=null&&(t=Ue.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?ms(Ue.location.href):Ue.location.href),this._instance.featureFlags){var l=this._instance.featureFlags.getFlags();l&&l.length>0&&(e.activeFeatureFlags=l)}return e}}});Vr.__defaultExtensionClasses=me({},Xq);var gS=(function(){on.SDK_DIST_CHANNEL="npm";var t=Pu[dl]=new Vr;return(function(){function e(){e.done||(e.done=!0,s6=!1,Mt(Pu,(function(n){n._dom_loaded()})))}we!=null&&we.addEventListener?we.readyState==="complete"?e():Qt(we,"DOMContentLoaded",e,{capture:!1}):J&&_e.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")})(),t})();const Qq="phc_nXhUfFbyrW9gNvp8iBL83eWPUhAuAYJgcgqUJxwUbBgj",eK="https://us.i.posthog.com";function tK(){if(typeof window>"u")return"web";if(Hr())return"mac-app";if(Lf())return"win-app";const t=window.location.hostname;return t==="localhost"||t==="127.0.0.1"?"cli-localhost":"web"}function vS(t){gS.init(Qq,{api_host:eK,capture_pageview:"history_change",autocapture:!1,disable_session_recording:!0,respect_dnt:!0,persistence:"localStorage"}),gS.register({shell:t})}function nK(){if(!(typeof window>"u"))try{const t=tK();if(t==="web"){vS(t);return}fetch("/functions/tokentracker-telemetry-pref").then(e=>e.ok?e.json():null).then(e=>{e&&e.disabled===!1&&vS(t)}).catch(()=>{})}catch{}}nK();const rK=oL([{path:"*",element:R.jsx(OW,{})}]);YA.createRoot(document.getElementById("root")).render(R.jsx(Pl.StrictMode,{children:R.jsx(L9,{children:R.jsx(z9,{children:R.jsx(JM,{children:R.jsx(XM,{children:R.jsx(yL,{router:rK})})})})})}));export{eV as $,UK as A,qK as B,$K as C,vK as D,Kt as E,HK as F,CK as G,YK as H,OK as I,Fp as J,lC as K,xf as L,B0 as M,xe as N,Jh as O,PK as P,xK as Q,Pl as R,Au as S,YN as T,oY as U,zK as V,fK as W,p0 as X,pK as Y,c5 as Z,pB as _,zn as a,xC as a$,Bt as a0,jC as a1,yo as a2,Lf as a3,jK as a4,J$ as a5,ZK as a6,LN as a7,Un as a8,bK as a9,vW as aA,B_ as aB,eM as aC,hY as aD,dK as aE,RK as aF,$l as aG,EK as aH,Rf as aI,qN as aJ,fB as aK,fZ as aL,BN as aM,BK as aN,aK as aO,ZD as aP,f0 as aQ,Cp as aR,cx as aS,AK as aT,MC as aU,DC as aV,kK as aW,Rl as aX,Rp as aY,kC as aZ,wC as a_,GM as aa,ed as ab,rB as ac,ss as ad,sY as ae,MK as af,SK as ag,hM as ah,mK as ai,gK as aj,pZ as ak,NK as al,wK as am,yK as an,JK as ao,eB as ap,uY as aq,dY as ar,j5 as as,B2 as at,cY as au,_r as av,Ul as aw,nB as ax,Tp as ay,db as az,g0 as b,GY as b$,PC as b0,SC as b1,zN as b2,hZ as b3,Hr as b4,hu as b5,tY as b6,QK as b7,H5 as b8,id as b9,_Y as bA,yY as bB,bY as bC,xY as bD,wY as bE,K0 as bF,Nu as bG,DV as bH,fo as bI,eb as bJ,ya as bK,K5 as bL,to as bM,no as bN,FY as bO,OY as bP,Ei as bQ,nZ as bR,xV as bS,tZ as bT,sZ as bU,iZ as bV,YY as bW,WH as bX,pa as bY,cZ as bZ,fv as b_,Gr as ba,Yl as bb,Kl as bc,BH as bd,wV as be,eP as bf,ib as bg,eo as bh,Ti as bi,KY as bj,c4 as bk,GH as bl,eZ as bm,SH as bn,wH as bo,tV as bp,mY as bq,pY as br,PY as bs,SY as bt,CY as bu,UN as bv,fY as bw,gY as bx,vY as by,kY as bz,Cn as c,ZV as c$,JV as c0,qY as c1,JY as c2,_u as c3,dZ as c4,QY as c5,PH as c6,yH as c7,fs as c8,j9 as c9,oZ as cA,X5 as cB,IY as cC,DY as cD,MY as cE,NY as cF,VV as cG,Q5 as cH,TY as cI,ZY as cJ,Z5 as cK,_V as cL,rZ as cM,$V as cN,lZ as cO,XY as cP,nb as cQ,uZ as cR,aZ as cS,LY as cT,qp as cU,KH as cV,rb as cW,qH as cX,xH as cY,XV as cZ,WY as c_,o0 as ca,eY as cb,XK as cc,IV as cd,BV as ce,PV as cf,Y2 as cg,Ff as ch,SV as ci,z_ as cj,G5 as ck,EY as cl,EV as cm,AY as cn,ka as co,W5 as cp,RY as cq,RV as cr,AV as cs,y4 as ct,$Y as cu,UY as cv,BY as cw,VY as cx,HY as cy,kl as cz,ps as d,jY as d0,zY as d1,tb as d2,X2 as d3,ob as d4,nY as d5,iY as d6,rY as d7,aY as d8,Xu as d9,IK as da,DK as db,LK as dc,Ya as dd,Lx as e,Ot as f,XU as g,vu as h,YO as i,R as j,cC as k,$n as l,Il as m,hK as n,sM as o,KK as p,VK as q,k as r,kM as s,wM as t,m0 as u,WK as v,FK as w,_K as x,TK as y,GK as z};