1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,26028,e=>{"use strict";var t=e.i(81014),r=e.i(80663),n=e.i(67301),i=e.i(56916),o=e.i(31466),a=e.i(39359),s=e.i(47601),l=e.i(95087);let c=new Map,u={activated:!1,tokenObservers:[]},h={initialized:!1,enabled:!1};function d(e){return c.get(e)||{...u}}let p="https://content-firebaseappcheck.googleapis.com/v1";class f{constructor(e,t,r,n,i){if(this.operation=e,this.retryPolicy=t,this.getWaitDuration=r,this.lowerBound=n,this.upperBound=i,this.pending=null,this.nextErrorWaitInterval=n,n>i)throw Error("Proactive refresh lower bound greater than upper bound!")}start(){this.nextErrorWaitInterval=this.lowerBound,this.process(!0).catch(()=>{})}stop(){this.pending&&(this.pending.reject("cancelled"),this.pending=null)}isRunning(){return!!this.pending}async process(e){this.stop();try{var t;this.pending=new s.Deferred,this.pending.promise.catch(e=>{}),await (t=this.getNextRun(e),new Promise(e=>{setTimeout(e,t)})),this.pending.resolve(),await this.pending.promise,this.pending=new s.Deferred,this.pending.promise.catch(e=>{}),await this.operation(),this.pending.resolve(),await this.pending.promise,this.process(!0).catch(()=>{})}catch(e){this.retryPolicy(e)?this.process(!1).catch(()=>{}):this.stop()}}getNextRun(e){if(e)return this.nextErrorWaitInterval=this.lowerBound,this.getWaitDuration();{let e=this.nextErrorWaitInterval;return this.nextErrorWaitInterval*=2,this.nextErrorWaitInterval>this.upperBound&&(this.nextErrorWaitInterval=this.upperBound),e}}}let g=new s.ErrorFactory("appCheck","AppCheck",{"already-initialized":"You have already called initializeAppCheck() for FirebaseApp {$appName} with different options. To avoid this error, call initializeAppCheck() with the same options as when it was originally called. This will return the already initialized instance.","use-before-activation":"App Check is being used before initializeAppCheck() is called for FirebaseApp {$appName}. Call initializeAppCheck() before instantiating other Firebase services.","fetch-network-error":"Fetch failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-parse-error":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status-error":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","recaptcha-error":"ReCAPTCHA error.","initial-throttle":"{$httpStatus} error. Attempts allowed again after {$time}",throttled:"Requests throttled due to previous {$httpStatus} error. Attempts allowed again after {$time}"});function k(e=!1){return e?self.grecaptcha?.enterprise:self.grecaptcha}function w(e){if(!d(e).activated)throw g.create("use-before-activation",{appName:e.name})}function m(e){let t=Math.round(e/1e3),r=Math.floor(t/86400),n=Math.floor((t-3600*r*24)/3600),i=Math.floor((t-3600*r*24-3600*n)/60),o="";return r&&(o+=b(r)+"d:"),n&&(o+=b(n)+"h:"),o+=b(i)+"m:"+b(t-3600*r*24-3600*n-60*i)+"s"}function b(e){return 0===e?"00":e>=10?e.toString():"0"+e}async function E({url:e,body:t},r){let n,i,o={"Content-Type":"application/json"},a=r.getImmediate({optional:!0});if(a){let e=await a.getHeartbeatsHeader();e&&(o["X-Firebase-Client"]=e)}let s={method:"POST",body:JSON.stringify(t),headers:o};try{n=await fetch(e,s)}catch(e){throw g.create("fetch-network-error",{originalErrorMessage:e?.message})}if(200!==n.status)throw g.create("fetch-status-error",{httpStatus:n.status});try{i=await n.json()}catch(e){throw g.create("fetch-parse-error",{originalErrorMessage:e?.message})}let l=i.ttl.match(/^([\d.]+)(s)$/);if(!l||!l[2]||isNaN(Number(l[1])))throw g.create("fetch-parse-error",{originalErrorMessage:`ttl field (timeToLive) is not in standard Protobuf Duration format: ${i.ttl}`});let c=1e3*Number(l[1]),u=Date.now();return{token:i.token,expireTimeMillis:u+c,issuedAtTimeMillis:u}}
1function C(e,t){let{projectId:r,appId:n,apiKey:i}=e.options;return{url:`${p}/projects/${r}/apps/${n}:exchangeDebugToken?key=${i}`,body:{debug_token:t}}}let v="firebase-app-check-store",T="debug-token",y=null;function A(){return y||(y=new Promise((e,t)=>{try{let r=indexedDB.open("firebase-app-check-database",1);r.onsuccess=t=>{e(t.target.result)},r.onerror=e=>{t(g.create("storage-open",{originalErrorMessage:e.target.error?.message}))},r.onupgradeneeded=e=>{let t=e.target.result;0===e.oldVersion&&t.createObjectStore(v,{keyPath:"compositeKey"})}}catch(e){t(g.create("storage-open",{originalErrorMessage:e?.message}))}}))}async function P(e,t){let r=(await A()).transaction(v,"readwrite"),n=r.objectStore(v).put({compositeKey:e,value:t});return new Promise((e,t)=>{n.onsuccess=t=>{e()},r.onerror=e=>{t(g.create("storage-set",{originalErrorMessage:e.target.error?.message}))}})}async function _(e){let t=(await A()).transaction(v,"readonly"),r=t.objectStore(v).get(e);return new Promise((e,n)=>{r.onsuccess=t=>{let r=t.target.result;r?e(r.value):e(void 0)},t.onerror=e=>{n(g.create("storage-get",{originalErrorMessage:e.target.error?.message}))}})}function I(e){return`${e.options.appId}-${e.name}`}let S=new l.Logger("@firebase/app-check");async function R(e){if((0,s.isIndexedDBAvailable)()){let t;try{t=await _(I(e))}catch(e){S.warn(`Failed to read token from IndexedDB. Error: ${e}`)}return t}}function x(e,t){if((0,s.isIndexedDBAvailable)())return P(I(e),t).catch(e=>{S.warn(`Failed to write token to IndexedDB. Error: ${e}`)});return Promise.resolve()}async function D(e){let t;try{t=await _(T)}catch(e){}if(t)return t;{let t=crypto.randomUUID(),r=`To use this token for app debugging, register it with your project. 2 3Firebase App Check debug token: ${t} 4 5`,n=e?.options.appId,i=e?.options.projectId;return i&&n?r+=`You can do so in the Firebase Console: 6https://console.firebase.google.com/project/${i}/appcheck/apps?selectedAppId=${n} 7 8Or using the Firebase CLI: 9firebase appcheck:debugtokens:create ${t} --project ${i} --app ${n} 10 11`:r+=`You will need to add it to your app's App Check settings in the Firebase Console for it to work. 12 13`,console.log(r+=`Note: To keep your project secure, please revoke and delete this token using the 14Firebase Console or the CLI (\`firebase appcheck:debugtokens:delete\`) when you finish debugging. 15 16Warning: This debug token is a secret and should not be shared or uploaded to source code. 17 18Debug Token Guide: https://firebase.google.com/docs/app-check/web/debug-provider 19Firebase CLI install instructions: https://firebase.google.com/docs/cli 20`),P(T,t).catch(e=>S.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`)),t}}function $(){return h.enabled}async function N(){if(h.enabled&&h.token)return h.token.promise;throw Error(` 21 Can't get debug token in production mode. 22 `)}let B={error:"UNKNOWN_ERROR"};async function O(e,t=!1,r=!1){let n,i,o=e.app;w(o);let a=d(o),s=a.token;if(s&&!L(s)&&(a.token=void 0,s=void 0),!s){let e=await a.cachedTokenPromise;e&&(L(e)?s=e:await x(o,void 0))}if(!t&&s&&L(s))return{token:s.token};let l=!1;if($())try{let t=await N();a.exchangeTokenPromise||(a.exchangeTokenPromise=E(C(o,t),e.heartbeatServiceProvider).finally(()=>{a.exchangeTokenPromise=void 0}),l=!0);let r=await a.exchangeTokenPromise;return await x(o,r),a.token=r,{token:r.token}}catch(e){return"appCheck/throttled"===e.code||"appCheck/initial-throttle"===e.code?S.warn(e.message):r&&S.error(e),j(e)}try{a.exchangeTokenPromise||(a.exchangeTokenPromise=a.provider.getToken().finally(()=>{a.exchangeTokenPromise=void 0}),l=!0),s=await d(o).exchangeTokenPromise}catch(e){"appCheck/throttled"===e.code||"appCheck/initial-throttle"===e.code?S.warn(e.message):r&&S.error(e),i=e}return s?i?n=L(s)?{token:s.token,internalError:i}:j(i):(n={token:s.token},a.token=s,await x(o,s)):n=j(i),l&&z(o,n),n}async function M(e){let t=e.app;w(t);let{provider:r}=d(t);if($()){let r=C(t,await N());r.body.limited_use=!0;let{token:n}=await E(r,e.heartbeatServiceProvider);return{token:n}}{let{token:e}=await r.getToken(!0);return{token:e}}}function F(e,t,r,n){let{app:i}=e,o=d(i);if(o.tokenObservers=[...o.tokenObservers,{next:r,error:n,type:t}
22],o.token&&L(o.token)){let t=o.token;Promise.resolve().then(()=>{r({token:t.token}),K(e)}).catch(()=>{})}o.cachedTokenPromise.then(()=>K(e))}function H(e,t){let r=d(e),n=r.tokenObservers.filter(e=>e.next!==t);0===n.length&&r.tokenRefresher&&r.tokenRefresher.isRunning()&&r.tokenRefresher.stop(),r.tokenObservers=n}function K(e){let{app:t}=e,r=d(t),n=r.tokenRefresher;n||(r.tokenRefresher=n=function(e){let{app:t}=e;return new f(async()=>{let r;if((r=d(t).token?await O(e,!0):await O(e)).error)throw r.error;if(r.internalError)throw r.internalError},()=>!0,()=>{let e=d(t);if(!e.token)return 0;{let t=e.token.issuedAtTimeMillis+(e.token.expireTimeMillis-e.token.issuedAtTimeMillis)*.5+3e5;return Math.max(0,(t=Math.min(t,e.token.expireTimeMillis-3e5))-Date.now())}},3e4,96e4)}(e)),!n.isRunning()&&r.isTokenAutoRefreshEnabled&&n.start()}function z(e,t){for(let r of d(e).tokenObservers)try{"EXTERNAL"===r.type&&null!=t.error?r.error(t.error):r.next(t)}catch(e){}}function L(e){return e.expireTimeMillis-Date.now()>0}function j(e){return{token:s.base64.encodeString(JSON.stringify(B),!1),error:e}}class U{constructor(e,t){this.app=e,this.heartbeatServiceProvider=t}_delete(){let{tokenObservers:e}=d(this.app);for(let t of e)H(this.app,t.next);return Promise.resolve()}}function W(e,t,r,n,i){r.ready(()=>{var o,a,s,l;let c,u;o=e,a=t,s=r,l=n,c=s.render(l,{sitekey:a,size:"invisible",callback:()=>{d(o).reCAPTCHAState.succeeded=!0},"error-callback":()=>{d(o).reCAPTCHAState.succeeded=!1}}),(u=d(o)).reCAPTCHAState={...u.reCAPTCHAState,widgetId:c},i.resolve(r)})}async function q(e){w(e);let t=d(e).reCAPTCHAState,r=await t.initialized.promise;return new Promise((t,n)=>{let i=d(e).reCAPTCHAState;r.ready(()=>{t(r.execute(i.widgetId,{action:"fire_app_check"}))})})}class X{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(e=!1){let t;var r=this._throttleData;if(r&&Date.now()-r.allowRequestsAfter<=0)throw g.create("throttled",{time:m(r.allowRequestsAfter-Date.now()),httpStatus:r.httpStatus});let n=await q(this._app).catch(e=>{throw g.create("recaptcha-error")});if(!d(this._app).reCAPTCHAState?.succeeded)throw g.create("recaptcha-error");try{let r=function(e,t){let{projectId:r,appId:n,apiKey:i}=e.options;return{url:`${p}/projects/${r}/apps/${n}:exchangeRecaptchaV3Token?key=${i}`,body:{recaptcha_v3_token:t}}}(this._app,n);e&&(r.body.limited_use=!0),t=await E(r,this._heartbeatServiceProvider)}catch(e){if(e.code?.includes("fetch-status-error"))throw this._throttleData=function(e,t){if(404===e||403===e)return{backoffCount:1,allowRequestsAfter:Date.now()+864e5,httpStatus:e};{let r=t?t.backoffCount:0,n=(0,s.calculateBackoffMillis)(r,1e3,2);return{backoffCount:r+1,allowRequestsAfter:Date.now()+n,httpStatus:e}}}(Number(e.customData?.httpStatus),this._throttleData),g.create("initial-throttle",{time:m(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus});throw e}return this._throttleData=null,t}initialize(e){var t,r,n;let i,a,l,c,u,h;this._app=e,this._heartbeatServiceProvider=(0,o._getProvider)(e,"heartbeat");(t=this._siteKey,i=new s.Deferred,d(e).reCAPTCHAState={initialized:i},r=e,c=`fire_app_check_${r.name}`,(u=document.createElement("div")).id=c,u.style.display="none",document.body.appendChild(u),a=c,(l=k(!1))?W(e,t,l,a,i):(n=()=>{let r=k(!1);if(!r)throw Error("no recaptcha");W(e,t,r,a,i)},(h=document.createElement("script")).src="https://www.google.com/recaptcha/api.js",h.onload=n,document.head.appendChild(h)),i.promise).catch(()=>{})}isEqual(e){return e instanceof X&&this._siteKey===e._siteKey}}let G="app-check-internal";(0,o._registerComponent)(new a.Component("app-check",e=>new U(e.getProvider("app").getImmediate(),e.getProvider("heartbeat")),"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,r)=>{e.getProvider(G).initialize()})),(0,o._registerComponent)(new a.Component(G,e=>{var t;return t=e.getProvider("app-check").getImmediate(),{getToken:e=>O(t,e),getLimitedUseToken:()=>M(t),addTokenListener:e=>F(t,"INTERNAL",e),removeTokenListener:e=>H(t.app,e)}},"PUBLIC").setInstantiationMode("EXPLICIT")),(0,o.registerVersion)("@firebase/app-check","0.13.1");var Y=e.i(36082);let J=!1;var V=e.i(1914),Q=e.i(81505),Z=e.i(93817);let ee=(0,i.createContext)(null);
22class et extends Error{}class er extends Error{}let en="1"===t.default.env.NEXT_PUBLIC_E2E_AUTH;function ei(){return"signed-out"===window.localStorage.getItem("e2e-auth-state")}let eo={uid:"e2e-user",email:"[email protected]",role:"client",site_ids:[]};function ea(){try{let e=window.localStorage.getItem("sageobot_e2e_profile");if(!e)return eo;let t=JSON.parse(e);return{uid:"string"==typeof t.uid?t.uid:eo.uid,email:"string"==typeof t.email?t.email:eo.email,role:"admin"===t.role?"admin":"client",site_ids:Array.isArray(t.site_ids)?t.site_ids.filter(e=>"string"==typeof e):[]}}catch{return eo}}function es(e=eo){return{uid:e.uid,email:e.email,getIdToken:async()=>"e2e-token"}}function el(){return"/login"===window.location.pathname}async function ec(e){try{let t=await fetch("/api/me",{headers:{Authorization:`Bearer ${e}`}});if(401===t.status)throw new et("Profile token was rejected");if(403===t.status){let e=await t.json().catch(()=>null);if(e?.reason==="legal_consent_required")throw new er("Legal consent required")}if(!t.ok)return null;return await t.json()}catch(e){if(e instanceof et||e instanceof er)throw e;return null}}async function eu(e,{forceFirstTokenRefresh:t=!1}={}){let r=[0,900,1600];for(let n=0;n<r.length;n+=1){r[n]>0&&await function(e){return new Promise(t=>setTimeout(t,e))}(r[n]);try{let r=await e.getIdToken(t||n>0);return await ec(r)}catch(e){if(e instanceof et&&n<r.length-1)continue;if(e instanceof et)return null;throw e instanceof er,e}}return null}async function eh({forceTokenRefresh:e=!1}={}){let t=(0,V.getFirebaseAuth)().currentUser;if(!t)return null;try{return await eu(t,{forceFirstTokenRefresh:e})}catch(e){if(e instanceof er)throw e;return null}}e.s(["AuthProvider",0,function({children:e}){let[a,l]=(0,i.useState)(null),[p,f]=(0,i.useState)(!0),[k,w]=(0,i.useState)(()=>en&&!ei()?eo:null),m=(0,n.usePostHog)(),b=(0,i.useRef)(null),E=(0,i.useCallback)(async()=>{if(en){let e=ea();return l(es(e)),w(e),e}try{let e=await eh({forceTokenRefresh:!0});return w(e),e}catch(e){if(e instanceof er){if(el())return w(null),null;return await (0,V.signOut)().catch(()=>void 0),l(null),w(null),null}throw console.error("refreshProfile failed:",e),e}},[]);(0,i.useEffect)(()=>{if(!en)return;if(ei()){l(null),w(null),f(!1);return}let e=ea();l(es(e)),w(e),f(!1)},[]),(0,i.useEffect)(()=>{en||function(){if(J)return;let e=t.default.env.NEXT_PUBLIC_APPCHECK_RECAPTCHA_SITE_KEY;if(t.default.env.NEXT_PUBLIC_APPCHECK_DEBUG_TOKEN,!e)return console.warn("App Check: NEXT_PUBLIC_APPCHECK_RECAPTCHA_SITE_KEY is not set; App Check not initialized.");!function(e=(0,o.getApp)(),t){e=(0,s.getModularInstance)(e);let r=(0,o._getProvider)(e,"app-check");if(h.initialized||function(e){let t=(0,s.getGlobal)();if(h.initialized=!0,"string"!=typeof t.FIREBASE_APPCHECK_DEBUG_TOKEN&&!0!==t.FIREBASE_APPCHECK_DEBUG_TOKEN)return;h.enabled=!0;let r=new s.Deferred;h.token=r,"string"==typeof t.FIREBASE_APPCHECK_DEBUG_TOKEN?r.resolve(t.FIREBASE_APPCHECK_DEBUG_TOKEN):r.resolve(D(e))}(e),$()&&N().then(e=>{console.log(`Firebase App Check debug token: ${e}`)}),r.isInitialized()){r.getImmediate();let n=r.getOptions();if(n&&!!n.isTokenAutoRefreshEnabled==!!t.isTokenAutoRefreshEnabled&&n.provider?.isEqual(t.provider))return;throw g.create("already-initialized",{appName:e.name})}let n=r.initialize({options:t});(function(e,t,r=!1){var n;let i=(n={...u},c.set(e,n),c.get(e));i.activated=!0,i.provider=t,i.cachedTokenPromise=R(e).then(t=>(t&&L(t)&&(i.token=t,z(e,{token:t.token})),t)),i.isTokenAutoRefreshEnabled=r&&e.automaticDataCollectionEnabled,!e.automaticDataCollectionEnabled&&r&&S.warn("`isTokenAutoRefreshEnabled` is true but `automaticDataCollectionEnabled` was set to false during `initializeApp()`. This blocks automatic token refresh."),i.provider.initialize(e)})(e,t.provider,t.isTokenAutoRefreshEnabled),d(e).isTokenAutoRefreshEnabled&&F(n,"INTERNAL",()=>{})}((0,Y.getFirebaseApp)(),{provider:new X(e),isTokenAutoRefreshEnabled:!0}),J=!0}()},[]),(0,i.useEffect)(()=>{if(!en)return(0,V.onAuthStateChanged)(async e=>{let t=e?.uid??null;if(t!==b.current&&((0,Z.clearFetchCache)(),b.current=t),e&&f(!0),l(e),e){(0,Q.hasAnalyticsConsent)()&&m?.identify(e.uid,{email:e.email??void 0});try{let t=await eu(e);w(t)}catch(e){if(e instanceof er){if(el()){w(null),f(!1);return}await (0,V.signOut)().catch(()=>void 0),l(null)}w(null)}}else(0,Q.hasAnalyticsConsent)()&&m?.reset(),w(null);f(!1)})},[m]);let C=(0,i.useCallback)(async()=>
22{if(en){l(null),w(null),(0,Z.clearFetchCache)();return}await (0,V.signOut)(),w(null)},[]);return(0,r.jsx)(ee.Provider,{value:{user:a,loading:p,profile:k,refreshProfile:E,signIn:V.signIn,signOut:C,getIdToken:V.getIdToken},children:e})},"useAuth",0,function(){let e=(0,i.useContext)(ee);if(!e)throw Error("useAuth must be used inside AuthProvider");return e}],26028)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.