diff options
-rw-r--r-- | assets/browser-DaXFb0Yh.js (renamed from assets/browser-Dy5hm7Fp.js) | 2 | ||||
-rw-r--r-- | assets/index-CCYnKuN0.js (renamed from assets/index-DasNLDZn.js) | 4 | ||||
-rw-r--r-- | index.html | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/assets/browser-Dy5hm7Fp.js b/assets/browser-DaXFb0Yh.js index ce491a0..f06ba59 100644 --- a/assets/browser-Dy5hm7Fp.js +++ b/assets/browser-DaXFb0Yh.js @@ -1 +1 @@ -import{g as a}from"./index-DasNLDZn.js";function f(t,s){for(var o=0;o<s.length;o++){const e=s[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const n=Object.getOwnPropertyDescriptor(e,r);n&&Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var c=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")};const i=a(c),u=f({__proto__:null,default:i},[c]);export{u as b}; +import{g as a}from"./index-CCYnKuN0.js";function f(t,s){for(var o=0;o<s.length;o++){const e=s[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const n=Object.getOwnPropertyDescriptor(e,r);n&&Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var c=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")};const i=a(c),u=f({__proto__:null,default:i},[c]);export{u as b}; diff --git a/assets/index-DasNLDZn.js b/assets/index-CCYnKuN0.js index f5e78e9..5b64f05 100644 --- a/assets/index-DasNLDZn.js +++ b/assets/index-CCYnKuN0.js @@ -64,7 +64,7 @@ Error generating stack: `+s.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */const g_="6";try{window.__reactRouterVersion=g_}catch{}const m_="startTransition",Yh=p0[m_];function y_(t){let{basename:e,children:n,future:i,window:r}=t,s=E.useRef();s.current==null&&(s.current=Ev({window:r,v5Compat:!0}));let o=s.current,[a,l]=E.useState({action:o.action,location:o.location}),{v7_startTransition:u}=i||{},c=E.useCallback(h=>{u&&Yh?Yh(()=>l(h)):l(h)},[l,u]);return E.useLayoutEffect(()=>o.listen(c),[o,c]),E.createElement(f_,{basename:e,children:n,location:a.location,navigationType:a.action,navigator:o,future:i})}var Gh;(function(t){t.UseScrollRestoration="useScrollRestoration",t.UseSubmit="useSubmit",t.UseSubmitFetcher="useSubmitFetcher",t.UseFetcher="useFetcher",t.useViewTransitionState="useViewTransitionState"})(Gh||(Gh={}));var qh;(function(t){t.UseFetcher="useFetcher",t.UseFetchers="useFetchers",t.UseScrollRestoration="useScrollRestoration"})(qh||(qh={}));const v_="modulepreload",__=function(t,e){return new URL(t,e).href},Qh={},Li=function(e,n,i){let r=Promise.resolve();if(n&&n.length>0){const s=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),a=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.all(n.map(l=>{if(l=__(l,i),l in Qh)return;Qh[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!i)for(let f=s.length-1;f>=0;f--){const m=s[f];if(m.href===l&&(!u||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":v_,u||(d.as="script",d.crossOrigin=""),d.href=l,a&&d.setAttribute("nonce",a),document.head.appendChild(d),u)return new Promise((f,m)=>{d.addEventListener("load",f),d.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return r.then(()=>e()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})},w_=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...n)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:i})=>i(...n)):e=fetch,(...n)=>e(...n)};class pc extends Error{constructor(e,n="FunctionsError",i){super(e),this.name=n,this.context=i}}class x_ extends pc{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class k_ extends pc{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class b_ extends pc{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var eu;(function(t){t.Any="any",t.ApNortheast1="ap-northeast-1",t.ApNortheast2="ap-northeast-2",t.ApSouth1="ap-south-1",t.ApSoutheast1="ap-southeast-1",t.ApSoutheast2="ap-southeast-2",t.CaCentral1="ca-central-1",t.EuCentral1="eu-central-1",t.EuWest1="eu-west-1",t.EuWest2="eu-west-2",t.EuWest3="eu-west-3",t.SaEast1="sa-east-1",t.UsEast1="us-east-1",t.UsWest1="us-west-1",t.UsWest2="us-west-2"})(eu||(eu={}));var S_=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};class C_{constructor(e,{headers:n={},customFetch:i,region:r=eu.Any}={}){this.url=e,this.headers=n,this.region=r,this.fetch=w_(i)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e,n={}){var i;return S_(this,void 0,void 0,function*(){try{const{headers:r,method:s,body:o}=n;let a={},{region:l}=n;l||(l=this.region),l&&l!=="any"&&(a["x-region"]=l);let u;o&&(r&&!Object.prototype.hasOwnProperty.call(r,"Content-Type")||!r)&&(typeof Blob<"u"&&o instanceof Blob||o instanceof ArrayBuffer?(a["Content-Type"]="application/octet-stream",u=o):typeof o=="string"?(a["Content-Type"]="text/plain",u=o):typeof FormData<"u"&&o instanceof FormData?u=o:(a["Content-Type"]="application/json",u=JSON.stringify(o)));const c=yield this.fetch(`${this.url}/${e}`,{method:s||"POST",headers:Object.assign(Object.assign(Object.assign({},a),this.headers),r),body:u}).catch(m=>{throw new x_(m)}),h=c.headers.get("x-relay-error");if(h&&h==="true")throw new k_(c);if(!c.ok)throw new b_(c);let d=((i=c.headers.get("Content-Type"))!==null&&i!==void 0?i:"text/plain").split(";")[0].trim(),f;return d==="application/json"?f=yield c.json():d==="application/octet-stream"?f=yield c.blob():d==="text/event-stream"?f=c:d==="multipart/form-data"?f=yield c.formData():f=yield c.text(),{data:f,error:null}}catch(r){return{data:null,error:r}}})}}var E_=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")},Ri=E_();const P_=Ri.fetch,gc=Ri.fetch.bind(Ri),Xg=Ri.Headers,T_=Ri.Request,O_=Ri.Response,ls=Object.freeze(Object.defineProperty({__proto__:null,Headers:Xg,Request:T_,Response:O_,default:gc,fetch:P_},Symbol.toStringTag,{value:"Module"}));class M_ extends Error{constructor(e){super(e.message),this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}}class L_{constructor(e){this.shouldThrowOnError=!1,this.method=e.method,this.url=e.url,this.headers=e.headers,this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=e.shouldThrowOnError,this.signal=e.signal,this.isMaybeSingle=e.isMaybeSingle,e.fetch?this.fetch=e.fetch:typeof fetch>"u"?this.fetch=gc:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}then(e,n){this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers["Accept-Profile"]=this.schema:this.headers["Content-Profile"]=this.schema),this.method!=="GET"&&this.method!=="HEAD"&&(this.headers["Content-Type"]="application/json");const i=this.fetch;let r=i(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async s=>{var o,a,l;let u=null,c=null,h=null,d=s.status,f=s.statusText;if(s.ok){if(this.method!=="HEAD"){const p=await s.text();p===""||(this.headers.Accept==="text/csv"||this.headers.Accept&&this.headers.Accept.includes("application/vnd.pgrst.plan+text")?c=p:c=JSON.parse(p))}const y=(o=this.headers.Prefer)===null||o===void 0?void 0:o.match(/count=(exact|planned|estimated)/),v=(a=s.headers.get("content-range"))===null||a===void 0?void 0:a.split("/");y&&v&&v.length>1&&(h=parseInt(v[1])),this.isMaybeSingle&&this.method==="GET"&&Array.isArray(c)&&(c.length>1?(u={code:"PGRST116",details:`Results contain ${c.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},c=null,h=null,d=406,f="Not Acceptable"):c.length===1?c=c[0]:c=null)}else{const y=await s.text();try{u=JSON.parse(y),Array.isArray(u)&&s.status===404&&(c=[],u=null,d=200,f="OK")}catch{s.status===404&&y===""?(d=204,f="No Content"):u={message:y}}if(u&&this.isMaybeSingle&&(!((l=u==null?void 0:u.details)===null||l===void 0)&&l.includes("0 rows"))&&(u=null,d=200,f="OK"),u&&this.shouldThrowOnError)throw new M_(u)}return{error:u,data:c,count:h,status:d,statusText:f}});return this.shouldThrowOnError||(r=r.catch(s=>{var o,a,l;return{error:{message:`${(o=s==null?void 0:s.name)!==null&&o!==void 0?o:"FetchError"}: ${s==null?void 0:s.message}`,details:`${(a=s==null?void 0:s.stack)!==null&&a!==void 0?a:""}`,hint:"",code:`${(l=s==null?void 0:s.code)!==null&&l!==void 0?l:""}`},data:null,count:null,status:0,statusText:""}})),r.then(e,n)}}class R_ extends L_{select(e){let n=!1;const i=(e??"*").split("").map(r=>/\s/.test(r)&&!n?"":(r==='"'&&(n=!n),r)).join("");return this.url.searchParams.set("select",i),this.headers.Prefer&&(this.headers.Prefer+=","),this.headers.Prefer+="return=representation",this}order(e,{ascending:n=!0,nullsFirst:i,foreignTable:r,referencedTable:s=r}={}){const o=s?`${s}.order`:"order",a=this.url.searchParams.get(o);return this.url.searchParams.set(o,`${a?`${a},`:""}${e}.${n?"asc":"desc"}${i===void 0?"":i?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:n,referencedTable:i=n}={}){const r=typeof i>"u"?"limit":`${i}.limit`;return this.url.searchParams.set(r,`${e}`),this}range(e,n,{foreignTable:i,referencedTable:r=i}={}){const s=typeof r>"u"?"offset":`${r}.offset`,o=typeof r>"u"?"limit":`${r}.limit`;return this.url.searchParams.set(s,`${e}`),this.url.searchParams.set(o,`${n-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.Accept="application/vnd.pgrst.object+json",this}maybeSingle(){return this.method==="GET"?this.headers.Accept="application/json":this.headers.Accept="application/vnd.pgrst.object+json",this.isMaybeSingle=!0,this}csv(){return this.headers.Accept="text/csv",this}geojson(){return this.headers.Accept="application/geo+json",this}explain({analyze:e=!1,verbose:n=!1,settings:i=!1,buffers:r=!1,wal:s=!1,format:o="text"}={}){var a;const l=[e?"analyze":null,n?"verbose":null,i?"settings":null,r?"buffers":null,s?"wal":null].filter(Boolean).join("|"),u=(a=this.headers.Accept)!==null&&a!==void 0?a:"application/json";return this.headers.Accept=`application/vnd.pgrst.plan+${o}; for="${u}"; options=${l};`,o==="json"?this:this}rollback(){var e;return((e=this.headers.Prefer)!==null&&e!==void 0?e:"").trim().length>0?this.headers.Prefer+=",tx=rollback":this.headers.Prefer="tx=rollback",this}returns(){return this}}class ri extends R_{eq(e,n){return this.url.searchParams.append(e,`eq.${n}`),this}neq(e,n){return this.url.searchParams.append(e,`neq.${n}`),this}gt(e,n){return this.url.searchParams.append(e,`gt.${n}`),this}gte(e,n){return this.url.searchParams.append(e,`gte.${n}`),this}lt(e,n){return this.url.searchParams.append(e,`lt.${n}`),this}lte(e,n){return this.url.searchParams.append(e,`lte.${n}`),this}like(e,n){return this.url.searchParams.append(e,`like.${n}`),this}likeAllOf(e,n){return this.url.searchParams.append(e,`like(all).{${n.join(",")}}`),this}likeAnyOf(e,n){return this.url.searchParams.append(e,`like(any).{${n.join(",")}}`),this}ilike(e,n){return this.url.searchParams.append(e,`ilike.${n}`),this}ilikeAllOf(e,n){return this.url.searchParams.append(e,`ilike(all).{${n.join(",")}}`),this}ilikeAnyOf(e,n){return this.url.searchParams.append(e,`ilike(any).{${n.join(",")}}`),this}is(e,n){return this.url.searchParams.append(e,`is.${n}`),this}in(e,n){const i=Array.from(new Set(n)).map(r=>typeof r=="string"&&new RegExp("[,()]").test(r)?`"${r}"`:`${r}`).join(",");return this.url.searchParams.append(e,`in.(${i})`),this}contains(e,n){return typeof n=="string"?this.url.searchParams.append(e,`cs.${n}`):Array.isArray(n)?this.url.searchParams.append(e,`cs.{${n.join(",")}}`):this.url.searchParams.append(e,`cs.${JSON.stringify(n)}`),this}containedBy(e,n){return typeof n=="string"?this.url.searchParams.append(e,`cd.${n}`):Array.isArray(n)?this.url.searchParams.append(e,`cd.{${n.join(",")}}`):this.url.searchParams.append(e,`cd.${JSON.stringify(n)}`),this}rangeGt(e,n){return this.url.searchParams.append(e,`sr.${n}`),this}rangeGte(e,n){return this.url.searchParams.append(e,`nxl.${n}`),this}rangeLt(e,n){return this.url.searchParams.append(e,`sl.${n}`),this}rangeLte(e,n){return this.url.searchParams.append(e,`nxr.${n}`),this}rangeAdjacent(e,n){return this.url.searchParams.append(e,`adj.${n}`),this}overlaps(e,n){return typeof n=="string"?this.url.searchParams.append(e,`ov.${n}`):this.url.searchParams.append(e,`ov.{${n.join(",")}}`),this}textSearch(e,n,{config:i,type:r}={}){let s="";r==="plain"?s="pl":r==="phrase"?s="ph":r==="websearch"&&(s="w");const o=i===void 0?"":`(${i})`;return this.url.searchParams.append(e,`${s}fts${o}.${n}`),this}match(e){return Object.entries(e).forEach(([n,i])=>{this.url.searchParams.append(n,`eq.${i}`)}),this}not(e,n,i){return this.url.searchParams.append(e,`not.${n}.${i}`),this}or(e,{foreignTable:n,referencedTable:i=n}={}){const r=i?`${i}.or`:"or";return this.url.searchParams.append(r,`(${e})`),this}filter(e,n,i){return this.url.searchParams.append(e,`${n}.${i}`),this}}class I_{constructor(e,{headers:n={},schema:i,fetch:r}){this.url=e,this.headers=n,this.schema=i,this.fetch=r}select(e,{head:n=!1,count:i}={}){const r=n?"HEAD":"GET";let s=!1;const o=(e??"*").split("").map(a=>/\s/.test(a)&&!s?"":(a==='"'&&(s=!s),a)).join("");return this.url.searchParams.set("select",o),i&&(this.headers.Prefer=`count=${i}`),new ri({method:r,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch,allowEmpty:!1})}insert(e,{count:n,defaultToNull:i=!0}={}){const r="POST",s=[];if(this.headers.Prefer&&s.push(this.headers.Prefer),n&&s.push(`count=${n}`),i||s.push("missing=default"),this.headers.Prefer=s.join(","),Array.isArray(e)){const o=e.reduce((a,l)=>a.concat(Object.keys(l)),[]);if(o.length>0){const a=[...new Set(o)].map(l=>`"${l}"`);this.url.searchParams.set("columns",a.join(","))}}return new ri({method:r,url:this.url,headers:this.headers,schema:this.schema,body:e,fetch:this.fetch,allowEmpty:!1})}upsert(e,{onConflict:n,ignoreDuplicates:i=!1,count:r,defaultToNull:s=!0}={}){const o="POST",a=[`resolution=${i?"ignore":"merge"}-duplicates`];if(n!==void 0&&this.url.searchParams.set("on_conflict",n),this.headers.Prefer&&a.push(this.headers.Prefer),r&&a.push(`count=${r}`),s||a.push("missing=default"),this.headers.Prefer=a.join(","),Array.isArray(e)){const l=e.reduce((u,c)=>u.concat(Object.keys(c)),[]);if(l.length>0){const u=[...new Set(l)].map(c=>`"${c}"`);this.url.searchParams.set("columns",u.join(","))}}return new ri({method:o,url:this.url,headers:this.headers,schema:this.schema,body:e,fetch:this.fetch,allowEmpty:!1})}update(e,{count:n}={}){const i="PATCH",r=[];return this.headers.Prefer&&r.push(this.headers.Prefer),n&&r.push(`count=${n}`),this.headers.Prefer=r.join(","),new ri({method:i,url:this.url,headers:this.headers,schema:this.schema,body:e,fetch:this.fetch,allowEmpty:!1})}delete({count:e}={}){const n="DELETE",i=[];return e&&i.push(`count=${e}`),this.headers.Prefer&&i.unshift(this.headers.Prefer),this.headers.Prefer=i.join(","),new ri({method:n,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch,allowEmpty:!1})}}const A_="1.15.2",D_={"X-Client-Info":`postgrest-js/${A_}`};class mc{constructor(e,{headers:n={},schema:i,fetch:r}={}){this.url=e,this.headers=Object.assign(Object.assign({},D_),n),this.schemaName=i,this.fetch=r}from(e){const n=new URL(`${this.url}/${e}`);return new I_(n,{headers:Object.assign({},this.headers),schema:this.schemaName,fetch:this.fetch})}schema(e){return new mc(this.url,{headers:this.headers,schema:e,fetch:this.fetch})}rpc(e,n={},{head:i=!1,get:r=!1,count:s}={}){let o;const a=new URL(`${this.url}/rpc/${e}`);let l;i||r?(o=i?"HEAD":"GET",Object.entries(n).filter(([c,h])=>h!==void 0).map(([c,h])=>[c,Array.isArray(h)?`{${h.join(",")}}`:`${h}`]).forEach(([c,h])=>{a.searchParams.append(c,h)})):(o="POST",l=n);const u=Object.assign({},this.headers);return s&&(u.Prefer=`count=${s}`),new ri({method:o,url:a,headers:u,schema:this.schemaName,body:l,fetch:this.fetch,allowEmpty:!1})}}const j_="2.9.5",N_={"X-Client-Info":`realtime-js/${j_}`},z_="1.0.0",Jg=1e4,F_=1e3;var bi;(function(t){t[t.connecting=0]="connecting",t[t.open=1]="open",t[t.closing=2]="closing",t[t.closed=3]="closed"})(bi||(bi={}));var Be;(function(t){t.closed="closed",t.errored="errored",t.joined="joined",t.joining="joining",t.leaving="leaving"})(Be||(Be={}));var ht;(function(t){t.close="phx_close",t.error="phx_error",t.join="phx_join",t.reply="phx_reply",t.leave="phx_leave",t.access_token="access_token"})(ht||(ht={}));var tu;(function(t){t.websocket="websocket"})(tu||(tu={}));var In;(function(t){t.Connecting="connecting",t.Open="open",t.Closing="closing",t.Closed="closed"})(In||(In={}));class Zg{constructor(e,n){this.callback=e,this.timerCalc=n,this.timer=void 0,this.tries=0,this.callback=e,this.timerCalc=n}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}}class $_{constructor(){this.HEADER_LENGTH=1}decode(e,n){return e.constructor===ArrayBuffer?n(this._binaryDecode(e)):n(typeof e=="string"?JSON.parse(e):{})}_binaryDecode(e){const n=new DataView(e),i=new TextDecoder;return this._decodeBroadcast(e,n,i)}_decodeBroadcast(e,n,i){const r=n.getUint8(1),s=n.getUint8(2);let o=this.HEADER_LENGTH+2;const a=i.decode(e.slice(o,o+r));o=o+r;const l=i.decode(e.slice(o,o+s));o=o+s;const u=JSON.parse(i.decode(e.slice(o,e.byteLength)));return{ref:null,topic:a,event:l,payload:u}}}class Va{constructor(e,n,i={},r=Jg){this.channel=e,this.event=n,this.payload=i,this.timeout=r,this.sent=!1,this.timeoutTimer=void 0,this.ref="",this.receivedResp=null,this.recHooks=[],this.refEvent=null}resend(e){this.timeout=e,this._cancelRefEvent(),this.ref="",this.refEvent=null,this.receivedResp=null,this.sent=!1,this.send()}send(){this._hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload,ref:this.ref,join_ref:this.channel._joinRef()}))}updatePayload(e){this.payload=Object.assign(Object.assign({},this.payload),e)}receive(e,n){var i;return this._hasReceived(e)&&n((i=this.receivedResp)===null||i===void 0?void 0:i.response),this.recHooks.push({status:e,callback:n}),this}startTimeout(){if(this.timeoutTimer)return;this.ref=this.channel.socket._makeRef(),this.refEvent=this.channel._replyEventName(this.ref);const e=n=>{this._cancelRefEvent(),this._cancelTimeout(),this.receivedResp=n,this._matchReceive(n)};this.channel._on(this.refEvent,{},e),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}trigger(e,n){this.refEvent&&this.channel._trigger(this.refEvent,{status:e,response:n})}destroy(){this._cancelRefEvent(),this._cancelTimeout()}_cancelRefEvent(){this.refEvent&&this.channel._off(this.refEvent,{})}_cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=void 0}_matchReceive({status:e,response:n}){this.recHooks.filter(i=>i.status===e).forEach(i=>i.callback(n))}_hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}}var Xh;(function(t){t.SYNC="sync",t.JOIN="join",t.LEAVE="leave"})(Xh||(Xh={}));class kr{constructor(e,n){this.channel=e,this.state={},this.pendingDiffs=[],this.joinRef=null,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const i=(n==null?void 0:n.events)||{state:"presence_state",diff:"presence_diff"};this.channel._on(i.state,{},r=>{const{onJoin:s,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel._joinRef(),this.state=kr.syncState(this.state,r,s,o),this.pendingDiffs.forEach(l=>{this.state=kr.syncDiff(this.state,l,s,o)}),this.pendingDiffs=[],a()}),this.channel._on(i.diff,{},r=>{const{onJoin:s,onLeave:o,onSync:a}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=kr.syncDiff(this.state,r,s,o),a())}),this.onJoin((r,s,o)=>{this.channel._trigger("presence",{event:"join",key:r,currentPresences:s,newPresences:o})}),this.onLeave((r,s,o)=>{this.channel._trigger("presence",{event:"leave",key:r,currentPresences:s,leftPresences:o})}),this.onSync(()=>{this.channel._trigger("presence",{event:"sync"})})}static syncState(e,n,i,r){const s=this.cloneDeep(e),o=this.transformState(n),a={},l={};return this.map(s,(u,c)=>{o[u]||(l[u]=c)}),this.map(o,(u,c)=>{const h=s[u];if(h){const d=c.map(v=>v.presence_ref),f=h.map(v=>v.presence_ref),m=c.filter(v=>f.indexOf(v.presence_ref)<0),y=h.filter(v=>d.indexOf(v.presence_ref)<0);m.length>0&&(a[u]=m),y.length>0&&(l[u]=y)}else a[u]=c}),this.syncDiff(s,{joins:a,leaves:l},i,r)}static syncDiff(e,n,i,r){const{joins:s,leaves:o}={joins:this.transformState(n.joins),leaves:this.transformState(n.leaves)};return i||(i=()=>{}),r||(r=()=>{}),this.map(s,(a,l)=>{var u;const c=(u=e[a])!==null&&u!==void 0?u:[];if(e[a]=this.cloneDeep(l),c.length>0){const h=e[a].map(f=>f.presence_ref),d=c.filter(f=>h.indexOf(f.presence_ref)<0);e[a].unshift(...d)}i(a,c,l)}),this.map(o,(a,l)=>{let u=e[a];if(!u)return;const c=l.map(h=>h.presence_ref);u=u.filter(h=>c.indexOf(h.presence_ref)<0),e[a]=u,r(a,u,l),u.length===0&&delete e[a]}),e}static map(e,n){return Object.getOwnPropertyNames(e).map(i=>n(i,e[i]))}static transformState(e){return e=this.cloneDeep(e),Object.getOwnPropertyNames(e).reduce((n,i)=>{const r=e[i];return"metas"in r?n[i]=r.metas.map(s=>(s.presence_ref=s.phx_ref,delete s.phx_ref,delete s.phx_ref_prev,s)):n[i]=r,n},{})}static cloneDeep(e){return JSON.parse(JSON.stringify(e))}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel._joinRef()}}var G;(function(t){t.abstime="abstime",t.bool="bool",t.date="date",t.daterange="daterange",t.float4="float4",t.float8="float8",t.int2="int2",t.int4="int4",t.int4range="int4range",t.int8="int8",t.int8range="int8range",t.json="json",t.jsonb="jsonb",t.money="money",t.numeric="numeric",t.oid="oid",t.reltime="reltime",t.text="text",t.time="time",t.timestamp="timestamp",t.timestamptz="timestamptz",t.timetz="timetz",t.tsrange="tsrange",t.tstzrange="tstzrange"})(G||(G={}));const Jh=(t,e,n={})=>{var i;const r=(i=n.skipTypes)!==null&&i!==void 0?i:[];return Object.keys(e).reduce((s,o)=>(s[o]=U_(o,t,e,r),s),{})},U_=(t,e,n,i)=>{const r=e.find(a=>a.name===t),s=r==null?void 0:r.type,o=n[t];return s&&!i.includes(s)?em(s,o):nu(o)},em=(t,e)=>{if(t.charAt(0)==="_"){const n=t.slice(1,t.length);return W_(e,n)}switch(t){case G.bool:return B_(e);case G.float4:case G.float8:case G.int2:case G.int4:case G.int8:case G.numeric:case G.oid:return V_(e);case G.json:case G.jsonb:return H_(e);case G.timestamp:return K_(e);case G.abstime:case G.date:case G.daterange:case G.int4range:case G.int8range:case G.money:case G.reltime:case G.text:case G.time:case G.timestamptz:case G.timetz:case G.tsrange:case G.tstzrange:return nu(e);default:return nu(e)}},nu=t=>t,B_=t=>{switch(t){case"t":return!0;case"f":return!1;default:return t}},V_=t=>{if(typeof t=="string"){const e=parseFloat(t);if(!Number.isNaN(e))return e}return t},H_=t=>{if(typeof t=="string")try{return JSON.parse(t)}catch(e){return console.log(`JSON parse error: ${e}`),t}return t},W_=(t,e)=>{if(typeof t!="string")return t;const n=t.length-1,i=t[n];if(t[0]==="{"&&i==="}"){let s;const o=t.slice(1,n);try{s=JSON.parse("["+o+"]")}catch{s=o?o.split(","):[]}return s.map(a=>em(e,a))}return t},K_=t=>typeof t=="string"?t.replace(" ","T"):t;var Zh;(function(t){t.ALL="*",t.INSERT="INSERT",t.UPDATE="UPDATE",t.DELETE="DELETE"})(Zh||(Zh={}));var ed;(function(t){t.BROADCAST="broadcast",t.PRESENCE="presence",t.POSTGRES_CHANGES="postgres_changes"})(ed||(ed={}));var td;(function(t){t.SUBSCRIBED="SUBSCRIBED",t.TIMED_OUT="TIMED_OUT",t.CLOSED="CLOSED",t.CHANNEL_ERROR="CHANNEL_ERROR"})(td||(td={}));class yc{constructor(e,n={config:{}},i){this.topic=e,this.params=n,this.socket=i,this.bindings={},this.state=Be.closed,this.joinedOnce=!1,this.pushBuffer=[],this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:""}},n.config),this.timeout=this.socket.timeout,this.joinPush=new Va(this,ht.join,this.params,this.timeout),this.rejoinTimer=new Zg(()=>this._rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=Be.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(r=>r.send()),this.pushBuffer=[]}),this._onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this._joinRef()}`),this.state=Be.closed,this.socket._remove(this)}),this._onError(r=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,r),this.state=Be.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{this._isJoining()&&(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=Be.errored,this.rejoinTimer.scheduleTimeout())}),this._on(ht.reply,{},(r,s)=>{this._trigger(this._replyEventName(s),r)}),this.presence=new kr(this),this.broadcastEndpointURL=this._broadcastEndpointURL()}subscribe(e,n=this.timeout){var i,r;if(this.socket.isConnected()||this.socket.connect(),this.joinedOnce)throw"tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance";{const{config:{broadcast:s,presence:o}}=this.params;this._onError(u=>e&&e("CHANNEL_ERROR",u)),this._onClose(()=>e&&e("CLOSED"));const a={},l={broadcast:s,presence:o,postgres_changes:(r=(i=this.bindings.postgres_changes)===null||i===void 0?void 0:i.map(u=>u.filter))!==null&&r!==void 0?r:[]};this.socket.accessToken&&(a.access_token=this.socket.accessToken),this.updateJoinPayload(Object.assign({config:l},a)),this.joinedOnce=!0,this._rejoin(n),this.joinPush.receive("ok",({postgres_changes:u})=>{var c;if(this.socket.accessToken&&this.socket.setAuth(this.socket.accessToken),u===void 0){e&&e("SUBSCRIBED");return}else{const h=this.bindings.postgres_changes,d=(c=h==null?void 0:h.length)!==null&&c!==void 0?c:0,f=[];for(let m=0;m<d;m++){const y=h[m],{filter:{event:v,schema:p,table:g,filter:_}}=y,w=u&&u[m];if(w&&w.event===v&&w.schema===p&&w.table===g&&w.filter===_)f.push(Object.assign(Object.assign({},y),{id:w.id}));else{this.unsubscribe(),e&&e("CHANNEL_ERROR",new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=f,e&&e("SUBSCRIBED");return}}).receive("error",u=>{e&&e("CHANNEL_ERROR",new Error(JSON.stringify(Object.values(u).join(", ")||"error")))}).receive("timeout",()=>{e&&e("TIMED_OUT")})}return this}presenceState(){return this.presence.state}async track(e,n={}){return await this.send({type:"presence",event:"track",payload:e},n.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,n,i){return this._on(e,n,i)}async send(e,n={}){var i,r;if(!this._canPush()&&e.type==="broadcast"){const{event:s,payload:o}=e,a={method:"POST",headers:{apikey:(i=this.socket.apiKey)!==null&&i!==void 0?i:"","Content-Type":"application/json"},body:JSON.stringify({messages:[{topic:this.subTopic,event:s,payload:o}]})};try{return(await this._fetchWithTimeout(this.broadcastEndpointURL,a,(r=n.timeout)!==null&&r!==void 0?r:this.timeout)).ok?"ok":"error"}catch(l){return l.name==="AbortError"?"timed out":"error"}}else return new Promise(s=>{var o,a,l;const u=this._push(e.type,e,n.timeout||this.timeout);e.type==="broadcast"&&!(!((l=(a=(o=this.params)===null||o===void 0?void 0:o.config)===null||a===void 0?void 0:a.broadcast)===null||l===void 0)&&l.ack)&&s("ok"),u.receive("ok",()=>s("ok")),u.receive("error",()=>s("error")),u.receive("timeout",()=>s("timed out"))})}updateJoinPayload(e){this.joinPush.updatePayload(e)}unsubscribe(e=this.timeout){this.state=Be.leaving;const n=()=>{this.socket.log("channel",`leave ${this.topic}`),this._trigger(ht.close,"leave",this._joinRef())};return this.rejoinTimer.reset(),this.joinPush.destroy(),new Promise(i=>{const r=new Va(this,ht.leave,{},e);r.receive("ok",()=>{n(),i("ok")}).receive("timeout",()=>{n(),i("timed out")}).receive("error",()=>{i("error")}),r.send(),this._canPush()||r.trigger("ok",{})})}_broadcastEndpointURL(){let e=this.socket.endPoint;return e=e.replace(/^ws/i,"http"),e=e.replace(/(\/socket\/websocket|\/socket|\/websocket)\/?$/i,""),e.replace(/\/+$/,"")+"/api/broadcast"}async _fetchWithTimeout(e,n,i){const r=new AbortController,s=setTimeout(()=>r.abort(),i),o=await this.socket.fetch(e,Object.assign(Object.assign({},n),{signal:r.signal}));return clearTimeout(s),o}_push(e,n,i=this.timeout){if(!this.joinedOnce)throw`tried to push '${e}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let r=new Va(this,e,n,i);return this._canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}_onMessage(e,n,i){return n}_isMember(e){return this.topic===e}_joinRef(){return this.joinPush.ref}_trigger(e,n,i){var r,s;const o=e.toLocaleLowerCase(),{close:a,error:l,leave:u,join:c}=ht;if(i&&[a,l,u,c].indexOf(o)>=0&&i!==this._joinRef())return;let d=this._onMessage(o,n,i);if(n&&!d)throw"channel onMessage callbacks must return the payload, modified or unmodified";["insert","update","delete"].includes(o)?(r=this.bindings.postgres_changes)===null||r===void 0||r.filter(f=>{var m,y,v;return((m=f.filter)===null||m===void 0?void 0:m.event)==="*"||((v=(y=f.filter)===null||y===void 0?void 0:y.event)===null||v===void 0?void 0:v.toLocaleLowerCase())===o}).map(f=>f.callback(d,i)):(s=this.bindings[o])===null||s===void 0||s.filter(f=>{var m,y,v,p,g,_;if(["broadcast","presence","postgres_changes"].includes(o))if("id"in f){const w=f.id,x=(m=f.filter)===null||m===void 0?void 0:m.event;return w&&((y=n.ids)===null||y===void 0?void 0:y.includes(w))&&(x==="*"||(x==null?void 0:x.toLocaleLowerCase())===((v=n.data)===null||v===void 0?void 0:v.type.toLocaleLowerCase()))}else{const w=(g=(p=f==null?void 0:f.filter)===null||p===void 0?void 0:p.event)===null||g===void 0?void 0:g.toLocaleLowerCase();return w==="*"||w===((_=n==null?void 0:n.event)===null||_===void 0?void 0:_.toLocaleLowerCase())}else return f.type.toLocaleLowerCase()===o}).map(f=>{if(typeof d=="object"&&"ids"in d){const m=d.data,{schema:y,table:v,commit_timestamp:p,type:g,errors:_}=m;d=Object.assign(Object.assign({},{schema:y,table:v,commit_timestamp:p,eventType:g,new:{},old:{},errors:_}),this._getPayloadRecords(m))}f.callback(d,i)})}_isClosed(){return this.state===Be.closed}_isJoined(){return this.state===Be.joined}_isJoining(){return this.state===Be.joining}_isLeaving(){return this.state===Be.leaving}_replyEventName(e){return`chan_reply_${e}`}_on(e,n,i){const r=e.toLocaleLowerCase(),s={type:r,filter:n,callback:i};return this.bindings[r]?this.bindings[r].push(s):this.bindings[r]=[s],this}_off(e,n){const i=e.toLocaleLowerCase();return this.bindings[i]=this.bindings[i].filter(r=>{var s;return!(((s=r.type)===null||s===void 0?void 0:s.toLocaleLowerCase())===i&&yc.isEqual(r.filter,n))}),this}static isEqual(e,n){if(Object.keys(e).length!==Object.keys(n).length)return!1;for(const i in e)if(e[i]!==n[i])return!1;return!0}_rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this._rejoin()}_onClose(e){this._on(ht.close,{},e)}_onError(e){this._on(ht.error,{},n=>e(n))}_canPush(){return this.socket.isConnected()&&this._isJoined()}_rejoin(e=this.timeout){this._isLeaving()||(this.socket._leaveOpenTopic(this.topic),this.state=Be.joining,this.joinPush.resend(e))}_getPayloadRecords(e){const n={new:{},old:{}};return(e.type==="INSERT"||e.type==="UPDATE")&&(n.new=Jh(e.columns,e.record)),(e.type==="UPDATE"||e.type==="DELETE")&&(n.old=Jh(e.columns,e.old_record)),n}}const Y_=()=>{},G_=typeof WebSocket<"u";class q_{constructor(e,n){var i;this.accessToken=null,this.apiKey=null,this.channels=[],this.endPoint="",this.headers=N_,this.params={},this.timeout=Jg,this.heartbeatIntervalMs=3e4,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.ref=0,this.logger=Y_,this.conn=null,this.sendBuffer=[],this.serializer=new $_,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this._resolveFetch=s=>{let o;return s?o=s:typeof fetch>"u"?o=(...a)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:l})=>l(...a)):o=fetch,(...a)=>o(...a)},this.endPoint=`${e}/${tu.websocket}`,n!=null&&n.transport?this.transport=n.transport:this.transport=null,n!=null&&n.params&&(this.params=n.params),n!=null&&n.headers&&(this.headers=Object.assign(Object.assign({},this.headers),n.headers)),n!=null&&n.timeout&&(this.timeout=n.timeout),n!=null&&n.logger&&(this.logger=n.logger),n!=null&&n.heartbeatIntervalMs&&(this.heartbeatIntervalMs=n.heartbeatIntervalMs);const r=(i=n==null?void 0:n.params)===null||i===void 0?void 0:i.apikey;r&&(this.accessToken=r,this.apiKey=r),this.reconnectAfterMs=n!=null&&n.reconnectAfterMs?n.reconnectAfterMs:s=>[1e3,2e3,5e3,1e4][s-1]||1e4,this.encode=n!=null&&n.encode?n.encode:(s,o)=>o(JSON.stringify(s)),this.decode=n!=null&&n.decode?n.decode:this.serializer.decode.bind(this.serializer),this.reconnectTimer=new Zg(async()=>{this.disconnect(),this.connect()},this.reconnectAfterMs),this.fetch=this._resolveFetch(n==null?void 0:n.fetch)}connect(){if(!this.conn){if(this.transport){this.conn=new this.transport(this._endPointURL(),void 0,{headers:this.headers});return}if(G_){this.conn=new WebSocket(this._endPointURL()),this.setupConnection();return}this.conn=new Q_(this._endPointURL(),void 0,{close:()=>{this.conn=null}}),Li(()=>import("./browser-Dy5hm7Fp.js").then(e=>e.b),[],import.meta.url).then(({default:e})=>{this.conn=new e(this._endPointURL(),void 0,{headers:this.headers}),this.setupConnection()})}}disconnect(e,n){this.conn&&(this.conn.onclose=function(){},e?this.conn.close(e,n??""):this.conn.close(),this.conn=null,this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.reconnectTimer.reset())}getChannels(){return this.channels}async removeChannel(e){const n=await e.unsubscribe();return this.channels.length===0&&this.disconnect(),n}async removeAllChannels(){const e=await Promise.all(this.channels.map(n=>n.unsubscribe()));return this.disconnect(),e}log(e,n,i){this.logger(e,n,i)}connectionState(){switch(this.conn&&this.conn.readyState){case bi.connecting:return In.Connecting;case bi.open:return In.Open;case bi.closing:return In.Closing;default:return In.Closed}}isConnected(){return this.connectionState()===In.Open}channel(e,n={config:{}}){const i=new yc(`realtime:${e}`,n,this);return this.channels.push(i),i}push(e){const{topic:n,event:i,payload:r,ref:s}=e,o=()=>{this.encode(e,a=>{var l;(l=this.conn)===null||l===void 0||l.send(a)})};this.log("push",`${n} ${i} (${s})`,r),this.isConnected()?o():this.sendBuffer.push(o)}setAuth(e){this.accessToken=e,this.channels.forEach(n=>{e&&n.updateJoinPayload({access_token:e}),n.joinedOnce&&n._isJoined()&&n._push(ht.access_token,{access_token:e})})}_makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}_leaveOpenTopic(e){let n=this.channels.find(i=>i.topic===e&&(i._isJoined()||i._isJoining()));n&&(this.log("transport",`leaving duplicate topic "${e}"`),n.unsubscribe())}_remove(e){this.channels=this.channels.filter(n=>n._joinRef()!==e._joinRef())}setupConnection(){this.conn&&(this.conn.binaryType="arraybuffer",this.conn.onopen=()=>this._onConnOpen(),this.conn.onerror=e=>this._onConnError(e),this.conn.onmessage=e=>this._onConnMessage(e),this.conn.onclose=e=>this._onConnClose(e))}_endPointURL(){return this._appendParams(this.endPoint,Object.assign({},this.params,{vsn:z_}))}_onConnMessage(e){this.decode(e.data,n=>{let{topic:i,event:r,payload:s,ref:o}=n;(o&&o===this.pendingHeartbeatRef||r===(s==null?void 0:s.type))&&(this.pendingHeartbeatRef=null),this.log("receive",`${s.status||""} ${i} ${r} ${o&&"("+o+")"||""}`,s),this.channels.filter(a=>a._isMember(i)).forEach(a=>a._trigger(r,s,o)),this.stateChangeCallbacks.message.forEach(a=>a(n))})}_onConnOpen(){this.log("transport",`connected to ${this._endPointURL()}`),this._flushSendBuffer(),this.reconnectTimer.reset(),this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=setInterval(()=>this._sendHeartbeat(),this.heartbeatIntervalMs),this.stateChangeCallbacks.open.forEach(e=>e())}_onConnClose(e){this.log("transport","close",e),this._triggerChanError(),this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(n=>n(e))}_onConnError(e){this.log("transport",e.message),this._triggerChanError(),this.stateChangeCallbacks.error.forEach(n=>n(e))}_triggerChanError(){this.channels.forEach(e=>e._trigger(ht.error))}_appendParams(e,n){if(Object.keys(n).length===0)return e;const i=e.match(/\?/)?"&":"?",r=new URLSearchParams(n);return`${e}${i}${r}`}_flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}_sendHeartbeat(){var e;if(this.isConnected()){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.log("transport","heartbeat timeout. Attempting to re-establish connection"),(e=this.conn)===null||e===void 0||e.close(F_,"hearbeat timeout");return}this.pendingHeartbeatRef=this._makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.setAuth(this.accessToken)}}}class Q_{constructor(e,n,i){this.binaryType="arraybuffer",this.onclose=()=>{},this.onerror=()=>{},this.onmessage=()=>{},this.onopen=()=>{},this.readyState=bi.connecting,this.send=()=>{},this.url=null,this.url=e,this.close=i.close}}class vc extends Error{constructor(e){super(e),this.__isStorageError=!0,this.name="StorageError"}}function Ce(t){return typeof t=="object"&&t!==null&&"__isStorageError"in t}class X_ extends vc{constructor(e,n){super(e),this.name="StorageApiError",this.status=n}toJSON(){return{name:this.name,message:this.message,status:this.status}}}class nd extends vc{constructor(e,n){super(e),this.name="StorageUnknownError",this.originalError=n}}var J_=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const tm=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...n)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:i})=>i(...n)):e=fetch,(...n)=>e(...n)},Z_=()=>J_(void 0,void 0,void 0,function*(){return typeof Response>"u"?(yield Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url)).Response:Response});var Bi=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const Ha=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),ew=(t,e)=>Bi(void 0,void 0,void 0,function*(){const n=yield Z_();t instanceof n?t.json().then(i=>{e(new X_(Ha(i),t.status||500))}).catch(i=>{e(new nd(Ha(i),i))}):e(new nd(Ha(t),t))}),tw=(t,e,n,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return t==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json"},e==null?void 0:e.headers),r.body=JSON.stringify(i),Object.assign(Object.assign({},r),n))};function ca(t,e,n,i,r,s){return Bi(this,void 0,void 0,function*(){return new Promise((o,a)=>{t(n,tw(e,i,r,s)).then(l=>{if(!l.ok)throw l;return i!=null&&i.noResolveJson?l:l.json()}).then(l=>o(l)).catch(l=>ew(l,a))})})}function iu(t,e,n,i){return Bi(this,void 0,void 0,function*(){return ca(t,"GET",e,n,i)})}function Yt(t,e,n,i,r){return Bi(this,void 0,void 0,function*(){return ca(t,"POST",e,i,r,n)})}function nw(t,e,n,i,r){return Bi(this,void 0,void 0,function*(){return ca(t,"PUT",e,i,r,n)})}function nm(t,e,n,i,r){return Bi(this,void 0,void 0,function*(){return ca(t,"DELETE",e,i,r,n)})}var Je=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const iw={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},id={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};class rw{constructor(e,n={},i,r){this.url=e,this.headers=n,this.bucketId=i,this.fetch=tm(r)}uploadOrUpdate(e,n,i,r){return Je(this,void 0,void 0,function*(){try{let s;const o=Object.assign(Object.assign({},id),r),a=Object.assign(Object.assign({},this.headers),e==="POST"&&{"x-upsert":String(o.upsert)});typeof Blob<"u"&&i instanceof Blob?(s=new FormData,s.append("cacheControl",o.cacheControl),s.append("",i)):typeof FormData<"u"&&i instanceof FormData?(s=i,s.append("cacheControl",o.cacheControl)):(s=i,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType);const l=this._removeEmptyFolders(n),u=this._getFinalPath(l),c=yield this.fetch(`${this.url}/object/${u}`,Object.assign({method:e,body:s,headers:a},o!=null&&o.duplex?{duplex:o.duplex}:{})),h=yield c.json();return c.ok?{data:{path:l,id:h.Id,fullPath:h.Key},error:null}:{data:null,error:h}}catch(s){if(Ce(s))return{data:null,error:s};throw s}})}upload(e,n,i){return Je(this,void 0,void 0,function*(){return this.uploadOrUpdate("POST",e,n,i)})}uploadToSignedUrl(e,n,i,r){return Je(this,void 0,void 0,function*(){const s=this._removeEmptyFolders(e),o=this._getFinalPath(s),a=new URL(this.url+`/object/upload/sign/${o}`);a.searchParams.set("token",n);try{let l;const u=Object.assign({upsert:id.upsert},r),c=Object.assign(Object.assign({},this.headers),{"x-upsert":String(u.upsert)});typeof Blob<"u"&&i instanceof Blob?(l=new FormData,l.append("cacheControl",u.cacheControl),l.append("",i)):typeof FormData<"u"&&i instanceof FormData?(l=i,l.append("cacheControl",u.cacheControl)):(l=i,c["cache-control"]=`max-age=${u.cacheControl}`,c["content-type"]=u.contentType);const h=yield this.fetch(a.toString(),{method:"PUT",body:l,headers:c}),d=yield h.json();return h.ok?{data:{path:s,fullPath:d.Key},error:null}:{data:null,error:d}}catch(l){if(Ce(l))return{data:null,error:l};throw l}})}createSignedUploadUrl(e){return Je(this,void 0,void 0,function*(){try{let n=this._getFinalPath(e);const i=yield Yt(this.fetch,`${this.url}/object/upload/sign/${n}`,{},{headers:this.headers}),r=new URL(this.url+i.url),s=r.searchParams.get("token");if(!s)throw new vc("No token returned by API");return{data:{signedUrl:r.toString(),path:e,token:s},error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}update(e,n,i){return Je(this,void 0,void 0,function*(){return this.uploadOrUpdate("PUT",e,n,i)})}move(e,n){return Je(this,void 0,void 0,function*(){try{return{data:yield Yt(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:e,destinationKey:n},{headers:this.headers}),error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}copy(e,n){return Je(this,void 0,void 0,function*(){try{return{data:{path:(yield Yt(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:e,destinationKey:n},{headers:this.headers})).Key},error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}createSignedUrl(e,n,i){return Je(this,void 0,void 0,function*(){try{let r=this._getFinalPath(e),s=yield Yt(this.fetch,`${this.url}/object/sign/${r}`,Object.assign({expiresIn:n},i!=null&&i.transform?{transform:i.transform}:{}),{headers:this.headers});const o=i!=null&&i.download?`&download=${i.download===!0?"":i.download}`:"";return s={signedUrl:encodeURI(`${this.url}${s.signedURL}${o}`)},{data:s,error:null}}catch(r){if(Ce(r))return{data:null,error:r};throw r}})}createSignedUrls(e,n,i){return Je(this,void 0,void 0,function*(){try{const r=yield Yt(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:n,paths:e},{headers:this.headers}),s=i!=null&&i.download?`&download=${i.download===!0?"":i.download}`:"";return{data:r.map(o=>Object.assign(Object.assign({},o),{signedUrl:o.signedURL?encodeURI(`${this.url}${o.signedURL}${s}`):null})),error:null}}catch(r){if(Ce(r))return{data:null,error:r};throw r}})}download(e,n){return Je(this,void 0,void 0,function*(){const r=typeof(n==null?void 0:n.transform)<"u"?"render/image/authenticated":"object",s=this.transformOptsToQueryString((n==null?void 0:n.transform)||{}),o=s?`?${s}`:"";try{const a=this._getFinalPath(e);return{data:yield(yield iu(this.fetch,`${this.url}/${r}/${a}${o}`,{headers:this.headers,noResolveJson:!0})).blob(),error:null}}catch(a){if(Ce(a))return{data:null,error:a};throw a}})}getPublicUrl(e,n){const i=this._getFinalPath(e),r=[],s=n!=null&&n.download?`download=${n.download===!0?"":n.download}`:"";s!==""&&r.push(s);const a=typeof(n==null?void 0:n.transform)<"u"?"render/image":"object",l=this.transformOptsToQueryString((n==null?void 0:n.transform)||{});l!==""&&r.push(l);let u=r.join("&");return u!==""&&(u=`?${u}`),{data:{publicUrl:encodeURI(`${this.url}/${a}/public/${i}${u}`)}}}remove(e){return Je(this,void 0,void 0,function*(){try{return{data:yield nm(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:e},{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}list(e,n,i){return Je(this,void 0,void 0,function*(){try{const r=Object.assign(Object.assign(Object.assign({},iw),n),{prefix:e||""});return{data:yield Yt(this.fetch,`${this.url}/object/list/${this.bucketId}`,r,{headers:this.headers},i),error:null}}catch(r){if(Ce(r))return{data:null,error:r};throw r}})}_getFinalPath(e){return`${this.bucketId}/${e}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(e){const n=[];return e.width&&n.push(`width=${e.width}`),e.height&&n.push(`height=${e.height}`),e.resize&&n.push(`resize=${e.resize}`),e.format&&n.push(`format=${e.format}`),e.quality&&n.push(`quality=${e.quality}`),n.join("&")}}const sw="2.5.5",ow={"X-Client-Info":`storage-js/${sw}`};var Zn=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};class aw{constructor(e,n={},i){this.url=e,this.headers=Object.assign(Object.assign({},ow),n),this.fetch=tm(i)}listBuckets(){return Zn(this,void 0,void 0,function*(){try{return{data:yield iu(this.fetch,`${this.url}/bucket`,{headers:this.headers}),error:null}}catch(e){if(Ce(e))return{data:null,error:e};throw e}})}getBucket(e){return Zn(this,void 0,void 0,function*(){try{return{data:yield iu(this.fetch,`${this.url}/bucket/${e}`,{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}createBucket(e,n={public:!1}){return Zn(this,void 0,void 0,function*(){try{return{data:yield Yt(this.fetch,`${this.url}/bucket`,{id:e,name:e,public:n.public,file_size_limit:n.fileSizeLimit,allowed_mime_types:n.allowedMimeTypes},{headers:this.headers}),error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}updateBucket(e,n){return Zn(this,void 0,void 0,function*(){try{return{data:yield nw(this.fetch,`${this.url}/bucket/${e}`,{id:e,name:e,public:n.public,file_size_limit:n.fileSizeLimit,allowed_mime_types:n.allowedMimeTypes},{headers:this.headers}),error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}emptyBucket(e){return Zn(this,void 0,void 0,function*(){try{return{data:yield Yt(this.fetch,`${this.url}/bucket/${e}/empty`,{},{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}deleteBucket(e){return Zn(this,void 0,void 0,function*(){try{return{data:yield nm(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}}class lw extends aw{constructor(e,n={},i){super(e,n,i)}from(e){return new rw(this.url,this.headers,e,this.fetch)}}const uw="2.43.4";let lr="";typeof Deno<"u"?lr="deno":typeof document<"u"?lr="web":typeof navigator<"u"&&navigator.product==="ReactNative"?lr="react-native":lr="node";const cw={"X-Client-Info":`supabase-js-${lr}/${uw}`},hw={headers:cw},dw={schema:"public"},fw={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},pw={};var gw=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const mw=t=>{let e;return t?e=t:typeof fetch>"u"?e=gc:e=fetch,(...n)=>e(...n)},yw=()=>typeof Headers>"u"?Xg:Headers,vw=(t,e,n)=>{const i=mw(n),r=yw();return(s,o)=>gw(void 0,void 0,void 0,function*(){var a;const l=(a=yield e())!==null&&a!==void 0?a:t;let u=new r(o==null?void 0:o.headers);return u.has("apikey")||u.set("apikey",t),u.has("Authorization")||u.set("Authorization",`Bearer ${l}`),i(s,Object.assign(Object.assign({},o),{headers:u}))})};function _w(t){return t.replace(/\/$/,"")}function ww(t,e){const{db:n,auth:i,realtime:r,global:s}=t,{db:o,auth:a,realtime:l,global:u}=e;return{db:Object.assign(Object.assign({},o),n),auth:Object.assign(Object.assign({},a),i),realtime:Object.assign(Object.assign({},l),r),global:Object.assign(Object.assign({},u),s)}}const im="2.64.2",xw="http://localhost:9999",kw="supabase.auth.token",bw={"X-Client-Info":`gotrue-js/${im}`},rd=10,ru="X-Supabase-Api-Version",rm={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}};function Sw(t){return Math.round(Date.now()/1e3)+t}function Cw(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t=="x"?e:e&3|8).toString(16)})}const lt=()=>typeof document<"u",kn={tested:!1,writable:!1},br=()=>{if(!lt())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(kn.tested)return kn.writable;const t=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(t,t),globalThis.localStorage.removeItem(t),kn.tested=!0,kn.writable=!0}catch{kn.tested=!0,kn.writable=!1}return kn.writable};function Wa(t){const e={},n=new URL(t);if(n.hash&&n.hash[0]==="#")try{new URLSearchParams(n.hash.substring(1)).forEach((r,s)=>{e[s]=r})}catch{}return n.searchParams.forEach((i,r)=>{e[r]=i}),e}const sm=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...n)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:i})=>i(...n)):e=fetch,(...n)=>e(...n)},Ew=t=>typeof t=="object"&&t!==null&&"status"in t&&"ok"in t&&"json"in t&&typeof t.json=="function",om=async(t,e,n)=>{await t.setItem(e,JSON.stringify(n))},Os=async(t,e)=>{const n=await t.getItem(e);if(!n)return null;try{return JSON.parse(n)}catch{return n}},Ka=async(t,e)=>{await t.removeItem(e)};function Pw(t){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";let n="",i,r,s,o,a,l,u,c=0;for(t=t.replace("-","+").replace("_","/");c<t.length;)o=e.indexOf(t.charAt(c++)),a=e.indexOf(t.charAt(c++)),l=e.indexOf(t.charAt(c++)),u=e.indexOf(t.charAt(c++)),i=o<<2|a>>4,r=(a&15)<<4|l>>2,s=(l&3)<<6|u,n=n+String.fromCharCode(i),l!=64&&r!=0&&(n=n+String.fromCharCode(r)),u!=64&&s!=0&&(n=n+String.fromCharCode(s));return n}class ha{constructor(){this.promise=new ha.promiseConstructor((e,n)=>{this.resolve=e,this.reject=n})}}ha.promiseConstructor=Promise;function sd(t){const e=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i,n=t.split(".");if(n.length!==3)throw new Error("JWT is not valid: not a JWT structure");if(!e.test(n[1]))throw new Error("JWT is not valid: payload is not in base64url format");const i=n[1];return JSON.parse(Pw(i))}async function Tw(t){return await new Promise(e=>{setTimeout(()=>e(null),t)})}function Ow(t,e){return new Promise((i,r)=>{(async()=>{for(let s=0;s<1/0;s++)try{const o=await t(s);if(!e(s,null,o)){i(o);return}}catch(o){if(!e(s,o)){r(o);return}}})()})}function Mw(t){return("0"+t.toString(16)).substr(-2)}function Lw(){const e=new Uint32Array(56);if(typeof crypto>"u"){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",i=n.length;let r="";for(let s=0;s<56;s++)r+=n.charAt(Math.floor(Math.random()*i));return r}return crypto.getRandomValues(e),Array.from(e,Mw).join("")}async function Rw(t){const n=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",n),r=new Uint8Array(i);return Array.from(r).map(s=>String.fromCharCode(s)).join("")}function Iw(t){return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Aw(t){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),t;const n=await Rw(t);return Iw(n)}async function ei(t,e,n=!1){const i=Lw();let r=i;n&&(r+="/PASSWORD_RECOVERY"),await om(t,`${e}-code-verifier`,r);const s=await Aw(i);return[s,i===s?"plain":"s256"]}const Dw=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function jw(t){const e=t.headers.get(ru);if(!e||!e.match(Dw))return null;try{return new Date(`${e}T00:00:00.0Z`)}catch{return null}}class _c extends Error{constructor(e,n,i){super(e),this.__isAuthError=!0,this.name="AuthError",this.status=n,this.code=i}}function j(t){return typeof t=="object"&&t!==null&&"__isAuthError"in t}class Nw extends _c{constructor(e,n,i){super(e,n,i),this.name="AuthApiError",this.status=n,this.code=i}}function zw(t){return j(t)&&t.name==="AuthApiError"}class am extends _c{constructor(e,n){super(e),this.name="AuthUnknownError",this.originalError=n}}class Qn extends _c{constructor(e,n,i,r){super(e,i,r),this.name=n,this.status=i}}class bn extends Qn{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}class Ya extends Qn{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Ms extends Qn{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Ls extends Qn{constructor(e,n=null){super(e,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=n}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class od extends Qn{constructor(e,n=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=n}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class su extends Qn{constructor(e,n){super(e,"AuthRetryableFetchError",n,void 0)}}function Ga(t){return j(t)&&t.name==="AuthRetryableFetchError"}class ad extends Qn{constructor(e,n,i){super(e,"AuthWeakPasswordError",n,"weak_password"),this.reasons=i}}var Fw=function(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]]);return n};const Mn=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),$w=[502,503,504];async function ld(t){var e;if(!Ew(t))throw new su(Mn(t),0);if($w.includes(t.status))throw new su(Mn(t),t.status);let n;try{n=await t.json()}catch(s){throw new am(Mn(s),s)}let i;const r=jw(t);if(r&&r.getTime()>=rm["2024-01-01"].timestamp&&typeof n=="object"&&n&&typeof n.code=="string"?i=n.code:typeof n=="object"&&n&&typeof n.error_code=="string"&&(i=n.error_code),i){if(i==="weak_password")throw new ad(Mn(n),t.status,((e=n.weak_password)===null||e===void 0?void 0:e.reasons)||[])}else if(typeof n=="object"&&n&&typeof n.weak_password=="object"&&n.weak_password&&Array.isArray(n.weak_password.reasons)&&n.weak_password.reasons.length&&n.weak_password.reasons.reduce((s,o)=>s&&typeof o=="string",!0))throw new ad(Mn(n),t.status,n.weak_password.reasons);throw new Nw(Mn(n),t.status||500,i)}const Uw=(t,e,n,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return t==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},e==null?void 0:e.headers),r.body=JSON.stringify(i),Object.assign(Object.assign({},r),n))};async function z(t,e,n,i){var r;const s=Object.assign({},i==null?void 0:i.headers);s[ru]||(s[ru]=rm["2024-01-01"].name),i!=null&&i.jwt&&(s.Authorization=`Bearer ${i.jwt}`);const o=(r=i==null?void 0:i.query)!==null&&r!==void 0?r:{};i!=null&&i.redirectTo&&(o.redirect_to=i.redirectTo);const a=Object.keys(o).length?"?"+new URLSearchParams(o).toString():"",l=await Bw(t,e,n+a,{headers:s,noResolveJson:i==null?void 0:i.noResolveJson},{},i==null?void 0:i.body);return i!=null&&i.xform?i==null?void 0:i.xform(l):{data:Object.assign({},l),error:null}}async function Bw(t,e,n,i,r,s){const o=Uw(e,i,r,s);let a;try{a=await t(n,Object.assign({},o))}catch(l){throw console.error(l),new su(Mn(l),0)}if(a.ok||await ld(a),i!=null&&i.noResolveJson)return a;try{return await a.json()}catch(l){await ld(l)}}function Ht(t){var e;let n=null;Kw(t)&&(n=Object.assign({},t),t.expires_at||(n.expires_at=Sw(t.expires_in)));const i=(e=t.user)!==null&&e!==void 0?e:t;return{data:{session:n,user:i},error:null}}function ud(t){const e=Ht(t);return!e.error&&t.weak_password&&typeof t.weak_password=="object"&&Array.isArray(t.weak_password.reasons)&&t.weak_password.reasons.length&&t.weak_password.message&&typeof t.weak_password.message=="string"&&t.weak_password.reasons.reduce((n,i)=>n&&typeof i=="string",!0)&&(e.data.weak_password=t.weak_password),e}function Qt(t){var e;return{data:{user:(e=t.user)!==null&&e!==void 0?e:t},error:null}}function Vw(t){return{data:t,error:null}}function Hw(t){const{action_link:e,email_otp:n,hashed_token:i,redirect_to:r,verification_type:s}=t,o=Fw(t,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),a={action_link:e,email_otp:n,hashed_token:i,redirect_to:r,verification_type:s},l=Object.assign({},o);return{data:{properties:a,user:l},error:null}}function Ww(t){return t}function Kw(t){return t.access_token&&t.refresh_token&&t.expires_in}var Yw=function(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]]);return n};class Gw{constructor({url:e="",headers:n={},fetch:i}){this.url=e,this.headers=n,this.fetch=sm(i),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)}}async signOut(e,n="global"){try{return await z(this.fetch,"POST",`${this.url}/logout?scope=${n}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(i){if(j(i))return{data:null,error:i};throw i}}async inviteUserByEmail(e,n={}){try{return await z(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:n.data},headers:this.headers,redirectTo:n.redirectTo,xform:Qt})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}async generateLink(e){try{const{options:n}=e,i=Yw(e,["options"]),r=Object.assign(Object.assign({},i),n);return"newEmail"in i&&(r.new_email=i==null?void 0:i.newEmail,delete r.newEmail),await z(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:r,headers:this.headers,xform:Hw,redirectTo:n==null?void 0:n.redirectTo})}catch(n){if(j(n))return{data:{properties:null,user:null},error:n};throw n}}async createUser(e){try{return await z(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Qt})}catch(n){if(j(n))return{data:{user:null},error:n};throw n}}async listUsers(e){var n,i,r,s,o,a,l;try{const u={nextPage:null,lastPage:0,total:0},c=await z(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(i=(n=e==null?void 0:e.page)===null||n===void 0?void 0:n.toString())!==null&&i!==void 0?i:"",per_page:(s=(r=e==null?void 0:e.perPage)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:""},xform:Ww});if(c.error)throw c.error;const h=await c.json(),d=(o=c.headers.get("x-total-count"))!==null&&o!==void 0?o:0,f=(l=(a=c.headers.get("link"))===null||a===void 0?void 0:a.split(","))!==null&&l!==void 0?l:[];return f.length>0&&(f.forEach(m=>{const y=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),v=JSON.parse(m.split(";")[1].split("=")[1]);u[`${v}Page`]=y}),u.total=parseInt(d)),{data:Object.assign(Object.assign({},h),u),error:null}}catch(u){if(j(u))return{data:{users:[]},error:u};throw u}}async getUserById(e){try{return await z(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Qt})}catch(n){if(j(n))return{data:{user:null},error:n};throw n}}async updateUserById(e,n){try{return await z(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:n,headers:this.headers,xform:Qt})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}async deleteUser(e,n=!1){try{return await z(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:n},xform:Qt})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}async _listFactors(e){try{const{data:n,error:i}=await z(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:r=>({data:{factors:r},error:null})});return{data:n,error:i}}catch(n){if(j(n))return{data:null,error:n};throw n}}async _deleteFactor(e){try{return{data:await z(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(n){if(j(n))return{data:null,error:n};throw n}}}const qw={getItem:t=>br()?globalThis.localStorage.getItem(t):null,setItem:(t,e)=>{br()&&globalThis.localStorage.setItem(t,e)},removeItem:t=>{br()&&globalThis.localStorage.removeItem(t)}};function cd(t={}){return{getItem:e=>t[e]||null,setItem:(e,n)=>{t[e]=n},removeItem:e=>{delete t[e]}}}function Qw(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}const ti={debug:!!(globalThis&&br()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class lm extends Error{constructor(e){super(e),this.isAcquireTimeout=!0}}class Xw extends lm{}async function Jw(t,e,n){ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",t,e);const i=new globalThis.AbortController;return e>0&&setTimeout(()=>{i.abort(),ti.debug&&console.log("@supabase/gotrue-js: navigatorLock acquire timed out",t)},e),await globalThis.navigator.locks.request(t,e===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:i.signal},async r=>{if(r){ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",t,r.name);try{return await n()}finally{ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",t,r.name)}}else{if(e===0)throw ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",t),new Xw(`Acquiring an exclusive Navigator LockManager lock "${t}" immediately failed`);if(ti.debug)try{const s=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(s,null," "))}catch(s){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",s)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),await n()}})}Qw();const Zw={url:xw,storageKey:kw,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:bw,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1},Xi=30*1e3,hd=3;async function dd(t,e,n){return await n()}class Qr{constructor(e){var n,i;this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log,this.instanceID=Qr.nextInstanceID,Qr.nextInstanceID+=1,this.instanceID>0&<()&&console.warn("Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.");const r=Object.assign(Object.assign({},Zw),e);if(this.logDebugMessages=!!r.debug,typeof r.debug=="function"&&(this.logger=r.debug),this.persistSession=r.persistSession,this.storageKey=r.storageKey,this.autoRefreshToken=r.autoRefreshToken,this.admin=new Gw({url:r.url,headers:r.headers,fetch:r.fetch}),this.url=r.url,this.headers=r.headers,this.fetch=sm(r.fetch),this.lock=r.lock||dd,this.detectSessionInUrl=r.detectSessionInUrl,this.flowType=r.flowType,this.hasCustomAuthorizationHeader=r.hasCustomAuthorizationHeader,r.lock?this.lock=r.lock:lt()&&(!((n=globalThis==null?void 0:globalThis.navigator)===null||n===void 0)&&n.locks)?this.lock=Jw:this.lock=dd,this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this)},this.persistSession?r.storage?this.storage=r.storage:br()?this.storage=qw:(this.memoryStorage={},this.storage=cd(this.memoryStorage)):(this.memoryStorage={},this.storage=cd(this.memoryStorage)),lt()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(s){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",s)}(i=this.broadcastChannel)===null||i===void 0||i.addEventListener("message",async s=>{this._debug("received broadcast notification from other tab or client",s),await this._notifyAllSubscribers(s.data.event,s.data.session,!1)})}this.initialize()}_debug(...e){return this.logDebugMessages&&this.logger(`GoTrueClient@${this.instanceID} (${im}) ${new Date().toISOString()}`,...e),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(-1,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){try{const e=lt()?await this._isPKCEFlow():!1;if(this._debug("#_initialize()","begin","is PKCE flow",e),e||this.detectSessionInUrl&&this._isImplicitGrantFlow()){const{data:n,error:i}=await this._getSessionFromURL(e);if(i)return this._debug("#_initialize()","error detecting session from URL",i),(i==null?void 0:i.message)==="Identity is already linked"||(i==null?void 0:i.message)==="Identity is already linked to another user"?{error:i}:(await this._removeSession(),{error:i});const{session:r,redirectType:s}=n;return this._debug("#_initialize()","detected session in URL",r,"redirect type",s),await this._saveSession(r),setTimeout(async()=>{s==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",r):await this._notifyAllSubscribers("SIGNED_IN",r)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(e){return j(e)?{error:e}:{error:new am("Unexpected error during initialization",e)}}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var n,i,r;try{await this._removeSession();const s=await z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(i=(n=e==null?void 0:e.options)===null||n===void 0?void 0:n.data)!==null&&i!==void 0?i:{},gotrue_meta_security:{captcha_token:(r=e==null?void 0:e.options)===null||r===void 0?void 0:r.captchaToken}},xform:Ht}),{data:o,error:a}=s;if(a||!o)return{data:{user:null,session:null},error:a};const l=o.session,u=o.user;return o.session&&(await this._saveSession(o.session),await this._notifyAllSubscribers("SIGNED_IN",l)),{data:{user:u,session:l},error:null}}catch(s){if(j(s))return{data:{user:null,session:null},error:s};throw s}}async signUp(e){var n,i,r;try{await this._removeSession();let s;if("email"in e){const{email:c,password:h,options:d}=e;let f=null,m=null;this.flowType==="pkce"&&([f,m]=await ei(this.storage,this.storageKey)),s=await z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:d==null?void 0:d.emailRedirectTo,body:{email:c,password:h,data:(n=d==null?void 0:d.data)!==null&&n!==void 0?n:{},gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},code_challenge:f,code_challenge_method:m},xform:Ht})}else if("phone"in e){const{phone:c,password:h,options:d}=e;s=await z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:c,password:h,data:(i=d==null?void 0:d.data)!==null&&i!==void 0?i:{},channel:(r=d==null?void 0:d.channel)!==null&&r!==void 0?r:"sms",gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken}},xform:Ht})}else throw new Ms("You must provide either an email or phone number and a password");const{data:o,error:a}=s;if(a||!o)return{data:{user:null,session:null},error:a};const l=o.session,u=o.user;return o.session&&(await this._saveSession(o.session),await this._notifyAllSubscribers("SIGNED_IN",l)),{data:{user:u,session:l},error:null}}catch(s){if(j(s))return{data:{user:null,session:null},error:s};throw s}}async signInWithPassword(e){try{await this._removeSession();let n;if("email"in e){const{email:s,password:o,options:a}=e;n=await z(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:o,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:ud})}else if("phone"in e){const{phone:s,password:o,options:a}=e;n=await z(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:o,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:ud})}else throw new Ms("You must provide either an email or phone number and a password");const{data:i,error:r}=n;return r?{data:{user:null,session:null},error:r}:!i||!i.session||!i.user?{data:{user:null,session:null},error:new Ya}:(i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",i.session)),{data:Object.assign({user:i.user,session:i.session},i.weak_password?{weakPassword:i.weak_password}:null),error:r})}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async signInWithOAuth(e){var n,i,r,s;return await this._removeSession(),await this._handleProviderSignIn(e.provider,{redirectTo:(n=e.options)===null||n===void 0?void 0:n.redirectTo,scopes:(i=e.options)===null||i===void 0?void 0:i.scopes,queryParams:(r=e.options)===null||r===void 0?void 0:r.queryParams,skipBrowserRedirect:(s=e.options)===null||s===void 0?void 0:s.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(-1,async()=>this._exchangeCodeForSession(e))}async _exchangeCodeForSession(e){const n=await Os(this.storage,`${this.storageKey}-code-verifier`),[i,r]=(n??"").split("/"),{data:s,error:o}=await z(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:i},xform:Ht});return await Ka(this.storage,`${this.storageKey}-code-verifier`),o?{data:{user:null,session:null,redirectType:null},error:o}:!s||!s.session||!s.user?{data:{user:null,session:null,redirectType:null},error:new Ya}:(s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session)),{data:Object.assign(Object.assign({},s),{redirectType:r??null}),error:o})}async signInWithIdToken(e){await this._removeSession();try{const{options:n,provider:i,token:r,access_token:s,nonce:o}=e,a=await z(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:i,id_token:r,access_token:s,nonce:o,gotrue_meta_security:{captcha_token:n==null?void 0:n.captchaToken}},xform:Ht}),{data:l,error:u}=a;return u?{data:{user:null,session:null},error:u}:!l||!l.session||!l.user?{data:{user:null,session:null},error:new Ya}:(l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",l.session)),{data:l,error:u})}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async signInWithOtp(e){var n,i,r,s,o;try{if(await this._removeSession(),"email"in e){const{email:a,options:l}=e;let u=null,c=null;this.flowType==="pkce"&&([u,c]=await ei(this.storage,this.storageKey));const{error:h}=await z(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:a,data:(n=l==null?void 0:l.data)!==null&&n!==void 0?n:{},create_user:(i=l==null?void 0:l.shouldCreateUser)!==null&&i!==void 0?i:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken},code_challenge:u,code_challenge_method:c},redirectTo:l==null?void 0:l.emailRedirectTo});return{data:{user:null,session:null},error:h}}if("phone"in e){const{phone:a,options:l}=e,{data:u,error:c}=await z(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:a,data:(r=l==null?void 0:l.data)!==null&&r!==void 0?r:{},create_user:(s=l==null?void 0:l.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken},channel:(o=l==null?void 0:l.channel)!==null&&o!==void 0?o:"sms"}});return{data:{user:null,session:null,messageId:u==null?void 0:u.message_id},error:c}}throw new Ms("You must provide either an email or phone number.")}catch(a){if(j(a))return{data:{user:null,session:null},error:a};throw a}}async verifyOtp(e){var n,i;try{e.type!=="email_change"&&e.type!=="phone_change"&&await this._removeSession();let r,s;"options"in e&&(r=(n=e.options)===null||n===void 0?void 0:n.redirectTo,s=(i=e.options)===null||i===void 0?void 0:i.captchaToken);const{data:o,error:a}=await z(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:s}}),redirectTo:r,xform:Ht});if(a)throw a;if(!o)throw new Error("An error occurred on token verification.");const l=o.session,u=o.user;return l!=null&&l.access_token&&(await this._saveSession(l),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",l)),{data:{user:u,session:l},error:null}}catch(r){if(j(r))return{data:{user:null,session:null},error:r};throw r}}async signInWithSSO(e){var n,i,r;try{await this._removeSession();let s=null,o=null;return this.flowType==="pkce"&&([s,o]=await ei(this.storage,this.storageKey)),await z(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(i=(n=e.options)===null||n===void 0?void 0:n.redirectTo)!==null&&i!==void 0?i:void 0}),!((r=e==null?void 0:e.options)===null||r===void 0)&&r.captchaToken?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:s,code_challenge_method:o}),headers:this.headers,xform:Vw})}catch(s){if(j(s))return{data:null,error:s};throw s}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async e=>{const{data:{session:n},error:i}=e;if(i)throw i;if(!n)throw new bn;const{error:r}=await z(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:n.access_token});return{data:{user:null,session:null},error:r}})}catch(e){if(j(e))return{data:{user:null,session:null},error:e};throw e}}async resend(e){try{e.type!="email_change"&&e.type!="phone_change"&&await this._removeSession();const n=`${this.url}/resend`;if("email"in e){const{email:i,type:r,options:s}=e,{error:o}=await z(this.fetch,"POST",n,{headers:this.headers,body:{email:i,type:r,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}},redirectTo:s==null?void 0:s.emailRedirectTo});return{data:{user:null,session:null},error:o}}else if("phone"in e){const{phone:i,type:r,options:s}=e,{data:o,error:a}=await z(this.fetch,"POST",n,{headers:this.headers,body:{phone:i,type:r,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}}});return{data:{user:null,session:null,messageId:o==null?void 0:o.message_id},error:a}}throw new Ms("You must provide either an email or phone number and a type")}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async getSession(){return await this.initializePromise,await this._acquireLock(-1,async()=>this._useSession(async n=>n))}async _acquireLock(e,n){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){const i=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),r=(async()=>(await i,await n()))();return this.pendingInLock.push((async()=>{try{await r}catch{}})()),r}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const i=n();for(this.pendingInLock.push((async()=>{try{await i}catch{}})()),await i;this.pendingInLock.length;){const r=[...this.pendingInLock];await Promise.all(r),this.pendingInLock.splice(0,r.length)}return await i}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{const n=await this.__loadSession();return await e(n)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let e=null;const n=await Os(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",n),n!==null&&(this._isValidSession(n)?e=n:(this._debug("#getSession()","session from storage is not valid"),await this._removeSession())),!e)return{data:{session:null},error:null};const i=e.expires_at?e.expires_at<=Date.now()/1e3:!1;if(this._debug("#__loadSession()",`session has${i?"":" not"} expired`,"expires_at",e.expires_at),!i){if(this.storage.isServer){const o=this.suppressGetSessionWarning;e=new Proxy(e,{get(l,u,c){return!o&&u==="user"&&console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and many not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),Reflect.get(l,u,c)}})}return{data:{session:e},error:null}}const{session:r,error:s}=await this._callRefreshToken(e.refresh_token);return s?{data:{session:null},error:s}:{data:{session:r},error:null}}finally{this._debug("#__loadSession()","end")}}async getUser(e){return e?await this._getUser(e):(await this.initializePromise,await this._acquireLock(-1,async()=>await this._getUser()))}async _getUser(e){try{return e?await z(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Qt}):await this._useSession(async n=>{var i,r,s;const{data:o,error:a}=n;if(a)throw a;return!(!((i=o.session)===null||i===void 0)&&i.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new bn}:await z(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(r=o.session)===null||r===void 0?void 0:r.access_token)!==null&&s!==void 0?s:void 0,xform:Qt})})}catch(n){if(j(n))return{data:{user:null},error:n};throw n}}async updateUser(e,n={}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._updateUser(e,n))}async _updateUser(e,n={}){try{return await this._useSession(async i=>{const{data:r,error:s}=i;if(s)throw s;if(!r.session)throw new bn;const o=r.session;let a=null,l=null;this.flowType==="pkce"&&e.email!=null&&([a,l]=await ei(this.storage,this.storageKey));const{data:u,error:c}=await z(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:n==null?void 0:n.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:a,code_challenge_method:l}),jwt:o.access_token,xform:Qt});if(c)throw c;return o.user=u.user,await this._saveSession(o),await this._notifyAllSubscribers("USER_UPDATED",o),{data:{user:o.user},error:null}})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}_decodeJWT(e){return sd(e)}async setSession(e){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new bn;const n=Date.now()/1e3;let i=n,r=!0,s=null;const o=sd(e.access_token);if(o.exp&&(i=o.exp,r=i<=n),r){const{session:a,error:l}=await this._callRefreshToken(e.refresh_token);if(l)return{data:{user:null,session:null},error:l};if(!a)return{data:{user:null,session:null},error:null};s=a}else{const{data:a,error:l}=await this._getUser(e.access_token);if(l)throw l;s={access_token:e.access_token,refresh_token:e.refresh_token,user:a.user,token_type:"bearer",expires_in:i-n,expires_at:i},await this._saveSession(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return{data:{user:s.user,session:s},error:null}}catch(n){if(j(n))return{data:{session:null,user:null},error:n};throw n}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async n=>{var i;if(!e){const{data:o,error:a}=n;if(a)throw a;e=(i=o.session)!==null&&i!==void 0?i:void 0}if(!(e!=null&&e.refresh_token))throw new bn;const{session:r,error:s}=await this._callRefreshToken(e.refresh_token);return s?{data:{user:null,session:null},error:s}:r?{data:{user:r.user,session:r},error:null}:{data:{user:null,session:null},error:null}})}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async _getSessionFromURL(e){try{if(!lt())throw new Ls("No browser detected.");if(this.flowType==="implicit"&&!this._isImplicitGrantFlow())throw new Ls("Not a valid implicit grant flow url.");if(this.flowType=="pkce"&&!e)throw new od("Not a valid PKCE flow url.");const n=Wa(window.location.href);if(e){if(!n.code)throw new od("No code detected.");const{data:g,error:_}=await this._exchangeCodeForSession(n.code);if(_)throw _;const w=new URL(window.location.href);return w.searchParams.delete("code"),window.history.replaceState(window.history.state,"",w.toString()),{data:{session:g.session,redirectType:null},error:null}}if(n.error||n.error_description||n.error_code)throw new Ls(n.error_description||"Error in URL with unspecified error_description",{error:n.error||"unspecified_error",code:n.error_code||"unspecified_code"});const{provider_token:i,provider_refresh_token:r,access_token:s,refresh_token:o,expires_in:a,expires_at:l,token_type:u}=n;if(!s||!a||!o||!u)throw new Ls("No session defined in URL");const c=Math.round(Date.now()/1e3),h=parseInt(a);let d=c+h;l&&(d=parseInt(l));const f=d-c;f*1e3<=Xi&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${f}s, should have been closer to ${h}s`);const m=d-h;c-m>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",m,d,c):c-m<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clok for skew",m,d,c);const{data:y,error:v}=await this._getUser(s);if(v)throw v;const p={provider_token:i,provider_refresh_token:r,access_token:s,expires_in:h,expires_at:d,refresh_token:o,token_type:u,user:y.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),{data:{session:p,redirectType:n.type},error:null}}catch(n){if(j(n))return{data:{session:null,redirectType:null},error:n};throw n}}_isImplicitGrantFlow(){const e=Wa(window.location.href);return!!(lt()&&(e.access_token||e.error_description))}async _isPKCEFlow(){const e=Wa(window.location.href),n=await Os(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&n)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async n=>{var i;const{data:r,error:s}=n;if(s)return{error:s};const o=(i=r.session)===null||i===void 0?void 0:i.access_token;if(o){const{error:a}=await this.admin.signOut(o,e);if(a&&!(zw(a)&&(a.status===404||a.status===401||a.status===403)))return{error:a}}return e!=="others"&&(await this._removeSession(),await Ka(this.storage,`${this.storageKey}-code-verifier`),await this._notifyAllSubscribers("SIGNED_OUT",null)),{error:null}})}onAuthStateChange(e){const n=Cw(),i={id:n,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",n),this.stateChangeEmitters.delete(n)}};return this._debug("#onAuthStateChange()","registered callback with id",n),this.stateChangeEmitters.set(n,i),(async()=>(await this.initializePromise,await this._acquireLock(-1,async()=>{this._emitInitialSession(n)})))(),{data:{subscription:i}}}async _emitInitialSession(e){return await this._useSession(async n=>{var i,r;try{const{data:{session:s},error:o}=n;if(o)throw o;await((i=this.stateChangeEmitters.get(e))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",e,"session",s)}catch(s){await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",s),console.error(s)}})}async resetPasswordForEmail(e,n={}){let i=null,r=null;this.flowType==="pkce"&&([i,r]=await ei(this.storage,this.storageKey,!0));try{return await z(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:i,code_challenge_method:r,gotrue_meta_security:{captcha_token:n.captchaToken}},headers:this.headers,redirectTo:n.redirectTo})}catch(s){if(j(s))return{data:null,error:s};throw s}}async getUserIdentities(){var e;try{const{data:n,error:i}=await this.getUser();if(i)throw i;return{data:{identities:(e=n.user.identities)!==null&&e!==void 0?e:[]},error:null}}catch(n){if(j(n))return{data:null,error:n};throw n}}async linkIdentity(e){var n;try{const{data:i,error:r}=await this._useSession(async s=>{var o,a,l,u,c;const{data:h,error:d}=s;if(d)throw d;const f=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(o=e.options)===null||o===void 0?void 0:o.redirectTo,scopes:(a=e.options)===null||a===void 0?void 0:a.scopes,queryParams:(l=e.options)===null||l===void 0?void 0:l.queryParams,skipBrowserRedirect:!0});return await z(this.fetch,"GET",f,{headers:this.headers,jwt:(c=(u=h.session)===null||u===void 0?void 0:u.access_token)!==null&&c!==void 0?c:void 0})});if(r)throw r;return lt()&&!(!((n=e.options)===null||n===void 0)&&n.skipBrowserRedirect)&&window.location.assign(i==null?void 0:i.url),{data:{provider:e.provider,url:i==null?void 0:i.url},error:null}}catch(i){if(j(i))return{data:{provider:e.provider,url:null},error:i};throw i}}async unlinkIdentity(e){try{return await this._useSession(async n=>{var i,r;const{data:s,error:o}=n;if(o)throw o;return await z(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(r=(i=s.session)===null||i===void 0?void 0:i.access_token)!==null&&r!==void 0?r:void 0})})}catch(n){if(j(n))return{data:null,error:n};throw n}}async _refreshAccessToken(e){const n=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{const i=Date.now();return await Ow(async r=>(r>0&&await Tw(200*Math.pow(2,r-1)),this._debug(n,"refreshing attempt",r),await z(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:Ht})),(r,s)=>{const o=200*Math.pow(2,r);return s&&Ga(s)&&Date.now()+o-i<Xi})}catch(i){if(this._debug(n,"error",i),j(i))return{data:{session:null,user:null},error:i};throw i}finally{this._debug(n,"end")}}_isValidSession(e){return typeof e=="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,n){const i=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:n.redirectTo,scopes:n.scopes,queryParams:n.queryParams});return this._debug("#_handleProviderSignIn()","provider",e,"options",n,"url",i),lt()&&!n.skipBrowserRedirect&&window.location.assign(i),{data:{provider:e,url:i},error:null}}async _recoverAndRefresh(){var e;const n="#_recoverAndRefresh()";this._debug(n,"begin");try{const i=await Os(this.storage,this.storageKey);if(this._debug(n,"session from storage",i),!this._isValidSession(i)){this._debug(n,"session is not valid"),i!==null&&await this._removeSession();return}const r=Math.round(Date.now()/1e3),s=((e=i.expires_at)!==null&&e!==void 0?e:1/0)<r+rd;if(this._debug(n,`session has${s?"":" not"} expired with margin of ${rd}s`),s){if(this.autoRefreshToken&&i.refresh_token){const{error:o}=await this._callRefreshToken(i.refresh_token);o&&(console.error(o),Ga(o)||(this._debug(n,"refresh failed with a non-retryable error, removing the session",o),await this._removeSession()))}}else await this._notifyAllSubscribers("SIGNED_IN",i)}catch(i){this._debug(n,"error",i),console.error(i);return}finally{this._debug(n,"end")}}async _callRefreshToken(e){var n,i;if(!e)throw new bn;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const r=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(r,"begin");try{this.refreshingDeferred=new ha;const{data:s,error:o}=await this._refreshAccessToken(e);if(o)throw o;if(!s.session)throw new bn;await this._saveSession(s.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",s.session);const a={session:s.session,error:null};return this.refreshingDeferred.resolve(a),a}catch(s){if(this._debug(r,"error",s),j(s)){const o={session:null,error:s};return Ga(s)||(await this._removeSession(),await this._notifyAllSubscribers("SIGNED_OUT",null)),(n=this.refreshingDeferred)===null||n===void 0||n.resolve(o),o}throw(i=this.refreshingDeferred)===null||i===void 0||i.reject(s),s}finally{this.refreshingDeferred=null,this._debug(r,"end")}}async _notifyAllSubscribers(e,n,i=!0){const r=`#_notifyAllSubscribers(${e})`;this._debug(r,"begin",n,`broadcast = ${i}`);try{this.broadcastChannel&&i&&this.broadcastChannel.postMessage({event:e,session:n});const s=[],o=Array.from(this.stateChangeEmitters.values()).map(async a=>{try{await a.callback(e,n)}catch(l){s.push(l)}});if(await Promise.all(o),s.length>0){for(let a=0;a<s.length;a+=1)console.error(s[a]);throw s[0]}}finally{this._debug(r,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await om(this.storage,this.storageKey,e)}async _removeSession(){this._debug("#_removeSession()"),await Ka(this.storage,this.storageKey)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&<()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",e)}catch(n){console.error("removing visibilitychange callback failed",n)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const e=setInterval(()=>this._autoRefreshTokenTick(),Xi);this.autoRefreshTicker=e,e&&typeof e=="object"&&typeof e.unref=="function"?e.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(e),setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const e=this.autoRefreshTicker;this.autoRefreshTicker=null,e&&clearInterval(e)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const e=Date.now();try{return await this._useSession(async n=>{const{data:{session:i}}=n;if(!i||!i.refresh_token||!i.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((i.expires_at*1e3-e)/Xi);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${Xi}ms, refresh threshold is ${hd} ticks`),r<=hd&&await this._callRefreshToken(i.refresh_token)})}catch(n){console.error("Auto refresh tick failed with error. This is likely a transient error.",n)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e.isAcquireTimeout||e instanceof lm)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!lt()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>await this._onVisibilityChanged(!1),window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){const n=`#_onVisibilityChanged(${e})`;this._debug(n,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),e||(await this.initializePromise,await this._acquireLock(-1,async()=>{if(document.visibilityState!=="visible"){this._debug(n,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(e,n,i){const r=[`provider=${encodeURIComponent(n)}`];if(i!=null&&i.redirectTo&&r.push(`redirect_to=${encodeURIComponent(i.redirectTo)}`),i!=null&&i.scopes&&r.push(`scopes=${encodeURIComponent(i.scopes)}`),this.flowType==="pkce"){const[s,o]=await ei(this.storage,this.storageKey),a=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(o)}`});r.push(a.toString())}if(i!=null&&i.queryParams){const s=new URLSearchParams(i.queryParams);r.push(s.toString())}return i!=null&&i.skipBrowserRedirect&&r.push(`skip_http_redirect=${i.skipBrowserRedirect}`),`${e}?${r.join("&")}`}async _unenroll(e){try{return await this._useSession(async n=>{var i;const{data:r,error:s}=n;return s?{data:null,error:s}:await z(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token})})}catch(n){if(j(n))return{data:null,error:n};throw n}}async _enroll(e){try{return await this._useSession(async n=>{var i,r;const{data:s,error:o}=n;if(o)return{data:null,error:o};const{data:a,error:l}=await z(this.fetch,"POST",`${this.url}/factors`,{body:{friendly_name:e.friendlyName,factor_type:e.factorType,issuer:e.issuer},headers:this.headers,jwt:(i=s==null?void 0:s.session)===null||i===void 0?void 0:i.access_token});return l?{data:null,error:l}:(!((r=a==null?void 0:a.totp)===null||r===void 0)&&r.qr_code&&(a.totp.qr_code=`data:image/svg+xml;utf-8,${a.totp.qr_code}`),{data:a,error:null})})}catch(n){if(j(n))return{data:null,error:n};throw n}}async _verify(e){return this._acquireLock(-1,async()=>{try{return await this._useSession(async n=>{var i;const{data:r,error:s}=n;if(s)return{data:null,error:s};const{data:o,error:a}=await z(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:{code:e.code,challenge_id:e.challengeId},headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token});return a?{data:null,error:a}:(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+o.expires_in},o)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",o),{data:o,error:a})})}catch(n){if(j(n))return{data:null,error:n};throw n}})}async _challenge(e){return this._acquireLock(-1,async()=>{try{return await this._useSession(async n=>{var i;const{data:r,error:s}=n;return s?{data:null,error:s}:await z(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token})})}catch(n){if(j(n))return{data:null,error:n};throw n}})}async _challengeAndVerify(e){const{data:n,error:i}=await this._challenge({factorId:e.factorId});return i?{data:null,error:i}:await this._verify({factorId:e.factorId,challengeId:n.id,code:e.code})}async _listFactors(){const{data:{user:e},error:n}=await this.getUser();if(n)return{data:null,error:n};const i=(e==null?void 0:e.factors)||[],r=i.filter(s=>s.factor_type==="totp"&&s.status==="verified");return{data:{all:i,totp:r},error:null}}async _getAuthenticatorAssuranceLevel(){return this._acquireLock(-1,async()=>await this._useSession(async e=>{var n,i;const{data:{session:r},error:s}=e;if(s)return{data:null,error:s};if(!r)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const o=this._decodeJWT(r.access_token);let a=null;o.aal&&(a=o.aal);let l=a;((i=(n=r.user.factors)===null||n===void 0?void 0:n.filter(h=>h.status==="verified"))!==null&&i!==void 0?i:[]).length>0&&(l="aal2");const c=o.amr||[];return{data:{currentLevel:a,nextLevel:l,currentAuthenticationMethods:c},error:null}}))}}Qr.nextInstanceID=0;const ex=Qr;class tx extends ex{constructor(e){super(e)}}var nx=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};class ix{constructor(e,n,i){var r,s,o;if(this.supabaseUrl=e,this.supabaseKey=n,!e)throw new Error("supabaseUrl is required.");if(!n)throw new Error("supabaseKey is required.");const a=_w(e);this.realtimeUrl=`${a}/realtime/v1`.replace(/^http/i,"ws"),this.authUrl=`${a}/auth/v1`,this.storageUrl=`${a}/storage/v1`,this.functionsUrl=`${a}/functions/v1`;const l=`sb-${new URL(this.authUrl).hostname.split(".")[0]}-auth-token`,u={db:dw,realtime:pw,auth:Object.assign(Object.assign({},fw),{storageKey:l}),global:hw},c=ww(i??{},u);this.storageKey=(r=c.auth.storageKey)!==null&&r!==void 0?r:"",this.headers=(s=c.global.headers)!==null&&s!==void 0?s:{},this.auth=this._initSupabaseAuthClient((o=c.auth)!==null&&o!==void 0?o:{},this.headers,c.global.fetch),this.fetch=vw(n,this._getAccessToken.bind(this),c.global.fetch),this.realtime=this._initRealtimeClient(Object.assign({headers:this.headers},c.realtime)),this.rest=new mc(`${a}/rest/v1`,{headers:this.headers,schema:c.db.schema,fetch:this.fetch}),this._listenForAuthEvents()}get functions(){return new C_(this.functionsUrl,{headers:this.headers,customFetch:this.fetch})}get storage(){return new lw(this.storageUrl,this.headers,this.fetch)}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,n={},i={}){return this.rest.rpc(e,n,i)}channel(e,n={config:{}}){return this.realtime.channel(e,n)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}_getAccessToken(){var e,n;return nx(this,void 0,void 0,function*(){const{data:i}=yield this.auth.getSession();return(n=(e=i.session)===null||e===void 0?void 0:e.access_token)!==null&&n!==void 0?n:null})}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:n,detectSessionInUrl:i,storage:r,storageKey:s,flowType:o,debug:a},l,u){var c;const h={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new tx({url:this.authUrl,headers:Object.assign(Object.assign({},h),l),storageKey:s,autoRefreshToken:e,persistSession:n,detectSessionInUrl:i,storage:r,flowType:o,debug:a,fetch:u,hasCustomAuthorizationHeader:(c="Authorization"in this.headers)!==null&&c!==void 0?c:!1})}_initRealtimeClient(e){return new q_(this.realtimeUrl,Object.assign(Object.assign({},e),{params:Object.assign({apikey:this.supabaseKey},e==null?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((n,i)=>{this._handleTokenChanged(n,"CLIENT",i==null?void 0:i.access_token)})}_handleTokenChanged(e,n,i){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==i?(this.realtime.setAuth(i??null),this.changedAccessToken=i):e==="SIGNED_OUT"&&(this.realtime.setAuth(this.supabaseKey),n=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}}const rx=(t,e,n)=>new ix(t,e,n);function ni(t){return L.jsxs("div",{role:"button",className:"flex items-center w-full p-3 leading-tight transition-all rounded-lg outline-none text-start hover:bg-blue-gray-50 hover:bg-opacity-80 hover:text-blue-gray-900 focus:bg-blue-gray-50 focus:bg-opacity-80 focus:text-blue-gray-900 active:bg-blue-gray-50 active:bg-opacity-80 active:text-blue-gray-900",children:[L.jsx("div",{className:"grid mr-4 place-items-center",children:L.jsx("i",{className:t.icon})}),L.jsx("a",{href:t.href,children:t.name})]})}function sx(){return L.jsxs("div",{className:"relative flex h-full w-full max-w-[20rem] flex-col rounded-xl bg-white bg-clip-border p-4 text-gray-700 shadow-xl shadow-blue-gray-900/5 mr-5",children:[L.jsx("div",{className:"p-4 mb-2",children:L.jsx("h5",{className:"block font-sans text-xl antialiased font-semibold leading-snug tracking-normal text-blue-gray-900",children:L.jsx("a",{href:"/",children:"fs-tracer"})})}),L.jsxs("nav",{className:"flex min-w-[240px] flex-col gap-1 p-2 font-sans text-base font-normal text-blue-gray-700",children:[L.jsx(ni,{name:"Home",icon:"fa-solid fa-house",href:"/"}),L.jsx(ni,{name:"Recent files",icon:"fa-solid fa-folder",href:"/recent"}),L.jsx(ni,{name:"Search",icon:"fa-solid fa-magnifying-glass",href:"/search"}),L.jsx(ni,{name:"Monitoring",icon:"fa-solid fa-chart-column",href:"/monitoring"}),L.jsx(ni,{name:"Setup",icon:"fa-solid fa-gear",href:"/setup"}),L.jsx(ni,{name:"Logout",icon:"fa-solid fa-right-from-bracket",href:"/logout"})]})]})}/*! + */const g_="6";try{window.__reactRouterVersion=g_}catch{}const m_="startTransition",Yh=p0[m_];function y_(t){let{basename:e,children:n,future:i,window:r}=t,s=E.useRef();s.current==null&&(s.current=Ev({window:r,v5Compat:!0}));let o=s.current,[a,l]=E.useState({action:o.action,location:o.location}),{v7_startTransition:u}=i||{},c=E.useCallback(h=>{u&&Yh?Yh(()=>l(h)):l(h)},[l,u]);return E.useLayoutEffect(()=>o.listen(c),[o,c]),E.createElement(f_,{basename:e,children:n,location:a.location,navigationType:a.action,navigator:o,future:i})}var Gh;(function(t){t.UseScrollRestoration="useScrollRestoration",t.UseSubmit="useSubmit",t.UseSubmitFetcher="useSubmitFetcher",t.UseFetcher="useFetcher",t.useViewTransitionState="useViewTransitionState"})(Gh||(Gh={}));var qh;(function(t){t.UseFetcher="useFetcher",t.UseFetchers="useFetchers",t.UseScrollRestoration="useScrollRestoration"})(qh||(qh={}));const v_="modulepreload",__=function(t,e){return new URL(t,e).href},Qh={},Li=function(e,n,i){let r=Promise.resolve();if(n&&n.length>0){const s=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),a=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.all(n.map(l=>{if(l=__(l,i),l in Qh)return;Qh[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!i)for(let f=s.length-1;f>=0;f--){const m=s[f];if(m.href===l&&(!u||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":v_,u||(d.as="script",d.crossOrigin=""),d.href=l,a&&d.setAttribute("nonce",a),document.head.appendChild(d),u)return new Promise((f,m)=>{d.addEventListener("load",f),d.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return r.then(()=>e()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})},w_=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...n)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:i})=>i(...n)):e=fetch,(...n)=>e(...n)};class pc extends Error{constructor(e,n="FunctionsError",i){super(e),this.name=n,this.context=i}}class x_ extends pc{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class k_ extends pc{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class b_ extends pc{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var eu;(function(t){t.Any="any",t.ApNortheast1="ap-northeast-1",t.ApNortheast2="ap-northeast-2",t.ApSouth1="ap-south-1",t.ApSoutheast1="ap-southeast-1",t.ApSoutheast2="ap-southeast-2",t.CaCentral1="ca-central-1",t.EuCentral1="eu-central-1",t.EuWest1="eu-west-1",t.EuWest2="eu-west-2",t.EuWest3="eu-west-3",t.SaEast1="sa-east-1",t.UsEast1="us-east-1",t.UsWest1="us-west-1",t.UsWest2="us-west-2"})(eu||(eu={}));var S_=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};class C_{constructor(e,{headers:n={},customFetch:i,region:r=eu.Any}={}){this.url=e,this.headers=n,this.region=r,this.fetch=w_(i)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e,n={}){var i;return S_(this,void 0,void 0,function*(){try{const{headers:r,method:s,body:o}=n;let a={},{region:l}=n;l||(l=this.region),l&&l!=="any"&&(a["x-region"]=l);let u;o&&(r&&!Object.prototype.hasOwnProperty.call(r,"Content-Type")||!r)&&(typeof Blob<"u"&&o instanceof Blob||o instanceof ArrayBuffer?(a["Content-Type"]="application/octet-stream",u=o):typeof o=="string"?(a["Content-Type"]="text/plain",u=o):typeof FormData<"u"&&o instanceof FormData?u=o:(a["Content-Type"]="application/json",u=JSON.stringify(o)));const c=yield this.fetch(`${this.url}/${e}`,{method:s||"POST",headers:Object.assign(Object.assign(Object.assign({},a),this.headers),r),body:u}).catch(m=>{throw new x_(m)}),h=c.headers.get("x-relay-error");if(h&&h==="true")throw new k_(c);if(!c.ok)throw new b_(c);let d=((i=c.headers.get("Content-Type"))!==null&&i!==void 0?i:"text/plain").split(";")[0].trim(),f;return d==="application/json"?f=yield c.json():d==="application/octet-stream"?f=yield c.blob():d==="text/event-stream"?f=c:d==="multipart/form-data"?f=yield c.formData():f=yield c.text(),{data:f,error:null}}catch(r){return{data:null,error:r}}})}}var E_=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")},Ri=E_();const P_=Ri.fetch,gc=Ri.fetch.bind(Ri),Xg=Ri.Headers,T_=Ri.Request,O_=Ri.Response,ls=Object.freeze(Object.defineProperty({__proto__:null,Headers:Xg,Request:T_,Response:O_,default:gc,fetch:P_},Symbol.toStringTag,{value:"Module"}));class M_ extends Error{constructor(e){super(e.message),this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}}class L_{constructor(e){this.shouldThrowOnError=!1,this.method=e.method,this.url=e.url,this.headers=e.headers,this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=e.shouldThrowOnError,this.signal=e.signal,this.isMaybeSingle=e.isMaybeSingle,e.fetch?this.fetch=e.fetch:typeof fetch>"u"?this.fetch=gc:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}then(e,n){this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers["Accept-Profile"]=this.schema:this.headers["Content-Profile"]=this.schema),this.method!=="GET"&&this.method!=="HEAD"&&(this.headers["Content-Type"]="application/json");const i=this.fetch;let r=i(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async s=>{var o,a,l;let u=null,c=null,h=null,d=s.status,f=s.statusText;if(s.ok){if(this.method!=="HEAD"){const p=await s.text();p===""||(this.headers.Accept==="text/csv"||this.headers.Accept&&this.headers.Accept.includes("application/vnd.pgrst.plan+text")?c=p:c=JSON.parse(p))}const y=(o=this.headers.Prefer)===null||o===void 0?void 0:o.match(/count=(exact|planned|estimated)/),v=(a=s.headers.get("content-range"))===null||a===void 0?void 0:a.split("/");y&&v&&v.length>1&&(h=parseInt(v[1])),this.isMaybeSingle&&this.method==="GET"&&Array.isArray(c)&&(c.length>1?(u={code:"PGRST116",details:`Results contain ${c.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},c=null,h=null,d=406,f="Not Acceptable"):c.length===1?c=c[0]:c=null)}else{const y=await s.text();try{u=JSON.parse(y),Array.isArray(u)&&s.status===404&&(c=[],u=null,d=200,f="OK")}catch{s.status===404&&y===""?(d=204,f="No Content"):u={message:y}}if(u&&this.isMaybeSingle&&(!((l=u==null?void 0:u.details)===null||l===void 0)&&l.includes("0 rows"))&&(u=null,d=200,f="OK"),u&&this.shouldThrowOnError)throw new M_(u)}return{error:u,data:c,count:h,status:d,statusText:f}});return this.shouldThrowOnError||(r=r.catch(s=>{var o,a,l;return{error:{message:`${(o=s==null?void 0:s.name)!==null&&o!==void 0?o:"FetchError"}: ${s==null?void 0:s.message}`,details:`${(a=s==null?void 0:s.stack)!==null&&a!==void 0?a:""}`,hint:"",code:`${(l=s==null?void 0:s.code)!==null&&l!==void 0?l:""}`},data:null,count:null,status:0,statusText:""}})),r.then(e,n)}}class R_ extends L_{select(e){let n=!1;const i=(e??"*").split("").map(r=>/\s/.test(r)&&!n?"":(r==='"'&&(n=!n),r)).join("");return this.url.searchParams.set("select",i),this.headers.Prefer&&(this.headers.Prefer+=","),this.headers.Prefer+="return=representation",this}order(e,{ascending:n=!0,nullsFirst:i,foreignTable:r,referencedTable:s=r}={}){const o=s?`${s}.order`:"order",a=this.url.searchParams.get(o);return this.url.searchParams.set(o,`${a?`${a},`:""}${e}.${n?"asc":"desc"}${i===void 0?"":i?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:n,referencedTable:i=n}={}){const r=typeof i>"u"?"limit":`${i}.limit`;return this.url.searchParams.set(r,`${e}`),this}range(e,n,{foreignTable:i,referencedTable:r=i}={}){const s=typeof r>"u"?"offset":`${r}.offset`,o=typeof r>"u"?"limit":`${r}.limit`;return this.url.searchParams.set(s,`${e}`),this.url.searchParams.set(o,`${n-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.Accept="application/vnd.pgrst.object+json",this}maybeSingle(){return this.method==="GET"?this.headers.Accept="application/json":this.headers.Accept="application/vnd.pgrst.object+json",this.isMaybeSingle=!0,this}csv(){return this.headers.Accept="text/csv",this}geojson(){return this.headers.Accept="application/geo+json",this}explain({analyze:e=!1,verbose:n=!1,settings:i=!1,buffers:r=!1,wal:s=!1,format:o="text"}={}){var a;const l=[e?"analyze":null,n?"verbose":null,i?"settings":null,r?"buffers":null,s?"wal":null].filter(Boolean).join("|"),u=(a=this.headers.Accept)!==null&&a!==void 0?a:"application/json";return this.headers.Accept=`application/vnd.pgrst.plan+${o}; for="${u}"; options=${l};`,o==="json"?this:this}rollback(){var e;return((e=this.headers.Prefer)!==null&&e!==void 0?e:"").trim().length>0?this.headers.Prefer+=",tx=rollback":this.headers.Prefer="tx=rollback",this}returns(){return this}}class ri extends R_{eq(e,n){return this.url.searchParams.append(e,`eq.${n}`),this}neq(e,n){return this.url.searchParams.append(e,`neq.${n}`),this}gt(e,n){return this.url.searchParams.append(e,`gt.${n}`),this}gte(e,n){return this.url.searchParams.append(e,`gte.${n}`),this}lt(e,n){return this.url.searchParams.append(e,`lt.${n}`),this}lte(e,n){return this.url.searchParams.append(e,`lte.${n}`),this}like(e,n){return this.url.searchParams.append(e,`like.${n}`),this}likeAllOf(e,n){return this.url.searchParams.append(e,`like(all).{${n.join(",")}}`),this}likeAnyOf(e,n){return this.url.searchParams.append(e,`like(any).{${n.join(",")}}`),this}ilike(e,n){return this.url.searchParams.append(e,`ilike.${n}`),this}ilikeAllOf(e,n){return this.url.searchParams.append(e,`ilike(all).{${n.join(",")}}`),this}ilikeAnyOf(e,n){return this.url.searchParams.append(e,`ilike(any).{${n.join(",")}}`),this}is(e,n){return this.url.searchParams.append(e,`is.${n}`),this}in(e,n){const i=Array.from(new Set(n)).map(r=>typeof r=="string"&&new RegExp("[,()]").test(r)?`"${r}"`:`${r}`).join(",");return this.url.searchParams.append(e,`in.(${i})`),this}contains(e,n){return typeof n=="string"?this.url.searchParams.append(e,`cs.${n}`):Array.isArray(n)?this.url.searchParams.append(e,`cs.{${n.join(",")}}`):this.url.searchParams.append(e,`cs.${JSON.stringify(n)}`),this}containedBy(e,n){return typeof n=="string"?this.url.searchParams.append(e,`cd.${n}`):Array.isArray(n)?this.url.searchParams.append(e,`cd.{${n.join(",")}}`):this.url.searchParams.append(e,`cd.${JSON.stringify(n)}`),this}rangeGt(e,n){return this.url.searchParams.append(e,`sr.${n}`),this}rangeGte(e,n){return this.url.searchParams.append(e,`nxl.${n}`),this}rangeLt(e,n){return this.url.searchParams.append(e,`sl.${n}`),this}rangeLte(e,n){return this.url.searchParams.append(e,`nxr.${n}`),this}rangeAdjacent(e,n){return this.url.searchParams.append(e,`adj.${n}`),this}overlaps(e,n){return typeof n=="string"?this.url.searchParams.append(e,`ov.${n}`):this.url.searchParams.append(e,`ov.{${n.join(",")}}`),this}textSearch(e,n,{config:i,type:r}={}){let s="";r==="plain"?s="pl":r==="phrase"?s="ph":r==="websearch"&&(s="w");const o=i===void 0?"":`(${i})`;return this.url.searchParams.append(e,`${s}fts${o}.${n}`),this}match(e){return Object.entries(e).forEach(([n,i])=>{this.url.searchParams.append(n,`eq.${i}`)}),this}not(e,n,i){return this.url.searchParams.append(e,`not.${n}.${i}`),this}or(e,{foreignTable:n,referencedTable:i=n}={}){const r=i?`${i}.or`:"or";return this.url.searchParams.append(r,`(${e})`),this}filter(e,n,i){return this.url.searchParams.append(e,`${n}.${i}`),this}}class I_{constructor(e,{headers:n={},schema:i,fetch:r}){this.url=e,this.headers=n,this.schema=i,this.fetch=r}select(e,{head:n=!1,count:i}={}){const r=n?"HEAD":"GET";let s=!1;const o=(e??"*").split("").map(a=>/\s/.test(a)&&!s?"":(a==='"'&&(s=!s),a)).join("");return this.url.searchParams.set("select",o),i&&(this.headers.Prefer=`count=${i}`),new ri({method:r,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch,allowEmpty:!1})}insert(e,{count:n,defaultToNull:i=!0}={}){const r="POST",s=[];if(this.headers.Prefer&&s.push(this.headers.Prefer),n&&s.push(`count=${n}`),i||s.push("missing=default"),this.headers.Prefer=s.join(","),Array.isArray(e)){const o=e.reduce((a,l)=>a.concat(Object.keys(l)),[]);if(o.length>0){const a=[...new Set(o)].map(l=>`"${l}"`);this.url.searchParams.set("columns",a.join(","))}}return new ri({method:r,url:this.url,headers:this.headers,schema:this.schema,body:e,fetch:this.fetch,allowEmpty:!1})}upsert(e,{onConflict:n,ignoreDuplicates:i=!1,count:r,defaultToNull:s=!0}={}){const o="POST",a=[`resolution=${i?"ignore":"merge"}-duplicates`];if(n!==void 0&&this.url.searchParams.set("on_conflict",n),this.headers.Prefer&&a.push(this.headers.Prefer),r&&a.push(`count=${r}`),s||a.push("missing=default"),this.headers.Prefer=a.join(","),Array.isArray(e)){const l=e.reduce((u,c)=>u.concat(Object.keys(c)),[]);if(l.length>0){const u=[...new Set(l)].map(c=>`"${c}"`);this.url.searchParams.set("columns",u.join(","))}}return new ri({method:o,url:this.url,headers:this.headers,schema:this.schema,body:e,fetch:this.fetch,allowEmpty:!1})}update(e,{count:n}={}){const i="PATCH",r=[];return this.headers.Prefer&&r.push(this.headers.Prefer),n&&r.push(`count=${n}`),this.headers.Prefer=r.join(","),new ri({method:i,url:this.url,headers:this.headers,schema:this.schema,body:e,fetch:this.fetch,allowEmpty:!1})}delete({count:e}={}){const n="DELETE",i=[];return e&&i.push(`count=${e}`),this.headers.Prefer&&i.unshift(this.headers.Prefer),this.headers.Prefer=i.join(","),new ri({method:n,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch,allowEmpty:!1})}}const A_="1.15.2",D_={"X-Client-Info":`postgrest-js/${A_}`};class mc{constructor(e,{headers:n={},schema:i,fetch:r}={}){this.url=e,this.headers=Object.assign(Object.assign({},D_),n),this.schemaName=i,this.fetch=r}from(e){const n=new URL(`${this.url}/${e}`);return new I_(n,{headers:Object.assign({},this.headers),schema:this.schemaName,fetch:this.fetch})}schema(e){return new mc(this.url,{headers:this.headers,schema:e,fetch:this.fetch})}rpc(e,n={},{head:i=!1,get:r=!1,count:s}={}){let o;const a=new URL(`${this.url}/rpc/${e}`);let l;i||r?(o=i?"HEAD":"GET",Object.entries(n).filter(([c,h])=>h!==void 0).map(([c,h])=>[c,Array.isArray(h)?`{${h.join(",")}}`:`${h}`]).forEach(([c,h])=>{a.searchParams.append(c,h)})):(o="POST",l=n);const u=Object.assign({},this.headers);return s&&(u.Prefer=`count=${s}`),new ri({method:o,url:a,headers:u,schema:this.schemaName,body:l,fetch:this.fetch,allowEmpty:!1})}}const j_="2.9.5",N_={"X-Client-Info":`realtime-js/${j_}`},z_="1.0.0",Jg=1e4,F_=1e3;var bi;(function(t){t[t.connecting=0]="connecting",t[t.open=1]="open",t[t.closing=2]="closing",t[t.closed=3]="closed"})(bi||(bi={}));var Be;(function(t){t.closed="closed",t.errored="errored",t.joined="joined",t.joining="joining",t.leaving="leaving"})(Be||(Be={}));var ht;(function(t){t.close="phx_close",t.error="phx_error",t.join="phx_join",t.reply="phx_reply",t.leave="phx_leave",t.access_token="access_token"})(ht||(ht={}));var tu;(function(t){t.websocket="websocket"})(tu||(tu={}));var In;(function(t){t.Connecting="connecting",t.Open="open",t.Closing="closing",t.Closed="closed"})(In||(In={}));class Zg{constructor(e,n){this.callback=e,this.timerCalc=n,this.timer=void 0,this.tries=0,this.callback=e,this.timerCalc=n}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}}class $_{constructor(){this.HEADER_LENGTH=1}decode(e,n){return e.constructor===ArrayBuffer?n(this._binaryDecode(e)):n(typeof e=="string"?JSON.parse(e):{})}_binaryDecode(e){const n=new DataView(e),i=new TextDecoder;return this._decodeBroadcast(e,n,i)}_decodeBroadcast(e,n,i){const r=n.getUint8(1),s=n.getUint8(2);let o=this.HEADER_LENGTH+2;const a=i.decode(e.slice(o,o+r));o=o+r;const l=i.decode(e.slice(o,o+s));o=o+s;const u=JSON.parse(i.decode(e.slice(o,e.byteLength)));return{ref:null,topic:a,event:l,payload:u}}}class Va{constructor(e,n,i={},r=Jg){this.channel=e,this.event=n,this.payload=i,this.timeout=r,this.sent=!1,this.timeoutTimer=void 0,this.ref="",this.receivedResp=null,this.recHooks=[],this.refEvent=null}resend(e){this.timeout=e,this._cancelRefEvent(),this.ref="",this.refEvent=null,this.receivedResp=null,this.sent=!1,this.send()}send(){this._hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload,ref:this.ref,join_ref:this.channel._joinRef()}))}updatePayload(e){this.payload=Object.assign(Object.assign({},this.payload),e)}receive(e,n){var i;return this._hasReceived(e)&&n((i=this.receivedResp)===null||i===void 0?void 0:i.response),this.recHooks.push({status:e,callback:n}),this}startTimeout(){if(this.timeoutTimer)return;this.ref=this.channel.socket._makeRef(),this.refEvent=this.channel._replyEventName(this.ref);const e=n=>{this._cancelRefEvent(),this._cancelTimeout(),this.receivedResp=n,this._matchReceive(n)};this.channel._on(this.refEvent,{},e),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}trigger(e,n){this.refEvent&&this.channel._trigger(this.refEvent,{status:e,response:n})}destroy(){this._cancelRefEvent(),this._cancelTimeout()}_cancelRefEvent(){this.refEvent&&this.channel._off(this.refEvent,{})}_cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=void 0}_matchReceive({status:e,response:n}){this.recHooks.filter(i=>i.status===e).forEach(i=>i.callback(n))}_hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}}var Xh;(function(t){t.SYNC="sync",t.JOIN="join",t.LEAVE="leave"})(Xh||(Xh={}));class kr{constructor(e,n){this.channel=e,this.state={},this.pendingDiffs=[],this.joinRef=null,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const i=(n==null?void 0:n.events)||{state:"presence_state",diff:"presence_diff"};this.channel._on(i.state,{},r=>{const{onJoin:s,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel._joinRef(),this.state=kr.syncState(this.state,r,s,o),this.pendingDiffs.forEach(l=>{this.state=kr.syncDiff(this.state,l,s,o)}),this.pendingDiffs=[],a()}),this.channel._on(i.diff,{},r=>{const{onJoin:s,onLeave:o,onSync:a}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=kr.syncDiff(this.state,r,s,o),a())}),this.onJoin((r,s,o)=>{this.channel._trigger("presence",{event:"join",key:r,currentPresences:s,newPresences:o})}),this.onLeave((r,s,o)=>{this.channel._trigger("presence",{event:"leave",key:r,currentPresences:s,leftPresences:o})}),this.onSync(()=>{this.channel._trigger("presence",{event:"sync"})})}static syncState(e,n,i,r){const s=this.cloneDeep(e),o=this.transformState(n),a={},l={};return this.map(s,(u,c)=>{o[u]||(l[u]=c)}),this.map(o,(u,c)=>{const h=s[u];if(h){const d=c.map(v=>v.presence_ref),f=h.map(v=>v.presence_ref),m=c.filter(v=>f.indexOf(v.presence_ref)<0),y=h.filter(v=>d.indexOf(v.presence_ref)<0);m.length>0&&(a[u]=m),y.length>0&&(l[u]=y)}else a[u]=c}),this.syncDiff(s,{joins:a,leaves:l},i,r)}static syncDiff(e,n,i,r){const{joins:s,leaves:o}={joins:this.transformState(n.joins),leaves:this.transformState(n.leaves)};return i||(i=()=>{}),r||(r=()=>{}),this.map(s,(a,l)=>{var u;const c=(u=e[a])!==null&&u!==void 0?u:[];if(e[a]=this.cloneDeep(l),c.length>0){const h=e[a].map(f=>f.presence_ref),d=c.filter(f=>h.indexOf(f.presence_ref)<0);e[a].unshift(...d)}i(a,c,l)}),this.map(o,(a,l)=>{let u=e[a];if(!u)return;const c=l.map(h=>h.presence_ref);u=u.filter(h=>c.indexOf(h.presence_ref)<0),e[a]=u,r(a,u,l),u.length===0&&delete e[a]}),e}static map(e,n){return Object.getOwnPropertyNames(e).map(i=>n(i,e[i]))}static transformState(e){return e=this.cloneDeep(e),Object.getOwnPropertyNames(e).reduce((n,i)=>{const r=e[i];return"metas"in r?n[i]=r.metas.map(s=>(s.presence_ref=s.phx_ref,delete s.phx_ref,delete s.phx_ref_prev,s)):n[i]=r,n},{})}static cloneDeep(e){return JSON.parse(JSON.stringify(e))}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel._joinRef()}}var G;(function(t){t.abstime="abstime",t.bool="bool",t.date="date",t.daterange="daterange",t.float4="float4",t.float8="float8",t.int2="int2",t.int4="int4",t.int4range="int4range",t.int8="int8",t.int8range="int8range",t.json="json",t.jsonb="jsonb",t.money="money",t.numeric="numeric",t.oid="oid",t.reltime="reltime",t.text="text",t.time="time",t.timestamp="timestamp",t.timestamptz="timestamptz",t.timetz="timetz",t.tsrange="tsrange",t.tstzrange="tstzrange"})(G||(G={}));const Jh=(t,e,n={})=>{var i;const r=(i=n.skipTypes)!==null&&i!==void 0?i:[];return Object.keys(e).reduce((s,o)=>(s[o]=U_(o,t,e,r),s),{})},U_=(t,e,n,i)=>{const r=e.find(a=>a.name===t),s=r==null?void 0:r.type,o=n[t];return s&&!i.includes(s)?em(s,o):nu(o)},em=(t,e)=>{if(t.charAt(0)==="_"){const n=t.slice(1,t.length);return W_(e,n)}switch(t){case G.bool:return B_(e);case G.float4:case G.float8:case G.int2:case G.int4:case G.int8:case G.numeric:case G.oid:return V_(e);case G.json:case G.jsonb:return H_(e);case G.timestamp:return K_(e);case G.abstime:case G.date:case G.daterange:case G.int4range:case G.int8range:case G.money:case G.reltime:case G.text:case G.time:case G.timestamptz:case G.timetz:case G.tsrange:case G.tstzrange:return nu(e);default:return nu(e)}},nu=t=>t,B_=t=>{switch(t){case"t":return!0;case"f":return!1;default:return t}},V_=t=>{if(typeof t=="string"){const e=parseFloat(t);if(!Number.isNaN(e))return e}return t},H_=t=>{if(typeof t=="string")try{return JSON.parse(t)}catch(e){return console.log(`JSON parse error: ${e}`),t}return t},W_=(t,e)=>{if(typeof t!="string")return t;const n=t.length-1,i=t[n];if(t[0]==="{"&&i==="}"){let s;const o=t.slice(1,n);try{s=JSON.parse("["+o+"]")}catch{s=o?o.split(","):[]}return s.map(a=>em(e,a))}return t},K_=t=>typeof t=="string"?t.replace(" ","T"):t;var Zh;(function(t){t.ALL="*",t.INSERT="INSERT",t.UPDATE="UPDATE",t.DELETE="DELETE"})(Zh||(Zh={}));var ed;(function(t){t.BROADCAST="broadcast",t.PRESENCE="presence",t.POSTGRES_CHANGES="postgres_changes"})(ed||(ed={}));var td;(function(t){t.SUBSCRIBED="SUBSCRIBED",t.TIMED_OUT="TIMED_OUT",t.CLOSED="CLOSED",t.CHANNEL_ERROR="CHANNEL_ERROR"})(td||(td={}));class yc{constructor(e,n={config:{}},i){this.topic=e,this.params=n,this.socket=i,this.bindings={},this.state=Be.closed,this.joinedOnce=!1,this.pushBuffer=[],this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:""}},n.config),this.timeout=this.socket.timeout,this.joinPush=new Va(this,ht.join,this.params,this.timeout),this.rejoinTimer=new Zg(()=>this._rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=Be.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(r=>r.send()),this.pushBuffer=[]}),this._onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this._joinRef()}`),this.state=Be.closed,this.socket._remove(this)}),this._onError(r=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,r),this.state=Be.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{this._isJoining()&&(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=Be.errored,this.rejoinTimer.scheduleTimeout())}),this._on(ht.reply,{},(r,s)=>{this._trigger(this._replyEventName(s),r)}),this.presence=new kr(this),this.broadcastEndpointURL=this._broadcastEndpointURL()}subscribe(e,n=this.timeout){var i,r;if(this.socket.isConnected()||this.socket.connect(),this.joinedOnce)throw"tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance";{const{config:{broadcast:s,presence:o}}=this.params;this._onError(u=>e&&e("CHANNEL_ERROR",u)),this._onClose(()=>e&&e("CLOSED"));const a={},l={broadcast:s,presence:o,postgres_changes:(r=(i=this.bindings.postgres_changes)===null||i===void 0?void 0:i.map(u=>u.filter))!==null&&r!==void 0?r:[]};this.socket.accessToken&&(a.access_token=this.socket.accessToken),this.updateJoinPayload(Object.assign({config:l},a)),this.joinedOnce=!0,this._rejoin(n),this.joinPush.receive("ok",({postgres_changes:u})=>{var c;if(this.socket.accessToken&&this.socket.setAuth(this.socket.accessToken),u===void 0){e&&e("SUBSCRIBED");return}else{const h=this.bindings.postgres_changes,d=(c=h==null?void 0:h.length)!==null&&c!==void 0?c:0,f=[];for(let m=0;m<d;m++){const y=h[m],{filter:{event:v,schema:p,table:g,filter:_}}=y,w=u&&u[m];if(w&&w.event===v&&w.schema===p&&w.table===g&&w.filter===_)f.push(Object.assign(Object.assign({},y),{id:w.id}));else{this.unsubscribe(),e&&e("CHANNEL_ERROR",new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=f,e&&e("SUBSCRIBED");return}}).receive("error",u=>{e&&e("CHANNEL_ERROR",new Error(JSON.stringify(Object.values(u).join(", ")||"error")))}).receive("timeout",()=>{e&&e("TIMED_OUT")})}return this}presenceState(){return this.presence.state}async track(e,n={}){return await this.send({type:"presence",event:"track",payload:e},n.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,n,i){return this._on(e,n,i)}async send(e,n={}){var i,r;if(!this._canPush()&&e.type==="broadcast"){const{event:s,payload:o}=e,a={method:"POST",headers:{apikey:(i=this.socket.apiKey)!==null&&i!==void 0?i:"","Content-Type":"application/json"},body:JSON.stringify({messages:[{topic:this.subTopic,event:s,payload:o}]})};try{return(await this._fetchWithTimeout(this.broadcastEndpointURL,a,(r=n.timeout)!==null&&r!==void 0?r:this.timeout)).ok?"ok":"error"}catch(l){return l.name==="AbortError"?"timed out":"error"}}else return new Promise(s=>{var o,a,l;const u=this._push(e.type,e,n.timeout||this.timeout);e.type==="broadcast"&&!(!((l=(a=(o=this.params)===null||o===void 0?void 0:o.config)===null||a===void 0?void 0:a.broadcast)===null||l===void 0)&&l.ack)&&s("ok"),u.receive("ok",()=>s("ok")),u.receive("error",()=>s("error")),u.receive("timeout",()=>s("timed out"))})}updateJoinPayload(e){this.joinPush.updatePayload(e)}unsubscribe(e=this.timeout){this.state=Be.leaving;const n=()=>{this.socket.log("channel",`leave ${this.topic}`),this._trigger(ht.close,"leave",this._joinRef())};return this.rejoinTimer.reset(),this.joinPush.destroy(),new Promise(i=>{const r=new Va(this,ht.leave,{},e);r.receive("ok",()=>{n(),i("ok")}).receive("timeout",()=>{n(),i("timed out")}).receive("error",()=>{i("error")}),r.send(),this._canPush()||r.trigger("ok",{})})}_broadcastEndpointURL(){let e=this.socket.endPoint;return e=e.replace(/^ws/i,"http"),e=e.replace(/(\/socket\/websocket|\/socket|\/websocket)\/?$/i,""),e.replace(/\/+$/,"")+"/api/broadcast"}async _fetchWithTimeout(e,n,i){const r=new AbortController,s=setTimeout(()=>r.abort(),i),o=await this.socket.fetch(e,Object.assign(Object.assign({},n),{signal:r.signal}));return clearTimeout(s),o}_push(e,n,i=this.timeout){if(!this.joinedOnce)throw`tried to push '${e}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let r=new Va(this,e,n,i);return this._canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}_onMessage(e,n,i){return n}_isMember(e){return this.topic===e}_joinRef(){return this.joinPush.ref}_trigger(e,n,i){var r,s;const o=e.toLocaleLowerCase(),{close:a,error:l,leave:u,join:c}=ht;if(i&&[a,l,u,c].indexOf(o)>=0&&i!==this._joinRef())return;let d=this._onMessage(o,n,i);if(n&&!d)throw"channel onMessage callbacks must return the payload, modified or unmodified";["insert","update","delete"].includes(o)?(r=this.bindings.postgres_changes)===null||r===void 0||r.filter(f=>{var m,y,v;return((m=f.filter)===null||m===void 0?void 0:m.event)==="*"||((v=(y=f.filter)===null||y===void 0?void 0:y.event)===null||v===void 0?void 0:v.toLocaleLowerCase())===o}).map(f=>f.callback(d,i)):(s=this.bindings[o])===null||s===void 0||s.filter(f=>{var m,y,v,p,g,_;if(["broadcast","presence","postgres_changes"].includes(o))if("id"in f){const w=f.id,x=(m=f.filter)===null||m===void 0?void 0:m.event;return w&&((y=n.ids)===null||y===void 0?void 0:y.includes(w))&&(x==="*"||(x==null?void 0:x.toLocaleLowerCase())===((v=n.data)===null||v===void 0?void 0:v.type.toLocaleLowerCase()))}else{const w=(g=(p=f==null?void 0:f.filter)===null||p===void 0?void 0:p.event)===null||g===void 0?void 0:g.toLocaleLowerCase();return w==="*"||w===((_=n==null?void 0:n.event)===null||_===void 0?void 0:_.toLocaleLowerCase())}else return f.type.toLocaleLowerCase()===o}).map(f=>{if(typeof d=="object"&&"ids"in d){const m=d.data,{schema:y,table:v,commit_timestamp:p,type:g,errors:_}=m;d=Object.assign(Object.assign({},{schema:y,table:v,commit_timestamp:p,eventType:g,new:{},old:{},errors:_}),this._getPayloadRecords(m))}f.callback(d,i)})}_isClosed(){return this.state===Be.closed}_isJoined(){return this.state===Be.joined}_isJoining(){return this.state===Be.joining}_isLeaving(){return this.state===Be.leaving}_replyEventName(e){return`chan_reply_${e}`}_on(e,n,i){const r=e.toLocaleLowerCase(),s={type:r,filter:n,callback:i};return this.bindings[r]?this.bindings[r].push(s):this.bindings[r]=[s],this}_off(e,n){const i=e.toLocaleLowerCase();return this.bindings[i]=this.bindings[i].filter(r=>{var s;return!(((s=r.type)===null||s===void 0?void 0:s.toLocaleLowerCase())===i&&yc.isEqual(r.filter,n))}),this}static isEqual(e,n){if(Object.keys(e).length!==Object.keys(n).length)return!1;for(const i in e)if(e[i]!==n[i])return!1;return!0}_rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this._rejoin()}_onClose(e){this._on(ht.close,{},e)}_onError(e){this._on(ht.error,{},n=>e(n))}_canPush(){return this.socket.isConnected()&&this._isJoined()}_rejoin(e=this.timeout){this._isLeaving()||(this.socket._leaveOpenTopic(this.topic),this.state=Be.joining,this.joinPush.resend(e))}_getPayloadRecords(e){const n={new:{},old:{}};return(e.type==="INSERT"||e.type==="UPDATE")&&(n.new=Jh(e.columns,e.record)),(e.type==="UPDATE"||e.type==="DELETE")&&(n.old=Jh(e.columns,e.old_record)),n}}const Y_=()=>{},G_=typeof WebSocket<"u";class q_{constructor(e,n){var i;this.accessToken=null,this.apiKey=null,this.channels=[],this.endPoint="",this.headers=N_,this.params={},this.timeout=Jg,this.heartbeatIntervalMs=3e4,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.ref=0,this.logger=Y_,this.conn=null,this.sendBuffer=[],this.serializer=new $_,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this._resolveFetch=s=>{let o;return s?o=s:typeof fetch>"u"?o=(...a)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:l})=>l(...a)):o=fetch,(...a)=>o(...a)},this.endPoint=`${e}/${tu.websocket}`,n!=null&&n.transport?this.transport=n.transport:this.transport=null,n!=null&&n.params&&(this.params=n.params),n!=null&&n.headers&&(this.headers=Object.assign(Object.assign({},this.headers),n.headers)),n!=null&&n.timeout&&(this.timeout=n.timeout),n!=null&&n.logger&&(this.logger=n.logger),n!=null&&n.heartbeatIntervalMs&&(this.heartbeatIntervalMs=n.heartbeatIntervalMs);const r=(i=n==null?void 0:n.params)===null||i===void 0?void 0:i.apikey;r&&(this.accessToken=r,this.apiKey=r),this.reconnectAfterMs=n!=null&&n.reconnectAfterMs?n.reconnectAfterMs:s=>[1e3,2e3,5e3,1e4][s-1]||1e4,this.encode=n!=null&&n.encode?n.encode:(s,o)=>o(JSON.stringify(s)),this.decode=n!=null&&n.decode?n.decode:this.serializer.decode.bind(this.serializer),this.reconnectTimer=new Zg(async()=>{this.disconnect(),this.connect()},this.reconnectAfterMs),this.fetch=this._resolveFetch(n==null?void 0:n.fetch)}connect(){if(!this.conn){if(this.transport){this.conn=new this.transport(this._endPointURL(),void 0,{headers:this.headers});return}if(G_){this.conn=new WebSocket(this._endPointURL()),this.setupConnection();return}this.conn=new Q_(this._endPointURL(),void 0,{close:()=>{this.conn=null}}),Li(()=>import("./browser-DaXFb0Yh.js").then(e=>e.b),[],import.meta.url).then(({default:e})=>{this.conn=new e(this._endPointURL(),void 0,{headers:this.headers}),this.setupConnection()})}}disconnect(e,n){this.conn&&(this.conn.onclose=function(){},e?this.conn.close(e,n??""):this.conn.close(),this.conn=null,this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.reconnectTimer.reset())}getChannels(){return this.channels}async removeChannel(e){const n=await e.unsubscribe();return this.channels.length===0&&this.disconnect(),n}async removeAllChannels(){const e=await Promise.all(this.channels.map(n=>n.unsubscribe()));return this.disconnect(),e}log(e,n,i){this.logger(e,n,i)}connectionState(){switch(this.conn&&this.conn.readyState){case bi.connecting:return In.Connecting;case bi.open:return In.Open;case bi.closing:return In.Closing;default:return In.Closed}}isConnected(){return this.connectionState()===In.Open}channel(e,n={config:{}}){const i=new yc(`realtime:${e}`,n,this);return this.channels.push(i),i}push(e){const{topic:n,event:i,payload:r,ref:s}=e,o=()=>{this.encode(e,a=>{var l;(l=this.conn)===null||l===void 0||l.send(a)})};this.log("push",`${n} ${i} (${s})`,r),this.isConnected()?o():this.sendBuffer.push(o)}setAuth(e){this.accessToken=e,this.channels.forEach(n=>{e&&n.updateJoinPayload({access_token:e}),n.joinedOnce&&n._isJoined()&&n._push(ht.access_token,{access_token:e})})}_makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}_leaveOpenTopic(e){let n=this.channels.find(i=>i.topic===e&&(i._isJoined()||i._isJoining()));n&&(this.log("transport",`leaving duplicate topic "${e}"`),n.unsubscribe())}_remove(e){this.channels=this.channels.filter(n=>n._joinRef()!==e._joinRef())}setupConnection(){this.conn&&(this.conn.binaryType="arraybuffer",this.conn.onopen=()=>this._onConnOpen(),this.conn.onerror=e=>this._onConnError(e),this.conn.onmessage=e=>this._onConnMessage(e),this.conn.onclose=e=>this._onConnClose(e))}_endPointURL(){return this._appendParams(this.endPoint,Object.assign({},this.params,{vsn:z_}))}_onConnMessage(e){this.decode(e.data,n=>{let{topic:i,event:r,payload:s,ref:o}=n;(o&&o===this.pendingHeartbeatRef||r===(s==null?void 0:s.type))&&(this.pendingHeartbeatRef=null),this.log("receive",`${s.status||""} ${i} ${r} ${o&&"("+o+")"||""}`,s),this.channels.filter(a=>a._isMember(i)).forEach(a=>a._trigger(r,s,o)),this.stateChangeCallbacks.message.forEach(a=>a(n))})}_onConnOpen(){this.log("transport",`connected to ${this._endPointURL()}`),this._flushSendBuffer(),this.reconnectTimer.reset(),this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=setInterval(()=>this._sendHeartbeat(),this.heartbeatIntervalMs),this.stateChangeCallbacks.open.forEach(e=>e())}_onConnClose(e){this.log("transport","close",e),this._triggerChanError(),this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach(n=>n(e))}_onConnError(e){this.log("transport",e.message),this._triggerChanError(),this.stateChangeCallbacks.error.forEach(n=>n(e))}_triggerChanError(){this.channels.forEach(e=>e._trigger(ht.error))}_appendParams(e,n){if(Object.keys(n).length===0)return e;const i=e.match(/\?/)?"&":"?",r=new URLSearchParams(n);return`${e}${i}${r}`}_flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}_sendHeartbeat(){var e;if(this.isConnected()){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.log("transport","heartbeat timeout. Attempting to re-establish connection"),(e=this.conn)===null||e===void 0||e.close(F_,"hearbeat timeout");return}this.pendingHeartbeatRef=this._makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.setAuth(this.accessToken)}}}class Q_{constructor(e,n,i){this.binaryType="arraybuffer",this.onclose=()=>{},this.onerror=()=>{},this.onmessage=()=>{},this.onopen=()=>{},this.readyState=bi.connecting,this.send=()=>{},this.url=null,this.url=e,this.close=i.close}}class vc extends Error{constructor(e){super(e),this.__isStorageError=!0,this.name="StorageError"}}function Ce(t){return typeof t=="object"&&t!==null&&"__isStorageError"in t}class X_ extends vc{constructor(e,n){super(e),this.name="StorageApiError",this.status=n}toJSON(){return{name:this.name,message:this.message,status:this.status}}}class nd extends vc{constructor(e,n){super(e),this.name="StorageUnknownError",this.originalError=n}}var J_=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const tm=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...n)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:i})=>i(...n)):e=fetch,(...n)=>e(...n)},Z_=()=>J_(void 0,void 0,void 0,function*(){return typeof Response>"u"?(yield Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url)).Response:Response});var Bi=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const Ha=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),ew=(t,e)=>Bi(void 0,void 0,void 0,function*(){const n=yield Z_();t instanceof n?t.json().then(i=>{e(new X_(Ha(i),t.status||500))}).catch(i=>{e(new nd(Ha(i),i))}):e(new nd(Ha(t),t))}),tw=(t,e,n,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return t==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json"},e==null?void 0:e.headers),r.body=JSON.stringify(i),Object.assign(Object.assign({},r),n))};function ca(t,e,n,i,r,s){return Bi(this,void 0,void 0,function*(){return new Promise((o,a)=>{t(n,tw(e,i,r,s)).then(l=>{if(!l.ok)throw l;return i!=null&&i.noResolveJson?l:l.json()}).then(l=>o(l)).catch(l=>ew(l,a))})})}function iu(t,e,n,i){return Bi(this,void 0,void 0,function*(){return ca(t,"GET",e,n,i)})}function Yt(t,e,n,i,r){return Bi(this,void 0,void 0,function*(){return ca(t,"POST",e,i,r,n)})}function nw(t,e,n,i,r){return Bi(this,void 0,void 0,function*(){return ca(t,"PUT",e,i,r,n)})}function nm(t,e,n,i,r){return Bi(this,void 0,void 0,function*(){return ca(t,"DELETE",e,i,r,n)})}var Je=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const iw={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},id={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};class rw{constructor(e,n={},i,r){this.url=e,this.headers=n,this.bucketId=i,this.fetch=tm(r)}uploadOrUpdate(e,n,i,r){return Je(this,void 0,void 0,function*(){try{let s;const o=Object.assign(Object.assign({},id),r),a=Object.assign(Object.assign({},this.headers),e==="POST"&&{"x-upsert":String(o.upsert)});typeof Blob<"u"&&i instanceof Blob?(s=new FormData,s.append("cacheControl",o.cacheControl),s.append("",i)):typeof FormData<"u"&&i instanceof FormData?(s=i,s.append("cacheControl",o.cacheControl)):(s=i,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType);const l=this._removeEmptyFolders(n),u=this._getFinalPath(l),c=yield this.fetch(`${this.url}/object/${u}`,Object.assign({method:e,body:s,headers:a},o!=null&&o.duplex?{duplex:o.duplex}:{})),h=yield c.json();return c.ok?{data:{path:l,id:h.Id,fullPath:h.Key},error:null}:{data:null,error:h}}catch(s){if(Ce(s))return{data:null,error:s};throw s}})}upload(e,n,i){return Je(this,void 0,void 0,function*(){return this.uploadOrUpdate("POST",e,n,i)})}uploadToSignedUrl(e,n,i,r){return Je(this,void 0,void 0,function*(){const s=this._removeEmptyFolders(e),o=this._getFinalPath(s),a=new URL(this.url+`/object/upload/sign/${o}`);a.searchParams.set("token",n);try{let l;const u=Object.assign({upsert:id.upsert},r),c=Object.assign(Object.assign({},this.headers),{"x-upsert":String(u.upsert)});typeof Blob<"u"&&i instanceof Blob?(l=new FormData,l.append("cacheControl",u.cacheControl),l.append("",i)):typeof FormData<"u"&&i instanceof FormData?(l=i,l.append("cacheControl",u.cacheControl)):(l=i,c["cache-control"]=`max-age=${u.cacheControl}`,c["content-type"]=u.contentType);const h=yield this.fetch(a.toString(),{method:"PUT",body:l,headers:c}),d=yield h.json();return h.ok?{data:{path:s,fullPath:d.Key},error:null}:{data:null,error:d}}catch(l){if(Ce(l))return{data:null,error:l};throw l}})}createSignedUploadUrl(e){return Je(this,void 0,void 0,function*(){try{let n=this._getFinalPath(e);const i=yield Yt(this.fetch,`${this.url}/object/upload/sign/${n}`,{},{headers:this.headers}),r=new URL(this.url+i.url),s=r.searchParams.get("token");if(!s)throw new vc("No token returned by API");return{data:{signedUrl:r.toString(),path:e,token:s},error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}update(e,n,i){return Je(this,void 0,void 0,function*(){return this.uploadOrUpdate("PUT",e,n,i)})}move(e,n){return Je(this,void 0,void 0,function*(){try{return{data:yield Yt(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:e,destinationKey:n},{headers:this.headers}),error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}copy(e,n){return Je(this,void 0,void 0,function*(){try{return{data:{path:(yield Yt(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:e,destinationKey:n},{headers:this.headers})).Key},error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}createSignedUrl(e,n,i){return Je(this,void 0,void 0,function*(){try{let r=this._getFinalPath(e),s=yield Yt(this.fetch,`${this.url}/object/sign/${r}`,Object.assign({expiresIn:n},i!=null&&i.transform?{transform:i.transform}:{}),{headers:this.headers});const o=i!=null&&i.download?`&download=${i.download===!0?"":i.download}`:"";return s={signedUrl:encodeURI(`${this.url}${s.signedURL}${o}`)},{data:s,error:null}}catch(r){if(Ce(r))return{data:null,error:r};throw r}})}createSignedUrls(e,n,i){return Je(this,void 0,void 0,function*(){try{const r=yield Yt(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:n,paths:e},{headers:this.headers}),s=i!=null&&i.download?`&download=${i.download===!0?"":i.download}`:"";return{data:r.map(o=>Object.assign(Object.assign({},o),{signedUrl:o.signedURL?encodeURI(`${this.url}${o.signedURL}${s}`):null})),error:null}}catch(r){if(Ce(r))return{data:null,error:r};throw r}})}download(e,n){return Je(this,void 0,void 0,function*(){const r=typeof(n==null?void 0:n.transform)<"u"?"render/image/authenticated":"object",s=this.transformOptsToQueryString((n==null?void 0:n.transform)||{}),o=s?`?${s}`:"";try{const a=this._getFinalPath(e);return{data:yield(yield iu(this.fetch,`${this.url}/${r}/${a}${o}`,{headers:this.headers,noResolveJson:!0})).blob(),error:null}}catch(a){if(Ce(a))return{data:null,error:a};throw a}})}getPublicUrl(e,n){const i=this._getFinalPath(e),r=[],s=n!=null&&n.download?`download=${n.download===!0?"":n.download}`:"";s!==""&&r.push(s);const a=typeof(n==null?void 0:n.transform)<"u"?"render/image":"object",l=this.transformOptsToQueryString((n==null?void 0:n.transform)||{});l!==""&&r.push(l);let u=r.join("&");return u!==""&&(u=`?${u}`),{data:{publicUrl:encodeURI(`${this.url}/${a}/public/${i}${u}`)}}}remove(e){return Je(this,void 0,void 0,function*(){try{return{data:yield nm(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:e},{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}list(e,n,i){return Je(this,void 0,void 0,function*(){try{const r=Object.assign(Object.assign(Object.assign({},iw),n),{prefix:e||""});return{data:yield Yt(this.fetch,`${this.url}/object/list/${this.bucketId}`,r,{headers:this.headers},i),error:null}}catch(r){if(Ce(r))return{data:null,error:r};throw r}})}_getFinalPath(e){return`${this.bucketId}/${e}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(e){const n=[];return e.width&&n.push(`width=${e.width}`),e.height&&n.push(`height=${e.height}`),e.resize&&n.push(`resize=${e.resize}`),e.format&&n.push(`format=${e.format}`),e.quality&&n.push(`quality=${e.quality}`),n.join("&")}}const sw="2.5.5",ow={"X-Client-Info":`storage-js/${sw}`};var Zn=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};class aw{constructor(e,n={},i){this.url=e,this.headers=Object.assign(Object.assign({},ow),n),this.fetch=tm(i)}listBuckets(){return Zn(this,void 0,void 0,function*(){try{return{data:yield iu(this.fetch,`${this.url}/bucket`,{headers:this.headers}),error:null}}catch(e){if(Ce(e))return{data:null,error:e};throw e}})}getBucket(e){return Zn(this,void 0,void 0,function*(){try{return{data:yield iu(this.fetch,`${this.url}/bucket/${e}`,{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}createBucket(e,n={public:!1}){return Zn(this,void 0,void 0,function*(){try{return{data:yield Yt(this.fetch,`${this.url}/bucket`,{id:e,name:e,public:n.public,file_size_limit:n.fileSizeLimit,allowed_mime_types:n.allowedMimeTypes},{headers:this.headers}),error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}updateBucket(e,n){return Zn(this,void 0,void 0,function*(){try{return{data:yield nw(this.fetch,`${this.url}/bucket/${e}`,{id:e,name:e,public:n.public,file_size_limit:n.fileSizeLimit,allowed_mime_types:n.allowedMimeTypes},{headers:this.headers}),error:null}}catch(i){if(Ce(i))return{data:null,error:i};throw i}})}emptyBucket(e){return Zn(this,void 0,void 0,function*(){try{return{data:yield Yt(this.fetch,`${this.url}/bucket/${e}/empty`,{},{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}deleteBucket(e){return Zn(this,void 0,void 0,function*(){try{return{data:yield nm(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(n){if(Ce(n))return{data:null,error:n};throw n}})}}class lw extends aw{constructor(e,n={},i){super(e,n,i)}from(e){return new rw(this.url,this.headers,e,this.fetch)}}const uw="2.43.4";let lr="";typeof Deno<"u"?lr="deno":typeof document<"u"?lr="web":typeof navigator<"u"&&navigator.product==="ReactNative"?lr="react-native":lr="node";const cw={"X-Client-Info":`supabase-js-${lr}/${uw}`},hw={headers:cw},dw={schema:"public"},fw={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},pw={};var gw=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};const mw=t=>{let e;return t?e=t:typeof fetch>"u"?e=gc:e=fetch,(...n)=>e(...n)},yw=()=>typeof Headers>"u"?Xg:Headers,vw=(t,e,n)=>{const i=mw(n),r=yw();return(s,o)=>gw(void 0,void 0,void 0,function*(){var a;const l=(a=yield e())!==null&&a!==void 0?a:t;let u=new r(o==null?void 0:o.headers);return u.has("apikey")||u.set("apikey",t),u.has("Authorization")||u.set("Authorization",`Bearer ${l}`),i(s,Object.assign(Object.assign({},o),{headers:u}))})};function _w(t){return t.replace(/\/$/,"")}function ww(t,e){const{db:n,auth:i,realtime:r,global:s}=t,{db:o,auth:a,realtime:l,global:u}=e;return{db:Object.assign(Object.assign({},o),n),auth:Object.assign(Object.assign({},a),i),realtime:Object.assign(Object.assign({},l),r),global:Object.assign(Object.assign({},u),s)}}const im="2.64.2",xw="http://localhost:9999",kw="supabase.auth.token",bw={"X-Client-Info":`gotrue-js/${im}`},rd=10,ru="X-Supabase-Api-Version",rm={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}};function Sw(t){return Math.round(Date.now()/1e3)+t}function Cw(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t=="x"?e:e&3|8).toString(16)})}const lt=()=>typeof document<"u",kn={tested:!1,writable:!1},br=()=>{if(!lt())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(kn.tested)return kn.writable;const t=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(t,t),globalThis.localStorage.removeItem(t),kn.tested=!0,kn.writable=!0}catch{kn.tested=!0,kn.writable=!1}return kn.writable};function Wa(t){const e={},n=new URL(t);if(n.hash&&n.hash[0]==="#")try{new URLSearchParams(n.hash.substring(1)).forEach((r,s)=>{e[s]=r})}catch{}return n.searchParams.forEach((i,r)=>{e[r]=i}),e}const sm=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...n)=>Li(()=>Promise.resolve().then(()=>ls),void 0,import.meta.url).then(({default:i})=>i(...n)):e=fetch,(...n)=>e(...n)},Ew=t=>typeof t=="object"&&t!==null&&"status"in t&&"ok"in t&&"json"in t&&typeof t.json=="function",om=async(t,e,n)=>{await t.setItem(e,JSON.stringify(n))},Os=async(t,e)=>{const n=await t.getItem(e);if(!n)return null;try{return JSON.parse(n)}catch{return n}},Ka=async(t,e)=>{await t.removeItem(e)};function Pw(t){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";let n="",i,r,s,o,a,l,u,c=0;for(t=t.replace("-","+").replace("_","/");c<t.length;)o=e.indexOf(t.charAt(c++)),a=e.indexOf(t.charAt(c++)),l=e.indexOf(t.charAt(c++)),u=e.indexOf(t.charAt(c++)),i=o<<2|a>>4,r=(a&15)<<4|l>>2,s=(l&3)<<6|u,n=n+String.fromCharCode(i),l!=64&&r!=0&&(n=n+String.fromCharCode(r)),u!=64&&s!=0&&(n=n+String.fromCharCode(s));return n}class ha{constructor(){this.promise=new ha.promiseConstructor((e,n)=>{this.resolve=e,this.reject=n})}}ha.promiseConstructor=Promise;function sd(t){const e=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i,n=t.split(".");if(n.length!==3)throw new Error("JWT is not valid: not a JWT structure");if(!e.test(n[1]))throw new Error("JWT is not valid: payload is not in base64url format");const i=n[1];return JSON.parse(Pw(i))}async function Tw(t){return await new Promise(e=>{setTimeout(()=>e(null),t)})}function Ow(t,e){return new Promise((i,r)=>{(async()=>{for(let s=0;s<1/0;s++)try{const o=await t(s);if(!e(s,null,o)){i(o);return}}catch(o){if(!e(s,o)){r(o);return}}})()})}function Mw(t){return("0"+t.toString(16)).substr(-2)}function Lw(){const e=new Uint32Array(56);if(typeof crypto>"u"){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",i=n.length;let r="";for(let s=0;s<56;s++)r+=n.charAt(Math.floor(Math.random()*i));return r}return crypto.getRandomValues(e),Array.from(e,Mw).join("")}async function Rw(t){const n=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",n),r=new Uint8Array(i);return Array.from(r).map(s=>String.fromCharCode(s)).join("")}function Iw(t){return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function Aw(t){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),t;const n=await Rw(t);return Iw(n)}async function ei(t,e,n=!1){const i=Lw();let r=i;n&&(r+="/PASSWORD_RECOVERY"),await om(t,`${e}-code-verifier`,r);const s=await Aw(i);return[s,i===s?"plain":"s256"]}const Dw=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function jw(t){const e=t.headers.get(ru);if(!e||!e.match(Dw))return null;try{return new Date(`${e}T00:00:00.0Z`)}catch{return null}}class _c extends Error{constructor(e,n,i){super(e),this.__isAuthError=!0,this.name="AuthError",this.status=n,this.code=i}}function j(t){return typeof t=="object"&&t!==null&&"__isAuthError"in t}class Nw extends _c{constructor(e,n,i){super(e,n,i),this.name="AuthApiError",this.status=n,this.code=i}}function zw(t){return j(t)&&t.name==="AuthApiError"}class am extends _c{constructor(e,n){super(e),this.name="AuthUnknownError",this.originalError=n}}class Qn extends _c{constructor(e,n,i,r){super(e,i,r),this.name=n,this.status=i}}class bn extends Qn{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}class Ya extends Qn{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Ms extends Qn{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Ls extends Qn{constructor(e,n=null){super(e,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=n}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class od extends Qn{constructor(e,n=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=n}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class su extends Qn{constructor(e,n){super(e,"AuthRetryableFetchError",n,void 0)}}function Ga(t){return j(t)&&t.name==="AuthRetryableFetchError"}class ad extends Qn{constructor(e,n,i){super(e,"AuthWeakPasswordError",n,"weak_password"),this.reasons=i}}var Fw=function(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]]);return n};const Mn=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),$w=[502,503,504];async function ld(t){var e;if(!Ew(t))throw new su(Mn(t),0);if($w.includes(t.status))throw new su(Mn(t),t.status);let n;try{n=await t.json()}catch(s){throw new am(Mn(s),s)}let i;const r=jw(t);if(r&&r.getTime()>=rm["2024-01-01"].timestamp&&typeof n=="object"&&n&&typeof n.code=="string"?i=n.code:typeof n=="object"&&n&&typeof n.error_code=="string"&&(i=n.error_code),i){if(i==="weak_password")throw new ad(Mn(n),t.status,((e=n.weak_password)===null||e===void 0?void 0:e.reasons)||[])}else if(typeof n=="object"&&n&&typeof n.weak_password=="object"&&n.weak_password&&Array.isArray(n.weak_password.reasons)&&n.weak_password.reasons.length&&n.weak_password.reasons.reduce((s,o)=>s&&typeof o=="string",!0))throw new ad(Mn(n),t.status,n.weak_password.reasons);throw new Nw(Mn(n),t.status||500,i)}const Uw=(t,e,n,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return t==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},e==null?void 0:e.headers),r.body=JSON.stringify(i),Object.assign(Object.assign({},r),n))};async function z(t,e,n,i){var r;const s=Object.assign({},i==null?void 0:i.headers);s[ru]||(s[ru]=rm["2024-01-01"].name),i!=null&&i.jwt&&(s.Authorization=`Bearer ${i.jwt}`);const o=(r=i==null?void 0:i.query)!==null&&r!==void 0?r:{};i!=null&&i.redirectTo&&(o.redirect_to=i.redirectTo);const a=Object.keys(o).length?"?"+new URLSearchParams(o).toString():"",l=await Bw(t,e,n+a,{headers:s,noResolveJson:i==null?void 0:i.noResolveJson},{},i==null?void 0:i.body);return i!=null&&i.xform?i==null?void 0:i.xform(l):{data:Object.assign({},l),error:null}}async function Bw(t,e,n,i,r,s){const o=Uw(e,i,r,s);let a;try{a=await t(n,Object.assign({},o))}catch(l){throw console.error(l),new su(Mn(l),0)}if(a.ok||await ld(a),i!=null&&i.noResolveJson)return a;try{return await a.json()}catch(l){await ld(l)}}function Ht(t){var e;let n=null;Kw(t)&&(n=Object.assign({},t),t.expires_at||(n.expires_at=Sw(t.expires_in)));const i=(e=t.user)!==null&&e!==void 0?e:t;return{data:{session:n,user:i},error:null}}function ud(t){const e=Ht(t);return!e.error&&t.weak_password&&typeof t.weak_password=="object"&&Array.isArray(t.weak_password.reasons)&&t.weak_password.reasons.length&&t.weak_password.message&&typeof t.weak_password.message=="string"&&t.weak_password.reasons.reduce((n,i)=>n&&typeof i=="string",!0)&&(e.data.weak_password=t.weak_password),e}function Qt(t){var e;return{data:{user:(e=t.user)!==null&&e!==void 0?e:t},error:null}}function Vw(t){return{data:t,error:null}}function Hw(t){const{action_link:e,email_otp:n,hashed_token:i,redirect_to:r,verification_type:s}=t,o=Fw(t,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),a={action_link:e,email_otp:n,hashed_token:i,redirect_to:r,verification_type:s},l=Object.assign({},o);return{data:{properties:a,user:l},error:null}}function Ww(t){return t}function Kw(t){return t.access_token&&t.refresh_token&&t.expires_in}var Yw=function(t,e){var n={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(t);r<i.length;r++)e.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(t,i[r])&&(n[i[r]]=t[i[r]]);return n};class Gw{constructor({url:e="",headers:n={},fetch:i}){this.url=e,this.headers=n,this.fetch=sm(i),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)}}async signOut(e,n="global"){try{return await z(this.fetch,"POST",`${this.url}/logout?scope=${n}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(i){if(j(i))return{data:null,error:i};throw i}}async inviteUserByEmail(e,n={}){try{return await z(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:n.data},headers:this.headers,redirectTo:n.redirectTo,xform:Qt})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}async generateLink(e){try{const{options:n}=e,i=Yw(e,["options"]),r=Object.assign(Object.assign({},i),n);return"newEmail"in i&&(r.new_email=i==null?void 0:i.newEmail,delete r.newEmail),await z(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:r,headers:this.headers,xform:Hw,redirectTo:n==null?void 0:n.redirectTo})}catch(n){if(j(n))return{data:{properties:null,user:null},error:n};throw n}}async createUser(e){try{return await z(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Qt})}catch(n){if(j(n))return{data:{user:null},error:n};throw n}}async listUsers(e){var n,i,r,s,o,a,l;try{const u={nextPage:null,lastPage:0,total:0},c=await z(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(i=(n=e==null?void 0:e.page)===null||n===void 0?void 0:n.toString())!==null&&i!==void 0?i:"",per_page:(s=(r=e==null?void 0:e.perPage)===null||r===void 0?void 0:r.toString())!==null&&s!==void 0?s:""},xform:Ww});if(c.error)throw c.error;const h=await c.json(),d=(o=c.headers.get("x-total-count"))!==null&&o!==void 0?o:0,f=(l=(a=c.headers.get("link"))===null||a===void 0?void 0:a.split(","))!==null&&l!==void 0?l:[];return f.length>0&&(f.forEach(m=>{const y=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),v=JSON.parse(m.split(";")[1].split("=")[1]);u[`${v}Page`]=y}),u.total=parseInt(d)),{data:Object.assign(Object.assign({},h),u),error:null}}catch(u){if(j(u))return{data:{users:[]},error:u};throw u}}async getUserById(e){try{return await z(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Qt})}catch(n){if(j(n))return{data:{user:null},error:n};throw n}}async updateUserById(e,n){try{return await z(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:n,headers:this.headers,xform:Qt})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}async deleteUser(e,n=!1){try{return await z(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:n},xform:Qt})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}async _listFactors(e){try{const{data:n,error:i}=await z(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:r=>({data:{factors:r},error:null})});return{data:n,error:i}}catch(n){if(j(n))return{data:null,error:n};throw n}}async _deleteFactor(e){try{return{data:await z(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(n){if(j(n))return{data:null,error:n};throw n}}}const qw={getItem:t=>br()?globalThis.localStorage.getItem(t):null,setItem:(t,e)=>{br()&&globalThis.localStorage.setItem(t,e)},removeItem:t=>{br()&&globalThis.localStorage.removeItem(t)}};function cd(t={}){return{getItem:e=>t[e]||null,setItem:(e,n)=>{t[e]=n},removeItem:e=>{delete t[e]}}}function Qw(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}const ti={debug:!!(globalThis&&br()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class lm extends Error{constructor(e){super(e),this.isAcquireTimeout=!0}}class Xw extends lm{}async function Jw(t,e,n){ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquire lock",t,e);const i=new globalThis.AbortController;return e>0&&setTimeout(()=>{i.abort(),ti.debug&&console.log("@supabase/gotrue-js: navigatorLock acquire timed out",t)},e),await globalThis.navigator.locks.request(t,e===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:i.signal},async r=>{if(r){ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: acquired",t,r.name);try{return await n()}finally{ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: released",t,r.name)}}else{if(e===0)throw ti.debug&&console.log("@supabase/gotrue-js: navigatorLock: not immediately available",t),new Xw(`Acquiring an exclusive Navigator LockManager lock "${t}" immediately failed`);if(ti.debug)try{const s=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(s,null," "))}catch(s){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",s)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),await n()}})}Qw();const Zw={url:xw,storageKey:kw,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:bw,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1},Xi=30*1e3,hd=3;async function dd(t,e,n){return await n()}class Qr{constructor(e){var n,i;this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log,this.instanceID=Qr.nextInstanceID,Qr.nextInstanceID+=1,this.instanceID>0&<()&&console.warn("Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.");const r=Object.assign(Object.assign({},Zw),e);if(this.logDebugMessages=!!r.debug,typeof r.debug=="function"&&(this.logger=r.debug),this.persistSession=r.persistSession,this.storageKey=r.storageKey,this.autoRefreshToken=r.autoRefreshToken,this.admin=new Gw({url:r.url,headers:r.headers,fetch:r.fetch}),this.url=r.url,this.headers=r.headers,this.fetch=sm(r.fetch),this.lock=r.lock||dd,this.detectSessionInUrl=r.detectSessionInUrl,this.flowType=r.flowType,this.hasCustomAuthorizationHeader=r.hasCustomAuthorizationHeader,r.lock?this.lock=r.lock:lt()&&(!((n=globalThis==null?void 0:globalThis.navigator)===null||n===void 0)&&n.locks)?this.lock=Jw:this.lock=dd,this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this)},this.persistSession?r.storage?this.storage=r.storage:br()?this.storage=qw:(this.memoryStorage={},this.storage=cd(this.memoryStorage)):(this.memoryStorage={},this.storage=cd(this.memoryStorage)),lt()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(s){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",s)}(i=this.broadcastChannel)===null||i===void 0||i.addEventListener("message",async s=>{this._debug("received broadcast notification from other tab or client",s),await this._notifyAllSubscribers(s.data.event,s.data.session,!1)})}this.initialize()}_debug(...e){return this.logDebugMessages&&this.logger(`GoTrueClient@${this.instanceID} (${im}) ${new Date().toISOString()}`,...e),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(-1,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){try{const e=lt()?await this._isPKCEFlow():!1;if(this._debug("#_initialize()","begin","is PKCE flow",e),e||this.detectSessionInUrl&&this._isImplicitGrantFlow()){const{data:n,error:i}=await this._getSessionFromURL(e);if(i)return this._debug("#_initialize()","error detecting session from URL",i),(i==null?void 0:i.message)==="Identity is already linked"||(i==null?void 0:i.message)==="Identity is already linked to another user"?{error:i}:(await this._removeSession(),{error:i});const{session:r,redirectType:s}=n;return this._debug("#_initialize()","detected session in URL",r,"redirect type",s),await this._saveSession(r),setTimeout(async()=>{s==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",r):await this._notifyAllSubscribers("SIGNED_IN",r)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(e){return j(e)?{error:e}:{error:new am("Unexpected error during initialization",e)}}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var n,i,r;try{await this._removeSession();const s=await z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(i=(n=e==null?void 0:e.options)===null||n===void 0?void 0:n.data)!==null&&i!==void 0?i:{},gotrue_meta_security:{captcha_token:(r=e==null?void 0:e.options)===null||r===void 0?void 0:r.captchaToken}},xform:Ht}),{data:o,error:a}=s;if(a||!o)return{data:{user:null,session:null},error:a};const l=o.session,u=o.user;return o.session&&(await this._saveSession(o.session),await this._notifyAllSubscribers("SIGNED_IN",l)),{data:{user:u,session:l},error:null}}catch(s){if(j(s))return{data:{user:null,session:null},error:s};throw s}}async signUp(e){var n,i,r;try{await this._removeSession();let s;if("email"in e){const{email:c,password:h,options:d}=e;let f=null,m=null;this.flowType==="pkce"&&([f,m]=await ei(this.storage,this.storageKey)),s=await z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:d==null?void 0:d.emailRedirectTo,body:{email:c,password:h,data:(n=d==null?void 0:d.data)!==null&&n!==void 0?n:{},gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},code_challenge:f,code_challenge_method:m},xform:Ht})}else if("phone"in e){const{phone:c,password:h,options:d}=e;s=await z(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:c,password:h,data:(i=d==null?void 0:d.data)!==null&&i!==void 0?i:{},channel:(r=d==null?void 0:d.channel)!==null&&r!==void 0?r:"sms",gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken}},xform:Ht})}else throw new Ms("You must provide either an email or phone number and a password");const{data:o,error:a}=s;if(a||!o)return{data:{user:null,session:null},error:a};const l=o.session,u=o.user;return o.session&&(await this._saveSession(o.session),await this._notifyAllSubscribers("SIGNED_IN",l)),{data:{user:u,session:l},error:null}}catch(s){if(j(s))return{data:{user:null,session:null},error:s};throw s}}async signInWithPassword(e){try{await this._removeSession();let n;if("email"in e){const{email:s,password:o,options:a}=e;n=await z(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:o,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:ud})}else if("phone"in e){const{phone:s,password:o,options:a}=e;n=await z(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:o,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:ud})}else throw new Ms("You must provide either an email or phone number and a password");const{data:i,error:r}=n;return r?{data:{user:null,session:null},error:r}:!i||!i.session||!i.user?{data:{user:null,session:null},error:new Ya}:(i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",i.session)),{data:Object.assign({user:i.user,session:i.session},i.weak_password?{weakPassword:i.weak_password}:null),error:r})}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async signInWithOAuth(e){var n,i,r,s;return await this._removeSession(),await this._handleProviderSignIn(e.provider,{redirectTo:(n=e.options)===null||n===void 0?void 0:n.redirectTo,scopes:(i=e.options)===null||i===void 0?void 0:i.scopes,queryParams:(r=e.options)===null||r===void 0?void 0:r.queryParams,skipBrowserRedirect:(s=e.options)===null||s===void 0?void 0:s.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(-1,async()=>this._exchangeCodeForSession(e))}async _exchangeCodeForSession(e){const n=await Os(this.storage,`${this.storageKey}-code-verifier`),[i,r]=(n??"").split("/"),{data:s,error:o}=await z(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:i},xform:Ht});return await Ka(this.storage,`${this.storageKey}-code-verifier`),o?{data:{user:null,session:null,redirectType:null},error:o}:!s||!s.session||!s.user?{data:{user:null,session:null,redirectType:null},error:new Ya}:(s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session)),{data:Object.assign(Object.assign({},s),{redirectType:r??null}),error:o})}async signInWithIdToken(e){await this._removeSession();try{const{options:n,provider:i,token:r,access_token:s,nonce:o}=e,a=await z(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:i,id_token:r,access_token:s,nonce:o,gotrue_meta_security:{captcha_token:n==null?void 0:n.captchaToken}},xform:Ht}),{data:l,error:u}=a;return u?{data:{user:null,session:null},error:u}:!l||!l.session||!l.user?{data:{user:null,session:null},error:new Ya}:(l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",l.session)),{data:l,error:u})}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async signInWithOtp(e){var n,i,r,s,o;try{if(await this._removeSession(),"email"in e){const{email:a,options:l}=e;let u=null,c=null;this.flowType==="pkce"&&([u,c]=await ei(this.storage,this.storageKey));const{error:h}=await z(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:a,data:(n=l==null?void 0:l.data)!==null&&n!==void 0?n:{},create_user:(i=l==null?void 0:l.shouldCreateUser)!==null&&i!==void 0?i:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken},code_challenge:u,code_challenge_method:c},redirectTo:l==null?void 0:l.emailRedirectTo});return{data:{user:null,session:null},error:h}}if("phone"in e){const{phone:a,options:l}=e,{data:u,error:c}=await z(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:a,data:(r=l==null?void 0:l.data)!==null&&r!==void 0?r:{},create_user:(s=l==null?void 0:l.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken},channel:(o=l==null?void 0:l.channel)!==null&&o!==void 0?o:"sms"}});return{data:{user:null,session:null,messageId:u==null?void 0:u.message_id},error:c}}throw new Ms("You must provide either an email or phone number.")}catch(a){if(j(a))return{data:{user:null,session:null},error:a};throw a}}async verifyOtp(e){var n,i;try{e.type!=="email_change"&&e.type!=="phone_change"&&await this._removeSession();let r,s;"options"in e&&(r=(n=e.options)===null||n===void 0?void 0:n.redirectTo,s=(i=e.options)===null||i===void 0?void 0:i.captchaToken);const{data:o,error:a}=await z(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:s}}),redirectTo:r,xform:Ht});if(a)throw a;if(!o)throw new Error("An error occurred on token verification.");const l=o.session,u=o.user;return l!=null&&l.access_token&&(await this._saveSession(l),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",l)),{data:{user:u,session:l},error:null}}catch(r){if(j(r))return{data:{user:null,session:null},error:r};throw r}}async signInWithSSO(e){var n,i,r;try{await this._removeSession();let s=null,o=null;return this.flowType==="pkce"&&([s,o]=await ei(this.storage,this.storageKey)),await z(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(i=(n=e.options)===null||n===void 0?void 0:n.redirectTo)!==null&&i!==void 0?i:void 0}),!((r=e==null?void 0:e.options)===null||r===void 0)&&r.captchaToken?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:s,code_challenge_method:o}),headers:this.headers,xform:Vw})}catch(s){if(j(s))return{data:null,error:s};throw s}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async e=>{const{data:{session:n},error:i}=e;if(i)throw i;if(!n)throw new bn;const{error:r}=await z(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:n.access_token});return{data:{user:null,session:null},error:r}})}catch(e){if(j(e))return{data:{user:null,session:null},error:e};throw e}}async resend(e){try{e.type!="email_change"&&e.type!="phone_change"&&await this._removeSession();const n=`${this.url}/resend`;if("email"in e){const{email:i,type:r,options:s}=e,{error:o}=await z(this.fetch,"POST",n,{headers:this.headers,body:{email:i,type:r,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}},redirectTo:s==null?void 0:s.emailRedirectTo});return{data:{user:null,session:null},error:o}}else if("phone"in e){const{phone:i,type:r,options:s}=e,{data:o,error:a}=await z(this.fetch,"POST",n,{headers:this.headers,body:{phone:i,type:r,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}}});return{data:{user:null,session:null,messageId:o==null?void 0:o.message_id},error:a}}throw new Ms("You must provide either an email or phone number and a type")}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async getSession(){return await this.initializePromise,await this._acquireLock(-1,async()=>this._useSession(async n=>n))}async _acquireLock(e,n){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){const i=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),r=(async()=>(await i,await n()))();return this.pendingInLock.push((async()=>{try{await r}catch{}})()),r}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const i=n();for(this.pendingInLock.push((async()=>{try{await i}catch{}})()),await i;this.pendingInLock.length;){const r=[...this.pendingInLock];await Promise.all(r),this.pendingInLock.splice(0,r.length)}return await i}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{const n=await this.__loadSession();return await e(n)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let e=null;const n=await Os(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",n),n!==null&&(this._isValidSession(n)?e=n:(this._debug("#getSession()","session from storage is not valid"),await this._removeSession())),!e)return{data:{session:null},error:null};const i=e.expires_at?e.expires_at<=Date.now()/1e3:!1;if(this._debug("#__loadSession()",`session has${i?"":" not"} expired`,"expires_at",e.expires_at),!i){if(this.storage.isServer){const o=this.suppressGetSessionWarning;e=new Proxy(e,{get(l,u,c){return!o&&u==="user"&&console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and many not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),Reflect.get(l,u,c)}})}return{data:{session:e},error:null}}const{session:r,error:s}=await this._callRefreshToken(e.refresh_token);return s?{data:{session:null},error:s}:{data:{session:r},error:null}}finally{this._debug("#__loadSession()","end")}}async getUser(e){return e?await this._getUser(e):(await this.initializePromise,await this._acquireLock(-1,async()=>await this._getUser()))}async _getUser(e){try{return e?await z(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Qt}):await this._useSession(async n=>{var i,r,s;const{data:o,error:a}=n;if(a)throw a;return!(!((i=o.session)===null||i===void 0)&&i.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new bn}:await z(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(r=o.session)===null||r===void 0?void 0:r.access_token)!==null&&s!==void 0?s:void 0,xform:Qt})})}catch(n){if(j(n))return{data:{user:null},error:n};throw n}}async updateUser(e,n={}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._updateUser(e,n))}async _updateUser(e,n={}){try{return await this._useSession(async i=>{const{data:r,error:s}=i;if(s)throw s;if(!r.session)throw new bn;const o=r.session;let a=null,l=null;this.flowType==="pkce"&&e.email!=null&&([a,l]=await ei(this.storage,this.storageKey));const{data:u,error:c}=await z(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:n==null?void 0:n.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:a,code_challenge_method:l}),jwt:o.access_token,xform:Qt});if(c)throw c;return o.user=u.user,await this._saveSession(o),await this._notifyAllSubscribers("USER_UPDATED",o),{data:{user:o.user},error:null}})}catch(i){if(j(i))return{data:{user:null},error:i};throw i}}_decodeJWT(e){return sd(e)}async setSession(e){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new bn;const n=Date.now()/1e3;let i=n,r=!0,s=null;const o=sd(e.access_token);if(o.exp&&(i=o.exp,r=i<=n),r){const{session:a,error:l}=await this._callRefreshToken(e.refresh_token);if(l)return{data:{user:null,session:null},error:l};if(!a)return{data:{user:null,session:null},error:null};s=a}else{const{data:a,error:l}=await this._getUser(e.access_token);if(l)throw l;s={access_token:e.access_token,refresh_token:e.refresh_token,user:a.user,token_type:"bearer",expires_in:i-n,expires_at:i},await this._saveSession(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return{data:{user:s.user,session:s},error:null}}catch(n){if(j(n))return{data:{session:null,user:null},error:n};throw n}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async n=>{var i;if(!e){const{data:o,error:a}=n;if(a)throw a;e=(i=o.session)!==null&&i!==void 0?i:void 0}if(!(e!=null&&e.refresh_token))throw new bn;const{session:r,error:s}=await this._callRefreshToken(e.refresh_token);return s?{data:{user:null,session:null},error:s}:r?{data:{user:r.user,session:r},error:null}:{data:{user:null,session:null},error:null}})}catch(n){if(j(n))return{data:{user:null,session:null},error:n};throw n}}async _getSessionFromURL(e){try{if(!lt())throw new Ls("No browser detected.");if(this.flowType==="implicit"&&!this._isImplicitGrantFlow())throw new Ls("Not a valid implicit grant flow url.");if(this.flowType=="pkce"&&!e)throw new od("Not a valid PKCE flow url.");const n=Wa(window.location.href);if(e){if(!n.code)throw new od("No code detected.");const{data:g,error:_}=await this._exchangeCodeForSession(n.code);if(_)throw _;const w=new URL(window.location.href);return w.searchParams.delete("code"),window.history.replaceState(window.history.state,"",w.toString()),{data:{session:g.session,redirectType:null},error:null}}if(n.error||n.error_description||n.error_code)throw new Ls(n.error_description||"Error in URL with unspecified error_description",{error:n.error||"unspecified_error",code:n.error_code||"unspecified_code"});const{provider_token:i,provider_refresh_token:r,access_token:s,refresh_token:o,expires_in:a,expires_at:l,token_type:u}=n;if(!s||!a||!o||!u)throw new Ls("No session defined in URL");const c=Math.round(Date.now()/1e3),h=parseInt(a);let d=c+h;l&&(d=parseInt(l));const f=d-c;f*1e3<=Xi&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${f}s, should have been closer to ${h}s`);const m=d-h;c-m>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",m,d,c):c-m<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clok for skew",m,d,c);const{data:y,error:v}=await this._getUser(s);if(v)throw v;const p={provider_token:i,provider_refresh_token:r,access_token:s,expires_in:h,expires_at:d,refresh_token:o,token_type:u,user:y.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),{data:{session:p,redirectType:n.type},error:null}}catch(n){if(j(n))return{data:{session:null,redirectType:null},error:n};throw n}}_isImplicitGrantFlow(){const e=Wa(window.location.href);return!!(lt()&&(e.access_token||e.error_description))}async _isPKCEFlow(){const e=Wa(window.location.href),n=await Os(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&n)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async n=>{var i;const{data:r,error:s}=n;if(s)return{error:s};const o=(i=r.session)===null||i===void 0?void 0:i.access_token;if(o){const{error:a}=await this.admin.signOut(o,e);if(a&&!(zw(a)&&(a.status===404||a.status===401||a.status===403)))return{error:a}}return e!=="others"&&(await this._removeSession(),await Ka(this.storage,`${this.storageKey}-code-verifier`),await this._notifyAllSubscribers("SIGNED_OUT",null)),{error:null}})}onAuthStateChange(e){const n=Cw(),i={id:n,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",n),this.stateChangeEmitters.delete(n)}};return this._debug("#onAuthStateChange()","registered callback with id",n),this.stateChangeEmitters.set(n,i),(async()=>(await this.initializePromise,await this._acquireLock(-1,async()=>{this._emitInitialSession(n)})))(),{data:{subscription:i}}}async _emitInitialSession(e){return await this._useSession(async n=>{var i,r;try{const{data:{session:s},error:o}=n;if(o)throw o;await((i=this.stateChangeEmitters.get(e))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",e,"session",s)}catch(s){await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",s),console.error(s)}})}async resetPasswordForEmail(e,n={}){let i=null,r=null;this.flowType==="pkce"&&([i,r]=await ei(this.storage,this.storageKey,!0));try{return await z(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:i,code_challenge_method:r,gotrue_meta_security:{captcha_token:n.captchaToken}},headers:this.headers,redirectTo:n.redirectTo})}catch(s){if(j(s))return{data:null,error:s};throw s}}async getUserIdentities(){var e;try{const{data:n,error:i}=await this.getUser();if(i)throw i;return{data:{identities:(e=n.user.identities)!==null&&e!==void 0?e:[]},error:null}}catch(n){if(j(n))return{data:null,error:n};throw n}}async linkIdentity(e){var n;try{const{data:i,error:r}=await this._useSession(async s=>{var o,a,l,u,c;const{data:h,error:d}=s;if(d)throw d;const f=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(o=e.options)===null||o===void 0?void 0:o.redirectTo,scopes:(a=e.options)===null||a===void 0?void 0:a.scopes,queryParams:(l=e.options)===null||l===void 0?void 0:l.queryParams,skipBrowserRedirect:!0});return await z(this.fetch,"GET",f,{headers:this.headers,jwt:(c=(u=h.session)===null||u===void 0?void 0:u.access_token)!==null&&c!==void 0?c:void 0})});if(r)throw r;return lt()&&!(!((n=e.options)===null||n===void 0)&&n.skipBrowserRedirect)&&window.location.assign(i==null?void 0:i.url),{data:{provider:e.provider,url:i==null?void 0:i.url},error:null}}catch(i){if(j(i))return{data:{provider:e.provider,url:null},error:i};throw i}}async unlinkIdentity(e){try{return await this._useSession(async n=>{var i,r;const{data:s,error:o}=n;if(o)throw o;return await z(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(r=(i=s.session)===null||i===void 0?void 0:i.access_token)!==null&&r!==void 0?r:void 0})})}catch(n){if(j(n))return{data:null,error:n};throw n}}async _refreshAccessToken(e){const n=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{const i=Date.now();return await Ow(async r=>(r>0&&await Tw(200*Math.pow(2,r-1)),this._debug(n,"refreshing attempt",r),await z(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:Ht})),(r,s)=>{const o=200*Math.pow(2,r);return s&&Ga(s)&&Date.now()+o-i<Xi})}catch(i){if(this._debug(n,"error",i),j(i))return{data:{session:null,user:null},error:i};throw i}finally{this._debug(n,"end")}}_isValidSession(e){return typeof e=="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,n){const i=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:n.redirectTo,scopes:n.scopes,queryParams:n.queryParams});return this._debug("#_handleProviderSignIn()","provider",e,"options",n,"url",i),lt()&&!n.skipBrowserRedirect&&window.location.assign(i),{data:{provider:e,url:i},error:null}}async _recoverAndRefresh(){var e;const n="#_recoverAndRefresh()";this._debug(n,"begin");try{const i=await Os(this.storage,this.storageKey);if(this._debug(n,"session from storage",i),!this._isValidSession(i)){this._debug(n,"session is not valid"),i!==null&&await this._removeSession();return}const r=Math.round(Date.now()/1e3),s=((e=i.expires_at)!==null&&e!==void 0?e:1/0)<r+rd;if(this._debug(n,`session has${s?"":" not"} expired with margin of ${rd}s`),s){if(this.autoRefreshToken&&i.refresh_token){const{error:o}=await this._callRefreshToken(i.refresh_token);o&&(console.error(o),Ga(o)||(this._debug(n,"refresh failed with a non-retryable error, removing the session",o),await this._removeSession()))}}else await this._notifyAllSubscribers("SIGNED_IN",i)}catch(i){this._debug(n,"error",i),console.error(i);return}finally{this._debug(n,"end")}}async _callRefreshToken(e){var n,i;if(!e)throw new bn;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const r=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(r,"begin");try{this.refreshingDeferred=new ha;const{data:s,error:o}=await this._refreshAccessToken(e);if(o)throw o;if(!s.session)throw new bn;await this._saveSession(s.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",s.session);const a={session:s.session,error:null};return this.refreshingDeferred.resolve(a),a}catch(s){if(this._debug(r,"error",s),j(s)){const o={session:null,error:s};return Ga(s)||(await this._removeSession(),await this._notifyAllSubscribers("SIGNED_OUT",null)),(n=this.refreshingDeferred)===null||n===void 0||n.resolve(o),o}throw(i=this.refreshingDeferred)===null||i===void 0||i.reject(s),s}finally{this.refreshingDeferred=null,this._debug(r,"end")}}async _notifyAllSubscribers(e,n,i=!0){const r=`#_notifyAllSubscribers(${e})`;this._debug(r,"begin",n,`broadcast = ${i}`);try{this.broadcastChannel&&i&&this.broadcastChannel.postMessage({event:e,session:n});const s=[],o=Array.from(this.stateChangeEmitters.values()).map(async a=>{try{await a.callback(e,n)}catch(l){s.push(l)}});if(await Promise.all(o),s.length>0){for(let a=0;a<s.length;a+=1)console.error(s[a]);throw s[0]}}finally{this._debug(r,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await om(this.storage,this.storageKey,e)}async _removeSession(){this._debug("#_removeSession()"),await Ka(this.storage,this.storageKey)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&<()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",e)}catch(n){console.error("removing visibilitychange callback failed",n)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const e=setInterval(()=>this._autoRefreshTokenTick(),Xi);this.autoRefreshTicker=e,e&&typeof e=="object"&&typeof e.unref=="function"?e.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(e),setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const e=this.autoRefreshTicker;this.autoRefreshTicker=null,e&&clearInterval(e)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const e=Date.now();try{return await this._useSession(async n=>{const{data:{session:i}}=n;if(!i||!i.refresh_token||!i.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((i.expires_at*1e3-e)/Xi);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${Xi}ms, refresh threshold is ${hd} ticks`),r<=hd&&await this._callRefreshToken(i.refresh_token)})}catch(n){console.error("Auto refresh tick failed with error. This is likely a transient error.",n)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e.isAcquireTimeout||e instanceof lm)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!lt()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>await this._onVisibilityChanged(!1),window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){const n=`#_onVisibilityChanged(${e})`;this._debug(n,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),e||(await this.initializePromise,await this._acquireLock(-1,async()=>{if(document.visibilityState!=="visible"){this._debug(n,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(e,n,i){const r=[`provider=${encodeURIComponent(n)}`];if(i!=null&&i.redirectTo&&r.push(`redirect_to=${encodeURIComponent(i.redirectTo)}`),i!=null&&i.scopes&&r.push(`scopes=${encodeURIComponent(i.scopes)}`),this.flowType==="pkce"){const[s,o]=await ei(this.storage,this.storageKey),a=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(o)}`});r.push(a.toString())}if(i!=null&&i.queryParams){const s=new URLSearchParams(i.queryParams);r.push(s.toString())}return i!=null&&i.skipBrowserRedirect&&r.push(`skip_http_redirect=${i.skipBrowserRedirect}`),`${e}?${r.join("&")}`}async _unenroll(e){try{return await this._useSession(async n=>{var i;const{data:r,error:s}=n;return s?{data:null,error:s}:await z(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token})})}catch(n){if(j(n))return{data:null,error:n};throw n}}async _enroll(e){try{return await this._useSession(async n=>{var i,r;const{data:s,error:o}=n;if(o)return{data:null,error:o};const{data:a,error:l}=await z(this.fetch,"POST",`${this.url}/factors`,{body:{friendly_name:e.friendlyName,factor_type:e.factorType,issuer:e.issuer},headers:this.headers,jwt:(i=s==null?void 0:s.session)===null||i===void 0?void 0:i.access_token});return l?{data:null,error:l}:(!((r=a==null?void 0:a.totp)===null||r===void 0)&&r.qr_code&&(a.totp.qr_code=`data:image/svg+xml;utf-8,${a.totp.qr_code}`),{data:a,error:null})})}catch(n){if(j(n))return{data:null,error:n};throw n}}async _verify(e){return this._acquireLock(-1,async()=>{try{return await this._useSession(async n=>{var i;const{data:r,error:s}=n;if(s)return{data:null,error:s};const{data:o,error:a}=await z(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:{code:e.code,challenge_id:e.challengeId},headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token});return a?{data:null,error:a}:(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+o.expires_in},o)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",o),{data:o,error:a})})}catch(n){if(j(n))return{data:null,error:n};throw n}})}async _challenge(e){return this._acquireLock(-1,async()=>{try{return await this._useSession(async n=>{var i;const{data:r,error:s}=n;return s?{data:null,error:s}:await z(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token})})}catch(n){if(j(n))return{data:null,error:n};throw n}})}async _challengeAndVerify(e){const{data:n,error:i}=await this._challenge({factorId:e.factorId});return i?{data:null,error:i}:await this._verify({factorId:e.factorId,challengeId:n.id,code:e.code})}async _listFactors(){const{data:{user:e},error:n}=await this.getUser();if(n)return{data:null,error:n};const i=(e==null?void 0:e.factors)||[],r=i.filter(s=>s.factor_type==="totp"&&s.status==="verified");return{data:{all:i,totp:r},error:null}}async _getAuthenticatorAssuranceLevel(){return this._acquireLock(-1,async()=>await this._useSession(async e=>{var n,i;const{data:{session:r},error:s}=e;if(s)return{data:null,error:s};if(!r)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const o=this._decodeJWT(r.access_token);let a=null;o.aal&&(a=o.aal);let l=a;((i=(n=r.user.factors)===null||n===void 0?void 0:n.filter(h=>h.status==="verified"))!==null&&i!==void 0?i:[]).length>0&&(l="aal2");const c=o.amr||[];return{data:{currentLevel:a,nextLevel:l,currentAuthenticationMethods:c},error:null}}))}}Qr.nextInstanceID=0;const ex=Qr;class tx extends ex{constructor(e){super(e)}}var nx=function(t,e,n,i){function r(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(c){try{u(i.next(c))}catch(h){o(h)}}function l(c){try{u(i.throw(c))}catch(h){o(h)}}function u(c){c.done?s(c.value):r(c.value).then(a,l)}u((i=i.apply(t,e||[])).next())})};class ix{constructor(e,n,i){var r,s,o;if(this.supabaseUrl=e,this.supabaseKey=n,!e)throw new Error("supabaseUrl is required.");if(!n)throw new Error("supabaseKey is required.");const a=_w(e);this.realtimeUrl=`${a}/realtime/v1`.replace(/^http/i,"ws"),this.authUrl=`${a}/auth/v1`,this.storageUrl=`${a}/storage/v1`,this.functionsUrl=`${a}/functions/v1`;const l=`sb-${new URL(this.authUrl).hostname.split(".")[0]}-auth-token`,u={db:dw,realtime:pw,auth:Object.assign(Object.assign({},fw),{storageKey:l}),global:hw},c=ww(i??{},u);this.storageKey=(r=c.auth.storageKey)!==null&&r!==void 0?r:"",this.headers=(s=c.global.headers)!==null&&s!==void 0?s:{},this.auth=this._initSupabaseAuthClient((o=c.auth)!==null&&o!==void 0?o:{},this.headers,c.global.fetch),this.fetch=vw(n,this._getAccessToken.bind(this),c.global.fetch),this.realtime=this._initRealtimeClient(Object.assign({headers:this.headers},c.realtime)),this.rest=new mc(`${a}/rest/v1`,{headers:this.headers,schema:c.db.schema,fetch:this.fetch}),this._listenForAuthEvents()}get functions(){return new C_(this.functionsUrl,{headers:this.headers,customFetch:this.fetch})}get storage(){return new lw(this.storageUrl,this.headers,this.fetch)}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,n={},i={}){return this.rest.rpc(e,n,i)}channel(e,n={config:{}}){return this.realtime.channel(e,n)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}_getAccessToken(){var e,n;return nx(this,void 0,void 0,function*(){const{data:i}=yield this.auth.getSession();return(n=(e=i.session)===null||e===void 0?void 0:e.access_token)!==null&&n!==void 0?n:null})}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:n,detectSessionInUrl:i,storage:r,storageKey:s,flowType:o,debug:a},l,u){var c;const h={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new tx({url:this.authUrl,headers:Object.assign(Object.assign({},h),l),storageKey:s,autoRefreshToken:e,persistSession:n,detectSessionInUrl:i,storage:r,flowType:o,debug:a,fetch:u,hasCustomAuthorizationHeader:(c="Authorization"in this.headers)!==null&&c!==void 0?c:!1})}_initRealtimeClient(e){return new q_(this.realtimeUrl,Object.assign(Object.assign({},e),{params:Object.assign({apikey:this.supabaseKey},e==null?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((n,i)=>{this._handleTokenChanged(n,"CLIENT",i==null?void 0:i.access_token)})}_handleTokenChanged(e,n,i){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==i?(this.realtime.setAuth(i??null),this.changedAccessToken=i):e==="SIGNED_OUT"&&(this.realtime.setAuth(this.supabaseKey),n=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}}const rx=(t,e,n)=>new ix(t,e,n);function ni(t){return L.jsxs("div",{role:"button",className:"flex items-center w-full p-3 leading-tight transition-all rounded-lg outline-none text-start hover:bg-blue-gray-50 hover:bg-opacity-80 hover:text-blue-gray-900 focus:bg-blue-gray-50 focus:bg-opacity-80 focus:text-blue-gray-900 active:bg-blue-gray-50 active:bg-opacity-80 active:text-blue-gray-900",children:[L.jsx("div",{className:"grid mr-4 place-items-center",children:L.jsx("i",{className:t.icon})}),L.jsx("a",{href:t.href,children:t.name})]})}function sx(){return L.jsxs("div",{className:"relative flex h-full w-full max-w-[20rem] flex-col rounded-xl bg-white bg-clip-border p-4 text-gray-700 shadow-xl shadow-blue-gray-900/5 mr-5",children:[L.jsx("div",{className:"p-4 mb-2",children:L.jsx("h5",{className:"block font-sans text-xl antialiased font-semibold leading-snug tracking-normal text-blue-gray-900",children:L.jsx("a",{href:"/",children:"fs-tracer"})})}),L.jsxs("nav",{className:"flex min-w-[240px] flex-col gap-1 p-2 font-sans text-base font-normal text-blue-gray-700",children:[L.jsx(ni,{name:"Home",icon:"fa-solid fa-house",href:"/"}),L.jsx(ni,{name:"Recent files",icon:"fa-solid fa-folder",href:"/recent"}),L.jsx(ni,{name:"Search",icon:"fa-solid fa-magnifying-glass",href:"/search"}),L.jsx(ni,{name:"Monitoring",icon:"fa-solid fa-chart-column",href:"/monitoring"}),L.jsx(ni,{name:"Setup",icon:"fa-solid fa-gear",href:"/setup"}),L.jsx(ni,{name:"Logout",icon:"fa-solid fa-right-from-bracket",href:"/logout"})]})]})}/*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela @@ -81,4 +81,4 @@ Error generating stack: `+s.message+` * Released under the MIT License */class tk{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,n,i,r){const s=n.listeners[r],o=n.duration;s.forEach(a=>a({chart:e,initial:n.initial,numSteps:o,currentStep:Math.min(i-n.start,o)}))}_refresh(){this._request||(this._running=!0,this._request=mm.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((i,r)=>{if(!i.running||!i.items.length)return;const s=i.items;let o=s.length-1,a=!1,l;for(;o>=0;--o)l=s[o],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(e),a=!0):(s[o]=s[s.length-1],s.pop());a&&(r.draw(),this._notify(r,i,e,"progress")),s.length||(i.running=!1,this._notify(r,i,e,"complete"),i.initial=!1),n+=s.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let i=n.get(e);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,i)),i}listen(e,n,i){this._getAnims(e).listeners[n].push(i)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,r)=>Math.max(i,r._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const i=n.items;let r=i.length-1;for(;r>=0;--r)i[r].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var Tt=new tk;const Dd="transparent",nk={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const i=Cd(t||Dd),r=i.valid&&Cd(e||Dd);return r&&r.valid?r.mix(i,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class ik{constructor(e,n,i,r){const s=n[i];r=js([e.to,r,s,e.from]);const o=js([e.from,s,r]);this._active=!0,this._fn=e.fn||nk[e.type||typeof o],this._easing=Pr[e.easing]||Pr.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=i,this._from=o,this._to=r,this._promises=void 0}active(){return this._active}update(e,n,i){if(this._active){this._notify(!1);const r=this._target[this._prop],s=i-this._start,o=this._duration-s;this._start=i,this._duration=Math.floor(Math.max(o,e.duration)),this._total+=s,this._loop=!!e.loop,this._to=js([e.to,n,r,e.from]),this._from=js([e.from,r,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,i=this._duration,r=this._prop,s=this._from,o=this._loop,a=this._to;let l;if(this._active=s!==a&&(o||n<i),!this._active){this._target[r]=a,this._notify(!0);return}if(n<0){this._target[r]=s;return}l=n/i%2,l=o&&l>1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[r]=this._fn(s,a,l)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,i)=>{e.push({res:n,rej:i})})}_notify(e){const n=e?"res":"rej",i=this._promises||[];for(let r=0;r<i.length;r++)i[r][n]()}}class Om{constructor(e,n){this._chart=e,this._properties=new Map,this.configure(n)}configure(e){if(!U(e))return;const n=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(e).forEach(r=>{const s=e[r];if(!U(s))return;const o={};for(const a of n)o[a]=s[a];(oe(s.properties)&&s.properties||[r]).forEach(a=>{(a===r||!i.has(a))&&i.set(a,o)})})}_animateOptions(e,n){const i=n.options,r=sk(e,i);if(!r)return[];const s=this._createAnimations(r,i);return i.$shared&&rk(e.options.$animations,i).then(()=>{e.options=i},()=>{}),s}_createAnimations(e,n){const i=this._properties,r=[],s=e.$animations||(e.$animations={}),o=Object.keys(n),a=Date.now();let l;for(l=o.length-1;l>=0;--l){const u=o[l];if(u.charAt(0)==="$")continue;if(u==="options"){r.push(...this._animateOptions(e,n));continue}const c=n[u];let h=s[u];const d=i.get(u);if(h)if(d&&h.active()){h.update(d,c,a);continue}else h.cancel();if(!d||!d.duration){e[u]=c;continue}s[u]=h=new ik(d,e,u,c),r.push(h)}return r}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const i=this._createAnimations(e,n);if(i.length)return Tt.add(this._chart,i),!0}}function rk(t,e){const n=[],i=Object.keys(e);for(let r=0;r<i.length;r++){const s=t[i[r]];s&&s.active()&&n.push(s.wait())}return Promise.all(n)}function sk(t,e){if(!e)return;let n=t.options;if(!n){t.options=e;return}return n.$shared&&(t.options=n=Object.assign({},n,{$shared:!1,$animations:{}})),n}function jd(t,e){const n=t&&t.options||{},i=n.reverse,r=n.min===void 0?e:0,s=n.max===void 0?e:0;return{start:i?s:r,end:i?r:s}}function ok(t,e,n){if(n===!1)return!1;const i=jd(t,n),r=jd(e,n);return{top:r.end,right:i.end,bottom:r.start,left:i.start}}function ak(t){let e,n,i,r;return U(t)?(e=t.top,n=t.right,i=t.bottom,r=t.left):e=n=i=r=t,{top:e,right:n,bottom:i,left:r,disabled:t===!1}}function Mm(t,e){const n=[],i=t._getSortedDatasetMetas(e);let r,s;for(r=0,s=i.length;r<s;++r)n.push(i[r].index);return n}function Nd(t,e,n,i={}){const r=t.keys,s=i.mode==="single";let o,a,l,u;if(e!==null){for(o=0,a=r.length;o<a;++o){if(l=+r[o],l===n){if(i.all)continue;break}u=t.values[l],ve(u)&&(s||e===0||Ii(e)===Ii(u))&&(e+=u)}return e}}function lk(t,e){const{iScale:n,vScale:i}=e,r=n.axis==="x"?"x":"y",s=i.axis==="x"?"x":"y",o=Object.keys(t),a=new Array(o.length);let l,u,c;for(l=0,u=o.length;l<u;++l)c=o[l],a[l]={[r]:c,[s]:t[c]};return a}function zd(t,e){const n=t&&t.options.stacked;return n||n===void 0&&e.stack!==void 0}function uk(t,e,n){return`${t.id}.${e.id}.${n.stack||n.type}`}function ck(t){const{min:e,max:n,minDefined:i,maxDefined:r}=t.getUserBounds();return{min:i?e:Number.NEGATIVE_INFINITY,max:r?n:Number.POSITIVE_INFINITY}}function hk(t,e,n){const i=t[e]||(t[e]={});return i[n]||(i[n]={})}function Fd(t,e,n,i){for(const r of e.getMatchingVisibleMetas(i).reverse()){const s=t[r.index];if(n&&s>0||!n&&s<0)return r.index}return null}function $d(t,e){const{chart:n,_cachedMeta:i}=t,r=n._stacks||(n._stacks={}),{iScale:s,vScale:o,index:a}=i,l=s.axis,u=o.axis,c=uk(s,o,i),h=e.length;let d;for(let f=0;f<h;++f){const m=e[f],{[l]:y,[u]:v}=m,p=m._stacks||(m._stacks={});d=p[u]=hk(r,c,y),d[a]=v,d._top=Fd(d,o,!0,i.type),d._bottom=Fd(d,o,!1,i.type);const g=d._visualValues||(d._visualValues={});g[a]=v}}function Za(t,e){const n=t.scales;return Object.keys(n).filter(i=>n[i].axis===e).shift()}function dk(t,e){return xn(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function fk(t,e,n){return xn(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function Ji(t,e){const n=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const r of e){const s=r._stacks;if(!s||s[i]===void 0||s[i][n]===void 0)return;delete s[i][n],s[i]._visualValues!==void 0&&s[i]._visualValues[n]!==void 0&&delete s[i]._visualValues[n]}}}const el=t=>t==="reset"||t==="none",Ud=(t,e)=>e?t:Object.assign({},t),pk=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:Mm(n,!0),values:null};class Mr{constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=zd(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&Ji(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,i=this.getDataset(),r=(h,d,f,m)=>h==="x"?d:h==="r"?m:f,s=n.xAxisID=W(i.xAxisID,Za(e,"x")),o=n.yAxisID=W(i.yAxisID,Za(e,"y")),a=n.rAxisID=W(i.rAxisID,Za(e,"r")),l=n.indexAxis,u=n.iAxisID=r(l,s,o,a),c=n.vAxisID=r(l,o,s,a);n.xScale=this.getScaleForId(s),n.yScale=this.getScaleForId(o),n.rScale=this.getScaleForId(a),n.iScale=this.getScaleForId(u),n.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&kd(this._data,this),e._stacked&&Ji(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),i=this._data;if(U(n)){const r=this._cachedMeta;this._data=lk(n,r)}else if(i!==n){if(i){kd(i,this);const r=this._cachedMeta;Ji(r),r._parsed=[]}n&&Object.isExtensible(n)&&Wx(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,i=this.getDataset();let r=!1;this._dataCheck();const s=n._stacked;n._stacked=zd(n.vScale,n),n.stack!==i.stack&&(r=!0,Ji(n),n.stack=i.stack),this._resyncElements(e),(r||s!==n._stacked)&&$d(this,n._parsed)}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),i=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:i,_data:r}=this,{iScale:s,_stacked:o}=i,a=s.axis;let l=e===0&&n===r.length?!0:i._sorted,u=e>0&&i._parsed[e-1],c,h,d;if(this._parsing===!1)i._parsed=r,i._sorted=!0,d=r;else{oe(r[e])?d=this.parseArrayData(i,r,e,n):U(r[e])?d=this.parseObjectData(i,r,e,n):d=this.parsePrimitiveData(i,r,e,n);const f=()=>h[a]===null||u&&h[a]<u[a];for(c=0;c<n;++c)i._parsed[c+e]=h=d[c],l&&(f()&&(l=!1),u=h);i._sorted=l}o&&$d(this,d)}parsePrimitiveData(e,n,i,r){const{iScale:s,vScale:o}=e,a=s.axis,l=o.axis,u=s.getLabels(),c=s===o,h=new Array(r);let d,f,m;for(d=0,f=r;d<f;++d)m=d+i,h[d]={[a]:c||s.parse(u[m],m),[l]:o.parse(n[m],m)};return h}parseArrayData(e,n,i,r){const{xScale:s,yScale:o}=e,a=new Array(r);let l,u,c,h;for(l=0,u=r;l<u;++l)c=l+i,h=n[c],a[l]={x:s.parse(h[0],c),y:o.parse(h[1],c)};return a}parseObjectData(e,n,i,r){const{xScale:s,yScale:o}=e,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,u=new Array(r);let c,h,d,f;for(c=0,h=r;c<h;++c)d=c+i,f=n[d],u[c]={x:s.parse(No(f,a),d),y:o.parse(No(f,l),d)};return u}getParsed(e){return this._cachedMeta._parsed[e]}getDataElement(e){return this._cachedMeta.data[e]}applyStack(e,n,i){const r=this.chart,s=this._cachedMeta,o=n[e.axis],a={keys:Mm(r,!0),values:n._stacks[e.axis]._visualValues};return Nd(a,o,s.index,{mode:i})}updateRangeFromParsed(e,n,i,r){const s=i[n.axis];let o=s===null?NaN:s;const a=r&&i._stacks[n.axis];r&&a&&(r.values=a,o=Nd(r,s,this._cachedMeta.index)),e.min=Math.min(e.min,o),e.max=Math.max(e.max,o)}getMinMax(e,n){const i=this._cachedMeta,r=i._parsed,s=i._sorted&&e===i.iScale,o=r.length,a=this._getOtherScale(e),l=pk(n,i,this.chart),u={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:h}=ck(a);let d,f;function m(){f=r[d];const y=f[a.axis];return!ve(f[e.axis])||c>y||h<y}for(d=0;d<o&&!(!m()&&(this.updateRangeFromParsed(u,e,f,l),s));++d);if(s){for(d=o-1;d>=0;--d)if(!m()){this.updateRangeFromParsed(u,e,f,l);break}}return u}getAllParsedValues(e){const n=this._cachedMeta._parsed,i=[];let r,s,o;for(r=0,s=n.length;r<s;++r)o=n[r][e.axis],ve(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(e){const n=this._cachedMeta,i=n.iScale,r=n.vScale,s=this.getParsed(e);return{label:i?""+i.getLabelForValue(s[i.axis]):"",value:r?""+r.getLabelForValue(s[r.axis]):""}}_update(e){const n=this._cachedMeta;this.update(e||"default"),n._clip=ak(W(this.options.clip,ok(n.xScale,n.yScale,this.getMaxOverflow())))}update(e){}draw(){const e=this._ctx,n=this.chart,i=this._cachedMeta,r=i.data||[],s=n.chartArea,o=[],a=this._drawStart||0,l=this._drawCount||r.length-a,u=this.options.drawActiveElementsOnTop;let c;for(i.dataset&&i.dataset.draw(e,s,a,l),c=a;c<a+l;++c){const h=r[c];h.hidden||(h.active&&u?o.push(h):h.draw(e,s))}for(c=0;c<o.length;++c)o[c].draw(e,s)}getStyle(e,n){const i=n?"active":"default";return e===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(e||0,i)}getContext(e,n,i){const r=this.getDataset();let s;if(e>=0&&e<this._cachedMeta.data.length){const o=this._cachedMeta.data[e];s=o.$context||(o.$context=fk(this.getContext(),e,o)),s.parsed=this.getParsed(e),s.raw=r.data[e],s.index=s.dataIndex=e}else s=this.$context||(this.$context=dk(this.chart.getContext(),this.index)),s.dataset=r,s.index=s.datasetIndex=this.index;return s.active=!!n,s.mode=i,s}resolveDatasetElementOptions(e){return this._resolveElementOptions(this.datasetElementType.id,e)}resolveDataElementOptions(e,n){return this._resolveElementOptions(this.dataElementType.id,n,e)}_resolveElementOptions(e,n="default",i){const r=n==="active",s=this._cachedDataOpts,o=e+"-"+n,a=s[o],l=this.enableOptionSharing&&zo(i);if(a)return Ud(a,l);const u=this.chart.config,c=u.datasetElementScopeKeys(this._type,e),h=r?[`${e}Hover`,"hover",e,""]:[e,""],d=u.getOptionScopes(this.getDataset(),c),f=Object.keys(ue.elements[e]),m=()=>this.getContext(i,r,n),y=u.resolveNamedOptions(d,f,m,h);return y.$shared&&(y.$shared=l,s[o]=Object.freeze(Ud(y,l))),y}_resolveAnimations(e,n,i){const r=this.chart,s=this._cachedDataOpts,o=`animation-${n}`,a=s[o];if(a)return a;let l;if(r.options.animation!==!1){const c=this.chart.config,h=c.datasetAnimationScopeKeys(this._type,n),d=c.getOptionScopes(this.getDataset(),h);l=c.createResolver(d,this.getContext(e,i,n))}const u=new Om(r,l&&l.animations);return l&&l._cacheable&&(s[o]=Object.freeze(u)),u}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||el(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const i=this.resolveDataElementOptions(e,n),r=this._sharedOptions,s=this.getSharedOptions(i),o=this.includeOptions(n,s)||s!==r;return this.updateSharedOptions(s,n,i),{sharedOptions:s,includeOptions:o}}updateElement(e,n,i,r){el(r)?Object.assign(e,i):this._resolveAnimations(n,r).update(e,i)}updateSharedOptions(e,n,i){e&&!el(n)&&this._resolveAnimations(void 0,n).update(e,i)}_setStyle(e,n,i,r){e.active=r;const s=this.getStyle(n,r);this._resolveAnimations(n,i,r).update(e,{options:!r&&this.getSharedOptions(s)||s})}removeHoverStyle(e,n,i){this._setStyle(e,i,"active",!1)}setHoverStyle(e,n,i){this._setStyle(e,i,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,i=this._cachedMeta.data;for(const[a,l,u]of this._syncList)this[a](l,u);this._syncList=[];const r=i.length,s=n.length,o=Math.min(s,r);o&&this.parse(0,o),s>r?this._insertElements(r,s-r,e):s<r&&this._removeElements(s,r-s)}_insertElements(e,n,i=!0){const r=this._cachedMeta,s=r.data,o=e+n;let a;const l=u=>{for(u.length+=n,a=u.length-1;a>=o;a--)u[a]=u[a-n]};for(l(s),a=e;a<o;++a)s[a]=new this.dataElementType;this._parsing&&l(r._parsed),this.parse(e,n),i&&this.updateElements(s,e,n,"reset")}updateElements(e,n,i,r){}_removeElements(e,n){const i=this._cachedMeta;if(this._parsing){const r=i._parsed.splice(e,n);i._stacked&&Ji(i,r)}i.data.splice(e,n)}_sync(e){if(this._parsing)this._syncList.push(e);else{const[n,i,r]=e;this[n](i,r)}this.chart._dataChanges.push([this.index,...e])}_onDataPush(){const e=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-e,e])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(e,n){n&&this._sync(["_removeElements",e,n]);const i=arguments.length-2;i&&this._sync(["_insertElements",e,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}I(Mr,"defaults",{}),I(Mr,"datasetElementType",null),I(Mr,"dataElementType",null);class so extends Mr{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const n=this._cachedMeta,{dataset:i,data:r=[],_dataset:s}=n,o=this.chart._animationsDisabled;let{start:a,count:l}=Gx(n,r,o);this._drawStart=a,this._drawCount=l,qx(n)&&(a=0,l=r.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!s._decimated,i.points=r;const u=this.resolveDatasetElementOptions(e);this.options.showLine||(u.borderWidth=0),u.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:u},e),this.updateElements(r,a,l,e)}updateElements(e,n,i,r){const s=r==="reset",{iScale:o,vScale:a,_stacked:l,_dataset:u}=this._cachedMeta,{sharedOptions:c,includeOptions:h}=this._getSharedOptions(n,r),d=o.axis,f=a.axis,{spanGaps:m,segment:y}=this.options,v=Zr(m)?m:Number.POSITIVE_INFINITY,p=this.chart._animationsDisabled||s||r==="none",g=n+i,_=e.length;let w=n>0&&this.getParsed(n-1);for(let x=0;x<_;++x){const b=e[x],k=p?b:{};if(x<n||x>=g){k.skip=!0;continue}const S=this.getParsed(x),M=J(S[f]),O=k[d]=o.getPixelForValue(S[d],x),D=k[f]=s||M?a.getBasePixel():a.getPixelForValue(l?this.applyStack(a,S,l):S[f],x);k.skip=isNaN(O)||isNaN(D)||M,k.stop=x>0&&Math.abs(S[d]-w[d])>v,y&&(k.parsed=S,k.raw=u.data[x]),h&&(k.options=c||this.resolveDataElementOptions(x,b.active?"active":r)),p||this.updateElement(b,x,k,r),w=S}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,i=n.options&&n.options.borderWidth||0,r=e.data||[];if(!r.length)return i;const s=r[0].size(this.resolveDataElementOptions(0)),o=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(i,s,o)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}I(so,"id","line"),I(so,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),I(so,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Ic{constructor(e){I(this,"options");this.options=e||{}}static override(e){Object.assign(Ic.prototype,e)}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var gk={_date:Ic};function mk(t,e,n,i){const{controller:r,data:s,_sorted:o}=t,a=r._cachedMeta.iScale;if(a&&e===a.axis&&e!=="r"&&o&&s.length){const l=a._reversePixels?Vx:Nn;if(i){if(r._sharedOptions){const u=s[0],c=typeof u.getRange=="function"&&u.getRange(e);if(c){const h=l(s,e,n-c),d=l(s,e,n+c);return{lo:h.lo,hi:d.hi}}}}else return l(s,e,n)}return{lo:0,hi:s.length-1}}function cs(t,e,n,i,r){const s=t.getSortedVisibleDatasetMetas(),o=n[e];for(let a=0,l=s.length;a<l;++a){const{index:u,data:c}=s[a],{lo:h,hi:d}=mk(s[a],e,o,r);for(let f=h;f<=d;++f){const m=c[f];m.skip||i(m,u,f)}}}function yk(t){const e=t.indexOf("x")!==-1,n=t.indexOf("y")!==-1;return function(i,r){const s=e?Math.abs(i.x-r.x):0,o=n?Math.abs(i.y-r.y):0;return Math.sqrt(Math.pow(s,2)+Math.pow(o,2))}}function tl(t,e,n,i,r){const s=[];return!r&&!t.isPointInArea(e)||cs(t,n,e,function(a,l,u){!r&&!Dt(a,t.chartArea,0)||a.inRange(e.x,e.y,i)&&s.push({element:a,datasetIndex:l,index:u})},!0),s}function vk(t,e,n,i){let r=[];function s(o,a,l){const{startAngle:u,endAngle:c}=o.getProps(["startAngle","endAngle"],i),{angle:h}=Fx(o,{x:e.x,y:e.y});pm(h,u,c)&&r.push({element:o,datasetIndex:a,index:l})}return cs(t,n,e,s),r}function _k(t,e,n,i,r,s){let o=[];const a=yk(n);let l=Number.POSITIVE_INFINITY;function u(c,h,d){const f=c.inRange(e.x,e.y,r);if(i&&!f)return;const m=c.getCenterPoint(r);if(!(!!s||t.isPointInArea(m))&&!f)return;const v=a(e,m);v<l?(o=[{element:c,datasetIndex:h,index:d}],l=v):v===l&&o.push({element:c,datasetIndex:h,index:d})}return cs(t,n,e,u),o}function nl(t,e,n,i,r,s){return!s&&!t.isPointInArea(e)?[]:n==="r"&&!i?vk(t,e,n,r):_k(t,e,n,i,r,s)}function Bd(t,e,n,i,r){const s=[],o=n==="x"?"inXRange":"inYRange";let a=!1;return cs(t,n,e,(l,u,c)=>{l[o](e[n],r)&&(s.push({element:l,datasetIndex:u,index:c}),a=a||l.inRange(e.x,e.y,r))}),i&&!a?[]:s}var wk={evaluateInteractionItems:cs,modes:{index(t,e,n,i){const r=Ln(e,t),s=n.axis||"x",o=n.includeInvisible||!1,a=n.intersect?tl(t,r,s,i,o):nl(t,r,s,!1,i,o),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(u=>{const c=a[0].index,h=u.data[c];h&&!h.skip&&l.push({element:h,datasetIndex:u.index,index:c})}),l):[]},dataset(t,e,n,i){const r=Ln(e,t),s=n.axis||"xy",o=n.includeInvisible||!1;let a=n.intersect?tl(t,r,s,i,o):nl(t,r,s,!1,i,o);if(a.length>0){const l=a[0].datasetIndex,u=t.getDatasetMeta(l).data;a=[];for(let c=0;c<u.length;++c)a.push({element:u[c],datasetIndex:l,index:c})}return a},point(t,e,n,i){const r=Ln(e,t),s=n.axis||"xy",o=n.includeInvisible||!1;return tl(t,r,s,i,o)},nearest(t,e,n,i){const r=Ln(e,t),s=n.axis||"xy",o=n.includeInvisible||!1;return nl(t,r,s,n.intersect,i,o)},x(t,e,n,i){const r=Ln(e,t);return Bd(t,r,"x",n.intersect,i)},y(t,e,n,i){const r=Ln(e,t);return Bd(t,r,"y",n.intersect,i)}}};const Lm=["left","top","right","bottom"];function Zi(t,e){return t.filter(n=>n.pos===e)}function Vd(t,e){return t.filter(n=>Lm.indexOf(n.pos)===-1&&n.box.axis===e)}function er(t,e){return t.sort((n,i)=>{const r=e?i:n,s=e?n:i;return r.weight===s.weight?r.index-s.index:r.weight-s.weight})}function xk(t){const e=[];let n,i,r,s,o,a;for(n=0,i=(t||[]).length;n<i;++n)r=t[n],{position:s,options:{stack:o,stackWeight:a=1}}=r,e.push({index:n,box:r,pos:s,horizontal:r.isHorizontal(),weight:r.weight,stack:o&&s+o,stackWeight:a});return e}function kk(t){const e={};for(const n of t){const{stack:i,pos:r,stackWeight:s}=n;if(!i||!Lm.includes(r))continue;const o=e[i]||(e[i]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=s}return e}function bk(t,e){const n=kk(t),{vBoxMaxWidth:i,hBoxMaxHeight:r}=e;let s,o,a;for(s=0,o=t.length;s<o;++s){a=t[s];const{fullSize:l}=a.box,u=n[a.stack],c=u&&a.stackWeight/u.weight;a.horizontal?(a.width=c?c*i:l&&e.availableWidth,a.height=r):(a.width=i,a.height=c?c*r:l&&e.availableHeight)}return n}function Sk(t){const e=xk(t),n=er(e.filter(u=>u.box.fullSize),!0),i=er(Zi(e,"left"),!0),r=er(Zi(e,"right")),s=er(Zi(e,"top"),!0),o=er(Zi(e,"bottom")),a=Vd(e,"x"),l=Vd(e,"y");return{fullSize:n,leftAndTop:i.concat(s),rightAndBottom:r.concat(l).concat(o).concat(a),chartArea:Zi(e,"chartArea"),vertical:i.concat(r).concat(l),horizontal:s.concat(o).concat(a)}}function Hd(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function Rm(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Ck(t,e,n,i){const{pos:r,box:s}=n,o=t.maxPadding;if(!U(r)){n.size&&(t[r]-=n.size);const h=i[n.stack]||{size:0,count:1};h.size=Math.max(h.size,n.horizontal?s.height:s.width),n.size=h.size/h.count,t[r]+=n.size}s.getPadding&&Rm(o,s.getPadding());const a=Math.max(0,e.outerWidth-Hd(o,t,"left","right")),l=Math.max(0,e.outerHeight-Hd(o,t,"top","bottom")),u=a!==t.w,c=l!==t.h;return t.w=a,t.h=l,n.horizontal?{same:u,other:c}:{same:c,other:u}}function Ek(t){const e=t.maxPadding;function n(i){const r=Math.max(e[i]-t[i],0);return t[i]+=r,r}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function Pk(t,e){const n=e.maxPadding;function i(r){const s={left:0,top:0,right:0,bottom:0};return r.forEach(o=>{s[o]=Math.max(e[o],n[o])}),s}return i(t?["left","right"]:["top","bottom"])}function cr(t,e,n,i){const r=[];let s,o,a,l,u,c;for(s=0,o=t.length,u=0;s<o;++s){a=t[s],l=a.box,l.update(a.width||e.w,a.height||e.h,Pk(a.horizontal,e));const{same:h,other:d}=Ck(e,n,a,i);u|=h&&r.length,c=c||d,l.fullSize||r.push(a)}return u&&cr(r,e,n,i)||c}function Fs(t,e,n,i,r){t.top=n,t.left=e,t.right=e+i,t.bottom=n+r,t.width=i,t.height=r}function Wd(t,e,n,i){const r=n.padding;let{x:s,y:o}=e;for(const a of t){const l=a.box,u=i[a.stack]||{count:1,placed:0,weight:1},c=a.stackWeight/u.weight||1;if(a.horizontal){const h=e.w*c,d=u.size||l.height;zo(u.start)&&(o=u.start),l.fullSize?Fs(l,r.left,o,n.outerWidth-r.right-r.left,d):Fs(l,e.left+u.placed,o,h,d),u.start=o,u.placed+=h,o=l.bottom}else{const h=e.h*c,d=u.size||l.width;zo(u.start)&&(s=u.start),l.fullSize?Fs(l,s,r.top,d,n.outerHeight-r.bottom-r.top):Fs(l,s,e.top+u.placed,d,h),u.start=s,u.placed+=h,s=l.right}}e.x=s,e.y=o}var rn={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(n){e.draw(n)}}]},t.boxes.push(e)},removeBox(t,e){const n=t.boxes?t.boxes.indexOf(e):-1;n!==-1&&t.boxes.splice(n,1)},configure(t,e,n){e.fullSize=n.fullSize,e.position=n.position,e.weight=n.weight},update(t,e,n,i){if(!t)return;const r=qe(t.options.layout.padding),s=Math.max(e-r.width,0),o=Math.max(n-r.height,0),a=Sk(t.boxes),l=a.vertical,u=a.horizontal;V(t.boxes,y=>{typeof y.beforeLayout=="function"&&y.beforeLayout()});const c=l.reduce((y,v)=>v.box.options&&v.box.options.display===!1?y:y+1,0)||1,h=Object.freeze({outerWidth:e,outerHeight:n,padding:r,availableWidth:s,availableHeight:o,vBoxMaxWidth:s/2/c,hBoxMaxHeight:o/2}),d=Object.assign({},r);Rm(d,qe(i));const f=Object.assign({maxPadding:d,w:s,h:o,x:r.left,y:r.top},r),m=bk(l.concat(u),h);cr(a.fullSize,f,h,m),cr(l,f,h,m),cr(u,f,h,m)&&cr(l,f,h,m),Ek(f),Wd(a.leftAndTop,f,h,m),f.x+=f.w,f.y+=f.h,Wd(a.rightAndBottom,f,h,m),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},V(a.chartArea,y=>{const v=y.box;Object.assign(v,t.chartArea),v.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class Im{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,i){}removeEventListener(e,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,i,r){return n=Math.max(0,n||e.width),i=i||e.height,{width:n,height:Math.max(0,r?Math.floor(n/r):i)}}isAttached(e){return!0}updateConfig(e){}}class Tk extends Im{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const oo="$chartjs",Ok={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Kd=t=>t===null||t==="";function Mk(t,e){const n=t.style,i=t.getAttribute("height"),r=t.getAttribute("width");if(t[oo]={initial:{height:i,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",Kd(r)){const s=Ld(t,"width");s!==void 0&&(t.width=s)}if(Kd(i))if(t.style.height==="")t.height=t.width/(e||2);else{const s=Ld(t,"height");s!==void 0&&(t.height=s)}return t}const Am=$1?{passive:!0}:!1;function Lk(t,e,n){t&&t.addEventListener(e,n,Am)}function Rk(t,e,n){t&&t.canvas&&t.canvas.removeEventListener(e,n,Am)}function Ik(t,e){const n=Ok[t.type]||t.type,{x:i,y:r}=Ln(t,e);return{type:n,chart:e,native:t,x:i!==void 0?i:null,y:r!==void 0?r:null}}function Bo(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function Ak(t,e,n){const i=t.canvas,r=new MutationObserver(s=>{let o=!1;for(const a of s)o=o||Bo(a.addedNodes,i),o=o&&!Bo(a.removedNodes,i);o&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}function Dk(t,e,n){const i=t.canvas,r=new MutationObserver(s=>{let o=!1;for(const a of s)o=o||Bo(a.removedNodes,i),o=o&&!Bo(a.addedNodes,i);o&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}const ts=new Map;let Yd=0;function Dm(){const t=window.devicePixelRatio;t!==Yd&&(Yd=t,ts.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function jk(t,e){ts.size||window.addEventListener("resize",Dm),ts.set(t,e)}function Nk(t){ts.delete(t),ts.size||window.removeEventListener("resize",Dm)}function zk(t,e,n){const i=t.canvas,r=i&&Rc(i);if(!r)return;const s=ym((a,l)=>{const u=r.clientWidth;n(a,l),u<r.clientWidth&&n()},window),o=new ResizeObserver(a=>{const l=a[0],u=l.contentRect.width,c=l.contentRect.height;u===0&&c===0||s(u,c)});return o.observe(r),jk(t,s),o}function il(t,e,n){n&&n.disconnect(),e==="resize"&&Nk(t)}function Fk(t,e,n){const i=t.canvas,r=ym(s=>{t.ctx!==null&&n(Ik(s,t))},t);return Lk(i,e,r),r}class $k extends Im{acquireContext(e,n){const i=e&&e.getContext&&e.getContext("2d");return i&&i.canvas===e?(Mk(e,n),i):null}releaseContext(e){const n=e.canvas;if(!n[oo])return!1;const i=n[oo].initial;["height","width"].forEach(s=>{const o=i[s];J(o)?n.removeAttribute(s):n.setAttribute(s,o)});const r=i.style||{};return Object.keys(r).forEach(s=>{n.style[s]=r[s]}),n.width=n.width,delete n[oo],!0}addEventListener(e,n,i){this.removeEventListener(e,n);const r=e.$proxies||(e.$proxies={}),o={attach:Ak,detach:Dk,resize:zk}[n]||Fk;r[n]=o(e,n,i)}removeEventListener(e,n){const i=e.$proxies||(e.$proxies={}),r=i[n];if(!r)return;({attach:il,detach:il,resize:il}[n]||Rk)(e,n,r),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,i,r){return F1(e,n,i,r)}isAttached(e){const n=e&&Rc(e);return!!(n&&n.isConnected)}}function Uk(t){return!Lc()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?Tk:$k}class yn{constructor(){I(this,"x");I(this,"y");I(this,"active",!1);I(this,"options");I(this,"$animations")}tooltipPosition(e){const{x:n,y:i}=this.getProps(["x","y"],e);return{x:n,y:i}}hasValue(){return Zr(this.x)&&Zr(this.y)}getProps(e,n){const i=this.$animations;if(!n||!i)return this;const r={};return e.forEach(s=>{r[s]=i[s]&&i[s].active()?i[s]._to:this[s]}),r}}I(yn,"defaults",{}),I(yn,"defaultRoutes");function Bk(t,e){const n=t.options.ticks,i=Vk(t),r=Math.min(n.maxTicksLimit||i,i),s=n.major.enabled?Wk(e):[],o=s.length,a=s[0],l=s[o-1],u=[];if(o>r)return Kk(e,u,s,o/r),u;const c=Hk(s,e,r);if(o>0){let h,d;const f=o>1?Math.round((l-a)/(o-1)):null;for($s(e,u,c,J(f)?0:a-f,a),h=0,d=o-1;h<d;h++)$s(e,u,c,s[h],s[h+1]);return $s(e,u,c,l,J(f)?e.length:l+f),u}return $s(e,u,c),u}function Vk(t){const e=t.options.offset,n=t._tickSize(),i=t._length/n+(e?0:1),r=t._maxLength/n;return Math.floor(Math.min(i,r))}function Hk(t,e,n){const i=Yk(t),r=e.length/n;if(!i)return Math.max(r,1);const s=Nx(i);for(let o=0,a=s.length-1;o<a;o++){const l=s[o];if(l>r)return l}return Math.max(r,1)}function Wk(t){const e=[];let n,i;for(n=0,i=t.length;n<i;n++)t[n].major&&e.push(n);return e}function Kk(t,e,n,i){let r=0,s=n[0],o;for(i=Math.ceil(i),o=0;o<t.length;o++)o===s&&(e.push(t[o]),r++,s=n[r*i])}function $s(t,e,n,i,r){const s=W(i,0),o=Math.min(W(r,t.length),t.length);let a=0,l,u,c;for(n=Math.ceil(n),r&&(l=r-i,n=l/Math.floor(l/n)),c=s;c<0;)a++,c=Math.round(s+a*n);for(u=Math.max(s,0);u<o;u++)u===c&&(e.push(t[u]),a++,c=Math.round(s+a*n))}function Yk(t){const e=t.length;let n,i;if(e<2)return!1;for(i=t[0],n=1;n<e;++n)if(t[n]-t[n-1]!==i)return!1;return i}const Gk=t=>t==="left"?"right":t==="right"?"left":t,Gd=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,qd=(t,e)=>Math.min(e||t,t);function Qd(t,e){const n=[],i=t.length/e,r=t.length;let s=0;for(;s<r;s+=i)n.push(t[Math.floor(s)]);return n}function qk(t,e,n){const i=t.ticks.length,r=Math.min(e,i-1),s=t._startPixel,o=t._endPixel,a=1e-6;let l=t.getPixelForTick(r),u;if(!(n&&(i===1?u=Math.max(l-s,o-l):e===0?u=(t.getPixelForTick(1)-l)/2:u=(l-t.getPixelForTick(r-1))/2,l+=r<e?u:-u,l<s-a||l>o+a)))return l}function Qk(t,e){V(t,n=>{const i=n.gc,r=i.length/2;let s;if(r>e){for(s=0;s<r;++s)delete n.data[i[s]];i.splice(0,r)}})}function tr(t){return t.drawTicks?t.tickLength:0}function Xd(t,e){if(!t.display)return 0;const n=Le(t.font,e),i=qe(t.padding);return(oe(t.text)?t.text.length:1)*n.lineHeight+i.height}function Xk(t,e){return xn(t,{scale:e,type:"scale"})}function Jk(t,e,n){return xn(t,{tick:n,index:e,type:"tick"})}function Zk(t,e,n){let i=vm(t);return(n&&e!=="right"||!n&&e==="right")&&(i=Gk(i)),i}function eb(t,e,n,i){const{top:r,left:s,bottom:o,right:a,chart:l}=t,{chartArea:u,scales:c}=l;let h=0,d,f,m;const y=o-r,v=a-s;if(t.isHorizontal()){if(f=Er(i,s,a),U(n)){const p=Object.keys(n)[0],g=n[p];m=c[p].getPixelForValue(g)+y-e}else n==="center"?m=(u.bottom+u.top)/2+y-e:m=Gd(t,n,e);d=a-s}else{if(U(n)){const p=Object.keys(n)[0],g=n[p];f=c[p].getPixelForValue(g)-v+e}else n==="center"?f=(u.left+u.right)/2-v+e:f=Gd(t,n,e);m=Er(i,o,r),h=n==="left"?-Ke:Ke}return{titleX:f,titleY:m,maxWidth:d,rotation:h}}class Xn extends yn{constructor(e){super(),this.id=e.id,this.type=e.type,this.options=void 0,this.ctx=e.ctx,this.chart=e.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(e){this.options=e.setContext(this.getContext()),this.axis=e.axis,this._userMin=this.parse(e.min),this._userMax=this.parse(e.max),this._suggestedMin=this.parse(e.suggestedMin),this._suggestedMax=this.parse(e.suggestedMax)}parse(e,n){return e}getUserBounds(){let{_userMin:e,_userMax:n,_suggestedMin:i,_suggestedMax:r}=this;return e=Ve(e,Number.POSITIVE_INFINITY),n=Ve(n,Number.NEGATIVE_INFINITY),i=Ve(i,Number.POSITIVE_INFINITY),r=Ve(r,Number.NEGATIVE_INFINITY),{min:Ve(e,i),max:Ve(n,r),minDefined:ve(e),maxDefined:ve(n)}}getMinMax(e){let{min:n,max:i,minDefined:r,maxDefined:s}=this.getUserBounds(),o;if(r&&s)return{min:n,max:i};const a=this.getMatchingVisibleMetas();for(let l=0,u=a.length;l<u;++l)o=a[l].controller.getMinMax(this,e),r||(n=Math.min(n,o.min)),s||(i=Math.max(i,o.max));return n=s&&n>i?i:n,i=r&&n>i?n:i,{min:Ve(n,Ve(i,n)),max:Ve(i,Ve(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){re(this.options.beforeUpdate,[this])}update(e,n,i){const{beginAtZero:r,grace:s,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=y1(this,s,r),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a<this.ticks.length;this._convertTicksToLabels(l?Qd(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||o.source==="auto")&&(this.ticks=Bk(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),l&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let e=this.options.reverse,n,i;this.isHorizontal()?(n=this.left,i=this.right):(n=this.top,i=this.bottom,e=!e),this._startPixel=n,this._endPixel=i,this._reversePixels=e,this._length=i-n,this._alignToPixels=this.options.alignToPixels}afterUpdate(){re(this.options.afterUpdate,[this])}beforeSetDimensions(){re(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){re(this.options.afterSetDimensions,[this])}_callHooks(e){this.chart.notifyPlugins(e,this.getContext()),re(this.options[e],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){re(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(e){const n=this.options.ticks;let i,r,s;for(i=0,r=e.length;i<r;i++)s=e[i],s.label=re(n.callback,[s.value,i,e],this)}afterTickToLabelConversion(){re(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){re(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const e=this.options,n=e.ticks,i=qd(this.ticks.length,e.ticks.maxTicksLimit),r=n.minRotation||0,s=n.maxRotation;let o=r,a,l,u;if(!this._isVisible()||!n.display||r>=s||i<=1||!this.isHorizontal()){this.labelRotation=r;return}const c=this._getLabelSizes(),h=c.widest.width,d=c.highest.height,f=it(this.chart.width-h,0,this.maxWidth);a=e.offset?this.maxWidth/i:f/(i-1),h+6>a&&(a=f/(i-(e.offset?.5:1)),l=this.maxHeight-tr(e.grid)-n.padding-Xd(e.title,this.chart.options.font),u=Math.sqrt(h*h+d*d),o=Sc(Math.min(Math.asin(it((c.highest.height+6)/a,-1,1)),Math.asin(it(l/u,-1,1))-Math.asin(it(d/u,-1,1)))),o=Math.max(r,Math.min(s,o))),this.labelRotation=o}afterCalculateLabelRotation(){re(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){re(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:i,title:r,grid:s}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const l=Xd(r,n.options.font);if(a?(e.width=this.maxWidth,e.height=tr(s)+l):(e.height=this.maxHeight,e.width=tr(s)+l),i.display&&this.ticks.length){const{first:u,last:c,widest:h,highest:d}=this._getLabelSizes(),f=i.padding*2,m=nn(this.labelRotation),y=Math.cos(m),v=Math.sin(m);if(a){const p=i.mirror?0:v*h.width+y*d.height;e.height=Math.min(this.maxHeight,e.height+p+f)}else{const p=i.mirror?0:y*h.width+v*d.height;e.width=Math.min(this.maxWidth,e.width+p+f)}this._calculatePadding(u,c,v,y)}}this._handleMargins(),a?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,i,r){const{ticks:{align:s,padding:o},position:a}=this.options,l=this.labelRotation!==0,u=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const c=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let d=0,f=0;l?u?(d=r*e.width,f=i*n.height):(d=i*e.height,f=r*n.width):s==="start"?f=n.width:s==="end"?d=e.width:s!=="inner"&&(d=e.width/2,f=n.width/2),this.paddingLeft=Math.max((d-c+o)*this.width/(this.width-c),0),this.paddingRight=Math.max((f-h+o)*this.width/(this.width-h),0)}else{let c=n.height/2,h=e.height/2;s==="start"?(c=0,h=e.height):s==="end"&&(c=n.height,h=0),this.paddingTop=c+o,this.paddingBottom=h+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){re(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,i;for(n=0,i=e.length;n<i;n++)J(e[n].label)&&(e.splice(n,1),i--,n--);this.afterTickToLabelConversion()}_getLabelSizes(){let e=this._labelSizes;if(!e){const n=this.options.ticks.sampleSize;let i=this.ticks;n<i.length&&(i=Qd(i,n)),this._labelSizes=e=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return e}_computeLabelSizes(e,n,i){const{ctx:r,_longestTextCache:s}=this,o=[],a=[],l=Math.floor(n/qd(n,i));let u=0,c=0,h,d,f,m,y,v,p,g,_,w,x;for(h=0;h<n;h+=l){if(m=e[h].label,y=this._resolveTickFontOptions(h),r.font=v=y.string,p=s[v]=s[v]||{data:{},gc:[]},g=y.lineHeight,_=w=0,!J(m)&&!oe(m))_=$o(r,p.data,p.gc,_,m),w=g;else if(oe(m))for(d=0,f=m.length;d<f;++d)x=m[d],!J(x)&&!oe(x)&&(_=$o(r,p.data,p.gc,_,x),w+=g);o.push(_),a.push(w),u=Math.max(_,u),c=Math.max(w,c)}Qk(s,n);const b=o.indexOf(u),k=a.indexOf(c),S=M=>({width:o[M]||0,height:a[M]||0});return{first:S(0),last:S(n-1),widest:S(b),highest:S(k),widths:o,heights:a}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return Ux(this._alignToPixels?Cn(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&e<n.length){const i=n[e];return i.$context||(i.$context=Jk(this.getContext(),e,i))}return this.$context||(this.$context=Xk(this.chart.getContext(),this))}_tickSize(){const e=this.options.ticks,n=nn(this.labelRotation),i=Math.abs(Math.cos(n)),r=Math.abs(Math.sin(n)),s=this._getLabelSizes(),o=e.autoSkipPadding||0,a=s?s.widest.width+o:0,l=s?s.highest.height+o:0;return this.isHorizontal()?l*i>a*r?a/i:l/r:l*r<a*i?l/i:a/r}_isVisible(){const e=this.options.display;return e!=="auto"?!!e:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(e){const n=this.axis,i=this.chart,r=this.options,{grid:s,position:o,border:a}=r,l=s.offset,u=this.isHorizontal(),h=this.ticks.length+(l?1:0),d=tr(s),f=[],m=a.setContext(this.getContext()),y=m.display?m.width:0,v=y/2,p=function(K){return Cn(i,K,y)};let g,_,w,x,b,k,S,M,O,D,B,ce;if(o==="top")g=p(this.bottom),k=this.bottom-d,M=g-v,D=p(e.top)+v,ce=e.bottom;else if(o==="bottom")g=p(this.top),D=e.top,ce=p(e.bottom)-v,k=g+v,M=this.top+d;else if(o==="left")g=p(this.right),b=this.right-d,S=g-v,O=p(e.left)+v,B=e.right;else if(o==="right")g=p(this.left),O=e.left,B=p(e.right)-v,b=g+v,S=this.left+d;else if(n==="x"){if(o==="center")g=p((e.top+e.bottom)/2+.5);else if(U(o)){const K=Object.keys(o)[0],me=o[K];g=p(this.chart.scales[K].getPixelForValue(me))}D=e.top,ce=e.bottom,k=g+v,M=k+d}else if(n==="y"){if(o==="center")g=p((e.left+e.right)/2);else if(U(o)){const K=Object.keys(o)[0],me=o[K];g=p(this.chart.scales[K].getPixelForValue(me))}b=g-v,S=b-d,O=e.left,B=e.right}const ae=W(r.ticks.maxTicksLimit,h),$=Math.max(1,Math.ceil(h/ae));for(_=0;_<h;_+=$){const K=this.getContext(_),me=s.setContext(K),P=a.setContext(K),R=me.lineWidth,A=me.color,Y=P.dash||[],Q=P.dashOffset,vt=me.tickWidth,Te=me.tickColor,Et=me.tickBorderDash||[],Oe=me.tickBorderDashOffset;w=qk(this,_,l),w!==void 0&&(x=Cn(i,w,R),u?b=S=O=B=x:k=M=D=ce=x,f.push({tx1:b,ty1:k,tx2:S,ty2:M,x1:O,y1:D,x2:B,y2:ce,width:R,color:A,borderDash:Y,borderDashOffset:Q,tickWidth:vt,tickColor:Te,tickBorderDash:Et,tickBorderDashOffset:Oe}))}return this._ticksLength=h,this._borderValue=g,f}_computeLabelItems(e){const n=this.axis,i=this.options,{position:r,ticks:s}=i,o=this.isHorizontal(),a=this.ticks,{align:l,crossAlign:u,padding:c,mirror:h}=s,d=tr(i.grid),f=d+c,m=h?-c:f,y=-nn(this.labelRotation),v=[];let p,g,_,w,x,b,k,S,M,O,D,B,ce="middle";if(r==="top")b=this.bottom-m,k=this._getXAxisLabelAlignment();else if(r==="bottom")b=this.top+m,k=this._getXAxisLabelAlignment();else if(r==="left"){const $=this._getYAxisLabelAlignment(d);k=$.textAlign,x=$.x}else if(r==="right"){const $=this._getYAxisLabelAlignment(d);k=$.textAlign,x=$.x}else if(n==="x"){if(r==="center")b=(e.top+e.bottom)/2+f;else if(U(r)){const $=Object.keys(r)[0],K=r[$];b=this.chart.scales[$].getPixelForValue(K)+f}k=this._getXAxisLabelAlignment()}else if(n==="y"){if(r==="center")x=(e.left+e.right)/2-f;else if(U(r)){const $=Object.keys(r)[0],K=r[$];x=this.chart.scales[$].getPixelForValue(K)}k=this._getYAxisLabelAlignment(d).textAlign}n==="y"&&(l==="start"?ce="top":l==="end"&&(ce="bottom"));const ae=this._getLabelSizes();for(p=0,g=a.length;p<g;++p){_=a[p],w=_.label;const $=s.setContext(this.getContext(p));S=this.getPixelForTick(p)+s.labelOffset,M=this._resolveTickFontOptions(p),O=M.lineHeight,D=oe(w)?w.length:1;const K=D/2,me=$.color,P=$.textStrokeColor,R=$.textStrokeWidth;let A=k;o?(x=S,k==="inner"&&(p===g-1?A=this.options.reverse?"left":"right":p===0?A=this.options.reverse?"right":"left":A="center"),r==="top"?u==="near"||y!==0?B=-D*O+O/2:u==="center"?B=-ae.highest.height/2-K*O+O:B=-ae.highest.height+O/2:u==="near"||y!==0?B=O/2:u==="center"?B=ae.highest.height/2-K*O:B=ae.highest.height-D*O,h&&(B*=-1),y!==0&&!$.showLabelBackdrop&&(x+=O/2*Math.sin(y))):(b=S,B=(1-D)*O/2);let Y;if($.showLabelBackdrop){const Q=qe($.backdropPadding),vt=ae.heights[p],Te=ae.widths[p];let Et=B-Q.top,Oe=0-Q.left;switch(ce){case"middle":Et-=vt/2;break;case"bottom":Et-=vt;break}switch(k){case"center":Oe-=Te/2;break;case"right":Oe-=Te;break;case"inner":p===g-1?Oe-=Te:p>0&&(Oe-=Te/2);break}Y={left:Oe,top:Et,width:Te+Q.width,height:vt+Q.height,color:$.backdropColor}}v.push({label:w,font:M,textOffset:B,options:{rotation:y,color:me,strokeColor:P,strokeWidth:R,textAlign:A,textBaseline:ce,translation:[x,b],backdrop:Y}})}return v}_getXAxisLabelAlignment(){const{position:e,ticks:n}=this.options;if(-nn(this.labelRotation))return e==="top"?"left":"right";let r="center";return n.align==="start"?r="left":n.align==="end"?r="right":n.align==="inner"&&(r="inner"),r}_getYAxisLabelAlignment(e){const{position:n,ticks:{crossAlign:i,mirror:r,padding:s}}=this.options,o=this._getLabelSizes(),a=e+s,l=o.widest.width;let u,c;return n==="left"?r?(c=this.right+s,i==="near"?u="left":i==="center"?(u="center",c+=l/2):(u="right",c+=l)):(c=this.right-a,i==="near"?u="right":i==="center"?(u="center",c-=l/2):(u="left",c=this.left)):n==="right"?r?(c=this.left+s,i==="near"?u="right":i==="center"?(u="center",c-=l/2):(u="left",c-=l)):(c=this.left+a,i==="near"?u="left":i==="center"?(u="center",c+=l/2):(u="right",c=this.right)):u="right",{textAlign:u,x:c}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:n},left:i,top:r,width:s,height:o}=this;n&&(e.save(),e.fillStyle=n,e.fillRect(i,r,s,o),e.restore())}getLineWidthForValue(e){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const r=this.ticks.findIndex(s=>s.value===e);return r>=0?n.setContext(this.getContext(r)).lineWidth:0}drawGrid(e){const n=this.options.grid,i=this.ctx,r=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let s,o;const a=(l,u,c)=>{!c.width||!c.color||(i.save(),i.lineWidth=c.width,i.strokeStyle=c.color,i.setLineDash(c.borderDash||[]),i.lineDashOffset=c.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(u.x,u.y),i.stroke(),i.restore())};if(n.display)for(s=0,o=r.length;s<o;++s){const l=r[s];n.drawOnChartArea&&a({x:l.x1,y:l.y1},{x:l.x2,y:l.y2},l),n.drawTicks&&a({x:l.tx1,y:l.ty1},{x:l.tx2,y:l.ty2},{color:l.tickColor,width:l.tickWidth,borderDash:l.tickBorderDash,borderDashOffset:l.tickBorderDashOffset})}}drawBorder(){const{chart:e,ctx:n,options:{border:i,grid:r}}=this,s=i.setContext(this.getContext()),o=i.display?s.width:0;if(!o)return;const a=r.setContext(this.getContext(0)).lineWidth,l=this._borderValue;let u,c,h,d;this.isHorizontal()?(u=Cn(e,this.left,o)-o/2,c=Cn(e,this.right,a)+a/2,h=d=l):(h=Cn(e,this.top,o)-o/2,d=Cn(e,this.bottom,a)+a/2,u=c=l),n.save(),n.lineWidth=s.width,n.strokeStyle=s.color,n.beginPath(),n.moveTo(u,h),n.lineTo(c,d),n.stroke(),n.restore()}drawLabels(e){if(!this.options.ticks.display)return;const i=this.ctx,r=this._computeLabelArea();r&&wm(i,r);const s=this.getLabelItems(e);for(const o of s){const a=o.options,l=o.font,u=o.label,c=o.textOffset;es(i,u,0,c,l,a)}r&&xm(i)}drawTitle(){const{ctx:e,options:{position:n,title:i,reverse:r}}=this;if(!i.display)return;const s=Le(i.font),o=qe(i.padding),a=i.align;let l=s.lineHeight/2;n==="bottom"||n==="center"||U(n)?(l+=o.bottom,oe(i.text)&&(l+=s.lineHeight*(i.text.length-1))):l+=o.top;const{titleX:u,titleY:c,maxWidth:h,rotation:d}=eb(this,l,n,a);es(e,i.text,0,0,s,{color:i.color,maxWidth:h,rotation:d,textAlign:Zk(a,n,r),textBaseline:"middle",translation:[u,c]})}draw(e){this._isVisible()&&(this.drawBackground(),this.drawGrid(e),this.drawBorder(),this.drawTitle(),this.drawLabels(e))}_layers(){const e=this.options,n=e.ticks&&e.ticks.z||0,i=W(e.grid&&e.grid.z,-1),r=W(e.border&&e.border.z,0);return!this._isVisible()||this.draw!==Xn.prototype.draw?[{z:n,draw:s=>{this.draw(s)}}]:[{z:i,draw:s=>{this.drawBackground(),this.drawGrid(s),this.drawTitle()}},{z:r,draw:()=>{this.drawBorder()}},{z:n,draw:s=>{this.drawLabels(s)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",r=[];let s,o;for(s=0,o=n.length;s<o;++s){const a=n[s];a[i]===this.id&&(!e||a.type===e)&&r.push(a)}return r}_resolveTickFontOptions(e){const n=this.options.ticks.setContext(this.getContext(e));return Le(n.font)}_maxDigits(){const e=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/e}}class Us{constructor(e,n,i){this.type=e,this.scope=n,this.override=i,this.items=Object.create(null)}isForType(e){return Object.prototype.isPrototypeOf.call(this.type.prototype,e.prototype)}register(e){const n=Object.getPrototypeOf(e);let i;ib(n)&&(i=this.register(n));const r=this.items,s=e.id,o=this.scope+"."+s;if(!s)throw new Error("class does not have id: "+e);return s in r||(r[s]=e,tb(e,o,i),this.override&&ue.override(e.id,e.overrides)),o}get(e){return this.items[e]}unregister(e){const n=this.items,i=e.id,r=this.scope;i in n&&delete n[i],r&&i in ue[r]&&(delete ue[r][i],this.override&&delete Yn[i])}}function tb(t,e,n){const i=Jr(Object.create(null),[n?ue.get(n):{},ue.get(e),t.defaults]);ue.set(e,i),t.defaultRoutes&&nb(e,t.defaultRoutes),t.descriptors&&ue.describe(e,t.descriptors)}function nb(t,e){Object.keys(e).forEach(n=>{const i=n.split("."),r=i.pop(),s=[t].concat(i).join("."),o=e[n].split("."),a=o.pop(),l=o.join(".");ue.route(s,r,l,a)})}function ib(t){return"id"in t&&"defaults"in t}class rb{constructor(){this.controllers=new Us(Mr,"datasets",!0),this.elements=new Us(yn,"elements"),this.plugins=new Us(Object,"plugins"),this.scales=new Us(Xn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,i){[...n].forEach(r=>{const s=i||this._getRegistryForType(r);i||s.isForType(r)||s===this.plugins&&r.id?this._exec(e,s,r):V(r,o=>{const a=i||this._getRegistryForType(o);this._exec(e,a,o)})})}_exec(e,n,i){const r=bc(e);re(i["before"+r],[],i),n[e](i),re(i["after"+r],[],i)}_getRegistryForType(e){for(let n=0;n<this._typedRegistries.length;n++){const i=this._typedRegistries[n];if(i.isForType(e))return i}return this.plugins}_get(e,n,i){const r=n.get(e);if(r===void 0)throw new Error('"'+e+'" is not a registered '+i+".");return r}}var kt=new rb;class sb{constructor(){this._init=[]}notify(e,n,i,r){n==="beforeInit"&&(this._init=this._createDescriptors(e,!0),this._notify(this._init,e,"install"));const s=r?this._descriptors(e).filter(r):this._descriptors(e),o=this._notify(s,e,n,i);return n==="afterDestroy"&&(this._notify(s,e,"stop"),this._notify(this._init,e,"uninstall")),o}_notify(e,n,i,r){r=r||{};for(const s of e){const o=s.plugin,a=o[i],l=[n,r,s.options];if(re(a,l,o)===!1&&r.cancelable)return!1}return!0}invalidate(){J(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(e){if(this._cache)return this._cache;const n=this._cache=this._createDescriptors(e);return this._notifyStateChanges(e),n}_createDescriptors(e,n){const i=e&&e.config,r=W(i.options&&i.options.plugins,{}),s=ob(i);return r===!1&&!n?[]:lb(e,s,r,n)}_notifyStateChanges(e){const n=this._oldCache||[],i=this._cache,r=(s,o)=>s.filter(a=>!o.some(l=>a.plugin.id===l.plugin.id));this._notify(r(n,i),e,"stop"),this._notify(r(i,n),e,"start")}}function ob(t){const e={},n=[],i=Object.keys(kt.plugins.items);for(let s=0;s<i.length;s++)n.push(kt.getPlugin(i[s]));const r=t.plugins||[];for(let s=0;s<r.length;s++){const o=r[s];n.indexOf(o)===-1&&(n.push(o),e[o.id]=!0)}return{plugins:n,localIds:e}}function ab(t,e){return!e&&t===!1?null:t===!0?{}:t}function lb(t,{plugins:e,localIds:n},i,r){const s=[],o=t.getContext();for(const a of e){const l=a.id,u=ab(i[l],r);u!==null&&s.push({plugin:a,options:ub(t.config,{plugin:a,local:n[l]},u,o)})}return s}function ub(t,{plugin:e,local:n},i,r){const s=t.pluginScopeKeys(e),o=t.getOptionScopes(i,s);return n&&e.defaults&&o.push(e.defaults),t.createResolver(o,r,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function hu(t,e){const n=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||n.indexAxis||"x"}function cb(t,e){let n=t;return t==="_index_"?n=e:t==="_value_"&&(n=e==="x"?"y":"x"),n}function hb(t,e){return t===e?"_index_":"_value_"}function Jd(t){if(t==="x"||t==="y"||t==="r")return t}function db(t){if(t==="top"||t==="bottom")return"x";if(t==="left"||t==="right")return"y"}function du(t,...e){if(Jd(t))return t;for(const n of e){const i=n.axis||db(n.position)||t.length>1&&Jd(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function Zd(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function fb(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(n.length)return Zd(t,"x",n[0])||Zd(t,"y",n[0])}return{}}function pb(t,e){const n=Yn[t.type]||{scales:{}},i=e.scales||{},r=hu(t.type,e),s=Object.create(null);return Object.keys(i).forEach(o=>{const a=i[o];if(!U(a))return console.error(`Invalid scale configuration for scale: ${o}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${o}`);const l=du(o,a,fb(o,t),ue.scales[a.type]),u=hb(l,r),c=n.scales||{};s[o]=Sr(Object.create(null),[{axis:l},a,c[l],c[u]])}),t.data.datasets.forEach(o=>{const a=o.type||t.type,l=o.indexAxis||hu(a,e),c=(Yn[a]||{}).scales||{};Object.keys(c).forEach(h=>{const d=cb(h,l),f=o[d+"AxisID"]||d;s[f]=s[f]||Object.create(null),Sr(s[f],[{axis:d},i[f],c[h]])})}),Object.keys(s).forEach(o=>{const a=s[o];Sr(a,[ue.scales[a.type],ue.scale])}),s}function jm(t){const e=t.options||(t.options={});e.plugins=W(e.plugins,{}),e.scales=pb(t,e)}function Nm(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function gb(t){return t=t||{},t.data=Nm(t.data),jm(t),t}const ef=new Map,zm=new Set;function Bs(t,e){let n=ef.get(t);return n||(n=e(),ef.set(t,n),zm.add(n)),n}const nr=(t,e,n)=>{const i=No(e,n);i!==void 0&&t.add(i)};class mb{constructor(e){this._config=gb(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=Nm(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),jm(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return Bs(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return Bs(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return Bs(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,i=this.type;return Bs(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const i=this._scopeCache;let r=i.get(e);return(!r||n)&&(r=new Map,i.set(e,r)),r}getOptionScopes(e,n,i){const{options:r,type:s}=this,o=this._cachedScopes(e,i),a=o.get(n);if(a)return a;const l=new Set;n.forEach(c=>{e&&(l.add(e),c.forEach(h=>nr(l,e,h))),c.forEach(h=>nr(l,r,h)),c.forEach(h=>nr(l,Yn[s]||{},h)),c.forEach(h=>nr(l,ue,h)),c.forEach(h=>nr(l,lu,h))});const u=Array.from(l);return u.length===0&&u.push(Object.create(null)),zm.has(n)&&o.set(n,u),u}chartOptionScopes(){const{options:e,type:n}=this;return[e,Yn[n]||{},ue.datasets[n]||{},{type:n},ue,lu]}resolveNamedOptions(e,n,i,r=[""]){const s={$shared:!0},{resolver:o,subPrefixes:a}=tf(this._resolverCache,e,r);let l=o;if(vb(o,n)){s.$shared=!1,i=mn(i)?i():i;const u=this.createResolver(e,i,a);l=Ai(o,i,u)}for(const u of n)s[u]=l[u];return s}createResolver(e,n,i=[""],r){const{resolver:s}=tf(this._resolverCache,e,i);return U(n)?Ai(s,n,void 0,r):s}}function tf(t,e,n){let i=t.get(e);i||(i=new Map,t.set(e,i));const r=n.join();let s=i.get(r);return s||(s={resolver:Tc(e,n),subPrefixes:n.filter(a=>!a.toLowerCase().includes("hover"))},i.set(r,s)),s}const yb=t=>U(t)&&Object.getOwnPropertyNames(t).some(e=>mn(t[e]));function vb(t,e){const{isScriptable:n,isIndexable:i}=bm(t);for(const r of e){const s=n(r),o=i(r),a=(o||s)&&t[r];if(s&&(mn(a)||yb(a))||o&&oe(a))return!0}return!1}var _b="4.4.3";const wb=["top","bottom","left","right","chartArea"];function nf(t,e){return t==="top"||t==="bottom"||wb.indexOf(t)===-1&&e==="x"}function rf(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}function sf(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),re(n&&n.onComplete,[t],e)}function xb(t){const e=t.chart,n=e.options.animation;re(n&&n.onProgress,[t],e)}function Fm(t){return Lc()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const ao={},of=t=>{const e=Fm(t);return Object.values(ao).filter(n=>n.canvas===e).pop()};function kb(t,e,n){const i=Object.keys(t);for(const r of i){const s=+r;if(s>=e){const o=t[r];delete t[r],(n>0||s>e)&&(t[s+n]=o)}}}function bb(t,e,n,i){return!n||t.type==="mouseout"?null:i?e:t}function Vs(t,e,n){return t.options.clip?t[n]:e[n]}function Sb(t,e){const{xScale:n,yScale:i}=t;return n&&i?{left:Vs(n,e,"left"),right:Vs(n,e,"right"),top:Vs(i,e,"top"),bottom:Vs(i,e,"bottom")}:e}var Vt;let pa=(Vt=class{static register(...e){kt.add(...e),af()}static unregister(...e){kt.remove(...e),af()}constructor(e,n){const i=this.config=new mb(n),r=Fm(e),s=of(r);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas with ID '"+s.canvas.id+"' can be reused.");const o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Uk(r)),this.platform.updateConfig(i);const a=this.platform.acquireContext(r,o.aspectRatio),l=a&&a.canvas,u=l&&l.height,c=l&&l.width;if(this.id=Tx(),this.ctx=a,this.canvas=l,this.width=c,this.height=u,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new sb,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Yx(h=>this.update(h),o.resizeDelay||0),this._dataChanges=[],ao[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}Tt.listen(this,"complete",sf),Tt.listen(this,"progress",xb),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:i,height:r,_aspectRatio:s}=this;return J(e)?n&&s?s:r?i/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return kt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Md(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Pd(this.canvas,this.ctx),this}stop(){return Tt.stop(this),this}resize(e,n){Tt.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const i=this.options,r=this.canvas,s=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(r,e,n,s),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,Md(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),re(i.onResize,[this,o],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};V(n,(i,r)=>{i.id=r})}buildOrUpdateScales(){const e=this.options,n=e.scales,i=this.scales,r=Object.keys(i).reduce((o,a)=>(o[a]=!1,o),{});let s=[];n&&(s=s.concat(Object.keys(n).map(o=>{const a=n[o],l=du(o,a),u=l==="r",c=l==="x";return{options:a,dposition:u?"chartArea":c?"bottom":"left",dtype:u?"radialLinear":c?"category":"linear"}}))),V(s,o=>{const a=o.options,l=a.id,u=du(l,a),c=W(a.type,o.dtype);(a.position===void 0||nf(a.position,u)!==nf(o.dposition))&&(a.position=o.dposition),r[l]=!0;let h=null;if(l in i&&i[l].type===c)h=i[l];else{const d=kt.getScale(c);h=new d({id:l,type:c,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(a,e)}),V(r,(o,a)=>{o||delete i[a]}),V(i,o=>{rn.configure(this,o,o.options),rn.addBox(this,o)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,i=e.length;if(e.sort((r,s)=>r.index-s.index),i>n){for(let r=n;r<i;++r)this._destroyDatasetMeta(r);e.splice(n,i-n)}this._sortedMetasets=e.slice(0).sort(rf("order","index"))}_removeUnreferencedMetasets(){const{_metasets:e,data:{datasets:n}}=this;e.length>n.length&&delete this._stacks,e.forEach((i,r)=>{n.filter(s=>s===i._dataset).length===0&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let i,r;for(this._removeUnreferencedMetasets(),i=0,r=n.length;i<r;i++){const s=n[i];let o=this.getDatasetMeta(i);const a=s.type||this.config.type;if(o.type&&o.type!==a&&(this._destroyDatasetMeta(i),o=this.getDatasetMeta(i)),o.type=a,o.indexAxis=s.indexAxis||hu(a,this.options),o.order=s.order||0,o.index=i,o.label=""+s.label,o.visible=this.isDatasetVisible(i),o.controller)o.controller.updateIndex(i),o.controller.linkScales();else{const l=kt.getController(a),{datasetElementType:u,dataElementType:c}=ue.datasets[a];Object.assign(l,{dataElementType:kt.getElement(c),datasetElementType:u&&kt.getElement(u)}),o.controller=new l(this,i),e.push(o.controller)}}return this._updateMetasets(),e}_resetElements(){V(this.data.datasets,(e,n)=>{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let u=0,c=this.data.datasets.length;u<c;u++){const{controller:h}=this.getDatasetMeta(u),d=!r&&s.indexOf(h)===-1;h.buildOrUpdateElements(d),o=Math.max(+h.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),r||V(s,u=>{u.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(rf("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){V(this.scales,e=>{rn.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(e.events);(!vd(n,i)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:r,count:s}of n){const o=i==="_removeElements"?-s:s;kb(e,r,o)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=s=>new Set(e.filter(o=>o[0]===s).map((o,a)=>a+","+o.splice(1).join(","))),r=i(0);for(let s=1;s<n;s++)if(!vd(r,i(s)))return;return Array.from(r).map(s=>s.split(",")).map(s=>({method:s[1],start:+s[2],count:+s[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;rn.update(this,this.width,this.height,e);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],V(this.boxes,r=>{i&&r.position==="chartArea"||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,s)=>{r._idx=s}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n<i;++n)this.getDatasetMeta(n).controller.configure();for(let n=0,i=this.data.datasets.length;n<i;++n)this._updateDataset(n,mn(e)?e({datasetIndex:n}):e);this.notifyPlugins("afterDatasetsUpdate",{mode:e})}}_updateDataset(e,n){const i=this.getDatasetMeta(e),r={meta:i,index:e,mode:n,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",r)!==!1&&(i.controller._update(n),r.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",r))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(Tt.has(this)?this.attached&&!Tt.running(this)&&Tt.start(this):(this.draw(),sf({chart:this})))}draw(){let e;if(this._resizeBeforeDraw){const{width:i,height:r}=this._resizeBeforeDraw;this._resize(i,r),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const n=this._layers;for(e=0;e<n.length&&n[e].z<=0;++e)n[e].draw(this.chartArea);for(this._drawDatasets();e<n.length;++e)n[e].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(e){const n=this._sortedMetasets,i=[];let r,s;for(r=0,s=n.length;r<s;++r){const o=n[r];(!e||o.visible)&&i.push(o)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const e=this.getSortedVisibleDatasetMetas();for(let n=e.length-1;n>=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,i=e._clip,r=!i.disabled,s=Sb(e,this.chartArea),o={meta:e,index:e.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",o)!==!1&&(r&&wm(n,{left:i.left===!1?0:s.left-i.left,right:i.right===!1?this.width:s.right+i.right,top:i.top===!1?0:s.top-i.top,bottom:i.bottom===!1?this.height:s.bottom+i.bottom}),e.controller.draw(),r&&xm(n),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(e){return Dt(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,i,r){const s=wk.modes[n];return typeof s=="function"?s(this,e,i,r):[]}getDatasetMeta(e){const n=this.data.datasets[e],i=this._metasets;let r=i.filter(s=>s&&s._dataset===n).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},i.push(r)),r}getContext(){return this.$context||(this.$context=xn(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const i=this.getDatasetMeta(e);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(e,n){const i=this.getDatasetMeta(e);i.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,i){const r=i?"show":"hide",s=this.getDatasetMeta(e),o=s.controller._resolveAnimations(void 0,r);zo(n)?(s.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(e,i),o.update(s,{visible:i}),this.update(a=>a.datasetIndex===e?r:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),Tt.remove(this),e=0,n=this.data.datasets.length;e<n;++e)this._destroyDatasetMeta(e)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:e,ctx:n}=this;this._stop(),this.config.clearCache(),e&&(this.unbindEvents(),Pd(e,n),this.platform.releaseContext(n),this.canvas=null,this.ctx=null),delete ao[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...e){return this.canvas.toDataURL(...e)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const e=this._listeners,n=this.platform,i=(s,o)=>{n.addEventListener(this,s,o),e[s]=o},r=(s,o,a)=>{s.offsetX=o,s.offsetY=a,this._eventHandler(s)};V(this.options.events,s=>i(s,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,i=(l,u)=>{n.addEventListener(this,l,u),e[l]=u},r=(l,u)=>{e[l]&&(n.removeEventListener(this,l,u),delete e[l])},s=(l,u)=>{this.canvas&&this.resize(l,u)};let o;const a=()=>{r("attach",a),this.attached=!0,this.resize(),i("resize",s),i("detach",o)};o=()=>{this.attached=!1,r("resize",s),this._stop(),this._resize(0,0),i("attach",a)},n.isAttached(this.canvas)?a():o()}unbindEvents(){V(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},V(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,i){const r=i?"set":"remove";let s,o,a,l;for(n==="dataset"&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+r+"DatasetHoverStyle"]()),a=0,l=e.length;a<l;++a){o=e[a];const u=o&&this.getDatasetMeta(o.datasetIndex).controller;u&&u[r+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(e){const n=this._active||[],i=e.map(({datasetIndex:s,index:o})=>{const a=this.getDatasetMeta(s);if(!a)throw new Error("No dataset found at index "+s);return{datasetIndex:s,element:a.data[o],index:o}});!Do(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(e,n,i){return this._plugins.notify(this,e,n,i)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,i){const r=this.options.hover,s=(l,u)=>l.filter(c=>!u.some(h=>c.datasetIndex===h.datasetIndex&&c.index===h.index)),o=s(n,e),a=i?e:s(e,n);o.length&&this.updateHoverStyle(o,r.mode,!1),a.length&&r.mode&&this.updateHoverStyle(a,r.mode,!0)}_eventHandler(e,n){const i={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},r=o=>(o.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",i,r)===!1)return;const s=this._handleEvent(e,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,r),(s||i.changed)&&this.render(),this}_handleEvent(e,n,i){const{_active:r=[],options:s}=this,o=n,a=this._getActiveElements(e,r,i,o),l=Ax(e),u=bb(e,this._lastEvent,i,l);i&&(this._lastEvent=null,re(s.onHover,[e,a,this],this),l&&re(s.onClick,[e,a,this],this));const c=!Do(a,r);return(c||n)&&(this._active=a,this._updateHoverStyles(a,r,n)),this._lastEvent=u,c}_getActiveElements(e,n,i,r){if(e.type==="mouseout")return[];if(!i)return n;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,r)}},I(Vt,"defaults",ue),I(Vt,"instances",ao),I(Vt,"overrides",Yn),I(Vt,"registry",kt),I(Vt,"version",_b),I(Vt,"getChart",of),Vt);function af(){return V(pa.instances,t=>t._plugins.invalidate())}function $m(t,e,n=e){t.lineCap=W(n.borderCapStyle,e.borderCapStyle),t.setLineDash(W(n.borderDash,e.borderDash)),t.lineDashOffset=W(n.borderDashOffset,e.borderDashOffset),t.lineJoin=W(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=W(n.borderWidth,e.borderWidth),t.strokeStyle=W(n.borderColor,e.borderColor)}function Cb(t,e,n){t.lineTo(n.x,n.y)}function Eb(t){return t.stepped?a1:t.tension||t.cubicInterpolationMode==="monotone"?l1:Cb}function Um(t,e,n={}){const i=t.length,{start:r=0,end:s=i-1}=n,{start:o,end:a}=e,l=Math.max(r,o),u=Math.min(s,a),c=r<o&&s<o||r>a&&s>a;return{count:i,start:l,loop:e.loop,ilen:u<l&&!c?i+u-l:u-l}}function Pb(t,e,n,i){const{points:r,options:s}=e,{count:o,start:a,loop:l,ilen:u}=Um(r,n,i),c=Eb(s);let{move:h=!0,reverse:d}=i||{},f,m,y;for(f=0;f<=u;++f)m=r[(a+(d?u-f:f))%o],!m.skip&&(h?(t.moveTo(m.x,m.y),h=!1):c(t,y,m,d,s.stepped),y=m);return l&&(m=r[(a+(d?u:0))%o],c(t,y,m,d,s.stepped)),!!l}function Tb(t,e,n,i){const r=e.points,{count:s,start:o,ilen:a}=Um(r,n,i),{move:l=!0,reverse:u}=i||{};let c=0,h=0,d,f,m,y,v,p;const g=w=>(o+(u?a-w:w))%s,_=()=>{y!==v&&(t.lineTo(c,v),t.lineTo(c,y),t.lineTo(c,p))};for(l&&(f=r[g(0)],t.moveTo(f.x,f.y)),d=0;d<=a;++d){if(f=r[g(d)],f.skip)continue;const w=f.x,x=f.y,b=w|0;b===m?(x<y?y=x:x>v&&(v=x),c=(h*c+w)/++h):(_(),t.lineTo(w,x),m=b,h=0,y=v=x),p=x}_()}function fu(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?Tb:Pb}function Ob(t){return t.stepped?U1:t.tension||t.cubicInterpolationMode==="monotone"?B1:Rn}function Mb(t,e,n,i){let r=e._path;r||(r=e._path=new Path2D,e.path(r,n,i)&&r.closePath()),$m(t,e.options),t.stroke(r)}function Lb(t,e,n,i){const{segments:r,options:s}=e,o=fu(e);for(const a of r)$m(t,s,a.style),t.beginPath(),o(t,e,a,{start:n,end:n+i-1})&&t.closePath(),t.stroke()}const Rb=typeof Path2D=="function";function Ib(t,e,n,i){Rb&&!e.options.segment?Mb(t,e,n,i):Lb(t,e,n,i)}class hr extends yn{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){const r=i.spanGaps?this._loop:this._fullLoop;I1(this._points,i,e,r,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=J1(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,i=e.length;return i&&n[e[i-1].end]}interpolate(e,n){const i=this.options,r=e[n],s=this.points,o=q1(this,{property:n,start:r,end:r});if(!o.length)return;const a=[],l=Ob(i);let u,c;for(u=0,c=o.length;u<c;++u){const{start:h,end:d}=o[u],f=s[h],m=s[d];if(f===m){a.push(f);continue}const y=Math.abs((r-f[n])/(m[n]-f[n])),v=l(f,m,y,i.stepped);v[n]=e[n],a.push(v)}return a.length===1?a[0]:a}pathSegment(e,n,i){return fu(this)(e,this,n,i)}path(e,n,i){const r=this.segments,s=fu(this);let o=this._loop;n=n||0,i=i||this.points.length-n;for(const a of r)o&=s(e,this,a,{start:n,end:n+i-1});return!!o}draw(e,n,i,r){const s=this.options||{};(this.points||[]).length&&s.borderWidth&&(e.save(),Ib(e,this,i,r),e.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}I(hr,"id","line"),I(hr,"defaults",{borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0}),I(hr,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"}),I(hr,"descriptors",{_scriptable:!0,_indexable:e=>e!=="borderDash"&&e!=="fill"});function lf(t,e,n,i){const r=t.options,{[n]:s}=t.getProps([n],i);return Math.abs(e-s)<r.radius+r.hitRadius}class lo extends yn{constructor(n){super();I(this,"parsed");I(this,"skip");I(this,"stop");this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,n&&Object.assign(this,n)}inRange(n,i,r){const s=this.options,{x:o,y:a}=this.getProps(["x","y"],r);return Math.pow(n-o,2)+Math.pow(i-a,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(n,i){return lf(this,n,"x",i)}inYRange(n,i){return lf(this,n,"y",i)}getCenterPoint(n){const{x:i,y:r}=this.getProps(["x","y"],n);return{x:i,y:r}}size(n){n=n||this.options||{};let i=n.radius||0;i=Math.max(i,i&&n.hoverRadius||0);const r=i&&n.borderWidth||0;return(i+r)*2}draw(n,i){const r=this.options;this.skip||r.radius<.1||!Dt(this,i,this.size(r)/2)||(n.strokeStyle=r.borderColor,n.lineWidth=r.borderWidth,n.fillStyle=r.backgroundColor,uu(n,r,this.x,this.y))}getRange(){const n=this.options||{};return n.radius+n.hitRadius}}I(lo,"id","point"),I(lo,"defaults",{borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0}),I(lo,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});class Bm extends yn{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const r=oe(i.text)?i.text.length:1;this._padding=qe(i.padding);const s=r*Le(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=s:this.width=s}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:i,bottom:r,right:s,options:o}=this,a=o.align;let l=0,u,c,h;return this.isHorizontal()?(c=Er(a,i,s),h=n+e,u=s-i):(o.position==="left"?(c=i+e,h=Er(a,r,n),l=de*-.5):(c=s-e,h=Er(a,n,r),l=de*.5),u=r-n),{titleX:c,titleY:h,maxWidth:u,rotation:l}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const i=Le(n.font),s=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:l,rotation:u}=this._drawArgs(s);es(e,n.text,0,0,i,{color:n.color,maxWidth:l,rotation:u,textAlign:vm(n.align),textBaseline:"middle",translation:[o,a]})}}function Ab(t,e){const n=new Bm({ctx:t.ctx,options:e,chart:t});rn.configure(t,n,e),rn.addBox(t,n),t.titleBlock=n}var Db={id:"title",_element:Bm,start(t,e,n){Ab(t,n)},stop(t){const e=t.titleBlock;rn.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const i=t.titleBlock;rn.configure(t,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const dr={average(t){if(!t.length)return!1;let e,n,i=new Set,r=0,s=0;for(e=0,n=t.length;e<n;++e){const a=t[e].element;if(a&&a.hasValue()){const l=a.tooltipPosition();i.add(l.x),r+=l.y,++s}}return{x:[...i].reduce((a,l)=>a+l)/i.size,y:r/s}},nearest(t,e){if(!t.length)return!1;let n=e.x,i=e.y,r=Number.POSITIVE_INFINITY,s,o,a;for(s=0,o=t.length;s<o;++s){const l=t[s].element;if(l&&l.hasValue()){const u=l.getCenterPoint(),c=au(e,u);c<r&&(r=c,a=l)}}if(a){const l=a.tooltipPosition();n=l.x,i=l.y}return{x:n,y:i}}};function wt(t,e){return e&&(oe(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Ot(t){return(typeof t=="string"||t instanceof String)&&t.indexOf(` `)>-1?t.split(` -`):t}function jb(t,e){const{element:n,datasetIndex:i,index:r}=e,s=t.getDatasetMeta(i).controller,{label:o,value:a}=s.getLabelAndValue(r);return{chart:t,label:o,parsed:s.getParsed(r),raw:t.data.datasets[i].data[r],formattedValue:a,dataset:s.getDataset(),dataIndex:r,datasetIndex:i,element:n}}function uf(t,e){const n=t.chart.ctx,{body:i,footer:r,title:s}=t,{boxWidth:o,boxHeight:a}=e,l=Le(e.bodyFont),u=Le(e.titleFont),c=Le(e.footerFont),h=s.length,d=r.length,f=i.length,m=qe(e.padding);let y=m.height,v=0,p=i.reduce((w,x)=>w+x.before.length+x.lines.length+x.after.length,0);if(p+=t.beforeBody.length+t.afterBody.length,h&&(y+=h*u.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),p){const w=e.displayColors?Math.max(a,l.lineHeight):l.lineHeight;y+=f*w+(p-f)*l.lineHeight+(p-1)*e.bodySpacing}d&&(y+=e.footerMarginTop+d*c.lineHeight+(d-1)*e.footerSpacing);let g=0;const _=function(w){v=Math.max(v,n.measureText(w).width+g)};return n.save(),n.font=u.string,V(t.title,_),n.font=l.string,V(t.beforeBody.concat(t.afterBody),_),g=e.displayColors?o+2+e.boxPadding:0,V(i,w=>{V(w.before,_),V(w.lines,_),V(w.after,_)}),g=0,n.font=c.string,V(t.footer,_),n.restore(),v+=m.width,{width:v,height:y}}function Nb(t,e){const{y:n,height:i}=e;return n<i/2?"top":n>t.height-i/2?"bottom":"center"}function zb(t,e,n,i){const{x:r,width:s}=i,o=n.caretSize+n.caretPadding;if(t==="left"&&r+s+o>e.width||t==="right"&&r-s-o<0)return!0}function Fb(t,e,n,i){const{x:r,width:s}=n,{width:o,chartArea:{left:a,right:l}}=t;let u="center";return i==="center"?u=r<=(a+l)/2?"left":"right":r<=s/2?u="left":r>=o-s/2&&(u="right"),zb(u,t,e,n)&&(u="center"),u}function cf(t,e,n){const i=n.yAlign||e.yAlign||Nb(t,n);return{xAlign:n.xAlign||e.xAlign||Fb(t,e,n,i),yAlign:i}}function $b(t,e){let{x:n,width:i}=t;return e==="right"?n-=i:e==="center"&&(n-=i/2),n}function Ub(t,e,n){let{y:i,height:r}=t;return e==="top"?i+=n:e==="bottom"?i-=r+n:i-=r/2,i}function hf(t,e,n,i){const{caretSize:r,caretPadding:s,cornerRadius:o}=t,{xAlign:a,yAlign:l}=n,u=r+s,{topLeft:c,topRight:h,bottomLeft:d,bottomRight:f}=Or(o);let m=$b(e,a);const y=Ub(e,l,u);return l==="center"?a==="left"?m+=u:a==="right"&&(m-=u):a==="left"?m-=Math.max(c,d)+r:a==="right"&&(m+=Math.max(h,f)+r),{x:it(m,0,i.width-e.width),y:it(y,0,i.height-e.height)}}function Hs(t,e,n){const i=qe(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function df(t){return wt([],Ot(t))}function Bb(t,e,n){return xn(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function ff(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const Vm={beforeTitle:Pt,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex<i)return n[e.dataIndex]}return""},afterTitle:Pt,beforeBody:Pt,beforeLabel:Pt,label(t){if(this&&this.options&&this.options.mode==="dataset")return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const n=t.formattedValue;return J(n)||(e+=n),e},labelColor(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:n.borderColor,backgroundColor:n.backgroundColor,borderWidth:n.borderWidth,borderDash:n.borderDash,borderDashOffset:n.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:n.pointStyle,rotation:n.rotation}},afterLabel:Pt,afterBody:Pt,beforeFooter:Pt,footer:Pt,afterFooter:Pt};function De(t,e,n,i){const r=t[e].call(n,i);return typeof r>"u"?Vm[e].call(n,i):r}class pu extends yn{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,i=this.options.setContext(this.getContext()),r=i.enabled&&n.options.animation&&i.animations,s=new Om(this.chart,r);return r._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=Bb(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:i}=n,r=De(i,"beforeTitle",this,e),s=De(i,"title",this,e),o=De(i,"afterTitle",this,e);let a=[];return a=wt(a,Ot(r)),a=wt(a,Ot(s)),a=wt(a,Ot(o)),a}getBeforeBody(e,n){return df(De(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:i}=n,r=[];return V(e,s=>{const o={before:[],lines:[],after:[]},a=ff(i,s);wt(o.before,Ot(De(a,"beforeLabel",this,s))),wt(o.lines,De(a,"label",this,s)),wt(o.after,Ot(De(a,"afterLabel",this,s))),r.push(o)}),r}getAfterBody(e,n){return df(De(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:i}=n,r=De(i,"beforeFooter",this,e),s=De(i,"footer",this,e),o=De(i,"afterFooter",this,e);let a=[];return a=wt(a,Ot(r)),a=wt(a,Ot(s)),a=wt(a,Ot(o)),a}_createItems(e){const n=this._active,i=this.chart.data,r=[],s=[],o=[];let a=[],l,u;for(l=0,u=n.length;l<u;++l)a.push(jb(this.chart,n[l]));return e.filter&&(a=a.filter((c,h,d)=>e.filter(c,h,d,i))),e.itemSort&&(a=a.sort((c,h)=>e.itemSort(c,h,i))),V(a,c=>{const h=ff(e.callbacks,c);r.push(De(h,"labelColor",this,c)),s.push(De(h,"labelPointStyle",this,c)),o.push(De(h,"labelTextColor",this,c))}),this.labelColors=r,this.labelPointStyles=s,this.labelTextColors=o,this.dataPoints=a,a}update(e,n){const i=this.options.setContext(this.getContext()),r=this._active;let s,o=[];if(!r.length)this.opacity!==0&&(s={opacity:0});else{const a=dr[i.position].call(this,r,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const l=this._size=uf(this,i),u=Object.assign({},a,l),c=cf(this.chart,i,u),h=hf(i,u,c,this.chart);this.xAlign=c.xAlign,this.yAlign=c.yAlign,s={opacity:1,x:h.x,y:h.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=o,this.$context=void 0,s&&this._resolveAnimations().update(this,s),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,i,r){const s=this.getCaretPosition(e,i,r);n.lineTo(s.x1,s.y1),n.lineTo(s.x2,s.y2),n.lineTo(s.x3,s.y3)}getCaretPosition(e,n,i){const{xAlign:r,yAlign:s}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:l,topRight:u,bottomLeft:c,bottomRight:h}=Or(a),{x:d,y:f}=e,{width:m,height:y}=n;let v,p,g,_,w,x;return s==="center"?(w=f+y/2,r==="left"?(v=d,p=v-o,_=w+o,x=w-o):(v=d+m,p=v+o,_=w-o,x=w+o),g=v):(r==="left"?p=d+Math.max(l,c)+o:r==="right"?p=d+m-Math.max(u,h)-o:p=this.caretX,s==="top"?(_=f,w=_-o,v=p-o,g=p+o):(_=f+y,w=_+o,v=p+o,g=p-o),x=_),{x1:v,x2:p,x3:g,y1:_,y2:w,y3:x}}drawTitle(e,n,i){const r=this.title,s=r.length;let o,a,l;if(s){const u=Ja(i.rtl,this.x,this.width);for(e.x=Hs(this,i.titleAlign,i),n.textAlign=u.textAlign(i.titleAlign),n.textBaseline="middle",o=Le(i.titleFont),a=i.titleSpacing,n.fillStyle=i.titleColor,n.font=o.string,l=0;l<s;++l)n.fillText(r[l],u.x(e.x),e.y+o.lineHeight/2),e.y+=o.lineHeight+a,l+1===s&&(e.y+=i.titleMarginBottom-a)}}_drawColorBox(e,n,i,r,s){const o=this.labelColors[i],a=this.labelPointStyles[i],{boxHeight:l,boxWidth:u}=s,c=Le(s.bodyFont),h=Hs(this,"left",s),d=r.x(h),f=l<c.lineHeight?(c.lineHeight-l)/2:0,m=n.y+f;if(s.usePointStyle){const y={radius:Math.min(u,l)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},v=r.leftForLtr(d,u)+u/2,p=m+l/2;e.strokeStyle=s.multiKeyBackground,e.fillStyle=s.multiKeyBackground,uu(e,y,v,p),e.strokeStyle=o.borderColor,e.fillStyle=o.backgroundColor,uu(e,y,v,p)}else{e.lineWidth=U(o.borderWidth)?Math.max(...Object.values(o.borderWidth)):o.borderWidth||1,e.strokeStyle=o.borderColor,e.setLineDash(o.borderDash||[]),e.lineDashOffset=o.borderDashOffset||0;const y=r.leftForLtr(d,u),v=r.leftForLtr(r.xPlus(d,1),u-2),p=Or(o.borderRadius);Object.values(p).some(g=>g!==0)?(e.beginPath(),e.fillStyle=s.multiKeyBackground,cu(e,{x:y,y:m,w:u,h:l,radius:p}),e.fill(),e.stroke(),e.fillStyle=o.backgroundColor,e.beginPath(),cu(e,{x:v,y:m+1,w:u-2,h:l-2,radius:p}),e.fill()):(e.fillStyle=s.multiKeyBackground,e.fillRect(y,m,u,l),e.strokeRect(y,m,u,l),e.fillStyle=o.backgroundColor,e.fillRect(v,m+1,u-2,l-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,n,i){const{body:r}=this,{bodySpacing:s,bodyAlign:o,displayColors:a,boxHeight:l,boxWidth:u,boxPadding:c}=i,h=Le(i.bodyFont);let d=h.lineHeight,f=0;const m=Ja(i.rtl,this.x,this.width),y=function(S){n.fillText(S,m.x(e.x+f),e.y+d/2),e.y+=d+s},v=m.textAlign(o);let p,g,_,w,x,b,k;for(n.textAlign=o,n.textBaseline="middle",n.font=h.string,e.x=Hs(this,v,i),n.fillStyle=i.bodyColor,V(this.beforeBody,y),f=a&&v!=="right"?o==="center"?u/2+c:u+2+c:0,w=0,b=r.length;w<b;++w){for(p=r[w],g=this.labelTextColors[w],n.fillStyle=g,V(p.before,y),_=p.lines,a&&_.length&&(this._drawColorBox(n,e,w,m,i),d=Math.max(h.lineHeight,l)),x=0,k=_.length;x<k;++x)y(_[x]),d=h.lineHeight;V(p.after,y)}f=0,d=h.lineHeight,V(this.afterBody,y),e.y-=s}drawFooter(e,n,i){const r=this.footer,s=r.length;let o,a;if(s){const l=Ja(i.rtl,this.x,this.width);for(e.x=Hs(this,i.footerAlign,i),e.y+=i.footerMarginTop,n.textAlign=l.textAlign(i.footerAlign),n.textBaseline="middle",o=Le(i.footerFont),n.fillStyle=i.footerColor,n.font=o.string,a=0;a<s;++a)n.fillText(r[a],l.x(e.x),e.y+o.lineHeight/2),e.y+=o.lineHeight+i.footerSpacing}}drawBackground(e,n,i,r){const{xAlign:s,yAlign:o}=this,{x:a,y:l}=e,{width:u,height:c}=i,{topLeft:h,topRight:d,bottomLeft:f,bottomRight:m}=Or(r.cornerRadius);n.fillStyle=r.backgroundColor,n.strokeStyle=r.borderColor,n.lineWidth=r.borderWidth,n.beginPath(),n.moveTo(a+h,l),o==="top"&&this.drawCaret(e,n,i,r),n.lineTo(a+u-d,l),n.quadraticCurveTo(a+u,l,a+u,l+d),o==="center"&&s==="right"&&this.drawCaret(e,n,i,r),n.lineTo(a+u,l+c-m),n.quadraticCurveTo(a+u,l+c,a+u-m,l+c),o==="bottom"&&this.drawCaret(e,n,i,r),n.lineTo(a+f,l+c),n.quadraticCurveTo(a,l+c,a,l+c-f),o==="center"&&s==="left"&&this.drawCaret(e,n,i,r),n.lineTo(a,l+h),n.quadraticCurveTo(a,l,a+h,l),n.closePath(),n.fill(),r.borderWidth>0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,i=this.$animations,r=i&&i.x,s=i&&i.y;if(r||s){const o=dr[e.position].call(this,this._active,this._eventPosition);if(!o)return;const a=this._size=uf(this,e),l=Object.assign({},o,this._size),u=cf(n,e,l),c=hf(e,l,u,n);(r._to!==c.x||s._to!==c.y)&&(this.xAlign=u.xAlign,this.yAlign=u.yAlign,this.width=a.width,this.height=a.height,this.caretX=o.x,this.caretY=o.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const r={width:this.width,height:this.height},s={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=qe(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(e.save(),e.globalAlpha=i,this.drawBackground(s,e,r,n),W1(e,n.textDirection),s.y+=o.top,this.drawTitle(s,e,n),this.drawBody(s,e,n),this.drawFooter(s,e,n),K1(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const i=this._active,r=e.map(({datasetIndex:a,index:l})=>{const u=this.chart.getDatasetMeta(a);if(!u)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:u.data[l],index:l}}),s=!Do(i,r),o=this._positionChanged(r,n);(s||o)&&(this._active=r,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const r=this.options,s=this._active||[],o=this._getActiveElements(e,s,n,i),a=this._positionChanged(o,e),l=n||!Do(o,s)||a;return l&&(this._active=o,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),l}_getActiveElements(e,n,i,r){const s=this.options;if(e.type==="mouseout")return[];if(!r)return n.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const o=this.chart.getElementsAtEventForMode(e,s.mode,s,i);return s.reverse&&o.reverse(),o}_positionChanged(e,n){const{caretX:i,caretY:r,options:s}=this,o=dr[s.position].call(this,e,n);return o!==!1&&(i!==o.x||r!==o.y)}}I(pu,"positioners",dr);var Vb={id:"tooltip",_element:pu,positioners:dr,afterInit(t,e,n){n&&(t.tooltip=new pu({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Vm},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const Hb=(t,e,n,i)=>(typeof e=="string"?(n=t.push(e)-1,i.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function Wb(t,e,n,i){const r=t.indexOf(e);if(r===-1)return Hb(t,e,n,i);const s=t.lastIndexOf(e);return r!==s?n:r}const Kb=(t,e)=>t===null?null:it(Math.round(t),0,e);function pf(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}class gu extends Xn{constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const n=this._addedLabels;if(n.length){const i=this.getLabels();for(const{index:r,label:s}of n)i[r]===s&&i.splice(r,1);this._addedLabels=[]}super.init(e)}parse(e,n){if(J(e))return null;const i=this.getLabels();return n=isFinite(n)&&i[n]===e?n:Wb(i,e,W(n,e),this._addedLabels),Kb(n,i.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:i,max:r}=this.getMinMax(!0);this.options.bounds==="ticks"&&(e||(i=0),n||(r=this.getLabels().length-1)),this.min=i,this.max=r}buildTicks(){const e=this.min,n=this.max,i=this.options.offset,r=[];let s=this.getLabels();s=e===0&&n===s.length-1?s:s.slice(e,n+1),this._valueRange=Math.max(s.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let o=e;o<=n;o++)r.push({value:o});return r}getLabelForValue(e){return pf.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return typeof e!="number"&&(e=this.parse(e)),e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}I(gu,"id","category"),I(gu,"defaults",{ticks:{callback:pf}});function Yb(t,e){const n=[],{bounds:r,step:s,min:o,max:a,precision:l,count:u,maxTicks:c,maxDigits:h,includeBounds:d}=t,f=s||1,m=c-1,{min:y,max:v}=e,p=!J(o),g=!J(a),_=!J(u),w=(v-y)/(h+1);let x=wd((v-y)/m/f)*f,b,k,S,M;if(x<1e-14&&!p&&!g)return[{value:y},{value:v}];M=Math.ceil(v/x)-Math.floor(y/x),M>m&&(x=wd(M*x/m/f)*f),J(l)||(b=Math.pow(10,l),x=Math.ceil(x*b)/b),r==="ticks"?(k=Math.floor(y/x)*x,S=Math.ceil(v/x)*x):(k=y,S=v),p&&g&&s&&zx((a-o)/s,x/1e3)?(M=Math.round(Math.min((a-o)/x,c)),x=(a-o)/M,k=o,S=a):_?(k=p?o:k,S=g?a:S,M=u-1,x=(S-k)/M):(M=(S-k)/x,Cr(M,Math.round(M),x/1e3)?M=Math.round(M):M=Math.ceil(M));const O=Math.max(xd(x),xd(k));b=Math.pow(10,J(l)?O:l),k=Math.round(k*b)/b,S=Math.round(S*b)/b;let D=0;for(p&&(d&&k!==o?(n.push({value:o}),k<o&&D++,Cr(Math.round((k+D*x)*b)/b,o,gf(o,w,t))&&D++):k<o&&D++);D<M;++D){const B=Math.round((k+D*x)*b)/b;if(g&&B>a)break;n.push({value:B})}return g&&d&&S!==a?n.length&&Cr(n[n.length-1].value,a,gf(a,w,t))?n[n.length-1].value=a:n.push({value:a}):(!g||S===a)&&n.push({value:S}),n}function gf(t,e,{horizontal:n,minRotation:i}){const r=nn(i),s=(n?Math.sin(r):Math.cos(r))||.001,o=.75*e*(""+t).length;return Math.min(e/s,o)}class Vo extends Xn{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return J(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:r,max:s}=this;const o=l=>r=n?r:l,a=l=>s=i?s:l;if(e){const l=Ii(r),u=Ii(s);l<0&&u<0?a(0):l>0&&u>0&&o(0)}if(r===s){let l=s===0?1:Math.abs(s*.05);a(s+l),e||o(r-l)}this.min=r,this.max=s}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=e,r;return i?(r=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,r>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${r} ticks. Limiting to 1000.`),r=1e3)):(r=this.computeTickLimit(),n=n||11),n&&(r=Math.min(n,r)),r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const r={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},s=this._range||this,o=Yb(r,s);return e.bounds==="ticks"&&fm(o,this,"value"),e.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const e=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const r=(i-n)/Math.max(e.length-1,1)/2;n-=r,i+=r}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(e){return Pc(e,this.chart.options.locale,this.options.ticks.format)}}class mu extends Vo{determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=ve(e)?e:0,this.max=ve(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,i=nn(this.options.ticks.minRotation),r=(e?Math.sin(i):Math.cos(i))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,s.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}I(mu,"id","linear"),I(mu,"defaults",{ticks:{callback:da.formatters.numeric}});const ns=t=>Math.floor(tn(t)),Pn=(t,e)=>Math.pow(10,ns(t)+e);function mf(t){return t/Math.pow(10,ns(t))===1}function yf(t,e,n){const i=Math.pow(10,n),r=Math.floor(t/i);return Math.ceil(e/i)-r}function Gb(t,e){const n=e-t;let i=ns(n);for(;yf(t,e,i)>10;)i++;for(;yf(t,e,i)<10;)i--;return Math.min(i,ns(t))}function qb(t,{min:e,max:n}){e=Ve(t.min,e);const i=[],r=ns(e);let s=Gb(e,n),o=s<0?Math.pow(10,Math.abs(s)):1;const a=Math.pow(10,s),l=r>s?Math.pow(10,r):0,u=Math.round((e-l)*o)/o,c=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((u-c)/Math.pow(10,s)),d=Ve(t.min,Math.round((l+c+h*Math.pow(10,s))*o)/o);for(;d<n;)i.push({value:d,major:mf(d),significand:h}),h>=10?h=h<15?15:20:h++,h>=20&&(s++,h=2,o=s>=0?1:o),d=Math.round((l+c+h*Math.pow(10,s))*o)/o;const f=Ve(t.max,d);return i.push({value:f,major:mf(f),significand:h}),i}class vf extends Xn{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const i=Vo.prototype.parse.apply(this,[e,n]);if(i===0){this._zero=!0;return}return ve(i)&&i>0?i:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=ve(e)?Math.max(0,e):null,this.max=ve(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!ve(this._userMin)&&(this.min=e===Pn(this.min,0)?Pn(this.min,-1):Pn(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let i=this.min,r=this.max;const s=a=>i=e?i:a,o=a=>r=n?r:a;i===r&&(i<=0?(s(1),o(10)):(s(Pn(i,-1)),o(Pn(r,1)))),i<=0&&s(Pn(r,-1)),r<=0&&o(Pn(i,1)),this.min=i,this.max=r}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},i=qb(n,this);return e.bounds==="ticks"&&fm(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(e){return e===void 0?"0":Pc(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=tn(e),this._valueRange=tn(this.max)-tn(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(tn(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}I(vf,"id","logarithmic"),I(vf,"defaults",{ticks:{callback:da.formatters.logarithmic,major:{enabled:!0}}});function yu(t){const e=t.ticks;if(e.display&&t.display){const n=qe(e.backdropPadding);return W(e.font&&e.font.size,ue.font.size)+n.height}return 0}function Qb(t,e,n){return n=oe(n)?n:[n],{w:s1(t,e.string,n),h:n.length*e.lineHeight}}function _f(t,e,n,i,r){return t===i||t===r?{start:e-n/2,end:e+n/2}:t<i||t>r?{start:e-n,end:e}:{start:e,end:e+n}}function Xb(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),i=[],r=[],s=t._pointLabels.length,o=t.options.pointLabels,a=o.centerPointLabels?de/s:0;for(let l=0;l<s;l++){const u=o.setContext(t.getPointLabelContext(l));r[l]=u.padding;const c=t.getPointPosition(l,t.drawingArea+r[l],a),h=Le(u.font),d=Qb(t.ctx,h,t._pointLabels[l]);i[l]=d;const f=dt(t.getIndexAngle(l)+a),m=Math.round(Sc(f)),y=_f(m,c.x,d.w,0,180),v=_f(m,c.y,d.h,90,270);Jb(n,e,f,y,v)}t.setCenterPoint(e.l-n.l,n.r-e.r,e.t-n.t,n.b-e.b),t._pointLabelItems=tS(t,i,r)}function Jb(t,e,n,i,r){const s=Math.abs(Math.sin(n)),o=Math.abs(Math.cos(n));let a=0,l=0;i.start<e.l?(a=(e.l-i.start)/s,t.l=Math.min(t.l,e.l-a)):i.end>e.r&&(a=(i.end-e.r)/s,t.r=Math.max(t.r,e.r+a)),r.start<e.t?(l=(e.t-r.start)/o,t.t=Math.min(t.t,e.t-l)):r.end>e.b&&(l=(r.end-e.b)/o,t.b=Math.max(t.b,e.b+l))}function Zb(t,e,n){const i=t.drawingArea,{extra:r,additionalAngle:s,padding:o,size:a}=n,l=t.getPointPosition(e,i+r+o,s),u=Math.round(Sc(dt(l.angle+Ke))),c=rS(l.y,a.h,u),h=nS(u),d=iS(l.x,a.w,h);return{visible:!0,x:l.x,y:c,textAlign:h,left:d,top:c,right:d+a.w,bottom:c+a.h}}function eS(t,e){if(!e)return!0;const{left:n,top:i,right:r,bottom:s}=t;return!(Dt({x:n,y:i},e)||Dt({x:n,y:s},e)||Dt({x:r,y:i},e)||Dt({x:r,y:s},e))}function tS(t,e,n){const i=[],r=t._pointLabels.length,s=t.options,{centerPointLabels:o,display:a}=s.pointLabels,l={extra:yu(s)/2,additionalAngle:o?de/r:0};let u;for(let c=0;c<r;c++){l.padding=n[c],l.size=e[c];const h=Zb(t,c,l);i.push(h),a==="auto"&&(h.visible=eS(h,u),h.visible&&(u=h))}return i}function nS(t){return t===0||t===180?"center":t<180?"left":"right"}function iS(t,e,n){return n==="right"?t-=e:n==="center"&&(t-=e/2),t}function rS(t,e,n){return n===90||n===270?t-=e/2:(n>270||n<90)&&(t-=e),t}function sS(t,e,n){const{left:i,top:r,right:s,bottom:o}=n,{backdropColor:a}=e;if(!J(a)){const l=Or(e.borderRadius),u=qe(e.backdropPadding);t.fillStyle=a;const c=i-u.left,h=r-u.top,d=s-i+u.width,f=o-r+u.height;Object.values(l).some(m=>m!==0)?(t.beginPath(),cu(t,{x:c,y:h,w:d,h:f,radius:l}),t.fill()):t.fillRect(c,h,d,f)}}function oS(t,e){const{ctx:n,options:{pointLabels:i}}=t;for(let r=e-1;r>=0;r--){const s=t._pointLabelItems[r];if(!s.visible)continue;const o=i.setContext(t.getPointLabelContext(r));sS(n,o,s);const a=Le(o.font),{x:l,y:u,textAlign:c}=s;es(n,t._pointLabels[r],l,u+a.lineHeight/2,a,{color:o.color,textAlign:c,textBaseline:"middle"})}}function Hm(t,e,n,i){const{ctx:r}=t;if(n)r.arc(t.xCenter,t.yCenter,e,0,mt);else{let s=t.getPointPosition(0,e);r.moveTo(s.x,s.y);for(let o=1;o<i;o++)s=t.getPointPosition(o,e),r.lineTo(s.x,s.y)}}function aS(t,e,n,i,r){const s=t.ctx,o=e.circular,{color:a,lineWidth:l}=e;!o&&!i||!a||!l||n<0||(s.save(),s.strokeStyle=a,s.lineWidth=l,s.setLineDash(r.dash),s.lineDashOffset=r.dashOffset,s.beginPath(),Hm(t,n,o,i),s.closePath(),s.stroke(),s.restore())}function lS(t,e,n){return xn(t,{label:n,index:e,type:"pointLabel"})}class Ws extends Vo{constructor(e){super(e),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const e=this._padding=qe(yu(this.options)/2),n=this.width=this.maxWidth-e.width,i=this.height=this.maxHeight-e.height;this.xCenter=Math.floor(this.left+n/2+e.left),this.yCenter=Math.floor(this.top+i/2+e.top),this.drawingArea=Math.floor(Math.min(n,i)/2)}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!1);this.min=ve(e)&&!isNaN(e)?e:0,this.max=ve(n)&&!isNaN(n)?n:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/yu(this.options))}generateTickLabels(e){Vo.prototype.generateTickLabels.call(this,e),this._pointLabels=this.getLabels().map((n,i)=>{const r=re(this.options.pointLabels.callback,[n,i],this);return r||r===0?r:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const e=this.options;e.display&&e.pointLabels.display?Xb(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,i,r){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((i-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,i,r))}getIndexAngle(e){const n=mt/(this._pointLabels.length||1),i=this.options.startAngle||0;return dt(e*n+nn(i))}getDistanceFromCenterForValue(e){if(J(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(J(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e<n.length){const i=n[e];return lS(this.getContext(),e,i)}}getPointPosition(e,n,i=0){const r=this.getIndexAngle(e)-Ke+i;return{x:Math.cos(r)*n+this.xCenter,y:Math.sin(r)*n+this.yCenter,angle:r}}getPointPositionForValue(e,n){return this.getPointPosition(e,this.getDistanceFromCenterForValue(n))}getBasePosition(e){return this.getPointPositionForValue(e||0,this.getBaseValue())}getPointLabelPosition(e){const{left:n,top:i,right:r,bottom:s}=this._pointLabelItems[e];return{left:n,top:i,right:r,bottom:s}}drawBackground(){const{backgroundColor:e,grid:{circular:n}}=this.options;if(e){const i=this.ctx;i.save(),i.beginPath(),Hm(this,this.getDistanceFromCenterForValue(this._endValue),n,this._pointLabels.length),i.closePath(),i.fillStyle=e,i.fill(),i.restore()}}drawGrid(){const e=this.ctx,n=this.options,{angleLines:i,grid:r,border:s}=n,o=this._pointLabels.length;let a,l,u;if(n.pointLabels.display&&oS(this,o),r.display&&this.ticks.forEach((c,h)=>{if(h!==0||h===0&&this.min<0){l=this.getDistanceFromCenterForValue(c.value);const d=this.getContext(h),f=r.setContext(d),m=s.setContext(d);aS(this,f,l,o,m)}}),i.display){for(e.save(),a=o-1;a>=0;a--){const c=i.setContext(this.getPointLabelContext(a)),{color:h,lineWidth:d}=c;!d||!h||(e.lineWidth=d,e.strokeStyle=h,e.setLineDash(c.borderDash),e.lineDashOffset=c.borderDashOffset,l=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),u=this.getPointPosition(a,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(u.x,u.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const r=this.getIndexAngle(0);let s,o;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!n.reverse)return;const u=i.setContext(this.getContext(l)),c=Le(u.font);if(s=this.getDistanceFromCenterForValue(this.ticks[l].value),u.showLabelBackdrop){e.font=c.string,o=e.measureText(a.label).width,e.fillStyle=u.backdropColor;const h=qe(u.backdropPadding);e.fillRect(-o/2-h.left,-s-c.size/2-h.top,o+h.width,c.size+h.height)}es(e,a.label,0,-s,c,{color:u.color,strokeColor:u.textStrokeColor,strokeWidth:u.textStrokeWidth})}),e.restore()}drawTitle(){}}I(Ws,"id","radialLinear"),I(Ws,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:da.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),I(Ws,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),I(Ws,"descriptors",{angleLines:{_fallback:"grid"}});const ga={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Ne=Object.keys(ga);function wf(t,e){return t-e}function xf(t,e){if(J(e))return null;const n=t._adapter,{parser:i,round:r,isoWeekday:s}=t._parseOpts;let o=e;return typeof i=="function"&&(o=i(o)),ve(o)||(o=typeof i=="string"?n.parse(o,i):n.parse(o)),o===null?null:(r&&(o=r==="week"&&(Zr(s)||s===!0)?n.startOf(o,"isoWeek",s):n.startOf(o,r)),+o)}function kf(t,e,n,i){const r=Ne.length;for(let s=Ne.indexOf(t);s<r-1;++s){const o=ga[Ne[s]],a=o.steps?o.steps:Number.MAX_SAFE_INTEGER;if(o.common&&Math.ceil((n-e)/(a*o.size))<=i)return Ne[s]}return Ne[r-1]}function uS(t,e,n,i,r){for(let s=Ne.length-1;s>=Ne.indexOf(n);s--){const o=Ne[s];if(ga[o].common&&t._adapter.diff(r,i,o)>=e-1)return o}return Ne[n?Ne.indexOf(n):0]}function cS(t){for(let e=Ne.indexOf(t)+1,n=Ne.length;e<n;++e)if(ga[Ne[e]].common)return Ne[e]}function bf(t,e,n){if(!n)t[e]=!0;else if(n.length){const{lo:i,hi:r}=Cc(n,e),s=n[i]>=e?n[i]:n[r];t[s]=!0}}function hS(t,e,n,i){const r=t._adapter,s=+r.startOf(e[0].value,i),o=e[e.length-1].value;let a,l;for(a=s;a<=o;a=+r.add(a,1,i))l=n[a],l>=0&&(e[l].major=!0);return e}function Sf(t,e,n){const i=[],r={},s=e.length;let o,a;for(o=0;o<s;++o)a=e[o],r[a]=o,i.push({value:a,major:!1});return s===0||!n?i:hS(t,i,r,n)}class Ho extends Xn{constructor(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,n={}){const i=e.time||(e.time={}),r=this._adapter=new gk._date(e.adapters.date);r.init(n),Sr(i.displayFormats,r.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(e),this._normalized=n.normalized}parse(e,n){return e===void 0?null:xf(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,n=this._adapter,i=e.time.unit||"day";let{min:r,max:s,minDefined:o,maxDefined:a}=this.getUserBounds();function l(u){!o&&!isNaN(u.min)&&(r=Math.min(r,u.min)),!a&&!isNaN(u.max)&&(s=Math.max(s,u.max))}(!o||!a)&&(l(this._getLabelBounds()),(e.bounds!=="ticks"||e.ticks.source!=="labels")&&l(this.getMinMax(!1))),r=ve(r)&&!isNaN(r)?r:+n.startOf(Date.now(),i),s=ve(s)&&!isNaN(s)?s:+n.endOf(Date.now(),i)+1,this.min=Math.min(r,s-1),this.max=Math.max(r+1,s)}_getLabelBounds(){const e=this.getLabelTimestamps();let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return e.length&&(n=e[0],i=e[e.length-1]),{min:n,max:i}}buildTicks(){const e=this.options,n=e.time,i=e.ticks,r=i.source==="labels"?this.getLabelTimestamps():this._generate();e.bounds==="ticks"&&r.length&&(this.min=this._userMin||r[0],this.max=this._userMax||r[r.length-1]);const s=this.min,o=this.max,a=Hx(r,s,o);return this._unit=n.unit||(i.autoSkip?kf(n.minUnit,this.min,this.max,this._getLabelCapacity(s)):uS(this,a.length,n.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:cS(this._unit),this.initOffsets(r),e.reverse&&a.reverse(),Sf(this,a,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(e=>+e.value))}initOffsets(e=[]){let n=0,i=0,r,s;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),e.length===1?n=1-r:n=(this.getDecimalForValue(e[1])-r)/2,s=this.getDecimalForValue(e[e.length-1]),e.length===1?i=s:i=(s-this.getDecimalForValue(e[e.length-2]))/2);const o=e.length<3?.5:.25;n=it(n,0,o),i=it(i,0,o),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const e=this._adapter,n=this.min,i=this.max,r=this.options,s=r.time,o=s.unit||kf(s.minUnit,n,i,this._getLabelCapacity(n)),a=W(r.ticks.stepSize,1),l=o==="week"?s.isoWeekday:!1,u=Zr(l)||l===!0,c={};let h=n,d,f;if(u&&(h=+e.startOf(h,"isoWeek",l)),h=+e.startOf(h,u?"day":o),e.diff(i,n,o)>1e5*a)throw new Error(n+" and "+i+" are too far apart with stepSize of "+a+" "+o);const m=r.ticks.source==="data"&&this.getDataTimestamps();for(d=h,f=0;d<i;d=+e.add(d,a,o),f++)bf(c,d,m);return(d===i||r.bounds==="ticks"||f===1)&&bf(c,d,m),Object.keys(c).sort(wf).map(y=>+y)}getLabelForValue(e){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(e,i.tooltipFormat):n.format(e,i.displayFormats.datetime)}format(e,n){const r=this.options.time.displayFormats,s=this._unit,o=n||r[s];return this._adapter.format(e,o)}_tickFormatFunction(e,n,i,r){const s=this.options,o=s.ticks.callback;if(o)return re(o,[e,n,i],this);const a=s.time.displayFormats,l=this._unit,u=this._majorUnit,c=l&&a[l],h=u&&a[u],d=i[n],f=u&&h&&d&&d.major;return this._adapter.format(e,r||(f?h:c))}generateTickLabels(e){let n,i,r;for(n=0,i=e.length;n<i;++n)r=e[n],r.label=this._tickFormatFunction(r.value,n,e)}getDecimalForValue(e){return e===null?NaN:(e-this.min)/(this.max-this.min)}getPixelForValue(e){const n=this._offsets,i=this.getDecimalForValue(e);return this.getPixelForDecimal((n.start+i)*n.factor)}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return this.min+i*(this.max-this.min)}_getLabelSize(e){const n=this.options.ticks,i=this.ctx.measureText(e).width,r=nn(this.isHorizontal()?n.maxRotation:n.minRotation),s=Math.cos(r),o=Math.sin(r),a=this._resolveTickFontOptions(0).size;return{w:i*s+a*o,h:i*o+a*s}}_getLabelCapacity(e){const n=this.options.time,i=n.displayFormats,r=i[n.unit]||i.millisecond,s=this._tickFormatFunction(e,0,Sf(this,[e],this._majorUnit),r),o=this._getLabelSize(s),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let e=this._cache.data||[],n,i;if(e.length)return e;const r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(n=0,i=r.length;n<i;++n)e=e.concat(r[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(e)}getLabelTimestamps(){const e=this._cache.labels||[];let n,i;if(e.length)return e;const r=this.getLabels();for(n=0,i=r.length;n<i;++n)e.push(xf(this,r[n]));return this._cache.labels=this._normalized?e:this.normalize(e)}normalize(e){return Kx(e.sort(wf))}}I(Ho,"id","time"),I(Ho,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function Ks(t,e,n){let i=0,r=t.length-1,s,o,a,l;n?(e>=t[i].pos&&e<=t[r].pos&&({lo:i,hi:r}=Nn(t,"pos",e)),{pos:s,time:a}=t[i],{pos:o,time:l}=t[r]):(e>=t[i].time&&e<=t[r].time&&({lo:i,hi:r}=Nn(t,"time",e)),{time:s,pos:a}=t[i],{time:o,pos:l}=t[r]);const u=o-s;return u?a+(l-a)*(e-s)/u:a}class Cf extends Ho{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=Ks(n,this.min),this._tableRange=Ks(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:i}=this,r=[],s=[];let o,a,l,u,c;for(o=0,a=e.length;o<a;++o)u=e[o],u>=n&&u<=i&&r.push(u);if(r.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(o=0,a=r.length;o<a;++o)c=r[o+1],l=r[o-1],u=r[o],Math.round((c+l)/2)!==u&&s.push({time:u,pos:o/(a-1)});return s}_generate(){const e=this.min,n=this.max;let i=super.getDataTimestamps();return(!i.includes(e)||!i.length)&&i.splice(0,0,e),(!i.includes(n)||i.length===1)&&i.push(n),i.sort((r,s)=>r-s)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?e=this.normalize(n.concat(i)):e=n.length?n:i,e=this._cache.all=e,e}getDecimalForValue(e){return(Ks(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return Ks(this._table,i*this._tableRange+this._minPos,!0)}}I(Cf,"id","timeseries"),I(Cf,"defaults",Ho.defaults);const Wm="label";function Ef(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function dS(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function Km(t,e){t.labels=e}function Ym(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Wm;const i=[];t.datasets=e.map(r=>{const s=t.datasets.find(o=>o[n]===r[n]);return!s||!r.data||i.includes(s)?{...r}:(i.push(s),Object.assign(s,r),s)})}function fS(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wm;const n={labels:[],datasets:[]};return Km(n,t.labels),Ym(n,t.datasets,e),n}function pS(t,e){const{height:n=150,width:i=300,redraw:r=!1,datasetIdKey:s,type:o,data:a,options:l,plugins:u=[],fallbackContent:c,updateMode:h,...d}=t,f=E.useRef(null),m=E.useRef(),y=()=>{f.current&&(m.current=new pa(f.current,{type:o,data:fS(a,s),options:l&&{...l},plugins:u}),Ef(e,m.current))},v=()=>{Ef(e,null),m.current&&(m.current.destroy(),m.current=null)};return E.useEffect(()=>{!r&&m.current&&l&&dS(m.current,l)},[r,l]),E.useEffect(()=>{!r&&m.current&&Km(m.current.config.data,a.labels)},[r,a.labels]),E.useEffect(()=>{!r&&m.current&&a.datasets&&Ym(m.current.config.data,a.datasets,s)},[r,a.datasets]),E.useEffect(()=>{m.current&&(r?(v(),setTimeout(y)):m.current.update(h))},[r,l,a.labels,a.datasets,h]),E.useEffect(()=>{m.current&&(v(),setTimeout(y))},[o]),E.useEffect(()=>(y(),()=>v()),[]),Ni.createElement("canvas",Object.assign({ref:f,role:"img",height:n,width:i},d),c)}const gS=E.forwardRef(pS);function mS(t,e){return pa.register(e),E.forwardRef((n,i)=>Ni.createElement(gS,Object.assign({},n,{ref:i,type:t})))}const yS=mS("line",so);pa.register(gu,mu,lo,hr,Db,Vb);function Pf(){const t={responsive:!0,plugins:{title:{display:!0,text:"File writes per second"}},scales:{x:{grid:{display:!1}},y:{ticks:{callback:function(i,r,s){return i+"wps"}},grid:{display:!1}}}},e=["January","February","March","April","May","June","July"],n={labels:e,datasets:[{label:"Dataset 1",data:e.map(()=>Math.random()*1e3),borderColor:"rgb(255, 99, 132)",backgroundColor:"rgba(255, 99, 132, 0.5)"},{label:"Dataset 2",data:e.map(()=>Math.random()*1e3),borderColor:"rgb(53, 162, 235)",backgroundColor:"rgba(53, 162, 235, 0.5)"}]};return L.jsx(yS,{data:n,options:t})}function vS(t){const e=fc(),[n,i]=E.useState([]);E.useEffect(()=>{t.session||e("/login")},[t.session]);const r=E.useCallback(async()=>{const{data:s,error:o}=await t.supabase.from("file").select();if(o){console.error(o);return}i(s.map(a=>a))},[t.supabase]);return E.useEffect(()=>{r()},[]),L.jsx(L.Fragment,{children:L.jsxs("div",{className:"flex h-screen",children:[L.jsx(sx,{}),L.jsxs("main",{className:"flex-1 overflow-y-auto",children:[L.jsx("div",{className:"w-3/12",children:L.jsx(Pf,{})}),L.jsx("div",{className:"w-3/12",children:L.jsx(Pf,{})}),L.jsx("div",{children:n.map(s=>L.jsx("div",{children:L.jsxs("p",{className:"underline",children:["file: ",s.absolute_path]})},s.id))})]})]})})}function _S(t={}){const{nonce:e,onScriptLoadSuccess:n,onScriptLoadError:i}=t,[r,s]=E.useState(!1),o=E.useRef(n);o.current=n;const a=E.useRef(i);return a.current=i,E.useEffect(()=>{const l=document.createElement("script");return l.src="https://accounts.google.com/gsi/client",l.async=!0,l.defer=!0,l.nonce=e,l.onload=()=>{var u;s(!0),(u=o.current)===null||u===void 0||u.call(o)},l.onerror=()=>{var u;s(!1),(u=a.current)===null||u===void 0||u.call(a)},document.body.appendChild(l),()=>{document.body.removeChild(l)}},[e]),r}const Gm=E.createContext(null);function wS({clientId:t,nonce:e,onScriptLoadSuccess:n,onScriptLoadError:i,children:r}){const s=_S({nonce:e,onScriptLoadSuccess:n,onScriptLoadError:i}),o=E.useMemo(()=>({clientId:t,scriptLoadedSuccessfully:s}),[t,s]);return Ni.createElement(Gm.Provider,{value:o},r)}function xS(){const t=E.useContext(Gm);if(!t)throw new Error("Google OAuth components must be used within GoogleOAuthProvider");return t}function kS(t){var e;return(e=t==null?void 0:t.clientId)!==null&&e!==void 0?e:t==null?void 0:t.client_id}const bS={large:40,medium:32,small:20};function SS({onSuccess:t,onError:e,useOneTap:n,promptMomentNotification:i,type:r="standard",theme:s="outline",size:o="large",text:a,shape:l,logo_alignment:u,width:c,locale:h,click_listener:d,containerProps:f,...m}){const y=E.useRef(null),{clientId:v,scriptLoadedSuccessfully:p}=xS(),g=E.useRef(t);g.current=t;const _=E.useRef(e);_.current=e;const w=E.useRef(i);return w.current=i,E.useEffect(()=>{var x,b,k,S,M,O,D,B,ce;if(p)return(k=(b=(x=window==null?void 0:window.google)===null||x===void 0?void 0:x.accounts)===null||b===void 0?void 0:b.id)===null||k===void 0||k.initialize({client_id:v,callback:ae=>{var $;if(!(ae!=null&&ae.credential))return($=_.current)===null||$===void 0?void 0:$.call(_);const{credential:K,select_by:me}=ae;g.current({credential:K,clientId:kS(ae),select_by:me})},...m}),(O=(M=(S=window==null?void 0:window.google)===null||S===void 0?void 0:S.accounts)===null||M===void 0?void 0:M.id)===null||O===void 0||O.renderButton(y.current,{type:r,theme:s,size:o,text:a,shape:l,logo_alignment:u,width:c,locale:h,click_listener:d}),n&&((ce=(B=(D=window==null?void 0:window.google)===null||D===void 0?void 0:D.accounts)===null||B===void 0?void 0:B.id)===null||ce===void 0||ce.prompt(w.current)),()=>{var ae,$,K;n&&((K=($=(ae=window==null?void 0:window.google)===null||ae===void 0?void 0:ae.accounts)===null||$===void 0?void 0:$.id)===null||K===void 0||K.cancel())}},[v,p,n,r,s,o,a,l,u,c,h]),Ni.createElement("div",{...f,ref:y,style:{height:bS[o],...f==null?void 0:f.style}})}function CS(t){const e=fc();return E.useEffect(()=>{t.supabase.auth.getSession().then(({data:{session:i}})=>{t.setSession(i),console.log("LOGIN SESSION",i)});const{data:{subscription:n}}=t.supabase.auth.onAuthStateChange((i,r)=>{t.setSession(r),console.log("SESSION CHANGE",r)});return()=>n.unsubscribe()},[t.supabase]),E.useEffect(()=>{t.session&&e("/")},[t.session]),L.jsx(L.Fragment,{children:L.jsx("div",{className:"flex flex-col items-center h-screen w-screen",children:L.jsxs("div",{className:"flex flex-row items-center gap-x-8 m-auto",children:[L.jsx("div",{children:L.jsx("h1",{className:"text-4xl text-bold font-sans antialiased text-blue-700 tracking-wide",children:"fs-tracer"})}),L.jsx("div",{className:"block max-w-sm p-6 bg-white border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-700",children:L.jsxs("div",{className:"mx-7 my-5",children:[L.jsx("h5",{className:"mb-2 text-2xl font-bold font-sans antialiased text-gray-900",children:"Hello!"}),L.jsxs("div",{className:"flex flex-row items-center gap-2",children:[L.jsx("span",{className:"font-normal text-gray-700 dark:text-gray-400",children:"Continue with"}),L.jsx("span",{children:L.jsx(wS,{clientId:"952965459060-nrnrsdoq22mf646vfa72hk410pvdda5q.apps.googleusercontent.com",children:L.jsx(SS,{onSuccess:async n=>{await t.supabase.auth.signInWithIdToken({provider:"google",token:n.credential})},onError:()=>{console.log("Login Failed")},width:7777,size:"large",type:"icon"})})})]})]})})]})})})}function ES(t){const e=fc();return E.useEffect(()=>{(async()=>{await t.supabase.auth.signOut()})(),e("/login")},[t.session]),L.jsx(L.Fragment,{})}const rl=rx("https://slpoocycjgqsuoedhkbn.supabase.co","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNscG9vY3ljamdxc3VvZWRoa2JuIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTUyMDU0MjUsImV4cCI6MjAzMDc4MTQyNX0.xZYRTRN65rlms1Hb96IBAQvw3EGtMzUxlGPP5TVey34");function PS(){const[t,e]=E.useState(null);return L.jsx(L.Fragment,{children:L.jsx(y_,{basename:"/fs-tracer-frontend",children:L.jsxs(p_,{children:[L.jsx(ar,{index:!0,element:L.jsx(vS,{supabase:rl,session:t})}),L.jsx(ar,{path:"/login",element:L.jsx(CS,{supabase:rl,session:t,setSession:e})}),L.jsx(ar,{path:"/logout",element:L.jsx(ES,{supabase:rl,session:t,setSession:e})}),L.jsx(ar,{path:"*",element:L.jsx("p",{children:"notfound"})})]})})})}sl.createRoot(document.getElementById("root")).render(L.jsx(Ni.StrictMode,{children:L.jsx(PS,{})}));export{Jm as g}; +`):t}function jb(t,e){const{element:n,datasetIndex:i,index:r}=e,s=t.getDatasetMeta(i).controller,{label:o,value:a}=s.getLabelAndValue(r);return{chart:t,label:o,parsed:s.getParsed(r),raw:t.data.datasets[i].data[r],formattedValue:a,dataset:s.getDataset(),dataIndex:r,datasetIndex:i,element:n}}function uf(t,e){const n=t.chart.ctx,{body:i,footer:r,title:s}=t,{boxWidth:o,boxHeight:a}=e,l=Le(e.bodyFont),u=Le(e.titleFont),c=Le(e.footerFont),h=s.length,d=r.length,f=i.length,m=qe(e.padding);let y=m.height,v=0,p=i.reduce((w,x)=>w+x.before.length+x.lines.length+x.after.length,0);if(p+=t.beforeBody.length+t.afterBody.length,h&&(y+=h*u.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),p){const w=e.displayColors?Math.max(a,l.lineHeight):l.lineHeight;y+=f*w+(p-f)*l.lineHeight+(p-1)*e.bodySpacing}d&&(y+=e.footerMarginTop+d*c.lineHeight+(d-1)*e.footerSpacing);let g=0;const _=function(w){v=Math.max(v,n.measureText(w).width+g)};return n.save(),n.font=u.string,V(t.title,_),n.font=l.string,V(t.beforeBody.concat(t.afterBody),_),g=e.displayColors?o+2+e.boxPadding:0,V(i,w=>{V(w.before,_),V(w.lines,_),V(w.after,_)}),g=0,n.font=c.string,V(t.footer,_),n.restore(),v+=m.width,{width:v,height:y}}function Nb(t,e){const{y:n,height:i}=e;return n<i/2?"top":n>t.height-i/2?"bottom":"center"}function zb(t,e,n,i){const{x:r,width:s}=i,o=n.caretSize+n.caretPadding;if(t==="left"&&r+s+o>e.width||t==="right"&&r-s-o<0)return!0}function Fb(t,e,n,i){const{x:r,width:s}=n,{width:o,chartArea:{left:a,right:l}}=t;let u="center";return i==="center"?u=r<=(a+l)/2?"left":"right":r<=s/2?u="left":r>=o-s/2&&(u="right"),zb(u,t,e,n)&&(u="center"),u}function cf(t,e,n){const i=n.yAlign||e.yAlign||Nb(t,n);return{xAlign:n.xAlign||e.xAlign||Fb(t,e,n,i),yAlign:i}}function $b(t,e){let{x:n,width:i}=t;return e==="right"?n-=i:e==="center"&&(n-=i/2),n}function Ub(t,e,n){let{y:i,height:r}=t;return e==="top"?i+=n:e==="bottom"?i-=r+n:i-=r/2,i}function hf(t,e,n,i){const{caretSize:r,caretPadding:s,cornerRadius:o}=t,{xAlign:a,yAlign:l}=n,u=r+s,{topLeft:c,topRight:h,bottomLeft:d,bottomRight:f}=Or(o);let m=$b(e,a);const y=Ub(e,l,u);return l==="center"?a==="left"?m+=u:a==="right"&&(m-=u):a==="left"?m-=Math.max(c,d)+r:a==="right"&&(m+=Math.max(h,f)+r),{x:it(m,0,i.width-e.width),y:it(y,0,i.height-e.height)}}function Hs(t,e,n){const i=qe(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function df(t){return wt([],Ot(t))}function Bb(t,e,n){return xn(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function ff(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const Vm={beforeTitle:Pt,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex<i)return n[e.dataIndex]}return""},afterTitle:Pt,beforeBody:Pt,beforeLabel:Pt,label(t){if(this&&this.options&&this.options.mode==="dataset")return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const n=t.formattedValue;return J(n)||(e+=n),e},labelColor(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:n.borderColor,backgroundColor:n.backgroundColor,borderWidth:n.borderWidth,borderDash:n.borderDash,borderDashOffset:n.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:n.pointStyle,rotation:n.rotation}},afterLabel:Pt,afterBody:Pt,beforeFooter:Pt,footer:Pt,afterFooter:Pt};function De(t,e,n,i){const r=t[e].call(n,i);return typeof r>"u"?Vm[e].call(n,i):r}class pu extends yn{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,i=this.options.setContext(this.getContext()),r=i.enabled&&n.options.animation&&i.animations,s=new Om(this.chart,r);return r._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=Bb(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:i}=n,r=De(i,"beforeTitle",this,e),s=De(i,"title",this,e),o=De(i,"afterTitle",this,e);let a=[];return a=wt(a,Ot(r)),a=wt(a,Ot(s)),a=wt(a,Ot(o)),a}getBeforeBody(e,n){return df(De(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:i}=n,r=[];return V(e,s=>{const o={before:[],lines:[],after:[]},a=ff(i,s);wt(o.before,Ot(De(a,"beforeLabel",this,s))),wt(o.lines,De(a,"label",this,s)),wt(o.after,Ot(De(a,"afterLabel",this,s))),r.push(o)}),r}getAfterBody(e,n){return df(De(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:i}=n,r=De(i,"beforeFooter",this,e),s=De(i,"footer",this,e),o=De(i,"afterFooter",this,e);let a=[];return a=wt(a,Ot(r)),a=wt(a,Ot(s)),a=wt(a,Ot(o)),a}_createItems(e){const n=this._active,i=this.chart.data,r=[],s=[],o=[];let a=[],l,u;for(l=0,u=n.length;l<u;++l)a.push(jb(this.chart,n[l]));return e.filter&&(a=a.filter((c,h,d)=>e.filter(c,h,d,i))),e.itemSort&&(a=a.sort((c,h)=>e.itemSort(c,h,i))),V(a,c=>{const h=ff(e.callbacks,c);r.push(De(h,"labelColor",this,c)),s.push(De(h,"labelPointStyle",this,c)),o.push(De(h,"labelTextColor",this,c))}),this.labelColors=r,this.labelPointStyles=s,this.labelTextColors=o,this.dataPoints=a,a}update(e,n){const i=this.options.setContext(this.getContext()),r=this._active;let s,o=[];if(!r.length)this.opacity!==0&&(s={opacity:0});else{const a=dr[i.position].call(this,r,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const l=this._size=uf(this,i),u=Object.assign({},a,l),c=cf(this.chart,i,u),h=hf(i,u,c,this.chart);this.xAlign=c.xAlign,this.yAlign=c.yAlign,s={opacity:1,x:h.x,y:h.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=o,this.$context=void 0,s&&this._resolveAnimations().update(this,s),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,i,r){const s=this.getCaretPosition(e,i,r);n.lineTo(s.x1,s.y1),n.lineTo(s.x2,s.y2),n.lineTo(s.x3,s.y3)}getCaretPosition(e,n,i){const{xAlign:r,yAlign:s}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:l,topRight:u,bottomLeft:c,bottomRight:h}=Or(a),{x:d,y:f}=e,{width:m,height:y}=n;let v,p,g,_,w,x;return s==="center"?(w=f+y/2,r==="left"?(v=d,p=v-o,_=w+o,x=w-o):(v=d+m,p=v+o,_=w-o,x=w+o),g=v):(r==="left"?p=d+Math.max(l,c)+o:r==="right"?p=d+m-Math.max(u,h)-o:p=this.caretX,s==="top"?(_=f,w=_-o,v=p-o,g=p+o):(_=f+y,w=_+o,v=p+o,g=p-o),x=_),{x1:v,x2:p,x3:g,y1:_,y2:w,y3:x}}drawTitle(e,n,i){const r=this.title,s=r.length;let o,a,l;if(s){const u=Ja(i.rtl,this.x,this.width);for(e.x=Hs(this,i.titleAlign,i),n.textAlign=u.textAlign(i.titleAlign),n.textBaseline="middle",o=Le(i.titleFont),a=i.titleSpacing,n.fillStyle=i.titleColor,n.font=o.string,l=0;l<s;++l)n.fillText(r[l],u.x(e.x),e.y+o.lineHeight/2),e.y+=o.lineHeight+a,l+1===s&&(e.y+=i.titleMarginBottom-a)}}_drawColorBox(e,n,i,r,s){const o=this.labelColors[i],a=this.labelPointStyles[i],{boxHeight:l,boxWidth:u}=s,c=Le(s.bodyFont),h=Hs(this,"left",s),d=r.x(h),f=l<c.lineHeight?(c.lineHeight-l)/2:0,m=n.y+f;if(s.usePointStyle){const y={radius:Math.min(u,l)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},v=r.leftForLtr(d,u)+u/2,p=m+l/2;e.strokeStyle=s.multiKeyBackground,e.fillStyle=s.multiKeyBackground,uu(e,y,v,p),e.strokeStyle=o.borderColor,e.fillStyle=o.backgroundColor,uu(e,y,v,p)}else{e.lineWidth=U(o.borderWidth)?Math.max(...Object.values(o.borderWidth)):o.borderWidth||1,e.strokeStyle=o.borderColor,e.setLineDash(o.borderDash||[]),e.lineDashOffset=o.borderDashOffset||0;const y=r.leftForLtr(d,u),v=r.leftForLtr(r.xPlus(d,1),u-2),p=Or(o.borderRadius);Object.values(p).some(g=>g!==0)?(e.beginPath(),e.fillStyle=s.multiKeyBackground,cu(e,{x:y,y:m,w:u,h:l,radius:p}),e.fill(),e.stroke(),e.fillStyle=o.backgroundColor,e.beginPath(),cu(e,{x:v,y:m+1,w:u-2,h:l-2,radius:p}),e.fill()):(e.fillStyle=s.multiKeyBackground,e.fillRect(y,m,u,l),e.strokeRect(y,m,u,l),e.fillStyle=o.backgroundColor,e.fillRect(v,m+1,u-2,l-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,n,i){const{body:r}=this,{bodySpacing:s,bodyAlign:o,displayColors:a,boxHeight:l,boxWidth:u,boxPadding:c}=i,h=Le(i.bodyFont);let d=h.lineHeight,f=0;const m=Ja(i.rtl,this.x,this.width),y=function(S){n.fillText(S,m.x(e.x+f),e.y+d/2),e.y+=d+s},v=m.textAlign(o);let p,g,_,w,x,b,k;for(n.textAlign=o,n.textBaseline="middle",n.font=h.string,e.x=Hs(this,v,i),n.fillStyle=i.bodyColor,V(this.beforeBody,y),f=a&&v!=="right"?o==="center"?u/2+c:u+2+c:0,w=0,b=r.length;w<b;++w){for(p=r[w],g=this.labelTextColors[w],n.fillStyle=g,V(p.before,y),_=p.lines,a&&_.length&&(this._drawColorBox(n,e,w,m,i),d=Math.max(h.lineHeight,l)),x=0,k=_.length;x<k;++x)y(_[x]),d=h.lineHeight;V(p.after,y)}f=0,d=h.lineHeight,V(this.afterBody,y),e.y-=s}drawFooter(e,n,i){const r=this.footer,s=r.length;let o,a;if(s){const l=Ja(i.rtl,this.x,this.width);for(e.x=Hs(this,i.footerAlign,i),e.y+=i.footerMarginTop,n.textAlign=l.textAlign(i.footerAlign),n.textBaseline="middle",o=Le(i.footerFont),n.fillStyle=i.footerColor,n.font=o.string,a=0;a<s;++a)n.fillText(r[a],l.x(e.x),e.y+o.lineHeight/2),e.y+=o.lineHeight+i.footerSpacing}}drawBackground(e,n,i,r){const{xAlign:s,yAlign:o}=this,{x:a,y:l}=e,{width:u,height:c}=i,{topLeft:h,topRight:d,bottomLeft:f,bottomRight:m}=Or(r.cornerRadius);n.fillStyle=r.backgroundColor,n.strokeStyle=r.borderColor,n.lineWidth=r.borderWidth,n.beginPath(),n.moveTo(a+h,l),o==="top"&&this.drawCaret(e,n,i,r),n.lineTo(a+u-d,l),n.quadraticCurveTo(a+u,l,a+u,l+d),o==="center"&&s==="right"&&this.drawCaret(e,n,i,r),n.lineTo(a+u,l+c-m),n.quadraticCurveTo(a+u,l+c,a+u-m,l+c),o==="bottom"&&this.drawCaret(e,n,i,r),n.lineTo(a+f,l+c),n.quadraticCurveTo(a,l+c,a,l+c-f),o==="center"&&s==="left"&&this.drawCaret(e,n,i,r),n.lineTo(a,l+h),n.quadraticCurveTo(a,l,a+h,l),n.closePath(),n.fill(),r.borderWidth>0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,i=this.$animations,r=i&&i.x,s=i&&i.y;if(r||s){const o=dr[e.position].call(this,this._active,this._eventPosition);if(!o)return;const a=this._size=uf(this,e),l=Object.assign({},o,this._size),u=cf(n,e,l),c=hf(e,l,u,n);(r._to!==c.x||s._to!==c.y)&&(this.xAlign=u.xAlign,this.yAlign=u.yAlign,this.width=a.width,this.height=a.height,this.caretX=o.x,this.caretY=o.y,this._resolveAnimations().update(this,c))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const r={width:this.width,height:this.height},s={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=qe(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(e.save(),e.globalAlpha=i,this.drawBackground(s,e,r,n),W1(e,n.textDirection),s.y+=o.top,this.drawTitle(s,e,n),this.drawBody(s,e,n),this.drawFooter(s,e,n),K1(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const i=this._active,r=e.map(({datasetIndex:a,index:l})=>{const u=this.chart.getDatasetMeta(a);if(!u)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:u.data[l],index:l}}),s=!Do(i,r),o=this._positionChanged(r,n);(s||o)&&(this._active=r,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const r=this.options,s=this._active||[],o=this._getActiveElements(e,s,n,i),a=this._positionChanged(o,e),l=n||!Do(o,s)||a;return l&&(this._active=o,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),l}_getActiveElements(e,n,i,r){const s=this.options;if(e.type==="mouseout")return[];if(!r)return n.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const o=this.chart.getElementsAtEventForMode(e,s.mode,s,i);return s.reverse&&o.reverse(),o}_positionChanged(e,n){const{caretX:i,caretY:r,options:s}=this,o=dr[s.position].call(this,e,n);return o!==!1&&(i!==o.x||r!==o.y)}}I(pu,"positioners",dr);var Vb={id:"tooltip",_element:pu,positioners:dr,afterInit(t,e,n){n&&(t.tooltip=new pu({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Vm},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const Hb=(t,e,n,i)=>(typeof e=="string"?(n=t.push(e)-1,i.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function Wb(t,e,n,i){const r=t.indexOf(e);if(r===-1)return Hb(t,e,n,i);const s=t.lastIndexOf(e);return r!==s?n:r}const Kb=(t,e)=>t===null?null:it(Math.round(t),0,e);function pf(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}class gu extends Xn{constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const n=this._addedLabels;if(n.length){const i=this.getLabels();for(const{index:r,label:s}of n)i[r]===s&&i.splice(r,1);this._addedLabels=[]}super.init(e)}parse(e,n){if(J(e))return null;const i=this.getLabels();return n=isFinite(n)&&i[n]===e?n:Wb(i,e,W(n,e),this._addedLabels),Kb(n,i.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:i,max:r}=this.getMinMax(!0);this.options.bounds==="ticks"&&(e||(i=0),n||(r=this.getLabels().length-1)),this.min=i,this.max=r}buildTicks(){const e=this.min,n=this.max,i=this.options.offset,r=[];let s=this.getLabels();s=e===0&&n===s.length-1?s:s.slice(e,n+1),this._valueRange=Math.max(s.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let o=e;o<=n;o++)r.push({value:o});return r}getLabelForValue(e){return pf.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return typeof e!="number"&&(e=this.parse(e)),e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}I(gu,"id","category"),I(gu,"defaults",{ticks:{callback:pf}});function Yb(t,e){const n=[],{bounds:r,step:s,min:o,max:a,precision:l,count:u,maxTicks:c,maxDigits:h,includeBounds:d}=t,f=s||1,m=c-1,{min:y,max:v}=e,p=!J(o),g=!J(a),_=!J(u),w=(v-y)/(h+1);let x=wd((v-y)/m/f)*f,b,k,S,M;if(x<1e-14&&!p&&!g)return[{value:y},{value:v}];M=Math.ceil(v/x)-Math.floor(y/x),M>m&&(x=wd(M*x/m/f)*f),J(l)||(b=Math.pow(10,l),x=Math.ceil(x*b)/b),r==="ticks"?(k=Math.floor(y/x)*x,S=Math.ceil(v/x)*x):(k=y,S=v),p&&g&&s&&zx((a-o)/s,x/1e3)?(M=Math.round(Math.min((a-o)/x,c)),x=(a-o)/M,k=o,S=a):_?(k=p?o:k,S=g?a:S,M=u-1,x=(S-k)/M):(M=(S-k)/x,Cr(M,Math.round(M),x/1e3)?M=Math.round(M):M=Math.ceil(M));const O=Math.max(xd(x),xd(k));b=Math.pow(10,J(l)?O:l),k=Math.round(k*b)/b,S=Math.round(S*b)/b;let D=0;for(p&&(d&&k!==o?(n.push({value:o}),k<o&&D++,Cr(Math.round((k+D*x)*b)/b,o,gf(o,w,t))&&D++):k<o&&D++);D<M;++D){const B=Math.round((k+D*x)*b)/b;if(g&&B>a)break;n.push({value:B})}return g&&d&&S!==a?n.length&&Cr(n[n.length-1].value,a,gf(a,w,t))?n[n.length-1].value=a:n.push({value:a}):(!g||S===a)&&n.push({value:S}),n}function gf(t,e,{horizontal:n,minRotation:i}){const r=nn(i),s=(n?Math.sin(r):Math.cos(r))||.001,o=.75*e*(""+t).length;return Math.min(e/s,o)}class Vo extends Xn{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return J(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:r,max:s}=this;const o=l=>r=n?r:l,a=l=>s=i?s:l;if(e){const l=Ii(r),u=Ii(s);l<0&&u<0?a(0):l>0&&u>0&&o(0)}if(r===s){let l=s===0?1:Math.abs(s*.05);a(s+l),e||o(r-l)}this.min=r,this.max=s}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=e,r;return i?(r=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,r>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${r} ticks. Limiting to 1000.`),r=1e3)):(r=this.computeTickLimit(),n=n||11),n&&(r=Math.min(n,r)),r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const r={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},s=this._range||this,o=Yb(r,s);return e.bounds==="ticks"&&fm(o,this,"value"),e.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const e=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const r=(i-n)/Math.max(e.length-1,1)/2;n-=r,i+=r}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(e){return Pc(e,this.chart.options.locale,this.options.ticks.format)}}class mu extends Vo{determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=ve(e)?e:0,this.max=ve(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,i=nn(this.options.ticks.minRotation),r=(e?Math.sin(i):Math.cos(i))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,s.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}I(mu,"id","linear"),I(mu,"defaults",{ticks:{callback:da.formatters.numeric}});const ns=t=>Math.floor(tn(t)),Pn=(t,e)=>Math.pow(10,ns(t)+e);function mf(t){return t/Math.pow(10,ns(t))===1}function yf(t,e,n){const i=Math.pow(10,n),r=Math.floor(t/i);return Math.ceil(e/i)-r}function Gb(t,e){const n=e-t;let i=ns(n);for(;yf(t,e,i)>10;)i++;for(;yf(t,e,i)<10;)i--;return Math.min(i,ns(t))}function qb(t,{min:e,max:n}){e=Ve(t.min,e);const i=[],r=ns(e);let s=Gb(e,n),o=s<0?Math.pow(10,Math.abs(s)):1;const a=Math.pow(10,s),l=r>s?Math.pow(10,r):0,u=Math.round((e-l)*o)/o,c=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((u-c)/Math.pow(10,s)),d=Ve(t.min,Math.round((l+c+h*Math.pow(10,s))*o)/o);for(;d<n;)i.push({value:d,major:mf(d),significand:h}),h>=10?h=h<15?15:20:h++,h>=20&&(s++,h=2,o=s>=0?1:o),d=Math.round((l+c+h*Math.pow(10,s))*o)/o;const f=Ve(t.max,d);return i.push({value:f,major:mf(f),significand:h}),i}class vf extends Xn{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const i=Vo.prototype.parse.apply(this,[e,n]);if(i===0){this._zero=!0;return}return ve(i)&&i>0?i:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=ve(e)?Math.max(0,e):null,this.max=ve(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!ve(this._userMin)&&(this.min=e===Pn(this.min,0)?Pn(this.min,-1):Pn(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let i=this.min,r=this.max;const s=a=>i=e?i:a,o=a=>r=n?r:a;i===r&&(i<=0?(s(1),o(10)):(s(Pn(i,-1)),o(Pn(r,1)))),i<=0&&s(Pn(r,-1)),r<=0&&o(Pn(i,1)),this.min=i,this.max=r}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},i=qb(n,this);return e.bounds==="ticks"&&fm(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(e){return e===void 0?"0":Pc(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=tn(e),this._valueRange=tn(this.max)-tn(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(tn(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}I(vf,"id","logarithmic"),I(vf,"defaults",{ticks:{callback:da.formatters.logarithmic,major:{enabled:!0}}});function yu(t){const e=t.ticks;if(e.display&&t.display){const n=qe(e.backdropPadding);return W(e.font&&e.font.size,ue.font.size)+n.height}return 0}function Qb(t,e,n){return n=oe(n)?n:[n],{w:s1(t,e.string,n),h:n.length*e.lineHeight}}function _f(t,e,n,i,r){return t===i||t===r?{start:e-n/2,end:e+n/2}:t<i||t>r?{start:e-n,end:e}:{start:e,end:e+n}}function Xb(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),i=[],r=[],s=t._pointLabels.length,o=t.options.pointLabels,a=o.centerPointLabels?de/s:0;for(let l=0;l<s;l++){const u=o.setContext(t.getPointLabelContext(l));r[l]=u.padding;const c=t.getPointPosition(l,t.drawingArea+r[l],a),h=Le(u.font),d=Qb(t.ctx,h,t._pointLabels[l]);i[l]=d;const f=dt(t.getIndexAngle(l)+a),m=Math.round(Sc(f)),y=_f(m,c.x,d.w,0,180),v=_f(m,c.y,d.h,90,270);Jb(n,e,f,y,v)}t.setCenterPoint(e.l-n.l,n.r-e.r,e.t-n.t,n.b-e.b),t._pointLabelItems=tS(t,i,r)}function Jb(t,e,n,i,r){const s=Math.abs(Math.sin(n)),o=Math.abs(Math.cos(n));let a=0,l=0;i.start<e.l?(a=(e.l-i.start)/s,t.l=Math.min(t.l,e.l-a)):i.end>e.r&&(a=(i.end-e.r)/s,t.r=Math.max(t.r,e.r+a)),r.start<e.t?(l=(e.t-r.start)/o,t.t=Math.min(t.t,e.t-l)):r.end>e.b&&(l=(r.end-e.b)/o,t.b=Math.max(t.b,e.b+l))}function Zb(t,e,n){const i=t.drawingArea,{extra:r,additionalAngle:s,padding:o,size:a}=n,l=t.getPointPosition(e,i+r+o,s),u=Math.round(Sc(dt(l.angle+Ke))),c=rS(l.y,a.h,u),h=nS(u),d=iS(l.x,a.w,h);return{visible:!0,x:l.x,y:c,textAlign:h,left:d,top:c,right:d+a.w,bottom:c+a.h}}function eS(t,e){if(!e)return!0;const{left:n,top:i,right:r,bottom:s}=t;return!(Dt({x:n,y:i},e)||Dt({x:n,y:s},e)||Dt({x:r,y:i},e)||Dt({x:r,y:s},e))}function tS(t,e,n){const i=[],r=t._pointLabels.length,s=t.options,{centerPointLabels:o,display:a}=s.pointLabels,l={extra:yu(s)/2,additionalAngle:o?de/r:0};let u;for(let c=0;c<r;c++){l.padding=n[c],l.size=e[c];const h=Zb(t,c,l);i.push(h),a==="auto"&&(h.visible=eS(h,u),h.visible&&(u=h))}return i}function nS(t){return t===0||t===180?"center":t<180?"left":"right"}function iS(t,e,n){return n==="right"?t-=e:n==="center"&&(t-=e/2),t}function rS(t,e,n){return n===90||n===270?t-=e/2:(n>270||n<90)&&(t-=e),t}function sS(t,e,n){const{left:i,top:r,right:s,bottom:o}=n,{backdropColor:a}=e;if(!J(a)){const l=Or(e.borderRadius),u=qe(e.backdropPadding);t.fillStyle=a;const c=i-u.left,h=r-u.top,d=s-i+u.width,f=o-r+u.height;Object.values(l).some(m=>m!==0)?(t.beginPath(),cu(t,{x:c,y:h,w:d,h:f,radius:l}),t.fill()):t.fillRect(c,h,d,f)}}function oS(t,e){const{ctx:n,options:{pointLabels:i}}=t;for(let r=e-1;r>=0;r--){const s=t._pointLabelItems[r];if(!s.visible)continue;const o=i.setContext(t.getPointLabelContext(r));sS(n,o,s);const a=Le(o.font),{x:l,y:u,textAlign:c}=s;es(n,t._pointLabels[r],l,u+a.lineHeight/2,a,{color:o.color,textAlign:c,textBaseline:"middle"})}}function Hm(t,e,n,i){const{ctx:r}=t;if(n)r.arc(t.xCenter,t.yCenter,e,0,mt);else{let s=t.getPointPosition(0,e);r.moveTo(s.x,s.y);for(let o=1;o<i;o++)s=t.getPointPosition(o,e),r.lineTo(s.x,s.y)}}function aS(t,e,n,i,r){const s=t.ctx,o=e.circular,{color:a,lineWidth:l}=e;!o&&!i||!a||!l||n<0||(s.save(),s.strokeStyle=a,s.lineWidth=l,s.setLineDash(r.dash),s.lineDashOffset=r.dashOffset,s.beginPath(),Hm(t,n,o,i),s.closePath(),s.stroke(),s.restore())}function lS(t,e,n){return xn(t,{label:n,index:e,type:"pointLabel"})}class Ws extends Vo{constructor(e){super(e),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const e=this._padding=qe(yu(this.options)/2),n=this.width=this.maxWidth-e.width,i=this.height=this.maxHeight-e.height;this.xCenter=Math.floor(this.left+n/2+e.left),this.yCenter=Math.floor(this.top+i/2+e.top),this.drawingArea=Math.floor(Math.min(n,i)/2)}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!1);this.min=ve(e)&&!isNaN(e)?e:0,this.max=ve(n)&&!isNaN(n)?n:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/yu(this.options))}generateTickLabels(e){Vo.prototype.generateTickLabels.call(this,e),this._pointLabels=this.getLabels().map((n,i)=>{const r=re(this.options.pointLabels.callback,[n,i],this);return r||r===0?r:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const e=this.options;e.display&&e.pointLabels.display?Xb(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,i,r){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((i-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,i,r))}getIndexAngle(e){const n=mt/(this._pointLabels.length||1),i=this.options.startAngle||0;return dt(e*n+nn(i))}getDistanceFromCenterForValue(e){if(J(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(J(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e<n.length){const i=n[e];return lS(this.getContext(),e,i)}}getPointPosition(e,n,i=0){const r=this.getIndexAngle(e)-Ke+i;return{x:Math.cos(r)*n+this.xCenter,y:Math.sin(r)*n+this.yCenter,angle:r}}getPointPositionForValue(e,n){return this.getPointPosition(e,this.getDistanceFromCenterForValue(n))}getBasePosition(e){return this.getPointPositionForValue(e||0,this.getBaseValue())}getPointLabelPosition(e){const{left:n,top:i,right:r,bottom:s}=this._pointLabelItems[e];return{left:n,top:i,right:r,bottom:s}}drawBackground(){const{backgroundColor:e,grid:{circular:n}}=this.options;if(e){const i=this.ctx;i.save(),i.beginPath(),Hm(this,this.getDistanceFromCenterForValue(this._endValue),n,this._pointLabels.length),i.closePath(),i.fillStyle=e,i.fill(),i.restore()}}drawGrid(){const e=this.ctx,n=this.options,{angleLines:i,grid:r,border:s}=n,o=this._pointLabels.length;let a,l,u;if(n.pointLabels.display&&oS(this,o),r.display&&this.ticks.forEach((c,h)=>{if(h!==0||h===0&&this.min<0){l=this.getDistanceFromCenterForValue(c.value);const d=this.getContext(h),f=r.setContext(d),m=s.setContext(d);aS(this,f,l,o,m)}}),i.display){for(e.save(),a=o-1;a>=0;a--){const c=i.setContext(this.getPointLabelContext(a)),{color:h,lineWidth:d}=c;!d||!h||(e.lineWidth=d,e.strokeStyle=h,e.setLineDash(c.borderDash),e.lineDashOffset=c.borderDashOffset,l=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),u=this.getPointPosition(a,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(u.x,u.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const r=this.getIndexAngle(0);let s,o;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!n.reverse)return;const u=i.setContext(this.getContext(l)),c=Le(u.font);if(s=this.getDistanceFromCenterForValue(this.ticks[l].value),u.showLabelBackdrop){e.font=c.string,o=e.measureText(a.label).width,e.fillStyle=u.backdropColor;const h=qe(u.backdropPadding);e.fillRect(-o/2-h.left,-s-c.size/2-h.top,o+h.width,c.size+h.height)}es(e,a.label,0,-s,c,{color:u.color,strokeColor:u.textStrokeColor,strokeWidth:u.textStrokeWidth})}),e.restore()}drawTitle(){}}I(Ws,"id","radialLinear"),I(Ws,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:da.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),I(Ws,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),I(Ws,"descriptors",{angleLines:{_fallback:"grid"}});const ga={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Ne=Object.keys(ga);function wf(t,e){return t-e}function xf(t,e){if(J(e))return null;const n=t._adapter,{parser:i,round:r,isoWeekday:s}=t._parseOpts;let o=e;return typeof i=="function"&&(o=i(o)),ve(o)||(o=typeof i=="string"?n.parse(o,i):n.parse(o)),o===null?null:(r&&(o=r==="week"&&(Zr(s)||s===!0)?n.startOf(o,"isoWeek",s):n.startOf(o,r)),+o)}function kf(t,e,n,i){const r=Ne.length;for(let s=Ne.indexOf(t);s<r-1;++s){const o=ga[Ne[s]],a=o.steps?o.steps:Number.MAX_SAFE_INTEGER;if(o.common&&Math.ceil((n-e)/(a*o.size))<=i)return Ne[s]}return Ne[r-1]}function uS(t,e,n,i,r){for(let s=Ne.length-1;s>=Ne.indexOf(n);s--){const o=Ne[s];if(ga[o].common&&t._adapter.diff(r,i,o)>=e-1)return o}return Ne[n?Ne.indexOf(n):0]}function cS(t){for(let e=Ne.indexOf(t)+1,n=Ne.length;e<n;++e)if(ga[Ne[e]].common)return Ne[e]}function bf(t,e,n){if(!n)t[e]=!0;else if(n.length){const{lo:i,hi:r}=Cc(n,e),s=n[i]>=e?n[i]:n[r];t[s]=!0}}function hS(t,e,n,i){const r=t._adapter,s=+r.startOf(e[0].value,i),o=e[e.length-1].value;let a,l;for(a=s;a<=o;a=+r.add(a,1,i))l=n[a],l>=0&&(e[l].major=!0);return e}function Sf(t,e,n){const i=[],r={},s=e.length;let o,a;for(o=0;o<s;++o)a=e[o],r[a]=o,i.push({value:a,major:!1});return s===0||!n?i:hS(t,i,r,n)}class Ho extends Xn{constructor(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,n={}){const i=e.time||(e.time={}),r=this._adapter=new gk._date(e.adapters.date);r.init(n),Sr(i.displayFormats,r.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(e),this._normalized=n.normalized}parse(e,n){return e===void 0?null:xf(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,n=this._adapter,i=e.time.unit||"day";let{min:r,max:s,minDefined:o,maxDefined:a}=this.getUserBounds();function l(u){!o&&!isNaN(u.min)&&(r=Math.min(r,u.min)),!a&&!isNaN(u.max)&&(s=Math.max(s,u.max))}(!o||!a)&&(l(this._getLabelBounds()),(e.bounds!=="ticks"||e.ticks.source!=="labels")&&l(this.getMinMax(!1))),r=ve(r)&&!isNaN(r)?r:+n.startOf(Date.now(),i),s=ve(s)&&!isNaN(s)?s:+n.endOf(Date.now(),i)+1,this.min=Math.min(r,s-1),this.max=Math.max(r+1,s)}_getLabelBounds(){const e=this.getLabelTimestamps();let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return e.length&&(n=e[0],i=e[e.length-1]),{min:n,max:i}}buildTicks(){const e=this.options,n=e.time,i=e.ticks,r=i.source==="labels"?this.getLabelTimestamps():this._generate();e.bounds==="ticks"&&r.length&&(this.min=this._userMin||r[0],this.max=this._userMax||r[r.length-1]);const s=this.min,o=this.max,a=Hx(r,s,o);return this._unit=n.unit||(i.autoSkip?kf(n.minUnit,this.min,this.max,this._getLabelCapacity(s)):uS(this,a.length,n.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:cS(this._unit),this.initOffsets(r),e.reverse&&a.reverse(),Sf(this,a,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(e=>+e.value))}initOffsets(e=[]){let n=0,i=0,r,s;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),e.length===1?n=1-r:n=(this.getDecimalForValue(e[1])-r)/2,s=this.getDecimalForValue(e[e.length-1]),e.length===1?i=s:i=(s-this.getDecimalForValue(e[e.length-2]))/2);const o=e.length<3?.5:.25;n=it(n,0,o),i=it(i,0,o),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const e=this._adapter,n=this.min,i=this.max,r=this.options,s=r.time,o=s.unit||kf(s.minUnit,n,i,this._getLabelCapacity(n)),a=W(r.ticks.stepSize,1),l=o==="week"?s.isoWeekday:!1,u=Zr(l)||l===!0,c={};let h=n,d,f;if(u&&(h=+e.startOf(h,"isoWeek",l)),h=+e.startOf(h,u?"day":o),e.diff(i,n,o)>1e5*a)throw new Error(n+" and "+i+" are too far apart with stepSize of "+a+" "+o);const m=r.ticks.source==="data"&&this.getDataTimestamps();for(d=h,f=0;d<i;d=+e.add(d,a,o),f++)bf(c,d,m);return(d===i||r.bounds==="ticks"||f===1)&&bf(c,d,m),Object.keys(c).sort(wf).map(y=>+y)}getLabelForValue(e){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(e,i.tooltipFormat):n.format(e,i.displayFormats.datetime)}format(e,n){const r=this.options.time.displayFormats,s=this._unit,o=n||r[s];return this._adapter.format(e,o)}_tickFormatFunction(e,n,i,r){const s=this.options,o=s.ticks.callback;if(o)return re(o,[e,n,i],this);const a=s.time.displayFormats,l=this._unit,u=this._majorUnit,c=l&&a[l],h=u&&a[u],d=i[n],f=u&&h&&d&&d.major;return this._adapter.format(e,r||(f?h:c))}generateTickLabels(e){let n,i,r;for(n=0,i=e.length;n<i;++n)r=e[n],r.label=this._tickFormatFunction(r.value,n,e)}getDecimalForValue(e){return e===null?NaN:(e-this.min)/(this.max-this.min)}getPixelForValue(e){const n=this._offsets,i=this.getDecimalForValue(e);return this.getPixelForDecimal((n.start+i)*n.factor)}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return this.min+i*(this.max-this.min)}_getLabelSize(e){const n=this.options.ticks,i=this.ctx.measureText(e).width,r=nn(this.isHorizontal()?n.maxRotation:n.minRotation),s=Math.cos(r),o=Math.sin(r),a=this._resolveTickFontOptions(0).size;return{w:i*s+a*o,h:i*o+a*s}}_getLabelCapacity(e){const n=this.options.time,i=n.displayFormats,r=i[n.unit]||i.millisecond,s=this._tickFormatFunction(e,0,Sf(this,[e],this._majorUnit),r),o=this._getLabelSize(s),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let e=this._cache.data||[],n,i;if(e.length)return e;const r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(n=0,i=r.length;n<i;++n)e=e.concat(r[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(e)}getLabelTimestamps(){const e=this._cache.labels||[];let n,i;if(e.length)return e;const r=this.getLabels();for(n=0,i=r.length;n<i;++n)e.push(xf(this,r[n]));return this._cache.labels=this._normalized?e:this.normalize(e)}normalize(e){return Kx(e.sort(wf))}}I(Ho,"id","time"),I(Ho,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function Ks(t,e,n){let i=0,r=t.length-1,s,o,a,l;n?(e>=t[i].pos&&e<=t[r].pos&&({lo:i,hi:r}=Nn(t,"pos",e)),{pos:s,time:a}=t[i],{pos:o,time:l}=t[r]):(e>=t[i].time&&e<=t[r].time&&({lo:i,hi:r}=Nn(t,"time",e)),{time:s,pos:a}=t[i],{time:o,pos:l}=t[r]);const u=o-s;return u?a+(l-a)*(e-s)/u:a}class Cf extends Ho{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=Ks(n,this.min),this._tableRange=Ks(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:i}=this,r=[],s=[];let o,a,l,u,c;for(o=0,a=e.length;o<a;++o)u=e[o],u>=n&&u<=i&&r.push(u);if(r.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(o=0,a=r.length;o<a;++o)c=r[o+1],l=r[o-1],u=r[o],Math.round((c+l)/2)!==u&&s.push({time:u,pos:o/(a-1)});return s}_generate(){const e=this.min,n=this.max;let i=super.getDataTimestamps();return(!i.includes(e)||!i.length)&&i.splice(0,0,e),(!i.includes(n)||i.length===1)&&i.push(n),i.sort((r,s)=>r-s)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?e=this.normalize(n.concat(i)):e=n.length?n:i,e=this._cache.all=e,e}getDecimalForValue(e){return(Ks(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return Ks(this._table,i*this._tableRange+this._minPos,!0)}}I(Cf,"id","timeseries"),I(Cf,"defaults",Ho.defaults);const Wm="label";function Ef(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function dS(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function Km(t,e){t.labels=e}function Ym(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Wm;const i=[];t.datasets=e.map(r=>{const s=t.datasets.find(o=>o[n]===r[n]);return!s||!r.data||i.includes(s)?{...r}:(i.push(s),Object.assign(s,r),s)})}function fS(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wm;const n={labels:[],datasets:[]};return Km(n,t.labels),Ym(n,t.datasets,e),n}function pS(t,e){const{height:n=150,width:i=300,redraw:r=!1,datasetIdKey:s,type:o,data:a,options:l,plugins:u=[],fallbackContent:c,updateMode:h,...d}=t,f=E.useRef(null),m=E.useRef(),y=()=>{f.current&&(m.current=new pa(f.current,{type:o,data:fS(a,s),options:l&&{...l},plugins:u}),Ef(e,m.current))},v=()=>{Ef(e,null),m.current&&(m.current.destroy(),m.current=null)};return E.useEffect(()=>{!r&&m.current&&l&&dS(m.current,l)},[r,l]),E.useEffect(()=>{!r&&m.current&&Km(m.current.config.data,a.labels)},[r,a.labels]),E.useEffect(()=>{!r&&m.current&&a.datasets&&Ym(m.current.config.data,a.datasets,s)},[r,a.datasets]),E.useEffect(()=>{m.current&&(r?(v(),setTimeout(y)):m.current.update(h))},[r,l,a.labels,a.datasets,h]),E.useEffect(()=>{m.current&&(v(),setTimeout(y))},[o]),E.useEffect(()=>(y(),()=>v()),[]),Ni.createElement("canvas",Object.assign({ref:f,role:"img",height:n,width:i},d),c)}const gS=E.forwardRef(pS);function mS(t,e){return pa.register(e),E.forwardRef((n,i)=>Ni.createElement(gS,Object.assign({},n,{ref:i,type:t})))}const yS=mS("line",so);pa.register(gu,mu,lo,hr,Db,Vb);function Pf(){const t={responsive:!0,plugins:{title:{display:!0,text:"File writes per second"}},scales:{x:{grid:{display:!1}},y:{ticks:{callback:function(i,r,s){return i+"wps"}},grid:{display:!1}}}},e=["January","February","March","April","May","June","July"],n={labels:e,datasets:[{label:"Dataset 1",data:e.map(()=>Math.random()*1e3),borderColor:"rgb(255, 99, 132)",backgroundColor:"rgba(255, 99, 132, 0.5)"},{label:"Dataset 2",data:e.map(()=>Math.random()*1e3),borderColor:"rgb(53, 162, 235)",backgroundColor:"rgba(53, 162, 235, 0.5)"}]};return L.jsx(yS,{data:n,options:t})}function vS(t){const e=fc(),[n,i]=E.useState([]);E.useEffect(()=>{t.session||e("/login")},[t.session]);const r=E.useCallback(async()=>{const{data:s,error:o}=await t.supabase.from("file").select();if(o){console.error(o);return}i(s.map(a=>a))},[t.supabase]);return E.useEffect(()=>{r()},[]),L.jsx(L.Fragment,{children:L.jsxs("div",{className:"flex h-screen",children:[L.jsx(sx,{}),L.jsxs("main",{className:"flex-1 overflow-y-auto",children:[L.jsx("div",{className:"w-3/12",children:L.jsx(Pf,{})}),L.jsx("div",{className:"w-3/12",children:L.jsx(Pf,{})}),L.jsx("div",{children:n.map(s=>L.jsx("div",{children:L.jsxs("p",{className:"underline",children:["file: ",s.absolute_path]})},s.id))})]})]})})}function _S(t={}){const{nonce:e,onScriptLoadSuccess:n,onScriptLoadError:i}=t,[r,s]=E.useState(!1),o=E.useRef(n);o.current=n;const a=E.useRef(i);return a.current=i,E.useEffect(()=>{const l=document.createElement("script");return l.src="https://accounts.google.com/gsi/client",l.async=!0,l.defer=!0,l.nonce=e,l.onload=()=>{var u;s(!0),(u=o.current)===null||u===void 0||u.call(o)},l.onerror=()=>{var u;s(!1),(u=a.current)===null||u===void 0||u.call(a)},document.body.appendChild(l),()=>{document.body.removeChild(l)}},[e]),r}const Gm=E.createContext(null);function wS({clientId:t,nonce:e,onScriptLoadSuccess:n,onScriptLoadError:i,children:r}){const s=_S({nonce:e,onScriptLoadSuccess:n,onScriptLoadError:i}),o=E.useMemo(()=>({clientId:t,scriptLoadedSuccessfully:s}),[t,s]);return Ni.createElement(Gm.Provider,{value:o},r)}function xS(){const t=E.useContext(Gm);if(!t)throw new Error("Google OAuth components must be used within GoogleOAuthProvider");return t}function kS(t){var e;return(e=t==null?void 0:t.clientId)!==null&&e!==void 0?e:t==null?void 0:t.client_id}const bS={large:40,medium:32,small:20};function SS({onSuccess:t,onError:e,useOneTap:n,promptMomentNotification:i,type:r="standard",theme:s="outline",size:o="large",text:a,shape:l,logo_alignment:u,width:c,locale:h,click_listener:d,containerProps:f,...m}){const y=E.useRef(null),{clientId:v,scriptLoadedSuccessfully:p}=xS(),g=E.useRef(t);g.current=t;const _=E.useRef(e);_.current=e;const w=E.useRef(i);return w.current=i,E.useEffect(()=>{var x,b,k,S,M,O,D,B,ce;if(p)return(k=(b=(x=window==null?void 0:window.google)===null||x===void 0?void 0:x.accounts)===null||b===void 0?void 0:b.id)===null||k===void 0||k.initialize({client_id:v,callback:ae=>{var $;if(!(ae!=null&&ae.credential))return($=_.current)===null||$===void 0?void 0:$.call(_);const{credential:K,select_by:me}=ae;g.current({credential:K,clientId:kS(ae),select_by:me})},...m}),(O=(M=(S=window==null?void 0:window.google)===null||S===void 0?void 0:S.accounts)===null||M===void 0?void 0:M.id)===null||O===void 0||O.renderButton(y.current,{type:r,theme:s,size:o,text:a,shape:l,logo_alignment:u,width:c,locale:h,click_listener:d}),n&&((ce=(B=(D=window==null?void 0:window.google)===null||D===void 0?void 0:D.accounts)===null||B===void 0?void 0:B.id)===null||ce===void 0||ce.prompt(w.current)),()=>{var ae,$,K;n&&((K=($=(ae=window==null?void 0:window.google)===null||ae===void 0?void 0:ae.accounts)===null||$===void 0?void 0:$.id)===null||K===void 0||K.cancel())}},[v,p,n,r,s,o,a,l,u,c,h]),Ni.createElement("div",{...f,ref:y,style:{height:bS[o],...f==null?void 0:f.style}})}function CS(t){const e=fc();return E.useEffect(()=>{t.supabase.auth.getSession().then(({data:{session:i}})=>{t.setSession(i),console.log("LOGIN SESSION",i)});const{data:{subscription:n}}=t.supabase.auth.onAuthStateChange((i,r)=>{t.setSession(r),console.log("SESSION CHANGE",r)});return()=>n.unsubscribe()},[t.supabase]),E.useEffect(()=>{t.session&&e("/")},[t.session]),L.jsx(L.Fragment,{children:L.jsx("div",{className:"flex flex-col items-center h-screen w-screen",children:L.jsxs("div",{className:"flex flex-row items-center gap-x-8 m-auto",children:[L.jsx("div",{children:L.jsx("h1",{className:"text-4xl text-bold font-sans antialiased text-blue-700 tracking-wide",children:"fs-tracer"})}),L.jsx("div",{className:"block max-w-sm p-6 bg-white border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-700",children:L.jsxs("div",{className:"mx-7 my-5",children:[L.jsx("h5",{className:"mb-2 text-2xl font-bold font-sans antialiased text-gray-900",children:"Hello!"}),L.jsxs("div",{className:"flex flex-row items-center gap-2",children:[L.jsx("span",{className:"font-normal text-gray-700 dark:text-gray-400",children:"Continue with"}),L.jsx("span",{children:L.jsx(wS,{clientId:"952965459060-nrnrsdoq22mf646vfa72hk410pvdda5q.apps.googleusercontent.com",children:L.jsx(SS,{onSuccess:async n=>{await t.supabase.auth.signInWithIdToken({provider:"google",token:n.credential})},onError:()=>{console.log("Login Failed")},width:7777,size:"large",type:"icon"})})})]})]})})]})})})}function ES(t){const e=fc();return E.useEffect(()=>{(async()=>{await t.supabase.auth.signOut()})(),e("/login")},[t.session]),L.jsx(L.Fragment,{})}const rl=rx("https://slpoocycjgqsuoedhkbn.supabase.co","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNscG9vY3ljamdxc3VvZWRoa2JuIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTUyMDU0MjUsImV4cCI6MjAzMDc4MTQyNX0.xZYRTRN65rlms1Hb96IBAQvw3EGtMzUxlGPP5TVey34");function PS(){const[t,e]=E.useState(null);return L.jsx(L.Fragment,{children:L.jsx(y_,{basename:"/fs-tracer-frontend",children:L.jsxs(p_,{children:[L.jsx(ar,{index:!0,element:L.jsx(vS,{supabase:rl,session:t})}),L.jsx(ar,{path:"login",element:L.jsx(CS,{supabase:rl,session:t,setSession:e})}),L.jsx(ar,{path:"logout",element:L.jsx(ES,{supabase:rl,session:t,setSession:e})}),L.jsx(ar,{path:"*",element:L.jsx("p",{children:"notfound"})})]})})})}sl.createRoot(document.getElementById("root")).render(L.jsx(Ni.StrictMode,{children:L.jsx(PS,{})}));export{Jm as g}; diff --git a/index.html b/index.html index a0ae774..231e9d3 100644 --- a/index.html +++ b/index.html @@ -32,7 +32,7 @@ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" }(window.location)) </script> <!-- End Single Page Apps for GitHub Pages --> - <script type="module" crossorigin src="./assets/index-DasNLDZn.js"></script> + <script type="module" crossorigin src="./assets/index-CCYnKuN0.js"></script> <link rel="stylesheet" crossorigin href="./assets/index-DvPzh0o3.css"> </head> <body> |