!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).firebase=t()}(this,function(){"use strict";const t={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"},f=function(e,t){if(!e)throw u(t)},u=function(e){return new Error("Firebase Database ("+t.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)},n=function(t){const n=[];let r=0;for(let i=0;i>6|192:(55296==(64512&e)&&i+1>18|240,n[r++]=e>>12&63|128):n[r++]=e>>12|224,n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n},r={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();var r=e?this.byteToCharMapWebSafe_:this.byteToCharMap_;const i=[];for(let u=0;u>6,t=63&l;c||(t=64,a||(e=64)),i.push(r[s>>2],r[(3&s)<<4|o>>4],r[e],r[t])}return i.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(n(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n>10)),t[r++]=String.fromCharCode(56320+(1023&s))):(i=e[n++],s=e[n++],t[r++]=String.fromCharCode((15&a)<<12|(63&i)<<6|63&s))}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();var n=t?this.charToByteMapWebSafe_:this.charToByteMap_;const r=[];for(let c=0;c>4),64!==a&&(r.push(s<<4&240|a>>2),64!==o&&r.push(a<<6&192|o))}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class l extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}function i(e){var t=n(e);return r.encodeByteArray(t,!0)}const s=function(e){return i(e).replace(/\./g,"")},a=function(e){try{return r.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};function c(e,t){if(!(t instanceof Object))return t;switch(t.constructor){case Date:const n=t;return new Date(n.getTime());case Object:void 0===e&&(e={});break;case Array:e=[];break;default:return t}for(const r in t)t.hasOwnProperty(r)&&"__proto__"!==r&&(e[r]=c(e[r],t[r]));return e}function o(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("Unable to locate global object.")}const e=()=>o().__FIREBASE_DEFAULTS__,h=()=>{if("undefined"!=typeof process&&void 0!==process.env){var e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0}},d=()=>{if("undefined"!=typeof document){let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}var t=e&&a(e[1]);return t&&JSON.parse(t)}},p=()=>{try{return e()||h()||d()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},g=()=>{var e;return null===(e=p())||void 0===e?void 0:e.config};var m,v;class y{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(n){return(e,t)=>{e?this.reject(e):this.resolve(t),"function"==typeof n&&(this.promise.catch(()=>{}),1===n.length?n(e):n(e,t))}}}function _(e,t){if(e.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');var n=t||"demo-project",r=e.iat||0,i=e.sub||e.user_id;if(!i)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");i=Object.assign({iss:`https://securetoken.google.com/${n}`,aud:n,iat:r,exp:r+3600,auth_time:r,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},e);return[s(JSON.stringify({alg:"none",type:"JWT"})),s(JSON.stringify(i)),""].join(".")}function w(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function b(){return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(w())}function I(){var e=null===(e=p())||void 0===e?void 0:e.forceEnvironment;if("node"===e)return!0;if("browser"===e)return!1;try{return"[object process]"===Object.prototype.toString.call(global.process)}catch(e){return!1}}function T(){var e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function E(){return"object"==typeof navigator&&"ReactNative"===navigator.product}function C(){const e=w();return 0<=e.indexOf("MSIE ")||0<=e.indexOf("Trident/")}function k(){return!0===t.NODE_ADMIN}function S(){try{return"object"==typeof indexedDB}catch(e){return!1}}function A(){return new Promise((t,n)=>{try{let e=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),e||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{e=!1},i.onerror=()=>{var e;n((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){n(e)}})}function N(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}class R extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,R.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,D.prototype.create)}}class D{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){var r,n=t[0]||{},i=`${this.service}/${e}`,s=this.errors[e],s=s?(r=n,s.replace(P,(e,t)=>{var n=r[t];return null!=n?String(n):`<${t}?>`})):"Error",s=`${this.serviceName}: ${s} (${i}).`;return new R(i,s,n)}}const P=/\{\$([^}]+)}/g;function x(e){return JSON.parse(e)}function O(e){return JSON.stringify(e)}function M(e){let t={},n={},r={},i="";try{var s=e.split(".");t=x(a(s[0])||""),n=x(a(s[1])||""),i=s[2],r=n.d||{},delete n.d}catch(e){}return{header:t,claims:n,data:r,signature:i}}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]}function U(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function V(e,t,n){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=t.call(n,e[i],i,e));return r}function q(e,t){if(e===t)return 1;const n=Object.keys(e),r=Object.keys(t);for(const a of n){if(!r.includes(a))return;var i=e[a],s=t[a];if(B(i)&&B(s)){if(!q(i,s))return}else if(i!==s)return}for(const o of r)if(!n.includes(o))return;return 1}function B(e){return null!==e&&"object"==typeof e}function j(e){const t=[];for(const[n,r]of Object.entries(e))Array.isArray(r)?r.forEach(e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return t.length?"&"+t.join("&"):""}function z(e){const r={},t=e.replace(/^\?/,"").split("&");return t.forEach(e=>{var t,n;e&&([t,n]=e.split("="),r[decodeURIComponent(t)]=decodeURIComponent(n))}),r}function $(e){var t=e.indexOf("?");if(!t)return"";var n=e.indexOf("#",t);return e.substring(t,0>>31)}let t=this.chain_[0],s=this.chain_[1],a=this.chain_[2],o=this.chain_[3],c=this.chain_[4],l,u;for(let p=0;p<80;p++){u=p<40?p<20?(l=o^s&(a^o),1518500249):(l=s^a^o,1859775393):p<60?(l=s&a|o&(s|a),2400959708):(l=s^a^o,3395469782);var h=(t<<5|t>>>27)+l+c+u+i[p]&4294967295;c=o,o=a,a=4294967295&(s<<30|s>>>2),s=t,t=h}this.chain_[0]=this.chain_[0]+t&4294967295,this.chain_[1]=this.chain_[1]+s&4294967295,this.chain_[2]=this.chain_[2]+a&4294967295,this.chain_[3]=this.chain_[3]+o&4294967295,this.chain_[4]=this.chain_[4]+c&4294967295}update(n,r){if(null!=n){var i=(r=void 0===r?n.length:r)-this.blockSize;let e=0;const s=this.buf_;let t=this.inbuf_;for(;e>e&255,++n;return t}}function W(e,t){const n=new G(e,t);return n.subscribe.bind(n)}class G{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then(()=>{e(this)}).catch(e=>{this.error(e)})}next(t){this.forEachObserver(e=>{e.next(t)})}error(t){this.forEachObserver(e=>{e.error(t)}),this.close(t)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,n){let r;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");r=function(e,t){if("object"!=typeof e||null===e)return!1;for(const n of t)if(n in e&&"function"==typeof e[n])return!0;return!1}(e,["next","error","complete"])?e:{next:e,error:t,complete:n},void 0===r.next&&(r.next=H),void 0===r.error&&(r.error=H),void 0===r.complete&&(r.complete=H);var i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch(e){}}),this.observers.push(r),i}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],--this.observerCount,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(t){if(!this.finalized)for(let e=0;e{if(void 0!==this.observers&&void 0!==this.observers[e])try{t(this.observers[e])}catch(e){"undefined"!=typeof console&&console.error&&console.error(e)}})}close(e){this.finalized||(this.finalized=!0,void 0!==e&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}}function H(){}function Q(e,t,n,r){let i;if(r{const t=16*Math.random()|0,n="x"===e?t:3&t|8;return n.toString(16)})}const ee=function(e){let t=0;for(let r=0;r"INTERNAL"in e).map(e=>e.INTERNAL.delete()),...e.filter(e=>"_delete"in e).map(e=>e._delete())])}isComponentSet(){return null!=this.component}isInitialized(e=ce){return this.instances.has(e)}getOptions(e=ce){return this.instancesOptions.get(e)||{}}initialize(e={}){var{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);var r,i,s=this.getOrInitializeService({instanceIdentifier:n,options:t});for([r,i]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(r)&&i.resolve(s);return s}onInit(e,t){var n=this.normalizeInstanceIdentifier(t);const r=null!==(i=this.onInitCallbacks.get(n))&&void 0!==i?i:new Set;r.add(e),this.onInitCallbacks.set(n,r);var i=this.instances.get(n);return i&&e(i,n),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){var n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e)===ce?void 0:r,options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=ce){return!this.component||this.component.multipleInstances?e:ce}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class ue{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){const t=this.getProvider(e.name);t.isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);var t=new le(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const he=[];(Hn=m=m||{})[Hn.DEBUG=0]="DEBUG",Hn[Hn.VERBOSE=1]="VERBOSE",Hn[Hn.INFO=2]="INFO",Hn[Hn.WARN=3]="WARN",Hn[Hn.ERROR=4]="ERROR",Hn[Hn.SILENT=5]="SILENT";const de={debug:m.DEBUG,verbose:m.VERBOSE,info:m.INFO,warn:m.WARN,error:m.ERROR,silent:m.SILENT},pe=m.INFO,fe={[m.DEBUG]:"log",[m.VERBOSE]:"log",[m.INFO]:"info",[m.WARN]:"warn",[m.ERROR]:"error"},ge=(e,t,...n)=>{if(!(te.some(e=>t instanceof e);let ye,_e;const we=new WeakMap,be=new WeakMap,Ie=new WeakMap,Te=new WeakMap,Ee=new WeakMap;let Ce={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return be.get(e);if("objectStoreNames"===t)return e.objectStoreNames||Ie.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Ae(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function ke(r){return r!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(_e=_e||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(r)?function(...e){return r.apply(Ne(this),e),Ae(we.get(this))}:function(...e){return Ae(r.apply(Ne(this),e))}:function(e,...t){var n=r.call(Ne(this),e,...t);return Ie.set(n,e.sort?e.sort():[e]),Ae(n)}}function Se(e){return"function"==typeof e?ke(e):(e instanceof IDBTransaction&&(s=e,be.has(s)||(t=new Promise((e,t)=>{const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",i),s.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{t(s.error||new DOMException("AbortError","AbortError")),n()};s.addEventListener("complete",r),s.addEventListener("error",i),s.addEventListener("abort",i)}),be.set(s,t))),ve(e,ye=ye||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,Ce):e);var s,t}function Ae(e){if(e instanceof IDBRequest)return function(s){const e=new Promise((e,t)=>{const n=()=>{s.removeEventListener("success",r),s.removeEventListener("error",i)},r=()=>{e(Ae(s.result)),n()},i=()=>{t(s.error),n()};s.addEventListener("success",r),s.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&we.set(e,s)}).catch(()=>{}),Ee.set(e,s),e}(e);if(Te.has(e))return Te.get(e);var t=Se(e);return t!==e&&(Te.set(e,t),Ee.set(t,e)),t}const Ne=e=>Ee.get(e);function Re(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const a=indexedDB.open(e,t),o=Ae(a);return r&&a.addEventListener("upgradeneeded",e=>{r(Ae(a.result),e.oldVersion,e.newVersion,Ae(a.transaction),e)}),n&&a.addEventListener("blocked",e=>n(e.oldVersion,e.newVersion,e)),o.then(e=>{s&&e.addEventListener("close",()=>s()),i&&e.addEventListener("versionchange",e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),o}function De(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",e=>t(e.oldVersion,e)),Ae(n).then(()=>{})}const Pe=["get","getKey","getAll","getAllKeys","count"],xe=["put","add","delete","clear"],Oe=new Map;function Me(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(Oe.get(t))return Oe.get(t);const i=t.replace(/FromIndex$/,""),s=t!==i,a=xe.includes(i);if(i in(s?IDBIndex:IDBObjectStore).prototype&&(a||Pe.includes(i))){var n=async function(e,...t){var n=this.transaction(e,a?"readwrite":"readonly");let r=n.store;return s&&(r=r.index(t.shift())),(await Promise.all([r[i](...t),a&&n.done]))[0]};return Oe.set(t,n),n}}}Ce={...v=Ce,get:(e,t,n)=>Me(e,t)||v.get(e,t,n),has:(e,t)=>!!Me(e,t)||v.has(e,t)};class Le{constructor(e){this.container=e}getPlatformInfoString(){const e=this.container.getProviders();return e.map(e=>{if("VERSION"!==(null==(t=e.getComponent())?void 0:t.type))return null;var t,t=e.getImmediate();return`${t.library}/${t.version}`}).filter(e=>e).join(" ")}}const Fe="@firebase/app",Ue=new me("@firebase/app");var Ve;const qe="[DEFAULT]",Be={"@firebase/app":"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","fire-js":"fire-js",firebase:"fire-js-all"},je=new Map,ze=new Map;function $e(t,n){try{t.container.addComponent(n)}catch(e){Ue.debug(`Component ${n.name} failed to register with FirebaseApp ${t.name}`,e)}}function Ke(e,t){e.container.addOrOverwriteComponent(t)}function We(e){var t=e.name;if(ze.has(t))return Ue.debug(`There were multiple attempts to register component ${t}.`),!1;ze.set(t,e);for(const n of je.values())$e(n,e);return!0}function Ge(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const He=new D("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."});class Qe{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new oe("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw He.create("app-deleted",{appName:this._name})}}const Ye="9.23.0";function Je(e,t={}){let n=e;if("object"!=typeof t){const i=t;t={name:i}}var r=Object.assign({name:qe,automaticDataCollectionEnabled:!1},t);const i=r.name;if("string"!=typeof i||!i)throw He.create("bad-app-name",{appName:String(i)});if(n=n||g(),!n)throw He.create("no-options");var s=je.get(i);if(s){if(q(n,s.options)&&q(r,s.config))return s;throw He.create("duplicate-app",{appName:i})}const a=new ue(i);for(const o of ze.values())a.addComponent(o);r=new Qe(n,r,a);return je.set(i,r),r}function Xe(e=qe){var t=je.get(e);if(!t&&e===qe&&g())return Je();if(!t)throw He.create("no-app",{appName:e});return t}async function Ze(e){var t=e.name;je.has(t)&&(je.delete(t),await Promise.all(e.container.getProviders().map(e=>e.delete())),e.isDeleted=!0)}function et(e,t,n){let r=null!==(s=Be[e])&&void 0!==s?s:e;n&&(r+=`-${n}`);var i=r.match(/\s|\//),s=t.match(/\s|\//);if(i||s){const a=[`Unable to register library "${r}" with version "${t}":`];return i&&a.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&s&&a.push("and"),s&&a.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void Ue.warn(a.join(" "))}We(new oe(`${r}-version`,()=>({library:r,version:t}),"VERSION"))}function tt(e,t){if(null!==e&&"function"!=typeof e)throw He.create("invalid-log-argument");!function(s,e){for(const t of he){let i=null;e&&e.level&&(i=de[e.level]),t.userLogHandler=null===s?null:(e,t,...n)=>{var r=n.map(e=>{if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return e.toString();if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch(e){return null}}).filter(e=>e).join(" ");t>=(null!==i&&void 0!==i?i:e.logLevel)&&s({level:m[t].toLowerCase(),message:r,args:n,type:e.name})}}}(e,t)}function nt(e){var t;t=e,he.forEach(e=>{e.setLogLevel(t)})}const rt="firebase-heartbeat-database",it=1,st="firebase-heartbeat-store";let at=null;function ot(){return at=at||Re(rt,it,{upgrade:(e,t)=>{0===t&&e.createObjectStore(st)}}).catch(e=>{throw He.create("idb-open",{originalErrorMessage:e.message})}),at}async function ct(e,t){try{const r=await ot(),i=r.transaction(st,"readwrite"),s=i.objectStore(st);await s.put(t,lt(e)),await i.done}catch(e){var n;e instanceof R?Ue.warn(e.message):(n=He.create("idb-set",{originalErrorMessage:null==e?void 0:e.message}),Ue.warn(n.message))}}function lt(e){return`${e.name}!${e.options.appId}`}class ut{constructor(e){this.container=e,this._heartbeatsCache=null;var t=this.container.getProvider("app").getImmediate();this._storage=new dt(t),this._heartbeatsCachePromise=this._storage.read().then(e=>this._heartbeatsCache=e)}async triggerHeartbeat(){const e=this.container.getProvider("platform-logger").getImmediate();var t=e.getPlatformInfoString();const n=ht();if(null===this._heartbeatsCache&&(this._heartbeatsCache=await this._heartbeatsCachePromise),this._heartbeatsCache.lastSentHeartbeatDate!==n&&!this._heartbeatsCache.heartbeats.some(e=>e.date===n))return this._heartbeatsCache.heartbeats.push({date:n,agent:t}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(e=>{var t=new Date(e.date).valueOf();return Date.now()-t<=2592e6}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null===this._heartbeatsCache||0===this._heartbeatsCache.heartbeats.length)return"";var e=ht(),{heartbeatsToSend:t,unsentEntries:n}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const s=n.find(e=>e.agent===i.agent);if(s){if(s.dates.push(i.date),pt(n)>t){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),pt(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),t=s(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,0!0).catch(()=>!1)}async read(){return await this._canUseIndexedDBPromise&&await async function(e){try{const n=await ot();return await n.transaction(st).objectStore(st).get(lt(e))}catch(e){var t;e instanceof R?Ue.warn(e.message):(t=He.create("idb-get",{originalErrorMessage:null==e?void 0:e.message}),Ue.warn(t.message))}}(this.app)||{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return ct(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return ct(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function pt(e){return s(JSON.stringify({version:2,heartbeats:e})).length}Ve="",We(new oe("platform-logger",e=>new Le(e),"PRIVATE")),We(new oe("heartbeat",e=>new ut(e),"PRIVATE")),et(Fe,"0.9.13",Ve),et(Fe,"0.9.13","esm2017"),et("fire-js","");var ft=Object.freeze({__proto__:null,SDK_VERSION:Ye,_DEFAULT_ENTRY_NAME:qe,_addComponent:$e,_addOrOverwriteComponent:Ke,_apps:je,_clearComponents:function(){ze.clear()},_components:ze,_getProvider:Ge,_registerComponent:We,_removeServiceInstance:function(e,t,n=qe){Ge(e,t).clearInstance(n)},deleteApp:Ze,getApp:Xe,getApps:function(){return Array.from(je.values())},initializeApp:Je,onLog:tt,registerVersion:et,setLogLevel:nt,FirebaseError:R});class gt{constructor(e,t){this._delegate=e,this.firebase=t,$e(e,new oe("app-compat",()=>this,"PUBLIC")),this.container=e.container}get automaticDataCollectionEnabled(){return this._delegate.automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this._delegate.automaticDataCollectionEnabled=e}get name(){return this._delegate.name}get options(){return this._delegate.options}delete(){return new Promise(e=>{this._delegate.checkDestroyed(),e()}).then(()=>(this.firebase.INTERNAL.removeApp(this.name),Ze(this._delegate)))}_getService(e,t=qe){var n;this._delegate.checkDestroyed();const r=this._delegate.container.getProvider(e);return r.isInitialized()||"EXPLICIT"!==(null===(n=r.getComponent())||void 0===n?void 0:n.instantiationMode)||r.initialize(),r.getImmediate({identifier:t})}_removeServiceInstance(e,t=qe){this._delegate.container.getProvider(e).clearInstance(t)}_addComponent(e){$e(this._delegate,e)}_addOrOverwriteComponent(e){Ke(this._delegate,e)}toJSON(){return{name:this.name,automaticDataCollectionEnabled:this.automaticDataCollectionEnabled,options:this.options}}}const mt=new D("app-compat","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance."});function vt(i){const s={},a={__esModule:!0,initializeApp:function(e,t={}){var n=Je(e,t);if(L(s,n.name))return s[n.name];var r=new i(n,a);return s[n.name]=r},app:o,registerVersion:et,setLogLevel:nt,onLog:tt,apps:null,SDK_VERSION:Ye,INTERNAL:{registerComponent:function(n){const r=n.name,t=r.replace("-compat","");{var e;We(n)&&"PUBLIC"===n.type&&(e=(e=o())=>{if("function"!=typeof e[t])throw mt.create("invalid-app-argument",{appName:r});return e[t]()},void 0!==n.serviceProps&&c(e,n.serviceProps),a[t]=e,i.prototype[t]=function(...e){const t=this._getService.bind(this,r);return t.apply(this,n.multipleInstances?e:[])})}return"PUBLIC"===n.type?a[t]:null},removeApp:function(e){delete s[e]},useAsService:function(e,t){if("serverAuth"===t)return null;var n=t;return n},modularAPIs:ft}};function o(e){if(e=e||qe,!L(s,e))throw mt.create("no-app",{appName:e});return s[e]}return a.default=a,Object.defineProperty(a,"apps",{get:function(){return Object.keys(s).map(e=>s[e])}}),o.App=i,a}var yt=function e(){const t=vt(gt);return t.INTERNAL=Object.assign(Object.assign({},t.INTERNAL),{createFirebaseNamespace:e,extendNamespace:function(e){c(t,e)},createSubscribe:W,ErrorFactory:D,deepExtend:c}),t}();const _t=new me("@firebase/app-compat");if("object"==typeof self&&self.self===self&&void 0!==self.firebase){_t.warn(` Warning: Firebase is already defined in the global scope. Please make sure Firebase library is only loaded once. `);const Q1=self.firebase.SDK_VERSION;Q1&&0<=Q1.indexOf("LITE")&&_t.warn(` Warning: You are trying to load Firebase while using Firebase Performance standalone script. You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code. `)}const wt=yt;et("@firebase/app-compat","0.2.13",void 0);wt.registerVersion("firebase","9.23.0","app-compat");var bt="@firebase/installations",It="0.6.4";const Tt=1e4,Et="w:0.6.4",Ct="FIS_v2",kt="https://firebaseinstallations.googleapis.com/v1",St=36e5;const At=new D("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Nt(e){return e instanceof R&&e.code.includes("request-failed")}function Rt({projectId:e}){return`${kt}/projects/${e}/installations`}function Dt(e){return{token:e.token,requestStatus:2,expiresIn:(e=e.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()}}async function Pt(e,t){var n=(await t.json()).error;return At.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function xt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function Ot(e,{refreshToken:t}){const n=xt(e);return n.append("Authorization",(t=t,`${Ct} ${t}`)),n}async function Mt(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function Lt(t){return new Promise(e=>{setTimeout(e,t)})}const Ft=/^[cdef][\w-]{21}$/,Ut="";function Vt(){try{const t=new Uint8Array(17),n=self.crypto||self.msCrypto;n.getRandomValues(t),t[0]=112+t[0]%16;var e=function(e){const t=function(e){const t=btoa(String.fromCharCode(...e));return t.replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(t);return Ft.test(e)?e:Ut}catch(e){return Ut}}function qt(e){return`${e.appName}!${e.appId}`}const Bt=new Map;function jt(e,t){var n=qt(e);zt(n,t),function(e,t){const n=function(){!$t&&"BroadcastChannel"in self&&($t=new BroadcastChannel("[Firebase] FID Change"),$t.onmessage=e=>{zt(e.data.key,e.data.fid)});return $t}();n&&n.postMessage({key:e,fid:t});0===Bt.size&&$t&&($t.close(),$t=null)}(n,t)}function zt(e,t){var n=Bt.get(e);if(n)for(const r of n)r(t)}let $t=null;const Kt="firebase-installations-store";let Wt=null;function Gt(){return Wt=Wt||Re("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Kt)}}),Wt}async function Ht(e,t){var n=qt(e);const r=await Gt(),i=r.transaction(Kt,"readwrite"),s=i.objectStore(Kt);var a=await s.get(n);return await s.put(t,n),await i.done,a&&a.fid===t.fid||jt(e,t.fid),t}async function Qt(e){var t=qt(e);const n=await Gt(),r=n.transaction(Kt,"readwrite");await r.objectStore(Kt).delete(t),await r.done}async function Yt(e,t){var n=qt(e);const r=await Gt(),i=r.transaction(Kt,"readwrite"),s=i.objectStore(Kt);var a=await s.get(n),o=t(a);return void 0===o?await s.delete(n):await s.put(o,n),await i.done,!o||a&&a.fid===o.fid||jt(e,o.fid),o}async function Jt(n){let r;var e=await Yt(n.appConfig,e=>{var t=Zt(e||{fid:Vt(),registrationStatus:0}),t=function(e,t){{if(0!==t.registrationStatus)return 1===t.registrationStatus?{installationEntry:t,registrationPromise:async function(e){let t=await Xt(e.appConfig);for(;1===t.registrationStatus;)await Lt(100),t=await Xt(e.appConfig);if(0!==t.registrationStatus)return t;{var{installationEntry:n,registrationPromise:r}=await Jt(e);return r||n}}(e)}:{installationEntry:t};if(!navigator.onLine){var n=Promise.reject(At.create("app-offline"));return{installationEntry:t,registrationPromise:n}}var r={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=async function(t,n){try{var e=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Rt(e),i=xt(e),s=t.getImmediate({optional:!0});!s||(a=await s.getHeartbeatsHeader())&&i.append("x-firebase-client",a);var a={fid:n,authVersion:Ct,appId:e.appId,sdkVersion:Et};const o={method:"POST",headers:i,body:JSON.stringify(a)},c=await Mt(()=>fetch(r,o));if(c.ok){a=await c.json();return{fid:a.fid||n,registrationStatus:2,refreshToken:a.refreshToken,authToken:Dt(a.authToken)}}throw await Pt("Create Installation",c)}(t,n);return Ht(t.appConfig,e)}catch(e){throw Nt(e)&&409===e.customData.serverCode?await Qt(t.appConfig):await Ht(t.appConfig,{fid:n.fid,registrationStatus:0}),e}}(e,r);return{installationEntry:r,registrationPromise:n}}}(n,t);return r=t.registrationPromise,t.installationEntry});return e.fid===Ut?{installationEntry:await r}:{installationEntry:e,registrationPromise:r}}function Xt(e){return Yt(e,e=>{if(!e)throw At.create("installation-not-found");return Zt(e)})}function Zt(e){return 1===(t=e).registrationStatus&&t.registrationTime+Ttfetch(r,l));if(u.ok)return Dt(await u.json());throw await Pt("Generate Auth Token",u)}async function tn(r,i=!1){let s;var e=await Yt(r.appConfig,e=>{if(!rn(e))throw At.create("not-registered");var t,n=e.authToken;if(i||2!==(t=n).requestStatus||function(e){var t=Date.now();return t{if(!rn(e))throw At.create("not-registered");var t,n=e.authToken;return 1===(t=n).requestStatus&&t.requestTime+Tt{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:function(e){if(!e||!e.options)throw an("App Configuration");if(!e.name)throw an("App Name");for(const t of["projectId","apiKey","appId"])if(!e.options[t])throw an(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),heartbeatServiceProvider:Ge(t,"heartbeat"),_delete:()=>Promise.resolve()}},ln=e=>{const t=Ge(e.getProvider("app").getImmediate(),on).getImmediate();return{getId:()=>async function(e){var t=e;const{installationEntry:n,registrationPromise:r}=await Jt(t);return(r||tn(t)).catch(console.error),n.fid}(t),getToken:e=>sn(t,e)}};We(new oe(on,cn,"PUBLIC")),We(new oe("installations-internal",ln,"PRIVATE")),et(bt,It),et(bt,It,"esm2017");const un="analytics",hn="firebase_id",dn="origin",pn="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",fn="https://www.googletagmanager.com/gtag/js",gn=new me("@firebase/analytics"),mn=new D("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function vn(e){if(e.startsWith(fn))return e;var t=mn.create("invalid-gtag-resource",{gtagURL:e});return gn.warn(t.message),""}function yn(e){return Promise.all(e.map(e=>e.catch(e=>e)))}function _n(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(e,t)),n}("firebase-js-sdk-policy",{createScriptURL:vn}),r=document.createElement("script");var i=`${fn}?l=${e}&id=${t}`;r.src=n?null===n||void 0===n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function wn(h,d,p,f){return async function(e,...t){try{var n,r,i,s,a,o,c,l,u;"event"===e?([n,r]=t,await async function(e,n,r,i,s){try{let t=[];if(s&&s.send_to){let e=s.send_to;Array.isArray(e)||(e=[e]);const c=await yn(r);for(const l of e){var a=c.find(e=>e.measurementId===l),o=a&&n[a.appId];if(!o){t=[];break}t.push(o)}}0===t.length&&(t=Object.values(n)),await Promise.all(t),e("event",i,s||{})}catch(e){gn.error(e)}}(h,d,p,n,r)):"config"===e?([i,s]=t,await async function(e,t,n,r,i,s){var a=r[i];try{if(a)await t[a];else{const c=await yn(n);var o=c.find(e=>e.measurementId===i);o&&await t[o.appId]}}catch(e){gn.error(e)}e("config",i,s)}(h,d,p,f,i,s)):"consent"===e?([a]=t,h("consent","update",a)):"get"===e?([o,c,l]=t,h("get",o,c,l)):"set"===e?([u]=t,h("set",u)):h(e,...t)}catch(e){gn.error(e)}}}const bn=30;const In=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};async function Tn(e){var t,{appId:n,apiKey:r}=e,r={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":r})},n=pn.replace("{app-id}",n);const i=await fetch(n,r);if(200===i.status||304===i.status)return i.json();{let e="";try{var s=await i.json();null!==(t=s.error)&&void 0!==t&&t.message&&(e=s.error.message)}catch(e){}throw mn.create("config-fetch-failed",{httpStatus:i.status,responseMessage:e})}}async function En(e,t=In,n){var{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw mn.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw mn.create("no-api-key")}var a=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()};const o=new Sn;return setTimeout(async()=>{o.abort()},void 0!==n?n:6e4),async function t(n,{throttleEndTimeMillis:e,backoffCount:r},i,s=In){var a;const{appId:o,measurementId:c}=n;try{await Cn(i,e)}catch(e){if(c)return gn.warn("Timed out fetching this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:c};throw e}try{const l=await Tn(n);return s.deleteThrottleMetadata(o),l}catch(e){const u=e;if(!kn(u)){if(s.deleteThrottleMetadata(o),c)return gn.warn("Failed to fetch this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null===u||void 0===u?void 0:u.message}]`),{appId:o,measurementId:c};throw e}const h=503===Number(null===(a=null===u||void 0===u?void 0:u.customData)||void 0===a?void 0:a.httpStatus)?se(r,s.intervalMillis,bn):se(r,s.intervalMillis),d={throttleEndTimeMillis:Date.now()+h,backoffCount:r+1};return s.setThrottleMetadata(o,d),gn.debug(`Calling attemptFetch again in ${h} millis`),t(n,d,i,s)}}({appId:r,apiKey:i,measurementId:s},a,o,t)}function Cn(i,s){return new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(mn.create("fetch-throttle",{throttleEndTimeMillis:s}))})})}function kn(e){if(!(e instanceof R&&e.customData))return!1;var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}class Sn{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function An(t,e,n,r,i,s,a){const o=En(t);o.then(e=>{n[e.measurementId]=e.appId,t.options.measurementId&&e.measurementId!==t.options.measurementId&&gn.warn(`The measurement ID in the local Firebase config (${t.options.measurementId})`+` does not match the measurement ID fetched from the server (${e.measurementId}).`+" To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.")}).catch(e=>gn.error(e)),e.push(o);var c=async function(){if(!S())return gn.warn(mn.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await A()}catch(e){return gn.warn(mn.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then(e=>{if(e)return r.getId()}),[l,u]=await Promise.all([o,c]);!function(e){var t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(fn)&&n.src.includes(e))return n}(s)&&_n(s,l.measurementId),i("js",new Date);const h=null!==(c=null==a?void 0:a.config)&&void 0!==c?c:{};return h[dn]="firebase",h.update=!0,null!=u&&(h[hn]=u),i("config",l.measurementId,h),l.measurementId}class Nn{constructor(e){this.app=e}_delete(){return delete Rn[this.app.options.appId],Promise.resolve()}}let Rn={},Dn=[];const Pn={};let xn="dataLayer",On="gtag",Mn,Ln,Fn=!1;function Un(e){if(Fn)throw mn.create("already-initialized");e.dataLayerName&&(xn=e.dataLayerName),e.gtagName&&(On=e.gtagName)}function Vn(e,t,n){!function(){const e=[];var t;T()&&e.push("This is a browser extension environment."),N()||e.push("Cookies are not available."),0`(${t+1}) ${e}`).join(" "),t=mn.create("invalid-analytics-context",{errorInfo:t}),gn.warn(t.message))}();var r,i,s=e.options.appId;if(!s)throw mn.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw mn.create("no-api-key");gn.warn('The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest'+` measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId}`+' provided in the "measurementId" field in the local Firebase config.')}if(null!=Rn[s])throw mn.create("already-exists",{id:s});return Fn||(function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t,t}(xn),{wrappedGtag:r,gtagCore:i}=function(e,t,n,r,i){let s=function(){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=wn(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Rn,Dn,Pn,xn,On),Ln=r,Mn=i,Fn=!0),Rn[s]=An(e,Dn,Pn,t,Mn,xn,n),new Nn(e)}async function qn(){if(T())return!1;if(!N())return!1;if(!S())return!1;try{return await A()}catch(e){return!1}}function Bn(e,t,n){e=ae(e),async function(e,t,n,r){if(r&&r.global)return e("set",{screen_name:n}),Promise.resolve();e("config",await t,{update:!0,screen_name:n})}(Ln,Rn[e.app.options.appId],t,n).catch(e=>gn.error(e))}function jn(e,t,n){e=ae(e),async function(e,t,n,r){if(r&&r.global)return e("set",{user_id:n}),Promise.resolve();e("config",await t,{update:!0,user_id:n})}(Ln,Rn[e.app.options.appId],t,n).catch(e=>gn.error(e))}function zn(e,t,n){e=ae(e),async function(e,t,n,r){if(r&&r.global){const i={};for(const s of Object.keys(n))i[`user_properties.${s}`]=n[s];return e("set",i),Promise.resolve()}e("config",await t,{update:!0,user_properties:n})}(Ln,Rn[e.app.options.appId],t,n).catch(e=>gn.error(e))}function $n(e,t){e=ae(e),async function(e,t){var n=await e;window[`ga-disable-${n}`]=!t}(Rn[e.app.options.appId],t).catch(e=>gn.error(e))}function Kn(e,t,n,r){e=ae(e),async function(e,t,n,r,i){var s;i&&i.global?e("event",n,r):(s=await t,e("event",n,Object.assign(Object.assign({},r),{send_to:s})))}(Ln,Rn[e.app.options.appId],t,n,r).catch(e=>gn.error(e))}const Wn="@firebase/analytics";We(new oe(un,(e,{options:t})=>{return Vn(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)},"PUBLIC")),We(new oe("analytics-internal",function(e){try{const r=e.getProvider(un).getImmediate();return{logEvent:(e,t,n)=>Kn(r,e,t,n)}}catch(e){throw mn.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),et(Wn,"0.10.0"),et(Wn,"0.10.0","esm2017");var Gn,Hn,Qn;class Yn{constructor(e,t){this.app=e,this._delegate=t}logEvent(e,t,n){Kn(this._delegate,e,t,n)}setCurrentScreen(e,t){Bn(this._delegate,e,t)}setUserId(e,t){jn(this._delegate,e,t)}setUserProperties(e,t){zn(this._delegate,e,t)}setAnalyticsCollectionEnabled(e){$n(this._delegate,e)}}(Hn=Gn=Gn||{}).ADD_SHIPPING_INFO="add_shipping_info",Hn.ADD_PAYMENT_INFO="add_payment_info",Hn.ADD_TO_CART="add_to_cart",Hn.ADD_TO_WISHLIST="add_to_wishlist",Hn.BEGIN_CHECKOUT="begin_checkout",Hn.CHECKOUT_PROGRESS="checkout_progress",Hn.EXCEPTION="exception",Hn.GENERATE_LEAD="generate_lead",Hn.LOGIN="login",Hn.PAGE_VIEW="page_view",Hn.PURCHASE="purchase",Hn.REFUND="refund",Hn.REMOVE_FROM_CART="remove_from_cart",Hn.SCREEN_VIEW="screen_view",Hn.SEARCH="search",Hn.SELECT_CONTENT="select_content",Hn.SELECT_ITEM="select_item",Hn.SELECT_PROMOTION="select_promotion",Hn.SET_CHECKOUT_OPTION="set_checkout_option",Hn.SHARE="share",Hn.SIGN_UP="sign_up",Hn.TIMING_COMPLETE="timing_complete",Hn.VIEW_CART="view_cart",Hn.VIEW_ITEM="view_item",Hn.VIEW_ITEM_LIST="view_item_list",Hn.VIEW_PROMOTION="view_promotion",Hn.VIEW_SEARCH_RESULTS="view_search_results";const Jn=e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("analytics").getImmediate();return new Yn(t,n)};Qn={Analytics:Yn,settings:Un,isSupported:qn,EventName:Gn},wt.INTERNAL.registerComponent(new oe("analytics-compat",Jn,"PUBLIC").setServiceProps(Qn).setMultipleInstances(!0)),wt.registerVersion("@firebase/analytics-compat","0.2.6");const Xn=new Map,Zn={activated:!1,tokenObservers:[]},er={initialized:!1,enabled:!1};function tr(e){return Xn.get(e)||Object.assign({},Zn)}const nr="https://content-firebaseappcheck.googleapis.com/v1",rr="exchangeDebugToken",ir={OFFSET_DURATION:3e5,RETRIAL_MIN_WAIT:3e4,RETRIAL_MAX_WAIT:96e4};class sr{constructor(e,t,n,r,i){if(this.operation=e,this.retryPolicy=t,this.getWaitDuration=n,this.lowerBound=r,this.upperBound=i,this.pending=null,i<(this.nextErrorWaitInterval=r))throw new 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{this.pending=new y,t=this.getNextRun(e),await new Promise(e=>{setTimeout(e,t)}),this.pending.resolve(),await this.pending.promise,this.pending=new y,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()}var t}getNextRun(e){if(e)return this.nextErrorWaitInterval=this.lowerBound,this.getWaitDuration();var t=this.nextErrorWaitInterval;return this.nextErrorWaitInterval*=2,this.nextErrorWaitInterval>this.upperBound&&(this.nextErrorWaitInterval=this.upperBound),t}}const ar=new D("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.",throttled:"Requests throttled due to {$httpStatus} error. Attempts allowed again after {$time}"});function or(e=!1){var t;return e?null===(t=self.grecaptcha)||void 0===t?void 0:t.enterprise:self.grecaptcha}function cr(e){if(!tr(e).activated)throw ar.create("use-before-activation",{appName:e.name})}function lr(e){var t=Math.round(e/1e3),n=Math.floor(t/86400),r=Math.floor((t-3600*n*24)/3600),i=Math.floor((t-3600*n*24-3600*r)/60),t=t-3600*n*24-3600*r-60*i;let s="";return n&&(s+=ur(n)+"d:"),r&&(s+=ur(r)+"h:"),s+=ur(i)+"m:"+ur(t)+"s",s}function ur(e){return 0===e?"00":10<=e?e.toString():"0"+e}async function hr({url:e,body:t},n){const r={"Content-Type":"application/json"},i=n.getImmediate({optional:!0});!i||(c=await i.getHeartbeatsHeader())&&(r["X-Firebase-Client"]=c);var s={method:"POST",body:JSON.stringify(t),headers:r};let a;try{a=await fetch(e,s)}catch(e){throw ar.create("fetch-network-error",{originalErrorMessage:null==e?void 0:e.message})}if(200!==a.status)throw ar.create("fetch-status-error",{httpStatus:a.status});let o;try{o=await a.json()}catch(e){throw ar.create("fetch-parse-error",{originalErrorMessage:null==e?void 0:e.message})}var c=o.ttl.match(/^([\d.]+)(s)$/);if(!c||!c[2]||isNaN(Number(c[1])))throw ar.create("fetch-parse-error",{originalErrorMessage:"ttl field (timeToLive) is not in standard Protobuf Duration "+`format: ${o.ttl}`});s=1e3*Number(c[1]),c=Date.now();return{token:o.token,expireTimeMillis:c+s,issuedAtTimeMillis:c}}function dr(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${nr}/projects/${n}/apps/${r}:${rr}?key=${i}`,body:{debug_token:t}}}const pr="firebase-app-check-database",fr=1,gr="firebase-app-check-store",mr="debug-token";let vr=null;function yr(){return vr||(vr=new Promise((t,n)=>{try{const e=indexedDB.open(pr,fr);e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{var t;n(ar.create("storage-open",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(gr,{keyPath:"compositeKey"})}}catch(e){n(ar.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}}),vr)}async function _r(e,t){const n=await yr(),r=n.transaction(gr,"readwrite"),i=r.objectStore(gr),s=i.put({compositeKey:e,value:t});return new Promise((t,n)=>{s.onsuccess=e=>{t()},r.onerror=e=>{var t;n(ar.create("storage-set",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}async function wr(e){const t=await yr(),i=t.transaction(gr,"readonly"),n=i.objectStore(gr),s=n.get(e);return new Promise((n,r)=>{s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)},i.onerror=e=>{var t;r(ar.create("storage-get",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}function br(e){return`${e.options.appId}-${e.name}`}const Ir=new me("@firebase/app-check");async function Tr(t){if(S()){let e=void 0;try{e=await wr(br(t))}catch(e){Ir.warn(`Failed to read token from IndexedDB. Error: ${e}`)}return e}}function Er(e,t){return S()?_r(br(e),t).catch(e=>{Ir.warn(`Failed to write token to IndexedDB. Error: ${e}`)}):Promise.resolve()}async function Cr(){let e=void 0;try{e=await wr(mr)}catch(e){}if(e)return e;var t,n=Z();return t=n,_r(mr,t).catch(e=>Ir.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`)),n}function kr(){return er.enabled}async function Sr(){var e=er;if(e.enabled&&e.token)return e.token.promise;throw Error(` Can't get debug token in production mode. `)}const Ar={error:"UNKNOWN_ERROR"};async function Nr(e,t=!1){var n=e.app;cr(n);const r=tr(n);let i=r.token,s=void 0;if(i&&!Or(i)&&(r.token=void 0,i=void 0),i||(o=await r.cachedTokenPromise)&&(Or(o)?i=o:await Er(n,void 0)),!t&&i&&Or(i))return{token:i.token};let a=!1;if(kr()){r.exchangeTokenPromise||(r.exchangeTokenPromise=hr(dr(n,await Sr()),e.heartbeatServiceProvider).finally(()=>{r.exchangeTokenPromise=void 0}),a=!0);var o=await r.exchangeTokenPromise;return await Er(n,o),{token:(r.token=o).token}}try{r.exchangeTokenPromise||(r.exchangeTokenPromise=r.provider.getToken().finally(()=>{r.exchangeTokenPromise=void 0}),a=!0),i=await tr(n).exchangeTokenPromise}catch(e){"appCheck/throttled"===e.code?Ir.warn(e.message):Ir.error(e),s=e}let c;return i?s?c=Or(i)?{token:i.token,internalError:s}:Mr(s):(c={token:i.token},r.token=i,await Er(n,i)):c=Mr(s),a&&xr(n,c),c}function Rr(e,t,n,r){var i=e["app"];const s=tr(i);i={next:n,error:r,type:t};if(s.tokenObservers=[...s.tokenObservers,i],s.token&&Or(s.token)){const a=s.token;Promise.resolve().then(()=>{n({token:a.token}),Pr(e)}).catch(()=>{})}s.cachedTokenPromise.then(()=>Pr(e))}function Dr(e,t){const n=tr(e);var r=n.tokenObservers.filter(e=>e.next!==t);0===r.length&&n.tokenRefresher&&n.tokenRefresher.isRunning()&&n.tokenRefresher.stop(),n.tokenObservers=r}function Pr(e){var t=e["app"];const n=tr(t);let r=n.tokenRefresher;r||(r=function(n){const r=n["app"];return new sr(async()=>{var e=tr(r);let t;if(t=e.token?await Nr(n,!0):await Nr(n),t.error)throw t.error;if(t.internalError)throw t.internalError},()=>!0,()=>{var e=tr(r);if(e.token){var t=e.token.issuedAtTimeMillis+.5*(e.token.expireTimeMillis-e.token.issuedAtTimeMillis)+3e5,e=e.token.expireTimeMillis-3e5,t=Math.min(t,e);return Math.max(0,t-Date.now())}return 0},ir.RETRIAL_MIN_WAIT,ir.RETRIAL_MAX_WAIT)}(e),n.tokenRefresher=r),!r.isRunning()&&n.isTokenAutoRefreshEnabled&&r.start()}function xr(e,t){for(const n of tr(e).tokenObservers)try{"EXTERNAL"===n.type&&null!=t.error?n.error(t.error):n.next(t)}catch(e){}}function Or(e){return 0Nr(t,e),getLimitedUseToken:()=>async function(e){var t=e.app;cr(t);const n=tr(t)["provider"];if(kr()){var r=(await hr(dr(t,await Sr()),e.heartbeatServiceProvider))["token"];return{token:r}}return{token:r=(await n.getToken())["token"]}}(t),addTokenListener:e=>Rr(t,"INTERNAL",e),removeTokenListener:e=>Dr(t.app,e)}}const Ur="https://www.google.com/recaptcha/api.js",Vr="https://www.google.com/recaptcha/enterprise.js";function qr(t,n){const r=new y,e=tr(t);e.reCAPTCHAState={initialized:r};const i=zr(t);var s=or(!1);return s?jr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Ur,t.onload=e,document.head.appendChild(t)}(()=>{var e=or(!1);if(!e)throw new Error("no recaptcha");jr(t,n,e,i,r)}),r.promise}function Br(t,n){const r=new y,e=tr(t);e.reCAPTCHAState={initialized:r};const i=zr(t);var s=or(!0);return s?jr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Vr,t.onload=e,document.head.appendChild(t)}(()=>{var e=or(!0);if(!e)throw new Error("no recaptcha");jr(t,n,e,i,r)}),r.promise}function jr(e,t,n,r,i){n.ready(()=>{!function(e,t,n,r){const i=n.render(r,{sitekey:t,size:"invisible",callback:()=>{tr(e).reCAPTCHAState.succeeded=!0},"error-callback":()=>{tr(e).reCAPTCHAState.succeeded=!1}}),s=tr(e);s.reCAPTCHAState=Object.assign(Object.assign({},s.reCAPTCHAState),{widgetId:i})}(e,t,n,r),i.resolve(n)})}function zr(e){var t=`fire_app_check_${e.name}`;const n=document.createElement("div");return n.id=t,n.style.display="none",document.body.appendChild(n),t}async function $r(r){cr(r);const i=await tr(r).reCAPTCHAState.initialized.promise;return new Promise((e,t)=>{const n=tr(r).reCAPTCHAState;i.ready(()=>{e(i.execute(n.widgetId,{action:"fire_app_check"}))})})}class Kr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;Qr(this._throttleData);var t=await $r(this._app).catch(e=>{throw ar.create("recaptcha-error")});if(null===(e=tr(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw ar.create("recaptcha-error");let n;try{n=await hr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${nr}/projects/${n}/apps/${r}:exchangeRecaptchaV3Token?key=${i}`,body:{recaptcha_v3_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=Hr(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),ar.create("throttled",{time:lr(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Ge(e,"heartbeat"),qr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Kr&&this._siteKey===e._siteKey}}class Wr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){var e;Qr(this._throttleData);var t=await $r(this._app).catch(e=>{throw ar.create("recaptcha-error")});if(null===(e=tr(this._app).reCAPTCHAState)||void 0===e||!e.succeeded)throw ar.create("recaptcha-error");let n;try{n=await hr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${nr}/projects/${n}/apps/${r}:exchangeRecaptchaEnterpriseToken?key=${i}`,body:{recaptcha_enterprise_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=Hr(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),ar.create("throttled",{time:lr(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,n}initialize(e){this._app=e,this._heartbeatServiceProvider=Ge(e,"heartbeat"),Br(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Wr&&this._siteKey===e._siteKey}}class Gr{constructor(e){this._customProviderOptions=e}async getToken(){var e=await this._customProviderOptions.getToken(),t=function(e){const t=M(e).claims;return"object"==typeof t&&t.hasOwnProperty("iat")?t.iat:null}(e.token),t=null!==t&&tconsole.log(`App Check debug token: ${e}. You will need to add it to your app's App Check settings in the Firebase console for it to work.`)),n.isInitialized()){var r=n.getImmediate();const i=n.getOptions();if(i.isTokenAutoRefreshEnabled===t.isTokenAutoRefreshEnabled&&i.provider.isEqual(t.provider))return r;throw ar.create("already-initialized",{appName:e.name})}r=n.initialize({options:t});return function(t,e,n){const r=function(e,t){return Xn.set(e,t),Xn.get(e)}(t,Object.assign({},Zn));r.activated=!0,r.provider=e,r.cachedTokenPromise=Tr(t).then(e=>(e&&Or(e)&&(r.token=e,xr(t,{token:e.token})),e)),r.isTokenAutoRefreshEnabled=void 0===n?t.automaticDataCollectionEnabled:n,r.provider.initialize(t)}(e,t.provider,t.isTokenAutoRefreshEnabled),tr(e).isTokenAutoRefreshEnabled&&Rr(r,"INTERNAL",()=>{}),r}const Jr="app-check-internal";We(new oe("app-check",e=>{var t,n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat");return t=n,e=r,new Lr(t,e)},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{e.getProvider(Jr).initialize()})),We(new oe(Jr,e=>{return Fr(e.getProvider("app-check").getImmediate())},"PUBLIC").setInstantiationMode("EXPLICIT")),et("@firebase/app-check","0.8.0");const Xr=new D("appCheck","AppCheck",{"use-before-activation":"App Check is being used before activate() is called for FirebaseApp {$appName}. Call activate() before instantiating other Firebase services."});class Zr{constructor(e){this.app=e}activate(e,t){let n;n="string"==typeof e?new Kr(e):e instanceof Wr||e instanceof Kr||e instanceof Gr?e:new Gr({getToken:e.getToken}),this._delegate=Yr(this.app,{provider:n,isTokenAutoRefreshEnabled:t})}setTokenAutoRefreshEnabled(e){if(!this._delegate)throw Xr.create("use-before-activation",{appName:this.app.name});!function(e,t){const n=tr(e.app);n.tokenRefresher&&(!0===t?n.tokenRefresher.start():n.tokenRefresher.stop()),n.isTokenAutoRefreshEnabled=t}(this._delegate,e)}getToken(e){if(!this._delegate)throw Xr.create("use-before-activation",{appName:this.app.name});return async function(e,t){var n=await Nr(e,t);if(n.error)throw n.error;return{token:n.token}}(this._delegate,e)}onTokenChanged(e,t,n){if(!this._delegate)throw Xr.create("use-before-activation",{appName:this.app.name});return function(e,t,n){let r=()=>{},i=()=>{};return r=null!=t.next?t.next.bind(t):t,null!=t.error?i=t.error.bind(t):n&&(i=n),Rr(e,"EXTERNAL",r,i),()=>Dr(e.app,r)}(this._delegate,e,t)}}const ei=e=>{var t=e.getProvider("app-compat").getImmediate();return new Zr(t)};function ti(e,t){var n={};for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,i=Object.getOwnPropertySymbols(e);r{let e={},t={};o&&("GET"===s?t=o:e={body:JSON.stringify(o)});var n=j(Object.assign({key:i.config.apiKey},t)).slice(1);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/json",i.languageCode&&(r["X-Firebase-Locale"]=i.languageCode),Ti.fetch()(Ri(i,i.config.apiHost,a,n),Object.assign({method:s,headers:r,referrerPolicy:"no-referrer"},e))})}async function Ai(t,e,n){t._canInitEmulator=!1;var r=Object.assign(Object.assign({},Ei),e);try{const a=new Di(t),o=await Promise.race([n(),a.promise]);a.clearNetworkTimeout();var i=await o.json();if("needConfirmation"in i)throw Pi(t,"account-exists-with-different-credential",i);if(o.ok&&!("errorMessage"in i))return i;{const c=o.ok?i.errorMessage:i.error.message,[l,u]=c.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===l)throw Pi(t,"credential-already-in-use",i);if("EMAIL_EXISTS"===l)throw Pi(t,"email-already-in-use",i);if("USER_DISABLED"===l)throw Pi(t,"user-disabled",i);var s=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw di(t,s,u);ui(t,s)}}catch(e){if(e instanceof R)throw e;ui(t,"network-request-failed",{message:String(e)})}}async function Ni(e,t,n,r,i={}){var s=await Si(e,t,n,r,i);return"mfaPendingCredential"in s&&ui(e,"multi-factor-auth-required",{_serverResponse:s}),s}function Ri(e,t,n,r){var i=`${t}${n}?${r}`;return e.config.emulator?Ii(e.config,i):`${e.config.apiScheme}://${i}`}class Di{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(hi(this.auth,"network-request-failed")),Ci.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function Pi(e,t,n){const r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=hi(e,t,r);return i.customData._tokenResponse=n,i}function xi(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function Oi(e){return 1e3*Number(e)}function Mi(e){var[t,n,r]=e.split(".");if(void 0===t||void 0===n||void 0===r)return li("JWT malformed, contained fewer than 3 sections"),null;try{var i=a(n);return i?JSON.parse(i):(li("Failed to decode base64 JWT payload"),null)}catch(e){return li("Caught error parsing JWT payload as JSON",null==e?void 0:e.toString()),null}}async function Li(t,n,e=!1){if(e)return n;try{return n}catch(e){throw e instanceof R&&(n=[e["code"]][0],"auth/user-disabled"===n||"auth/user-token-expired"===n)&&t.auth.currentUser===t&&await t.auth.signOut(),e}}class Fi{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(e){if(e){var t=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),t}this.errorBackoff=3e4;t=(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5;return Math.max(0,t)}schedule(e=!1){var t;this.isRunning&&(t=this.getInterval(e),this.timerId=setTimeout(async()=>{await this.iteration()},t))}async iteration(){try{await this.user.getIdToken(!0)}catch(e){return void("auth/network-request-failed"===(null==e?void 0:e.code)&&this.schedule(!0))}this.schedule()}}class Ui{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=xi(this.lastLoginAt),this.creationTime=xi(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function Vi(e){var t=e.auth,n=await e.getIdToken(),r=await Li(e,async function(e,t){return Si(e,"POST","/v1/accounts:lookup",t)}(t,{idToken:n}));gi(null==r?void 0:r.users.length,t,"internal-error");var i=r.users[0];e._notifyReloadListener(i);var s,a,t=null!==(n=i.providerUserInfo)&&void 0!==n&&n.length?i.providerUserInfo.map(e=>{var t=e["providerId"],n=ti(e,["providerId"]);return{providerId:t,uid:n.rawId||"",displayName:n.displayName||null,email:n.email||null,phoneNumber:n.phoneNumber||null,photoURL:n.photoUrl||null}}):[],r=(s=e.providerData,a=t,[...s.filter(t=>!a.some(e=>e.providerId===t.providerId)),...a]),n=e.isAnonymous,t=!(e.email&&i.passwordHash||null!==r&&r.length),t=!!n&&t,t={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:r,metadata:new Ui(i.createdAt,i.lastLoginAt),isAnonymous:t};Object.assign(e,t)}class qi{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){gi(e.idToken,"internal-error"),gi(void 0!==e.idToken,"internal-error"),gi(void 0!==e.refreshToken,"internal-error");var t,n,n="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):(t=e.idToken,gi(n=Mi(t),"internal-error"),gi(void 0!==n.exp,"internal-error"),gi(void 0!==n.iat,"internal-error"),Number(n.exp)-Number(n.iat));this.updateTokensAndExpiration(e.idToken,e.refreshToken,n)}async getToken(e,t=!1){return gi(!this.accessToken||this.refreshToken,e,"user-token-expired"),t||!this.accessToken||this.isExpired?this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null:this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){var i,s,{accessToken:n,refreshToken:r,expiresIn:a}=(s=t,await{accessToken:(a=await Ai(i=e,{},async()=>{var e=j({grant_type:"refresh_token",refresh_token:s}).slice(1),{tokenApiHost:t,apiKey:n}=i.config,n=Ri(i,t,"/v1/token",`key=${n}`);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/x-www-form-urlencoded",Ti.fetch()(n,{method:"POST",headers:r,body:e})})).access_token,expiresIn:a.expires_in,refreshToken:a.refresh_token});this.updateTokensAndExpiration(n,r,Number(a))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){var{refreshToken:n,accessToken:r,expirationTime:i}=t;const s=new qi;return n&&(gi("string"==typeof n,"internal-error",{appName:e}),s.refreshToken=n),r&&(gi("string"==typeof r,"internal-error",{appName:e}),s.accessToken=r),i&&(gi("number"==typeof i,"internal-error",{appName:e}),s.expirationTime=i),s}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new qi,this.toJSON())}_performRefresh(){return mi("not implemented")}}function Bi(e,t){gi("string"==typeof e||void 0===e,"internal-error",{appName:t})}class ji{constructor(e){var{uid:t,auth:n,stsTokenManager:r}=e,i=ti(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Fi(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=n,this.stsTokenManager=r,this.accessToken=r.accessToken,this.displayName=i.displayName||null,this.email=i.email||null,this.emailVerified=i.emailVerified||!1,this.phoneNumber=i.phoneNumber||null,this.photoURL=i.photoURL||null,this.isAnonymous=i.isAnonymous||!1,this.tenantId=i.tenantId||null,this.providerData=i.providerData?[...i.providerData]:[],this.metadata=new Ui(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(e){var t=await Li(this,this.stsTokenManager.getToken(this.auth,e));return gi(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return async function(e,t=!1){const n=ae(e);var r=await n.getIdToken(t),i=Mi(r);gi(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");var s="object"==typeof i.firebase?i.firebase:void 0,a=null==s?void 0:s.sign_in_provider;return{claims:i,token:r,authTime:xi(Oi(i.auth_time)),issuedAtTime:xi(Oi(i.iat)),expirationTime:xi(Oi(i.exp)),signInProvider:a||null,signInSecondFactor:(null==s?void 0:s.sign_in_second_factor)||null}}(this,e)}reload(){return async function(e){const t=ae(e);await Vi(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(gi(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(e=>Object.assign({},e)),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){const t=new ji(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return t.metadata._copy(this.metadata),t}_onReload(e){gi(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await Vi(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){var e=await this.getIdToken();return await Li(this,async function(e,t){return Si(e,"POST","/v1/accounts:delete",t)}(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>Object.assign({},e)),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){var n=null!==(a=t.displayName)&&void 0!==a?a:void 0,r=null!==(g=t.email)&&void 0!==g?g:void 0,i=null!==(o=t.phoneNumber)&&void 0!==o?o:void 0,s=null!==(l=t.photoURL)&&void 0!==l?l:void 0,a=null!==(c=t.tenantId)&&void 0!==c?c:void 0,o=null!==(g=t._redirectEventId)&&void 0!==g?g:void 0,c=null!==(l=t.createdAt)&&void 0!==l?l:void 0,l=null!==(g=t.lastLoginAt)&&void 0!==g?g:void 0;const{uid:u,emailVerified:h,isAnonymous:d,providerData:p,stsTokenManager:f}=t;gi(u&&f,e,"internal-error");var g=qi.fromJSON(this.name,f);gi("string"==typeof u,e,"internal-error"),Bi(n,e.name),Bi(r,e.name),gi("boolean"==typeof h,e,"internal-error"),gi("boolean"==typeof d,e,"internal-error"),Bi(i,e.name),Bi(s,e.name),Bi(a,e.name),Bi(o,e.name),Bi(c,e.name),Bi(l,e.name);const m=new ji({uid:u,auth:e,email:r,emailVerified:h,displayName:n,isAnonymous:d,photoURL:s,phoneNumber:i,tenantId:a,stsTokenManager:g,createdAt:c,lastLoginAt:l});return p&&Array.isArray(p)&&(m.providerData=p.map(e=>Object.assign({},e))),o&&(m._redirectEventId=o),m}static async _fromIdTokenResponse(e,t,n=!1){const r=new qi;r.updateFromServerResponse(t);var i=new ji({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:n});return await Vi(i),i}}const zi=new Map;function $i(e){vi(e instanceof Function,"Expected a class definition");let t=zi.get(e);return t?vi(t instanceof e,"Instance stored in cache mismatched with class"):(t=new e,zi.set(e,t)),t}class Ki{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){var t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}Ki.type="NONE";const Wi=Ki;function Gi(e,t,n){return`firebase:${e}:${t}:${n}`}class Hi{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;var{config:r,name:i}=this.auth;this.fullUserKey=Gi(this.userKey,r.apiKey,i),this.fullPersistenceKey=Gi("persistence",r.apiKey,i),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){var e=await this.persistence._get(this.fullUserKey);return e?ji._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence!==e){var t=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=e,t?this.setCurrentUser(t):void 0}}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,n="authUser"){if(!t.length)return new Hi($i(Wi),e,n);const r=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e);let i=r[0]||$i(Wi);const s=Gi(n,e.config.apiKey,e.name);let a=null;for(const u of t)try{var o=await u._get(s);if(o){var c=ji._fromJSON(e,o);u!==i&&(a=c),i=u;break}}catch(e){}var l=r.filter(e=>e._shouldAllowMigration);return i._shouldAllowMigration&&l.length&&(i=l[0],a&&await i._set(s,a.toJSON()),await Promise.all(t.map(async e=>{if(e!==i)try{await e._remove(s)}catch(e){}}))),new Hi(i,e,n)}}function Qi(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(Zi(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(Yi(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(ts(t))return"Blackberry";if(ns(t))return"Webos";if(Ji(t))return"Safari";if((t.includes("chrome/")||Xi(t))&&!t.includes("edge/"))return"Chrome";if(es(t))return"Android";var n=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);return 2===(null==n?void 0:n.length)?n[1]:"Other"}function Yi(e=w()){return/firefox\//i.test(e)}function Ji(e=w()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function Xi(e=w()){return/crios\//i.test(e)}function Zi(e=w()){return/iemobile/i.test(e)}function es(e=w()){return/android/i.test(e)}function ts(e=w()){return/blackberry/i.test(e)}function ns(e=w()){return/webos/i.test(e)}function rs(e=w()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function is(e=w()){return rs(e)||es(e)||ns(e)||ts(e)||/windows phone/i.test(e)||Zi(e)}function ss(e,t=[]){let n;switch(e){case"Browser":n=Qi(w());break;case"Worker":n=`${Qi(w())}-${e}`;break;default:n=e}var r=t.length?t.join(","):"FirebaseCore-web";return`${n}/JsCore/${Ye}/${r}`}async function as(e,t){return Si(e,"GET","/v2/recaptchaConfig",ki(e,t))}function os(e){return void 0!==e&&void 0!==e.getResponse}function cs(e){return void 0!==e&&void 0!==e.enterprise}class ls{constructor(e){if(this.siteKey="",this.emailPasswordEnabled=!1,void 0===e.recaptchaKey)throw new Error("recaptchaKey undefined");this.siteKey=e.recaptchaKey.split("/")[3],this.emailPasswordEnabled=e.recaptchaEnforcementState.some(e=>"EMAIL_PASSWORD_PROVIDER"===e.provider&&"OFF"!==e.enforcementState)}}function us(i){return new Promise((e,n)=>{const t=document.createElement("script");var r;t.setAttribute("src",i),t.onload=e,t.onerror=e=>{const t=hi("internal-error");t.customData=e,n(t)},t.type="text/javascript",t.charset="UTF-8",(null!==(r=null===(r=document.getElementsByTagName("head"))||void 0===r?void 0:r[0])&&void 0!==r?r:document).appendChild(t)})}function hs(e){return`__${e}${Math.floor(1e6*Math.random())}`}class ds{constructor(e){this.type="recaptcha-enterprise",this.auth=ms(e)}async verify(i="verify",r=!1){function s(e,t,n){const r=window.grecaptcha;cs(r)?r.enterprise.ready(()=>{r.enterprise.execute(e,{action:i}).then(e=>{t(e)}).catch(()=>{t("NO_RECAPTCHA")})}):n(Error("No reCAPTCHA enterprise script loaded."))}return new Promise((t,n)=>{!async function(i){if(!r){if(null==i.tenantId&&null!=i._agentRecaptchaConfig)return i._agentRecaptchaConfig.siteKey;if(null!=i.tenantId&&void 0!==i._tenantRecaptchaConfigs[i.tenantId])return i._tenantRecaptchaConfigs[i.tenantId].siteKey}return new Promise(async(n,r)=>{as(i,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(e=>{if(void 0!==e.recaptchaKey){var t=new ls(e);return null==i.tenantId?i._agentRecaptchaConfig=t:i._tenantRecaptchaConfigs[i.tenantId]=t,n(t.siteKey)}r(new Error("recaptcha Enterprise site key undefined"))}).catch(e=>{r(e)})})}(this.auth).then(e=>{!r&&cs(window.grecaptcha)?s(e,t,n):"undefined"!=typeof window?us("https://www.google.com/recaptcha/enterprise.js?render="+e).then(()=>{s(e,t,n)}).catch(e=>{n(e)}):n(new Error("RecaptchaVerifier is only supported in browser"))}).catch(e=>{n(e)})})}}async function ps(e,t,n,r=!1){const i=new ds(e);let s;try{s=await i.verify(n)}catch(e){s=await i.verify(n,!0)}var a=Object.assign({},t);return r?Object.assign(a,{captchaResp:s}):Object.assign(a,{captchaResponse:s}),Object.assign(a,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(a,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),a}class fs{constructor(e){this.auth=e,this.queue=[]}pushCallback(r,e){var t=n=>new Promise((e,t)=>{try{e(r(n))}catch(e){t(e)}});t.onAbort=e,this.queue.push(t);const n=this.queue.length-1;return()=>{this.queue[n]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser!==e){const t=[];try{for(const n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(const r of t)try{r()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==e?void 0:e.message})}}}}class gs{constructor(e,t,n,r){this.app=e,this.heartbeatServiceProvider=t,this.appCheckServiceProvider=n,this.config=r,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new vs(this),this.idTokenSubscription=new vs(this),this.beforeStateQueue=new fs(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=oi,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=r.sdkClientVersion}_initializeWithPersistence(t,n){return n&&(this._popupRedirectResolver=$i(n)),this._initializationPromise=this.queue(async()=>{var e;if(!this._deleted&&(this.persistenceManager=await Hi.create(this,t),!this._deleted)){if(null!==(e=this._popupRedirectResolver)&&void 0!==e&&e._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(n),this.lastNotifiedUid=(null===(e=this.currentUser)||void 0===e?void 0:e.uid)||null,this._deleted||(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(!this._deleted){var e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e)return this.currentUser&&e&&this.currentUser.uid===e.uid?(this._currentUser._assign(e),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(e,!0)}}async initializeCurrentUser(e){var t,n,r,i=await this.assertedPersistence.getCurrentUser();let s=i,a=!1;if(e&&this.config.authDomain&&(await this.getOrInitRedirectPersistenceManager(),t=null===(r=this.redirectUser)||void 0===r?void 0:r._redirectEventId,n=null===s||void 0===s?void 0:s._redirectEventId,r=await this.tryRedirectSignIn(e),t&&t!==n||null==r||!r.user||(s=r.user,a=!0)),!s)return this.directlySetCurrentUser(null);if(s._redirectEventId)return gi(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===s._redirectEventId?this.directlySetCurrentUser(s):this.reloadAndSetCurrentUserOrClear(s);if(a)try{await this.beforeStateQueue.runMiddleware(s)}catch(e){s=i,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return s?this.reloadAndSetCurrentUserOrClear(s):this.directlySetCurrentUser(null)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){try{await Vi(e)}catch(e){if("auth/network-request-failed"!==(null==e?void 0:e.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;var e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const t=e?ae(e):null;return t&&gi(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&gi(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0)}setPersistence(e){return this.queue(async()=>{await this.assertedPersistence.setPersistence($i(e))})}async initializeRecaptchaConfig(){var e=await as(this,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}),e=new ls(e);if(null==this.tenantId?this._agentRecaptchaConfig=e:this._tenantRecaptchaConfigs[this.tenantId]=e,e.emailPasswordEnabled){const t=new ds(this);t.verify()}}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new D("auth","Firebase",e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(e=this._currentUser)||void 0===e?void 0:e.toJSON()}}async _setRedirectUser(e,t){const n=await this.getOrInitRedirectPersistenceManager(t);return null===e?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){var t;return this.redirectPersistenceManager||(gi(t=e&&$i(e)||this._popupRedirectResolver,this,"argument-error"),this.redirectPersistenceManager=await Hi.create(this,[$i(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()),this.redirectPersistenceManager}async _redirectUserForId(e){var t;return this._isInitialized&&await this.queue(async()=>{}),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e?this._currentUser:(null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e;this._isInitialized&&(this.idTokenSubscription.next(this.currentUser),e=null!==(e=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==e?e:null,this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser)))}registerStateListener(e,t,n,r){if(this._deleted)return()=>{};const i="function"==typeof t?t:t.next.bind(t),s=this._isInitialized?Promise.resolve():this._initializationPromise;return gi(s,this,"internal-error"),s.then(()=>i(this.currentUser)),"function"==typeof t?e.addObserver(t,n,r):e.addObserver(t)}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),(this.currentUser=e)?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return gi(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=ss(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){const e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);var t=await(null===(t=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===t?void 0:t.getHeartbeatsHeader());t&&(e["X-Firebase-Client"]=t);t=await this._getAppCheckToken();return t&&(e["X-Firebase-AppCheck"]=t),e}async _getAppCheckToken(){var e,t,n=await(null===(n=this.appCheckServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getToken());return null!=n&&n.error&&(e=`Error while retrieving App Check token: ${n.error}`,t=[],ci.logLevel<=m.WARN&&ci.warn(`Auth (${Ye}): ${e}`,...t)),null==n?void 0:n.token}}function ms(e){return ae(e)}class vs{constructor(e){this.auth=e,this.observer=null,this.addObserver=W(e=>this.observer=e)}get next(){return gi(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}function ys(e,t,n){const r=ms(e);gi(r._canInitEmulator,r,"emulator-config-failed"),gi(/^https?:\/\//.test(t),r,"invalid-emulator-scheme");var i=!(null==n||!n.disableWarnings);const s=_s(t);var{host:a,port:o}=function(e){const t=_s(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null};const r=n[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(r);{if(i){var s=i[1];return{host:s,port:ws(r.substr(s.length+1))}}var[a,s]=r.split(":");return{host:a,port:ws(s)}}}(t);r.config.emulator={url:`${s}//${a}${null===o?"":`:${o}`}/`},r.settings.appVerificationDisabledForTesting=!0,r.emulatorConfig=Object.freeze({host:a,port:o,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||function(){function e(){const e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials.");"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",e):e())}()}function _s(e){var t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function ws(e){if(!e)return null;var t=Number(e);return isNaN(t)?null:t}class bs{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return mi("not implemented")}_getIdTokenResponse(e){return mi("not implemented")}_linkToIdToken(e,t){return mi("not implemented")}_getReauthenticationResolver(e){return mi("not implemented")}}async function Is(e,t){return Si(e,"POST","/v1/accounts:resetPassword",ki(e,t))}async function Ts(e,t){return Si(e,"POST","/v1/accounts:update",t)}async function Es(e,t){return Ni(e,"POST","/v1/accounts:signInWithPassword",ki(e,t))}async function Cs(e,t){return Si(e,"POST","/v1/accounts:sendOobCode",ki(e,t))}async function ks(e,t){return Cs(e,t)}async function Ss(e,t){return Cs(e,t)}class As extends bs{constructor(e,t,n,r=null){super("password",n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new As(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new As(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e;if(null!=t&&t.email&&null!=t&&t.password){if("password"===t.signInMethod)return this._fromEmailAndPassword(t.email,t.password);if("emailLink"===t.signInMethod)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(n){switch(this.signInMethod){case"password":const r={returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"};if(null!==(e=n._getRecaptchaConfig())&&void 0!==e&&e.emailPasswordEnabled){var e=await ps(n,r,"signInWithPassword");return Es(n,e)}return Es(n,r).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Sign-in with email address and password is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-in flow.");var t=await ps(n,r,"signInWithPassword");return Es(n,t)});case"emailLink":return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithEmailLink",ki(e,t))}(n,{email:this._email,oobCode:this._password});default:ui(n,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return Ts(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithEmailLink",ki(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:ui(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function Ns(e,t){return Ni(e,"POST","/v1/accounts:signInWithIdp",ki(e,t))}class Rs extends bs{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new Rs(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):ui("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:r}=t,t=ti(t,["providerId","signInMethod"]);if(!n||!r)return null;const i=new Rs(n,r);return i.idToken=t.idToken||void 0,i.accessToken=t.accessToken||void 0,i.secret=t.secret,i.nonce=t.nonce,i.pendingToken=t.pendingToken||null,i}_getIdTokenResponse(e){return Ns(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Ns(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Ns(e,t)}buildRequest(){const e={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=j(t)}return e}}const Ds={USER_NOT_FOUND:"user-not-found"};class Ps extends bs{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new Ps({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new Ps({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){var n=await Ni(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,t));if(n.temporaryProof)throw Pi(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Ni(e,"POST","/v1/accounts:signInWithPhoneNumber",ki(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),Ds)}(e,this._makeVerificationRequest())}_makeVerificationRequest(){var{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:r}}toJSON(){const e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){var{verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}=e="string"==typeof e?JSON.parse(e):e;return n||t||r||i?new Ps({verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}):null}}class xs{constructor(e){var t=z($(e)),n=null!==(r=t.apiKey)&&void 0!==r?r:null,r=null!==(i=t.oobCode)&&void 0!==i?i:null,i=function(e){switch(e){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}(null!==(i=t.mode)&&void 0!==i?i:null);gi(n&&r&&i,"argument-error"),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=null!==(r=t.continueUrl)&&void 0!==r?r:null,this.languageCode=null!==(r=t.languageCode)&&void 0!==r?r:null,this.tenantId=null!==(t=t.tenantId)&&void 0!==t?t:null}static parseLink(e){var t,n,r,t=(t=z($(e=e)).link,n=t?z($(t)).deep_link_id:null,((r=z($(e)).deep_link_id)?z($(r)).link:null)||r||n||t||e);try{return new xs(t)}catch(e){return null}}}class Os{constructor(){this.providerId=Os.PROVIDER_ID}static credential(e,t){return As._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){var n=xs.parseLink(t);return gi(n,"argument-error"),As._fromEmailAndCode(e,n.code,n.tenantId)}}Os.PROVIDER_ID="password",Os.EMAIL_PASSWORD_SIGN_IN_METHOD="password",Os.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class Ms{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}class Ls extends Ms{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class Fs extends Ls{static credentialFromJSON(e){var t="string"==typeof e?JSON.parse(e):e;return gi("providerId"in t&&"signInMethod"in t,"argument-error"),Rs._fromParams(t)}credential(e){return this._credential(Object.assign(Object.assign({},e),{nonce:e.rawNonce}))}_credential(e){return gi(e.idToken||e.accessToken,"argument-error"),Rs._fromParams(Object.assign(Object.assign({},e),{providerId:this.providerId,signInMethod:this.providerId}))}static credentialFromResult(e){return Fs.oauthCredentialFromTaggedObject(e)}static credentialFromError(e){return Fs.oauthCredentialFromTaggedObject(e.customData||{})}static oauthCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n,oauthTokenSecret:r,pendingToken:i,nonce:s,providerId:a}=e;if(!(n||r||t||i))return null;if(!a)return null;try{return new Fs(a)._credential({idToken:t,accessToken:n,nonce:s,pendingToken:i})}catch(e){return null}}}class Us extends Ls{constructor(){super("facebook.com")}static credential(e){return Rs._fromParams({providerId:Us.PROVIDER_ID,signInMethod:Us.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Us.credentialFromTaggedObject(e)}static credentialFromError(e){return Us.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Us.credential(e.oauthAccessToken)}catch(e){return null}}}Us.FACEBOOK_SIGN_IN_METHOD="facebook.com",Us.PROVIDER_ID="facebook.com";class Vs extends Ls{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return Rs._fromParams({providerId:Vs.PROVIDER_ID,signInMethod:Vs.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return Vs.credentialFromTaggedObject(e)}static credentialFromError(e){return Vs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return Vs.credential(t,n)}catch(e){return null}}}Vs.GOOGLE_SIGN_IN_METHOD="google.com",Vs.PROVIDER_ID="google.com";class qs extends Ls{constructor(){super("github.com")}static credential(e){return Rs._fromParams({providerId:qs.PROVIDER_ID,signInMethod:qs.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return qs.credentialFromTaggedObject(e)}static credentialFromError(e){return qs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return qs.credential(e.oauthAccessToken)}catch(e){return null}}}qs.GITHUB_SIGN_IN_METHOD="github.com",qs.PROVIDER_ID="github.com";class Bs extends bs{constructor(e,t){super(e,e),this.pendingToken=t}_getIdTokenResponse(e){return Ns(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,Ns(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,Ns(e,t)}toJSON(){return{signInMethod:this.signInMethod,providerId:this.providerId,pendingToken:this.pendingToken}}static fromJSON(e){var{providerId:t,signInMethod:n,pendingToken:r}="string"==typeof e?JSON.parse(e):e;return t&&n&&r&&t===n?new Bs(t,r):null}static _create(e,t){return new Bs(e,t)}buildRequest(){return{requestUri:"http://localhost",returnSecureToken:!0,pendingToken:this.pendingToken}}}class js extends Ms{constructor(e){gi(e.startsWith("saml."),"argument-error"),super(e)}static credentialFromResult(e){return js.samlCredentialFromTaggedObject(e)}static credentialFromError(e){return js.samlCredentialFromTaggedObject(e.customData||{})}static credentialFromJSON(e){var t=Bs.fromJSON(e);return gi(t,"argument-error"),t}static samlCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{pendingToken:t,providerId:n}=e;if(!t||!n)return null;try{return Bs._create(n,t)}catch(e){return null}}}class zs extends Ls{constructor(){super("twitter.com")}static credential(e,t){return Rs._fromParams({providerId:zs.PROVIDER_ID,signInMethod:zs.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return zs.credentialFromTaggedObject(e)}static credentialFromError(e){return zs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return zs.credential(t,n)}catch(e){return null}}}async function $s(e,t){return Ni(e,"POST","/v1/accounts:signUp",ki(e,t))}zs.TWITTER_SIGN_IN_METHOD="twitter.com",zs.PROVIDER_ID="twitter.com";class Ks{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,r=!1){var i=await ji._fromIdTokenResponse(e,n,r),s=Ws(n);return new Ks({user:i,providerId:s,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);var r=Ws(n);return new Ks({user:e,providerId:r,_tokenResponse:n,operationType:t})}}function Ws(e){return e.providerId||("phoneNumber"in e?"phone":null)}class Gs extends R{constructor(e,t,n,r){var i;super(t.code,t.message),this.operationType=n,this.user=r,Object.setPrototypeOf(this,Gs.prototype),this.customData={appName:e.name,tenantId:null!==(i=e.tenantId)&&void 0!==i?i:void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,r){return new Gs(e,t,n,r)}}function Hs(t,n,e,r){const i="reauthenticate"===n?e._getReauthenticationResolver(t):e._getIdTokenResponse(t);return i.catch(e=>{if("auth/multi-factor-auth-required"===e.code)throw Gs._fromErrorAndOperation(t,e,n,r);throw e})}function Qs(e){return new Set(e.map(({providerId:e})=>e).filter(e=>!!e))}async function Ys(e,t){const n=ae(e);await Xs(!0,n,t);var r=(e=n.auth,t={idToken:await n.getIdToken(),deleteProvider:[t]},await Si(e,"POST","/v1/accounts:update",t))["providerUserInfo"];const i=Qs(r||[]);return n.providerData=n.providerData.filter(e=>i.has(e.providerId)),i.has("phone")||(n.phoneNumber=null),await n.auth._persistUserIfCurrent(n),n}async function Js(e,t,n=!1){var r=await Li(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Ks._forOperation(e,"link",r)}async function Xs(e,t,n){await Vi(t);const r=Qs(t.providerData);var i=!1===e?"provider-already-linked":"no-such-provider";gi(r.has(n)===e,t.auth,i)}async function Zs(e,t,n=!1){var r=e["auth"],i="reauthenticate";try{var s=await Li(e,Hs(r,i,t,e),n);gi(s.idToken,r,"internal-error");var a=Mi(s.idToken);gi(a,r,"internal-error");var o=a["sub"];return gi(e.uid===o,r,"user-mismatch"),Ks._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null==e?void 0:e.code)&&ui(r,"user-mismatch"),e}}async function ea(e,t,n=!1){var r=await Hs(e,"signIn",t),r=await Ks._fromIdTokenResponse(e,"signIn",r);return n||await e._updateCurrentUser(r.user),r}async function ta(e,t){return ea(ms(e),t)}async function na(e,t){var n=ae(e);return await Xs(!1,n,t.providerId),Js(n,t)}async function ra(e,t){return Zs(ae(e),t)}async function ia(e,t){const n=ms(e);var r=await Ni(n,"POST","/v1/accounts:signInWithCustomToken",ki(n,{token:t,returnSecureToken:!0})),r=await Ks._fromIdTokenResponse(n,"signIn",r);return await n._updateCurrentUser(r.user),r}class sa{constructor(e,t){this.factorId=e,this.uid=t.mfaEnrollmentId,this.enrollmentTime=new Date(t.enrolledAt).toUTCString(),this.displayName=t.displayName}static _fromServerResponse(e,t){return"phoneInfo"in t?aa._fromServerResponse(e,t):"totpInfo"in t?oa._fromServerResponse(e,t):ui(e,"internal-error")}}class aa extends sa{constructor(e){super("phone",e),this.phoneNumber=e.phoneInfo}static _fromServerResponse(e,t){return new aa(t)}}class oa extends sa{constructor(e){super("totp",e)}static _fromServerResponse(e,t){return new oa(t)}}function ca(e,t,n){var r;gi(0<(null===(r=n.url)||void 0===r?void 0:r.length),e,"invalid-continue-uri"),gi(void 0===n.dynamicLinkDomain||0"password"===e);s&&(s.displayName=i.displayName,s.photoURL=i.photoURL),await i._updateTokensIfNecessary(r)}}async function ga(e,t,n){var r=e["auth"];const i={idToken:await e.getIdToken(),returnSecureToken:!0};t&&(i.email=t),n&&(i.password=n);r=await Li(e,Ts(r,i));await e._updateTokensIfNecessary(r,!0)}class ma{constructor(e,t,n={}){this.isNewUser=e,this.providerId=t,this.profile=n}}class va extends ma{constructor(e,t,n,r){super(e,t,n),this.username=r}}class ya extends ma{constructor(e,t){super(e,"facebook.com",t)}}class _a extends va{constructor(e,t){super(e,"github.com",t,"string"==typeof(null==t?void 0:t.login)?null==t?void 0:t.login:null)}}class wa extends ma{constructor(e,t){super(e,"google.com",t)}}class ba extends va{constructor(e,t,n){super(e,"twitter.com",t,n)}}function Ia(e){var{user:t,_tokenResponse:n}=e;return t.isAnonymous&&!n?{providerId:null,isNewUser:!1,profile:null}:function(e){if(!e)return null;var t=e["providerId"],n=e.rawUserInfo?JSON.parse(e.rawUserInfo):{},r=e.isNewUser||"identitytoolkit#SignupNewUserResponse"===e.kind;if(!t&&null!=e&&e.idToken){var i=null===(i=null===(i=Mi(e.idToken))||void 0===i?void 0:i.firebase)||void 0===i?void 0:i.sign_in_provider;if(i){i="anonymous"!==i&&"custom"!==i?i:null;return new ma(r,i)}}if(!t)return null;switch(t){case"facebook.com":return new ya(r,n);case"github.com":return new _a(r,n);case"google.com":return new wa(r,n);case"twitter.com":return new ba(r,n,e.screenName||null);case"custom":case"anonymous":return new ma(r,null);default:return new ma(r,t,n)}}(n)}class Ta{constructor(e,t,n){this.type=e,this.credential=t,this.user=n}static _fromIdtoken(e,t){return new Ta("enroll",e,t)}static _fromMfaPendingCredential(e){return new Ta("signin",e)}toJSON(){return{multiFactorSession:{["enroll"===this.type?"idToken":"pendingCredential"]:this.credential}}}static fromJSON(e){var t;if(null!=e&&e.multiFactorSession){if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.pendingCredential)return Ta._fromMfaPendingCredential(e.multiFactorSession.pendingCredential);if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.idToken)return Ta._fromIdtoken(e.multiFactorSession.idToken)}return null}}class Ea{constructor(e,t,n){this.session=e,this.hints=t,this.signInResolver=n}static _fromError(e,i){const s=ms(e),a=i.customData._serverResponse;var t=(a.mfaInfo||[]).map(e=>sa._fromServerResponse(s,e));gi(a.mfaPendingCredential,s,"internal-error");const o=Ta._fromMfaPendingCredential(a.mfaPendingCredential);return new Ea(o,t,async e=>{var t=await e._process(s,o);delete a.mfaInfo,delete a.mfaPendingCredential;var n=Object.assign(Object.assign({},a),{idToken:t.idToken,refreshToken:t.refreshToken});switch(i.operationType){case"signIn":var r=await Ks._fromIdTokenResponse(s,i.operationType,n);return await s._updateCurrentUser(r.user),r;case"reauthenticate":return gi(i.user,s,"internal-error"),Ks._forOperation(i.user,i.operationType,n);default:ui(s,"internal-error")}})}async resolveSignIn(e){return this.signInResolver(e)}}class Ca{constructor(t){this.user=t,this.enrolledFactors=[],t._onReload(e=>{e.mfaInfo&&(this.enrolledFactors=e.mfaInfo.map(e=>sa._fromServerResponse(t.auth,e)))})}static _fromUser(e){return new Ca(e)}async getSession(){return Ta._fromIdtoken(await this.user.getIdToken(),this.user)}async enroll(e,t){const n=e;var r=await this.getSession(),r=await Li(this.user,n._process(this.user.auth,r,t));return await this.user._updateTokensIfNecessary(r),this.user.reload()}async unenroll(e){const t="string"==typeof e?e:e.uid;var n,r,i=await this.user.getIdToken();try{var s=await Li(this.user,(n=this.user.auth,r={idToken:i,mfaEnrollmentId:t},Si(n,"POST","/v2/accounts/mfaEnrollment:withdraw",ki(n,r))));this.enrolledFactors=this.enrolledFactors.filter(({uid:e})=>e!==t),await this.user._updateTokensIfNecessary(s),await this.user.reload()}catch(e){throw e}}}const ka=new WeakMap;const Sa="__sak";class Aa{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Sa,"1"),this.storage.removeItem(Sa),Promise.resolve(!0)):Promise.resolve(!1)}catch(e){return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){var t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}class Na extends Aa{constructor(){var e;super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=(Ji(e=w())||rs(e))&&function(){try{return!(!window||window===window.top)}catch(e){return!1}}(),this.fallbackToPolling=is(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const r of Object.keys(this.listeners)){var t=this.storage.getItem(r),n=this.localCache[r];t!==n&&e(r,n,t)}}onStorageEvent(e,t=!1){if(e.key){const r=e.key;if(t?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const i=this.storage.getItem(r);if(e.newValue!==i)null!==e.newValue?this.storage.setItem(r,e.newValue):this.storage.removeItem(r);else if(this.localCache[r]===e.newValue&&!t)return}var n=()=>{var e=this.storage.getItem(r);!t&&this.localCache[r]===e||this.notifyListeners(r,e)};const i=this.storage.getItem(r);C()&&10===document.documentMode&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(n,10):n()}else this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)})}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(t&&JSON.parse(t))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,n)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:n}),!0)})},1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){var t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}Na.type="LOCAL";const Ra=Na;class Da extends Aa{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}Da.type="SESSION";const Pa=Da;class xa{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){var e=this.receivers.find(e=>e.isListeningto(t));if(e)return e;e=new xa(t);return this.receivers.push(e),e}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:n,eventType:r,data:i}=t.data;var s=this.handlersMap[r];null!=s&&s.size&&(t.ports[0].postMessage({status:"ack",eventId:n,eventType:r}),s=Array.from(s).map(async e=>e(t.origin,i)),s=await Promise.all(s.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}})),t.ports[0].postMessage({status:"done",eventId:n,eventType:r,response:s}))}_subscribe(e,t){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),t&&0!==this.handlersMap[e].size||delete this.handlersMap[e],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function Oa(e="",t=10){let n="";for(let r=0;r{const i=Oa("",20);o.port1.start();const s=setTimeout(()=>{r(new Error("unsupported_event"))},a);l={messageChannel:o,onMessage(e){var t=e;if(t.data.eventId===i)switch(t.data.status){case"ack":clearTimeout(s),c=setTimeout(()=>{r(new Error("timeout"))},3e3);break;case"done":clearTimeout(c),n(t.data.response);break;default:clearTimeout(s),clearTimeout(c),r(new Error("invalid_response"))}}},this.handlers.add(l),o.port1.addEventListener("message",l.onMessage),this.target.postMessage({eventType:e,eventId:i,data:t},[o.port2])}).finally(()=>{l&&this.removeMessageHandler(l)})}}function La(){return window}function Fa(){return void 0!==La().WorkerGlobalScope&&"function"==typeof La().importScripts}const Ua="firebaseLocalStorageDb",Va="firebaseLocalStorage",qa="fbase_key";class Ba{constructor(e){this.request=e}toPromise(){return new Promise((e,t)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{t(this.request.error)})})}}function ja(e,t){return e.transaction([Va],t?"readwrite":"readonly").objectStore(Va)}function za(){const r=indexedDB.open(Ua,1);return new Promise((n,t)=>{r.addEventListener("error",()=>{t(r.error)}),r.addEventListener("upgradeneeded",()=>{const e=r.result;try{e.createObjectStore(Va,{keyPath:qa})}catch(e){t(e)}}),r.addEventListener("success",async()=>{const e=r.result;var t;e.objectStoreNames.contains(Va)?n(e):(e.close(),t=indexedDB.deleteDatabase(Ua),await new Ba(t).toPromise(),n(await za()))})})}async function $a(e,t,n){var r=ja(e,!0).put({fbase_key:t,value:n});return new Ba(r).toPromise()}function Ka(e,t){var n=ja(e,!0).delete(t);return new Ba(n).toPromise()}class Wa{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db||(this.db=await za(),this.db)}async _withRetries(e){let t=0;for(;;)try{return e(await this._openDb())}catch(e){if(3{const n=await this._poll();return{keyProcessed:n.includes(t.key)}}),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){var e,t,n;this.activeServiceWorker=await async function(){if(null===navigator||void 0===navigator||!navigator.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}(),this.activeServiceWorker&&(this.sender=new Ma(this.activeServiceWorker),(n=await this.sender._send("ping",{},800))&&null!==(e=n[0])&&void 0!==e&&e.fulfilled&&null!==(t=n[0])&&void 0!==t&&t.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0))}async notifyServiceWorker(e){var t;if(this.sender&&this.activeServiceWorker&&((null===(t=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===t?void 0:t.controller)||null)===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;var e=await za();return await $a(e,Sa,"1"),await Ka(e,Sa),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(t,n){return this._withPendingWrite(async()=>(await this._withRetries(e=>$a(e,t,n)),this.localCache[t]=n,this.notifyServiceWorker(t)))}async _get(t){var e=await this._withRetries(e=>async function(e,t){var n=ja(e,!1).get(t);return void 0===(n=await new Ba(n).toPromise())?null:n.value}(e,t));return this.localCache[t]=e}async _remove(t){return this._withPendingWrite(async()=>(await this._withRetries(e=>Ka(e,t)),delete this.localCache[t],this.notifyServiceWorker(t)))}async _poll(){var e,t,n=await this._withRetries(e=>{var t=ja(e,!1).getAll();return new Ba(t).toPromise()});if(!n)return[];if(0!==this.pendingWrites)return[];const r=[],i=new Set;for({fbase_key:e,value:t}of n)i.add(e),JSON.stringify(this.localCache[e])!==JSON.stringify(t)&&(this.notifyListeners(e,t),r.push(e));for(const s of Object.keys(this.localCache))this.localCache[s]&&!i.has(s)&&(this.notifyListeners(s,null),r.push(s));return r}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&this.stopPolling()}}Wa.type="LOCAL";const Ga=Wa;class Ha{constructor(e){this.auth=e,this.counter=1e12,this._widgets=new Map}render(e,t){var n=this.counter;return this._widgets.set(n,new Qa(e,this.auth.name,t||{})),this.counter++,n}reset(e){var t,n=e||1e12;null===(t=this._widgets.get(n))||void 0===t||t.delete(),this._widgets.delete(n)}getResponse(e){var t;return(null===(t=this._widgets.get(e||1e12))||void 0===t?void 0:t.getResponse())||""}async execute(e){var t;return null===(t=this._widgets.get(e||1e12))||void 0===t||t.execute(),""}}class Qa{constructor(e,t,n){this.params=n,this.timerId=null,this.deleted=!1,this.responseToken=null,this.clickHandler=()=>{this.execute()};var r="string"==typeof e?document.getElementById(e):e;gi(r,"argument-error",{appName:t}),this.container=r,this.isVisible="invisible"!==this.params.size,this.isVisible?this.execute():this.container.addEventListener("click",this.clickHandler)}getResponse(){return this.checkIfDeleted(),this.responseToken}delete(){this.checkIfDeleted(),this.deleted=!0,this.timerId&&(clearTimeout(this.timerId),this.timerId=null),this.container.removeEventListener("click",this.clickHandler)}execute(){this.checkIfDeleted(),this.timerId||(this.timerId=window.setTimeout(()=>{this.responseToken=function(e){const t=[],n="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r{if(this.timerId=null,this.responseToken=null,t)try{t()}catch(e){}this.isVisible&&this.execute()},6e4)},500))}checkIfDeleted(){if(this.deleted)throw new Error("reCAPTCHA mock was already deleted!")}}const Ya=hs("rcb"),Ja=new bi(3e4,6e4);class Xa{constructor(){var e;this.hostLanguage="",this.counter=0,this.librarySeparatelyLoaded=!(null===(e=La().grecaptcha)||void 0===e||!e.render)}load(s,a=""){var e;return gi((e=a).length<=6&&/^\s*[a-zA-Z0-9\-]*\s*$/.test(e),s,"argument-error"),this.shouldResolveImmediately(a)&&os(La().grecaptcha)?Promise.resolve(La().grecaptcha):new Promise((t,n)=>{const i=La().setTimeout(()=>{n(hi(s,"network-request-failed"))},Ja.get());La()[Ya]=()=>{La().clearTimeout(i),delete La()[Ya];const e=La().grecaptcha;if(e&&os(e)){const r=e.render;e.render=(e,t)=>{var n=r(e,t);return this.counter++,n},this.hostLanguage=a,t(e)}else n(hi(s,"internal-error"))},us(`https://www.google.com/recaptcha/api.js??${j({onload:Ya,render:"explicit",hl:a})}`).catch(()=>{clearTimeout(i),n(hi(s,"internal-error"))})})}clearedOneInstance(){this.counter--}shouldResolveImmediately(e){var t;return!(null===(t=La().grecaptcha)||void 0===t||!t.render)&&(e===this.hostLanguage||0{const n=e=>{e&&(this.tokenChangeListeners.delete(n),t(e))};this.tokenChangeListeners.add(n),this.isInvisible&&r.execute(e)})}render(){try{this.assertNotDestroyed()}catch(e){return Promise.reject(e)}return this.renderPromise||(this.renderPromise=this.makeRenderPromise().catch(e=>{throw this.renderPromise=null,e}),this.renderPromise)}_reset(){this.assertNotDestroyed(),null!==this.widgetId&&this.getAssertedRecaptcha().reset(this.widgetId)}clear(){this.assertNotDestroyed(),this.destroyed=!0,this._recaptchaLoader.clearedOneInstance(),this.isInvisible||this.container.childNodes.forEach(e=>{this.container.removeChild(e)})}validateStartingState(){gi(!this.parameters.sitekey,this.auth,"argument-error"),gi(this.isInvisible||!this.container.hasChildNodes(),this.auth,"argument-error"),gi("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment")}makeTokenCallback(n){return t=>{if(this.tokenChangeListeners.forEach(e=>e(t)),"function"==typeof n)n(t);else if("string"==typeof n){const e=La()[n];"function"==typeof e&&e(t)}}}assertNotDestroyed(){gi(!this.destroyed,this.auth,"internal-error")}async makeRenderPromise(){if(await this.init(),!this.widgetId){let e=this.container;var t;this.isInvisible||(t=document.createElement("div"),e.appendChild(t),e=t),this.widgetId=this.getAssertedRecaptcha().render(e,this.parameters)}return this.widgetId}async init(){gi(_i()&&!Fa(),this.auth,"internal-error"),await function(){let t=null;return new Promise(e=>{"complete"!==document.readyState?(t=()=>e(),window.addEventListener("load",t)):e()}).catch(e=>{throw t&&window.removeEventListener("load",t),e})}(),this.recaptcha=await this._recaptchaLoader.load(this.auth,this.auth.languageCode||void 0);var e=await((await Si(this.auth,"GET","/v1/recaptchaParams")).recaptchaSiteKey||"");gi(e,this.auth,"internal-error"),this.parameters.sitekey=e}getAssertedRecaptcha(){return gi(this.recaptcha,this.auth,"internal-error"),this.recaptcha}}class ro{constructor(e,t){this.verificationId=e,this.onConfirmation=t}confirm(e){var t=Ps._fromVerification(this.verificationId,e);return this.onConfirmation(t)}}async function io(t,n,r){var i,s,a,o,c,l,u=await r.verify();try{gi("string"==typeof u,t,"argument-error"),gi(r.type===eo,t,"argument-error");let e;if(e="string"==typeof n?{phoneNumber:n}:n,"session"in e){var h=e.session;if("phoneNumber"in e)return gi("enroll"===h.type,t,"internal-error"),(c=t,l={idToken:h.credential,phoneEnrollmentInfo:{phoneNumber:e.phoneNumber,recaptchaToken:u}},await Si(c,"POST","/v2/accounts/mfaEnrollment:start",ki(c,l))).phoneSessionInfo.sessionInfo;gi("signin"===h.type,t,"internal-error");var d=(null===(i=e.multiFactorHint)||void 0===i?void 0:i.uid)||e.multiFactorUid;return gi(d,t,"missing-multi-factor-info"),(o={mfaPendingCredential:h.credential,mfaEnrollmentId:d,phoneSignInInfo:{recaptchaToken:u}},await Si(t,"POST","/v2/accounts/mfaSignIn:start",ki(t,o))).phoneResponseInfo.sessionInfo}var p=(s=t,a={phoneNumber:e.phoneNumber,recaptchaToken:u},await Si(s,"POST","/v1/accounts:sendVerificationCode",ki(s,a)))["sessionInfo"];return p}finally{r._reset()}}class so{constructor(e){this.providerId=so.PROVIDER_ID,this.auth=ms(e)}verifyPhoneNumber(e,t){return io(this.auth,e,ae(t))}static credential(e,t){return Ps._fromVerification(e,t)}static credentialFromResult(e){var t=e;return so.credentialFromTaggedObject(t)}static credentialFromError(e){return so.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{phoneNumber:t,temporaryProof:n}=e;return t&&n?Ps._fromTokenResponse(t,n):null}}function ao(e,t){return t?$i(t):(gi(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}so.PROVIDER_ID="phone",so.PHONE_SIGN_IN_METHOD="phone";class oo extends bs{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return Ns(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Ns(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return Ns(e,this._buildIdpRequest())}_buildIdpRequest(e){const t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}}function co(e){return ea(e.auth,new oo(e),e.bypassAuthState)}function lo(e){var{auth:t,user:n}=e;return gi(n,t,"internal-error"),Zs(n,new oo(e),e.bypassAuthState)}async function uo(e){var{auth:t,user:n}=e;return gi(n,t,"internal-error"),Js(n,new oo(e),e.bypassAuthState)}class ho{constructor(e,t,n,r,i=!1){this.auth=e,this.resolver=n,this.user=r,this.bypassAuthState=i,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(e){this.reject(e)}})}async onAuthEvent(e){var{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:s,type:a}=e;if(s)this.reject(s);else{r={auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(r))}catch(e){this.reject(e)}}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return co;case"linkViaPopup":case"linkViaRedirect":return uo;case"reauthViaPopup":case"reauthViaRedirect":return lo;default:ui(this.auth,"internal-error")}}resolve(e){vi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){vi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}const po=new bi(2e3,1e4);class fo extends ho{constructor(e,t,n,r,i){super(e,t,r,i),this.provider=n,this.authWindow=null,this.pollId=null,fo.currentPopupAction&&fo.currentPopupAction.cancel(),fo.currentPopupAction=this}async executeNotNull(){var e=await this.execute();return gi(e,this.auth,"internal-error"),e}async onExecution(){vi(1===this.filter.length,"Popup operations only handle one event");var e=Oa();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)}),this.resolver._isIframeWebStorageSupported(this.auth,e=>{e||this.reject(hi(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){var e;return(null===(e=this.authWindow)||void 0===e?void 0:e.associatedEvent)||null}cancel(){this.reject(hi(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,fo.currentPopupAction=null}pollUserCancellation(){const t=()=>{var e;null!==(e=null===(e=this.authWindow)||void 0===e?void 0:e.window)&&void 0!==e&&e.closed?this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(hi(this.auth,"popup-closed-by-user"))},8e3):this.pollId=window.setTimeout(t,po.get())};t()}}fo.currentPopupAction=null;const go="pendingRedirect",mo=new Map;class vo extends ho{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let t=mo.get(this.auth._key());if(!t){try{const e=await async function(e,t){const n=bo(t),r=wo(e);if(!await r._isAvailable())return!1;var i="true"===await r._get(n);return await r._remove(n),i}(this.resolver,this.auth)?await super.execute():null;t=()=>Promise.resolve(e)}catch(e){t=()=>Promise.reject(e)}mo.set(this.auth._key(),t)}return this.bypassAuthState||mo.set(this.auth._key(),()=>Promise.resolve(null)),t()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){var t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}async function yo(e,t){return wo(e)._set(bo(t),"true")}function _o(e,t){mo.set(e._key(),t)}function wo(e){return $i(e._redirectPersistence)}function bo(e){return Gi(go,e.config.apiKey,e.name)}function Io(e,t,n){return async function(e,t,n){var r=ms(e);pi(e,t,Ms),await r._initializationPromise;const i=ao(r,n);return await yo(i,r),i._openRedirect(r,t,"signInViaRedirect")}(e,t,n)}function To(e,t,n){return async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms),await r.auth._initializationPromise;const i=ao(r.auth,n);await yo(i,r.auth);var s=await ko(r);return i._openRedirect(r.auth,t,"reauthViaRedirect",s)}(e,t,n)}function Eo(e,t,n){return async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms),await r.auth._initializationPromise;const i=ao(r.auth,n);await Xs(!1,r,t.providerId),await yo(i,r.auth);var s=await ko(r);return i._openRedirect(r.auth,t,"linkViaRedirect",s)}(e,t,n)}async function Co(e,t,n=!1){const r=ms(e);var i=ao(r,t);const s=new vo(r,i,n),a=await s.execute();return a&&!n&&(delete a.user._redirectEventId,await r._persistUserIfCurrent(a.user),await r._setRedirectUser(null,t)),a}async function ko(e){var t=Oa(`${e.uid}:::`);return e._redirectEventId=t,await e.auth._setRedirectUser(e),await e.auth._persistUserIfCurrent(e),t}class So{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(t){if(this.hasEventBeenHandled(t))return!1;let n=!1;return this.consumers.forEach(e=>{this.isEventForConsumer(t,e)&&(n=!0,this.sendToConsumer(t,e),this.saveEventToCache(t))}),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return No(e);default:return!1}}(t)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=t,n=!0)),n}sendToConsumer(e,t){var n;e.error&&!No(e)?(n=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error",t.onError(hi(this.auth,n))):t.onAuthEvent(e)}isEventForConsumer(e,t){var n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return 6e5<=Date.now()-this.lastProcessedEventTime&&this.cachedEventUids.clear(),this.cachedEventUids.has(Ao(e))}saveEventToCache(e){this.cachedEventUids.add(Ao(e)),this.lastProcessedEventTime=Date.now()}}function Ao(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}function No({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}async function Ro(e,t={}){return Si(e,"GET","/v1/projects",t)}const Do=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Po=/^https?/;async function xo(e){if(!e.config.emulator){var t=(await Ro(e))["authorizedDomains"];for(const n of t)try{if(function(e){const t=yi(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith("chrome-extension://")){var i=new URL(e);return""===i.hostname&&""===r?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&i.hostname===r}if(!Po.test(n))return!1;if(Do.test(e))return r===e;const s=e.replace(/\./g,"\\."),a=new RegExp("^(.+\\."+s+"|"+s+")$","i");return a.test(r)}(n))return}catch(e){}ui(e,"unauthorized-domain")}}const Oo=new bi(3e4,6e4);function Mo(){const t=La().___jsl;if(null!==t&&void 0!==t&&t.H)for(const n of Object.keys(t.H))if(t.H[n].r=t.H[n].r||[],t.H[n].L=t.H[n].L||[],t.H[n].r=[...t.H[n].L],t.CP)for(let e=0;e{function n(){Mo(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{Mo(),t(hi(i,"network-request-failed"))},timeout:Oo.get()})}if(null!==(r=null===(r=La().gapi)||void 0===r?void 0:r.iframes)&&void 0!==r&&r.Iframe)e(gapi.iframes.getContext());else{if(null===(r=La().gapi)||void 0===r||!r.load){var r=hs("iframefcb");return La()[r]=()=>{gapi.load?n():t(hi(i,"network-request-failed"))},us(`https://apis.google.com/js/api.js?onload=${r}`).catch(e=>t(e))}n()}}).catch(e=>{throw Lo=null,e})),Lo}const Uo=new bi(5e3,15e3),Vo="__/auth/iframe",qo="emulator/auth/iframe",Bo={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},jo=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);async function zo(a){const e=await Fo(a);var t=La().gapi;return gi(t,a,"internal-error"),e.open({where:document.body,url:function(e){var t=e.config;gi(t.authDomain,e,"auth-domain-config-required");var n=t.emulator?Ii(t,qo):`https://${e.config.authDomain}/${Vo}`;const r={apiKey:t.apiKey,appName:e.name,v:Ye};(t=jo.get(e.config.apiHost))&&(r.eid=t);const i=e._getFrameworks();return i.length&&(r.fw=i.join(",")),`${n}?${j(r).slice(1)}`}(a),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Bo,dontclear:!0},s=>new Promise(async(e,t)=>{await s.restyle({setHideOnLeave:!1});const n=hi(a,"network-request-failed"),r=La().setTimeout(()=>{t(n)},Uo.get());function i(){La().clearTimeout(r),e(s)}s.ping(i).then(i,()=>{t(n)})}))}const $o={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Ko{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function Wo(e,t,n,r=500,i=600){var s=Math.max((window.screen.availHeight-i)/2,0).toString(),a=Math.max((window.screen.availWidth-r)/2,0).toString();let o="";const c=Object.assign(Object.assign({},$o),{width:r.toString(),height:i.toString(),top:s,left:a});s=w().toLowerCase();n&&(o=Xi(s)?"_blank":n),Yi(s)&&(t=t||"http://localhost",c.scrollbars="yes");var l,a=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,"");if([n=w()]=[s],rs(n)&&null!==(l=window.navigator)&&void 0!==l&&l.standalone&&"_self"!==o)return function(e,t){const n=document.createElement("a");n.href=e,n.target=t;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}(t||"",o),new Ko(null);const u=window.open(t||"",o,a);gi(u,e,"popup-blocked");try{u.focus()}catch(e){}return new Ko(u)}const Go="__/auth/handler",Ho="emulator/auth/handler",Qo=encodeURIComponent("fac");async function Yo(e,t,n,r,i,s){gi(e.config.authDomain,e,"auth-domain-config-required"),gi(e.config.apiKey,e,"invalid-api-key");const a={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Ye,eventId:i};if(t instanceof Ms){t.setDefaultLanguage(e.languageCode),a.providerId=t.providerId||"",U(t.getCustomParameters())||(a.customParameters=JSON.stringify(t.getCustomParameters()));for(var[o,c]of Object.entries(s||{}))a[o]=c}if(t instanceof Ls){const h=t.getScopes().filter(e=>""!==e);0{})}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:r,promise:n}=this.eventManagers[t];return r?Promise.resolve(r):(vi(n,"If manager is not set, promise should be"),n)}const n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch(()=>{delete this.eventManagers[t]}),n}async initAndGetManager(t){const e=await zo(t),n=new So(t);return e.register("authEvent",e=>{return gi(null==e?void 0:e.authEvent,t,"invalid-auth-event"),{status:n.onEvent(e.authEvent)?"ACK":"ERROR"}},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[t._key()]={manager:n},this.iframes[t._key()]=e,n}_isIframeWebStorageSupported(n,r){const e=this.iframes[n._key()];e.send(Jo,{type:Jo},e=>{var t=null===(t=null==e?void 0:e[0])||void 0===t?void 0:t[Jo];void 0!==t&&r(!!t),ui(n,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=xo(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return is()||Ji()||rs()}};class Zo extends class{constructor(e){this.factorId=e}_process(e,t,n){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,n);case"signin":return this._finalizeSignIn(e,t.credential);default:return mi("unexpected MultiFactorSessionType")}}}{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new Zo(e)}_finalizeEnroll(e,t,n){return e=e,n={idToken:t,displayName:n,phoneVerificationInfo:this.credential._makeVerificationRequest()},Si(e,"POST","/v2/accounts/mfaEnrollment:finalize",ki(e,n))}_finalizeSignIn(e,t){return e=e,t={mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()},Si(e,"POST","/v2/accounts/mfaSignIn:finalize",ki(e,t))}}class ec{constructor(){}static assertion(e){return Zo._fromCredential(e)}}ec.FACTOR_ID="phone";var tc="@firebase/auth";class nc{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),(null===(e=this.auth.currentUser)||void 0===e?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(t){var e;this.assertAuthConfigured(),this.internalListeners.has(t)||(e=this.auth.onIdTokenChanged(e=>{t((null==e?void 0:e.stsTokenManager.accessToken)||null)}),this.internalListeners.set(t,e),this.updateProactiveRefresh())}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){gi(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){0{var n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat"),i=e.getProvider("app-check-internal");const{apiKey:s,authDomain:a}=n.options;gi(s&&!s.includes(":"),"invalid-api-key",{appName:n.name});var o={apiKey:s,authDomain:a,clientPlatform:sc,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:ss(sc)},o=new gs(n,r,i,o);return function(e,t){const n=(null==t?void 0:t.persistence)||[];var r=(Array.isArray(n)?n:[n]).map($i);null!=t&&t.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,null==t?void 0:t.popupRedirectResolver)}(o,t),o},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{const r=e.getProvider("auth-internal");r.initialize()})),We(new oe("auth-internal",e=>{var t=ms(e.getProvider("auth").getImmediate());return e=t,new nc(e)},"PRIVATE").setInstantiationMode("EXPLICIT")),et(tc,"0.23.2",function(e){switch(e){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";default:return}}(sc)),et(tc,"0.23.2","esm2017");async function oc(e,t,n){var r=ac()["BuildInfo"];vi(t.sessionId,"AuthEvent did not contain a session ID");var i=await async function(e){const t=function(e){if(vi(/[0-9a-zA-Z]+/.test(e),"Can only convert alpha-numeric strings"),"undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e);const t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let r=0;re.toString(16).padStart(2,"0")).join("")}(t.sessionId);const s={};return rs()?s.ibi=r.packageName:es()?s.apn=r.packageName:ui(e,"operation-not-supported-in-this-environment"),r.displayName&&(s.appDisplayName=r.displayName),s.sessionId=i,Yo(e,n,t.type,void 0,null!==(i=t.eventId)&&void 0!==i?i:void 0,s)}function cc(r){const i=ac()["cordova"];return new Promise(n=>{i.plugins.browsertab.isAvailable(e=>{let t=null;e?i.plugins.browsertab.openUrl(r):t=i.InAppBrowser.open(r,(e=w(),/(iPad|iPhone|iPod).*OS 7_\d/i.test(e)||/(iPad|iPhone|iPod).*OS 8_\d/i.test(e)?"_blank":"_system"),"location=yes"),n(t)})})}const lc=20;class uc extends So{constructor(){super(...arguments),this.passiveListeners=new Set,this.initPromise=new Promise(e=>{this.resolveInialized=e})}addPassiveListener(e){this.passiveListeners.add(e)}removePassiveListener(e){this.passiveListeners.delete(e)}resetRedirect(){this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1}onEvent(t){return this.resolveInialized(),this.passiveListeners.forEach(e=>e(t)),super.onEvent(t)}async initialized(){await this.initPromise}}function hc(e,t,n=null){return{type:t,eventId:n,urlResponse:null,sessionId:function(){const e=[],t="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r{};try{await new Promise((n,e)=>{let t=null;function r(){var e;n();const t=null===(e=l.plugins.browsertab)||void 0===e?void 0:e.close;"function"==typeof t&&t(),"function"==typeof(null==c?void 0:c.close)&&c.close()}function i(){t=t||window.setTimeout(()=>{e(hi(a,"redirect-cancelled-by-user"))},2e3)}function s(){"visible"===(null===document||void 0===document?void 0:document.visibilityState)&&i()}o.addPassiveListener(r),document.addEventListener("resume",i,!1),es()&&document.addEventListener("visibilitychange",s,!1),u=()=>{o.removePassiveListener(r),document.removeEventListener("resume",i,!1),document.removeEventListener("visibilitychange",s,!1),t&&window.clearTimeout(t)}})}finally{u()}}(e,a,o)}_isIframeWebStorageSupported(e,t){throw new Error("Method not implemented.")}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=async function(e){var t=ac()["BuildInfo"];const n={};rs()?n.iosBundleId=t.packageName:es()?n.androidPackageName=t.packageName:ui(e,"operation-not-supported-in-this-environment"),await Ro(e,n)}(e)),this.originValidationPromises[t]}attachCallbackListeners(r,i){const{universalLinks:e,handleOpenURL:t,BuildInfo:n}=ac(),s=setTimeout(async()=>{await dc(r),i.onEvent(yc())},500),a=async e=>{clearTimeout(s);var t=await dc(r);let n=null;t&&null!=e&&e.url&&(n=pc(t,e.url)),i.onEvent(n||yc())};void 0!==e&&"function"==typeof e.subscribe&&e.subscribe(null,a);const o=t,c=`${n.packageName.toLowerCase()}://`;ac().handleOpenURL=async e=>{if(e.toLowerCase().startsWith(c)&&a({url:e}),"function"==typeof o)try{o(e)}catch(e){console.error(e)}}}};function yc(){return{type:"unknown",eventId:null,sessionId:null,urlResponse:null,postBody:null,tenantId:null,error:hi("no-auth-event")}}var _c;function wc(){var e;return(null===(e=null===self||void 0===self?void 0:self.location)||void 0===e?void 0:e.protocol)||null}function bc(e=w()){return!("file:"!==wc()&&"ionic:"!==wc()&&"capacitor:"!==wc()||!e.toLowerCase().match(/iphone|ipad|ipod|android/))}function Ic(e=w()){return C()&&11===(null===document||void 0===document?void 0:document.documentMode)||([e=w()]=[e],/Edge\/\d+/.test(e))}function Tc(){try{const t=self.localStorage;var e=Oa();if(t)return t.setItem(e,"1"),t.removeItem(e),!Ic()||S()}catch(e){return Ec()&&S()}return!1}function Ec(){return"undefined"!=typeof global&&"WorkerGlobalScope"in global&&"importScripts"in global}function Cc(){return("http:"===wc()||"https:"===wc()||T()||bc())&&!(E()||I())&&Tc()&&!Ec()}function kc(){return bc()&&"undefined"!=typeof document}const Sc={LOCAL:"local",NONE:"none",SESSION:"session"},Ac=gi,Nc="persistence";async function Rc(e){await e._initializationPromise;const t=Dc();var n=Gi(Nc,e.config.apiKey,e.name);t&&t.setItem(n,e._getPersistence())}function Dc(){var e;try{return(null===(e="undefined"!=typeof window?window:null)?void 0:e.sessionStorage)||null}catch(e){return null}}const Pc=gi;class xc{constructor(){this.browserResolver=$i(Xo),this.cordovaResolver=$i(vc),this.underlyingResolver=null,this._redirectPersistence=Pa,this._completeRedirectFn=Co,this._overrideRedirectResult=_o}async _initialize(e){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._initialize(e)}async _openPopup(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openPopup(e,t,n,r)}async _openRedirect(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openRedirect(e,t,n,r)}_isIframeWebStorageSupported(e,t){this.assertedUnderlyingResolver._isIframeWebStorageSupported(e,t)}_originValidation(e){return this.assertedUnderlyingResolver._originValidation(e)}get _shouldInitProactively(){return kc()||this.browserResolver._shouldInitProactively}get assertedUnderlyingResolver(){return Pc(this.underlyingResolver,"internal-error"),this.underlyingResolver}async selectUnderlyingResolver(){var e;this.underlyingResolver||(e=await(!!kc()&&new Promise(e=>{const t=setTimeout(()=>{e(!1)},1e3);document.addEventListener("deviceready",()=>{clearTimeout(t),e(!0)})})),this.underlyingResolver=e?this.cordovaResolver:this.browserResolver)}}function Oc(e){return e.unwrap()}function Mc(e,t){var n,r,i,s=null===(r=t.customData)||void 0===r?void 0:r._tokenResponse;if("auth/multi-factor-auth-required"===(null==t?void 0:t.code)){const o=t;o.resolver=new Vc(e,(n=t,i=ae(e),gi((a=n).customData.operationType,i,"argument-error"),gi(null===(r=a.customData._serverResponse)||void 0===r?void 0:r.mfaPendingCredential,i,"argument-error"),Ea._fromError(i,a)))}else if(s){var a=Lc(t);const c=t;a&&(c.credential=a,c.tenantId=s.tenantId||void 0,c.email=s.email||void 0,c.phoneNumber=s.phoneNumber||void 0)}}function Lc(e){var t=(e instanceof R?e.customData:e)["_tokenResponse"];if(!t)return null;if(!(e instanceof R)&&"temporaryProof"in t&&"phoneNumber"in t)return so.credentialFromResult(e);const n=t.providerId;if(!n||n===ni.PASSWORD)return null;let r;switch(n){case ni.GOOGLE:r=Vs;break;case ni.FACEBOOK:r=Us;break;case ni.GITHUB:r=qs;break;case ni.TWITTER:r=zs;break;default:var{oauthIdToken:i,oauthAccessToken:s,oauthTokenSecret:a,pendingToken:o,nonce:c}=t;return s||a||i||o?o?n.startsWith("saml.")?Bs._create(n,o):Rs._fromParams({providerId:n,signInMethod:n,pendingToken:o,idToken:i,accessToken:s}):new Fs(n).credential({idToken:i,accessToken:s,rawNonce:c}):null}return e instanceof R?r.credentialFromError(e):r.credentialFromResult(e)}function Fc(t,e){return e.catch(e=>{throw e instanceof R&&Mc(t,e),e}).then(e=>{var t=e.operationType,n=e.user;return{operationType:t,credential:Lc(e),additionalUserInfo:Ia(e),user:qc.getOrCreate(n)}})}async function Uc(t,e){const n=await e;return{verificationId:n.verificationId,confirm:e=>Fc(t,n.confirm(e))}}class Vc{constructor(e,t){this.resolver=t,this.auth=e.wrapped()}get session(){return this.resolver.session}get hints(){return this.resolver.hints}resolveSignIn(e){return Fc(Oc(this.auth),this.resolver.resolveSignIn(e))}}class qc{constructor(e){var t;this._delegate=e,this.multiFactor=(t=ae(e),ka.has(t)||ka.set(t,Ca._fromUser(t)),ka.get(t))}static getOrCreate(e){return qc.USER_MAP.has(e)||qc.USER_MAP.set(e,new qc(e)),qc.USER_MAP.get(e)}delete(){return this._delegate.delete()}reload(){return this._delegate.reload()}toJSON(){return this._delegate.toJSON()}getIdTokenResult(e){return this._delegate.getIdTokenResult(e)}getIdToken(e){return this._delegate.getIdToken(e)}linkAndRetrieveDataWithCredential(e){return this.linkWithCredential(e)}async linkWithCredential(e){return Fc(this.auth,na(this._delegate,e))}async linkWithPhoneNumber(e,t){return Uc(this.auth,async function(e,t,n){const r=ae(e);await Xs(!1,r,"phone");var i=await io(r.auth,t,ae(n));return new ro(i,e=>na(r,e))}(this._delegate,e,t))}async linkWithPopup(e){return Fc(this.auth,async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms);var i=ao(r.auth,n);const s=new fo(r.auth,"linkViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,xc))}async linkWithRedirect(e){return await Rc(ms(this.auth)),Eo(this._delegate,e,xc)}reauthenticateAndRetrieveDataWithCredential(e){return this.reauthenticateWithCredential(e)}async reauthenticateWithCredential(e){return Fc(this.auth,ra(this._delegate,e))}reauthenticateWithPhoneNumber(e,t){return Uc(this.auth,async function(e,t,n){const r=ae(e);var i=await io(r.auth,t,ae(n));return new ro(i,e=>ra(r,e))}(this._delegate,e,t))}reauthenticateWithPopup(e){return Fc(this.auth,async function(e,t,n){var r=ae(e);pi(r.auth,t,Ms);var i=ao(r.auth,n);const s=new fo(r.auth,"reauthViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,xc))}async reauthenticateWithRedirect(e){return await Rc(ms(this.auth)),To(this._delegate,e,xc)}sendEmailVerification(e){return da(this._delegate,e)}async unlink(e){return await Ys(this._delegate,e),this}updateEmail(e){return ga(ae(this._delegate),e,null)}updatePassword(e){return ga(ae(this._delegate),null,e)}updatePhoneNumber(e){return async function(e,t){await Js(ae(e),t)}(this._delegate,e)}updateProfile(e){return fa(this._delegate,e)}verifyBeforeUpdateEmail(e,t){return pa(this._delegate,e,t)}get emailVerified(){return this._delegate.emailVerified}get isAnonymous(){return this._delegate.isAnonymous}get metadata(){return this._delegate.metadata}get phoneNumber(){return this._delegate.phoneNumber}get providerData(){return this._delegate.providerData}get refreshToken(){return this._delegate.refreshToken}get tenantId(){return this._delegate.tenantId}get displayName(){return this._delegate.displayName}get email(){return this._delegate.email}get photoURL(){return this._delegate.photoURL}get providerId(){return this._delegate.providerId}get uid(){return this._delegate.uid}get auth(){return this._delegate.auth}}qc.USER_MAP=new WeakMap;const Bc=gi;class jc{constructor(e,t){if(this.app=e,t.isInitialized())return this._delegate=t.getImmediate(),void this.linkUnderlyingAuth();var n=e.options["apiKey"];Bc(n,"invalid-api-key",{appName:e.name}),Bc(n,"invalid-api-key",{appName:e.name});var r="undefined"!=typeof window?xc:void 0;this._delegate=t.initialize({options:{persistence:function(e,t){const n=function(e,t){const n=Dc();if(!n)return[];var r=Gi(Nc,e,t);switch(n.getItem(r)){case Sc.NONE:return[Wi];case Sc.LOCAL:return[Ga,Pa];case Sc.SESSION:return[Pa];default:return[]}}(e,t);"undefined"==typeof self||n.includes(Ga)||n.push(Ga);if("undefined"!=typeof window)for(const r of[Ra,Pa])n.includes(r)||n.push(r);n.includes(Wi)||n.push(Wi);return n}(n,e.name),popupRedirectResolver:r}}),this._delegate._updateErrorMap(si),this.linkUnderlyingAuth()}get emulatorConfig(){return this._delegate.emulatorConfig}get currentUser(){return this._delegate.currentUser?qc.getOrCreate(this._delegate.currentUser):null}get languageCode(){return this._delegate.languageCode}set languageCode(e){this._delegate.languageCode=e}get settings(){return this._delegate.settings}get tenantId(){return this._delegate.tenantId}set tenantId(e){this._delegate.tenantId=e}useDeviceLanguage(){this._delegate.useDeviceLanguage()}signOut(){return this._delegate.signOut()}useEmulator(e,t){ys(this._delegate,e,t)}applyActionCode(e){return la(this._delegate,e)}checkActionCode(e){return ua(this._delegate,e)}confirmPasswordReset(e,t){return async function(e,t,n){await Is(ae(e),{oobCode:t,newPassword:n})}(this._delegate,e,t)}async createUserWithEmailAndPassword(e,t){return Fc(this._delegate,async function(e,t,n){var r;const i=ms(e),s={returnSecureToken:!0,email:t,password:n,clientType:"CLIENT_TYPE_WEB"};let a;a=null!==(r=i._getRecaptchaConfig())&&void 0!==r&&r.emailPasswordEnabled?(o=await ps(i,s,"signUpPassword"),$s(i,o)):$s(i,s).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Sign-up is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-up flow.");var t=await ps(i,s,"signUpPassword");return $s(i,t)});var o=await a.catch(e=>Promise.reject(e)),o=await Ks._fromIdTokenResponse(i,"signIn",o);return await i._updateCurrentUser(o.user),o}(this._delegate,e,t))}fetchProvidersForEmail(e){return this.fetchSignInMethodsForEmail(e)}fetchSignInMethodsForEmail(e){return ha(this._delegate,e)}isSignInWithEmailLink(e){return this._delegate,e=e,"EMAIL_SIGNIN"===(null==(t=xs.parseLink(e))?void 0:t.operation);var t}async getRedirectResult(){Bc(Cc(),this._delegate,"operation-not-supported-in-this-environment");var e,t,n=(e=this._delegate,t=xc,await ms(e)._initializationPromise,await Co(e,t,!1));return n?Fc(this._delegate,Promise.resolve(n)):{credential:null,user:null}}addFrameworkForLogging(e){ms(this._delegate)._logFramework(e)}onAuthStateChanged(e,t,n){var{next:r,error:i,complete:s}=zc(e,t,n);return this._delegate.onAuthStateChanged(r,i,s)}onIdTokenChanged(e,t,n){var{next:r,error:i,complete:s}=zc(e,t,n);return this._delegate.onIdTokenChanged(r,i,s)}sendSignInLinkToEmail(e,t){return async function(e,t,n){var r;const i=ms(e),s={requestType:"EMAIL_SIGNIN",email:t,clientType:"CLIENT_TYPE_WEB"};function a(e,t){gi(t.handleCodeInApp,i,"argument-error"),t&&ca(i,e,t)}null!==(r=i._getRecaptchaConfig())&&void 0!==r&&r.emailPasswordEnabled?(a(r=await ps(i,s,"getOobCode",!0),n),await Ss(i,r)):(a(s,n),await Ss(i,s).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Email link sign-in is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-in flow.");var t=await ps(i,s,"getOobCode",!0);a(t,n),await Ss(i,t)}))}(this._delegate,e,t)}sendPasswordResetEmail(e,t){return async function(e,t,n){var r;const i=ms(e),s={requestType:"PASSWORD_RESET",email:t,clientType:"CLIENT_TYPE_WEB"};null!==(r=i._getRecaptchaConfig())&&void 0!==r&&r.emailPasswordEnabled?(r=await ps(i,s,"getOobCode",!0),n&&ca(i,r,n),await ks(i,r)):(n&&ca(i,s,n),await ks(i,s).catch(async e=>{if("auth/missing-recaptcha-token"!==e.code)return Promise.reject(e);console.log("Password resets are protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the password reset flow.");var t=await ps(i,s,"getOobCode",!0);n&&ca(i,t,n),await ks(i,t)}))}(this._delegate,e,t||void 0)}async setPersistence(e){var t,n;t=this._delegate,n=e,Ac(Object.values(Sc).includes(n),t,"invalid-persistence-type"),E()?Ac(n!==Sc.SESSION,t,"unsupported-persistence-type"):I()?Ac(n===Sc.NONE,t,"unsupported-persistence-type"):Ec()?Ac(n===Sc.NONE||n===Sc.LOCAL&&S(),t,"unsupported-persistence-type"):Ac(n===Sc.NONE||Tc(),t,"unsupported-persistence-type");let r;switch(e){case Sc.SESSION:r=Pa;break;case Sc.LOCAL:var i=await $i(Ga)._isAvailable();r=i?Ga:Ra;break;case Sc.NONE:r=Wi;break;default:return ui("argument-error",{appName:this._delegate.name})}return this._delegate.setPersistence(r)}signInAndRetrieveDataWithCredential(e){return this.signInWithCredential(e)}signInAnonymously(){return Fc(this._delegate,async function(e){const t=ms(e);if(await t._initializationPromise,null!==(n=t.currentUser)&&void 0!==n&&n.isAnonymous)return new Ks({user:t.currentUser,providerId:null,operationType:"signIn"});var n=await $s(t,{returnSecureToken:!0}),n=await Ks._fromIdTokenResponse(t,"signIn",n,!0);return await t._updateCurrentUser(n.user),n}(this._delegate))}signInWithCredential(e){return Fc(this._delegate,ta(this._delegate,e))}signInWithCustomToken(e){return Fc(this._delegate,ia(this._delegate,e))}signInWithEmailAndPassword(e,t){return Fc(this._delegate,(n=this._delegate,e=e,t=t,ta(ae(n),Os.credential(e,t))));var n}signInWithEmailLink(e,t){return Fc(this._delegate,async function(e,t,n){var r=ae(e),i=Os.credentialWithLink(t,n||yi());return gi(i._tenantId===(r.tenantId||null),r,"tenant-id-mismatch"),ta(r,i)}(this._delegate,e,t))}signInWithPhoneNumber(e,t){return Uc(this._delegate,async function(e,t,n){const r=ms(e);var i=await io(r,t,ae(n));return new ro(i,e=>ta(r,e))}(this._delegate,e,t))}async signInWithPopup(e){return Bc(Cc(),this._delegate,"operation-not-supported-in-this-environment"),Fc(this._delegate,async function(e,t,n){var r=ms(e);pi(e,t,Ms);var i=ao(r,n);const s=new fo(r,"signInViaPopup",t,i);return s.executeNotNull()}(this._delegate,e,xc))}async signInWithRedirect(e){return Bc(Cc(),this._delegate,"operation-not-supported-in-this-environment"),await Rc(this._delegate),Io(this._delegate,e,xc)}updateCurrentUser(e){return this._delegate.updateCurrentUser(e)}verifyPasswordResetCode(e){return async function(e,t){var n=(await ua(ae(e),t))["data"];return n.email}(this._delegate,e)}unwrap(){return this._delegate}_delete(){return this._delegate._delete()}linkUnderlyingAuth(){this._delegate.wrapped=()=>this}}function zc(e,t,n){let r=e;"function"!=typeof e&&({next:r,error:t,complete:n}=e);const i=r;return{next:e=>i(e&&qc.getOrCreate(e)),error:t,complete:n}}jc.Persistence=Sc;class $c{constructor(){this.providerId="phone",this._delegate=new so(Oc(wt.auth()))}static credential(e,t){return so.credential(e,t)}verifyPhoneNumber(e,t){return this._delegate.verifyPhoneNumber(e,t)}unwrap(){return this._delegate}}$c.PHONE_SIGN_IN_METHOD=so.PHONE_SIGN_IN_METHOD,$c.PROVIDER_ID=so.PROVIDER_ID;const Kc=gi;class Wc{constructor(e,t,n=wt.app()){var r;Kc(null===(r=n.options)||void 0===r?void 0:r.apiKey,"invalid-api-key",{appName:n.name}),this._delegate=new no(e,t,n.auth()),this.type=this._delegate.type}clear(){this._delegate.clear()}render(){return this._delegate.render()}verify(){return this._delegate.verify()}}(_c=wt).INTERNAL.registerComponent(new oe("auth-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("auth");return new jc(t,n)},"PUBLIC").setServiceProps({ActionCodeInfo:{Operation:{EMAIL_SIGNIN:ri.EMAIL_SIGNIN,PASSWORD_RESET:ri.PASSWORD_RESET,RECOVER_EMAIL:ri.RECOVER_EMAIL,REVERT_SECOND_FACTOR_ADDITION:ri.REVERT_SECOND_FACTOR_ADDITION,VERIFY_AND_CHANGE_EMAIL:ri.VERIFY_AND_CHANGE_EMAIL,VERIFY_EMAIL:ri.VERIFY_EMAIL}},EmailAuthProvider:Os,FacebookAuthProvider:Us,GithubAuthProvider:qs,GoogleAuthProvider:Vs,OAuthProvider:Fs,SAMLAuthProvider:js,PhoneAuthProvider:$c,PhoneMultiFactorGenerator:ec,RecaptchaVerifier:Wc,TwitterAuthProvider:zs,Auth:jc,AuthCredential:bs,Error:R}).setInstantiationMode("LAZY").setMultipleInstances(!1)),_c.registerVersion("@firebase/auth-compat","0.4.2");const Gc="@firebase/database";let Hc="";function Qc(e){Hc=e}class Yc{constructor(e){this.domStorage_=e,this.prefix_="firebase:"}set(e,t){null==t?this.domStorage_.removeItem(this.prefixedName_(e)):this.domStorage_.setItem(this.prefixedName_(e),O(t))}get(e){var t=this.domStorage_.getItem(this.prefixedName_(e));return null==t?null:x(t)}remove(e){this.domStorage_.removeItem(this.prefixedName_(e))}prefixedName_(e){return this.prefix_+e}toString(){return this.domStorage_.toString()}}class Jc{constructor(){this.cache_={},this.isInMemoryStorage=!0}set(e,t){null==t?delete this.cache_[e]:this.cache_[e]=t}get(e){return L(this.cache_,e)?this.cache_[e]:null}remove(e){delete this.cache_[e]}}var Xc,Zc,el,tl,nl,rl,il=function(e){try{if("undefined"!=typeof window&&void 0!==window[e]){const t=window[e];return t.setItem("firebase:sentinel","cache"),t.removeItem("firebase:sentinel"),new Yc(t)}}catch(e){}return new Jc};function sl(e){var t=function(t){const n=[];let r=0;for(let a=0;a>6|192:(e<65536?n[r++]=e>>12|224:(n[r++]=e>>18|240,n[r++]=e>>12&63|128),n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n}(e);const n=new K;return n.update(t),t=n.digest(),r.encodeByteArray(t)}const al=il("localStorage"),ol=il("sessionStorage"),cl=new me("@firebase/database"),ll=function(){let e=1;return function(){return e++}}(),ul=function(...e){let t="";for(let r=0;rn?r.push(e.substring(i,n)):r.push(e.substring(i,i+t));return r}const _l=function(e,t){f(!t||!0===e||!1===e,"Can't turn on custom loggers persistently."),!0===e?(cl.logLevel=m.VERBOSE,hl=cl.log.bind(cl),t&&ol.set("logging_enabled",!0)):"function"==typeof e?hl=e:(hl=null,ol.remove("logging_enabled"))},wl=function(...e){var t;!0===dl&&(dl=!1,null===hl&&!0===ol.get("logging_enabled")&&_l(!0)),hl&&(t=ul.apply(null,e),hl(t))},bl=function(...e){var t=`FIREBASE FATAL ERROR: ${ul(...e)}`;throw cl.error(t),new Error(t)},Il=function(...e){var t="FIREBASE WARNING: "+ul(...e);cl.warn(t)},Tl=function(){"undefined"!=typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&Il("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().")},El=function(e){return"number"==typeof e&&(e!=e||e===Number.POSITIVE_INFINITY||e===Number.NEGATIVE_INFINITY)},Cl="[MIN_NAME]",kl="[MAX_NAME]",Sl=function(e,t){if(e===t)return 0;if(e===Cl||t===kl)return-1;if(t===Cl||e===kl)return 1;var n=Rl(e),r=Rl(t);return null!==n?null!==r?n-r==0?e.length-t.length:n-r:-1:null===r&&e=Math.pow(2,-1022)?(i=Math.min(Math.floor(Math.log(e)/Math.LN2),1023),n=i+1023,Math.round(e*Math.pow(2,52-i)-Math.pow(2,52))):(n=0,Math.round(e/Math.pow(2,-1074))));const a=[];for(s=52;s;--s)a.push(r%2?1:0),r=Math.floor(r/2);for(s=11;s;--s)a.push(n%2?1:0),n=Math.floor(n/2);a.push(t?1:0),a.reverse();const o=a.join("");let c="";for(s=0;s<64;s+=8){let e=parseInt(o.substr(s,8),2).toString(16);1===e.length&&(e="0"+e),c+=e}return c.toLowerCase()}function Rl(e){if(Pl.test(e)){var t=Number(e);if(t>=xl&&t<=Ol)return t}return null}function Dl(e,t){const n=setTimeout(e,t);return"number"==typeof n&&"undefined"!=typeof Deno&&Deno.unrefTimer?Deno.unrefTimer(n):"object"==typeof n&&n.unref&&n.unref(),n}const Pl=new RegExp("^-?(0*)\\d{1,10}$"),xl=-2147483648,Ol=2147483647,Ml=function(e){try{e()}catch(t){setTimeout(()=>{var e=t.stack||"";throw Il("Exception was thrown by user callback.",e),t},Math.floor(0))}};class Ll{constructor(e,t){this.appName_=e,this.appCheckProvider=t,this.appCheck=null==t?void 0:t.getImmediate({optional:!0}),this.appCheck||null!=t&&t.get().then(e=>this.appCheck=e)}getToken(n){return this.appCheck?this.appCheck.getToken(n):new Promise((e,t)=>{setTimeout(()=>{this.appCheck?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){var e;null!==(e=this.appCheckProvider)&&void 0!==e&&e.get().then(e=>e.addTokenListener(t))}notifyForInvalidToken(){Il(`Provided AppCheck credentials for the app named "${this.appName_}" `+"are invalid. This usually indicates your app was not initialized correctly.")}}class Fl{constructor(e,t,n){this.appName_=e,this.firebaseOptions_=t,this.authProvider_=n,this.auth_=null,this.auth_=n.getImmediate({optional:!0}),this.auth_||n.onInit(e=>this.auth_=e)}getToken(n){return this.auth_?this.auth_.getToken(n).catch(e=>e&&"auth/token-not-initialized"===e.code?(wl("Got auth/token-not-initialized error. Treating as null token."),null):Promise.reject(e)):new Promise((e,t)=>{setTimeout(()=>{this.auth_?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){this.auth_?this.auth_.addAuthTokenListener(t):this.authProvider_.get().then(e=>e.addAuthTokenListener(t))}removeTokenChangeListener(t){this.authProvider_.get().then(e=>e.removeAuthTokenListener(t))}notifyForInvalidToken(){let e='Provided authentication credentials for the app named "'+this.appName_+'" are invalid. This usually indicates your app was not initialized correctly. ';"credential"in this.firebaseOptions_?e+='Make sure the "credential" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':"serviceAccount"in this.firebaseOptions_?e+='Make sure the "serviceAccount" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':e+='Make sure the "apiKey" and "databaseURL" properties provided to initializeApp() match the values provided for your app at https://console.firebase.google.com/.',Il(e)}}class Ul{constructor(e){this.accessToken=e}getToken(e){return Promise.resolve({accessToken:this.accessToken})}addTokenChangeListener(e){e(this.accessToken)}removeTokenChangeListener(e){}notifyForInvalidToken(){}}Ul.OWNER="owner";const Vl=/(console\.firebase|firebase-console-\w+\.corp|firebase\.corp)\.google\.com/,ql="websocket",Bl="long_polling";class jl{constructor(e,t,n,r,i=!1,s="",a=!1,o=!1){this.secure=t,this.namespace=n,this.webSocketOnly=r,this.nodeAdmin=i,this.persistenceKey=s,this.includeNamespaceInQueryParams=a,this.isUsingEmulator=o,this._host=e.toLowerCase(),this._domain=this._host.substr(this._host.indexOf(".")+1),this.internalHost=al.get("host:"+e)||this._host}isCacheableHost(){return"s-"===this.internalHost.substr(0,2)}isCustomHost(){return"firebaseio.com"!==this._domain&&"firebaseio-demo.com"!==this._domain}get host(){return this._host}set host(e){e!==this.internalHost&&(this.internalHost=e,this.isCacheableHost()&&al.set("host:"+this._host,this.internalHost))}toString(){let e=this.toURLString();return this.persistenceKey&&(e+="<"+this.persistenceKey+">"),e}toURLString(){var e=this.secure?"https://":"http://",t=this.includeNamespaceInQueryParams?`?ns=${this.namespace}`:"";return`${e}${this.host}/${t}`}}function zl(e,t,n){f("string"==typeof t,"typeof type must == string"),f("object"==typeof n,"typeof params must == object");let r;if(t===ql)r=(e.secure?"wss://":"ws://")+e.internalHost+"/.ws?";else{if(t!==Bl)throw new Error("Unknown connection type: "+t);r=(e.secure?"https://":"http://")+e.internalHost+"/.lp?"}((t=e).host!==t.internalHost||t.isCustomHost()||t.includeNamespaceInQueryParams)&&(n.ns=e.namespace);const i=[];return Al(n,(e,t)=>{i.push(e+"="+t)}),r+i.join("&")}class $l{constructor(){this.counters_={}}incrementCounter(e,t=1){L(this.counters_,e)||(this.counters_[e]=0),this.counters_[e]+=t}get(){return c(void 0,this.counters_)}}const Kl={},Wl={};function Gl(e){var t=e.toString();return Kl[t]||(Kl[t]=new $l),Kl[t]}class Hl{constructor(e){this.onMessage_=e,this.pendingResponses=[],this.currentResponseNum=0,this.closeAfterResponse=-1,this.onClose=null}closeAfter(e,t){this.closeAfterResponse=e,this.onClose=t,this.closeAfterResponse{this.onMessage_(n[e])});if(this.currentResponseNum===this.closeAfterResponse){this.onClose&&(this.onClose(),this.onClose=null);break}this.currentResponseNum++}}}class Ql{constructor(e,t,n,r,i,s,a){this.connId=e,this.repoInfo=t,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.transportSessionId=s,this.lastSessionId=a,this.bytesSent=0,this.bytesReceived=0,this.everConnected_=!1,this.log_=pl(e),this.stats_=Gl(t),this.urlFn=e=>(this.appCheckToken&&(e.ac=this.appCheckToken),zl(t,Bl,e))}open(e,t){this.curSegmentNum=0,this.onDisconnect_=t,this.myPacketOrderer=new Hl(e),this.isClosed_=!1,this.connectTimeoutTimer_=setTimeout(()=>{this.log_("Timed out trying to connect."),this.onClosed_(),this.connectTimeoutTimer_=null},Math.floor(3e4)),function(t){if("complete"===document.readyState)t();else{let e=!1;const n=function(){document.body?e||(e=!0,t()):setTimeout(n,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",n,!1),window.addEventListener("load",n,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",()=>{"complete"===document.readyState&&n()}),window.attachEvent("onload",n))}}(()=>{if(!this.isClosed_){this.scriptTagHolder=new Yl((...e)=>{var[t,n,r]=e;if(this.incrementIncomingBytes_(e),this.scriptTagHolder)if(this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null),this.everConnected_=!0,"start"===t)this.id=n,this.password=r;else{if("close"!==t)throw new Error("Unrecognized command received: "+t);n?(this.scriptTagHolder.sendNewPolls=!1,this.myPacketOrderer.closeAfter(n,()=>{this.onClosed_()})):this.onClosed_()}},(...e)=>{var[t,n]=e;this.incrementIncomingBytes_(e),this.myPacketOrderer.handleResponse(t,n)},()=>{this.onClosed_()},this.urlFn);const t={start:"t"};t.ser=Math.floor(1e8*Math.random()),this.scriptTagHolder.uniqueCallbackIdentifier&&(t.cb=this.scriptTagHolder.uniqueCallbackIdentifier),t.v="5",this.transportSessionId&&(t.s=this.transportSessionId),this.lastSessionId&&(t.ls=this.lastSessionId),this.applicationId&&(t.p=this.applicationId),this.appCheckToken&&(t.ac=this.appCheckToken),"undefined"!=typeof location&&location.hostname&&Vl.test(location.hostname)&&(t.r="f");var e=this.urlFn(t);this.log_("Connecting via long-poll to "+e),this.scriptTagHolder.addTag(e,()=>{})}})}start(){this.scriptTagHolder.startLongPoll(this.id,this.password),this.addDisconnectPingFrame(this.id,this.password)}static forceAllow(){Ql.forceAllow_=!0}static forceDisallow(){Ql.forceDisallow_=!0}static isAvailable(){return!!Ql.forceAllow_||!(Ql.forceDisallow_||"undefined"==typeof document||null==document.createElement||"object"==typeof window&&window.chrome&&window.chrome.extension&&!/^chrome/.test(window.location.href)||"object"==typeof Windows&&"object"==typeof Windows.UI)}markConnectionHealthy(){}shutdown_(){this.isClosed_=!0,this.scriptTagHolder&&(this.scriptTagHolder.close(),this.scriptTagHolder=null),this.myDisconnFrame&&(document.body.removeChild(this.myDisconnFrame),this.myDisconnFrame=null),this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null)}onClosed_(){this.isClosed_||(this.log_("Longpoll is closing itself"),this.shutdown_(),this.onDisconnect_&&(this.onDisconnect_(this.everConnected_),this.onDisconnect_=null))}close(){this.isClosed_||(this.log_("Longpoll is being closed."),this.shutdown_())}send(e){var t=O(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var t=i(t),n=yl(t,1840);for(let r=0;rdocument.domain="'+i+'";<\/script>');var i=""+e+"";try{this.myIFrame.doc.open(),this.myIFrame.doc.write(i),this.myIFrame.doc.close()}catch(e){wl("frame writing exception"),e.stack&&wl(e.stack),wl(e)}}}static createIFrame_(){const t=document.createElement("iframe");if(t.style.display="none",!document.body)throw"Document body has not initialized. Wait to initialize Firebase until after the document is ready.";document.body.appendChild(t);try{t.contentWindow.document||wl("No IE domain setting required")}catch(e){var n=document.domain;t.src="javascript:void((function(){document.open();document.domain='"+n+"';document.close();})())"}return t.contentDocument?t.doc=t.contentDocument:t.contentWindow?t.doc=t.contentWindow.document:t.document&&(t.doc=t.document),t}close(){this.alive=!1,this.myIFrame&&(this.myIFrame.doc.body.textContent="",setTimeout(()=>{null!==this.myIFrame&&(document.body.removeChild(this.myIFrame),this.myIFrame=null)},Math.floor(0)));const e=this.onDisconnect;e&&(this.onDisconnect=null,e())}startLongPoll(e,t){for(this.myID=e,this.myPW=t,this.alive=!0;this.newRequest_(););}newRequest_(){if(this.alive&&this.sendNewPolls&&this.outstandingRequests.size<(0{this.outstandingRequests.delete(t),this.newRequest_()},r=setTimeout(n,Math.floor(25e3));this.addTag(e,()=>{clearTimeout(r),n()})}addTag(e,n){setTimeout(()=>{try{if(!this.sendNewPolls)return;const t=this.myIFrame.doc.createElement("script");t.type="text/javascript",t.async=!0,t.src=e,t.onload=t.onreadystatechange=function(){var e=t.readyState;e&&"loaded"!==e&&"complete"!==e||(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),n())},t.onerror=()=>{wl("Long-poll script failed to load: "+e),this.sendNewPolls=!1,this.close()},this.myIFrame.doc.body.appendChild(t)}catch(e){}},Math.floor(1))}}let Jl=null;"undefined"!=typeof MozWebSocket?Jl=MozWebSocket:"undefined"!=typeof WebSocket&&(Jl=WebSocket);class Xl{constructor(e,t,n,r,i,s,a){this.connId=e,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.keepaliveTimer=null,this.frames=null,this.totalFrames=0,this.bytesSent=0,this.bytesReceived=0,this.log_=pl(this.connId),this.stats_=Gl(t),this.connURL=Xl.connectionURL_(t,s,a,r,n),this.nodeAdmin=t.nodeAdmin}static connectionURL_(e,t,n,r,i){const s={v:"5"};return"undefined"!=typeof location&&location.hostname&&Vl.test(location.hostname)&&(s.r="f"),t&&(s.s=t),n&&(s.ls=n),r&&(s.ac=r),i&&(s.p=i),zl(e,ql,s)}open(e,t){this.onDisconnect=t,this.onMessage=e,this.log_("Websocket connecting to "+this.connURL),this.everConnected_=!1,al.set("previous_websocket_failure",!0);try{k(),this.mySock=new Jl(this.connURL,[],void 0)}catch(e){this.log_("Error instantiating WebSocket.");var n=e.message||e.data;return n&&this.log_(n),void this.onClosed_()}this.mySock.onopen=()=>{this.log_("Websocket connected."),this.everConnected_=!0},this.mySock.onclose=()=>{this.log_("Websocket connection was disconnected."),this.mySock=null,this.onClosed_()},this.mySock.onmessage=e=>{this.handleIncomingFrame(e)},this.mySock.onerror=e=>{this.log_("WebSocket error. Closing connection.");var t=e.message||e.data;t&&this.log_(t),this.onClosed_()}}start(){}static forceDisallow(){Xl.forceDisallow_=!0}static isAvailable(){let e=!1;var t;return"undefined"==typeof navigator||!navigator.userAgent||(t=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/))&&1{this.mySock&&this.sendString_("0"),this.resetKeepAlive()},Math.floor(45e3))}sendString_(e){try{this.mySock.send(e)}catch(e){this.log_("Exception thrown from WebSocket.send():",e.message||e.data,"Closing connection."),setTimeout(this.onClosed_.bind(this),0)}}}Xl.responsesRequiredToBeHealthy=2,Xl.healthyTimeout=3e4;class Zl{constructor(e){this.initTransports_(e)}static get ALL_TRANSPORTS(){return[Ql,Xl]}static get IS_TRANSPORT_INITIALIZED(){return this.globalTransportInitialized_}initTransports_(e){var t=Xl&&Xl.isAvailable();let n=t&&!Xl.previouslyFailed();if(e.webSocketOnly&&(t||Il("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),n=!0),n)this.transports_=[Xl];else{const r=this.transports_=[];for(const i of Zl.ALL_TRANSPORTS)i&&i.isAvailable()&&r.push(i);Zl.globalTransportInitialized_=!0}}initialTransport(){if(0{this.conn_&&this.conn_.open(t,n)},Math.floor(0));var r=e.healthyTimeout||0;0{this.healthyTimeout_=null,this.isHealthy_||(this.conn_&&102400{t===this.conn_?this.onConnectionLost_(e):t===this.secondaryConn_?(this.log_("Secondary connection lost."),this.onSecondaryConnectionLost_()):this.log_("closing an old connection")}}connReceiver_(t){return e=>{2!==this.state_&&(t===this.rx_?this.onPrimaryMessageReceived_(e):t===this.secondaryConn_?this.onSecondaryMessageReceived_(e):this.log_("message on old connection"))}}sendRequest(e){this.sendData_({t:"d",d:e})}tryCleanupConnection(){this.tx_===this.secondaryConn_&&this.rx_===this.secondaryConn_&&(this.log_("cleaning up and promoting a connection: "+this.secondaryConn_.connId),this.conn_=this.secondaryConn_,this.secondaryConn_=null)}onSecondaryControl_(e){var t;"t"in e&&("a"===(t=e.t)?this.upgradeIfSecondaryHealthy_():"r"===t?(this.log_("Got a reset on secondary, closing it"),this.secondaryConn_.close(),this.tx_!==this.secondaryConn_&&this.rx_!==this.secondaryConn_||this.close()):"o"===t&&(this.log_("got pong on secondary."),this.secondaryResponsesRequired_--,this.upgradeIfSecondaryHealthy_()))}onSecondaryMessageReceived_(e){var t=ml("t",e),n=ml("d",e);if("c"===t)this.onSecondaryControl_(n);else{if("d"!==t)throw new Error("Unknown protocol layer: "+t);this.pendingDataMessages.push(n)}}upgradeIfSecondaryHealthy_(){this.secondaryResponsesRequired_<=0?(this.log_("Secondary connection is healthy."),this.isHealthy_=!0,this.secondaryConn_.markConnectionHealthy(),this.proceedWithUpgrade_()):(this.log_("sending ping on secondary."),this.secondaryConn_.send({t:"c",d:{t:"p",d:{}}}))}proceedWithUpgrade_(){this.secondaryConn_.start(),this.log_("sending client ack on secondary"),this.secondaryConn_.send({t:"c",d:{t:"a",d:{}}}),this.log_("Ending transmission on primary"),this.conn_.send({t:"c",d:{t:"n",d:{}}}),this.tx_=this.secondaryConn_,this.tryCleanupConnection()}onPrimaryMessageReceived_(e){var t=ml("t",e),n=ml("d",e);"c"===t?this.onControl_(n):"d"===t&&this.onDataMessage_(n)}onDataMessage_(e){this.onPrimaryResponse_(),this.onMessage_(e)}onPrimaryResponse_(){this.isHealthy_||(this.primaryResponsesRequired_--,this.primaryResponsesRequired_<=0&&(this.log_("Primary connection is healthy."),this.isHealthy_=!0,this.conn_.markConnectionHealthy()))}onControl_(e){var t=ml("t",e);if("d"in e){var n=e.d;if("h"===t){const r=Object.assign({},n);this.repoInfo_.isUsingEmulator&&(r.h=this.repoInfo_.host),this.onHandshake_(r)}else if("n"===t){this.log_("recvd end transmission on primary"),this.rx_=this.secondaryConn_;for(let e=0;e{this.secondaryConn_&&(this.log_("Timed out trying to upgrade."),this.secondaryConn_.close())},Math.floor(6e4))}onReset_(e){this.log_("Reset packet received. New host: "+e),this.repoInfo_.host=e,1===this.state_?this.close():(this.closeConnections_(),this.start_())}onConnectionEstablished_(e,t){this.log_("Realtime connection established."),this.conn_=e,this.state_=1,this.onReady_&&(this.onReady_(t,this.sessionId),this.onReady_=null),0===this.primaryResponsesRequired_?(this.log_("Primary connection is healthy."),this.isHealthy_=!0):Dl(()=>{this.sendPingOnPrimaryIfNecessary_()},Math.floor(5e3))}sendPingOnPrimaryIfNecessary_(){this.isHealthy_||1!==this.state_||(this.log_("sending ping on primary."),this.sendData_({t:"c",d:{t:"p",d:{}}}))}onSecondaryConnectionLost_(){var e=this.secondaryConn_;this.secondaryConn_=null,this.tx_!==e&&this.rx_!==e||this.close()}onConnectionLost_(e){this.conn_=null,e||0!==this.state_?1===this.state_&&this.log_("Realtime connection lost."):(this.log_("Realtime connection failed."),this.repoInfo_.isCacheableHost()&&(al.remove("host:"+this.repoInfo_.host),this.repoInfo_.internalHost=this.repoInfo_.host)),this.close()}onConnectionShutdown_(e){this.log_("Connection shutdown command received. Shutting down..."),this.onKill_&&(this.onKill_(e),this.onKill_=null),this.onDisconnect_=null,this.close()}sendData_(e){if(1!==this.state_)throw"Connection is not connected";this.tx_.send(e)}close(){2!==this.state_&&(this.log_("Closing realtime connection."),this.state_=2,this.closeConnections_(),this.onDisconnect_&&(this.onDisconnect_(),this.onDisconnect_=null))}closeConnections_(){this.log_("Shutting down all connections"),this.conn_&&(this.conn_.close(),this.conn_=null),this.secondaryConn_&&(this.secondaryConn_.close(),this.secondaryConn_=null),this.healthyTimeout_&&(clearTimeout(this.healthyTimeout_),this.healthyTimeout_=null)}}class tu{put(e,t,n,r){}merge(e,t,n,r){}refreshAuthToken(e){}refreshAppCheckToken(e){}onDisconnectPut(e,t,n){}onDisconnectMerge(e,t,n){}onDisconnectCancel(e,t){}reportStats(e){}}class nu{constructor(e){this.allowedEvents_=e,this.listeners_={},f(Array.isArray(e)&&0e===t),"Unknown event: "+t)}}class ru extends nu{constructor(){super(["online"]),this.online_=!0,"undefined"==typeof window||void 0===window.addEventListener||b()||(window.addEventListener("online",()=>{this.online_||(this.online_=!0,this.trigger("online",!0))},!1),window.addEventListener("offline",()=>{this.online_&&(this.online_=!1,this.trigger("online",!1))},!1))}static getInstance(){return new ru}getInitialEvent(e){return f("online"===e,"Unknown event type: "+e),[this.online_]}currentlyOnline(){return this.online_}}class iu{constructor(n,e){if(void 0===e){this.pieces_=n.split("/");let e=0;for(let t=0;t=e.pieces_.length?null:e.pieces_[e.pieceNum_]}function ou(e){return e.pieces_.length-e.pieceNum_}function cu(e){let t=e.pieceNum_;return t=e.pieces_.length)return null;const t=[];for(let n=e.pieceNum_;n=e.pieces_.length}function fu(e,t){var n=au(e),r=au(t);if(null===n)return t;if(n===r)return fu(cu(e),cu(t));throw new Error("INTERNAL ERROR: innerPath ("+t+") is not within outerPath ("+e+")")}function gu(e,t){var n=uu(e,0),r=uu(t,0);for(let s=0;sou(t))return!1;for(;n{var e=!document[t];e!==this.visible_&&(this.visible_=e,this.trigger("visible",e))},!1)}static getInstance(){return new bu}getInitialEvent(e){return f("visible"===e,"Unknown event type: "+e),[this.visible_]}}class Iu extends tu{constructor(e,t,n,r,i,s,a,o){if(super(),this.repoInfo_=e,this.applicationId_=t,this.onDataUpdate_=n,this.onConnectStatus_=r,this.onServerInfoUpdate_=i,this.authTokenProvider_=s,this.appCheckTokenProvider_=a,this.authOverride_=o,this.id=Iu.nextPersistentConnectionId_++,this.log_=pl("p:"+this.id+":"),this.interruptReasons_={},this.listens=new Map,this.outstandingPuts_=[],this.outstandingGets_=[],this.outstandingPutCount_=0,this.outstandingGetCount_=0,this.onDisconnectRequestQueue_=[],this.connected_=!1,this.reconnectDelay_=1e3,this.maxReconnectDelay_=3e5,this.securityDebugCallback_=null,this.lastSessionId=null,this.establishConnectionTimer_=null,this.visible_=!1,this.requestCBHash_={},this.requestNumber_=0,this.realtime_=null,this.authToken_=null,this.appCheckToken_=null,this.forceTokenRefresh_=!1,this.invalidAuthTokenCount_=0,this.invalidAppCheckTokenCount_=0,this.firstConnection_=!0,this.lastConnectionAttemptTime_=null,this.lastConnectionEstablishedTime_=null,o&&!k())throw new Error("Auth override specified in options, but not supported on non Node.js platforms");bu.getInstance().on("visible",this.onVisible_,this),-1===e.host.indexOf("fblocal")&&ru.getInstance().on("online",this.onOnline_,this)}sendRequest(e,t,n){var r=++this.requestNumber_,i={r:r,a:e,b:t};this.log_(O(i)),f(this.connected_,"sendRequest call when we're not connected not allowed."),this.realtime_.sendRequest(i),n&&(this.requestCBHash_[r]=n)}get(e){this.initConnection_();const n=new y;var t={p:e._path.toString(),q:e._queryObject};this.outstandingGets_.push({action:"g",request:t,onComplete:e=>{var t=e.d;"ok"===e.s?n.resolve(t):n.reject(t)}}),this.outstandingGetCount_++;t=this.outstandingGets_.length-1;return this.connected_&&this.sendGet_(t),n.promise}listen(e,t,n,r){this.initConnection_();var i=e._queryIdentifier,s=e._path.toString();this.log_("Listen called for "+s+" "+i),this.listens.has(s)||this.listens.set(s,new Map),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"listen() called for non-default but complete query"),f(!this.listens.get(s).has(i),"listen() called twice for same path/queryId.");var a={onComplete:r,hashFn:t,query:e,tag:n};this.listens.get(s).set(i,a),this.connected_&&this.sendListen_(a)}sendGet_(t){const n=this.outstandingGets_[t];this.sendRequest("g",n.request,e=>{delete this.outstandingGets_[t],this.outstandingGetCount_--,0===this.outstandingGetCount_&&(this.outstandingGets_=[]),n.onComplete&&n.onComplete(e)})}sendListen_(r){const i=r.query,s=i._path.toString(),a=i._queryIdentifier;this.log_("Listen on "+s+" for "+a);const e={p:s};r.tag&&(e.q=i._queryObject,e.t=r.tag),e.h=r.hashFn(),this.sendRequest("q",e,e=>{var t=e.d,n=e.s;Iu.warnOnListenWarnings_(t,i),(this.listens.get(s)&&this.listens.get(s).get(a))===r&&(this.log_("listen response",e),"ok"!==n&&this.removeListen_(s,a),r.onComplete&&r.onComplete(n,t))})}static warnOnListenWarnings_(e,t){if(e&&"object"==typeof e&&L(e,"w")){const i=F(e,"w");var n,r;Array.isArray(i)&&~i.indexOf("no_index")&&(n='".indexOn": "'+t._queryParams.getIndex().toString()+'"',r=t._path.toString(),Il("Using an unspecified index. Your data will be downloaded and "+`filtered on the client. Consider adding ${n} at `+`${r} to your security rules for better performance.`))}}refreshAuthToken(e){this.authToken_=e,this.log_("Auth token refreshed"),this.authToken_?this.tryAuth():this.connected_&&this.sendRequest("unauth",{},()=>{}),this.reduceReconnectDelayIfAdminCredential_(e)}reduceReconnectDelayIfAdminCredential_(e){var t;(e&&40===e.length||(e=e,"object"==typeof(t=M(e).claims)&&!0===t.admin))&&(this.log_("Admin auth credential detected. Reducing max reconnect time."),this.maxReconnectDelay_=3e4)}refreshAppCheckToken(e){this.appCheckToken_=e,this.log_("App check token refreshed"),this.appCheckToken_?this.tryAppCheck():this.connected_&&this.sendRequest("unappeck",{},()=>{})}tryAuth(){if(this.connected_&&this.authToken_){const r=this.authToken_;var e=function(e){const t=M(e),n=t.claims;return!!n&&"object"==typeof n&&n.hasOwnProperty("iat")}(r)?"auth":"gauth";const t={cred:r};null===this.authOverride_?t.noauth=!0:"object"==typeof this.authOverride_&&(t.authvar=this.authOverride_),this.sendRequest(e,t,e=>{var t=e.s,n=e.d||"error";this.authToken_===r&&("ok"===t?this.invalidAuthTokenCount_=0:this.onAuthRevoked_(t,n))})}}tryAppCheck(){this.connected_&&this.appCheckToken_&&this.sendRequest("appcheck",{token:this.appCheckToken_},e=>{var t=e.s,n=e.d||"error";"ok"===t?this.invalidAppCheckTokenCount_=0:this.onAppCheckRevoked_(t,n)})}unlisten(e,t){var n=e._path.toString(),r=e._queryIdentifier;this.log_("Unlisten called for "+n+" "+r),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"unlisten() called for non-default but complete query"),this.removeListen_(n,r)&&this.connected_&&this.sendUnlisten_(n,r,e._queryObject,t)}sendUnlisten_(e,t,n,r){this.log_("Unlisten on "+e+" for "+t);const i={p:e};r&&(i.q=n,i.t=r),this.sendRequest("n",i)}onDisconnectPut(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("o",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"o",data:t,onComplete:n})}onDisconnectMerge(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("om",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"om",data:t,onComplete:n})}onDisconnectCancel(e,t){this.initConnection_(),this.connected_?this.sendOnDisconnect_("oc",e,null,t):this.onDisconnectRequestQueue_.push({pathString:e,action:"oc",data:null,onComplete:t})}sendOnDisconnect_(e,t,n,r){var i={p:t,d:n};this.log_("onDisconnect "+e,i),this.sendRequest(e,i,e=>{r&&setTimeout(()=>{r(e.s,e.d)},Math.floor(0))})}put(e,t,n,r){this.putInternal("p",e,t,n,r)}merge(e,t,n,r){this.putInternal("m",e,t,n,r)}putInternal(e,t,n,r,i){this.initConnection_();const s={p:t,d:n};void 0!==i&&(s.h=i),this.outstandingPuts_.push({action:e,request:s,onComplete:r}),this.outstandingPutCount_++;var a=this.outstandingPuts_.length-1;this.connected_?this.sendPut_(a):this.log_("Buffering put: "+t)}sendPut_(t){const n=this.outstandingPuts_[t].action;var e=this.outstandingPuts_[t].request;const r=this.outstandingPuts_[t].onComplete;this.outstandingPuts_[t].queued=this.connected_,this.sendRequest(n,e,e=>{this.log_(n+" response",e),delete this.outstandingPuts_[t],this.outstandingPutCount_--,0===this.outstandingPutCount_&&(this.outstandingPuts_=[]),r&&r(e.s,e.d)})}reportStats(e){var t;this.connected_&&(this.log_("reportStats",t={c:e}),this.sendRequest("s",t,e=>{var t;"ok"!==e.s&&(t=e.d,this.log_("reportStats","Error sending stats: "+t))}))}onDataMessage_(e){if("r"in e){this.log_("from server: "+O(e));var t=e.r;const n=this.requestCBHash_[t];n&&(delete this.requestCBHash_[t],n(e.b))}else{if("error"in e)throw"A server-side error has occurred: "+e.error;"a"in e&&this.onDataPush_(e.a,e.b)}}onDataPush_(e,t){this.log_("handleServerMessage",e,t),"d"===e?this.onDataUpdate_(t.p,t.d,!1,t.t):"m"===e?this.onDataUpdate_(t.p,t.d,!0,t.t):"c"===e?this.onListenRevoked_(t.p,t.q):"ac"===e?this.onAuthRevoked_(t.s,t.d):"apc"===e?this.onAppCheckRevoked_(t.s,t.d):"sd"===e?this.onSecurityDebugPacket_(t):fl("Unrecognized action received from server: "+O(e)+"\nAre you using the latest client?")}onReady_(e,t){this.log_("connection ready"),this.connected_=!0,this.lastConnectionEstablishedTime_=(new Date).getTime(),this.handleTimestamp_(e),this.lastSessionId=t,this.firstConnection_&&this.sendConnectStats_(),this.restoreState_(),this.firstConnection_=!1,this.onConnectStatus_(!0)}scheduleConnect_(e){f(!this.realtime_,"Scheduling a connect when we're already connected/ing?"),this.establishConnectionTimer_&&clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=setTimeout(()=>{this.establishConnectionTimer_=null,this.establishConnection_()},Math.floor(e))}initConnection_(){!this.realtime_&&this.firstConnection_&&this.scheduleConnect_(0)}onVisible_(e){e&&!this.visible_&&this.reconnectDelay_===this.maxReconnectDelay_&&(this.log_("Window became visible. Reducing delay."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)),this.visible_=e}onOnline_(e){e?(this.log_("Browser went online."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)):(this.log_("Browser went offline. Killing connection."),this.realtime_&&this.realtime_.close())}onRealtimeDisconnect_(){var e;this.log_("data client disconnected"),this.connected_=!1,this.realtime_=null,this.cancelSentTransactions_(),this.requestCBHash_={},this.shouldReconnect_()&&(this.visible_?this.lastConnectionEstablishedTime_&&(3e4<(new Date).getTime()-this.lastConnectionEstablishedTime_&&(this.reconnectDelay_=1e3),this.lastConnectionEstablishedTime_=null):(this.log_("Window isn't visible. Delaying reconnect."),this.reconnectDelay_=this.maxReconnectDelay_,this.lastConnectionAttemptTime_=(new Date).getTime()),e=(new Date).getTime()-this.lastConnectionAttemptTime_,e=Math.max(0,this.reconnectDelay_-e),e=Math.random()*e,this.log_("Trying to reconnect in "+e+"ms"),this.scheduleConnect_(e),this.reconnectDelay_=Math.min(this.maxReconnectDelay_,1.3*this.reconnectDelay_)),this.onConnectStatus_(!1)}async establishConnection_(){if(this.shouldReconnect_()){this.log_("Making a connection attempt"),this.lastConnectionAttemptTime_=(new Date).getTime(),this.lastConnectionEstablishedTime_=null;var e=this.onDataMessage_.bind(this),r=this.onReady_.bind(this);const u=this.onRealtimeDisconnect_.bind(this);var i=this.id+":"+Iu.nextConnectionId_++,s=this.lastSessionId;let t=!1,n=null;var a=function(){n?n.close():(t=!0,u())};this.realtime_={close:a,sendRequest:function(e){f(n,"sendRequest call when we're not connected not allowed."),n.sendRequest(e)}};var o=this.forceTokenRefresh_;this.forceTokenRefresh_=!1;try{var[c,l]=await Promise.all([this.authTokenProvider_.getToken(o),this.appCheckTokenProvider_.getToken(o)]);t?wl("getToken() completed but was canceled"):(wl("getToken() completed. Creating connection."),this.authToken_=c&&c.accessToken,this.appCheckToken_=l&&l.token,n=new eu(i,this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,e,r,u,e=>{Il(e+" ("+this.repoInfo_.toString()+")"),this.interrupt("server_kill")},s))}catch(e){this.log_("Failed to get token: "+e),t||(this.repoInfo_.nodeAdmin&&Il(e),a())}}}interrupt(e){wl("Interrupting connection for reason: "+e),this.interruptReasons_[e]=!0,this.realtime_?this.realtime_.close():(this.establishConnectionTimer_&&(clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=null),this.connected_&&this.onRealtimeDisconnect_())}resume(e){wl("Resuming connection for reason: "+e),delete this.interruptReasons_[e],U(this.interruptReasons_)&&(this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0))}handleTimestamp_(e){var t=e-(new Date).getTime();this.onServerInfoUpdate_({serverTimeOffset:t})}cancelSentTransactions_(){for(let e=0;evl(e)).join("$"):"default";const r=this.removeListen_(e,n);r&&r.onComplete&&r.onComplete("permission_denied")}removeListen_(e,t){var n=new iu(e).toString();let r;if(this.listens.has(n)){const i=this.listens.get(n);r=i.get(t),i.delete(t),0===i.size&&this.listens.delete(n)}else r=void 0;return r}onAuthRevoked_(e,t){wl("Auth token revoked: "+e+"/"+t),this.authToken_=null,this.forceTokenRefresh_=!0,this.realtime_.close(),"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAuthTokenCount_++,3<=this.invalidAuthTokenCount_&&(this.reconnectDelay_=3e4,this.authTokenProvider_.notifyForInvalidToken()))}onAppCheckRevoked_(e,t){wl("App check token revoked: "+e+"/"+t),this.appCheckToken_=null,this.forceTokenRefresh_=!0,"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAppCheckTokenCount_++,3<=this.invalidAppCheckTokenCount_&&this.appCheckTokenProvider_.notifyForInvalidToken())}onSecurityDebugPacket_(e){this.securityDebugCallback_?this.securityDebugCallback_(e):"msg"in e&&console.log("FIREBASE: "+e.msg.replace("\n","\nFIREBASE: "))}restoreState_(){this.tryAuth(),this.tryAppCheck();for(const t of this.listens.values())for(const n of t.values())this.sendListen_(n);for(let r=0;r{const n=F(this.indexSet_,e);if(f(n,"Missing index implementation for "+e),t===Ku){if(n.isDefinedOn(a.node)){const i=[],s=o.getIterator(Tu.Wrap);let e=s.getNext();for(;e;)e.name!==a.name&&i.push(e),e=s.getNext();return i.push(a),zu(i,n.getCompare())}return Ku}{var r=o.get(a.name);let e=t;return r&&(e=e.remove(new Tu(a.name,r))),e.insert(a,a.node)}});return new Wu(e,this.indexSet_)}removeFromIndexes(n,r){var e=V(this.indexes_,e=>{if(e===Ku)return e;var t=r.get(n.name);return t?e.remove(new Tu(n.name,t)):e});return new Wu(e,this.indexSet_)}}let Gu;class Hu{constructor(e,t,n){this.children_=e,this.priorityNode_=t,this.indexMap_=n,this.lazyHash_=null,this.priorityNode_&&Mu(this.priorityNode_),this.children_.isEmpty()&&f(!this.priorityNode_||this.priorityNode_.isEmpty(),"An empty node cannot have a priority")}static get EMPTY_NODE(){return Gu=Gu||new Hu(new Ru(Pu),null,Wu.Default)}isLeafNode(){return!1}getPriority(){return this.priorityNode_||Gu}updatePriority(e){return this.children_.isEmpty()?this:new Hu(this.children_,e,this.indexMap_)}getImmediateChild(e){if(".priority"===e)return this.getPriority();var t=this.children_.get(e);return null===t?Gu:t}getChild(e){var t=au(e);return null===t?this:this.getImmediateChild(t).getChild(cu(e))}hasChild(e){return null!==this.children_.get(e)}updateImmediateChild(n,r){if(f(r,"We should always be passing snapshot nodes"),".priority"===n)return this.updatePriority(r);{var i=new Tu(n,r);let e,t;t=r.isEmpty()?(e=this.children_.remove(n),this.indexMap_.removeFromIndexes(i,this.children_)):(e=this.children_.insert(n,r),this.indexMap_.addToIndexes(i,this.children_));i=e.isEmpty()?Gu:this.priorityNode_;return new Hu(e,i,t)}}updateChild(e,t){var n=au(e);if(null===n)return t;f(".priority"!==au(e)||1===ou(e),".priority must be the last token in a path");var r=this.getImmediateChild(n).updateChild(cu(e),t);return this.updateImmediateChild(n,r)}isEmpty(){return this.children_.isEmpty()}numChildren(){return this.children_.count()}val(n){if(this.isEmpty())return null;const r={};let i=0,s=0,a=!0;if(this.forEachChild(qu,(e,t)=>{r[e]=t.val(n),i++,a&&Hu.INTEGER_REGEXP_.test(e)?s=Math.max(s,Number(e)):a=!1}),!n&&a&&s<2*i){const e=[];for(const t in r)e[t]=r[t];return e}return n&&!this.getPriority().isEmpty()&&(r[".priority"]=this.getPriority().val()),r}hash(){if(null===this.lazyHash_){let r="";this.getPriority().isEmpty()||(r+="priority:"+Ou(this.getPriority().val())+":"),this.forEachChild(qu,(e,t)=>{var n=t.hash();""!==n&&(r+=":"+e+":"+n)}),this.lazyHash_=""===r?"":sl(r)}return this.lazyHash_}getPredecessorChildName(e,t,n){const r=this.resolveIndex_(n);if(r){var i=r.getPredecessorKey(new Tu(e,t));return i?i.name:null}return this.children_.getPredecessorKey(e)}getFirstChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.minKey();return n&&n.name}return this.children_.minKey()}getFirstChild(e){var t=this.getFirstChildName(e);return t?new Tu(t,this.children_.get(t)):null}getLastChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.maxKey();return n&&n.name}return this.children_.maxKey()}getLastChild(e){var t=this.getLastChildName(e);return t?new Tu(t,this.children_.get(t)):null}forEachChild(e,t){const n=this.resolveIndex_(e);return n?n.inorderTraversal(e=>t(e.name,e.node)):this.children_.inorderTraversal(t)}getIterator(e){return this.getIteratorFrom(e.minPost(),e)}getIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getIteratorFrom(t,e=>e);{const r=this.children_.getIteratorFrom(t.name,Tu.Wrap);let e=r.peek();for(;null!=e&&n.compare(e,t)<0;)r.getNext(),e=r.peek();return r}}getReverseIterator(e){return this.getReverseIteratorFrom(e.maxPost(),e)}getReverseIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getReverseIteratorFrom(t,e=>e);{const r=this.children_.getReverseIteratorFrom(t.name,Tu.Wrap);let e=r.peek();for(;null!=e&&0{if(L(i,e)&&"."!==e.substring(0,1)){const n=Xu(t);!n.isLeafNode()&&n.isEmpty()||(r=r.updateImmediateChild(e,n))}}),r.updatePriority(Xu(e))}{const s=[];let r=!1;if(Al(i,(e,t)=>{if("."!==e.substring(0,1)){const n=Xu(t);n.isEmpty()||(r=r||!n.getPriority().isEmpty(),s.push(new Tu(e,n)))}}),0===s.length)return Hu.EMPTY_NODE;var n=zu(s,Du,e=>e.name,Pu);if(r){t=zu(s,qu.getCompare());return new Hu(n,Xu(e),new Wu({".priority":t},{".priority":qu}))}return new Hu(n,Xu(e),Wu.Default)}}Uu=Xu;class Zu extends Eu{constructor(e){super(),this.indexPath_=e,f(!pu(e)&&".priority"!==au(e),"Can't create PathIndex with empty path or .priority key")}extractChild(e){return e.getChild(this.indexPath_)}isDefinedOn(e){return!e.getChild(this.indexPath_).isEmpty()}compare(e,t){const n=this.extractChild(e.node);var r=this.extractChild(t.node),r=n.compareTo(r);return 0===r?Sl(e.name,t.name):r}makePost(e,t){var n=Xu(e),n=Hu.EMPTY_NODE.updateChild(this.indexPath_,n);return new Tu(t,n)}maxPost(){var e=Hu.EMPTY_NODE.updateChild(this.indexPath_,Yu);return new Tu(kl,e)}toString(){return uu(this.indexPath_,0).join("/")}}const eh=new class extends Eu{compare(e,t){var n=e.node.compareTo(t.node);return 0===n?Sl(e.name,t.name):n}isDefinedOn(e){return!0}indexedValueChanged(e,t){return!e.equals(t)}minPost(){return Tu.MIN}maxPost(){return Tu.MAX}makePost(e,t){var n=Xu(e);return new Tu(t,n)}toString(){return".value"}};function th(e){return{type:"value",snapshotNode:e}}function nh(e,t){return{type:"child_added",snapshotNode:t,childName:e}}function rh(e,t){return{type:"child_removed",snapshotNode:t,childName:e}}function ih(e,t,n){return{type:"child_changed",snapshotNode:t,childName:e,oldSnap:n}}class sh{constructor(e){this.index_=e}updateChild(e,t,n,r,i,s){f(e.isIndexed(this.index_),"A node must be indexed if only a child is updated");const a=e.getImmediateChild(t);return a.getChild(r).equals(n.getChild(r))&&a.isEmpty()===n.isEmpty()?e:(null!=s&&(n.isEmpty()?e.hasChild(t)?s.trackChildChange(rh(t,a)):f(e.isLeafNode(),"A child remove without an old child only makes sense on a leaf node"):a.isEmpty()?s.trackChildChange(nh(t,n)):s.trackChildChange(ih(t,n,a))),e.isLeafNode()&&n.isEmpty()?e:e.updateImmediateChild(t,n).withIndex(this.index_))}updateFullNode(r,n,i){return null!=i&&(r.isLeafNode()||r.forEachChild(qu,(e,t)=>{n.hasChild(e)||i.trackChildChange(rh(e,t))}),n.isLeafNode()||n.forEachChild(qu,(e,t)=>{if(r.hasChild(e)){const n=r.getImmediateChild(e);n.equals(t)||i.trackChildChange(ih(e,t,n))}else i.trackChildChange(nh(e,t))})),n.withIndex(this.index_)}updatePriority(e,t){return e.isEmpty()?Hu.EMPTY_NODE:e.updatePriority(t)}filtersNodes(){return!1}getIndexedFilter(){return this}getIndex(){return this.index_}}class ah{constructor(e){this.indexedFilter_=new sh(e.getIndex()),this.index_=e.getIndex(),this.startPost_=ah.getStartPost_(e),this.endPost_=ah.getEndPost_(e),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}getStartPost(){return this.startPost_}getEndPost(){return this.endPost_}matches(e){var t=this.startIsInclusive_?this.index_.compare(this.getStartPost(),e)<=0:this.index_.compare(this.getStartPost(),e)<0,n=this.endIsInclusive_?this.index_.compare(e,this.getEndPost())<=0:this.index_.compare(e,this.getEndPost())<0;return t&&n}updateChild(e,t,n,r,i,s){return this.matches(new Tu(t,n))||(n=Hu.EMPTY_NODE),this.indexedFilter_.updateChild(e,t,n,r,i,s)}updateFullNode(e,t,n){let r=(t=t.isLeafNode()?Hu.EMPTY_NODE:t).withIndex(this.index_);r=r.updatePriority(Hu.EMPTY_NODE);const i=this;return t.forEachChild(qu,(e,t)=>{i.matches(new Tu(e,t))||(r=r.updateImmediateChild(e,Hu.EMPTY_NODE))}),this.indexedFilter_.updateFullNode(e,r,n)}updatePriority(e,t){return e}filtersNodes(){return!0}getIndexedFilter(){return this.indexedFilter_}getIndex(){return this.index_}static getStartPost_(e){if(e.hasStart()){var t=e.getIndexStartName();return e.getIndex().makePost(e.getIndexStartValue(),t)}return e.getIndex().minPost()}static getEndPost_(e){if(e.hasEnd()){var t=e.getIndexEndName();return e.getIndex().makePost(e.getIndexEndValue(),t)}return e.getIndex().maxPost()}}class oh{constructor(e){this.withinDirectionalStart=e=>this.reverse_?this.withinEndPost(e):this.withinStartPost(e),this.withinDirectionalEnd=e=>this.reverse_?this.withinStartPost(e):this.withinEndPost(e),this.withinStartPost=e=>{var t=this.index_.compare(this.rangedFilter_.getStartPost(),e);return this.startIsInclusive_?t<=0:t<0},this.withinEndPost=e=>{var t=this.index_.compare(e,this.rangedFilter_.getEndPost());return this.endIsInclusive_?t<=0:t<0},this.rangedFilter_=new ah(e),this.index_=e.getIndex(),this.limit_=e.getLimit(),this.reverse_=!e.isViewFromLeft(),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}updateChild(e,t,n,r,i,s){return this.rangedFilter_.matches(new Tu(t,n))||(n=Hu.EMPTY_NODE),e.getImmediateChild(t).equals(n)?e:e.numChildren()d(t,e)}else s=this.index_.getCompare();const a=e;f(a.numChildren()===this.limit_,"");var o=new Tu(t,n),c=this.reverse_?a.getFirstChild(this.index_):a.getLastChild(this.index_),l=this.rangedFilter_.matches(o);if(a.hasChild(t)){var u=a.getImmediateChild(t);let e=r.getChildAfterChild(this.index_,c,this.reverse_);for(;null!=e&&(e.name===t||a.hasChild(e.name));)e=r.getChildAfterChild(this.index_,e,this.reverse_);var h=null==e?1:s(e,o);if(l&&!n.isEmpty()&&0<=h)return null!=i&&i.trackChildChange(ih(t,n,u)),a.updateImmediateChild(t,n);{null!=i&&i.trackChildChange(rh(t,u));const p=a.updateImmediateChild(t,Hu.EMPTY_NODE);return null!=e&&this.rangedFilter_.matches(e)?(null!=i&&i.trackChildChange(nh(e.name,e.node)),p.updateImmediateChild(e.name,e.node)):p}}return!n.isEmpty()&&l&&0<=s(c,o)?(null!=i&&(i.trackChildChange(rh(c.name,c.node)),i.trackChildChange(nh(t,n))),a.updateImmediateChild(t,n).updateImmediateChild(c.name,Hu.EMPTY_NODE)):e}}class ch{constructor(){this.limitSet_=!1,this.startSet_=!1,this.startNameSet_=!1,this.startAfterSet_=!1,this.endSet_=!1,this.endNameSet_=!1,this.endBeforeSet_=!1,this.limit_=0,this.viewFrom_="",this.indexStartValue_=null,this.indexStartName_="",this.indexEndValue_=null,this.indexEndName_="",this.index_=qu}hasStart(){return this.startSet_}isViewFromLeft(){return""===this.viewFrom_?this.startSet_:"l"===this.viewFrom_}getIndexStartValue(){return f(this.startSet_,"Only valid if start has been set"),this.indexStartValue_}getIndexStartName(){return f(this.startSet_,"Only valid if start has been set"),this.startNameSet_?this.indexStartName_:Cl}hasEnd(){return this.endSet_}getIndexEndValue(){return f(this.endSet_,"Only valid if end has been set"),this.indexEndValue_}getIndexEndName(){return f(this.endSet_,"Only valid if end has been set"),this.endNameSet_?this.indexEndName_:kl}hasLimit(){return this.limitSet_}hasAnchoredLimit(){return this.limitSet_&&""!==this.viewFrom_}getLimit(){return f(this.limitSet_,"Only valid if limit has been set"),this.limit_}getIndex(){return this.index_}loadsAllData(){return!(this.startSet_||this.endSet_||this.limitSet_)}isDefault(){return this.loadsAllData()&&this.index_===qu}copy(){const e=new ch;return e.limitSet_=this.limitSet_,e.limit_=this.limit_,e.startSet_=this.startSet_,e.startAfterSet_=this.startAfterSet_,e.indexStartValue_=this.indexStartValue_,e.startNameSet_=this.startNameSet_,e.indexStartName_=this.indexStartName_,e.endSet_=this.endSet_,e.endBeforeSet_=this.endBeforeSet_,e.indexEndValue_=this.indexEndValue_,e.endNameSet_=this.endNameSet_,e.indexEndName_=this.indexEndName_,e.index_=this.index_,e.viewFrom_=this.viewFrom_,e}}function lh(e,t,n){const r=e.copy();return r.startSet_=!0,void 0===t&&(t=null),r.indexStartValue_=t,null!=n?(r.startNameSet_=!0,r.indexStartName_=n):(r.startNameSet_=!1,r.indexStartName_=""),r}function uh(e,t,n){const r=e.copy();return r.endSet_=!0,void 0===t&&(t=null),r.indexEndValue_=t,void 0!==n?(r.endNameSet_=!0,r.indexEndName_=n):(r.endNameSet_=!1,r.indexEndName_=""),r}function hh(e,t){const n=e.copy();return n.index_=t,n}function dh(e){const t={};if(e.isDefault())return t;let n;var r;return n=e.index_===qu?"$priority":e.index_===eh?"$value":e.index_===Su?"$key":(f(e.index_ instanceof Zu,"Unrecognized index type!"),e.index_.toString()),t.orderBy=O(n),e.startSet_&&(r=e.startAfterSet_?"startAfter":"startAt",t[r]=O(e.indexStartValue_),e.startNameSet_&&(t[r]+=","+O(e.indexStartName_))),e.endSet_&&(r=e.endBeforeSet_?"endBefore":"endAt",t[r]=O(e.indexEndValue_),e.endNameSet_&&(t[r]+=","+O(e.indexEndName_))),e.limitSet_&&(e.isViewFromLeft()?t.limitToFirst=e.limit_:t.limitToLast=e.limit_),t}function ph(t){const n={};if(t.startSet_&&(n.sp=t.indexStartValue_,t.startNameSet_&&(n.sn=t.indexStartName_),n.sin=!t.startAfterSet_),t.endSet_&&(n.ep=t.indexEndValue_,t.endNameSet_&&(n.en=t.indexEndName_),n.ein=!t.endBeforeSet_),t.limitSet_){n.l=t.limit_;let e=t.viewFrom_;""===e&&(e=t.isViewFromLeft()?"l":"r"),n.vf=e}return t.index_!==qu&&(n.i=t.index_.toString()),n}class fh extends tu{constructor(e,t,n,r){super(),this.repoInfo_=e,this.onDataUpdate_=t,this.authTokenProvider_=n,this.appCheckTokenProvider_=r,this.log_=pl("p:rest:"),this.listens_={}}reportStats(e){throw new Error("Method not implemented.")}static getListenId_(e,t){return void 0!==t?"tag$"+t:(f(e._queryParams.isDefault(),"should have a tag if it's not a default query."),e._path.toString())}listen(e,t,r,i){const s=e._path.toString();this.log_("Listen called for "+s+" "+e._queryIdentifier);const a=fh.getListenId_(e,r),o={};this.listens_[a]=o;var n=dh(e._queryParams);this.restRequest_(s+".json",n,(t,e)=>{let n=e;if(null===(t=404===t?n=null:t)&&this.onDataUpdate_(s,n,!1,r),F(this.listens_,a)===o){let e;e=t?401===t?"permission_denied":"rest_error:"+t:"ok",i(e,null)}})}unlisten(e,t){var n=fh.getListenId_(e,t);delete this.listens_[n]}get(e){var t=dh(e._queryParams);const r=e._path.toString(),i=new y;return this.restRequest_(r+".json",t,(e,t)=>{let n=t;null===(e=404===e?n=null:e)?(this.onDataUpdate_(r,n,!1,null),i.resolve(n)):i.reject(new Error(n))}),i.promise}refreshAuthToken(e){}restRequest_(i,s={},a){return s.format="export",Promise.all([this.authTokenProvider_.getToken(!1),this.appCheckTokenProvider_.getToken(!1)]).then(([e,t])=>{e&&e.accessToken&&(s.auth=e.accessToken),t&&t.token&&(s.ac=t.token);const n=(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host+i+"?ns="+this.repoInfo_.namespace+j(s);this.log_("Sending REST request for "+n);const r=new XMLHttpRequest;r.onreadystatechange=()=>{if(a&&4===r.readyState){this.log_("REST Response for "+n+" received. status:",r.status,"response:",r.responseText);let e=null;if(200<=r.status&&r.status<300){try{e=x(r.responseText)}catch(e){Il("Failed to parse JSON response for "+n+": "+r.responseText)}a(null,e)}else 401!==r.status&&404!==r.status&&Il("Got unsuccessful REST response for "+n+" Status: "+r.status),a(r.status);a=null}},r.open("GET",n,!0),r.send()})}}class gh{constructor(){this.rootNode_=Hu.EMPTY_NODE}getNode(e){return this.rootNode_.getChild(e)}updateSnapshot(e,t){this.rootNode_=this.rootNode_.updateChild(e,t)}}function mh(){return{value:null,children:new Map}}function vh(e,t,n){var r;pu(t)?(e.value=n,e.children.clear()):null!==e.value?e.value=e.value.updateChild(t,n):(r=au(t),e.children.has(r)||e.children.set(r,mh()),vh(e.children.get(r),t=cu(t),n))}function yh(e,n,r){var i;null!==e.value?r(n,e.value):(i=(e,t)=>{yh(t,new iu(n.toString()+"/"+e),r)},e.children.forEach((e,t)=>{i(t,e)}))}class _h{constructor(e){this.collection_=e,this.last_=null}get(){var e=this.collection_.get();const n=Object.assign({},e);return this.last_&&Al(this.last_,(e,t)=>{n[e]=n[e]-t}),this.last_=e,n}}class wh{constructor(e,t){this.server_=t,this.statsToReport_={},this.statsListener_=new _h(e);var n=1e4+2e4*Math.random();Dl(this.reportStats_.bind(this),Math.floor(n))}reportStats_(){var e=this.statsListener_.get();const n={};let r=!1;Al(e,(e,t)=>{0{var t;"child_changed"===e.type&&n.index_.indexedValueChanged(e.oldSnap,e.snapshotNode)&&s.push((t=e.childName,{type:"child_moved",snapshotNode:e.snapshotNode,childName:t}))}),Dh(n,i,"child_removed",e,r,t),Dh(n,i,"child_added",e,r,t),Dh(n,i,"child_moved",s,r,t),Dh(n,i,"child_changed",e,r,t),Dh(n,i,"value",e,r,t),i}function Dh(s,a,t,e,o,c){const n=e.filter(e=>e.type===t);n.sort((e,t)=>function(e,t,n){if(null==t.childName||null==n.childName)throw u("Should only compare child_ events.");var r=new Tu(t.childName,t.snapshotNode),i=new Tu(n.childName,n.snapshotNode);return e.index_.compare(r,i)}(s,e,t)),n.forEach(t=>{const n=(e=s,i=c,"value"===(r=t).type||"child_removed"===r.type||(r.prevName=i.getPredecessorChildName(r.childName,r.snapshotNode,e.index_)),r);var e,r,i;o.forEach(e=>{e.respondsTo(t.type)&&a.push(e.createEvent(n,s.query_))})})}function Ph(e,t){return{eventCache:e,serverCache:t}}function xh(e,t,n,r){return Ph(new Ah(t,n,r),e.serverCache)}function Oh(e,t,n,r){return Ph(e.eventCache,new Ah(t,n,r))}function Mh(e){return e.eventCache.isFullyInitialized()?e.eventCache.getNode():null}function Lh(e){return e.serverCache.isFullyInitialized()?e.serverCache.getNode():null}let Fh;class Uh{constructor(e,t=(Fh=Fh||new Ru(gl),Fh)){this.value=e,this.children=t}static fromObject(e){let n=new Uh(null);return Al(e,(e,t)=>{n=n.set(new iu(e),t)}),n}isEmpty(){return null===this.value&&this.children.isEmpty()}findRootMostMatchingPathAndValue(e,t){if(null!=this.value&&t(this.value))return{path:su(),value:this.value};if(pu(e))return null;{var n=au(e);const i=this.children.get(n);if(null===i)return null;var r=i.findRootMostMatchingPathAndValue(cu(e),t);return null==r?null:{path:du(new iu(n),r.path),value:r.value}}}findRootMostValueAndPath(e){return this.findRootMostMatchingPathAndValue(e,()=>!0)}subtree(e){if(pu(e))return this;{var t=au(e);const n=this.children.get(t);return null!==n?n.subtree(cu(e)):new Uh(null)}}set(e,t){if(pu(e))return new Uh(t,this.children);{var n=au(e);const i=this.children.get(n)||new Uh(null);var r=i.set(cu(e),t),r=this.children.insert(n,r);return new Uh(this.value,r)}}remove(t){if(pu(t))return this.children.isEmpty()?new Uh(null):new Uh(null,this.children);{var n=au(t);const r=this.children.get(n);if(r){const i=r.remove(cu(t));let e;return e=i.isEmpty()?this.children.remove(n):this.children.insert(n,i),null===this.value&&e.isEmpty()?new Uh(null):new Uh(this.value,e)}return this}}get(e){if(pu(e))return this.value;{var t=au(e);const n=this.children.get(t);return n?n.get(cu(e)):null}}setTree(t,n){if(pu(t))return n;{var r=au(t);const i=this.children.get(r)||new Uh(null),s=i.setTree(cu(t),n);let e;return e=s.isEmpty()?this.children.remove(r):this.children.insert(r,s),new Uh(this.value,e)}}fold(e){return this.fold_(su(),e)}fold_(n,r){const i={};return this.children.inorderTraversal((e,t)=>{i[e]=t.fold_(du(n,e),r)}),r(n,this.value,i)}findOnPath(e,t){return this.findOnPath_(e,su(),t)}findOnPath_(e,t,n){var r=!!this.value&&n(t,this.value);if(r)return r;if(pu(e))return null;{r=au(e);const i=this.children.get(r);return i?i.findOnPath_(cu(e),du(t,r),n):null}}foreachOnPath(e,t){return this.foreachOnPath_(e,su(),t)}foreachOnPath_(e,t,n){if(pu(e))return this;{this.value&&n(t,this.value);var r=au(e);const i=this.children.get(r);return i?i.foreachOnPath_(cu(e),du(t,r),n):new Uh(null)}}foreach(e){this.foreach_(su(),e)}foreach_(n,r){this.children.inorderTraversal((e,t)=>{t.foreach_(du(n,e),r)}),this.value&&r(n,this.value)}foreachChild(n){this.children.inorderTraversal((e,t)=>{t.value&&n(e,t.value)})}}class Vh{constructor(e){this.writeTree_=e}static empty(){return new Vh(new Uh(null))}}function qh(t,n,r){if(pu(n))return new Vh(new Uh(r));var i=t.writeTree_.findRootMostValueAndPath(n);if(null!=i){var s=i.path;let e=i.value;i=fu(s,n);return e=e.updateChild(i,r),new Vh(t.writeTree_.set(s,e))}s=new Uh(r),s=t.writeTree_.setTree(n,s);return new Vh(s)}function Bh(e,n,t){let r=e;return Al(t,(e,t)=>{r=qh(r,du(n,e),t)}),r}function jh(e,t){if(pu(t))return Vh.empty();var n=e.writeTree_.setTree(t,new Uh(null));return new Vh(n)}function zh(e,t){return null!=$h(e,t)}function $h(e,t){var n=e.writeTree_.findRootMostValueAndPath(t);return null!=n?e.writeTree_.get(n.path).getChild(fu(n.path,t)):null}function Kh(e){const n=[],t=e.writeTree_.value;return null!=t?t.isLeafNode()||t.forEachChild(qu,(e,t)=>{n.push(new Tu(e,t))}):e.writeTree_.children.inorderTraversal((e,t)=>{null!=t.value&&n.push(new Tu(e,t.value))}),n}function Wh(e,t){if(pu(t))return e;var n=$h(e,t);return null!=n?new Vh(new Uh(n)):new Vh(e.writeTree_.subtree(t))}function Gh(e){return e.writeTree_.isEmpty()}function Hh(e,t){return function r(i,e,s){{if(null!=e.value)return s.updateChild(i,e.value);{let n=null;return e.children.inorderTraversal((e,t)=>{".priority"===e?(f(null!==t.value,"Priority writes must always be leaf nodes"),n=t.value):s=r(du(i,e),t,s)}),s=!s.getChild(i).isEmpty()&&null!==n?s.updateChild(du(i,".priority"),n):s}}}(su(),e.writeTree_,t)}function Qh(e,t){return od(t,e)}function Yh(t,n){var e,r=t.allWrites.findIndex(e=>e.writeId===n);f(0<=r,"removeWrite called with nonexistent writeId.");const i=t.allWrites[r];t.allWrites.splice(r,1);let s=i.visible,a=!1,o=t.allWrites.length-1;for(;s&&0<=o;){var c=t.allWrites[o];c.visible&&(o>=r&&function(e,t){{if(e.snap)return vu(e.path,t);for(const n in e.children)if(e.children.hasOwnProperty(n)&&vu(du(e.path,n),t))return!0;return!1}}(c,i.path)?s=!1:vu(i.path,c.path)&&(a=!0)),o--}return!!s&&(a?((e=t).visibleWrites=Xh(e.allWrites,Jh,su()),0{t.visibleWrites=jh(t.visibleWrites,du(i.path,e))}),!0)}function Jh(e){return e.visible}function Xh(e,t,n){let r=Vh.empty();for(let s=0;s{r=r.updateImmediateChild(e,t)}),r;if(n){const s=Wh(e.visibleWrites,t);return n.forEachChild(qu,(e,t)=>{var n=Hh(Wh(s,new iu(e)),t);r=r.updateImmediateChild(e,n)}),Kh(s).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}return Kh(Wh(e.visibleWrites,t)).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}(e.writeTree,e.treePath,t)}function nd(e,t,n,r){return function(e,t,n,r,i){f(r||i,"Either existingEventSnap or existingServerSnap must exist");var s=du(t,n);return zh(e.visibleWrites,s)?null:Gh(s=Wh(e.visibleWrites,s))?i.getChild(n):Hh(s,i.getChild(n))}(e.writeTree,e.treePath,t,n,r)}function rd(e,t){return n=e.writeTree,t=du(e.treePath,t),$h(n.visibleWrites,t);var n}function id(e,t,n,r,i,s){return function(e,t,n,r,i,s,a){let o;var c=Wh(e.visibleWrites,t),l=$h(c,su());if(null!=l)o=l;else{if(null==n)return[];o=Hh(c,n)}if(o=o.withIndex(a),o.isEmpty()||o.isLeafNode())return[];{const u=[],h=a.getCompare(),d=s?o.getReverseIteratorFrom(r,a):o.getIteratorFrom(r,a);let e=d.getNext();for(;e&&u.length{var n=du(s,e);gd(i,au(n))&&(l=fd(r,l,n,t,a,o,c))}),e.foreach((e,t)=>{var n=du(s,e);gd(i,au(n))||(l=fd(r,l,n,t,a,o,c))}),l}(e,t,c.path,c.children,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered(),vd(e,t,c.path,c.children,r,i,o,s))}else if(n.type===el.ACK_USER_WRITE){var l=n;a=l.revert?function(n,r,i,s,e,a){let o;{if(null!=rd(s,i))return r;{var c=new ud(s,r,e);const u=r.eventCache.getNode();let t;if(pu(i)||".priority"===au(i)){let e;e=r.serverCache.isFullyInitialized()?ed(s,Lh(r)):(l=r.serverCache.getNode(),f(l instanceof Hu,"serverChildren would be complete if leaf node"),td(s,l)),e=e,t=n.filter.updateFullNode(u,e,a)}else{var l=au(i);let e=sd(s,l,r.serverCache);null==e&&r.serverCache.isCompleteForChild(l)&&(e=u.getImmediateChild(l)),t=null!=e?n.filter.updateChild(u,l,e,cu(i),c,a):r.eventCache.getNode().hasChild(l)?n.filter.updateChild(u,l,Hu.EMPTY_NODE,cu(i),c,a):u,t.isEmpty()&&r.serverCache.isFullyInitialized()&&(o=ed(s,Lh(r)),o.isLeafNode()&&(t=n.filter.updateFullNode(t,o,a)))}return o=r.serverCache.isFullyInitialized()||null!=rd(s,su()),xh(r,t,o,n.filter.filtersNodes())}}}(e,t,l.path,r,i,s):function(e,t,i,n,s,a,o){if(null!=rd(s,i))return t;const c=t.serverCache.isFiltered(),l=t.serverCache;{if(null!=n.value){if(pu(i)&&l.isFullyInitialized()||l.isCompleteForPath(i))return pd(e,t,i,l.getNode().getChild(i),s,a,c,o);if(pu(i)){let n=new Uh(null);return l.getNode().forEachChild(Su,(e,t)=>{n=n.set(new iu(e),t)}),vd(e,t,i,n,s,a,c,o)}return t}{let r=new Uh(null);return n.foreach((e,t)=>{var n=du(i,e);l.isCompleteForPath(n)&&(r=r.set(e,l.getNode().getChild(n)))}),vd(e,t,i,r,s,a,c,o)}}}(e,t,l.path,l.affectedTree,r,i,s)}else{if(n.type!==el.LISTEN_COMPLETE)throw u("Unknown operation type: "+n.type);a=function(e,t,n,r,i){const s=t.serverCache,a=Oh(t,s.getNode(),s.isFullyInitialized()||pu(n),s.isFiltered());return dd(e,a,n,r,ld,i)}(e,t,n.path,r,s)}l=s.getChanges();return function(e,t,n){const r=t.eventCache;if(r.isFullyInitialized()){var i=r.getNode().isLeafNode()||r.getNode().isEmpty();const s=Mh(e);(0{n=n.updateChild(e,t)}),n}function vd(r,i,e,t,s,a,o,c){if(i.serverCache.getNode().isEmpty()&&!i.serverCache.isFullyInitialized())return i;let l=i,n;n=pu(e)?t:new Uh(null).setTree(e,t);const u=i.serverCache.getNode();return n.children.inorderTraversal((e,t)=>{var n;u.hasChild(e)&&(n=md(0,i.serverCache.getNode().getImmediateChild(e),t),l=pd(r,l,new iu(e),n,s,a,o,c))}),n.children.inorderTraversal((e,t)=>{var n=!i.serverCache.isCompleteForChild(e)&&null===t.value;u.hasChild(e)||n||(n=md(0,i.serverCache.getNode().getImmediateChild(e),t),l=pd(r,l,new iu(e),n,s,a,o,c))}),l}class yd{constructor(e,t){this.query_=e,this.eventRegistrations_=[];const n=this.query_._queryParams,r=new sh(n.getIndex()),i=(e=n).loadsAllData()?new sh(e.getIndex()):new(e.hasLimit()?oh:ah)(e);this.processor_={filter:i};const s=t.serverCache,a=t.eventCache;var o=r.updateFullNode(Hu.EMPTY_NODE,s.getNode(),null),c=i.updateFullNode(Hu.EMPTY_NODE,a.getNode(),null),o=new Ah(o,s.isFullyInitialized(),r.filtersNodes()),c=new Ah(c,a.isFullyInitialized(),i.filtersNodes());this.viewCache_=Ph(c,o),this.eventGenerator_=new Nh(this.query_)}get query(){return this.query_}}function _d(e){return 0===e.eventRegistrations_.length}function wd(n,r,i){const s=[];if(i){f(null==r,"A cancel should cancel all event registrations.");const a=n.query._path;n.eventRegistrations_.forEach(e=>{var t=e.createCancelEvent(i,a);t&&s.push(t)})}if(r){let e=[];for(let t=0;t{r.push(nh(e,t))})}return n.isFullyInitialized()&&r.push(th(n.getNode())),Id(e,r,n.getNode(),t)}(a,n)}function Ad(e,t,n,r){var i=t._queryIdentifier;const s=[];let a=[];var o=xd(e);if("default"===i)for(var[c,l]of e.views.entries())a=a.concat(wd(l,n,r)),_d(l)&&(e.views.delete(c),l.query._queryParams.loadsAllData()||s.push(l.query));else{const u=e.views.get(i);u&&(a=a.concat(wd(u,n,r)),_d(u)&&(e.views.delete(i),u.query._queryParams.loadsAllData()||s.push(u.query)))}return o&&!xd(e)&&s.push((f(Td,"Reference.ts has not been loaded"),new Td(t._repo,t._path))),{removed:s,events:a}}function Nd(e){const t=[];for(const n of e.views.values())n.query._queryParams.loadsAllData()||t.push(n);return t}function Rd(e,t){let n=null;for(const r of e.views.values())n=n||function(e,t){const n=Lh(e.viewCache_);return n&&(e.query._queryParams.loadsAllData()||!pu(t)&&!n.getImmediateChild(au(t)).isEmpty())?n.getChild(t):null}(r,t);return n}function Dd(e,t){const n=t._queryParams;if(n.loadsAllData())return Od(e);var r=t._queryIdentifier;return e.views.get(r)}function Pd(e,t){return null!=Dd(e,t)}function xd(e){return null!=Od(e)}function Od(e){for(const t of e.views.values())if(t.query._queryParams.loadsAllData())return t;return null}let Md;let Ld=1;class Fd{constructor(e){this.listenProvider_=e,this.syncPointTree_=new Uh(null),this.pendingWriteTree_={visibleWrites:Vh.empty(),allWrites:[],lastWriteId:-1},this.tagToQueryMap=new Map,this.queryToTagMap=new Map}}function Ud(e,t,n,r,i){var s,a,o,c;return s=e.pendingWriteTree_,a=t,o=n,c=r,r=i,f(c>s.lastWriteId,"Stacking an older write on top of newer ones"),s.allWrites.push({path:a,snap:o,writeId:c,visible:r=void 0===r?!0:r}),r&&(s.visibleWrites=qh(s.visibleWrites,a,o)),s.lastWriteId=c,i?Gd(e,new kh(bh(),t,n)):[]}function Vd(e,t,n,r){var i,s,a;i=e.pendingWriteTree_,s=t,a=n,r=r,f(r>i.lastWriteId,"Stacking an older merge on top of newer ones"),i.allWrites.push({path:s,children:a,writeId:r,visible:!0}),i.visibleWrites=Bh(i.visibleWrites,s,a),i.lastWriteId=r;var o=Uh.fromObject(n);return Gd(e,new Sh(bh(),t,o))}function qd(e,t,n=!1){var r=function(e,t){for(let r=0;r{t=t.set(new iu(e),!0)}),Gd(e,new Eh(r.path,t,n))}return[]}function Bd(e,t,n){return Gd(e,new kh(Ih(),t,n))}function jd(n,e,t,r,i=!1){var s=e._path,a=n.syncPointTree_.get(s);let o=[];if(a&&("default"===e._queryIdentifier||Pd(a,e))){var c=Ad(a,e,t,r);0===a.views.size&&(n.syncPointTree_=n.syncPointTree_.remove(s));const d=c.removed;if(o=c.events,!i){a=-1!==d.findIndex(e=>e._queryParams.loadsAllData()),c=n.syncPointTree_.findOnPath(s,(e,t)=>xd(t));if(a&&!c){const p=n.syncPointTree_.subtree(s);if(!p.isEmpty()){var l=p.fold((e,t,r)=>{if(t&&xd(t))return[Od(t)];{let n=[];return t&&(n=Nd(t)),Al(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e{var t=n.queryToTagMap.get(Jd(e));n.listenProvider_.stopListening(tp(e),t)}))}!function(e,t){for(let i=0;i{var n=fu(e,i);s=s||Rd(t,n),a=a||xd(t)});let o=e.syncPointTree_.get(i);o?(a=a||xd(o),s=s||Rd(o,su())):(o=new Ed,e.syncPointTree_=e.syncPointTree_.set(i,o));let c;if(null!=s)c=!0;else{c=!1,s=Hu.EMPTY_NODE;const p=e.syncPointTree_.subtree(i);p.foreachChild((e,t)=>{var n=Rd(t,su());n&&(s=s.updateImmediateChild(e,n))})}var l,u=Pd(o,t);u||t._queryParams.loadsAllData()||(h=Jd(t),f(!e.queryToTagMap.has(h),"View does not exist, but we have a tag"),l=Ld++,e.queryToTagMap.set(h,l),e.tagToQueryMap.set(l,h));var h=Qh(e.pendingWriteTree_,i);let d=Sd(o,t,n,h,s,c);return u||a||r||(u=Dd(o,t),d=d.concat(function(t,e,n){const r=e._path,i=Yd(t,e),s=Qd(t,n),a=t.listenProvider_.startListening(tp(e),i,s.hashFn,s.onComplete),o=t.syncPointTree_.subtree(r);if(i)f(!xd(o.value),"If we're adding a query, it shouldn't be shadowed");else{var c=o.fold((e,t,r)=>{if(!pu(e)&&t&&xd(t))return[Od(t).query];{let n=[];return t&&(n=n.concat(Nd(t).map(e=>e.query))),Al(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e{var n=Rd(t,fu(e,r));if(n)return n});return Zh(n,r,i,t,!0)}function Wd(e,t){const r=t._path;let i=null;e.syncPointTree_.foreachOnPath(r,(e,t)=>{var n=fu(e,r);i=i||Rd(t,n)});let n=e.syncPointTree_.get(r);n?i=i||Rd(n,su()):(n=new Ed,e.syncPointTree_=e.syncPointTree_.set(r,n));var s=null!=i;const a=s?new Ah(i,!0,!1):null;var o=Qh(e.pendingWriteTree_,t._path);return Mh(kd(n,t,o,s?a.getNode():Hu.EMPTY_NODE,s).viewCache_)}function Gd(e,t){return function t(n,r,i,s){{if(pu(n.path))return Hd(n,r,i,s);{const a=r.get(su());null==i&&null!=a&&(i=Rd(a,su()));let e=[];const o=au(n.path),c=n.operationForChild(o),l=r.children.get(o);if(l&&c){const u=i?i.getImmediateChild(o):null,h=ad(s,o);e=e.concat(t(c,l,u,h))}return a&&(e=e.concat(Cd(a,n,s,i))),e}}}(t,e.syncPointTree_,null,Qh(e.pendingWriteTree_,su()))}function Hd(s,e,a,o){var t=e.get(su());null==a&&null!=t&&(a=Rd(t,su()));let c=[];return e.children.inorderTraversal((e,t)=>{var n=a?a.getImmediateChild(e):null,r=ad(o,e),i=s.operationForChild(e);i&&(c=c.concat(Hd(i,t,n,r)))}),t&&(c=c.concat(Cd(t,s,o,a))),c}function Qd(i,t){const s=t.query,a=Yd(i,s);return{hashFn:()=>{const e=t.viewCache_.serverCache.getNode()||Hu.EMPTY_NODE;return e.hash()},onComplete:e=>{if("ok"===e)return a?function(e,t,n){if(s=Xd(e,n)){var r=Zd(s),i=r.path,s=r.queryId,r=fu(i,t);return ep(e,i,new Ch(Th(s),r))}return[]}(i,s._path,a):(t=i,n=s._path,Gd(t,new Ch(Ih(),n)));var t,n,r=function(e,t){let n="Unknown Error";"too_big"===e?n="The data requested exceeds the maximum size that can be accessed with a single request.":"permission_denied"===e?n="Client doesn't have permission to access the desired data.":"unavailable"===e&&(n="The service is unavailable");const r=new Error(e+" at "+t._path.toString()+": "+n);return r.code=e.toUpperCase(),r}(e,s);return jd(i,s,null,r)}}}function Yd(e,t){var n=Jd(t);return e.queryToTagMap.get(n)}function Jd(e){return e._path.toString()+"$"+e._queryIdentifier}function Xd(e,t){return e.tagToQueryMap.get(t)}function Zd(e){var t=e.indexOf("$");return f(-1!==t&&t{var n=up(t,r.getImmediateChild(e),i);n!==t&&(s=s.updateImmediateChild(e,n))}),s}}class hp{constructor(e="",t=null,n={children:{},childCount:0}){this.name=e,this.parent=t,this.node=n}}function dp(e,t){let n=t instanceof iu?t:new iu(t),r=e,i=au(n);for(;null!==i;){var s=F(r.node.children,i)||{children:{},childCount:0};r=new hp(i,r,s),n=cu(n),i=au(n)}return r}function pp(e){return e.node.value}function fp(e,t){e.node.value=t,yp(e)}function gp(e){return 0{r(new hp(e,n,t))})}function vp(e){return new iu(null===e.parent?e.name:vp(e.parent)+"/"+e.name)}function yp(e){var t,n,r,i;null!==e.parent&&(t=e.parent,n=e.name,r=function(e){return void 0===pp(e)&&!gp(e)}(e=e),i=L(t.node.children,n),r&&i?(delete t.node.children[n],t.node.childCount--,yp(t)):r||i||(t.node.children[n]=e.node,t.node.childCount++,yp(t)))}function _p(e,t,n,r){r&&void 0===t||Pp(Y(e,"value"),t,n)}function wp(e,t,r,n){if(!n||void 0!==t){const i=Y(e,"values");if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(i+" must be an object containing the children to replace.");const s=[];Al(t,(e,t)=>{const n=new iu(e);if(Pp(i,t,du(r,n)),".priority"===lu(n)&&!Dp(t))throw new Error(i+"contains an invalid value for '"+n.toString()+"', which must be a valid Firebase priority (a string, finite number, server value, or null).");s.push(n)}),function(t,n){let r,i;for(r=0;rSp/3&&ee(e)>Sp)throw new Error(a+"contains a string greater than "+Sp+" utf8 bytes "+wu(o)+" ('"+e.substring(0,50)+"...')");if(e&&"object"==typeof e){let i=!1,s=!1;if(Al(e,(e,t)=>{if(".value"===e)i=!0;else if(".priority"!==e&&".sv"!==e&&(s=!0,!Ap(e)))throw new Error(a+" contains an invalid key ("+e+") "+wu(o)+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');var n,r;n=o,e=e,0mu(e,t))}function Up(e,t,n){Lp(e,n),Vp(e,e=>vu(e,t)||vu(t,e))}function Vp(e,t){e.recursionDepth_++;let n=!0;for(let i=0;i{Wp(a,e,t,n,r)},a.authTokenProvider_,a.appCheckProvider_),setTimeout(()=>Gp(a,!0),0);else{if(null!=t){if("object"!=typeof t)throw new Error("Only objects are supported for option databaseAuthVariableOverride");try{O(t)}catch(e){throw new Error("Invalid authOverride provided: "+e)}}a.persistentConnection_=new Iu(a.repoInfo_,e,(e,t,n,r)=>{Wp(a,e,t,n,r)},e=>{Gp(a,e)},e=>{var n;n=a,Al(e,(e,t)=>{Hp(n,e,t)})},a.authTokenProvider_,a.appCheckProvider_,t),a.server_=a.persistentConnection_}var n;a.authTokenProvider_.addTokenChangeListener(e=>{a.server_.refreshAuthToken(e)}),a.appCheckProvider_.addTokenChangeListener(e=>{a.server_.refreshAppCheckToken(e.token)}),a.statsReporter_=(e=a.repoInfo_,t=()=>new wh(a.stats_,a.server_),n=e.toString(),Wl[n]||(Wl[n]=t()),Wl[n]),a.infoData_=new gh,a.infoSyncTree_=new Fd({startListening:(e,t,n,r)=>{let i=[];const s=a.infoData_.getNode(e._path);return s.isEmpty()||(i=Bd(a.infoSyncTree_,e._path,s),setTimeout(()=>{r("ok")},0)),i},stopListening:()=>{}}),Hp(a,"connected",!1),a.serverSyncTree_=new Fd({startListening:(r,e,t,i)=>(a.server_.listen(r,t,e,(e,t)=>{var n=i(e,t);Up(a.eventQueue_,r._path,n)}),[]),stopListening:(e,t)=>{a.server_.unlisten(e,t)}})}function $p(e){const t=e.infoData_.getNode(new iu(".info/serverTimeOffset"));var n=t.val()||0;return(new Date).getTime()+n}function Kp(e){return ip({timestamp:$p(e)})}function Wp(e,t,n,r,i){e.dataUpdateCount++;var s,a,o=new iu(t);n=e.interceptServerDataCallback_?e.interceptServerDataCallback_(t,n):n;let c=[];c=i?r?(s=V(n,e=>Xu(e)),function(e,t,n,r){if(o=Xd(e,r)){var i=Zd(o),s=i.path,a=i.queryId,o=fu(s,t),i=Uh.fromObject(n);return ep(e,s,new Sh(Th(a),o,i))}return[]}(e.serverSyncTree_,o,s,i)):(s=Xu(n),zd(e.serverSyncTree_,o,s,i)):r?(a=V(n,e=>Xu(e)),t=e.serverSyncTree_,i=o,r=a,a=Uh.fromObject(r),Gd(t,new Sh(Ih(),i,a))):(a=Xu(n),Bd(e.serverSyncTree_,o,a));let l=o;0{var n=cp(e,t,r.serverSyncTree_,i);vh(s,e,n)});let a=[];yh(s,su(),(e,t)=>{a=a.concat(Bd(r.serverSyncTree_,e,t));var n=uf(r,e);af(r,n)}),r.onDisconnect_=mh(),Up(r.eventQueue_,su(),a)}(e)}function Hp(e,t,n){var r=new iu("/.info/"+t),i=Xu(n);e.infoData_.updateSnapshot(r,i);i=Bd(e.infoSyncTree_,r,i);Up(e.eventQueue_,r,i)}function Qp(e){return e.nextWriteId_++}function Yp(r,i,e,t,s){tf(r,"set",{path:i.toString(),value:e,priority:t});var n=Kp(r);const a=Xu(e,t);var o=Kd(r.serverSyncTree_,i),n=lp(a,o,n);const c=Qp(r);n=Ud(r.serverSyncTree_,i,n,c,!0);Lp(r.eventQueue_,n),r.server_.put(i.toString(),a.val(!0),(e,t)=>{var n="ok"===e;n||Il("set at "+i+" failed: "+e);n=qd(r.serverSyncTree_,c,!n);Up(r.eventQueue_,i,n),nf(0,s,e,t)});n=uf(r,i);af(r,n),Up(r.eventQueue_,n,[])}function Jp(n,r,i){n.server_.onDisconnectCancel(r.toString(),(e,t)=>{"ok"===e&&!function e(n,t){if(pu(t))return n.value=null,n.children.clear(),!0;if(null!==n.value){if(n.value.isLeafNode())return!1;{const i=n.value;return n.value=null,i.forEachChild(qu,(e,t)=>{vh(n,new iu(e),t)}),e(n,t)}}if(0{"ok"===e&&vh(n.onDisconnect_,r,s),nf(0,i,e,t)})}function Zp(e,t,n){let r;r=".info"===au(t._path)?jd(e.infoSyncTree_,t,n):jd(e.serverSyncTree_,t,n),Fp(e.eventQueue_,t._path,r)}function ef(e){e.persistentConnection_&&e.persistentConnection_.interrupt(qp)}function tf(e,...t){let n="";e.persistentConnection_&&(n=e.persistentConnection_.id+":"),wl(n,...t)}function nf(e,r,i,s){r&&Ml(()=>{if("ok"===i)r(null);else{var t=(i||"error").toUpperCase();let e=t;s&&(e+=": "+s);const n=new Error(e);n.code=t,r(n)}})}function rf(e,t,n){return Kd(e.serverSyncTree_,t,n)||Hu.EMPTY_NODE}function sf(t,e=t.transactionQueueTree_){if(e||lf(t,e),pp(e)){const n=cf(t,e);f(00===e.status)&&function(i,s,a){const e=a.map(e=>e.currentWriteId),t=rf(i,s,e);let n=t;var r=t.hash();for(let u=0;u{tf(i,"transaction put response",{path:l.toString(),status:t});let n=[];if("ok"===t){const r=[];for(let e=0;ea[e].onComplete(null,!0,a[e].currentOutputSnapshotResolved)),a[e].unwatcher();lf(i,dp(i.transactionQueueTree_,s)),sf(i,i.transactionQueueTree_),Up(i.eventQueue_,s,n);for(let t=0;t{sf(t,e)})}function af(e,t){var n=of(e,t),r=vp(n);return function(i,s,a){if(0!==s.length){const l=[];let n=[];const t=s.filter(e=>0===e.status),u=t.map(e=>e.currentWriteId);for(let r=0;r=Bp)e=!0,t="maxretry",n=n.concat(qd(i.serverSyncTree_,h.currentWriteId,!0));else{const d=rf(i,h.path,u);h.currentInputSnapshot=d;var c=s[r].update(d.val());if(void 0!==c){Pp("transaction failed: Data returned ",c,h.path);let e=Xu(c);"object"==typeof c&&null!=c&&L(c,".priority")||(e=e.updatePriority(d.getPriority()));o=h.currentWriteId,c=Kp(i),c=lp(e,d,c);h.currentOutputSnapshotRaw=e,h.currentOutputSnapshotResolved=c,h.currentWriteId=Qp(i),u.splice(u.indexOf(o),1),n=n.concat(Ud(i.serverSyncTree_,h.path,c,h.currentWriteId,h.applyLocally)),n=n.concat(qd(i.serverSyncTree_,o,!0))}else e=!0,t="nodata",n=n.concat(qd(i.serverSyncTree_,h.currentWriteId,!0))}Up(i.eventQueue_,a,n),n=[],e&&(s[r].status=2,function(e){setTimeout(e,Math.floor(0))}(s[r].unwatcher),s[r].onComplete&&("nodata"===t?l.push(()=>s[r].onComplete(null,!1,s[r].currentInputSnapshot)):l.push(()=>s[r].onComplete(new Error(t),!1,null))))}lf(i,i.transactionQueueTree_);for(let e=0;e{t(n,e,r)})}(e,t,n),n.sort((e,t)=>e.order-t.order),n}function lf(t,n){const r=pp(n);if(r){let e=0;for(let t=0;t{lf(t,e)})}function uf(t,e){var n=vp(of(t,e)),r=dp(t.transactionQueueTree_,e);return function(e,t,n){let r=n?e:e.parent;for(;null!==r;){if(t(r))return;r=r.parent}}(r,e=>{hf(t,e)}),hf(t,r),function t(e,n,r,i){r&&!i&&n(e),mp(e,e=>{t(e,n,!0,i)}),r&&i&&n(e)}(r,e=>{hf(t,e)}),n}function hf(i,s){const a=pp(s);if(a){const o=[];let e=[],t=-1;for(let n=0;n.firebaseio.com instead"),r&&"undefined"!==r||"localhost"===n.domain||bl("Cannot parse Firebase url. Please use https://.firebaseio.com"),n.secure||Tl();var i="ws"===n.scheme||"wss"===n.scheme;return{repoInfo:new jl(n.host,n.secure,r,i,t,"",r!==n.subdomain),path:new iu(n.pathString)}},pf=function(r){let i="",s="",a="",o="",c="",l=!0,u="https",h=443;if("string"==typeof r){let e=r.indexOf("//");0<=e&&(u=r.substring(0,e-1),r=r.substring(e+2));let t=r.indexOf("/");-1===t&&(t=r.length);let n=r.indexOf("?");-1===n&&(n=r.length),i=r.substring(0,Math.min(t,n)),t{})),e.promise}remove(){Ep("OnDisconnect.remove",this._path);const e=new y;return Xp(this._repo,this._path,null,e.wrapCallback(()=>{})),e.promise}set(e){Ep("OnDisconnect.set",this._path),_p("OnDisconnect.set",e,this._path,!1);const t=new y;return Xp(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}setWithPriority(e,t){Ep("OnDisconnect.setWithPriority",this._path),_p("OnDisconnect.setWithPriority",e,this._path,!1),bp("OnDisconnect.setWithPriority",t,!1);const n=new y;return function(n,r,e,t,i){const s=Xu(e,t);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&vh(n.onDisconnect_,r,s),nf(0,i,e,t)})}(this._repo,this._path,e,t,n.wrapCallback(()=>{})),n.promise}update(e){Ep("OnDisconnect.update",this._path),wp("OnDisconnect.update",e,this._path,!1);const t=new y;return function(r,i,n,s){if(U(n))return wl("onDisconnect().update() called with empty data. Don't do anything."),nf(0,s,"ok",void 0);r.server_.onDisconnectMerge(i.toString(),n,(e,t)=>{"ok"===e&&Al(n,(e,t)=>{var n=Xu(t);vh(r.onDisconnect_,du(i,e),n)}),nf(0,s,e,t)})}(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}}class wf{constructor(e,t,n,r){this._repo=e,this._path=t,this._queryParams=n,this._orderByCalled=r}get key(){return pu(this._path)?null:lu(this._path)}get ref(){return new Ef(this._repo,this._path)}get _queryIdentifier(){var e=ph(this._queryParams),e=vl(e);return"{}"===e?"default":e}get _queryObject(){return ph(this._queryParams)}isEqual(e){if(!((e=ae(e))instanceof wf))return!1;var t=this._repo===e._repo,n=mu(this._path,e._path),r=this._queryIdentifier===e._queryIdentifier;return t&&n&&r}toJSON(){return this.toString()}toString(){return this._repo.toString()+function(e){let t="";for(let n=e.pieceNum_;nn(new Cf(t,Af(this.ref,e),qu)))}hasChild(e){var t=new iu(e);return!this._node.getChild(t).isEmpty()}hasChildren(){return!this._node.isLeafNode()&&!this._node.isEmpty()}toJSON(){return this.exportVal()}val(){return this._node.val()}}function kf(e,t){return(e=ae(e))._checkNotDeleted("ref"),void 0!==t?Af(e._root,t):e._root}function Sf(e,t){(e=ae(e))._checkNotDeleted("refFromURL");const n=df(t,e._repo.repoInfo_.nodeAdmin);Op("refFromURL",n);var r=n.repoInfo;return e._repo.repoInfo_.isCustomHost()||r.host===e._repo.repoInfo_.host||bl("refFromURL: Host name does not match the current database: (found "+r.host+" but expected "+e._repo.repoInfo_.host+")"),kf(e,n.path.toString())}function Af(e,t){return(null===au((e=ae(e))._path)?Tp:xp)("child","path",t,!1),new Ef(e._repo,du(e._path,t))}function Nf(e,t){e=ae(e),Ep("set",e._path),_p("set",t,e._path,!1);const n=new y;return Yp(e._repo,e._path,t,null,n.wrapCallback(()=>{})),n.promise}function Rf(e,t){wp("update",t,e._path,!1);const n=new y;return function(i,s,e,a){tf(i,"update",{path:s.toString(),value:e});let n=!0;const r=Kp(i),o={};if(Al(e,(e,t)=>{n=!1,o[e]=cp(du(s,e),Xu(t),i.serverSyncTree_,r)}),n)wl("update() called with empty data. Don't do anything."),nf(0,a,"ok",void 0);else{const c=Qp(i);var t=Vd(i.serverSyncTree_,s,o,c);Lp(i.eventQueue_,t),i.server_.merge(s.toString(),e,(e,t)=>{var n="ok"===e;n||Il("update at "+s+" failed: "+e);var r=qd(i.serverSyncTree_,c,!n),n=0{var t=uf(i,du(s,e));af(i,t)}),Up(i.eventQueue_,s,[])}}(e._repo,e._path,t,n.wrapCallback(()=>{})),n.promise}function Df(t){t=ae(t);var i,s,a,e=new yf(()=>{}),e=new Pf(e);return i=t._repo,s=t,a=e,(null!=(e=Wd(i.serverSyncTree_,s))?Promise.resolve(e):i.server_.get(s).then(e=>{var t,n=Xu(e).withIndex(s._queryParams.getIndex());$d(i.serverSyncTree_,s,a,!0);let r;return r=s._queryParams.loadsAllData()?Bd(i.serverSyncTree_,s._path,n):(t=Yd(i.serverSyncTree_,s),zd(i.serverSyncTree_,s._path,n,t)),Up(i.eventQueue_,s._path,r),jd(i.serverSyncTree_,s,a,null,!0),n},e=>(tf(i,"get for query "+O(s)+" failed: "+e),Promise.reject(new Error(e))))).then(e=>new Cf(e,new Ef(t._repo,t._path),t._queryParams.getIndex()))}class Pf{constructor(e){this.callbackContext=e}respondsTo(e){return"value"===e}createEvent(e,t){var n=t._queryParams.getIndex();return new mf("value",this,new Cf(e.snapshotNode,new Ef(t._repo,t._path),n))}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,null)}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new vf(this,e,t):null}matches(e){return e instanceof Pf&&(!e.callbackContext||!this.callbackContext||e.callbackContext.matches(this.callbackContext))}hasAnyCallback(){return null!==this.callbackContext}}class xf{constructor(e,t){this.eventType=e,this.callbackContext=t}respondsTo(e){let t="children_added"===e?"child_added":e;return t="children_removed"===t?"child_removed":t,this.eventType===t}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new vf(this,e,t):null}createEvent(e,t){f(null!=e.childName,"Child events should have a childName.");var n=Af(new Ef(t._repo,t._path),e.childName),r=t._queryParams.getIndex();return new mf(e.type,this,new Cf(e.snapshotNode,n,r),e.prevName)}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,e.prevName)}matches(e){return e instanceof xf&&(this.eventType===e.eventType&&(!this.callbackContext||!e.callbackContext||this.callbackContext.matches(e.callbackContext)))}hasAnyCallback(){return!!this.callbackContext}}function Of(n,e,t,r,i){let s;if("object"==typeof r&&(s=void 0,i=r),"function"==typeof r&&(s=r),i&&i.onlyOnce){const c=t;var a=(e,t)=>{Zp(n._repo,n,o),c(e,t)};a.userCallback=t.userCallback,a.context=t.context,t=a}a=new yf(t,s||void 0);const o="value"===e?new Pf(a):new xf(e,a);return function(e,t,n){let r;r=".info"===au(t._path)?$d(e.infoSyncTree_,t,n):$d(e.serverSyncTree_,t,n),Fp(e.eventQueue_,t._path,r)}(n._repo,n,o),()=>Zp(n._repo,n,o)}function Mf(e,t,n,r){return Of(e,"value",t,n,r)}function Lf(e,t,n,r){return Of(e,"child_added",t,n,r)}function Ff(e,t,n,r){return Of(e,"child_changed",t,n,r)}function Uf(e,t,n,r){return Of(e,"child_moved",t,n,r)}function Vf(e,t,n,r){return Of(e,"child_removed",t,n,r)}function qf(e,t,n){let r=null;var i=n?new yf(n):null;"value"===t?r=new Pf(i):t&&(r=new xf(t,i)),Zp(e._repo,e,r)}class Bf{}class jf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("endAt",this._value,e._path,!0);var t=uh(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasEnd())throw new Error("endAt: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class zf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("endBefore",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Su||n?uh(e,t,n):uh(e,t,Cl),r.endBeforeSet_=!0,r}(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasEnd())throw new Error("endBefore: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class $f extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("startAt",this._value,e._path,!0);var t=lh(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasStart())throw new Error("startAt: Starting point was already set (by another call to startAt, startBefore or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class Kf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){_p("startAfter",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===Su||n?lh(e,t,n):lh(e,t,kl),r.startAfterSet_=!0,r}(e._queryParams,this._value,this._key);if(Tf(t),If(t),e._queryParams.hasStart())throw new Error("startAfter: Starting point was already set (by another call to startAt, startAfter, or equalTo).");return new wf(e._repo,e._path,t,e._orderByCalled)}}class Wf extends Bf{constructor(e){super(),this._limit=e}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToFirst: Limit was already set (by another call to limitToFirst or limitToLast).");return new wf(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="l",n}(e._queryParams,this._limit),e._orderByCalled)}}class Gf extends Bf{constructor(e){super(),this._limit=e}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToLast: Limit was already set (by another call to limitToFirst or limitToLast).");return new wf(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="r",n}(e._queryParams,this._limit),e._orderByCalled)}}class Hf extends Bf{constructor(e){super(),this._path=e}_apply(e){bf(e,"orderByChild");var t=new iu(this._path);if(pu(t))throw new Error("orderByChild: cannot pass in empty path. Use orderByValue() instead.");t=new Zu(t),t=hh(e._queryParams,t);return If(t),new wf(e._repo,e._path,t,!0)}}class Qf extends Bf{_apply(e){bf(e,"orderByKey");var t=hh(e._queryParams,Su);return If(t),new wf(e._repo,e._path,t,!0)}}class Yf extends Bf{_apply(e){bf(e,"orderByPriority");var t=hh(e._queryParams,qu);return If(t),new wf(e._repo,e._path,t,!0)}}class Jf extends Bf{_apply(e){bf(e,"orderByValue");var t=hh(e._queryParams,eh);return If(t),new wf(e._repo,e._path,t,!0)}}class Xf extends Bf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){if(_p("equalTo",this._value,e._path,!1),e._queryParams.hasStart())throw new Error("equalTo: Starting point was already set (by another call to startAt/startAfter or equalTo).");if(e._queryParams.hasEnd())throw new Error("equalTo: Ending point was already set (by another call to endAt/endBefore or equalTo).");return new jf(this._value,this._key)._apply(new $f(this._value,this._key)._apply(e))}}function Zf(e,...t){let n=ae(e);for(const r of t)n=r._apply(n);return n}tl=Ef,f(!Td,"__referenceConstructor has already been defined"),Td=tl,nl=Ef,f(!Md,"__referenceConstructor has already been defined"),Md=nl;const eg="FIREBASE_DATABASE_EMULATOR_HOST",tg={};let ng=!1;function rg(e,t,n,r,i){let s=r||e.options.databaseURL;void 0===s&&(e.options.projectId||bl("Can't determine Firebase Database URL. Be sure to include a Project ID when calling firebase.initializeApp()."),wl("Using default host for project ",e.options.projectId),s=`${e.options.projectId}-default-rtdb.firebaseio.com`);let a=df(s,i),o=a.repoInfo,c,l=void 0;"undefined"!=typeof process&&process.env&&(l=process.env[eg]),l?(c=!0,s=`http://${l}?ns=${o.namespace}`,a=df(s,i),o=a.repoInfo):c=!a.repoInfo.secure;var u=i&&c?new Ul(Ul.OWNER):new Fl(e.name,e.options,t);Op("Invalid Firebase Database URL",a),pu(a.path)||bl("Database URL must point to the root of a Firebase Database (not including a child path).");u=function(e,t,n,r){let i=tg[t.name];i||(i={},tg[t.name]=i);var s=i[e.toURLString()];s&&bl("Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.");return s=new jp(e,ng,n,r),i[e.toURLString()]=s}(o,e,u,new Ll(e.name,n));return new ig(u,e)}class ig{constructor(e,t){this._repoInternal=e,this.app=t,this.type="database",this._instanceStarted=!1}get _repo(){return this._instanceStarted||(zp(this._repoInternal,this.app.options.appId,this.app.options.databaseAuthVariableOverride),this._instanceStarted=!0),this._repoInternal}get _root(){return this._rootInternal||(this._rootInternal=new Ef(this._repo,su())),this._rootInternal}_delete(){return null!==this._rootInternal&&(function(e,t){const n=tg[t];n&&n[e.key]===e||bl(`Database ${t}(${e.repoInfo_}) has already been deleted.`),ef(e),delete n[e.key]}(this._repo,this.app.name),this._repoInternal=null,this._rootInternal=null),Promise.resolve()}_checkNotDeleted(e){null===this._rootInternal&&bl("Cannot call "+e+" on a deleted database.")}}function sg(){Zl.IS_TRANSPORT_INITIALIZED&&Il("Transport has already been initialized. Please call this function before calling ref or setting up a listener")}function ag(){sg(),Ql.forceDisallow()}function og(){sg(),Xl.forceDisallow(),Ql.forceAllow()}function cg(e,t,n,r={}){(e=ae(e))._checkNotDeleted("useEmulator"),e._instanceStarted&&bl("Cannot call useEmulator() after instance has already been initialized.");var i,s=e._repoInternal;let a=void 0;s.repoInfo_.nodeAdmin?(r.mockUserToken&&bl('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the "firebase" package instead of "firebase-admin".'),a=new Ul(Ul.OWNER)):r.mockUserToken&&(i="string"==typeof r.mockUserToken?r.mockUserToken:_(r.mockUserToken,e.app.options.projectId),a=new Ul(i)),r=s,e=t,t=n,n=a,r.repoInfo_=new jl(`${e}:${t}`,!1,r.repoInfo_.namespace,r.repoInfo_.webSocketOnly,r.repoInfo_.nodeAdmin,r.repoInfo_.persistenceKey,r.repoInfo_.includeNamespaceInQueryParams,!0),n&&(r.authTokenProvider_=n)}function lg(e){(e=ae(e))._checkNotDeleted("goOnline"),(e=e._repo).persistentConnection_&&e.persistentConnection_.resume(qp)}function ug(e,t){_l(e,t)}const hg={".sv":"timestamp"};class dg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return{committed:this.committed,snapshot:this.snapshot.toJSON()}}}function pg(i,e,t){if(i=ae(i),Ep("Reference.transaction",i._path),".length"===i.key||".keys"===i.key)throw"Reference.transaction failed: "+i.key+" is a read-only object.";var n=null===(r=null==t?void 0:t.applyLocally)||void 0===r||r;const s=new y;var r=Mf(i,()=>{});return function(t,n,e,r,i,s){tf(t,"transaction on "+n);const a={path:n,update:e,onComplete:r,status:null,order:ll(),applyLocally:s,retryCount:0,unwatcher:i,abortReason:null,currentWriteId:null,currentInputSnapshot:null,currentOutputSnapshotRaw:null,currentOutputSnapshotResolved:null},o=rf(t,n,void 0);a.currentInputSnapshot=o;var c=a.update(o.val());if(void 0===c)a.unwatcher(),a.currentOutputSnapshotRaw=null,a.currentOutputSnapshotResolved=null,a.onComplete&&a.onComplete(null,!1,a.currentInputSnapshot);else{Pp("transaction failed: Data returned ",c,a.path),a.status=0;var l=dp(t.transactionQueueTree_,n);const u=pp(l)||[];u.push(a),fp(l,u);let e;if("object"==typeof c&&null!==c&&L(c,".priority"))e=F(c,".priority"),f(Dp(e),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.");else{const h=Kd(t.serverSyncTree_,n)||Hu.EMPTY_NODE;e=h.getPriority().val()}l=Kp(t),c=Xu(c,e),l=lp(c,o,l);a.currentOutputSnapshotRaw=c,a.currentOutputSnapshotResolved=l,a.currentWriteId=Qp(t);l=Ud(t.serverSyncTree_,n,l,a.currentWriteId,a.applyLocally);Up(t.eventQueue_,n,l),sf(t,t.transactionQueueTree_)}}(i._repo,i._path,e,(e,t,n)=>{var r;e?s.reject(e):(r=new Cf(n,new Ef(i._repo,i._path),qu),s.resolve(new dg(t,r)))},r,n),s.promise}Iu.prototype.simpleListen=function(e,t){this.sendRequest("q",{p:e},t)},Iu.prototype.echo=function(e,t){this.sendRequest("echo",{d:e},t)},Qc(Ye),We(new oe("database",(e,{instanceIdentifier:t})=>{return rg(e.getProvider("app").getImmediate(),e.getProvider("auth-internal"),e.getProvider("app-check-internal"),t)},"PUBLIC").setMultipleInstances(!0)),et(Gc,"0.14.4",rl),et(Gc,"0.14.4","esm2017");function fg(e){var t="FIREBASE WARNING: "+e;gg.warn(t)}const gg=new me("@firebase/database-compat");class mg{constructor(e){this._delegate=e}cancel(t){Q("OnDisconnect.cancel",0,1,arguments.length),J("OnDisconnect.cancel","onComplete",t,!0);const e=this._delegate.cancel();return t&&e.then(()=>t(null),e=>t(e)),e}remove(t){Q("OnDisconnect.remove",0,1,arguments.length),J("OnDisconnect.remove","onComplete",t,!0);const e=this._delegate.remove();return t&&e.then(()=>t(null),e=>t(e)),e}set(e,t){Q("OnDisconnect.set",1,2,arguments.length),J("OnDisconnect.set","onComplete",t,!0);const n=this._delegate.set(e);return t&&n.then(()=>t(null),e=>t(e)),n}setWithPriority(e,t,n){Q("OnDisconnect.setWithPriority",2,3,arguments.length),J("OnDisconnect.setWithPriority","onComplete",n,!0);const r=this._delegate.setWithPriority(e,t);return n&&r.then(()=>n(null),e=>n(e)),r}update(t,n){if(Q("OnDisconnect.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;en(null),e=>n(e)),e}}class vg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return Q("TransactionResult.toJSON",0,1,arguments.length),{committed:this.committed,snapshot:this.snapshot.toJSON()}}}class yg{constructor(e,t){this._database=e,this._delegate=t}val(){return Q("DataSnapshot.val",0,0,arguments.length),this._delegate.val()}exportVal(){return Q("DataSnapshot.exportVal",0,0,arguments.length),this._delegate.exportVal()}toJSON(){return Q("DataSnapshot.toJSON",0,1,arguments.length),this._delegate.toJSON()}exists(){return Q("DataSnapshot.exists",0,0,arguments.length),this._delegate.exists()}child(e){return Q("DataSnapshot.child",0,1,arguments.length),e=String(e),xp("DataSnapshot.child","path",e,!1),new yg(this._database,this._delegate.child(e))}hasChild(e){return Q("DataSnapshot.hasChild",1,1,arguments.length),xp("DataSnapshot.hasChild","path",e,!1),this._delegate.hasChild(e)}getPriority(){return Q("DataSnapshot.getPriority",0,0,arguments.length),this._delegate.priority}forEach(t){return Q("DataSnapshot.forEach",1,1,arguments.length),J("DataSnapshot.forEach","action",t,!1),this._delegate.forEach(e=>t(new yg(this._database,e)))}hasChildren(){return Q("DataSnapshot.hasChildren",0,0,arguments.length),this._delegate.hasChildren()}get key(){return this._delegate.key}numChildren(){return Q("DataSnapshot.numChildren",0,0,arguments.length),this._delegate.size}getRef(){return Q("DataSnapshot.ref",0,0,arguments.length),new wg(this._database,this._delegate.ref)}get ref(){return this.getRef()}}class _g{constructor(e,t){this.database=e,this._delegate=t}on(e,n,t,r){var i;Q("Query.on",2,4,arguments.length),J("Query.on","callback",n,!1);const s=_g.getCancelAndContextArgs_("Query.on",t,r);var a=(e,t)=>{n.call(s.context,new yg(this.database,e),t)};a.userCallback=n,a.context=s.context;var o=null===(i=s.cancel)||void 0===i?void 0:i.bind(s.context);switch(e){case"value":return Mf(this._delegate,a,o),n;case"child_added":return Lf(this._delegate,a,o),n;case"child_removed":return Vf(this._delegate,a,o),n;case"child_changed":return Ff(this._delegate,a,o),n;case"child_moved":return Uf(this._delegate,a,o),n;default:throw new Error(Y("Query.on","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}off(e,t,n){var r;Q("Query.off",0,3,arguments.length),function(e,t,n){if(!n||void 0!==t)switch(t){case"value":case"child_added":case"child_removed":case"child_changed":case"child_moved":break;default:throw new Error(Y(e,"eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}("Query.off",e,!0),J("Query.off","callback",t,!0),X("Query.off","context",n,!0),t?((r=()=>{}).userCallback=t,r.context=n,qf(this._delegate,e,r)):qf(this._delegate,e)}get(){return Df(this._delegate).then(e=>new yg(this.database,e))}once(e,r,t,n){Q("Query.once",1,4,arguments.length),J("Query.once","callback",r,!0);const i=_g.getCancelAndContextArgs_("Query.once",t,n),s=new y;var a=(e,t)=>{var n=new yg(this.database,e);r&&r.call(i.context,n,t),s.resolve(n)};a.userCallback=r,a.context=i.context;var o=e=>{i.cancel&&i.cancel.call(i.context,e),s.reject(e)};switch(e){case"value":Mf(this._delegate,a,o,{onlyOnce:!0});break;case"child_added":Lf(this._delegate,a,o,{onlyOnce:!0});break;case"child_removed":Vf(this._delegate,a,o,{onlyOnce:!0});break;case"child_changed":Ff(this._delegate,a,o,{onlyOnce:!0});break;case"child_moved":Uf(this._delegate,a,o,{onlyOnce:!0});break;default:throw new Error(Y("Query.once","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}return s.promise}limitToFirst(e){return Q("Query.limitToFirst",1,1,arguments.length),new _g(this.database,Zf(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToFirst: First argument must be a positive integer.");return new Wf(e)}(e)))}limitToLast(e){return Q("Query.limitToLast",1,1,arguments.length),new _g(this.database,Zf(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToLast: First argument must be a positive integer.");return new Gf(e)}(e)))}orderByChild(e){return Q("Query.orderByChild",1,1,arguments.length),new _g(this.database,Zf(this._delegate,function(e){if("$key"===e)throw new Error('orderByChild: "$key" is invalid. Use orderByKey() instead.');if("$priority"===e)throw new Error('orderByChild: "$priority" is invalid. Use orderByPriority() instead.');if("$value"===e)throw new Error('orderByChild: "$value" is invalid. Use orderByValue() instead.');return xp("orderByChild","path",e,!1),new Hf(e)}(e)))}orderByKey(){return Q("Query.orderByKey",0,0,arguments.length),new _g(this.database,Zf(this._delegate,new Qf))}orderByPriority(){return Q("Query.orderByPriority",0,0,arguments.length),new _g(this.database,Zf(this._delegate,new Yf))}orderByValue(){return Q("Query.orderByValue",0,0,arguments.length),new _g(this.database,Zf(this._delegate,new Jf))}startAt(e=null,t){return Q("Query.startAt",0,2,arguments.length),new _g(this.database,Zf(this._delegate,([e=null,t]=[e,t],Ip("startAt","key",t,!0),new $f(e,t))))}startAfter(e=null,t){return Q("Query.startAfter",0,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("startAfter","key",t,!0),new Kf(e,t))))}endAt(e=null,t){return Q("Query.endAt",0,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("endAt","key",t,!0),new jf(e,t))))}endBefore(e=null,t){return Q("Query.endBefore",0,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("endBefore","key",t,!0),new zf(e,t))))}equalTo(e,t){return Q("Query.equalTo",1,2,arguments.length),new _g(this.database,Zf(this._delegate,(e=e,t=t,Ip("equalTo","key",t,!0),new Xf(e,t))))}toString(){return Q("Query.toString",0,0,arguments.length),this._delegate.toString()}toJSON(){return Q("Query.toJSON",0,1,arguments.length),this._delegate.toJSON()}isEqual(e){if(Q("Query.isEqual",1,1,arguments.length),e instanceof _g)return this._delegate.isEqual(e._delegate);throw new Error("Query.isEqual failed: First argument must be an instance of firebase.database.Query.")}static getCancelAndContextArgs_(e,t,n){const r={cancel:void 0,context:void 0};if(t&&n)r.cancel=t,J(e,"cancel",r.cancel,!0),r.context=n,X(e,"context",r.context,!0);else if(t)if("object"==typeof t&&null!==t)r.context=t;else{if("function"!=typeof t)throw new Error(Y(e,"cancelOrContext")+" must either be a cancel callback or a context object.");r.cancel=t}return r}get ref(){return new wg(this.database,new Ef(this._delegate._repo,this._delegate._path))}}class wg extends _g{constructor(e,t){super(e,new wf(t._repo,t._path,new ch,!1)),this.database=e,this._delegate=t}getKey(){return Q("Reference.key",0,0,arguments.length),this._delegate.key}child(e){return Q("Reference.child",1,1,arguments.length),"number"==typeof e&&(e=String(e)),new wg(this.database,Af(this._delegate,e))}getParent(){Q("Reference.parent",0,0,arguments.length);var e=this._delegate.parent;return e?new wg(this.database,e):null}getRoot(){return Q("Reference.root",0,0,arguments.length),new wg(this.database,this._delegate.root)}set(e,t){Q("Reference.set",1,2,arguments.length),J("Reference.set","onComplete",t,!0);const n=Nf(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}update(t,n){if(Q("Reference.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;en(null),e=>n(e)),e}setWithPriority(e,t,n){Q("Reference.setWithPriority",2,3,arguments.length),J("Reference.setWithPriority","onComplete",n,!0);const r=function(e,t,n){if(Ep("setWithPriority",e._path),_p("setWithPriority",t,e._path,!1),bp("setWithPriority",n,!1),".length"===e.key||".keys"===e.key)throw"setWithPriority failed: "+e.key+" is a read-only object.";const r=new y;return Yp(e._repo,e._path,t,n,r.wrapCallback(()=>{})),r.promise}(this._delegate,e,t);return n&&r.then(()=>n(null),e=>n(e)),r}remove(t){Q("Reference.remove",0,1,arguments.length),J("Reference.remove","onComplete",t,!0);const e=(n=this._delegate,Ep("remove",n._path),Nf(n,null));var n;return t&&e.then(()=>t(null),e=>t(e)),e}transaction(e,t,n){Q("Reference.transaction",1,3,arguments.length),J("Reference.transaction","transactionUpdate",e,!1),J("Reference.transaction","onComplete",t,!0),function(e,t,n,r){if((!r||void 0!==n)&&"boolean"!=typeof n)throw new Error(Y(e,t)+"must be a boolean.")}("Reference.transaction","applyLocally",n,!0);const r=pg(this._delegate,e,{applyLocally:n}).then(e=>new vg(e.committed,new yg(this.database,e.snapshot)));return t&&r.then(e=>t(null,e.committed,e.snapshot),e=>t(e,!1,null)),r}setPriority(e,t){Q("Reference.setPriority",1,2,arguments.length),J("Reference.setPriority","onComplete",t,!0);const n=function(e,t){e=ae(e),Ep("setPriority",e._path),bp("setPriority",t,!1);const n=new y;return Yp(e._repo,du(e._path,".priority"),t,null,n.wrapCallback(()=>{})),n.promise}(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}push(e,t){Q("Reference.push",0,2,arguments.length),J("Reference.push","onComplete",t,!0);const n=function(e,t){e=ae(e),Ep("push",e._path),_p("push",t,e._path,!0);var n=$p(e._repo),n=gf(n);const r=Af(e,n),i=Af(e,n);let s;return s=null!=t?Nf(i,t).then(()=>i):Promise.resolve(i),r.then=s.then.bind(s),r.catch=s.then.bind(s,void 0),r}(this._delegate,e),r=n.then(e=>new wg(this.database,e));t&&r.then(()=>t(null),e=>t(e));const i=new wg(this.database,n);return i.then=r.then.bind(r),i.catch=r.catch.bind(r,void 0),i}onDisconnect(){return Ep("Reference.onDisconnect",this._delegate._path),new mg(new _f(this._delegate._repo,this._delegate._path))}get key(){return this.getKey()}get parent(){return this.getParent()}get root(){return this.getRoot()}}class bg{constructor(e,t){this._delegate=e,this.app=t,this.INTERNAL={delete:()=>this._delegate._delete(),forceWebSockets:ag,forceLongPolling:og}}useEmulator(e,t,n={}){cg(this._delegate,e,t,n)}ref(e){if(Q("database.ref",0,1,arguments.length),e instanceof wg){var t=Sf(this._delegate,e.toString());return new wg(this,t)}t=kf(this._delegate,e);return new wg(this,t)}refFromURL(e){Q("database.refFromURL",1,1,arguments.length);var t=Sf(this._delegate,e);return new wg(this,t)}goOffline(){var e;Q("database.goOffline",0,0,arguments.length),(e=ae(e=this._delegate))._checkNotDeleted("goOffline"),ef(e._repo)}goOnline(){return Q("database.goOnline",0,0,arguments.length),lg(this._delegate)}}bg.ServerValue={TIMESTAMP:hg,increment:e=>({".sv":{increment:e}})};var Ig,Tg=Object.freeze({__proto__:null,initStandalone:function({app:e,url:t,version:n,customAuthImpl:r,namespace:i,nodeAdmin:s=!1}){Qc(n);const a=new le("auth-internal",new ue("database-standalone"));return a.setComponent(new oe("auth-internal",()=>r,"PRIVATE")),{instance:new bg(rg(e,a,void 0,t,s),e),namespace:i}}});const Eg=bg.ServerValue;(Ig=wt).INTERNAL.registerComponent(new oe("database-compat",(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("database").getImmediate({identifier:t});return new bg(r,n)},"PUBLIC").setServiceProps({Reference:wg,Query:_g,Database:bg,DataSnapshot:yg,enableLogging:ug,INTERNAL:Tg,ServerValue:Eg}).setMultipleInstances(!0)),Ig.registerVersion("@firebase/database-compat","0.3.4");var yt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Cg={},kg=yt||self;function Sg(e){var t=typeof e;return"array"==(t="object"!=t?t:e?Array.isArray(e)?"array":t:"null")||"object"==t&&"number"==typeof e.length}function Ag(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var Ng="closure_uid_"+(1e9*Math.random()>>>0),Rg=0;function Dg(e,t,n){return e.call.apply(e.bind,arguments)}function Pg(t,n,e){if(!t)throw Error();if(2{},t),kg.removeEventListener("test",()=>{},t)}catch(e){}return e}();function jg(e){return/^[\s\xa0]*$/.test(e)}function zg(){var e=kg.navigator;return(e=e&&e.userAgent)?e:""}function $g(e){return-1!=zg().indexOf(e)}function Kg(e){return Kg[" "](e),e}Kg[" "]=function(){};var Wg,Gg=$g("Opera"),Hg=$g("Trident")||$g("MSIE"),Qg=$g("Edge"),Yg=Qg||Hg,Jg=$g("Gecko")&&!(-1!=zg().toLowerCase().indexOf("webkit")&&!$g("Edge"))&&!($g("Trident")||$g("MSIE"))&&!$g("Edge"),Xg=-1!=zg().toLowerCase().indexOf("webkit")&&!$g("Edge");function Zg(){var e=kg.document;return e?e.documentMode:void 0}e:{var em="",tm=(tm=zg(),Jg?/rv:([^\);]+)(\)|;)/.exec(tm):Qg?/Edge\/([\d\.]+)/.exec(tm):Hg?/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(tm):Xg?/WebKit\/(\S+)/.exec(tm):Gg?/(?:Version)[ \/]?(\S+)/.exec(tm):void 0);if(tm&&(em=tm?tm[1]:""),Hg){tm=Zg();if(null!=tm&&tm>parseFloat(em)){Wg=String(tm);break e}}Wg=em}var nm=kg.document&&Hg&&(Zg()||parseInt(Wg,10))||void 0;function rm(e,t){if(qg.call(this,e?e.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,e){var n=this.type=e.type,r=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.g=t,t=e.relatedTarget){if(Jg){e:{try{Kg(t.nodeName);var i=!0;break e}catch(e){}i=!1}i||(t=null)}}else"mouseover"==n?t=e.fromElement:"mouseout"==n&&(t=e.toElement);this.relatedTarget=t,r?(this.clientX=void 0!==r.clientX?r.clientX:r.pageX,this.clientY=void 0!==r.clientY?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0),this.button=e.button,this.key=e.key||"",this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.pointerId=e.pointerId||0,this.pointerType="string"==typeof e.pointerType?e.pointerType:im[e.pointerType]||"",this.state=e.state,(this.i=e).defaultPrevented&&rm.$.h.call(this)}}Mg(rm,qg);var im={2:"touch",3:"pen",4:"mouse"};rm.prototype.h=function(){rm.$.h.call(this);var e=this.i;e.preventDefault?e.preventDefault():e.returnValue=!1};var sm="closure_listenable_"+(1e6*Math.random()|0),am=0;function om(e,t,n,r,i){this.listener=e,this.proxy=null,this.src=t,this.type=n,this.capture=!!r,this.la=i,this.key=++am,this.fa=this.ia=!1}function cm(e){e.fa=!0,e.listener=null,e.proxy=null,e.src=null,e.la=null}function lm(e,t,n){for(const r in e)t.call(n,e[r],r,e)}function um(e){const t={};for(const n in e)t[n]=e[n];return t}const hm="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function dm(t){let n,r;for(let i=1;i>>0);function Cm(t){return"function"==typeof t?t:(t[Em]||(t[Em]=function(e){return t.handleEvent(e)}),t[Em])}function km(){Lg.call(this),this.i=new pm(this),(this.S=this).J=null}function Sm(e,t){var n,r=e.J;if(r)for(n=[];r;r=r.J)n.push(r);if(e=e.S,r=t.type||t,"string"==typeof t?t=new qg(t,e):t instanceof qg?t.target=t.target||e:(a=t,dm(t=new qg(r,e),a)),a=!0,n)for(var i=n.length-1;0<=i;i--)var s=t.g=n[i],a=Am(s,r,!0,t)&&a;if(a=Am(s=t.g=e,r,!0,t)&&a,a=Am(s,r,!1,t)&&a,n)for(i=0;inew Dm,e=>e.reset());class Dm{constructor(){this.next=this.g=this.h=null}set(e,t){this.h=e,this.g=t,this.next=null}reset(){this.next=this.g=this.h=null}}let Pm,xm=!1,Om=new class{constructor(){this.h=this.g=null}add(e,t){const n=Rm.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}},Mm=()=>{const e=kg.Promise.resolve(void 0);Pm=()=>{e.then(Lm)}};var Lm=()=>{for(var e;e=function(){var e=Om;let t=null;return e.g&&(t=e.g,e.g=e.g.next,e.g||(e.h=null),t.next=null),t}();){try{e.h.call(e.g)}catch(e){!function(e){kg.setTimeout(()=>{throw e},0)}(e)}var t=Rm;t.j(e),t.h<100&&(t.h++,e.next=t.g,t.g=e)}xm=!1};function Fm(e,t){km.call(this),this.h=e||1,this.g=t||kg,this.j=xg(this.qb,this),this.l=Date.now()}function Um(e){e.ga=!1,e.T&&(e.g.clearTimeout(e.T),e.T=null)}function Vm(e,t,n){if("function"==typeof e)n&&(e=xg(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=xg(e.handleEvent,e)}return 2147483647{t.g=null,t.i&&(t.i=!1,e(t))},t.j);var n=t.h;t.h=null,t.m.apply(null,n)}(this)}N(){super.N(),this.g&&(kg.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function Bm(e){Lg.call(this),this.h=e,this.g={}}Mg(Bm,Lg);var jm=[];function zm(e,t,n,r){Array.isArray(n)||(n&&(jm[0]=n.toString()),n=jm);for(var i=0;ia.length?pv:(a=a.slice(c,c+o),s.C=c+o,a))),i==pv){4==t&&(e.o=4,Zm(14),r=!1),Wm(e.j,e.m,null,"[Incomplete Response]");break}if(i==dv){e.o=4,Zm(15),Wm(e.j,e.m,n,"[Invalid Chunk]"),r=!1;break}Wm(e.j,e.m,i,null),Tv(e,i)}var s,a,o,c;mv(e)&&i!=pv&&i!=dv&&(e.h.g="",e.C=0),4!=t||0!=n.length||e.h.h||(e.o=1,Zm(16),r=!1),e.i=e.i&&r,r?0>4&15).toString(16)+(15&e).toString(16)}kv.prototype.toString=function(){var e=[],t=this.j;t&&e.push(Ov(t,Lv,!0),":");var n=this.g;return!n&&"file"!=t||(e.push("//"),(t=this.s)&&e.push(Ov(t,Lv,!0),"@"),e.push(encodeURIComponent(String(n)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(n=this.m)&&e.push(":",String(n))),(n=this.l)&&(this.g&&"/"!=n.charAt(0)&&e.push("/"),e.push(Ov(n,"/"==n.charAt(0)?Uv:Fv,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.o)&&e.push("#",Ov(n,qv)),e.join("")};var Lv=/[#\/\?@]/g,Fv=/[#\?:]/g,Uv=/[#\?]/g,Vv=/[#\?@]/g,qv=/#/g;function Bv(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function jv(n){n.g||(n.g=new Map,n.h=0,n.i&&function(e,t){if(e){e=e.split("&");for(var n=0;n=e.j}function Yv(e){return e.h?1:e.g?e.g.size:0}function Jv(e,t){return e.h?e.h==t:e.g&&e.g.has(t)}function Xv(e,t){e.g?e.g.add(t):e.h=t}function Zv(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function ey(t){if(null!=t.h)return t.i.concat(t.h.F);if(null==t.g||0===t.g.size)return Ug(t.i);{let e=t.i;for(const n of t.g.values())e=e.concat(n.F);return e}}Hv.prototype.cancel=function(){if(this.i=ey(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const e of this.g.values())e.cancel();this.g.clear()}};var ty,ny=class{stringify(e){return kg.JSON.stringify(e,void 0)}parse(e){return kg.JSON.parse(e,void 0)}};function ry(){this.g=new ny}function iy(e,t,n,r,i){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,i(r)}catch(e){}}function sy(e){this.l=e.fc||null,this.j=e.ob||!1}function ay(e,t){km.call(this),this.F=e,this.u=t,this.m=void 0,this.readyState=oy,this.status=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.v=new Headers,this.h=null,this.C="GET",this.B="",this.g=!1,this.A=this.j=this.l=null}Mg(sy,nv),sy.prototype.g=function(){return new ay(this.l,this.j)},sy.prototype.i=(ty={},function(){return ty}),Mg(ay,km);var oy=0;function cy(e){e.j.read().then(e.Xa.bind(e)).catch(e.ka.bind(e))}function ly(e){e.readyState=4,e.l=null,e.j=null,e.A=null,uy(e)}function uy(e){e.onreadystatechange&&e.onreadystatechange.call(e)}(bt=ay.prototype).open=function(e,t){if(this.readyState!=oy)throw this.abort(),Error("Error reopening a connection");this.C=e,this.B=t,this.readyState=1,uy(this)},bt.send=function(e){if(1!=this.readyState)throw this.abort(),Error("need to call open() first. ");this.g=!0;const t={headers:this.v,method:this.C,credentials:this.m,cache:void 0};e&&(t.body=e),(this.F||kg).fetch(new Request(this.B,t)).then(this.$a.bind(this),this.ka.bind(this))},bt.abort=function(){this.response=this.responseText="",this.v=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch(()=>{}),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,ly(this)),this.readyState=oy},bt.$a=function(e){if(this.g&&(this.l=e,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=e.headers,this.readyState=2,uy(this)),this.g&&(this.readyState=3,uy(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Ya.bind(this),this.ka.bind(this));else if(void 0!==kg.ReadableStream&&"body"in e){if(this.j=e.body.getReader(),this.u){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.A=new TextDecoder;cy(this)}else e.text().then(this.Za.bind(this),this.ka.bind(this))},bt.Xa=function(e){var t;this.g&&(this.u&&e.value?this.response.push(e.value):this.u||(t=e.value||new Uint8Array(0),(t=this.A.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)),(e.done?ly:uy)(this),3==this.readyState&&cy(this))},bt.Za=function(e){this.g&&(this.response=this.responseText=e,ly(this))},bt.Ya=function(e){this.g&&(this.response=e,ly(this))},bt.ka=function(){this.g&&ly(this)},bt.setRequestHeader=function(e,t){this.v.append(e,t)},bt.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},bt.getAllResponseHeaders=function(){if(!this.h)return"";const e=[],t=this.h.entries();for(var n=t.next();!n.done;)n=n.value,e.push(n[0]+": "+n[1]),n=t.next();return e.join("\r\n")},Object.defineProperty(ay.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}});var hy=kg.JSON.parse;function dy(e){km.call(this),this.headers=new Map,this.u=e||null,this.h=!1,this.C=this.g=null,this.I="",this.m=0,this.j="",this.l=this.G=this.v=this.F=!1,this.B=0,this.A=null,this.K=py,this.L=this.M=!1}Mg(dy,km);var py="",fy=/^https?$/i,gy=["POST","PUT"];function my(e,t){e.h=!1,e.g&&(e.l=!0,e.g.abort(),e.l=!1),e.j=t,e.m=5,vy(e),_y(e)}function vy(e){e.F||(e.F=!0,Sm(e,"complete"),Sm(e,"error"))}function yy(e){if(e.h&&void 0!==Cg&&(!e.C[1]||4!=by(e)||2!=e.da()))if(e.v&&4==by(e))Vm(e.La,0,e);else if(Sm(e,"readystatechange"),4==by(e)){e.h=!1;try{var t,n,r,i=e.da();e:switch(i){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var s=!0;break e;default:s=!1}if((t=s)||((n=0===i)&&(!(r=String(e.I).match(Cv)[1]||null)&&kg.self&&kg.self.location&&(r=kg.self.location.protocol.slice(0,-1)),n=!fy.test(r?r.toLowerCase():"")),t=n),t)Sm(e,"complete"),Sm(e,"success");else{e.m=6;try{var a=2{}:null;e.g=null,e.C=null,t||Sm(e,"ready");try{n.onreadystatechange=r}catch(e){}}}function wy(e){e.g&&e.L&&(e.g.ontimeout=null),e.A&&(kg.clearTimeout(e.A),e.A=null)}function by(e){return e.g?e.g.readyState:0}function Iy(e){try{if(!e.g)return null;if("response"in e.g)return e.g.response;switch(e.K){case py:case"text":return e.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.g)return e.g.mozResponseArrayBuffer}return null}catch(e){return null}}function Ty(e){let n="";return lm(e,function(e,t){n+=t,n+=":",n+=e,n+="\r\n"}),n}function Ey(e,t,n){e:{for(r in n){var r=!1;break e}r=!0}r||(n=Ty(n),"string"==typeof e?null!=n&&encodeURIComponent(String(n)):Dv(e,t,n))}function Cy(e,t,n){return n&&n.internalChannelParams&&n.internalChannelParams[e]||t}function ky(e){this.Ga=0,this.j=[],this.l=new Km,this.pa=this.wa=this.I=this.Y=this.g=this.Da=this.F=this.na=this.o=this.U=this.s=null,this.fb=this.W=0,this.cb=Cy("failFast",!1,e),this.G=this.v=this.u=this.m=this.h=null,this.aa=!0,this.Fa=this.V=-1,this.ba=this.A=this.C=0,this.ab=Cy("baseRetryDelayMs",5e3,e),this.hb=Cy("retryDelaySeedMs",1e4,e),this.eb=Cy("forwardChannelMaxRetries",2,e),this.xa=Cy("forwardChannelRequestTimeoutMs",2e4,e),this.va=e&&e.xmlHttpFactory||void 0,this.Ha=e&&e.dc||!1,this.L=void 0,this.J=e&&e.supportsCrossDomainXhr||!1,this.K="",this.i=new Hv(e&&e.concurrentRequestLimit),this.Ja=new ry,this.P=e&&e.fastHandshake||!1,this.O=e&&e.encodeInitMessageHeaders||!1,this.P&&this.O&&(this.O=!1),this.bb=e&&e.bc||!1,e&&e.Ea&&this.l.Ea(),e&&e.forceLongPolling&&(this.aa=!1),this.ca=!this.P&&this.aa&&e&&e.detectBufferingProxy||!1,this.qa=void 0,e&&e.longPollingTimeout&&0=r.i.j-(r.m?1:0)||(r.m?(r.j=i.F.concat(r.j),0):1==r.H||2==r.H||r.C>=(r.cb?0:r.eb)||(r.m=tv(xg(r.Na,r,i),qy(r,r.C)),r.C++,0))))&&(2!=a||!My(e)))switch(s&&0>>25))+((a=s+(i^t&(n^i))+r[1]+3905402710&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[2]+606105819&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[3]+3250441966&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[4]+4118548399&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[5]+1200080426&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[6]+2821735955&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[7]+4249261313&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[8]+1770035416&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[9]+2336552879&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[10]+4294925233&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[11]+2304563134&4294967295)<<22&4294967295|a>>>10))+((a=t+(s^n&(i^s))+r[12]+1804603682&4294967295)<<7&4294967295|a>>>25))+((a=s+(i^t&(n^i))+r[13]+4254626195&4294967295)<<12&4294967295|a>>>20))+((a=i+(n^s&(t^n))+r[14]+2792965006&4294967295)<<17&4294967295|a>>>15))+((a=n+(t^i&(s^t))+r[15]+1236535329&4294967295)<<22&4294967295|a>>>10))+((a=t+(i^s&(n^i))+r[1]+4129170786&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[6]+3225465664&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[11]+643717713&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[0]+3921069994&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[5]+3593408605&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[10]+38016083&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[15]+3634488961&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[4]+3889429448&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[9]+568446438&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[14]+3275163606&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[3]+4107603335&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[8]+1163531501&4294967295)<<20&4294967295|a>>>12))+((a=t+(i^s&(n^i))+r[13]+2850285829&4294967295)<<5&4294967295|a>>>27))+((a=s+(n^i&(t^n))+r[2]+4243563512&4294967295)<<9&4294967295|a>>>23))+((a=i+(t^n&(s^t))+r[7]+1735328473&4294967295)<<14&4294967295|a>>>18))+((a=n+(s^t&(i^s))+r[12]+2368359562&4294967295)<<20&4294967295|a>>>12))+((a=t+(n^i^s)+r[5]+4294588738&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[8]+2272392833&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[11]+1839030562&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[14]+4259657740&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[1]+2763975236&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[4]+1272893353&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[7]+4139469664&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[10]+3200236656&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[13]+681279174&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[0]+3936430074&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[3]+3572445317&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[6]+76029189&4294967295)<<23&4294967295|a>>>9))+((a=t+(n^i^s)+r[9]+3654602809&4294967295)<<4&4294967295|a>>>28))+((a=s+(t^n^i)+r[12]+3873151461&4294967295)<<11&4294967295|a>>>21))+((a=i+(s^t^n)+r[15]+530742520&4294967295)<<16&4294967295|a>>>16))+((a=n+(i^s^t)+r[2]+3299628645&4294967295)<<23&4294967295|a>>>9))+((a=t+(i^(n|~s))+r[0]+4096336452&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[7]+1126891415&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[14]+2878612391&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[5]+4237533241&4294967295)<<21&4294967295|a>>>11))+((a=t+(i^(n|~s))+r[12]+1700485571&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[3]+2399980690&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[10]+4293915773&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[1]+2240044497&4294967295)<<21&4294967295|a>>>11))+((a=t+(i^(n|~s))+r[8]+1873313359&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[15]+4264355552&4294967295)<<10&4294967295|a>>>22))+((a=i+(t^(s|~n))+r[6]+2734768916&4294967295)<<15&4294967295|a>>>17))+((a=n+(s^(i|~t))+r[13]+1309151649&4294967295)<<21&4294967295|a>>>11))+((s=(t=n+((a=t+(i^(n|~s))+r[4]+4149444226&4294967295)<<6&4294967295|a>>>26))+((a=s+(n^(t|~i))+r[11]+3174756917&4294967295)<<10&4294967295|a>>>22))^((i=s+((a=i+(t^(s|~n))+r[2]+718787259&4294967295)<<15&4294967295|a>>>17))|~t))+r[9]+3951481745&4294967295;e.g[0]=e.g[0]+t&4294967295,e.g[1]=e.g[1]+(i+(a<<21&4294967295|a>>>11))&4294967295,e.g[2]=e.g[2]+i&4294967295,e.g[3]=e.g[3]+s&4294967295}function Zy(e,t){this.h=t;for(var n=[],r=!0,i=e.length-1;0<=i;i--){var s=0|e[i];r&&s==t||(n[i]=s,r=!1)}this.g=n}(bt=dy.prototype).Oa=function(e){this.M=e},bt.ha=function(e,t,n,r){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.I+"; newUri="+e);t=t?t.toUpperCase():"GET",this.I=e,this.j="",this.m=0,this.F=!1,this.h=!0,this.g=(this.u||uv).g(),this.C=this.u?rv(this.u):rv(uv),this.g.onreadystatechange=xg(this.La,this);try{this.G=!0,this.g.open(t,String(e),!0),this.G=!1}catch(e){return void my(this,e)}if(e=n||"",n=new Map(this.headers),r)if(Object.getPrototypeOf(r)===Object.prototype)for(var i in r)n.set(i,r[i]);else{if("function"!=typeof r.keys||"function"!=typeof r.get)throw Error("Unknown input type for opt_headers: "+String(r));for(const c of r.keys())n.set(c,r.get(c))}r=Array.from(n.keys()).find(e=>"content-type"==e.toLowerCase()),i=kg.FormData&&e instanceof kg.FormData,0<=Fg(gy,t)&&!r&&!i&&n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(var[s,a]of n)this.g.setRequestHeader(s,a);this.K&&(this.g.responseType=this.K),"withCredentials"in this.g&&this.g.withCredentials!==this.M&&(this.g.withCredentials=this.M);try{wy(this),0>>r&255;return e};var e_={};function t_(e){return-128<=e&&e<128?(t=e,n=function(e){return new Zy([0|e],e<0?-1:0)},r=e_,Object.prototype.hasOwnProperty.call(r,t)?r[t]:r[t]=n(t)):new Zy([0|e],e<0?-1:0);var t,n,r}function n_(e){if(isNaN(e)||!isFinite(e))return i_;if(e<0)return l_(n_(-e));for(var t=[],n=1,r=0;n<=e;r++)t[r]=e/n|0,n*=r_;return new Zy(t,0)}var r_=4294967296,i_=t_(0),s_=t_(1),a_=t_(16777216);function o_(e){if(0==e.h){for(var t=0;t>>16,e[t]&=65535,t++}function d_(e,t){this.g=e,this.h=t}function p_(e,t){if(o_(t))throw Error("division by zero");if(o_(e))return new d_(i_,i_);if(c_(e))return t=p_(l_(e),t),new d_(l_(t.g),l_(t.h));if(c_(t))return t=p_(e,l_(t)),new d_(l_(t.g),t.h);if(30>>31;return new Zy(n,e.h)}function g_(e,t){var n=t>>5;t%=32;for(var r=e.g.length-n,i=[],s=0;s>>t|e.D(s+n+1)<<32-t:e.D(s+n);return new Zy(i,e.h)}(bt=Zy.prototype).ea=function(){if(c_(this))return-l_(this).ea();for(var e=0,t=1,n=0;n>>0).toString(e);if(o_(n=i))return s+r;for(;s.length<6;)s="0"+s;r=s+r}},bt.D=function(e){return e<0?0:e>>16)+(this.D(i)>>>16)+(e.D(i)>>>16),r=a>>>16;s&=65535,a&=65535,n[i]=a<<16|s}return new Zy(n,-2147483648&n[n.length-1]?-1:0)},bt.R=function(e){if(o_(this)||o_(e))return i_;if(c_(this))return c_(e)?l_(this).R(l_(e)):l_(l_(this).R(e));if(c_(e))return l_(this.R(l_(e)));if(this.X(a_)<0&&e.X(a_)<0)return n_(this.ea()*e.ea());for(var t=this.g.length+e.g.length,n=[],r=0;r<2*t;r++)n[r]=0;for(r=0;r>>16,a=65535&this.D(r),o=e.D(i)>>>16,c=65535&e.D(i);n[2*r+2*i]+=a*c,h_(n,2*r+2*i),n[2*r+2*i+1]+=s*c,h_(n,2*r+2*i+1),n[2*r+2*i+1]+=a*o,h_(n,2*r+2*i+1),n[2*r+2*i+2]+=s*o,h_(n,2*r+2*i+2)}for(r=0;r`${this.name}: [code=${this.code}]: ${this.message}`}}class B_{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class j_{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class z_{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(N_.UNAUTHENTICATED))}shutdown(){}}class $_{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable(()=>t(this.token.user))}shutdown(){this.changeListener=null}}class K_{constructor(e){this.t=e,this.currentUser=N_.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(t,n){let r=this.i;const i=e=>this.i!==r?(r=this.i,n(e)):Promise.resolve();let s=new B_;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new B_,t.enqueueRetryable(()=>i(this.currentUser))};const a=()=>{const e=s;t.enqueueRetryable(async()=>{await e.promise,await i(this.currentUser)})},o=e=>{x_("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.auth.addAuthTokenListener(this.o),a()};this.t.onInit(e=>o(e)),setTimeout(()=>{var e;this.auth||((e=this.t.getImmediate({optional:!0}))?o(e):(x_("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new B_))},0),a()}getToken(){const t=this.i,e=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(e).then(e=>this.i!==t?(x_("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(U_("string"==typeof e.accessToken),new j_(e.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){var e=this.auth&&this.auth.getUid();return U_(null===e||"string"==typeof e),new N_(e)}}class W_{constructor(e,t,n){this.h=e,this.l=t,this.m=n,this.type="FirstParty",this.user=N_.FIRST_PARTY,this.g=new Map}p(){return this.m?this.m():null}get headers(){this.g.set("X-Goog-AuthUser",this.h);var e=this.p();return e&&this.g.set("Authorization",e),this.l&&this.g.set("X-Goog-Iam-Authorization-Token",this.l),this.g}}class G_{constructor(e,t,n){this.h=e,this.l=t,this.m=n}getToken(){return Promise.resolve(new W_(this.h,this.l,this.m))}start(e,t){e.enqueueRetryable(()=>t(N_.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class H_{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&0{null!=e.error&&x_("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);var t=e.token!==this.T;return this.T=e.token,x_("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?n(e.token):Promise.resolve()};this.o=e=>{t.enqueueRetryable(()=>r(e))};const i=e=>{x_("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.appCheck.addTokenListener(this.o)};this.I.onInit(e=>i(e)),setTimeout(()=>{var e;this.appCheck||((e=this.I.getImmediate({optional:!0}))?i(e):x_("FirebaseAppCheckTokenProvider","AppCheck not yet detected"))},0)}getToken(){var e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?(U_("string"==typeof e.token),this.T=e.token,new H_(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}class Y_{static A(){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=Math.floor(256/t.length)*t.length;let r="";for(;r.length<20;){var i=function(t){const n="undefined"!=typeof self&&(self.crypto||self.msCrypto),r=new Uint8Array(t);if(n&&"function"==typeof n.getRandomValues)n.getRandomValues(r);else for(let e=0;er(e,n[t]))}function Z_(e){return e+"\0"}class ew{constructor(e,t){if(this.seconds=e,(this.nanoseconds=t)<0)throw new q_(V_.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(1e9<=t)throw new q_(V_.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new q_(V_.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(253402300800<=e)throw new q_(V_.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return ew.fromMillis(Date.now())}static fromDate(e){return ew.fromMillis(e.getTime())}static fromMillis(e){var t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new ew(t,n)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?J_(this.nanoseconds,e.nanoseconds):J_(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){var e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class tw{constructor(e){this.timestamp=e}static fromTimestamp(e){return new tw(e)}static min(){return new tw(new ew(0,0))}static max(){return new tw(new ew(253402300799,999999999))}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class nw{constructor(e,t,n){void 0===t?t=0:t>e.length&&F_(),void 0===n?n=e.length-t:n>e.length-t&&F_(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===nw.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof nw?e.forEach(e=>{t.push(e)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return this.construct(this.segments,this.offset+(e=void 0===e?1:e),this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return 0===this.length}isPrefixOf(e){if(e.lengthi)return 1}return e.lengtht.length?1:0}}class rw extends nw{construct(e,t,n){return new rw(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}static fromString(...e){const t=[];for(const n of e){if(0<=n.indexOf("//"))throw new q_(V_.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter(e=>0(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),e=!sw.isValidIdentifier(e)?"`"+e+"`":e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new sw(["__name__"])}static fromServerFormat(e){const t=[];let n="",r=0;var i=()=>{if(0===n.length)throw new q_(V_.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(n),n=""};let s=!1;for(;r2===e.kind)}function lw(e){return e.fields.filter(e=>2!==e.kind)}ow.UNKNOWN_ID=-1;class uw{constructor(e,t){this.fieldPath=e,this.kind=t}}class hw{constructor(e,t){this.sequenceNumber=e,this.offset=t}static empty(){return new hw(0,fw.min())}}function dw(e,t){var n=e.toTimestamp().seconds,r=e.toTimestamp().nanoseconds+1,r=tw.fromTimestamp(1e9===r?new ew(n+1,0):new ew(n,r));return new fw(r,aw.empty(),t)}function pw(e){return new fw(e.readTime,e.key,-1)}class fw{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new fw(tw.min(),aw.empty(),-1)}static max(){return new fw(tw.max(),aw.empty(),-1)}}function gw(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=aw.comparator(e.documentKey,t.documentKey),0!==n?n:J_(e.largestBatchId,t.largestBatchId))}const mw="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class vw{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}async function yw(e){if(e.code!==V_.FAILED_PRECONDITION||e.message!==mw)throw e;x_("LocalStore","Unexpectedly lost primary lease")}class _w{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e(e=>{this.isDone=!0,this.result=e,this.nextCallback&&this.nextCallback(e)},e=>{this.isDone=!0,this.error=e,this.catchCallback&&this.catchCallback(e)})}catch(e){return this.next(void 0,e)}next(r,i){return this.callbackAttached&&F_(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(i,this.error):this.wrapSuccess(r,this.result):new _w((t,n)=>{this.nextCallback=e=>{this.wrapSuccess(r,e).next(t,n)},this.catchCallback=e=>{this.wrapFailure(i,e).next(t,n)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{var t=e();return t instanceof _w?t:_w.resolve(t)}catch(e){return _w.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):_w.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):_w.reject(t)}static resolve(n){return new _w((e,t)=>{e(n)})}static reject(n){return new _w((e,t)=>{t(n)})}static waitFor(e){return new _w((t,n)=>{let r=0,i=0,s=!1;e.forEach(e=>{++r,e.next(()=>{++i,s&&i===r&&t()},e=>n(e))}),s=!0,i===r&&t()})}static or(e){let t=_w.resolve(!1);for(const n of e)t=t.next(e=>e?_w.resolve(e):n());return t}static forEach(e,n){const r=[];return e.forEach((e,t)=>{r.push(n.call(this,e,t))}),this.waitFor(r)}static mapArray(o,c){return new _w((t,n)=>{const r=o.length,i=new Array(r);let s=0;for(let e=0;e{i[a]=e,++s,s===r&&t(i)},e=>n(e))}})}static doWhile(r,i){return new _w((e,t)=>{const n=()=>{!0===r()?i().next(()=>{n()},t):e()};n()})}}class ww{constructor(n,e){this.action=n,this.transaction=e,this.aborted=!1,this.v=new B_,this.transaction.oncomplete=()=>{this.v.resolve()},this.transaction.onabort=()=>{e.error?this.v.reject(new Tw(n,e.error)):this.v.resolve()},this.transaction.onerror=e=>{var t=Aw(e.target.error);this.v.reject(new Tw(n,t))}}static open(e,t,n,r){try{return new ww(t,e.transaction(r,n))}catch(e){throw new Tw(t,e)}}get R(){return this.v.promise}abort(e){e&&this.v.reject(e),this.aborted||(x_("SimpleDb","Aborting transaction:",e?e.message:"Client-initiated abort"),this.aborted=!0,this.transaction.abort())}P(){const e=this.transaction;this.aborted||"function"!=typeof e.commit||e.commit()}store(e){var t=this.transaction.objectStore(e);return new Cw(t)}}class bw{constructor(e,t,n){this.name=e,this.version=t,this.V=n,12.2===bw.S(w())&&O_("Firestore persistence suffers from a bug in iOS 12.2 Safari that may cause your app to stop working. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.")}static delete(e){return x_("SimpleDb","Removing database:",e),kw(window.indexedDB.deleteDatabase(e)).toPromise()}static D(){if(!S())return!1;if(bw.C())return!0;const e=w(),t=bw.S(e),n=0{const i=indexedDB.open(this.name,this.version);i.onsuccess=e=>{var t=e.target.result;n(t)},i.onblocked=()=>{r(new Tw(s,"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed."))},i.onerror=e=>{var t=e.target.error;"VersionError"===t.name?r(new q_(V_.FAILED_PRECONDITION,"A newer version of the Firestore SDK was previously used and so the persisted data is not compatible with the version of the SDK you are now using. The SDK will operate with persistence disabled. If you need persistence, please re-upgrade to a newer version of the SDK or else clear the persisted IndexedDB data for your app to start fresh.")):"InvalidStateError"===t.name?r(new q_(V_.FAILED_PRECONDITION,"Unable to open an IndexedDB connection. This could be due to running in a private browsing session on a browser whose private browsing sessions do not support IndexedDB: "+t)):r(new Tw(s,t))},i.onupgradeneeded=e=>{x_("SimpleDb",'Database "'+this.name+'" requires upgrade from version:',e.oldVersion);var t=e.target.result;this.V.O(t,i.transaction,e.oldVersion,this.version).next(()=>{x_("SimpleDb","Database upgrade to version "+this.version+" complete")})}})),this.F&&(this.db.onversionchange=e=>this.F(e)),this.db}B(t){this.F=t,this.db&&(this.db.onversionchange=e=>t(e))}async runTransaction(e,t,n,r){var i="readonly"===t;let s=0;for(;;){++s;try{this.db=await this.$(e);const t=ww.open(this.db,e,i?"readonly":"readwrite",n),s=r(t).next(e=>(t.P(),e)).catch(e=>(t.abort(e),_w.reject(e))).toPromise();return s.catch(()=>{}),await t.R,s}catch(e){const t=e,n="FirebaseError"!==t.name&&s<3;if(x_("SimpleDb","Transaction failed with error:",t.message,"Retrying:",n),this.close(),!n)return Promise.reject(t)}}}close(){this.db&&this.db.close(),this.db=void 0}}class Iw{constructor(e){this.L=e,this.q=!1,this.U=null}get isDone(){return this.q}get K(){return this.U}set cursor(e){this.L=e}done(){this.q=!0}G(e){this.U=e}delete(){return kw(this.L.delete())}}class Tw extends q_{constructor(e,t){super(V_.UNAVAILABLE,`IndexedDB transaction '${e}' failed: ${t}`),this.name="IndexedDbTransactionError"}}function Ew(e){return"IndexedDbTransactionError"===e.name}class Cw{constructor(e){this.store=e}put(e,t){let n;return n=void 0!==t?(x_("SimpleDb","PUT",this.store.name,e,t),this.store.put(t,e)):(x_("SimpleDb","PUT",this.store.name,"",e),this.store.put(e)),kw(n)}add(e){return x_("SimpleDb","ADD",this.store.name,e,e),kw(this.store.add(e))}get(t){return kw(this.store.get(t)).next(e=>(x_("SimpleDb","GET",this.store.name,t,e=void 0===e?null:e),e))}delete(e){return x_("SimpleDb","DELETE",this.store.name,e),kw(this.store.delete(e))}count(){return x_("SimpleDb","COUNT",this.store.name),kw(this.store.count())}j(e,n){var t=this.options(e,n);if(t.index||"function"!=typeof this.store.getAll){const e=this.cursor(t),n=[];return this.W(e,(e,t)=>{n.push(t)}).next(()=>n)}{const e=this.store.getAll(t.range);return new _w((t,n)=>{e.onerror=e=>{n(e.target.error)},e.onsuccess=e=>{t(e.target.result)}})}}H(e,t){const r=this.store.getAll(e,null===t?void 0:t);return new _w((t,n)=>{r.onerror=e=>{n(e.target.error)},r.onsuccess=e=>{t(e.target.result)}})}J(e,t){x_("SimpleDb","DELETE ALL",this.store.name);const n=this.options(e,t);n.Y=!1;var r=this.cursor(n);return this.W(r,(e,t,n)=>n.delete())}X(e,t){let n;t?n=e:(n={},t=e);var r=this.cursor(n);return this.W(r,t)}Z(i){const e=this.cursor({});return new _w((n,r)=>{e.onerror=e=>{var t=Aw(e.target.error);r(t)},e.onsuccess=e=>{const t=e.target.result;t?i(t.primaryKey,t.value).next(e=>{e?t.continue():n()}):n()}})}W(e,s){const a=[];return new _w((i,t)=>{e.onerror=e=>{t(e.target.error)},e.onsuccess=e=>{const t=e.target.result;if(t){const n=new Iw(t),r=s(t.primaryKey,t.value,n);if(r instanceof _w){const e=r.catch(e=>(n.done(),_w.reject(e)));a.push(e)}n.isDone?i():null===n.K?t.continue():t.continue(n.K)}else i()}}).next(()=>_w.waitFor(a))}options(e,t){let n;return void 0!==e&&("string"==typeof e?n=e:t=e),{index:n,range:t}}cursor(e){let t="next";if(e.reverse&&(t="prev"),e.index){const n=this.store.index(e.index);return e.Y?n.openKeyCursor(e.range,t):n.openCursor(e.range,t)}return this.store.openCursor(e.range,t)}}function kw(e){return new _w((n,r)=>{e.onsuccess=e=>{var t=e.target.result;n(t)},e.onerror=e=>{var t=Aw(e.target.error);r(t)}})}let Sw=!1;function Aw(e){const t=bw.S(w());if(12.2<=t&&t<13){const t="An internal error was encountered in the Indexed Database server";if(0<=e.message.indexOf(t)){const e=new q_("internal",`IOS_INDEXEDDB_BUG1: IndexedDb has thrown '${t}'. This is likely due to an unavoidable bug in iOS. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.`);return Sw||(Sw=!0,setTimeout(()=>{throw e},0)),e}}return e}class Nw{constructor(e,t){this.asyncQueue=e,this.tt=t,this.task=null}start(){this.et(15e3)}stop(){this.task&&(this.task.cancel(),this.task=null)}get started(){return null!==this.task}et(e){x_("IndexBackiller",`Scheduled in ${e}ms`),this.task=this.asyncQueue.enqueueAfterDelay("index_backfill",e,async()=>{this.task=null;try{x_("IndexBackiller",`Documents written: ${await this.tt.nt()}`)}catch(e){Ew(e)?x_("IndexBackiller","Ignoring IndexedDB error during index backfill: ",e):await yw(e)}await this.et(6e4)})}}class Rw{constructor(e,t){this.localStore=e,this.persistence=t}async nt(t=50){return this.persistence.runTransaction("Backfill Indexes","readwrite-primary",e=>this.st(e,t))}st(e,t){const n=new Set;let r=t,i=!0;return _w.doWhile(()=>!0===i&&0this.localStore.indexManager.getNextCollectionGroupToUpdate(e).next(t=>null===t||n.has(t)?void(i=!1):(x_("IndexBackiller",`Processing collection: ${t}`),this.it(e,t,r).next(e=>{r-=e,n.add(t)})))).next(()=>t-r)}it(r,i,e){return this.localStore.indexManager.getMinOffsetFromCollectionGroup(r,i).next(n=>this.localStore.localDocuments.getNextDocuments(r,i,n,e).next(e=>{const t=e.changes;return this.localStore.indexManager.updateIndexEntries(r,t).next(()=>this.rt(n,e)).next(e=>(x_("IndexBackiller",`Updating offset: ${e}`),this.localStore.indexManager.updateCollectionGroup(r,i,e))).next(()=>t.size)}))}rt(e,t){let r=e;return t.changes.forEach((e,t)=>{var n=pw(t);0this.ot(e),this.ut=e=>t.writeSequenceNumber(e))}ot(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){var e=++this.previousValue;return this.ut&&this.ut(e),e}}function Pw(e){return null==e}function xw(e){return 0===e&&1/e==-1/0}function Ow(e){return"number"==typeof e&&Number.isInteger(e)&&!xw(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}function Mw(e){let t="";for(let n=0;n__PRIVATE_lastReasonableEscapeIndex)&&F_(),t.charAt(n+1)){case"":var s=t.substring(a,n);let e;0===i.length?e=s:(i+=s,e=i,i=""),r.push(e);break;case"":i+=t.substring(a,n),i+="\0";break;case"":i+=t.substring(a,n+1);break;default:F_()}a=n+2}return new rw(r)}Dw.ct=-1;const Uw=["userId","batchId"];function Vw(e,t){return[e,Mw(t)]}function qw(e,t,n){return[e,Mw(t),n]}const Bw={},jw=["prefixPath","collectionGroup","readTime","documentId"],zw=["prefixPath","collectionGroup","documentId"],$w=["collectionGroup","readTime","prefixPath","documentId"],Kw=["canonicalId","targetId"],Ww=["targetId","path"],Gw=["path","targetId"],Hw=["collectionId","parent"],Qw=["indexId","uid"],Yw=["uid","sequenceNumber"],Jw=["indexId","uid","arrayValue","directionalValue","orderedDocumentKey","documentKey"],Xw=["indexId","uid","orderedDocumentKey"],Zw=["userId","collectionPath","documentId"],eb=["userId","collectionPath","largestBatchId"],tb=["userId","collectionGroup","largestBatchId"],nb=["mutationQueues","mutations","documentMutations","remoteDocuments","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries"],rb=[...nb,"documentOverlays"],ib=["mutationQueues","mutations","documentMutations","remoteDocumentsV14","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries","documentOverlays"],sb=ib,ab=[...sb,"indexConfiguration","indexState","indexEntries"];class ob extends vw{constructor(e,t){super(),this.ht=e,this.currentSequenceNumber=t}}function cb(e,t){var n=e;return bw.M(n.ht,t)}function lb(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function ub(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function hb(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}class db{constructor(e,t){this.comparator=e,this.root=t||fb.EMPTY}insert(e,t){return new db(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,fb.BLACK,null,null))}remove(e){return new db(this.comparator,this.root.remove(e,this.comparator).copy(null,null,fb.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){var n=this.comparator(e,t.key);if(0===n)return t.value;n<0?t=t.left:0(n(e,t),!1))}toString(){const n=[];return this.inorderTraversal((e,t)=>(n.push(`${e}:${t}`),!1)),`{${n.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new pb(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new pb(this.root,e,this.comparator,!1)}getReverseIterator(){return new pb(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new pb(this.root,e,this.comparator,!0)}}class pb{constructor(e,t,n,r){this.isReverse=r,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?n(e.key,t):1,t&&r&&(i*=-1),i<0)e=this.isReverse?e.left:e.right;else{if(0===i){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();var t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return 0(n(e),!1))}forEachInRange(e,t){const n=this.data.getIteratorFrom(e[0]);for(;n.hasNext();){var r=n.getNext();if(0<=this.comparator(r.key,e[1]))return;t(r.key)}}forEachWhile(e,t){let n;for(n=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();n.hasNext();)if(!e(n.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new mb(this.data.getIterator())}getIteratorFrom(e){return new mb(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size{t=t.add(e)}),t}isEqual(e){if(!(e instanceof gb))return!1;if(this.size!==e.size)return!1;const t=this.data.getIterator(),n=e.data.getIterator();for(;t.hasNext();){const e=t.getNext().key,r=n.getNext().key;if(0!==this.comparator(e,r))return!1}return!0}toArray(){const t=[];return this.forEach(e=>{t.push(e)}),t}toString(){const t=[];return this.forEach(e=>t.push(e)),"SortedSet("+t.toString()+")"}copy(e){const t=new gb(this.comparator);return t.data=e,t}}class mb{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}function vb(e){return e.hasNext()?e.getNext():void 0}class yb{constructor(e){(this.fields=e).sort(sw.comparator)}static empty(){return new yb([])}unionWith(e){let t=new gb(sw.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new yb(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return X_(this.fields,e.fields,(e,t)=>e.isEqual(t))}}class _b extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class wb{constructor(e){this.binaryString=e}static fromBase64String(e){var t=function(e){try{return atob(e)}catch(e){throw"undefined"!=typeof DOMException&&e instanceof DOMException?new _b("Invalid base64 string: "+e):e}}(e);return new wb(t)}static fromUint8Array(e){var t=function(e){let t="";for(let n=0;nexb(e,t))}function Mb(e,t){if(e===t)return 0;var n,r,i,s,a=Pb(e),o=Pb(t);if(a!==o)return J_(a,o);switch(a){case 0:case 9007199254740991:return 0;case 1:return J_(e.booleanValue,t.booleanValue);case 2:return r=t,i=Tb(e.integerValue||e.doubleValue),s=Tb(r.integerValue||r.doubleValue),in.mapValue.fields[e]=$b(t)),n}if(t.arrayValue){const r={arrayValue:{values:[]}};for(let e=0;e<(t.arrayValue.values||[]).length;++e)r.arrayValue.values[e]=$b(t.arrayValue.values[e]);return r}return Object.assign({},t)}function Kb(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}function Wb(e,t){var n=Mb(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?-1:!e.inclusive&&t.inclusive?1:0}function Gb(e,t){var n=Mb(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?1:!e.inclusive&&t.inclusive?-1:0}class Hb{constructor(e){this.value=e}static empty(){return new Hb({mapValue:{}})}field(n){if(n.isEmpty())return this.value;{let e=this.value;for(let t=0;t{if(!n.isImmediateParentOf(t)){const e=this.getFieldsMap(n);this.applyChanges(e,r,i),r={},i=[],n=t.popLast()}e?r[t.lastSegment()]=$b(e):i.push(t.lastSegment())});var t=this.getFieldsMap(n);this.applyChanges(t,r,i)}delete(e){const t=this.field(e.popLast());zb(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return xb(this.value,e.value)}getFieldsMap(t){let n=this.value;n.mapValue.fields||(n.mapValue={fields:{}});for(let r=0;rn[e]=t);for(const e of t)delete n[e]}clone(){return new Hb($b(this.value))}}class Qb{constructor(e,t,n,r,i,s,a){this.key=e,this.documentType=t,this.version=n,this.readTime=r,this.createTime=i,this.data=s,this.documentState=a}static newInvalidDocument(e){return new Qb(e,0,tw.min(),tw.min(),tw.min(),Hb.empty(),0)}static newFoundDocument(e,t,n,r){return new Qb(e,1,t,tw.min(),n,r,0)}static newNoDocument(e,t){return new Qb(e,2,t,tw.min(),tw.min(),Hb.empty(),0)}static newUnknownDocument(e,t){return new Qb(e,3,t,tw.min(),tw.min(),Hb.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(tw.min())||2!==this.documentType&&0!==this.documentType||(this.createTime=e),this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=Hb.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=Hb.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=tw.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(e){return e instanceof Qb&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new Qb(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class Yb{constructor(e,t){this.position=e,this.inclusive=t}}function Jb(e,t,n){let r=0;for(let i=0;i":return 0=":return 0<=e;default:return F_()}}isInequality(){return 0<=["<","<=",">",">=","!=","not-in"].indexOf(this.op)}getFlattenedFilters(){return[this]}getFilters(){return[this]}getFirstInequalityField(){return this.isInequality()?this.field:null}}class nI extends eI{constructor(e,t){super(),this.filters=e,this.op=t,this.lt=null}static create(e,t){return new nI(e,t)}matches(t){return rI(this)?void 0===this.filters.find(e=>!e.matches(t)):void 0!==this.filters.find(e=>e.matches(t))}getFlattenedFilters(){return null!==this.lt||(this.lt=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.lt}getFilters(){return Object.assign([],this.filters)}getFirstInequalityField(){var e=this.ft(e=>e.isInequality());return null!==e?e.field:null}ft(e){for(const t of this.getFlattenedFilters())if(e(t))return t;return null}}function rI(e){return"and"===e.op}function iI(e){return"or"===e.op}function sI(e){return aI(e)&&rI(e)}function aI(e){for(const t of e.filters)if(t instanceof nI)return!1;return!0}function oI(e,t){var n=e.filters.concat(t);return nI.create(n,e.op)}function cI(e){return e instanceof tI?`${(t=e).field.canonicalString()} ${t.op} ${Fb(t.value)}`:e instanceof nI?(e=e).op.toString()+" {"+e.getFilters().map(cI).join(" ,")+"}":"Filter";var t}class lI extends tI{constructor(e,t,n){super(e,t,n),this.key=aw.fromName(n.referenceValue)}matches(e){var t=aw.comparator(e.key,this.key);return this.matchesComparison(t)}}class uI extends tI{constructor(e,t){super(e,"in",t),this.keys=dI(0,t)}matches(t){return this.keys.some(e=>e.isEqual(t.key))}}class hI extends tI{constructor(e,t){super(e,"not-in",t),this.keys=dI(0,t)}matches(t){return!this.keys.some(e=>e.isEqual(t.key))}}function dI(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map(e=>aw.fromName(e.referenceValue))}class pI extends tI{constructor(e,t){super(e,"array-contains",t)}matches(e){var t=e.data.field(this.field);return qb(t)&&Ob(t.arrayValue,this.value)}}class fI extends tI{constructor(e,t){super(e,"in",t)}matches(e){var t=e.data.field(this.field);return null!==t&&Ob(this.value.arrayValue,t)}}class gI extends tI{constructor(e,t){super(e,"not-in",t)}matches(e){if(Ob(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;var t=e.data.field(this.field);return null!==t&&!Ob(this.value.arrayValue,t)}}class mI extends tI{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!qb(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>Ob(this.value.arrayValue,e))}}class vI{constructor(e,t=null,n=[],r=[],i=null,s=null,a=null){this.path=e,this.collectionGroup=t,this.orderBy=n,this.filters=r,this.limit=i,this.startAt=s,this.endAt=a,this.dt=null}}function yI(e,t=null,n=[],r=[],i=null,s=null,a=null){return new vI(e,t,n,r,i,s,a)}function _I(e){const t=e;if(null===t.dt){let e=t.path.canonicalString();null!==t.collectionGroup&&(e+="|cg:"+t.collectionGroup),e+="|f:",e+=t.filters.map(e=>function t(e){if(e instanceof tI)return e.field.canonicalString()+e.op.toString()+Fb(e.value);if(sI(e))return e.filters.map(e=>t(e)).join(",");var n=e.filters.map(e=>t(e)).join(",");return`${e.op}(${n})`}(e)).join(","),e+="|ob:",e+=t.orderBy.map(e=>function(e){return e.field.canonicalString()+e.dir}(e)).join(","),Pw(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map(e=>Fb(e)).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map(e=>Fb(e)).join(",")),t.dt=e}return t.dt}function wI(e,t){if(e.limit!==t.limit)return!1;if(e.orderBy.length!==t.orderBy.length)return!1;for(let i=0;ie&&r(t,i.filters[n]),!0):void F_();var i,n,s}(e.filters[s],t.filters[s]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!Xb(e.startAt,t.startAt)&&Xb(e.endAt,t.endAt)}function bI(e){return aw.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}function II(e,t){return e.filters.filter(e=>e instanceof tI&&e.field.isEqual(t))}function TI(t,n,r){let i=Db,s=!0;for(const r of II(t,n)){let e=Db,t=!0;switch(r.op){case"<":case"<=":e="nullValue"in(a=r.value)?Db:"booleanValue"in a?{booleanValue:!1}:"integerValue"in a||"doubleValue"in a?{doubleValue:NaN}:"timestampValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"stringValue"in a?{stringValue:""}:"bytesValue"in a?{bytesValue:""}:"referenceValue"in a?Ub(Nb.empty(),aw.empty()):"geoPointValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"arrayValue"in a?{arrayValue:{}}:"mapValue"in a?{mapValue:{}}:F_();break;case"==":case"in":case">=":e=r.value;break;case">":e=r.value,t=!1;break;case"!=":case"not-in":e=Db}Wb({value:i,inclusive:s},{value:e,inclusive:t})<0&&(i=e,s=t)}var a;if(null!==r)for(let e=0;e=":case">":e="nullValue"in(a=r.value)?{booleanValue:!1}:"booleanValue"in a?{doubleValue:NaN}:"integerValue"in a||"doubleValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"timestampValue"in a?{stringValue:""}:"stringValue"in a?{bytesValue:""}:"bytesValue"in a?Ub(Nb.empty(),aw.empty()):"referenceValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"geoPointValue"in a?{arrayValue:{}}:"arrayValue"in a?{mapValue:{}}:"mapValue"in a?Rb:F_(),t=!1;break;case"==":case"in":case"<=":e=r.value;break;case"<":e=r.value,t=!1;break;case"!=":case"not-in":e=Rb}0function(e){return`${e.field.canonicalString()} (${e.dir})`}(e)).join(", ")}]`),e.startAt&&(t+=", startAt: ",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map(e=>Fb(e)).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(e=>Fb(e)).join(",")),`Target(${t})`}(xI(e))}; limitType=${e.limitType})`}function VI(n,e){return e.isFoundDocument()&&(i=n,a=(s=e).key.path,null!==i.collectionGroup?s.key.hasCollectionId(i.collectionGroup)&&i.path.isPrefixOf(a):aw.isDocumentKey(i.path)?i.path.isEqual(a):i.path.isImmediateParentOf(a))&&function(e){for(const t of PI(n))if(!t.field.isKeyField()&&null===e.data.field(t.field))return;return 1}(e)&&function(e){for(const t of n.filters)if(!t.matches(e))return;return 1}(e)&&(i=e,(!(e=n).startAt||(t=e.startAt,r=Jb(t,PI(e),i),t.inclusive?r<=0:r<0))&&(!e.endAt||(t=e.endAt,r=Jb(t,PI(e),i),t.inclusive?0<=r:0{let n=!1;for(const r of PI(i)){const i=function(e,i,t){var n=e.field.isKeyField()?aw.comparator(i.key,t.key):function(e,t){var n=i.data.field(e),r=t.data.field(e);return null!==n&&null!==r?Mb(n,r):F_()}(e.field,t);switch(e.dir){case"asc":return n;case"desc":return-1*n;default:return F_()}}(r,e,t);if(0!==i)return i;n=n||r.field.isKeyField()}return 0}}class jI{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){const t=this.mapKeyFn(e),n=this.inner[t];if(void 0!==n)for(const[t,r]of n)if(this.equalsFn(t,e))return r}has(e){return void 0!==this.get(e)}set(e,t){const n=this.mapKeyFn(e),r=this.inner[n];if(void 0===r)return this.inner[n]=[[e,t]],void this.innerSize++;for(let i=0;i{for(const[e,n]of t)r(e,n)})}isEmpty(){return hb(this.inner)}size(){return this.innerSize}}const zI=new db(aw.comparator);const $I=new db(aw.comparator);function KI(...e){let t=$I;for(const n of e)t=t.insert(n.key,n);return t}function WI(e){let n=$I;return e.forEach((e,t)=>n=n.insert(e,t.overlayedDocument)),n}function GI(){return new jI(e=>e.toString(),(e,t)=>e.isEqual(t))}const HI=new db(aw.comparator),QI=new gb(aw.comparator);function YI(...e){let t=QI;for(const n of e)t=t.add(n);return t}const JI=new gb(J_);function XI(e,t){if(e.useProto3Json){if(isNaN(t))return{doubleValue:"NaN"};if(t===1/0)return{doubleValue:"Infinity"};if(t===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:xw(t)?"-0":t}}function ZI(e){return{integerValue:""+e}}function eT(e,t){return Ow(t)?ZI(t):XI(e,t)}class tT{constructor(){this._=void 0}}function nT(e,t){return e instanceof cT?Vb(n=t)||n&&"doubleValue"in n?t:{integerValue:0}:null;var n}class rT extends tT{}class iT extends tT{constructor(e){super(),this.elements=e}}function sT(e,t){const n=uT(t);for(const t of e.elements)n.some(e=>xb(e,t))||n.push(t);return{arrayValue:{values:n}}}class aT extends tT{constructor(e){super(),this.elements=e}}function oT(e,t){let n=uT(t);for(const t of e.elements)n=n.filter(e=>!xb(e,t));return{arrayValue:{values:n}}}class cT extends tT{constructor(e,t){super(),this.serializer=e,this.gt=t}}function lT(e){return Tb(e.integerValue||e.doubleValue)}function uT(e){return qb(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class hT{constructor(e,t){this.field=e,this.transform=t}}class dT{constructor(e,t){this.version=e,this.transformResults=t}}class pT{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new pT}static exists(e){return new pT(void 0,e)}static updateTime(e){return new pT(e)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function fT(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class gT{}function mT(e,n){if(!e.hasLocalMutations||n&&0===n.fields.length)return null;if(null===n)return e.isNoDocument()?new CT(e.key,pT.none()):new wT(e.key,e.data,pT.none());{const i=e.data,s=Hb.empty();let t=new gb(sw.comparator);for(var r of n.fields)if(!t.has(r)){let e=i.field(r);null===e&&1e.field))}(e,t,n,r):(t=t,n=n,fT(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n)}function _T(e,t){return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&(n=e.fieldTransforms,r=t.fieldTransforms,!!(void 0===n&&void 0===r||n&&r&&X_(n,r,(e,t)=>function(e,t){return e.field.isEqual(t.field)&&(e=e.transform,t=t.transform,e instanceof iT&&t instanceof iT||e instanceof aT&&t instanceof aT?X_(e.elements,t.elements,xb):e instanceof cT&&t instanceof cT?xb(e.gt,t.gt):e instanceof rT&&t instanceof rT)}(e,t)))&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask)));var n,r}class wT extends gT{constructor(e,t,n,r=[]){super(),this.key=e,this.value=t,this.precondition=n,this.fieldTransforms=r,this.type=0}getFieldMask(){return null}}class bT extends gT{constructor(e,t,n,r,i=[]){super(),this.key=e,this.data=t,this.fieldMask=n,this.precondition=r,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function IT(n){const r=new Map;return n.fieldMask.fields.forEach(e=>{var t;e.isEmpty()||(t=n.data.field(e),r.set(e,t))}),r}function TT(e,t,n){const r=new Map;U_(e.length===n.length);for(let u=0;u{const t=s.get(e.key),n=t.overlayedDocument;let r=this.applyToLocalView(n,t.mutatedFields);r=a.has(e.key)?null:r;var i=mT(n,r);null!==i&&o.set(e.key,i),n.isValidDocument()||n.convertToNoDocument(tw.min())}),o}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),YI())}isEqual(e){return this.batchId===e.batchId&&X_(this.mutations,e.mutations,(e,t)=>_T(e,t))&&X_(this.baseMutations,e.baseMutations,(e,t)=>_T(e,t))}}class AT{constructor(e,t,n,r){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=r}static from(e,t,n){U_(e.mutations.length===n.length);let r=HI;var i=e.mutations;for(let s=0;sthis.onExistenceFilterMismatchCallbacks.delete(t)}notifyOnExistenceFilterMismatch(t){this.onExistenceFilterMismatchCallbacks.forEach(e=>e(t))}}let OT=null;function MT(){return new TextEncoder}const LT=new S_([4294967295,4294967295],0);function FT(e){const t=MT().encode(e),n=new k_;return n.update(t),new Uint8Array(n.digest())}function UT(e){const t=new DataView(e.buffer),n=t.getUint32(0,!0),r=t.getUint32(4,!0),i=t.getUint32(8,!0),s=t.getUint32(12,!0);return[new S_([n,r],0),new S_([i,s],0)]}class VT{constructor(e,t,n){if(this.bitmap=e,this.padding=t,this.hashCount=n,t<0||8<=t)throw new qT(`Invalid padding: ${t}`);if(n<0)throw new qT(`Invalid hash count: ${n}`);if(0s.insert(e)),s}insert(t){if(0!==this.It){const n=FT(t),[r,i]=UT(n);for(let e=0;e{switch(t){case 0:n=n.add(e);break;case 2:r=r.add(e);break;case 1:i=i.add(e);break;default:F_()}}),new jT(this.Ct,this.xt,n,r,i)}Ft(){this.Nt=!1,this.Dt=QT()}Bt(e,t){this.Nt=!0,this.Dt=this.Dt.insert(e,t)}Lt(e){this.Nt=!0,this.Dt=this.Dt.remove(e)}qt(){this.St+=1}Ut(){--this.St}Kt(){this.Nt=!0,this.xt=!0}}class GT{constructor(e){this.Gt=e,this.Qt=new Map,this.jt=zI,this.zt=HT(),this.Wt=new db(J_)}Ht(e){for(const t of e.Pt)e.bt&&e.bt.isFoundDocument()?this.Jt(t,e.bt):this.Yt(t,e.key,e.bt);for(const n of e.removedTargetIds)this.Yt(n,e.key,e.bt)}Xt(n){this.forEachTarget(n,e=>{const t=this.Zt(e);switch(n.state){case 0:this.te(e)&&t.$t(n.resumeToken);break;case 1:t.Ut(),t.kt||t.Ft(),t.$t(n.resumeToken);break;case 2:t.Ut(),t.kt||this.removeTarget(e);break;case 3:this.te(e)&&(t.Kt(),t.$t(n.resumeToken));break;case 4:this.te(e)&&(this.ee(e),t.$t(n.resumeToken));break;default:F_()}})}forEachTarget(e,n){0{this.te(t)&&n(t)})}ne(e){const t=e.targetId,n=e.Vt.count,r=this.se(t);if(r){var i=r.target;if(bI(i))if(0===n){const e=new aw(i.path);this.Yt(t,e,Qb.newNoDocument(e,tw.min()))}else U_(1===n);else{const r=this.ie(t);if(r!==n){const n=this.re(e,r);if(0!==n){this.ee(t);const e=2===n?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Wt=this.Wt.insert(t,e)}null===(i=xT.instance)||void 0===i||i.notifyOnExistenceFilterMismatch(function(e,t,n){var r;const i={localCacheCount:t,existenceFilterCount:n.count},s=n.unchangedNames;return s&&(i.bloomFilter={applied:0===e,hashCount:null!==(r=null==s?void 0:s.hashCount)&&void 0!==r?r:0,bitmapLength:null!==(r=null===(r=null===(r=null==s?void 0:s.bits)||void 0===r?void 0:r.bitmap)||void 0===r?void 0:r.length)&&void 0!==r?r:0,padding:null!==(r=null===(r=null==s?void 0:s.bits)||void 0===r?void 0:r.padding)&&void 0!==r?r:0}),i}(n,r,e.Vt))}}}}re(e,t){var{unchangedNames:n,count:r}=e.Vt;if(!n||!n.bits)return 1;var{bits:{bitmap:i="",padding:s=0},hashCount:n=0}=n;let a,o;try{a=Eb(i).toUint8Array()}catch(e){if(e instanceof _b)return M_("Decoding the base64 bloom filter in existence filter failed ("+e.message+"); ignoring the bloom filter and falling back to full re-query."),1;throw e}try{o=new VT(a,s,n)}catch(e){return M_(e instanceof qT?"BloomFilter error: ":"Applying bloom filter failed: ",e),1}return 0===o.It?1:r!==t-this.oe(e.targetId,o)?2:0}oe(n,r){const e=this.Gt.getRemoteKeysForTarget(n);let i=0;return e.forEach(e=>{var t=this.Gt.ue(),t=`projects/${t.projectId}/databases/${t.database}/documents/${e.path.canonicalString()}`;r.vt(t)||(this.Yt(n,e,null),i++)}),i}ce(r){const i=new Map;this.Qt.forEach((e,t)=>{var n=this.se(t);if(n){if(e.current&&bI(n.target)){const i=new aw(n.target.path);null!==this.jt.get(i)||this.ae(t,i)||this.Yt(t,i,Qb.newNoDocument(i,r))}e.Mt&&(i.set(t,e.Ot()),e.Ft())}});let s=YI();this.zt.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{var t=this.se(e);return!t||"TargetPurposeLimboResolution"===t.purpose||(n=!1)}),n&&(s=s.add(e))}),this.jt.forEach((e,t)=>t.setReadTime(r));var e=new BT(r,i,this.Wt,this.jt,s);return this.jt=zI,this.zt=HT(),this.Wt=new db(J_),e}Jt(e,t){var n;this.te(e)&&(n=this.ae(e,t.key)?2:0,this.Zt(e).Bt(t.key,n),this.jt=this.jt.insert(t.key,t),this.zt=this.zt.insert(t.key,this.he(t.key).add(e)))}Yt(e,t,n){if(this.te(e)){const r=this.Zt(e);this.ae(e,t)?r.Bt(t,1):r.Lt(t),this.zt=this.zt.insert(t,this.he(t).delete(e)),n&&(this.jt=this.jt.insert(t,n))}}removeTarget(e){this.Qt.delete(e)}ie(e){var t=this.Zt(e).Ot();return this.Gt.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}qt(e){this.Zt(e).qt()}Zt(e){let t=this.Qt.get(e);return t||(t=new WT,this.Qt.set(e,t)),t}he(e){let t=this.zt.get(e);return t||(t=new gb(J_),this.zt=this.zt.insert(e,t)),t}te(e){var t=null!==this.se(e);return t||x_("WatchChangeAggregator","Detected inactive target",e),t}se(e){var t=this.Qt.get(e);return t&&t.kt?null:this.Gt.le(e)}ee(t){this.Qt.set(t,new WT),this.Gt.getRemoteKeysForTarget(t).forEach(e=>{this.Yt(t,e,null)})}ae(e,t){return this.Gt.getRemoteKeysForTarget(e).has(t)}}function HT(){return new db(aw.comparator)}function QT(){return new db(aw.comparator)}const YT={asc:"ASCENDING",desc:"DESCENDING"},JT={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"},XT={and:"AND",or:"OR"};class ZT{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function e0(e,t){return e.useProto3Json||Pw(t)?t:{value:t}}function t0(e,t){return e.useProto3Json?`${new Date(1e3*t.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+t.nanoseconds).slice(-9)}Z`:{seconds:""+t.seconds,nanos:t.nanoseconds}}function n0(e,t){return e.useProto3Json?t.toBase64():t.toUint8Array()}function r0(e){return U_(!!e),tw.fromTimestamp((t=Ib(e),new ew(t.seconds,t.nanos)));var t}function i0(e,t){return e=e,new rw(["projects",e.projectId,"databases",e.database]).child("documents").child(t).canonicalString()}function s0(e){var t=rw.fromString(e);return U_(T0(t)),t}function a0(e,t){return i0(e.databaseId,t.path)}function o0(e,t){const n=s0(t);if(n.get(1)!==e.databaseId.projectId)throw new q_(V_.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+n.get(1)+" vs "+e.databaseId.projectId);if(n.get(3)!==e.databaseId.database)throw new q_(V_.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new aw(h0(n))}function c0(e,t){return i0(e.databaseId,t)}function l0(e){var t=s0(e);return 4===t.length?rw.emptyPath():h0(t)}function u0(e){return new rw(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function h0(e){return U_(4t.push(e.canonicalString())),{fieldPaths:t}}(t.fieldMask)};else{if(!(t instanceof kT))return F_();n={verify:a0(e,t.key)}}return 0function(e){var t=e.transform;if(t instanceof rT)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof iT)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof aT)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof cT)return{fieldPath:e.field.canonicalString(),increment:t.gt};throw F_()}(e))),t.precondition.isNone||(n.currentDocument=void 0!==(r=t.precondition).updateTime?{updateTime:(t=r.updateTime,t0(e,t.toTimestamp()))}:void 0!==r.exists?{exists:r.exists}:F_()),n;var r}function g0(t,n){const e=n.currentDocument?void 0!==(i=n.currentDocument).updateTime?pT.updateTime(r0(i.updateTime)):void 0!==i.exists?pT.exists(i.exists):pT.none():pT.none(),r=n.updateTransforms?n.updateTransforms.map(e=>function(e,t){let n=null;if("setToServerValue"in t)U_("REQUEST_TIME"===t.setToServerValue),n=new rT;else if("appendMissingElements"in t){const e=t.appendMissingElements.values||[];n=new iT(e)}else if("removeAllFromArray"in t){const e=t.removeAllFromArray.values||[];n=new aT(e)}else"increment"in t?n=new cT(e,t.increment):F_();var r=sw.fromServerFormat(t.fieldPath);return new hT(r,n)}(t,e)):[];var i;if(n.update){n.update.name;var s=o0(t,n.update.name),a=new Hb({mapValue:{fields:n.update.fields}});if(n.updateMask){const t=function(){const e=n.updateMask.fieldPaths||[];return new yb(e.map(e=>sw.fromServerFormat(e)))}();return new bT(s,a,t,e,r)}return new wT(s,a,e,r)}if(n.delete){const r=o0(t,n.delete);return new CT(r,e)}if(n.verify){const r=o0(t,n.verify);return new kT(r,e)}return F_()}function m0(e,t){return{documents:[c0(e,t.path)]}}function v0(e,t){const n={structuredQuery:{}},r=t.path;null!==t.collectionGroup?(n.parent=c0(e,r),n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(n.parent=c0(e,r.popLast()),n.structuredQuery.from=[{collectionId:r.lastSegment()}]);var i=function(e){if(0!==e.length)return function n(e){return e instanceof tI?function(e){if("=="===e.op){if(jb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NAN"}};if(Bb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(jb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NOT_NAN"}};if(Bb(e.value))return{unaryFilter:{field:b0(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:b0(e.field),op:_0(e.op),value:e.value}}}(e):e instanceof nI?function(e){const t=e.getFilters().map(e=>n(e));return 1===t.length?t[0]:{compositeFilter:{op:w0(e.op),filters:t}}}(e):F_()}(nI.create(e,"and"))}(t.filters);i&&(n.structuredQuery.where=i);i=function(e){if(0!==e.length)return e.map(e=>function(e){return{field:b0(e.field),direction:(e=e.dir,YT[e])}}(e))}(t.orderBy);i&&(n.structuredQuery.orderBy=i);i=e0(e,t.limit);return null!==i&&(n.structuredQuery.limit=i),t.startAt&&(n.structuredQuery.startAt={before:(i=t.startAt).inclusive,values:i.position}),t.endAt&&(n.structuredQuery.endAt={before:!(t=t.endAt).inclusive,values:t.position}),n}function y0(e){let t=l0(e.parent);const n=e.structuredQuery,r=n.from?n.from.length:0;let i=null;if(0";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return F_()}}(e.fieldFilter.op),e.fieldFilter.value)}(e):void 0!==e.compositeFilter?function(e){return nI.create(e.compositeFilter.filters.map(e=>t(e)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return F_()}}(e.compositeFilter.op))}(e):F_()}(n.where);return e instanceof nI&&sI(e)?e.getFilters():[e]}());let a=[];n.orderBy&&(a=n.orderBy.map(e=>function(e){return new Zb(I0(e.field),function(){switch(e.direction){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}())}(e)));let o=null;var c,l,u,h;n.limit&&(o=(e=n.limit,Pw(c="object"==typeof e?e.value:e)?null:c));let d=null;n.startAt&&(d=(l=n.startAt,h=!!l.before,u=l.values||[],new Yb(u,h)));let p=null;return n.endAt&&(p=(l=n.endAt,u=!l.before,h=l.values||[],new Yb(h,u))),kI(t,i,a,s,o,"F",d,p)}function _0(e){return JT[e]}function w0(e){return XT[e]}function b0(e){return{fieldPath:e.canonicalString()}}function I0(e){return sw.fromServerFormat(e.fieldPath)}function T0(e){return 4<=e.length&&"projects"===e.get(0)&&"databases"===e.get(2)}class E0{constructor(e,t,n,r,i=tw.min(),s=tw.min(),a=wb.EMPTY_BYTE_STRING,o=null){this.target=e,this.targetId=t,this.purpose=n,this.sequenceNumber=r,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=s,this.resumeToken=a,this.expectedCount=o}withSequenceNumber(e){return new E0(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new E0(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new E0(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new E0(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}class C0{constructor(e){this.fe=e}}function k0(e,t){const n=t.key,r={prefixPath:n.getCollectionPath().popLast().toArray(),collectionGroup:n.collectionGroup,documentId:n.path.lastSegment(),readTime:S0(t.readTime),hasCommittedMutations:t.hasCommittedMutations};if(t.isFoundDocument())r.document={name:a0(i=e.fe,(e=t).key),fields:e.data.value.mapValue.fields,updateTime:t0(i,e.version.toTimestamp()),createTime:t0(i,e.createTime.toTimestamp())};else if(t.isNoDocument())r.noDocument={path:n.path.toArray(),readTime:A0(t.version)};else{if(!t.isUnknownDocument())return F_();r.unknownDocument={path:n.path.toArray(),version:A0(t.version)}}var i;return r}function S0(e){var t=e.toTimestamp();return[t.seconds,t.nanoseconds]}function A0(e){var t=e.toTimestamp();return{seconds:t.seconds,nanoseconds:t.nanoseconds}}function N0(e){var t=new ew(e.seconds,e.nanoseconds);return tw.fromTimestamp(t)}function R0(t,e){const n=(e.baseMutations||[]).map(e=>g0(t.fe,e));for(let s=0;sg0(t.fe,e)),i=ew.fromMillis(e.localWriteTimeMs);return new ST(e.batchId,i,n,r)}function D0(e){var t,n=N0(e.readTime),r=void 0!==e.lastLimboFreeSnapshotVersion?N0(e.lastLimboFreeSnapshotVersion):tw.min();let i;return i=void 0!==e.query.documents?(U_(1===(t=e.query).documents.length),xI(SI(l0(t.documents[0])))):xI(y0(e.query)),new E0(i,e.targetId,"TargetPurposeListen",e.lastListenSequenceNumber,n,r,wb.fromBase64String(e.resumeToken))}function P0(e,t){var n=A0(t.snapshotVersion),r=A0(t.lastLimboFreeSnapshotVersion),i=(bI(t.target)?m0:v0)(e.fe,t.target),s=t.resumeToken.toBase64();return{targetId:t.targetId,canonicalId:_I(t.target),readTime:n,resumeToken:s,lastListenSequenceNumber:t.sequenceNumber,lastLimboFreeSnapshotVersion:r,query:i}}function x0(e){var t=y0({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?MI(t,t.limit,"L"):t}function O0(e,t){return new NT(t.largestBatchId,g0(e.fe,t.overlayMutation))}function M0(e,t){var n=t.path.lastSegment();return[e,Mw(t.path.popLast()),n]}function L0(e,t,n,r){return{indexId:e,uid:t.uid||"",sequenceNumber:n,readTime:A0(r.readTime),documentKey:Mw(r.documentKey.path),largestBatchId:r.largestBatchId}}class F0{getBundleMetadata(e,t){return U0(e).get(t).next(e=>{if(e)return{id:(t=e).bundleId,createTime:N0(t.createTime),version:t.version};var t})}saveBundleMetadata(e,t){return U0(e).put({bundleId:(n=t).id,createTime:A0(r0(n.createTime)),version:n.version});var n}getNamedQuery(e,t){return V0(e).get(t).next(e=>{if(e)return{name:(t=e).name,query:x0(t.bundledQuery),readTime:N0(t.readTime)};var t})}saveNamedQuery(e,t){return V0(e).put({name:(t=t).name,readTime:A0(r0(t.readTime)),bundledQuery:t.bundledQuery})}}function U0(e){return cb(e,"bundles")}function V0(e){return cb(e,"namedQueries")}class q0{constructor(e,t){this.serializer=e,this.userId=t}static de(e,t){var n=t.uid||"";return new q0(e,n)}getOverlay(e,t){return B0(e).get(M0(this.userId,t)).next(e=>e?O0(this.serializer,e):null)}getOverlays(e,t){const n=GI();return _w.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(r,i,e){const s=[];return e.forEach((e,t)=>{var n=new NT(i,t);s.push(this.we(r,n))}),_w.waitFor(s)}removeOverlaysForBatchId(n,e,r){const t=new Set;e.forEach(e=>t.add(Mw(e.getCollectionPath())));const i=[];return t.forEach(e=>{var t=IDBKeyRange.bound([this.userId,e,r],[this.userId,e,r+1],!1,!0);i.push(B0(n).J("collectionPathOverlayIndex",t))}),_w.waitFor(i)}getOverlaysForCollection(e,t,n){const r=GI(),i=Mw(t),s=IDBKeyRange.bound([this.userId,i,n],[this.userId,i,Number.POSITIVE_INFINITY],!0);return B0(e).j("collectionPathOverlayIndex",s).next(e=>{for(const t of e){const e=O0(this.serializer,t);r.set(e.getKey(),e)}return r})}getOverlaysForCollectionGroup(e,t,n,i){const s=GI();let a;var r=IDBKeyRange.bound([this.userId,t,n],[this.userId,t,Number.POSITIVE_INFINITY],!0);return B0(e).X({index:"collectionGroupOverlayIndex",range:r},(e,t,n)=>{const r=O0(this.serializer,t);s.size()s)}we(e,t){return B0(e).put(function(e,t,n){var[,r,i]=M0(t,n.mutation.key);return{userId:t,collectionPath:r,documentId:i,collectionGroup:n.mutation.key.getCollectionGroup(),largestBatchId:n.largestBatchId,overlayMutation:f0(e.fe,n.mutation)}}(this.serializer,this.userId,t))}}function B0(e){return cb(e,"documentOverlays")}class j0{constructor(){}_e(e,t){this.me(e,t),t.ge()}me(e,t){var n,r;"nullValue"in e?this.ye(t,5):"booleanValue"in e?(this.ye(t,10),t.pe(e.booleanValue?1:0)):"integerValue"in e?(this.ye(t,15),t.pe(Tb(e.integerValue))):"doubleValue"in e?(n=Tb(e.doubleValue),isNaN(n)?this.ye(t,13):(this.ye(t,15),xw(n)?t.pe(0):t.pe(n))):"timestampValue"in e?(r=e.timestampValue,this.ye(t,20),"string"==typeof r?t.Ie(r):(t.Ie(`${r.seconds||""}`),t.pe(r.nanos||0))):"stringValue"in e?(this.Te(e.stringValue,t),this.Ee(t)):"bytesValue"in e?(this.ye(t,30),t.Ae(Eb(e.bytesValue)),this.Ee(t)):"referenceValue"in e?this.ve(e.referenceValue,t):"geoPointValue"in e?(r=e.geoPointValue,this.ye(t,45),t.pe(r.latitude||0),t.pe(r.longitude||0)):"mapValue"in e?Kb(e)?this.ye(t,Number.MAX_SAFE_INTEGER):(this.Re(e.mapValue,t),this.Ee(t)):"arrayValue"in e?(this.Pe(e.arrayValue,t),this.Ee(t)):F_()}Te(e,t){this.ye(t,25),this.be(e,t)}be(e,t){t.Ie(e)}Re(e,t){var n=e.fields||{};this.ye(t,55);for(const e of Object.keys(n))this.Te(e,t),this.me(n[e],t)}Pe(e,t){var n=e.values||[];this.ye(t,50);for(const e of n)this.me(e,t)}ve(e,t){this.ye(t,37),aw.fromName(e).path.forEach(e=>{this.ye(t,60),this.be(e,t)})}ye(e,t){e.pe(t)}Ee(e){e.pe(2)}}function z0(e){var t=64-function(e){let t=0;for(let r=0;r<8;++r){var n=function(e){if(0===e)return 8;let t=0;return e>>4==0&&(t+=4,e<<=4),e>>6==0&&(t+=2,e<<=2),e>>7==0&&(t+=1),t}(255&e[r]);if(t+=n,8!==n)break}return t}(e);return Math.ceil(t/8)}j0.Ve=new j0;class $0{constructor(){this.buffer=new Uint8Array(1024),this.position=0}Se(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.De(n.value),n=t.next();this.Ce()}xe(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.Ne(n.value),n=t.next();this.ke()}Me(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.De(e);else if(e<2048)this.De(960|e>>>6),this.De(128|63&e);else if(t<"\ud800"||"\udbff">>12),this.De(128|63&e>>>6),this.De(128|63&e);else{const e=t.codePointAt(0);this.De(240|e>>>18),this.De(128|63&e>>>12),this.De(128|63&e>>>6),this.De(128|63&e)}}this.Ce()}$e(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.Ne(e);else if(e<2048)this.Ne(960|e>>>6),this.Ne(128|63&e);else if(t<"\ud800"||"\udbff">>12),this.Ne(128|63&e>>>6),this.Ne(128|63&e);else{const e=t.codePointAt(0);this.Ne(240|e>>>18),this.Ne(128|63&e>>>12),this.Ne(128|63&e>>>6),this.Ne(128|63&e)}}this.ke()}Oe(e){var t=this.Fe(e),n=z0(t);this.Be(1+n),this.buffer[this.position++]=255&n;for(let r=t.length-n;r=this.Ye.length||!this.sn(this.Ye[s++],e))return!1}return!0}en(e){for(const t of this.Xe)if(this.nn(t,e))return!0;return!1}nn(e,t){if(void 0===e||!e.field.isEqual(t.fieldPath))return!1;var n="array-contains"===e.op||"array-contains-any"===e.op;return 2===t.kind==n}sn(e,t){return!!e.field.isEqual(t.fieldPath)&&(0===t.kind&&"asc"===e.dir||1===t.kind&&"desc"===e.dir)}}function X0(e){if(0===e.getFilters().length)return[];const t=function t(e){if(U_(e instanceof tI||e instanceof nI),e instanceof tI)return e;if(1===e.filters.length)return t(e.filters[0]);const n=e.filters.map(e=>t(e));let r=nI.create(n,e.op);return r=iE(r),tE(r)?r:(U_(r instanceof nI),U_(rI(r)),U_(1nE(e,t)))}(function t(n){var e;if(U_(n instanceof tI||n instanceof nI),n instanceof tI){if(n instanceof fI){const r=(null===(e=null===(e=n.value.arrayValue)||void 0===e?void 0:e.values)||void 0===e?void 0:e.map(e=>tI.create(n.field,"==",e)))||[];return nI.create(r,"or")}return n}const r=n.filters.map(e=>t(e));return nI.create(r,n.op)}(e));return U_(tE(t)),Z0(t)||eE(t)?[t]:t.getFilters()}function Z0(e){return e instanceof tI}function eE(e){return e instanceof nI&&sI(e)}function tE(e){return Z0(e)||eE(e)||function(e){if(e instanceof nI&&iI(e)){for(const t of e.getFilters())if(!Z0(t)&&!eE(t))return!1;return!0}return!1}(e)}function nE(e,t){var n,r;return U_(e instanceof tI||e instanceof nI),U_(t instanceof tI||t instanceof nI),iE(e instanceof tI?t instanceof tI?(n=e,r=t,nI.create([n,r],"and")):rE(e,t):t instanceof tI?rE(t,e):function(e,t){if(U_(0nE(e,r));return nI.create(i,"or")}(e,t))}function rE(t,e){if(rI(e))return oI(e,t.getFilters());var n=e.filters.map(e=>nE(t,e));return nI.create(n,"or")}function iE(t){if(U_(t instanceof tI||t instanceof nI),t instanceof tI)return t;const e=t.getFilters();if(1===e.length)return iE(e[0]);if(aI(t))return t;const n=e.map(e=>iE(e)),r=[];return n.forEach(e=>{e instanceof tI?r.push(e):e instanceof nI&&(e.op===t.op?r.push(...e.filters):r.push(e))}),1===r.length?r[0]:nI.create(r,t.op)}class sE{constructor(){this.rn=new aE}addToCollectionParentIndex(e,t){return this.rn.add(t),_w.resolve()}getCollectionParents(e,t){return _w.resolve(this.rn.getEntries(t))}addFieldIndex(e,t){return _w.resolve()}deleteFieldIndex(e,t){return _w.resolve()}getDocumentsMatchingTarget(e,t){return _w.resolve(null)}getIndexType(e,t){return _w.resolve(0)}getFieldIndexes(e,t){return _w.resolve([])}getNextCollectionGroupToUpdate(e){return _w.resolve(null)}getMinOffset(e,t){return _w.resolve(fw.min())}getMinOffsetFromCollectionGroup(e,t){return _w.resolve(fw.min())}updateCollectionGroup(e,t,n){return _w.resolve()}updateIndexEntries(e,t){return _w.resolve()}}class aE{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t]||new gb(rw.comparator),i=!r.has(n);return this.index[t]=r.add(n),i}has(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t];return r&&r.has(n)}getEntries(e){return(this.index[e]||new gb(rw.comparator)).toArray()}}const oE=new Uint8Array(0);class cE{constructor(e,t){this.user=e,this.databaseId=t,this.on=new aE,this.un=new jI(e=>_I(e),(e,t)=>wI(e,t)),this.uid=e.uid||""}addToCollectionParentIndex(e,t){if(this.on.has(t))return _w.resolve();var n=t.lastSegment(),r=t.popLast();e.addOnCommittedListener(()=>{this.on.add(t)});r={collectionId:n,parent:Mw(r)};return lE(e).put(r)}getCollectionParents(e,n){const r=[],t=IDBKeyRange.bound([n,""],[Z_(n),""],!1,!0);return lE(e).j(t).next(e=>{for(const t of e){if(t.collectionId!==n)break;r.push(Fw(t.parent))}return r})}addFieldIndex(e,t){const n=hE(e),r={indexId:t.indexId,collectionGroup:t.collectionGroup,fields:t.fields.map(e=>[e.fieldPath.canonicalString(),e.kind])};delete r.indexId;const i=n.add(r);if(t.indexState){const n=dE(e);return i.next(e=>{n.put(L0(e,this.user,t.indexState.sequenceNumber,t.indexState.offset))})}return i.next()}deleteFieldIndex(e,t){const n=hE(e),r=dE(e),i=uE(e);return n.delete(t.indexId).next(()=>r.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0))).next(()=>i.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0)))}getDocumentsMatchingTarget(e,l){const u=uE(e);let h=!0;const n=new Map;return _w.forEach(this.cn(l),t=>this.an(e,t).next(e=>{h=h&&!!e,n.set(t,e)})).next(()=>{if(h){let c=YI();const h=[];return _w.forEach(n,(e,t)=>{x_("IndexedDbIndexManager",`Using index ${o=e,`id=${o.indexId}|cg=${o.collectionGroup}|f=${o.fields.map(e=>`${e.fieldPath}:${e.kind}`).join(",")}`} to execute ${_I(l)}`);var n=function(e,t){var n=cw(t);if(void 0===n)return null;for(const t of II(e,n.fieldPath))switch(t.op){case"array-contains-any":return t.value.arrayValue.values||[];case"array-contains":return[t.value]}return null}(t,e),r=function(e,t){const n=new Map;for(const r of lw(t))for(const t of II(e,r.fieldPath))switch(t.op){case"==":case"in":n.set(r.fieldPath.canonicalString(),t.value);break;case"not-in":case"!=":return n.set(r.fieldPath.canonicalString(),t.value),Array.from(n.values())}return null}(t,e),i=function(e,t){const n=[];let r=!0;for(const i of lw(t)){const t=(0===i.kind?TI:EI)(e,i.fieldPath,e.startAt);n.push(t.value),r=r&&t.inclusive}return new Yb(n,r)}(t,e),s=function(e,t){const n=[];let r=!0;for(const i of lw(t)){const t=(0===i.kind?EI:TI)(e,i.fieldPath,e.endAt);n.push(t.value),r=r&&t.inclusive}return new Yb(n,r)}(t,e),a=this.hn(e,t,i),o=this.hn(e,t,s),r=this.ln(e,t,r),r=this.fn(e.indexId,n,a,i.inclusive,o,s.inclusive,r);return _w.forEach(r,e=>u.H(e,l.limit).next(e=>{e.forEach(e=>{var t=aw.fromSegments(e.documentKey);c.has(t)||(c=c.add(t),h.push(t))})}))}).next(()=>h)}return _w.resolve(null)})}cn(t){let e=this.un.get(t);return e||(e=0===t.filters.length?[t]:X0(nI.create(t.filters,"and")).map(e=>yI(t.path,t.collectionGroup,t.orderBy,e.getFilters(),t.limit,t.startAt,t.endAt)),this.un.set(t,e),e)}fn(t,e,n,r,i,s,a){const o=(null!=e?e.length:1)*Math.max(n.length,i.length),c=o/(null!=e?e.length:1),l=[];for(let u=0;uthis.wn(t,o,e,!0));l.push(...this.createRange(h,d,p))}return l}wn(e,t,n,r){const i=new H0(e,aw.empty(),t,n);return r?i:i.Je()}_n(e,t,n,r){const i=new H0(e,aw.empty(),t,n);return r?i.Je():i}an(e,t){const r=new J0(t),n=null!=t.collectionGroup?t.collectionGroup:t.path.lastSegment();return this.getFieldIndexes(e,n).next(e=>{let t=null;for(const n of e)r.tn(n)&&(!t||n.fields.length>t.fields.length)&&(t=n);return t})}getIndexType(e,t){let n=2;const r=this.cn(t);return _w.forEach(r,t=>this.an(e,t).next(e=>{e?0!==n&&e.fields.lengthnull!==t.limit&&1e instanceof tI&&e.field.isEqual(t)&&("in"===e.op||"not-in"===e.op))}getFieldIndexes(e,t){const n=hE(e),r=dE(e);return(t?n.j("collectionGroupIndex",IDBKeyRange.bound(t,t)):n.j()).next(e=>{const s=[];return _w.forEach(e,i=>r.get([i.indexId,this.uid]).next(e=>{var t,n,r;s.push((t=i,n=(e=e)?new hw(e.sequenceNumber,new fw(N0(e.readTime),new aw(Fw(e.documentKey)),e.largestBatchId)):hw.empty(),r=t.fields.map(([e,t])=>new uw(sw.fromServerFormat(e),t)),new ow(t.indexId,t.collectionGroup,r,n)))})).next(()=>s)})}getNextCollectionGroupToUpdate(e){return this.getFieldIndexes(e).next(e=>0===e.length?null:(e.sort((e,t)=>{var n=e.indexState.sequenceNumber-t.indexState.sequenceNumber;return 0!=n?n:J_(e.collectionGroup,t.collectionGroup)}),e[0].collectionGroup))}updateCollectionGroup(e,n,r){const i=hE(e),s=dE(e);return this.Tn(e).next(t=>i.j("collectionGroupIndex",IDBKeyRange.bound(n,n)).next(e=>_w.forEach(e,e=>s.put(L0(e.indexId,this.user,t,r)))))}updateIndexEntries(i,e){const n=new Map;return _w.forEach(e,(t,r)=>{var e=n.get(t.collectionGroup);return(e?_w.resolve(e):this.getFieldIndexes(i,t.collectionGroup)).next(e=>(n.set(t.collectionGroup,e),_w.forEach(e,n=>this.En(i,t,n).next(e=>{var t=this.An(r,n);return e.isEqual(t)?_w.resolve():this.vn(i,r,n,e,t)}))))})}Rn(e,t,n,r){return uE(e).put({indexId:r.indexId,uid:this.uid,arrayValue:r.arrayValue,directionalValue:r.directionalValue,orderedDocumentKey:this.gn(n,t.key),documentKey:t.key.path.toArray()})}Pn(e,t,n,r){return uE(e).delete([r.indexId,this.uid,r.arrayValue,r.directionalValue,this.gn(n,t.key),t.key.path.toArray()])}En(e,n,r){const t=uE(e);let i=new gb(Q0);return t.X({index:"documentKeyIndex",range:IDBKeyRange.only([r.indexId,this.uid,this.gn(r,n)])},(e,t)=>{i=i.add(new H0(r.indexId,n,t.arrayValue,t.directionalValue))}).next(()=>i)}An(e,t){let n=new gb(Q0);var r=this.mn(t,e);if(null==r)return n;const i=cw(t);if(null!=i){var s=e.data.field(i.fieldPath);if(qb(s))for(const i of s.arrayValue.values||[])n=n.add(new H0(t.indexId,e.key,this.dn(i),r))}else n=n.add(new H0(t.indexId,e.key,oE,r));return n}vn(t,n,r,l,e){x_("IndexedDbIndexManager","Updating index entries for document '%s'",n.key);const i=[];return function(e,n,r,i){var s=l.getIterator(),a=e.getIterator();let o=vb(s),c=vb(a);for(;o||c;){let e=!1,t=!1;if(o&&c){const r=n(o,c);r<0?t=!0:0{i.push(this.Rn(t,n,r,e))},e=>{i.push(this.Pn(t,n,r,e))}),_w.waitFor(i)}Tn(e){let r=1;return dE(e).X({index:"sequenceNumberIndex",reverse:!0,range:IDBKeyRange.upperBound([this.uid,Number.MAX_SAFE_INTEGER])},(e,t,n)=>{n.done(),r=t.sequenceNumber+1}).next(()=>r)}createRange(e,t,n){n=n.sort((e,t)=>Q0(e,t)).filter((e,t,n)=>!t||0!==Q0(e,n[t-1]));const r=[];r.push(e);for(const i of n){const n=Q0(i,e),s=Q0(i,t);if(0===n)r[0]=e.Je();else if(0this.an(t,e).next(e=>e||F_())).next(pE)}}function lE(e){return cb(e,"collectionParents")}function uE(e){return cb(e,"indexEntries")}function hE(e){return cb(e,"indexConfiguration")}function dE(e){return cb(e,"indexState")}function pE(e){U_(0!==e.length);let t=e[0].indexState.offset,n=t.largestBatchId;for(let i=1;i(o++,n.delete()));s.push(c.next(()=>{U_(1===o)}));const l=[];for(const e of n.mutations){const r=qw(t,e.key.path,n.batchId);s.push(i.delete(r)),l.push(e.key)}return _w.waitFor(s).next(()=>l)}function vE(e){if(!e)return 0;let t;if(e.document)t=e.document;else if(e.unknownDocument)t=e.unknownDocument;else{if(!e.noDocument)throw F_();t=e.noDocument}return JSON.stringify(t).length}gE.DEFAULT_COLLECTION_PERCENTILE=10,gE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,gE.DEFAULT=new gE(41943040,gE.DEFAULT_COLLECTION_PERCENTILE,gE.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),gE.DISABLED=new gE(-1,0,0);class yE{constructor(e,t,n,r){this.userId=e,this.serializer=t,this.indexManager=n,this.referenceDelegate=r,this.Vn={}}static de(e,t,n,r){U_(""!==e.uid);var i=e.isAuthenticated()?e.uid:"";return new yE(i,t,n,r)}checkEmpty(e){let r=!0;var t=IDBKeyRange.bound([this.userId,Number.NEGATIVE_INFINITY],[this.userId,Number.POSITIVE_INFINITY]);return wE(e).X({index:"userMutationsIndex",range:t},(e,t,n)=>{r=!1,n.done()}).next(()=>r)}addMutationBatch(u,h,d,p){const f=bE(u),g=wE(u);return g.add({}).next(e=>{U_("number"==typeof e);const t=new ST(e,h,d,p),n=(i=this.serializer,s=this.userId,a=t,o=a.baseMutations.map(e=>f0(i.fe,e)),c=a.mutations.map(e=>f0(i.fe,e)),{userId:s,batchId:a.batchId,localWriteTimeMs:a.localWriteTime.toMillis(),baseMutations:o,mutations:c}),r=[];var i,s,a,o,c;let l=new gb((e,t)=>J_(e.canonicalString(),t.canonicalString()));for(const u of p){const h=qw(this.userId,u.key.path,e);l=l.add(u.key.path.popLast()),r.push(g.put(n)),r.push(f.put(h,Bw))}return l.forEach(e=>{r.push(this.indexManager.addToCollectionParentIndex(u,e))}),u.addOnCommittedListener(()=>{this.Vn[e]=t.keys()}),_w.waitFor(r).next(()=>t)})}lookupMutationBatch(e,t){return wE(e).get(t).next(e=>e?(U_(e.userId===this.userId),R0(this.serializer,e)):null)}Sn(e,n){return this.Vn[n]?_w.resolve(this.Vn[n]):this.lookupMutationBatch(e,n).next(e=>{if(e){var t=e.keys();return this.Vn[n]=t}return null})}getNextMutationBatchAfterBatchId(e,t){const r=t+1,n=IDBKeyRange.lowerBound([this.userId,r]);let i=null;return wE(e).X({index:"userMutationsIndex",range:n},(e,t,n)=>{t.userId===this.userId&&(U_(t.batchId>=r),i=R0(this.serializer,t)),n.done()}).next(()=>i)}getHighestUnacknowledgedBatchId(e){var t=IDBKeyRange.upperBound([this.userId,Number.POSITIVE_INFINITY]);let r=-1;return wE(e).X({index:"userMutationsIndex",range:t,reverse:!0},(e,t,n)=>{r=t.batchId,n.done()}).next(()=>r)}getAllMutationBatches(e){var t=IDBKeyRange.bound([this.userId,-1],[this.userId,Number.POSITIVE_INFINITY]);return wE(e).j("userMutationsIndex",t).next(e=>e.map(e=>R0(this.serializer,e)))}getAllMutationBatchesAffectingDocumentKey(a,o){const e=Vw(this.userId,o.path),t=IDBKeyRange.lowerBound(e),c=[];return bE(a).X({range:t},(e,t,n)=>{var[r,i,s]=e,i=Fw(i);if(r===this.userId&&o.path.isEqual(i))return wE(a).get(s).next(e=>{if(!e)throw F_();U_(e.userId===this.userId),c.push(R0(this.serializer,e))});n.done()}).next(()=>c)}getAllMutationBatchesAffectingDocumentKeys(t,e){let o=new gb(J_);const n=[];return e.forEach(a=>{var e=Vw(this.userId,a.path),e=IDBKeyRange.lowerBound(e),e=bE(t).X({range:e},(e,t,n)=>{var[r,i,s]=e,i=Fw(i);r===this.userId&&a.path.isEqual(i)?o=o.add(s):n.done()});n.push(e)}),_w.waitFor(n).next(()=>this.Dn(t,o))}getAllMutationBatchesAffectingQuery(e,t){const a=t.path,o=a.length+1,n=Vw(this.userId,a),r=IDBKeyRange.lowerBound(n);let c=new gb(J_);return bE(e).X({range:r},(e,t,n)=>{var[r,i,s]=e,i=Fw(i);r===this.userId&&a.isPrefixOf(i)?i.length===o&&(c=c.add(s)):n.done()}).next(()=>this.Dn(e,c))}Dn(t,e){const n=[],r=[];return e.forEach(e=>{r.push(wE(t).get(e).next(e=>{if(null===e)throw F_();U_(e.userId===this.userId),n.push(R0(this.serializer,e))}))}),_w.waitFor(r).next(()=>n)}removeMutationBatch(t,n){return mE(t.ht,this.userId,n).next(e=>(t.addOnCommittedListener(()=>{this.Cn(n.batchId)}),_w.forEach(e,e=>this.referenceDelegate.markPotentiallyOrphaned(t,e))))}Cn(e){delete this.Vn[e]}performConsistencyCheck(n){return this.checkEmpty(n).next(e=>{if(!e)return _w.resolve();var t=IDBKeyRange.lowerBound([this.userId]);const r=[];return bE(n).X({range:t},(e,t,n)=>{if(e[0]===this.userId){const t=Fw(e[1]);r.push(t)}else n.done()}).next(()=>{U_(0===r.length)})})}containsKey(e,t){return _E(e,this.userId,t)}xn(e){return IE(e).get(this.userId).next(e=>e||{userId:this.userId,lastAcknowledgedBatchId:-1,lastStreamToken:""})}}function _E(e,s,t){const n=Vw(s,t.path),a=n[1],r=IDBKeyRange.lowerBound(n);let o=!1;return bE(e).X({range:r,Y:!0},(e,t,n)=>{var[r,i]=e;r===s&&i===a&&(o=!0),n.done()}).next(()=>o)}function wE(e){return cb(e,"mutations")}function bE(e){return cb(e,"documentMutations")}function IE(e){return cb(e,"mutationQueues")}class TE{constructor(e){this.Nn=e}next(){return this.Nn+=2,this.Nn}static kn(){return new TE(0)}static Mn(){return new TE(-1)}}class EE{constructor(e,t){this.referenceDelegate=e,this.serializer=t}allocateTargetId(n){return this.$n(n).next(e=>{const t=new TE(e.highestTargetId);return e.highestTargetId=t.next(),this.On(n,e).next(()=>e.highestTargetId)})}getLastRemoteSnapshotVersion(e){return this.$n(e).next(e=>tw.fromTimestamp(new ew(e.lastRemoteSnapshotVersion.seconds,e.lastRemoteSnapshotVersion.nanoseconds)))}getHighestSequenceNumber(e){return this.$n(e).next(e=>e.highestListenSequenceNumber)}setTargetsMetadata(t,n,r){return this.$n(t).next(e=>(e.highestListenSequenceNumber=n,r&&(e.lastRemoteSnapshotVersion=r.toTimestamp()),n>e.highestListenSequenceNumber&&(e.highestListenSequenceNumber=n),this.On(t,e)))}addTargetData(t,n){return this.Fn(t,n).next(()=>this.$n(t).next(e=>(e.targetCount+=1,this.Bn(n,e),this.On(t,e))))}updateTargetData(e,t){return this.Fn(e,t)}removeTargetData(t,e){return this.removeMatchingKeysForTargetId(t,e.targetId).next(()=>CE(t).delete(e.targetId)).next(()=>this.$n(t)).next(e=>(U_(0{var n=D0(t);n.sequenceNumber<=i&&null===s.get(n.targetId)&&(a++,o.push(this.removeTargetData(r,n)))}).next(()=>_w.waitFor(o)).next(()=>a)}forEachTarget(e,r){return CE(e).X((e,t)=>{var n=D0(t);r(n)})}$n(e){return kE(e).get("targetGlobalKey").next(e=>(U_(null!==e),e))}On(e,t){return kE(e).put("targetGlobalKey",t)}Fn(e,t){return CE(e).put(P0(this.serializer,t))}Bn(e,t){let n=!1;return e.targetId>t.highestTargetId&&(t.highestTargetId=e.targetId,n=!0),e.sequenceNumber>t.highestListenSequenceNumber&&(t.highestListenSequenceNumber=e.sequenceNumber,n=!0),n}getTargetCount(e){return this.$n(e).next(e=>e.targetCount)}getTargetData(e,i){var t=_I(i),t=IDBKeyRange.bound([t,Number.NEGATIVE_INFINITY],[t,Number.POSITIVE_INFINITY]);let s=null;return CE(e).X({range:t,index:"queryTargetsIndex"},(e,t,n)=>{var r=D0(t);wI(i,r.target)&&(s=r,n.done())}).next(()=>s)}addMatchingKeys(n,e,r){const i=[],s=SE(n);return e.forEach(e=>{var t=Mw(e.path);i.push(s.put({targetId:r,path:t})),i.push(this.referenceDelegate.addReference(n,r,e))}),_w.waitFor(i)}removeMatchingKeys(n,e,r){const i=SE(n);return _w.forEach(e,e=>{var t=Mw(e.path);return _w.waitFor([i.delete([r,t]),this.referenceDelegate.removeReference(n,r,e)])})}removeMatchingKeysForTargetId(e,t){const n=SE(e),r=IDBKeyRange.bound([t],[t+1],!1,!0);return n.delete(r)}getMatchingKeysForTargetId(e,t){const n=IDBKeyRange.bound([t],[t+1],!1,!0),r=SE(e);let i=YI();return r.X({range:n,Y:!0},(e,t,n)=>{var r=Fw(e[1]),r=new aw(r);i=i.add(r)}).next(()=>i)}containsKey(e,t){var n=Mw(t.path),n=IDBKeyRange.bound([n],[Z_(n)],!1,!0);let r=0;return SE(e).X({index:"documentTargetsIndex",Y:!0,range:n},([e],t,n)=>{0!==e&&(r++,n.done())}).next(()=>0e?D0(e):null)}}function CE(e){return cb(e,"targets")}function kE(e){return cb(e,"targetGlobal")}function SE(e){return cb(e,"targetDocuments")}function AE([e,t],[n,r]){var i=J_(e,n);return 0===i?J_(t,r):i}class NE{constructor(e){this.Ln=e,this.buffer=new gb(AE),this.qn=0}Un(){return++this.qn}Kn(e){var t=[e,this.Un()];if(this.buffer.size{this.Gn=null;try{await this.localStore.collectGarbage(this.garbageCollector)}catch(e){Ew(e)?x_("LruGarbageCollector","Ignoring IndexedDB error during garbage collection: ",e):await yw(e)}await this.Qn(3e5)})}}class DE{constructor(e,t){this.jn=e,this.params=t}calculateTargetCount(e,t){return this.jn.zn(e).next(e=>Math.floor(t/100*e))}nthSequenceNumber(e,t){if(0===t)return _w.resolve(Dw.ct);const n=new NE(t);return this.jn.forEachTarget(e,e=>n.Kn(e.sequenceNumber)).next(()=>this.jn.Wn(e,e=>n.Kn(e))).next(()=>n.maxValue)}removeTargets(e,t,n){return this.jn.removeTargets(e,t,n)}removeOrphanedDocuments(e,t){return this.jn.removeOrphanedDocuments(e,t)}collect(t,n){return-1===this.params.cacheSizeCollectionThreshold?(x_("LruGarbageCollector","Garbage collection skipped; disabled"),_w.resolve(fE)):this.getCacheSize(t).next(e=>e(i=e>this.params.maximumSequenceNumbersToCollect?(x_("LruGarbageCollector",`Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${e}`),this.params.maximumSequenceNumbersToCollect):e,a=Date.now(),this.nthSequenceNumber(t,i))).next(e=>(r=e,o=Date.now(),this.removeTargets(t,r,n))).next(e=>(s=e,c=Date.now(),this.removeOrphanedDocuments(t,r))).next(e=>(l=Date.now(),P_()<=m.DEBUG&&x_("LruGarbageCollector",`LRU Garbage Collection\n\tCounted targets in ${a-u}ms\n\tDetermined least recently used ${i} in `+(o-a)+"ms\n"+`\tRemoved ${s} targets in `+(c-o)+"ms\n"+`\tRemoved ${e} documents in `+(l-c)+"ms\n"+`Total Duration: ${l-u}ms`),_w.resolve({didRun:!0,sequenceNumbersCollected:i,targetsRemoved:s,documentsRemoved:e})))}}class PE{constructor(e,t){this.db=e,this.garbageCollector=(e=this,t=t,new DE(e,t))}zn(e){const n=this.Jn(e);return this.db.getTargetCache().getTargetCount(e).next(t=>n.next(e=>t+e))}Jn(e){let t=0;return this.Wn(e,e=>{t++}).next(()=>t)}forEachTarget(e,t){return this.db.getTargetCache().forEachTarget(e,t)}Wn(e,n){return this.Yn(e,(e,t)=>n(t))}addReference(e,t,n){return xE(e,n)}removeReference(e,t,n){return xE(e,n)}removeTargets(e,t,n){return this.db.getTargetCache().removeTargets(e,t,n)}markPotentiallyOrphaned(e,t){return xE(e,t)}Xn(t,n){let r=!1;return IE(t).Z(e=>_E(t,e,n).next(e=>(e&&(r=!0),_w.resolve(!e)))).next(()=>r)}removeOrphanedDocuments(n,r){const i=this.db.getRemoteDocumentCache().newChangeBuffer(),s=[];let a=0;return this.Yn(n,(t,e)=>{if(e<=r){const r=this.Xn(n,t).next(e=>{if(!e)return a++,i.getEntry(n,t).next(()=>(i.removeEntry(t,tw.min()),SE(n).delete([0,Mw(t.path)])))});s.push(r)}}).next(()=>_w.waitFor(s)).next(()=>i.apply(n)).next(()=>a)}removeTarget(e,t){var n=t.withSequenceNumber(e.currentSequenceNumber);return this.db.getTargetCache().updateTargetData(e,n)}updateLimboDocument(e,t){return xE(e,t)}Yn(e,r){const t=SE(e);let i,s=Dw.ct;return t.X({index:"documentTargetsIndex"},([e],{path:t,sequenceNumber:n})=>{0===e?(s!==Dw.ct&&r(new aw(Fw(i)),s),s=n,i=t):s=Dw.ct}).next(()=>{s!==Dw.ct&&r(new aw(Fw(i)),s)})}getCacheSize(e){return this.db.getRemoteDocumentCache().getSize(e)}}function xE(e,t){return SE(e).put((e=e.currentSequenceNumber,{targetId:0,path:Mw(t.path),sequenceNumber:e}))}class OE{constructor(){this.changes=new jI(e=>e.toString(),(e,t)=>e.isEqual(t)),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,Qb.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();var n=this.changes.get(t);return void 0!==n?_w.resolve(n):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}class ME{constructor(e){this.serializer=e}setIndexManager(e){this.indexManager=e}addEntry(e,t,n){return VE(e).put(n)}removeEntry(e,n,t){return VE(e).delete(function(e){const t=n.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],S0(e),t[t.length-1]]}(t))}updateMetadata(t,n){return this.getMetadata(t).next(e=>(e.byteSize+=n,this.Zn(t,e)))}getEntry(e,n){let r=Qb.newInvalidDocument(n);return VE(e).X({index:"documentKeyIndex",range:IDBKeyRange.only(qE(n))},(e,t)=>{r=this.ts(n,t)}).next(()=>r)}es(e,n){let r={size:0,document:Qb.newInvalidDocument(n)};return VE(e).X({index:"documentKeyIndex",range:IDBKeyRange.only(qE(n))},(e,t)=>{r={document:this.ts(n,t),size:vE(t)}}).next(()=>r)}getEntries(e,t){let r=zI;return this.ns(e,t,(e,t)=>{var n=this.ts(e,t);r=r.insert(e,n)}).next(()=>r)}ss(e,t){let r=zI,i=new db(aw.comparator);return this.ns(e,t,(e,t)=>{var n=this.ts(e,t);r=r.insert(e,n),i=i.insert(e,vE(t))}).next(()=>({documents:r,rs:i}))}ns(e,t,i){if(t.isEmpty())return _w.resolve();let n=new gb(jE);t.forEach(e=>n=n.add(e));const r=IDBKeyRange.bound(qE(n.first()),qE(n.last())),s=n.getIterator();let a=s.getNext();return VE(e).X({index:"documentKeyIndex",range:r},(e,t,n)=>{for(var r=aw.fromSegments([...t.prefixPath,t.collectionGroup,t.documentId]);a&&jE(a,r)<0;)i(a,null),a=s.getNext();a&&a.isEqual(r)&&(i(a,t),a=s.hasNext()?s.getNext():null),a?n.G(qE(a)):n.done()}).next(()=>{for(;a;)i(a,null),a=s.hasNext()?s.getNext():null})}getDocumentsMatchingQuery(e,r,t,i){const n=r.path,s=[n.popLast().toArray(),n.lastSegment(),S0(t.readTime),t.documentKey.path.isEmpty()?"":t.documentKey.path.lastSegment()],a=[n.popLast().toArray(),n.lastSegment(),[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],""];return VE(e).j(IDBKeyRange.bound(s,a,!0)).next(e=>{let t=zI;for(const n of e){const e=this.ts(aw.fromSegments(n.prefixPath.concat(n.collectionGroup,n.documentId)),n);e.isFoundDocument()&&(VI(r,e)||i.has(e.key))&&(t=t.insert(e.key,e))}return t})}getAllFromCollectionGroup(e,t,n,i){let s=zI;var r=BE(t,n),a=BE(t,fw.max());return VE(e).X({index:"collectionGroupIndex",range:IDBKeyRange.bound(r,a,!0)},(e,t,n)=>{var r=this.ts(aw.fromSegments(t.prefixPath.concat(t.collectionGroup,t.documentId)),t);s=s.insert(r.key,r),s.size===i&&n.done()}).next(()=>s)}newChangeBuffer(e){return new FE(this,!!e&&e.trackRemovals)}getSize(e){return this.getMetadata(e).next(e=>e.byteSize)}getMetadata(e){return UE(e).get("remoteDocumentGlobalKey").next(e=>(U_(!!e),e))}Zn(e,t){return UE(e).put("remoteDocumentGlobalKey",t)}ts(e,t){if(t){const e=function(e,t){let n;if(t.document)n=p0(e.fe,t.document,!!t.hasCommittedMutations);else if(t.noDocument){const e=aw.fromSegments(t.noDocument.path),i=N0(t.noDocument.readTime);n=Qb.newNoDocument(e,i),t.hasCommittedMutations&&n.setHasCommittedMutations()}else{if(!t.unknownDocument)return F_();{const e=aw.fromSegments(t.unknownDocument.path),s=N0(t.unknownDocument.version);n=Qb.newUnknownDocument(e,s)}}return t.readTime&&n.setReadTime((t=t.readTime,r=new ew(t[0],t[1]),tw.fromTimestamp(r))),n;var r}(this.serializer,t);if(!e.isNoDocument()||!e.version.isEqual(tw.min()))return e}return Qb.newInvalidDocument(e)}}function LE(e){return new ME(e)}class FE extends OE{constructor(e,t){super(),this.os=e,this.trackRemovals=t,this.us=new jI(e=>e.toString(),(e,t)=>e.isEqual(t))}applyChanges(s){const a=[];let o=0,c=new gb((e,t)=>J_(e.canonicalString(),t.canonicalString()));return this.changes.forEach((e,t)=>{var n=this.us.get(e);if(a.push(this.os.removeEntry(s,e,n.readTime)),t.isValidDocument()){var r=k0(this.os.serializer,t);c=c.add(e.path.popLast());var i=vE(r);o+=i-n.size,a.push(this.os.addEntry(s,e,r))}else if(o-=n.size,this.trackRemovals){const o=k0(this.os.serializer,t.convertToNoDocument(tw.min()));a.push(this.os.addEntry(s,e,o))}}),c.forEach(e=>{a.push(this.os.indexManager.addToCollectionParentIndex(s,e))}),a.push(this.os.updateMetadata(s,o)),_w.waitFor(a)}getFromCache(e,t){return this.os.es(e,t).next(e=>(this.us.set(t,{size:e.size,readTime:e.document.readTime}),e.document))}getAllFromCache(e,t){return this.os.ss(e,t).next(({documents:n,rs:e})=>(e.forEach((e,t)=>{this.us.set(e,{size:t,readTime:n.get(e).readTime})}),n))}}function UE(e){return cb(e,"remoteDocumentGlobal")}function VE(e){return cb(e,"remoteDocumentsV14")}function qE(e){const t=e.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],t[t.length-1]]}function BE(e,t){const n=t.documentKey.path.toArray();return[e,S0(t.readTime),n.slice(0,n.length-2),0(r=e,this.remoteDocumentCache.getEntry(t,n))).next(e=>(null!==r&&yT(r.mutation,e,yb.empty(),ew.now()),e))}getDocuments(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.getLocalViewOfDocuments(t,e,YI()).next(()=>e))}getLocalViewOfDocuments(e,t,n=YI()){const r=GI();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,n).next(e=>{let n=KI();return e.forEach((e,t)=>{n=n.insert(e,t.overlayedDocument)}),n}))}getOverlayedDocuments(e,t){const n=GI();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,YI()))}populateOverlays(e,n,t){const r=[];return t.forEach(e=>{n.has(e)||r.push(e)}),this.documentOverlayCache.getOverlays(e,r).next(e=>{e.forEach((e,t)=>{n.set(e,t)})})}computeViews(e,t,r,i){let s=zI;const a=GI(),o=GI();return t.forEach((e,t)=>{const n=r.get(t.key);i.has(t.key)&&(void 0===n||n.mutation instanceof bT)?s=s.insert(t.key,t):void 0!==n?(a.set(t.key,n.mutation.getFieldMask()),yT(n.mutation,t,n.mutation.getFieldMask(),ew.now())):a.set(t.key,yb.empty())}),this.recalculateAndSaveOverlays(e,s).next(e=>(e.forEach((e,t)=>a.set(e,t)),t.forEach((e,t)=>{var n;return o.set(e,new zE(t,null!==(n=a.get(e))&&void 0!==n?n:null))}),o))}recalculateAndSaveOverlays(s,a){const o=GI();let c=new db((e,t)=>e-t),l=YI();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(s,a).next(e=>{for(const r of e)r.keys().forEach(e=>{var t,n=a.get(e);null!==n&&(t=o.get(e)||yb.empty(),t=r.applyToLocalView(n,t),o.set(e,t),t=(c.get(r.batchId)||YI()).add(e),c=c.insert(r.batchId,t))})}).next(()=>{const e=[],t=c.getReverseIterator();for(;t.hasNext();){const c=t.getNext(),n=c.key,r=c.value,i=GI();r.forEach(e=>{var t;l.has(e)||(null!==(t=mT(a.get(e),o.get(e)))&&i.set(e,t),l=l.add(e))}),e.push(this.documentOverlayCache.saveOverlays(s,n,i))}return _w.waitFor(e)}).next(()=>o)}recalculateAndSaveOverlaysForDocumentKeys(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.recalculateAndSaveOverlays(t,e))}getDocumentsMatchingQuery(e,t,n){return r=t,aw.isDocumentKey(r.path)&&null===r.collectionGroup&&0===r.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):DI(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n):this.getDocumentsMatchingCollectionQuery(e,t,n);var r}getNextDocuments(s,t,a,o){return this.remoteDocumentCache.getAllFromCollectionGroup(s,t,a,o).next(n=>{const e=0_w.forEach(e,(t,e)=>(r{i=i.insert(t,e)}))).next(()=>this.populateOverlays(s,e,n)).next(()=>this.computeViews(s,i,e,YI())).next(e=>({batchId:r,changes:WI(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new aw(t)).next(e=>{let t=KI();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(r,i,s){const a=i.collectionGroup;let o=KI();return this.indexManager.getCollectionParents(r,a).next(e=>_w.forEach(e,e=>{var t,n=(t=i,e=e.child(a),new CI(e,null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt));return this.getDocumentsMatchingCollectionQuery(r,n,s).next(e=>{e.forEach((e,t)=>{o=o.insert(e,t)})})}).next(()=>o))}getDocumentsMatchingCollectionQuery(t,s,n){let a;return this.documentOverlayCache.getOverlaysForCollection(t,s.path,n.largestBatchId).next(e=>(a=e,this.remoteDocumentCache.getDocumentsMatchingQuery(t,s,n,a))).next(r=>{a.forEach((e,t)=>{var n=t.getKey();null===r.get(n)&&(r=r.insert(n,Qb.newInvalidDocument(n)))});let i=KI();return r.forEach((e,t)=>{var n=a.get(e);void 0!==n&&yT(n.mutation,t,yb.empty(),ew.now()),VI(s,t)&&(i=i.insert(e,t))}),i})}}class KE{constructor(e){this.serializer=e,this.cs=new Map,this.hs=new Map}getBundleMetadata(e,t){return _w.resolve(this.cs.get(t))}saveBundleMetadata(e,t){return this.cs.set(t.id,{id:t.id,version:t.version,createTime:r0(t.createTime)}),_w.resolve()}getNamedQuery(e,t){return _w.resolve(this.hs.get(t))}saveNamedQuery(e,t){return this.hs.set(t.name,{name:(t=t).name,query:x0(t.bundledQuery),readTime:r0(t.readTime)}),_w.resolve()}}class WE{constructor(){this.overlays=new db(aw.comparator),this.ls=new Map}getOverlay(e,t){return _w.resolve(this.overlays.get(t))}getOverlays(e,t){const n=GI();return _w.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(n,r,e){return e.forEach((e,t)=>{this.we(n,r,t)}),_w.resolve()}removeOverlaysForBatchId(e,t,n){const r=this.ls.get(n);return void 0!==r&&(r.forEach(e=>this.overlays=this.overlays.remove(e)),this.ls.delete(n)),_w.resolve()}getOverlaysForCollection(e,t,n){const r=GI(),i=t.length+1,s=new aw(t.child("")),a=this.overlays.getIteratorFrom(s);for(;a.hasNext();){const e=a.getNext().value,s=e.getKey();if(!t.isPrefixOf(s.path))break;s.path.length===i&&e.largestBatchId>n&&r.set(e.getKey(),e)}return _w.resolve(r)}getOverlaysForCollectionGroup(t,e,n,r){let i=new db((e,t)=>e-t);const s=this.overlays.getIterator();for(;s.hasNext();){const t=s.getNext().value;if(t.getKey().getCollectionGroup()===e&&t.largestBatchId>n){let e=i.get(t.largestBatchId);null===e&&(e=GI(),i=i.insert(t.largestBatchId,e)),e.set(t.getKey(),t)}}const a=GI(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>a.set(e,t)),!(a.size()>=r)););return _w.resolve(a)}we(e,t,n){var r=this.overlays.get(n.key);if(null!==r){const e=this.ls.get(r.largestBatchId).delete(n.key);this.ls.set(r.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new NT(t,n));let i=this.ls.get(t);void 0===i&&(i=YI(),this.ls.set(t,i)),this.ls.set(t,i.add(n.key))}}class GE{constructor(){this.fs=new gb(HE.ds),this.ws=new gb(HE._s)}isEmpty(){return this.fs.isEmpty()}addReference(e,t){var n=new HE(e,t);this.fs=this.fs.add(n),this.ws=this.ws.add(n)}gs(e,t){e.forEach(e=>this.addReference(e,t))}removeReference(e,t){this.ys(new HE(e,t))}ps(e,t){e.forEach(e=>this.removeReference(e,t))}Is(e){const t=new aw(new rw([])),n=new HE(t,e),r=new HE(t,e+1),i=[];return this.ws.forEachInRange([n,r],e=>{this.ys(e),i.push(e.key)}),i}Ts(){this.fs.forEach(e=>this.ys(e))}ys(e){this.fs=this.fs.delete(e),this.ws=this.ws.delete(e)}Es(e){var t=new aw(new rw([])),n=new HE(t,e),t=new HE(t,e+1);let r=YI();return this.ws.forEachInRange([n,t],e=>{r=r.add(e.key)}),r}containsKey(e){var t=new HE(e,0),t=this.fs.firstAfterOrEqual(t);return null!==t&&e.isEqual(t.key)}}class HE{constructor(e,t){this.key=e,this.As=t}static ds(e,t){return aw.comparator(e.key,t.key)||J_(e.As,t.As)}static _s(e,t){return J_(e.As,t.As)||aw.comparator(e.key,t.key)}}class QE{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.vs=1,this.Rs=new gb(HE.ds)}checkEmpty(e){return _w.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,r){var i=this.vs;this.vs++,0n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return _w.resolve(0===this.mutationQueue.length?-1:this.vs-1)}getAllMutationBatches(e){return _w.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new HE(t,0),r=new HE(t,Number.POSITIVE_INFINITY),i=[];return this.Rs.forEachInRange([n,r],e=>{var t=this.Ps(e.As);i.push(t)}),_w.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new gb(J_);return t.forEach(e=>{var t=new HE(e,0),n=new HE(e,Number.POSITIVE_INFINITY);this.Rs.forEachInRange([t,n],e=>{r=r.add(e.As)})}),_w.resolve(this.Vs(r))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,r=n.length+1;let i=n;aw.isDocumentKey(i)||(i=i.child(""));var s=new HE(new aw(i),0);let a=new gb(J_);return this.Rs.forEachWhile(e=>{var t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===r&&(a=a.add(e.As)),!0)},s),_w.resolve(this.Vs(a))}Vs(e){const n=[];return e.forEach(e=>{var t=this.Ps(e);null!==t&&n.push(t)}),n}removeMutationBatch(n,r){U_(0===this.Ss(r.batchId,"removed")),this.mutationQueue.shift();let i=this.Rs;return _w.forEach(r.mutations,e=>{var t=new HE(e.key,r.batchId);return i=i.delete(t),this.referenceDelegate.markPotentiallyOrphaned(n,e.key)}).next(()=>{this.Rs=i})}Cn(e){}containsKey(e,t){var n=new HE(t,0),n=this.Rs.firstAfterOrEqual(n);return _w.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,_w.resolve()}Ss(e,t){return this.bs(e)}bs(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}Ps(e){var t=this.bs(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class YE{constructor(e){this.Ds=e,this.docs=new db(aw.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const n=t.key,r=this.docs.get(n),i=r?r.size:0,s=this.Ds(t);return this.docs=this.docs.insert(n,{document:t.mutableCopy(),size:s}),this.size+=s-i,this.indexManager.addToCollectionParentIndex(e,n.path.popLast())}removeEntry(e){var t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const n=this.docs.get(t);return _w.resolve(n?n.document.mutableCopy():Qb.newInvalidDocument(t))}getEntries(e,t){let n=zI;return t.forEach(e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():Qb.newInvalidDocument(e))}),_w.resolve(n)}getDocumentsMatchingQuery(e,t,n,r){let i=zI;const s=t.path,a=new aw(s.child("")),o=this.docs.getIteratorFrom(a);for(;o.hasNext();){const{key:e,value:{document:a}}=o.getNext();if(!s.isPrefixOf(e.path))break;e.path.length>s.length+1||gw(pw(a),n)<=0||(r.has(a.key)||VI(t,a))&&(i=i.insert(a.key,a.mutableCopy()))}return _w.resolve(i)}getAllFromCollectionGroup(e,t,n,r){F_()}Cs(e,t){return _w.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new JE(this)}getSize(e){return _w.resolve(this.size)}}class JE extends OE{constructor(e){super(),this.os=e}applyChanges(n){const r=[];return this.changes.forEach((e,t)=>{t.isValidDocument()?r.push(this.os.addEntry(n,t)):this.os.removeEntry(e)}),_w.waitFor(r)}getFromCache(e,t){return this.os.getEntry(e,t)}getAllFromCache(e,t){return this.os.getEntries(e,t)}}class XE{constructor(e){this.persistence=e,this.xs=new jI(e=>_I(e),wI),this.lastRemoteSnapshotVersion=tw.min(),this.highestTargetId=0,this.Ns=0,this.ks=new GE,this.targetCount=0,this.Ms=TE.kn()}forEachTarget(e,n){return this.xs.forEach((e,t)=>n(t)),_w.resolve()}getLastRemoteSnapshotVersion(e){return _w.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return _w.resolve(this.Ns)}allocateTargetId(e){return this.highestTargetId=this.Ms.next(),_w.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.Ns&&(this.Ns=t),_w.resolve()}Fn(e){this.xs.set(e.target,e);var t=e.targetId;t>this.highestTargetId&&(this.Ms=new TE(t),this.highestTargetId=t),e.sequenceNumber>this.Ns&&(this.Ns=e.sequenceNumber)}addTargetData(e,t){return this.Fn(t),this.targetCount+=1,_w.resolve()}updateTargetData(e,t){return this.Fn(t),_w.resolve()}removeTargetData(e,t){return this.xs.delete(t.target),this.ks.Is(t.targetId),--this.targetCount,_w.resolve()}removeTargets(n,r,i){let s=0;const a=[];return this.xs.forEach((e,t)=>{t.sequenceNumber<=r&&null===i.get(t.targetId)&&(this.xs.delete(e),a.push(this.removeMatchingKeysForTargetId(n,t.targetId)),s++)}),_w.waitFor(a).next(()=>s)}getTargetCount(e){return _w.resolve(this.targetCount)}getTargetData(e,t){var n=this.xs.get(t)||null;return _w.resolve(n)}addMatchingKeys(e,t,n){return this.ks.gs(t,n),_w.resolve()}removeMatchingKeys(t,e,n){this.ks.ps(e,n);const r=this.persistence.referenceDelegate,i=[];return r&&e.forEach(e=>{i.push(r.markPotentiallyOrphaned(t,e))}),_w.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this.ks.Is(t),_w.resolve()}getMatchingKeysForTargetId(e,t){var n=this.ks.Es(t);return _w.resolve(n)}containsKey(e,t){return _w.resolve(this.ks.containsKey(t))}}class ZE{constructor(e,t){this.$s={},this.overlays={},this.Os=new Dw(0),this.Fs=!1,this.Fs=!0,this.referenceDelegate=e(this),this.Bs=new XE(this),this.indexManager=new sE,this.remoteDocumentCache=(e=e=>this.referenceDelegate.Ls(e),new YE(e)),this.serializer=new C0(t),this.qs=new KE(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Fs=!1,Promise.resolve()}get started(){return this.Fs}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new WE,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.$s[e.toKey()];return n||(n=new QE(t,this.referenceDelegate),this.$s[e.toKey()]=n),n}getTargetCache(){return this.Bs}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.qs}runTransaction(e,t,n){x_("MemoryPersistence","Starting transaction:",e);const r=new eC(this.Os.next());return this.referenceDelegate.Us(),n(r).next(e=>this.referenceDelegate.Ks(r).next(()=>e)).toPromise().then(e=>(r.raiseOnCommittedEvent(),e))}Gs(t,n){return _w.or(Object.values(this.$s).map(e=>()=>e.containsKey(t,n)))}}class eC extends vw{constructor(e){super(),this.currentSequenceNumber=e}}class tC{constructor(e){this.persistence=e,this.Qs=new GE,this.js=null}static zs(e){return new tC(e)}get Ws(){if(this.js)return this.js;throw F_()}addReference(e,t,n){return this.Qs.addReference(n,t),this.Ws.delete(n.toString()),_w.resolve()}removeReference(e,t,n){return this.Qs.removeReference(n,t),this.Ws.add(n.toString()),_w.resolve()}markPotentiallyOrphaned(e,t){return this.Ws.add(t.toString()),_w.resolve()}removeTarget(e,t){this.Qs.Is(t.targetId).forEach(e=>this.Ws.add(e.toString()));const n=this.persistence.getTargetCache();return n.getMatchingKeysForTargetId(e,t.targetId).next(e=>{e.forEach(e=>this.Ws.add(e.toString()))}).next(()=>n.removeTargetData(e,t))}Us(){this.js=new Set}Ks(n){const r=this.persistence.getRemoteDocumentCache().newChangeBuffer();return _w.forEach(this.Ws,e=>{const t=aw.fromPath(e);return this.Hs(n,t).next(e=>{e||r.removeEntry(t,tw.min())})}).next(()=>(this.js=null,r.apply(n)))}updateLimboDocument(e,t){return this.Hs(e,t).next(e=>{e?this.Ws.delete(t.toString()):this.Ws.add(t.toString())})}Ls(e){return 0}Hs(e,t){return _w.or([()=>_w.resolve(this.Qs.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Gs(e,t)])}}class nC{constructor(e){this.serializer=e}O(t,e,n,r){const i=new ww("createOrUpgrade",e);var s;n<1&&1<=r&&(t.createObjectStore("owner"),(s=t).createObjectStore("mutationQueues",{keyPath:"userId"}),s.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",Uw,{unique:!0}),s.createObjectStore("documentMutations"),rC(t),t.createObjectStore("remoteDocuments"));let a=_w.resolve();return n<3&&3<=r&&(0!==n&&((s=t).deleteObjectStore("targetDocuments"),s.deleteObjectStore("targets"),s.deleteObjectStore("targetGlobal"),rC(t)),a=a.next(()=>function(){const e=i.store("targetGlobal"),t={highestTargetId:0,highestListenSequenceNumber:0,lastRemoteSnapshotVersion:tw.min().toTimestamp(),targetCount:0};return e.put("targetGlobalKey",t)}())),n<4&&4<=r&&(0!==n&&(a=a.next(()=>function(r,i){return i.store("mutations").j().next(e=>{r.deleteObjectStore("mutations"),r.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",Uw,{unique:!0});const t=i.store("mutations"),n=e.map(e=>t.put(e));return _w.waitFor(n)})}(t,i))),a=a.next(()=>{t.createObjectStore("clientMetadata",{keyPath:"clientId"})})),n<5&&5<=r&&(a=a.next(()=>this.Ys(i))),n<6&&6<=r&&(a=a.next(()=>(t.createObjectStore("remoteDocumentGlobal"),this.Xs(i)))),n<7&&7<=r&&(a=a.next(()=>this.Zs(i))),n<8&&8<=r&&(a=a.next(()=>this.ti(t,i))),n<9&&9<=r&&(a=a.next(()=>{var e;(e=t).objectStoreNames.contains("remoteDocumentChanges")&&e.deleteObjectStore("remoteDocumentChanges")})),n<10&&10<=r&&(a=a.next(()=>this.ei(i))),n<11&&11<=r&&(a=a.next(()=>{t.createObjectStore("bundles",{keyPath:"bundleId"}),t.createObjectStore("namedQueries",{keyPath:"name"})})),n<12&&12<=r&&(a=a.next(()=>{!function(){const e=t.createObjectStore("documentOverlays",{keyPath:Zw});e.createIndex("collectionPathOverlayIndex",eb,{unique:!1}),e.createIndex("collectionGroupOverlayIndex",tb,{unique:!1})}()})),n<13&&13<=r&&(a=a.next(()=>function(){const e=t.createObjectStore("remoteDocumentsV14",{keyPath:jw});e.createIndex("documentKeyIndex",zw),e.createIndex("collectionGroupIndex",$w)}()).next(()=>this.ni(t,i)).next(()=>t.deleteObjectStore("remoteDocuments"))),n<14&&14<=r&&(a=a.next(()=>this.si(t,i))),n<15&&15<=r&&(a=a.next(()=>function(e){e.createObjectStore("indexConfiguration",{keyPath:"indexId",autoIncrement:!0}).createIndex("collectionGroupIndex","collectionGroup",{unique:!1}),e.createObjectStore("indexState",{keyPath:Qw}).createIndex("sequenceNumberIndex",Yw,{unique:!1}),e.createObjectStore("indexEntries",{keyPath:Jw}).createIndex("documentKeyIndex",Xw,{unique:!1})}(t))),a}Xs(t){let n=0;return t.store("remoteDocuments").X((e,t)=>{n+=vE(t)}).next(()=>{var e={byteSize:n};return t.store("remoteDocumentGlobal").put("remoteDocumentGlobalKey",e)})}Ys(r){const e=r.store("mutationQueues"),t=r.store("mutations");return e.j().next(e=>_w.forEach(e,n=>{var e=IDBKeyRange.bound([n.userId,-1],[n.userId,n.lastAcknowledgedBatchId]);return t.j("userMutationsIndex",e).next(e=>_w.forEach(e,e=>{U_(e.userId===n.userId);var t=R0(this.serializer,e);return mE(r,n.userId,t).next(()=>{})}))}))}Zs(e){const a=e.store("targetDocuments"),t=e.store("remoteDocuments");return e.store("targetGlobal").get("targetGlobalKey").next(i=>{const s=[];return t.X((e,t)=>{const n=new rw(e),r=[0,Mw(n)];s.push(a.get(r).next(e=>e?_w.resolve():(e=>a.put({targetId:0,path:Mw(e),sequenceNumber:i.highestListenSequenceNumber}))(n)))}).next(()=>_w.waitFor(s))})}ti(e,t){e.createObjectStore("collectionParents",{keyPath:Hw});const n=t.store("collectionParents"),r=new aE,i=e=>{if(r.add(e)){const t=e.lastSegment(),r=e.popLast();return n.put({collectionId:t,parent:Mw(r)})}};return t.store("remoteDocuments").X({Y:!0},(e,t)=>{const n=new rw(e);return i(n.popLast())}).next(()=>t.store("documentMutations").X({Y:!0},([,e],t)=>{const n=Fw(e);return i(n.popLast())}))}ei(e){const r=e.store("targets");return r.X((e,t)=>{var n=D0(t),n=P0(this.serializer,n);return r.put(n)})}ni(e,s){const t=s.store("remoteDocuments"),a=[];return t.X((e,t)=>{const n=s.store("remoteDocumentsV14"),r=((i=t).document?new aw(rw.fromString(i.document.name).popFirst(5)):i.noDocument?aw.fromSegments(i.noDocument.path):i.unknownDocument?aw.fromSegments(i.unknownDocument.path):F_()).path.toArray();var i={prefixPath:r.slice(0,r.length-2),collectionGroup:r[r.length-2],documentId:r[r.length-1],readTime:t.readTime||[0,0],unknownDocument:t.unknownDocument,noDocument:t.noDocument,document:t.document,hasCommittedMutations:!!t.hasCommittedMutations};a.push(n.put(i))}).next(()=>_w.waitFor(a))}si(e,s){const t=s.store("mutations"),a=LE(this.serializer),o=new ZE(tC.zs,this.serializer.fe);return t.j().next(e=>{const r=new Map;return e.forEach(e=>{var t;let n=null!==(t=r.get(e.userId))&&void 0!==t?t:YI();R0(this.serializer,e).keys().forEach(e=>n=n.add(e)),r.set(e.userId,n)}),_w.forEach(r,(e,t)=>{var n=new N_(t),r=q0.de(this.serializer,n),i=o.getIndexManager(n),n=yE.de(n,this.serializer,i,o.referenceDelegate);return new $E(a,n,r,i).recalculateAndSaveOverlaysForDocumentKeys(new ob(s,Dw.ct),e).next()})})}}function rC(e){e.createObjectStore("targetDocuments",{keyPath:Ww}).createIndex("documentTargetsIndex",Gw,{unique:!0}),e.createObjectStore("targets",{keyPath:"targetId"}).createIndex("queryTargetsIndex",Kw,{unique:!0}),e.createObjectStore("targetGlobal")}const iC="Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.";class sC{constructor(e,t,n,r,i,s,a,o,c,l,u=15){if(this.allowTabSynchronization=e,this.persistenceKey=t,this.clientId=n,this.ii=i,this.window=s,this.document=a,this.ri=c,this.oi=l,this.ui=u,this.Os=null,this.Fs=!1,this.isPrimary=!1,this.networkEnabled=!0,this.ci=null,this.inForeground=!1,this.ai=null,this.hi=null,this.li=Number.NEGATIVE_INFINITY,this.fi=e=>Promise.resolve(),!sC.D())throw new q_(V_.UNIMPLEMENTED,"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");this.referenceDelegate=new PE(this,r),this.di=t+"main",this.serializer=new C0(o),this.wi=new bw(this.di,this.ui,new nC(this.serializer)),this.Bs=new EE(this.referenceDelegate,this.serializer),this.remoteDocumentCache=LE(this.serializer),this.qs=new F0,this.window&&this.window.localStorage?this._i=this.window.localStorage:(this._i=null,!1===l&&O_("IndexedDbPersistence","LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page."))}start(){return this.mi().then(()=>{if(!this.isPrimary&&!this.allowTabSynchronization)throw new q_(V_.FAILED_PRECONDITION,iC);return this.gi(),this.yi(),this.pi(),this.runTransaction("getHighestListenSequenceNumber","readonly",e=>this.Bs.getHighestSequenceNumber(e))}).then(e=>{this.Os=new Dw(e,this.ri)}).then(()=>{this.Fs=!0}).catch(e=>(this.wi&&this.wi.close(),Promise.reject(e)))}Ii(t){return this.fi=async e=>{if(this.started)return t(e)},t(this.isPrimary)}setDatabaseDeletedListener(t){this.wi.B(async e=>{null===e.newVersion&&await t()})}setNetworkEnabled(e){this.networkEnabled!==e&&(this.networkEnabled=e,this.ii.enqueueAndForget(async()=>{this.started&&await this.mi()}))}mi(){return this.runTransaction("updateClientMetadataAndTryBecomePrimary","readwrite",t=>oC(t).put({clientId:this.clientId,updateTimeMs:Date.now(),networkEnabled:this.networkEnabled,inForeground:this.inForeground}).next(()=>{if(this.isPrimary)return this.Ti(t).next(e=>{e||(this.isPrimary=!1,this.ii.enqueueRetryable(()=>this.fi(!1)))})}).next(()=>this.Ei(t)).next(e=>this.isPrimary&&!e?this.Ai(t).next(()=>!1):!!e&&this.vi(t).next(()=>!0))).catch(e=>{if(Ew(e))return x_("IndexedDbPersistence","Failed to extend owner lease: ",e),this.isPrimary;if(!this.allowTabSynchronization)throw e;return x_("IndexedDbPersistence","Releasing owner lease after error during lease refresh",e),!1}).then(e=>{this.isPrimary!==e&&this.ii.enqueueRetryable(()=>this.fi(e)),this.isPrimary=e})}Ti(e){return aC(e).get("owner").next(e=>_w.resolve(this.Ri(e)))}Pi(e){return oC(e).delete(this.clientId)}async bi(){if(this.isPrimary&&!this.Vi(this.li,18e5)){this.li=Date.now();var e=await this.runTransaction("maybeGarbageCollectMultiClientState","readwrite-primary",e=>{const r=cb(e,"clientMetadata");return r.j().next(e=>{const t=this.Si(e,18e5),n=e.filter(e=>-1===t.indexOf(e));return _w.forEach(n,e=>r.delete(e.clientId)).next(()=>n)})}).catch(()=>[]);if(this._i)for(const t of e)this._i.removeItem(this.Di(t.clientId))}}pi(){this.hi=this.ii.enqueueAfterDelay("client_metadata_refresh",4e3,()=>this.mi().then(()=>this.bi()).then(()=>this.pi()))}Ri(e){return!!e&&e.ownerId===this.clientId}Ei(t){return this.oi?_w.resolve(!0):aC(t).get("owner").next(e=>{if(null!==e&&this.Vi(e.leaseTimestampMs,5e3)&&!this.Ci(e.ownerId)){if(this.Ri(e)&&this.networkEnabled)return!0;if(!this.Ri(e)){if(!e.allowTabSynchronization)throw new q_(V_.FAILED_PRECONDITION,iC);return!1}}return!(!this.networkEnabled||!this.inForeground)||oC(t).j().next(e=>void 0===this.Si(e,5e3).find(e=>{if(this.clientId!==e.clientId){var t=!this.networkEnabled&&e.networkEnabled,n=!this.inForeground&&e.inForeground,r=this.networkEnabled===e.networkEnabled;if(t||n&&r)return!0}return!1}))}).next(e=>(this.isPrimary!==e&&x_("IndexedDbPersistence",`Client ${e?"is":"is not"} eligible for a primary lease.`),e))}async shutdown(){this.Fs=!1,this.xi(),this.hi&&(this.hi.cancel(),this.hi=null),this.Ni(),this.ki(),await this.wi.runTransaction("shutdown","readwrite",["owner","clientMetadata"],e=>{const t=new ob(e,Dw.ct);return this.Ai(t).next(()=>this.Pi(t))}),this.wi.close(),this.Mi()}Si(e,t){return e.filter(e=>this.Vi(e.updateTimeMs,t)&&!this.Ci(e.clientId))}$i(){return this.runTransaction("getActiveClients","readonly",e=>oC(e).j().next(e=>this.Si(e,18e5).map(e=>e.clientId)))}get started(){return this.Fs}getMutationQueue(e,t){return yE.de(e,this.serializer,t,this.referenceDelegate)}getTargetCache(){return this.Bs}getRemoteDocumentCache(){return this.remoteDocumentCache}getIndexManager(e){return new cE(e,this.serializer.fe.databaseId)}getDocumentOverlayCache(e){return q0.de(this.serializer,e)}getBundleCache(){return this.qs}runTransaction(t,n,r){x_("IndexedDbPersistence","Starting transaction:",t);var e,i="readonly"===n?"readonly":"readwrite",e=15===(e=this.ui)?ab:14===e?sb:13===e?ib:12===e?rb:11===e?nb:void F_();let s;return this.wi.runTransaction(t,i,e,e=>(s=new ob(e,this.Os?this.Os.next():Dw.ct),"readwrite-primary"===n?this.Ti(s).next(e=>!!e||this.Ei(s)).next(e=>{if(!e)throw O_(`Failed to obtain primary lease for action '${t}'.`),this.isPrimary=!1,this.ii.enqueueRetryable(()=>this.fi(!1)),new q_(V_.FAILED_PRECONDITION,mw);return r(s)}).next(e=>this.vi(s).next(()=>e)):this.Oi(s).next(()=>r(s)))).then(e=>(s.raiseOnCommittedEvent(),e))}Oi(e){return aC(e).get("owner").next(e=>{if(null!==e&&this.Vi(e.leaseTimestampMs,5e3)&&!this.Ci(e.ownerId)&&!this.Ri(e)&&!(this.oi||this.allowTabSynchronization&&e.allowTabSynchronization))throw new q_(V_.FAILED_PRECONDITION,iC)})}vi(e){var t={ownerId:this.clientId,allowTabSynchronization:this.allowTabSynchronization,leaseTimestampMs:Date.now()};return aC(e).put("owner",t)}static D(){return bw.D()}Ai(e){const t=aC(e);return t.get("owner").next(e=>this.Ri(e)?(x_("IndexedDbPersistence","Releasing primary lease."),t.delete("owner")):_w.resolve())}Vi(e,t){var n=Date.now();return!(e ${n}`),1))}gi(){null!==this.document&&"function"==typeof this.document.addEventListener&&(this.ai=()=>{this.ii.enqueueAndForget(()=>(this.inForeground="visible"===this.document.visibilityState,this.mi()))},this.document.addEventListener("visibilitychange",this.ai),this.inForeground="visible"===this.document.visibilityState)}Ni(){this.ai&&(this.document.removeEventListener("visibilitychange",this.ai),this.ai=null)}yi(){var e;"function"==typeof(null===(e=this.window)||void 0===e?void 0:e.addEventListener)&&(this.ci=()=>{this.xi();var e=/(?:Version|Mobile)\/1[456]/;I()||!navigator.userAgent.includes("Safari")||navigator.userAgent.includes("Chrome")||!navigator.appVersion.match(e)&&!navigator.userAgent.match(e)||this.ii.enterRestrictedMode(!0),this.ii.enqueueAndForget(()=>this.shutdown())},this.window.addEventListener("pagehide",this.ci))}ki(){this.ci&&(this.window.removeEventListener("pagehide",this.ci),this.ci=null)}Ci(e){var t;try{var n=null!==(null===(t=this._i)||void 0===t?void 0:t.getItem(this.Di(e)));return x_("IndexedDbPersistence",`Client '${e}' ${n?"is":"is not"} zombied in LocalStorage`),n}catch(e){return O_("IndexedDbPersistence","Failed to get zombied client id.",e),!1}}xi(){if(this._i)try{this._i.setItem(this.Di(this.clientId),String(Date.now()))}catch(e){O_("Failed to set zombie client id.",e)}}Mi(){if(this._i)try{this._i.removeItem(this.Di(this.clientId))}catch(e){}}Di(e){return`firestore_zombie_${this.persistenceKey}_${e}`}}function aC(e){return cb(e,"owner")}function oC(e){return cb(e,"clientMetadata")}function cC(e,t){let n=e.projectId;return e.isDefaultDatabase||(n+="."+e.database),"firestore/"+t+"/"+n+"/"}class lC{constructor(e,t,n,r){this.targetId=e,this.fromCache=t,this.Fi=n,this.Bi=r}static Li(e,t){let n=YI(),r=YI();for(const e of t.docChanges)switch(e.type){case 0:n=n.add(e.doc.key);break;case 1:r=r.add(e.doc.key)}return new lC(e,t.fromCache,n,r)}}class uC{constructor(){this.qi=!1}initialize(e,t){this.Ui=e,this.indexManager=t,this.qi=!0}getDocumentsMatchingQuery(t,n,r,i){return this.Ki(t,n).next(e=>e||this.Gi(t,n,i,r)).next(e=>e||this.Qi(t,n))}Ki(i,s){if(AI(s))return _w.resolve(null);let t=xI(s);return this.indexManager.getIndexType(i,t).next(e=>0===e?null:(null!==s.limit&&1===e&&(s=MI(s,null,"F"),t=xI(s)),this.indexManager.getDocumentsMatchingTarget(i,t).next(e=>{const r=YI(...e);return this.Ui.getDocuments(i,r).next(n=>this.indexManager.getMinOffset(i,t).next(e=>{var t=this.ji(s,n);return this.zi(s,t,r,e.readTime)?this.Ki(i,MI(s,null,"F")):this.Wi(i,t,s,e)}))})))}Gi(n,r,i,s){return AI(r)||s.isEqual(tw.min())?this.Qi(n,r):this.Ui.getDocuments(n,i).next(e=>{var t=this.ji(r,e);return this.zi(r,t,i,s)?this.Qi(n,r):(P_()<=m.DEBUG&&x_("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),UI(r)),this.Wi(n,t,r,dw(s,-1)))})}ji(n,e){let r=new gb(BI(n));return e.forEach((e,t)=>{VI(n,t)&&(r=r.add(t))}),r}zi(e,t,n,r){if(null===e.limit)return!1;if(n.size!==t.size)return!0;const i="F"===e.limitType?t.last():t.first();return!!i&&(i.hasPendingWrites||0(n.forEach(e=>{t=t.insert(e.key,e)}),t))}}class hC{constructor(e,t,n,r){this.persistence=e,this.Hi=t,this.serializer=r,this.Ji=new db(J_),this.Yi=new jI(e=>_I(e),wI),this.Xi=new Map,this.Zi=e.getRemoteDocumentCache(),this.Bs=e.getTargetCache(),this.qs=e.getBundleCache(),this.tr(n)}tr(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new $E(this.Zi,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Zi.setIndexManager(this.indexManager),this.Hi.initialize(this.localDocuments,this.indexManager)}collectGarbage(t){return this.persistence.runTransaction("Collect garbage","readwrite-primary",e=>t.collect(e,this.Ji))}}function dC(e,t,n,r){return new hC(e,t,n,r)}async function pC(e,t){const a=e;return a.persistence.runTransaction("Handle user change","readonly",i=>{let s;return a.mutationQueue.getAllMutationBatches(i).next(e=>(s=e,a.tr(t),a.mutationQueue.getAllMutationBatches(i))).next(e=>{const t=[],n=[];let r=YI();for(const i of s){t.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}for(const i of e){n.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}return a.localDocuments.getDocuments(i,r).next(e=>({er:e,removedBatchIds:t,addedBatchIds:n}))})})}function fC(e){const t=e;return t.persistence.runTransaction("Get last remote snapshot version","readonly",e=>t.Bs.getLastRemoteSnapshotVersion(e))}function gC(e,l){const u=e,h=l.snapshotVersion;let d=u.Ji;return u.persistence.runTransaction("Apply remote event","readwrite-primary",o=>{const e=u.Zi.newChangeBuffer({trackRemovals:!0});d=u.Ji;const c=[];l.targetChanges.forEach((t,n)=>{const r=d.get(n);if(r){c.push(u.Bs.removeMatchingKeys(o,t.removedDocuments,n).next(()=>u.Bs.addMatchingKeys(o,t.addedDocuments,n)));let e=r.withSequenceNumber(o.currentSequenceNumber);var i,s,a;null!==l.targetMismatches.get(n)?e=e.withResumeToken(wb.EMPTY_BYTE_STRING,tw.min()).withLastLimboFreeSnapshotVersion(tw.min()):0{l.resolvedLimboDocuments.has(e)&&c.push(u.persistence.referenceDelegate.updateLimboDocument(o,e))}),c.push(mC(o,e,l.documentUpdates).next(e=>{t=e.nr,n=e.sr})),!h.isEqual(tw.min())){const l=u.Bs.getLastRemoteSnapshotVersion(o).next(e=>u.Bs.setTargetsMetadata(o,o.currentSequenceNumber,h));c.push(l)}return _w.waitFor(c).next(()=>e.apply(o)).next(()=>u.localDocuments.getLocalViewOfDocuments(o,t,n)).next(()=>t)}).then(e=>(u.Ji=d,e))}function mC(e,s,t){let n=YI(),a=YI();return t.forEach(e=>n=n.add(e)),s.getEntries(e,n).next(r=>{let i=zI;return t.forEach((e,t)=>{const n=r.get(e);t.isFoundDocument()!==n.isFoundDocument()&&(a=a.add(e)),t.isNoDocument()&&t.version.isEqual(tw.min())?(s.removeEntry(e,t.readTime),i=i.insert(e,t)):!n.isValidDocument()||0{let n;return i.Bs.getTargetData(t,r).next(e=>e?(n=e,_w.resolve(n)):i.Bs.allocateTargetId(t).next(e=>(n=new E0(r,e,"TargetPurposeListen",t.currentSequenceNumber),i.Bs.addTargetData(t,n).next(()=>n))))}).then(e=>{var t=i.Ji.get(e.targetId);return(null===t||0r.persistence.referenceDelegate.removeTarget(e,i))}catch(e){if(!Ew(e))throw e;x_("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}r.Ji=r.Ji.remove(t),r.Yi.delete(i.target)}function _C(e,n,r){const i=e;let s=tw.min(),a=YI();return i.persistence.runTransaction("Execute query","readonly",t=>function(e,t,n){const r=e,i=r.Yi.get(n);return void 0!==i?_w.resolve(r.Ji.get(i)):r.Bs.getTargetData(t,n)}(i,t,xI(n)).next(e=>{if(e)return s=e.lastLimboFreeSnapshotVersion,i.Bs.getMatchingKeysForTargetId(t,e.targetId).next(e=>{a=e})}).next(()=>i.Hi.getDocumentsMatchingQuery(t,n,r?s:tw.min(),r?a:YI())).next(e=>(IC(i,qI(n),e),{documents:e,ir:a})))}function wC(e,t){const n=e,r=n.Bs,i=n.Ji.get(t);return i?Promise.resolve(i.target):n.persistence.runTransaction("Get target data","readonly",e=>r.le(e,t).next(e=>e?e.target:null))}function bC(e,t){const n=e,r=n.Xi.get(t)||tw.min();return n.persistence.runTransaction("Get new document changes","readonly",e=>n.Zi.getAllFromCollectionGroup(e,t,dw(r,-1),Number.MAX_SAFE_INTEGER)).then(e=>(IC(n,t,e),e))}function IC(e,t,n){let r=e.Xi.get(t)||tw.min();n.forEach((e,t)=>{0this.shutdown()),this.started=!0}writeSequenceNumber(e){this.setItem(this.Ir,JSON.stringify(e))}getAllActiveQueryTargets(){return this.Sr(this.gr)}isActiveQueryTarget(n){let r=!1;return this.gr.forEach((e,t)=>{t.activeTargetIds.has(n)&&(r=!0)}),r}addPendingMutation(e){this.Dr(e,"pending")}updateMutationState(e,t,n){this.Dr(e,t,n),this.Cr(e)}addLocalQueryTarget(e){let t="not-current";var n;return this.isActiveQueryTarget(e)&&(!(n=this.storage.getItem(CC(this.persistenceKey,e)))||(n=SC.ar(e,n))&&(t=n.state)),this.Nr.lr(e),this.Pr(),t}removeLocalQueryTarget(e){this.Nr.dr(e),this.Pr()}isLocalQueryTarget(e){return this.Nr.activeTargetIds.has(e)}clearQueryState(e){this.removeItem(CC(this.persistenceKey,e))}updateQueryState(e,t,n){this.kr(e,t,n)}handleUserChange(e,t,n){t.forEach(e=>{this.Cr(e)}),this.currentUser=e,n.forEach(e=>{this.addPendingMutation(e)})}setOnlineState(e){this.Mr(e)}notifyBundleLoaded(e){this.$r(e)}shutdown(){this.started&&(this.window.removeEventListener("storage",this._r),this.removeItem(this.pr),this.started=!1)}getItem(e){var t=this.storage.getItem(e);return x_("SharedClientState","READ",e,t),t}setItem(e,t){x_("SharedClientState","SET",e,t),this.storage.setItem(e,t)}removeItem(e){x_("SharedClientState","REMOVE",e),this.storage.removeItem(e)}mr(e){const i=e;i.storageArea===this.storage&&(x_("SharedClientState","EVENT",i.key,i.newValue),i.key!==this.pr?this.ii.enqueueRetryable(async()=>{if(this.started){if(null!==i.key)if(this.Tr.test(i.key)){if(null==i.newValue){var e=this.Or(i.key);return this.Fr(e,null)}e=this.Br(i.key,i.newValue);if(e)return this.Fr(e.clientId,e)}else if(this.Er.test(i.key)){if(null!==i.newValue){var t=this.Lr(i.key,i.newValue);if(t)return this.qr(t)}}else if(this.Ar.test(i.key)){if(null!==i.newValue){t=this.Ur(i.key,i.newValue);if(t)return this.Kr(t)}}else if(i.key===this.vr){if(null!==i.newValue){var n=this.br(i.newValue);if(n)return this.Vr(n)}}else if(i.key===this.Ir){n=function(e){let t=Dw.ct;if(null!=e)try{var n=JSON.parse(e);U_("number"==typeof n),t=n}catch(e){O_("SharedClientState","Failed to read sequence number from WebStorage",e)}return t}(i.newValue);n!==Dw.ct&&this.sequenceNumberHandler(n)}else if(i.key===this.Rr){const r=this.Gr(i.newValue);await Promise.all(r.map(e=>this.syncEngine.Qr(e)))}}else this.yr.push(i)}):O_("Received WebStorage notification for local change. Another client might have garbage-collected our state"))}get Nr(){return this.gr.get(this.wr)}Pr(){this.setItem(this.pr,this.Nr.hr())}Dr(e,t,n){const r=new kC(this.currentUser,e,t,n),i=EC(this.persistenceKey,this.currentUser,e);this.setItem(i,r.hr())}Cr(e){var t=EC(this.persistenceKey,this.currentUser,e);this.removeItem(t)}Mr(e){var t={clientId:this.wr,onlineState:e};this.storage.setItem(this.vr,JSON.stringify(t))}kr(e,t,n){const r=CC(this.persistenceKey,e),i=new SC(e,t,n);this.setItem(r,i.hr())}$r(e){var t=JSON.stringify(Array.from(e));this.setItem(this.Rr,t)}Or(e){var t=this.Tr.exec(e);return t?t[1]:null}Br(e,t){var n=this.Or(e);return AC.ar(n,t)}Lr(e,t){var n=this.Er.exec(e),r=Number(n[1]),n=void 0!==n[2]?n[2]:null;return kC.ar(new N_(n),r,t)}Ur(e,t){var n=this.Ar.exec(e),n=Number(n[1]);return SC.ar(n,t)}br(e){return NC.ar(e)}Gr(e){return JSON.parse(e)}async qr(e){if(e.user.uid===this.currentUser.uid)return this.syncEngine.jr(e.batchId,e.state,e.error);x_("SharedClientState",`Ignoring mutation for non-active user ${e.user.uid}`)}Kr(e){return this.syncEngine.zr(e.targetId,e.state,e.error)}Fr(e,t){const n=t?this.gr.insert(e,t):this.gr.remove(e),r=this.Sr(this.gr),i=this.Sr(n),s=[],a=[];return i.forEach(e=>{r.has(e)||s.push(e)}),r.forEach(e=>{i.has(e)||a.push(e)}),this.syncEngine.Wr(s,a).then(()=>{this.gr=n})}Vr(e){this.gr.get(e.clientId)&&this.onlineStateHandler(e.onlineState)}Sr(e){let n=JI;return e.forEach((e,t)=>{n=n.unionWith(t.activeTargetIds)}),n}}class PC{constructor(){this.Hr=new RC,this.Jr={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e){return this.Hr.lr(e),this.Jr[e]||"not-current"}updateQueryState(e,t,n){this.Jr[e]=t}removeLocalQueryTarget(e){this.Hr.dr(e)}isLocalQueryTarget(e){return this.Hr.activeTargetIds.has(e)}clearQueryState(e){delete this.Jr[e]}getAllActiveQueryTargets(){return this.Hr.activeTargetIds}isActiveQueryTarget(e){return this.Hr.activeTargetIds.has(e)}start(){return this.Hr=new RC,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class xC{Yr(e){}shutdown(){}}class OC{constructor(){this.Xr=()=>this.Zr(),this.eo=()=>this.no(),this.so=[],this.io()}Yr(e){this.so.push(e)}shutdown(){window.removeEventListener("online",this.Xr),window.removeEventListener("offline",this.eo)}io(){window.addEventListener("online",this.Xr),window.addEventListener("offline",this.eo)}Zr(){x_("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.so)e(0)}no(){x_("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.so)e(1)}static D(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let MC=null;function LC(){return null===MC?MC=268435456+Math.round(2147483648*Math.random()):MC++,"0x"+MC.toString(16)}const FC={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class UC{constructor(e){this.ro=e.ro,this.oo=e.oo}uo(e){this.co=e}ao(e){this.ho=e}onMessage(e){this.lo=e}close(){this.oo()}send(e){this.ro(e)}fo(){this.co()}wo(e){this.ho(e)}_o(e){this.lo(e)}}const VC="WebChannelConnection";class qC extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;var t=e.ssl?"https":"http";this.mo=t+"://"+e.host,this.yo="projects/"+this.databaseId.projectId+"/databases/"+this.databaseId.database+"/documents"}get po(){return!1}Io(t,e,n,r,i){const s=LC(),a=this.To(t,e);x_("RestConnection",`Sending RPC '${t}' ${s}:`,a,n);var o={};return this.Eo(o,r,i),this.Ao(t,a,o,n).then(e=>(x_("RestConnection",`Received RPC '${t}' ${s}: `,e),e),e=>{throw M_("RestConnection",`RPC '${t}' ${s} failed with error: `,e,"url: ",a,"request:",n),e})}vo(e,t,n,r,i,s){return this.Io(e,t,n,r,i)}Eo(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+R_,n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),e&&e.headers.forEach((e,t)=>n[t]=e),t&&t.headers.forEach((e,t)=>n[t]=e)}To(e,t){var n=FC[e];return`${this.mo}/v1/${t}:${n}`}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Ao(o,t,n,r){const c=LC();return new Promise((i,s)=>{const a=new C_;a.setWithCredentials(!0),a.listenOnce(__.COMPLETE,()=>{try{switch(a.getLastErrorCode()){case y_.NO_ERROR:var e=a.getResponseJson();x_(VC,`XHR for RPC '${o}' ${c} received:`,JSON.stringify(e)),i(e);break;case y_.TIMEOUT:x_(VC,`RPC '${o}' ${c} timed out`),s(new q_(V_.DEADLINE_EXCEEDED,"Request time out"));break;case y_.HTTP_ERROR:var t=a.getStatus();if(x_(VC,`RPC '${o}' ${c} failed with status:`,t,"response text:",a.getResponseText()),0{d?x_(VC,`Not sending because RPC '${i}' stream ${s} is closed:`,e):(h||(x_(VC,`Opening RPC '${i}' stream ${s} transport.`),u.open(),h=!0),x_(VC,`RPC '${i}' stream ${s} sending:`,e),u.send(e))},oo:()=>u.close()}),f=(e,t,n)=>{e.listen(t,e=>{try{n(e)}catch(e){setTimeout(()=>{throw e},0)}})};return f(u,E_.EventType.OPEN,()=>{d||x_(VC,`RPC '${i}' stream ${s} transport opened.`)}),f(u,E_.EventType.CLOSE,()=>{d||(d=!0,x_(VC,`RPC '${i}' stream ${s} transport closed`),p.wo())}),f(u,E_.EventType.ERROR,e=>{d||(d=!0,M_(VC,`RPC '${i}' stream ${s} transport errored:`,e),p.wo(new q_(V_.UNAVAILABLE,"The operation could not be completed")))}),f(u,E_.EventType.MESSAGE,n=>{if(!d){var e=n.data[0];U_(!!e);var r=e.error||(null===(r=e[0])||void 0===r?void 0:r.error);if(r){x_(VC,`RPC '${i}' stream ${s} received error:`,r);const n=r.status;let e=function(e){var t=m_[e];if(void 0!==t)return PT(t)}(n),t=r.message;void 0===e&&(e=V_.INTERNAL,t="Unknown error status: "+n+" with message "+r.message),d=!0,p.wo(new q_(e,t)),u.close()}else x_(VC,`RPC '${i}' stream ${s} received:`,e),p._o(e)}}),f(a,w_.STAT_EVENT,e=>{e.stat===b_?x_(VC,`RPC '${i}' stream ${s} detected buffering proxy`):e.stat===I_&&x_(VC,`RPC '${i}' stream ${s} detected no buffering proxy`)}),setTimeout(()=>{p.fo()},0),p}}function BC(){return"undefined"!=typeof window?window:null}function jC(){return"undefined"!=typeof document?document:null}function zC(e){return new ZT(e,!0)}class $C{constructor(e,t,n=1e3,r=1.5,i=6e4){this.ii=e,this.timerId=t,this.Po=n,this.bo=r,this.Vo=i,this.So=0,this.Do=null,this.Co=Date.now(),this.reset()}reset(){this.So=0}xo(){this.So=this.Vo}No(e){this.cancel();var t=Math.floor(this.So+this.ko()),n=Math.max(0,Date.now()-this.Co),r=Math.max(0,t-n);0(this.Co=Date.now(),e())),this.So*=this.bo,this.Sothis.Vo&&(this.So=this.Vo)}Mo(){null!==this.Do&&(this.Do.skipDelay(),this.Do=null)}cancel(){null!==this.Do&&(this.Do.cancel(),this.Do=null)}ko(){return(Math.random()-.5)*this.So}}class KC{constructor(e,t,n,r,i,s,a,o){this.ii=e,this.$o=n,this.Oo=r,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=a,this.listener=o,this.state=0,this.Fo=0,this.Bo=null,this.Lo=null,this.stream=null,this.qo=new $C(e,t)}Uo(){return 1===this.state||5===this.state||this.Ko()}Ko(){return 2===this.state||3===this.state}start(){4!==this.state?this.auth():this.Go()}async stop(){this.Uo()&&await this.close(0)}Qo(){this.state=0,this.qo.reset()}jo(){this.Ko()&&null===this.Bo&&(this.Bo=this.ii.enqueueAfterDelay(this.$o,6e4,()=>this.zo()))}Wo(e){this.Ho(),this.stream.send(e)}async zo(){if(this.Ko())return this.close(0)}Ho(){this.Bo&&(this.Bo.cancel(),this.Bo=null)}Jo(){this.Lo&&(this.Lo.cancel(),this.Lo=null)}async close(e,t){this.Ho(),this.Jo(),this.qo.cancel(),this.Fo++,4!==e?this.qo.reset():t&&t.code===V_.RESOURCE_EXHAUSTED?(O_(t.toString()),O_("Using maximum backoff delay to prevent overloading the backend."),this.qo.xo()):t&&t.code===V_.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.Yo(),this.stream.close(),this.stream=null),this.state=e,await this.listener.ao(t)}Yo(){}auth(){this.state=1;const e=this.Xo(this.Fo),n=this.Fo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,t])=>{this.Fo===n&&this.Zo(e,t)},t=>{e(()=>{var e=new q_(V_.UNKNOWN,"Fetching auth token failed: "+t.message);return this.tu(e)})})}Zo(e,t){const n=this.Xo(this.Fo);this.stream=this.eu(e,t),this.stream.uo(()=>{n(()=>(this.state=2,this.Lo=this.ii.enqueueAfterDelay(this.Oo,1e4,()=>(this.Ko()&&(this.state=3),Promise.resolve())),this.listener.uo()))}),this.stream.ao(e=>{n(()=>this.tu(e))}),this.stream.onMessage(e=>{n(()=>this.onMessage(e))})}Go(){this.state=5,this.qo.No(async()=>{this.state=0,this.start()})}tu(e){return x_("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}Xo(t){return e=>{this.ii.enqueueAndForget(()=>this.Fo===t?e():(x_("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class WC extends KC{constructor(e,t,n,r,i,s){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,n,r,s),this.serializer=i}eu(e,t){return this.connection.Ro("Listen",e,t)}onMessage(e){this.qo.reset();var t=function(e,t){let n;if("targetChange"in t){t.targetChange;var r="NO_CHANGE"===(p=t.targetChange.targetChangeType||"NO_CHANGE")?0:"ADD"===p?1:"REMOVE"===p?2:"CURRENT"===p?3:"RESET"===p?4:F_(),i=t.targetChange.targetIds||[],s=(p=t.targetChange.resumeToken,e.useProto3Json?(U_(void 0===p||"string"==typeof p),wb.fromBase64String(p||"")):(U_(void 0===p||p instanceof Uint8Array),wb.fromUint8Array(p||new Uint8Array))),a=t.targetChange.cause,o=a&&(o=void 0===(p=a).code?V_.UNKNOWN:PT(p.code),new q_(o,p.message||""));n=new KT(r,i,s,o||null)}else if("documentChange"in t){t.documentChange;var c=t.documentChange;c.document,c.document.name,c.document.updateTime;var s=o0(e,c.document.name),o=r0(c.document.updateTime),l=c.document.createTime?r0(c.document.createTime):tw.min(),u=new Hb({mapValue:{fields:c.document.fields}}),l=Qb.newFoundDocument(s,o,l,u),u=c.targetIds||[],c=c.removedTargetIds||[];n=new zT(u,c,l.key,l)}else if("documentDelete"in t){t.documentDelete;u=t.documentDelete;u.document;c=o0(e,u.document),l=u.readTime?r0(u.readTime):tw.min(),l=Qb.newNoDocument(c,l),u=u.removedTargetIds||[];n=new zT([],u,l.key,l)}else if("documentRemove"in t){t.documentRemove;var h=t.documentRemove;h.document;var d=o0(e,h.document),h=h.removedTargetIds||[];n=new zT([],h,d,null)}else{if(!("filter"in t))return F_();{t.filter;const e=t.filter;e.targetId;var{count:h=0,unchangedNames:d}=e,h=new RT(h,d),d=e.targetId;n=new $T(d,h)}}var o,p;return n}(this.serializer,e),n=function(e){if(!("targetChange"in e))return tw.min();var t=e.targetChange;return(!t.targetIds||!t.targetIds.length)&&t.readTime?r0(t.readTime):tw.min()}(e);return this.listener.nu(t,n)}su(e){const t={};t.database=u0(this.serializer),t.addTarget=function(e,t){let n;const r=t.target;if(n=bI(r)?{documents:m0(e,r)}:{query:v0(e,r)},n.targetId=t.targetId,0function(e,t){let n=e.updateTime?r0(e.updateTime):r0(t);return n.isEqual(tw.min())&&(n=r0(t)),new dT(n,e.transformResults||[])}(e,i))):[]),n=r0(e.commitTime);return this.listener.cu(n,t)}var r,i;return U_(!e.writeResults||0===e.writeResults.length),this.ru=!0,this.listener.au()}hu(){const e={};e.database=u0(this.serializer),this.Wo(e)}uu(e){var t={streamToken:this.lastStreamToken,writes:e.map(e=>f0(this.serializer,e))};this.Wo(t)}}class HC extends class{}{constructor(e,t,n,r){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.serializer=r,this.lu=!1}fu(){if(this.lu)throw new q_(V_.FAILED_PRECONDITION,"The client has already been terminated.")}Io(n,r,i){return this.fu(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.Io(n,r,i,e,t)).catch(e=>{throw"FirebaseError"===e.name?(e.code===V_.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new q_(V_.UNKNOWN,e.toString())})}vo(n,r,i,s){return this.fu(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.vo(n,r,i,e,t,s)).catch(e=>{throw"FirebaseError"===e.name?(e.code===V_.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new q_(V_.UNKNOWN,e.toString())})}terminate(){this.lu=!0}}class QC{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.wu=0,this._u=null,this.mu=!0}gu(){0===this.wu&&(this.yu("Unknown"),this._u=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this._u=null,this.pu("Backend didn't respond within 10 seconds."),this.yu("Offline"),Promise.resolve())))}Iu(e){"Online"===this.state?this.yu("Unknown"):(this.wu++,1<=this.wu&&(this.Tu(),this.pu(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.yu("Offline")))}set(e){this.Tu(),this.wu=0,"Online"===e&&(this.mu=!1),this.yu(e)}yu(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}pu(e){var t=`Could not reach Cloud Firestore backend. ${e}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.mu?(O_(t),this.mu=!1):x_("OnlineStateTracker",t)}Tu(){null!==this._u&&(this._u.cancel(),this._u=null)}}class YC{constructor(e,t,n,r,i){this.localStore=e,this.datastore=t,this.asyncQueue=n,this.remoteSyncer={},this.Eu=[],this.Au=new Map,this.vu=new Set,this.Ru=[],this.Pu=i,this.Pu.Yr(e=>{n.enqueueAndForget(async()=>{sk(this)&&(x_("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=e;t.vu.add(4),await XC(t),t.bu.set("Unknown"),t.vu.delete(4),await JC(t)}(this))})}),this.bu=new QC(n,r)}}async function JC(e){if(sk(e))for(const t of e.Ru)await t(!0)}async function XC(e){for(const t of e.Ru)await t(!1)}function ZC(e,t){const n=e;n.Au.has(t.targetId)||(n.Au.set(t.targetId,t),ik(n)?rk(n):fk(n).Ko()&&tk(n,t))}function ek(e,t){const n=e,r=fk(n);n.Au.delete(t),r.Ko()&&nk(n,t),0===n.Au.size&&(r.Ko()?r.jo():sk(n)&&n.bu.set("Unknown"))}function tk(e,t){var n;e.Vu.qt(t.targetId),(0t.remoteSyncer.getRemoteKeysForTarget(e),le:e=>t.Au.get(e)||null,ue:()=>t.datastore.serializer.databaseId}),fk(t).start(),t.bu.gu()}function ik(e){return sk(e)&&!fk(e).Uo()&&0fC(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{x_("RemoteStore","Retrying IndexedDB access"),await n(),e.vu.delete(1),await JC(e)})}function ck(t,n){return n().catch(e=>ok(t,e,n))}async function lk(e){const t=e,n=gk(t);let r=0(void 0===t&&(t=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(e,t)))}(t.localStore,r);if(null===e){0===t.Eu.length&&n.jo();break}r=e.batchId,function(e,t){e.Eu.push(t);const n=gk(e);n.Ko()&&n.ou&&n.uu(t.mutations)}(t,e)}catch(e){await ok(t,e)}var i;uk(t)&&hk(t)}function uk(e){return sk(e)&&!gk(e).Uo()&&0{tk(n,e)})}).bind(null,t),ao:(async function(e,t){ak(e),ik(e)?(e.bu.Iu(t),rk(e)):e.bu.set("Unknown")}).bind(null,t),nu:(async function(e,r,t){if(e.bu.set("Online"),r instanceof KT&&2===r.state&&r.cause)try{await async function(e){var t=r.cause;for(const n of r.targetIds)e.Au.has(n)&&(await e.remoteSyncer.rejectListen(n,t),e.Au.delete(n),e.Vu.removeTarget(n))}(e)}catch(t){x_("RemoteStore","Failed to remove targets %s: %s ",r.targetIds.join(","),t),await ok(e,t)}else if(r instanceof zT?e.Vu.Ht(r):r instanceof $T?e.Vu.ne(r):e.Vu.Xt(r),!t.isEqual(tw.min()))try{const r=await fC(e.localStore);0<=t.compareTo(r)&&await function(i,r){const e=i.Vu.ce(r);return e.targetChanges.forEach((e,t)=>{if(0{const n=i.Au.get(e);var r;n&&(i.Au.set(e,n.withResumeToken(wb.EMPTY_BYTE_STRING,n.snapshotVersion)),nk(i,e),r=new E0(n.target,e,t,n.sequenceNumber),tk(i,r))}),i.remoteSyncer.applyRemoteEvent(e)}(e,t)}catch(r){x_("RemoteStore","Failed to raise snapshot:",r),await ok(e,r)}}).bind(null,t)}),t.Ru.push(async e=>{e?(t.Su.Qo(),ik(t)?rk(t):t.bu.set("Unknown")):(await t.Su.stop(),ak(t))})),t.Su}function gk(t){return t.Du||(t.Du=function(e,t,n){const r=e;return r.fu(),new GC(t,r.connection,r.authCredentials,r.appCheckCredentials,r.serializer,n)}(t.datastore,t.asyncQueue,{uo:(async function(e){gk(e).hu()}).bind(null,t),ao:(async function(e,t){t&&gk(e).ou&&await async function(e,t){if(DT(n=t.code)&&n!==V_.ABORTED){const n=e.Eu.shift();gk(e).Qo(),await ck(e,()=>e.remoteSyncer.rejectFailedWrite(n.batchId,t)),await lk(e)}var n}(e,t),uk(e)&&hk(e)}).bind(null,t),au:(async function(e){const t=gk(e);for(const n of e.Eu)t.uu(n.mutations)}).bind(null,t),cu:(async function(e,t,n){const r=e.Eu.shift(),i=AT.from(r,t,n);await ck(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await lk(e)}).bind(null,t)}),t.Ru.push(async e=>{e?(t.Du.Qo(),await lk(t)):(await t.Du.stop(),0{})}static createAndSchedule(e,t,n,r,i){const s=Date.now()+n,a=new mk(e,t,s,r,i);return a.start(n),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new q_(V_.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget(()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then(e=>this.deferred.resolve(e))):Promise.resolve())}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function vk(e,t){if(O_("AsyncQueue",`${t}: ${e}`),Ew(e))return new q_(V_.UNAVAILABLE,`${t}: ${e}`);throw e}class yk{constructor(n){this.comparator=n?(e,t)=>n(e,t)||aw.comparator(e.key,t.key):(e,t)=>aw.comparator(e.key,t.key),this.keyedMap=KI(),this.sortedSet=new db(this.comparator)}static emptySet(e){return new yk(e.comparator)}has(e){return null!=this.keyedMap.get(e)}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){var t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(n){this.sortedSet.inorderTraversal((e,t)=>(n(e),!1))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){var t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof yk))return!1;if(this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),n=e.sortedSet.getIterator();for(;t.hasNext();){const e=t.getNext().key,r=n.getNext().key;if(!e.isEqual(r))return!1}return!0}toString(){const t=[];return this.forEach(e=>{t.push(e.toString())}),0===t.length?"DocumentSet ()":"DocumentSet (\n "+t.join(" \n")+"\n)"}copy(e,t){const n=new yk;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class _k{constructor(){this.Cu=new db(aw.comparator)}track(e){var t=e.doc.key,n=this.Cu.get(t);!n||0!==e.type&&3===n.type?this.Cu=this.Cu.insert(t,e):3===e.type&&1!==n.type?this.Cu=this.Cu.insert(t,{type:n.type,doc:e.doc}):2===e.type&&2===n.type?this.Cu=this.Cu.insert(t,{type:2,doc:e.doc}):2===e.type&&0===n.type?this.Cu=this.Cu.insert(t,{type:0,doc:e.doc}):1===e.type&&0===n.type?this.Cu=this.Cu.remove(t):1===e.type&&2===n.type?this.Cu=this.Cu.insert(t,{type:1,doc:n.doc}):0===e.type&&1===n.type?this.Cu=this.Cu.insert(t,{type:2,doc:e.doc}):F_()}xu(){const n=[];return this.Cu.inorderTraversal((e,t)=>{n.push(t)}),n}}class wk{constructor(e,t,n,r,i,s,a,o,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=r,this.mutatedKeys=i,this.fromCache=s,this.syncStateChanged=a,this.excludesMetadataChanges=o,this.hasCachedResults=c}static fromInitialDocuments(e,t,n,r,i){const s=[];return t.forEach(e=>{s.push({type:0,doc:e})}),new wk(e,t,yk.emptySet(t),s,n,r,!0,!1,i)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&LI(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,n=e.docChanges;if(t.length!==n.length)return!1;for(let r=0;rFI(e),LI),this.onlineState="Unknown",this.ku=new Set}}async function Tk(e,t){const n=e,r=t.query;let i=!1,s=n.queries.get(r);if(s||(i=!0,s=new bk),i)try{s.Nu=await n.onListen(r)}catch(e){const n=vk(e,`Initialization of query '${UI(t.query)}' failed`);return void t.onError(n)}n.queries.set(r,s),s.listeners.push(t),t.Mu(n.onlineState),!s.Nu||t.$u(s.Nu)&&Ck(n)}async function Ek(e,t){const n=e,r=t.query;let i=!1;const s=n.queries.get(r);if(s){const e=s.listeners.indexOf(t);0<=e&&(s.listeners.splice(e,1),i=0===s.listeners.length)}if(i)return n.queries.delete(r),n.onUnlisten(r)}function Ck(e){e.ku.forEach(e=>{e.next()})}class kk{constructor(e,t,n){this.query=e,this.Ou=t,this.Fu=!1,this.Bu=null,this.onlineState="Unknown",this.options=n||{}}$u(e){if(!this.options.includeMetadataChanges){const t=[];for(const n of e.docChanges)3!==n.type&&t.push(n);e=new wk(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Fu?this.Lu(e)&&(this.Ou.next(e),t=!0):this.qu(e,this.onlineState)&&(this.Uu(e),t=!0),this.Bu=e,t}onError(e){this.Ou.error(e)}Mu(e){this.onlineState=e;let t=!1;return this.Bu&&!this.Fu&&this.qu(this.Bu,e)&&(this.Uu(this.Bu),t=!0),t}qu(e,t){return!e.fromCache||(!this.options.Ku||!("Offline"!==t))&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}Lu(e){if(0mC(t,o,a).next(e=>(o.apply(t),e)).next(e=>i.Bs.removeMatchingKeysForTargetId(t,c.targetId).next(()=>i.Bs.addMatchingKeys(t,s,c.targetId)).next(()=>i.localDocuments.getLocalViewOfDocuments(t,e.nr,e.sr)).next(()=>e.nr)))}(this.localStore,new Ak(this.serializer),this.documents,this.ju.id),t=this.Wu(this.documents);for(const e of this.queries)await async function(e,n,r=YI()){const i=await vC(e,xI(x0(n.bundledQuery))),s=e;return s.persistence.runTransaction("Save named query","readwrite",e=>{var t=r0(n.readTime);if(0<=i.snapshotVersion.compareTo(t))return s.qs.saveNamedQuery(e,n);t=i.withResumeToken(wb.EMPTY_BYTE_STRING,t);return s.Ji=s.Ji.insert(t.targetId,t),s.Bs.updateTargetData(e,t).next(()=>s.Bs.removeMatchingKeysForTargetId(e,i.targetId)).next(()=>s.Bs.addMatchingKeys(e,r,i.targetId)).next(()=>s.qs.saveNamedQuery(e,n))})}(this.localStore,e,t.get(e.name));return this.progress.taskState="Success",{progress:this.progress,Hu:this.collectionGroups,Ju:e}}}function Rk(e){return{taskState:"Running",documentsLoaded:0,bytesLoaded:0,totalDocuments:e.totalDocuments,totalBytes:e.totalBytes}}class Dk{constructor(e){this.key=e}}class Pk{constructor(e){this.key=e}}class xk{constructor(e,t){this.query=e,this.Yu=t,this.Xu=null,this.hasCachedResults=!1,this.current=!1,this.Zu=YI(),this.mutatedKeys=YI(),this.tc=BI(e),this.ec=new yk(this.tc)}get nc(){return this.Yu}sc(e,t){const o=t?t.ic:new _k,c=(t||this).ec;let l=(t||this).mutatedKeys,u=c,h=!1;const d="F"===this.query.limitType&&c.size===this.query.limit?c.last():null,p="L"===this.query.limitType&&c.size===this.query.limit?c.first():null;if(e.inorderTraversal((e,t)=>{const n=c.get(e),r=VI(this.query,t)?t:null,i=!!n&&this.mutatedKeys.has(n.key),s=!!r&&(r.hasLocalMutations||this.mutatedKeys.has(r.key)&&r.hasCommittedMutations);let a=!1;n&&r?n.data.isEqual(r.data)?i!==s&&(o.track({type:3,doc:r}),a=!0):this.rc(n,r)||(o.track({type:2,doc:r}),a=!0,(d&&0this.query.limit;){const e="F"===this.query.limitType?u.last():u.first();u=u.delete(e.key),l=l.delete(e.key),o.track({type:1,doc:e})}return{ec:u,ic:o,zi:h,mutatedKeys:l}}rc(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n){var r=this.ec;this.ec=e.ec,this.mutatedKeys=e.mutatedKeys;const i=e.ic.xu();i.sort((e,t)=>function(e,t){var n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return F_()}};return n(e)-n(t)}(e.type,t.type)||this.tc(e.doc,t.doc)),this.oc(n);var s=t?this.uc():[],a=0===this.Zu.size&&this.current?1:0,o=a!==this.Xu;return this.Xu=a,0!==i.length||o?{snapshot:new wk(this.query,e.ec,r,i,e.mutatedKeys,0==a,o,!1,!!n&&0this.Yu=this.Yu.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.Yu=this.Yu.delete(e)),this.current=e.current)}uc(){if(!this.current)return[];const t=this.Zu;this.Zu=YI(),this.ec.forEach(e=>{this.ac(e.key)&&(this.Zu=this.Zu.add(e.key))});const n=[];return t.forEach(e=>{this.Zu.has(e)||n.push(new Pk(e))}),this.Zu.forEach(e=>{t.has(e)||n.push(new Dk(e))}),n}hc(e){this.Yu=e.ir,this.Zu=YI();var t=this.sc(e.documents);return this.applyChanges(t,!0)}lc(){return wk.fromInitialDocuments(this.query,this.ec,this.mutatedKeys,0===this.Xu,this.hasCachedResults)}}class Ok{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class Mk{constructor(e){this.key=e,this.fc=!1}}class Lk{constructor(e,t,n,r,i,s){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=r,this.currentUser=i,this.maxConcurrentLimboResolutions=s,this.dc={},this.wc=new jI(e=>FI(e),LI),this._c=new Map,this.mc=new Set,this.gc=new db(aw.comparator),this.yc=new Map,this.Ic=new GE,this.Tc={},this.Ec=new Map,this.Ac=TE.Mn(),this.onlineState="Unknown",this.vc=void 0}get isPrimaryClient(){return!0===this.vc}}async function Fk(n,e,t,r,i){n.Rc=(e,s,t)=>async function(e,t,n){let r=t.view.sc(s);r.zi&&(r=await _C(e.localStore,t.query,!1).then(({documents:e})=>t.view.sc(e,r)));var i=n&&n.targetChanges.get(t.targetId),i=t.view.applyChanges(r,e.isPrimaryClient,i);return Wk(e,t.targetId,i.cc),i.snapshot}(n,e,t);const s=await _C(n.localStore,e,!0),a=new xk(e,s.ir),o=a.sc(s.documents),c=jT.createSynthesizedTargetChangeForCurrentChange(t,r&&"Offline"!==n.onlineState,i),l=a.applyChanges(o,n.isPrimaryClient,c);Wk(n,t,l.cc);var u=new Ok(e,t,a);return n.wc.set(e,u),n._c.has(t)?n._c.get(t).push(e):n._c.set(t,[e]),l.snapshot}async function Uk(e,t,n){const r=Zk(e);try{const e=await function(e,i){const s=e,a=ew.now(),o=i.reduce((e,t)=>e.add(t.key),YI());let c,l;return s.persistence.runTransaction("Locally write mutations","readwrite",n=>{let t=zI,r=YI();return s.Zi.getEntries(n,o).next(e=>{t=e,t.forEach((e,t)=>{t.isValidDocument()||(r=r.add(e))})}).next(()=>s.localDocuments.getOverlayedDocuments(n,t)).next(e=>{c=e;const t=[];for(const n of i){const i=function(e,t){let n=null;for(const r of e.fieldTransforms){const e=t.data.field(r.field),i=nT(r.transform,e||null);null!=i&&(null===n&&(n=Hb.empty()),n.set(r.field,i))}return n||null}(n,c.get(n.key).overlayedDocument);null!=i&&t.push(new bT(n.key,i,function r(e){const i=[];return ub(e.fields,(e,t)=>{const n=new sw([e]);if(zb(t)){const e=r(t.mapValue).fields;if(0===e.length)i.push(n);else for(const t of e)i.push(n.child(t))}else i.push(n)}),new yb(i)}(i.value.mapValue),pT.exists(!0)))}return s.mutationQueue.addMutationBatch(n,a,t,i)}).next(e=>{var t=(l=e).applyToLocalDocumentSet(c,r);return s.documentOverlayCache.saveOverlays(n,e.batchId,t)})}).then(()=>({batchId:l.batchId,changes:WI(c)}))}(r.localStore,t);r.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let r=e.Tc[e.currentUser.toKey()];r=r||new db(J_),r=r.insert(t,n),e.Tc[e.currentUser.toKey()]=r}(r,e.batchId,n),await Hk(r,e.changes),await lk(r.remoteStore)}catch(e){const t=vk(e,"Failed to persist write");n.reject(t)}}async function Vk(e,t){const r=e;try{const e=await gC(r.localStore,t);t.targetChanges.forEach((e,t)=>{const n=r.yc.get(t);n&&(U_(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),0{var n=t.view.Mu(i);n.snapshot&&r.push(n.snapshot)}),function(e,n){const t=e;t.onlineState=n;let r=!1;t.queries.forEach((e,t)=>{for(const e of t.listeners)e.Mu(n)&&(r=!0)}),r&&Ck(t)}(t.eventManager,i),r.length&&t.dc.nu(r),t.onlineState=i,t.isPrimaryClient&&t.sharedClientState.setOnlineState(i)}}async function Bk(e,t){const n=e,r=t.batch.batchId;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Acknowledge batch","readwrite-primary",e=>{const t=r.batch.keys(),n=i.Zi.newChangeBuffer({trackRemovals:!0});return function(e,t,r,i){const s=r.batch,n=s.keys();let a=_w.resolve();return n.forEach(n=>{a=a.next(()=>i.getEntry(t,n)).next(e=>{var t=r.docVersions.get(n);U_(null!==t),e.version.compareTo(t)<0&&(s.applyToRemoteDocument(e,r),e.isValidDocument()&&(e.setReadTime(r.commitVersion),i.addEntry(e)))})}),a.next(()=>e.mutationQueue.removeMutationBatch(t,s))}(i,e,r,n).next(()=>n.apply(e)).next(()=>i.mutationQueue.performConsistencyCheck(e)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(e,t,r.batch.batchId)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=YI();for(let n=0;ni.localDocuments.getDocuments(e,t))})}(n.localStore,t);zk(n,r,null),jk(n,r),n.sharedClientState.updateMutationState(r,"acknowledged"),await Hk(n,e)}catch(e){await yw(e)}}function jk(e,t){(e.Ec.get(t)||[]).forEach(e=>{e.resolve()}),e.Ec.delete(t)}function zk(e,t,n){const r=e;let i=r.Tc[r.currentUser.toKey()];if(i){const e=i.get(t);e&&(n?e.reject(n):e.resolve(),i=i.remove(t)),r.Tc[r.currentUser.toKey()]=i}}function $k(t,e,n=null){t.sharedClientState.removeLocalQueryTarget(e);for(const r of t._c.get(e))t.wc.delete(r),n&&t.dc.Pc(r,n);t._c.delete(e),t.isPrimaryClient&&t.Ic.Is(e).forEach(e=>{t.Ic.containsKey(e)||Kk(t,e)})}function Kk(e,t){e.mc.delete(t.path.canonicalString());var n=e.gc.get(t);null!==n&&(ek(e.remoteStore,n),e.gc=e.gc.remove(t),e.yc.delete(n),Gk(e))}function Wk(e,t,n){for(const r of n)r instanceof Dk?(e.Ic.addReference(r.key,t),function(e,t){const n=t.key,r=n.path.canonicalString();e.gc.get(n)||e.mc.has(r)||(x_("SyncEngine","New document in limbo: "+n),e.mc.add(r),Gk(e))}(e,r)):r instanceof Pk?(x_("SyncEngine","Document no longer in limbo: "+r.key),e.Ic.removeReference(r.key,t),e.Ic.containsKey(r.key)||Kk(e,r.key)):F_()}function Gk(e){for(;0{o.push(i.Rc(n,t,r).then(e=>{var t;(e||r)&&i.isPrimaryClient&&i.sharedClientState.updateQueryState(n.targetId,null!=e&&e.fromCache?"not-current":"current"),e&&(s.push(e),t=lC.Li(n.targetId,e),a.push(t))}))}),await Promise.all(o),i.dc.nu(s),await async function(e,t){const r=e;try{await r.persistence.runTransaction("notifyLocalViewChanges","readwrite",n=>_w.forEach(t,t=>_w.forEach(t.Fi,e=>r.persistence.referenceDelegate.addReference(n,t.targetId,e)).next(()=>_w.forEach(t.Bi,e=>r.persistence.referenceDelegate.removeReference(n,t.targetId,e)))))}catch(e){if(!Ew(e))throw e;x_("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=r.Ji.get(t),n=e.snapshotVersion,i=e.withLastLimboFreeSnapshotVersion(n);r.Ji=r.Ji.insert(t,i)}}}(i.localStore,a))}async function Qk(r,e){const i=r;if(Xk(i),Zk(i),!0===e&&!0!==i.vc){const r=i.sharedClientState.getAllActiveQueryTargets(),e=await Yk(i,r.toArray());i.vc=!0,await pk(i.remoteStore,!0);for(const r of e)ZC(i.remoteStore,r)}else if(!1===e&&!1!==i.vc){const r=[];let n=Promise.resolve();i._c.forEach((e,t)=>{i.sharedClientState.isLocalQueryTarget(t)?r.push(t):n=n.then(()=>($k(i,t),yC(i.localStore,t,!0))),ek(i.remoteStore,t)}),await n,await Yk(i,r),function(){const n=i;n.yc.forEach((e,t)=>{ek(n.remoteStore,t)}),n.Ic.Ts(),n.yc=new Map,n.gc=new db(aw.comparator)}(),i.vc=!1,await pk(i.remoteStore,!1)}}async function Yk(t,n){const r=t,i=[],s=[];for(const t of n){let e;const u=r._c.get(t);if(u&&0!==u.length){e=await vC(r.localStore,xI(u[0]));for(const t of u){const n=r.wc.get(t),u=(a=r,o=n,l=c=void 0,l=await _C((c=a).localStore,o.query,!0),l=o.view.hc(l),c.isPrimaryClient&&Wk(c,o.targetId,l.cc),await l);u.snapshot&&s.push(u.snapshot)}}else{const u=await wC(r.localStore,t);e=await vC(r.localStore,u),await Fk(r,Jk(u),t,!1,e.resumeToken)}i.push(e)}var a,o,c,l;return r.dc.nu(s),i}function Jk(e){return kI(e.path,e.collectionGroup,e.orderBy,e.filters,e.limit,"F",e.startAt,e.endAt)}function Xk(e){const t=e;return t.remoteStore.remoteSyncer.applyRemoteEvent=Vk.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=(function(e,t){const n=e,r=n.yc.get(t);if(r&&r.fc)return YI().add(r.key);{let e=YI();const r=n._c.get(t);if(!r)return e;for(const t of r){const r=n.wc.get(t);e=e.unionWith(r.view.nc)}return e}}).bind(null,t),t.remoteStore.remoteSyncer.rejectListen=(async function(e,t,n){const r=e;r.sharedClientState.updateQueryState(t,"rejected",n);const i=r.yc.get(t),s=i&&i.key;if(s){let e=new db(aw.comparator);e=e.insert(s,Qb.newNoDocument(s,tw.min()));const n=YI().add(s),i=new BT(tw.min(),new Map,new db(J_),e,n);await Vk(r,i),r.gc=r.gc.remove(s),r.yc.delete(t),Gk(r)}else await yC(r.localStore,t,!1).then(()=>$k(r,t,n)).catch(yw)}).bind(null,t),t.dc.nu=(function(e,t){const n=e;let r=!1;for(const e of t){const t=e.query,i=n.queries.get(t);if(i){for(const t of i.listeners)t.$u(e)&&(r=!0);i.Nu=e}}r&&Ck(n)}).bind(null,t.eventManager),t.dc.Pc=(function(e,t,n){const r=e,i=r.queries.get(t);if(i)for(const e of i.listeners)e.onError(n);r.queries.delete(t)}).bind(null,t.eventManager),t}function Zk(e){const t=e;return t.remoteStore.remoteSyncer.applySuccessfulWrite=Bk.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=(async function(e,t,n){const r=e;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Reject batch","readwrite-primary",t=>{let n;return i.mutationQueue.lookupMutationBatch(t,r).next(e=>(U_(null!==e),n=e.keys(),i.mutationQueue.removeMutationBatch(t,e))).next(()=>i.mutationQueue.performConsistencyCheck(t)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(t,n,r)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t,n)).next(()=>i.localDocuments.getDocuments(t,n))})}(r.localStore,t);zk(r,t,n),jk(r,t),r.sharedClientState.updateMutationState(t,"rejected",n),await Hk(r,e)}catch(n){await yw(n)}}).bind(null,t),t}class eS{constructor(){this.synchronizeTabs=!1}async initialize(e){this.serializer=zC(e.databaseInfo.databaseId),this.sharedClientState=this.createSharedClientState(e),this.persistence=this.createPersistence(e),await this.persistence.start(),this.localStore=this.createLocalStore(e),this.gcScheduler=this.createGarbageCollectionScheduler(e,this.localStore),this.indexBackfillerScheduler=this.createIndexBackfillerScheduler(e,this.localStore)}createGarbageCollectionScheduler(e,t){return null}createIndexBackfillerScheduler(e,t){return null}createLocalStore(e){return dC(this.persistence,new uC,e.initialUser,this.serializer)}createPersistence(e){return new ZE(tC.zs,this.serializer)}createSharedClientState(e){return new PC}async terminate(){this.gcScheduler&&this.gcScheduler.stop(),await this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class tS extends eS{constructor(e,t,n){super(),this.Vc=e,this.cacheSizeBytes=t,this.forceOwnership=n,this.synchronizeTabs=!1}async initialize(e){await super.initialize(e),await this.Vc.initialize(this,e),await Zk(this.Vc.syncEngine),await lk(this.Vc.remoteStore),await this.persistence.Ii(()=>(this.gcScheduler&&!this.gcScheduler.started&&this.gcScheduler.start(),this.indexBackfillerScheduler&&!this.indexBackfillerScheduler.started&&this.indexBackfillerScheduler.start(),Promise.resolve()))}createLocalStore(e){return dC(this.persistence,new uC,e.initialUser,this.serializer)}createGarbageCollectionScheduler(e,t){var n=this.persistence.referenceDelegate.garbageCollector;return new RE(n,e.asyncQueue,t)}createIndexBackfillerScheduler(e,t){var n=new Rw(t,this.persistence);return new Nw(e.asyncQueue,n)}createPersistence(e){var t=cC(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey),n=void 0!==this.cacheSizeBytes?gE.withCacheSize(this.cacheSizeBytes):gE.DEFAULT;return new sC(this.synchronizeTabs,t,e.clientId,n,e.asyncQueue,BC(),jC(),this.serializer,this.sharedClientState,!!this.forceOwnership)}createSharedClientState(e){return new PC}}class nS extends tS{constructor(e,t){super(e,t,!1),this.Vc=e,this.cacheSizeBytes=t,this.synchronizeTabs=!0}async initialize(e){await super.initialize(e);var t=this.Vc.syncEngine;this.sharedClientState instanceof DC&&(this.sharedClientState.syncEngine={jr:(async function(e,t,n,r){var i=e,s=await function(e,n){const r=e,i=r.mutationQueue;return r.persistence.runTransaction("Lookup mutation documents","readonly",t=>i.Sn(t,n).next(e=>e?r.localDocuments.getDocuments(t,e):_w.resolve(null)))}(i.localStore,t);null!==s?("pending"===n?await lk(i.remoteStore):"acknowledged"===n||"rejected"===n?(zk(i,t,r||null),jk(i,t),i.localStore.mutationQueue.Cn(t)):F_(),await Hk(i,s)):x_("SyncEngine","Cannot apply mutation batch with id: "+t)}).bind(null,t),zr:(async function(e,t,n,r){const i=e;if(i.vc)x_("SyncEngine","Ignoring unexpected query state notification.");else{var s=i._c.get(t);if(s&&0{ek(r.remoteStore,e),$k(r,e)}).catch(yw)}}).bind(null,t),$i:(function(e){return e.localStore.persistence.$i()}).bind(null,t),Qr:(async function(e,t){const n=e;return bC(n.localStore,t).then(e=>Hk(n,e))}).bind(null,t)},await this.sharedClientState.start()),await this.persistence.Ii(async e=>{await Qk(this.Vc.syncEngine,e),this.gcScheduler&&(e&&!this.gcScheduler.started?this.gcScheduler.start():e||this.gcScheduler.stop()),this.indexBackfillerScheduler&&(e&&!this.indexBackfillerScheduler.started?this.indexBackfillerScheduler.start():e||this.indexBackfillerScheduler.stop())})}createSharedClientState(e){var t=BC();if(!DC.D(t))throw new q_(V_.UNIMPLEMENTED,"IndexedDB persistence is only available on platforms that support LocalStorage.");var n=cC(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey);return new DC(t,e.asyncQueue,n,e.clientId,e.initialUser)}}class rS{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=e=>qk(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=(async function(e,t){const n=e;if(!n.currentUser.isEqual(t)){x_("SyncEngine","User change. New user:",t.toKey());const r=await pC(n.localStore,t);n.currentUser=t,(e=n).Ec.forEach(e=>{e.forEach(e=>{e.reject(new q_(V_.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))})}),e.Ec.clear(),n.sharedClientState.handleUserChange(t,r.removedBatchIds,r.addedBatchIds),await Hk(n,r.er)}}).bind(null,this.syncEngine),await pk(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new Ik}createDatastore(e){var t,n,r,i,s=zC(e.databaseInfo.databaseId),t=(t=e.databaseInfo,new qC(t));return n=e.authCredentials,r=e.appCheckCredentials,i=t,e=s,new HC(n,r,i,e)}createRemoteStore(e){return t=this.localStore,n=this.datastore,r=e.asyncQueue,i=e=>qk(this.syncEngine,e,0),s=new(OC.D()?OC:xC),new YC(t,n,r,i,s);var t,n,r,i,s}createSyncEngine(e,t){return function(e,t,n,r,i,s,a){const o=new Lk(e,t,n,r,i,s);return a&&(o.vc=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}terminate(){return async function(e){const t=e;x_("RemoteStore","RemoteStore shutting down."),t.vu.add(5),await XC(t),t.Pu.shutdown(),t.bu.set("Unknown")}(this.remoteStore)}}function iS(t,n=10240){let r=0;return{async read(){if(r{this.muted||e(t)},0)}}class aS{constructor(e,t){this.Cc=e,this.serializer=t,this.metadata=new B_,this.buffer=new Uint8Array,this.xc=new TextDecoder("utf-8"),this.Nc().then(e=>{e&&e.Qu()?this.metadata.resolve(e.Gu.metadata):this.metadata.reject(new Error(`The first element of the bundle is not a metadata, it is\n ${JSON.stringify(null==e?void 0:e.Gu)}`))},e=>this.metadata.reject(e))}close(){return this.Cc.cancel()}async getMetadata(){return this.metadata.promise}async bc(){return await this.getMetadata(),this.Nc()}async Nc(){var e=await this.kc();if(null===e)return null;var t=this.xc.decode(e),n=Number(t);isNaN(n)&&this.Mc(`length string (${t}) is not valid number`);t=await this.$c(n);return new Sk(JSON.parse(t),e.length+n)}Oc(){return this.buffer.findIndex(e=>e==="{".charCodeAt(0))}async kc(){for(;this.Oc()<0&&!await this.Fc(););if(0===this.buffer.length)return null;var e=this.Oc();e<0&&this.Mc("Reached the end of bundle when a length string is expected.");var t=this.buffer.slice(0,e);return this.buffer=this.buffer.slice(e),t}async $c(e){for(;this.buffer.lengtha0(r.serializer,e))},s=await r.vo("BatchGetDocuments",n,i,t.length),a=new Map;s.forEach(e=>{const t=(n=r.serializer,"found"in(e=e)?function(e,t){U_(!!t.found),t.found.name,t.found.updateTime;var n=o0(e,t.found.name),r=r0(t.found.updateTime),i=t.found.createTime?r0(t.found.createTime):tw.min(),s=new Hb({mapValue:{fields:t.found.fields}});return Qb.newFoundDocument(n,r,i,s)}(n,e):"missing"in e?function(e,t){U_(!!t.missing),U_(!!t.readTime);var n=o0(e,t.missing),r=r0(t.readTime);return Qb.newNoDocument(n,r)}(n,e):F_());var n;a.set(t.key.toString(),t)});const o=[];return t.forEach(e=>{var t=a.get(e.toString());U_(!!t),o.push(t)}),o}(this.datastore,e);return t.forEach(e=>this.recordVersion(e)),t}set(e,t){this.write(t.toMutation(e,this.precondition(e))),this.writtenDocs.add(e.toString())}update(e,t){try{this.write(t.toMutation(e,this.preconditionForUpdate(e)))}catch(e){this.lastWriteError=e}this.writtenDocs.add(e.toString())}delete(e){this.write(new CT(e,this.precondition(e))),this.writtenDocs.add(e.toString())}async commit(){if(this.ensureCommitNotCalled(),this.lastWriteError)throw this.lastWriteError;const t=this.readVersions;this.mutations.forEach(e=>{t.delete(e.key.toString())}),t.forEach((e,t)=>{var n=aw.fromPath(t);this.mutations.push(new kT(n,this.precondition(n)))}),await async function(e,t){const n=e,r=u0(n.serializer)+"/documents",i={writes:t.map(e=>f0(n.serializer,e))};await n.Io("Commit",r,i)}(this.datastore,this.mutations),this.committed=!0}recordVersion(e){let t;if(e.isFoundDocument())t=e.version;else{if(!e.isNoDocument())throw F_();t=tw.min()}var n=this.readVersions.get(e.key.toString());if(n){if(!t.isEqual(n))throw new q_(V_.ABORTED,"Document version changed between two reads.")}else this.readVersions.set(e.key.toString(),t)}precondition(e){const t=this.readVersions.get(e.toString());return!this.writtenDocs.has(e.toString())&&t?t.isEqual(tw.min())?pT.exists(!1):pT.updateTime(t):pT.none()}preconditionForUpdate(e){const t=this.readVersions.get(e.toString());if(this.writtenDocs.has(e.toString())||!t)return pT.exists(!0);if(t.isEqual(tw.min()))throw new q_(V_.INVALID_ARGUMENT,"Can't update a document that doesn't exist.");return pT.updateTime(t)}write(e){this.ensureCommitNotCalled(),this.mutations.push(e)}ensureCommitNotCalled(){}}class cS{constructor(e,t,n,r,i){this.asyncQueue=e,this.datastore=t,this.options=n,this.updateFunction=r,this.deferred=i,this.Bc=n.maxAttempts,this.qo=new $C(this.asyncQueue,"transaction_retry")}run(){--this.Bc,this.Lc()}Lc(){this.qo.No(async()=>{const t=new oS(this.datastore),e=this.qc(t);e&&e.then(e=>{this.asyncQueue.enqueueAndForget(()=>t.commit().then(()=>{this.deferred.resolve(e)}).catch(e=>{this.Uc(e)}))}).catch(e=>{this.Uc(e)})})}qc(e){try{var t=this.updateFunction(e);return!Pw(t)&&t.catch&&t.then?t:(this.deferred.reject(Error("Transaction callback must return a Promise")),null)}catch(e){return this.deferred.reject(e),null}}Uc(e){0(this.Lc(),Promise.resolve()))):this.deferred.reject(e)}Kc(e){if("FirebaseError"!==e.name)return!1;var t=e.code;return"aborted"===t||"failed-precondition"===t||"already-exists"===t||!DT(t)}}class lS{constructor(e,t,n,r){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=r,this.user=N_.UNAUTHENTICATED,this.clientId=Y_.A(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(n,async e=>{x_("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(n,e=>(x_("FirestoreClient","Received new app check token=",e),this.appCheckCredentialListener(e,this.user)))}async getConfiguration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new q_(V_.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const n=new B_;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),n.resolve()}catch(e){var t=vk(e,"Failed to shutdown persistence");n.reject(t)}}),n.promise}}async function uS(e,t){e.asyncQueue.verifyOperationInProgress(),x_("FirestoreClient","Initializing OfflineComponentProvider");var n=await e.getConfiguration();await t.initialize(n);let r=n.initialUser;e.setCredentialChangeListener(async e=>{r.isEqual(e)||(await pC(t.localStore,e),r=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e._offlineComponents=t}async function hS(e,n){e.asyncQueue.verifyOperationInProgress();var t=await pS(e);x_("FirestoreClient","Initializing OnlineComponentProvider");var r=await e.getConfiguration();await n.initialize(t,r),e.setCredentialChangeListener(e=>dk(n.remoteStore,e)),e.setAppCheckTokenChangeListener((e,t)=>dk(n.remoteStore,t)),e._onlineComponents=n}function dS(e){return"FirebaseError"===e.name?e.code===V_.FAILED_PRECONDITION||e.code===V_.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&e instanceof DOMException)||22===e.code||20===e.code||11===e.code}async function pS(t){if(!t._offlineComponents)if(t._uninitializedComponentsProvider){x_("FirestoreClient","Using user provided OfflineComponentProvider");try{await uS(t,t._uninitializedComponentsProvider._offline)}catch(e){var n=e;if(!dS(n))throw n;M_("Error using user provided cache. Falling back to memory cache: "+n),await uS(t,new eS)}}else x_("FirestoreClient","Using default OfflineComponentProvider"),await uS(t,new eS);return t._offlineComponents}async function fS(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(x_("FirestoreClient","Using user provided OnlineComponentProvider"),await hS(e,e._uninitializedComponentsProvider._online)):(x_("FirestoreClient","Using default OnlineComponentProvider"),await hS(e,new rS))),e._onlineComponents}function gS(e){return pS(e).then(e=>e.persistence)}function mS(e){return pS(e).then(e=>e.localStore)}function vS(e){return fS(e).then(e=>e.remoteStore)}function yS(e){return fS(e).then(e=>e.syncEngine)}async function _S(e){const t=await fS(e),n=t.eventManager;return n.onListen=(async function(e,t){const n=Xk(e);let r,i;const s=n.wc.get(t);if(s)r=s.targetId,n.sharedClientState.addLocalQueryTarget(r),i=s.view.lc();else{const e=await vC(n.localStore,xI(t)),s=n.sharedClientState.addLocalQueryTarget(e.targetId);r=e.targetId,i=await Fk(n,t,r,"current"===s,e.resumeToken),n.isPrimaryClient&&ZC(n.remoteStore,e)}return i}).bind(null,t.syncEngine),n.onUnlisten=(async function(e,t){const n=e,r=n.wc.get(t),i=n._c.get(r.targetId);if(1!LI(e,t))),void n.wc.delete(t);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(r.targetId),n.sharedClientState.isActiveQueryTarget(r.targetId)||await yC(n.localStore,r.targetId,!1).then(()=>{n.sharedClientState.clearQueryState(r.targetId),ek(n.remoteStore,r.targetId),$k(n,r.targetId)}).catch(yw)):($k(n,r.targetId),await yC(n.localStore,r.targetId,!0))}).bind(null,t.syncEngine),n}function wS(e,t,n={}){const r=new B_;return e.asyncQueue.enqueueAndForget(async()=>function(n,r,i,s,a){const e=new sS({next:e=>{r.enqueueAndForget(()=>Ek(n,o));var t=e.docs.has(i);!t&&e.fromCache?a.reject(new q_(V_.UNAVAILABLE,"Failed to get document because the client is offline.")):t&&e.fromCache&&s&&"server"===s.source?a.reject(new q_(V_.UNAVAILABLE,'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')):a.resolve(e)},error:e=>a.reject(e)}),o=new kk(SI(i.path),e,{includeMetadataChanges:!0,Ku:!0});return Tk(n,o)}(await _S(e),e.asyncQueue,t,n,r)),r.promise}function bS(e,t,n={}){const r=new B_;return e.asyncQueue.enqueueAndForget(async()=>function(t,n,e,r,i){const s=new sS({next:e=>{n.enqueueAndForget(()=>Ek(t,a)),e.fromCache&&"server"===r.source?i.reject(new q_(V_.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):i.resolve(e)},error:e=>i.reject(e)}),a=new kk(e,s,{includeMetadataChanges:!0,Ku:!0});return Tk(t,a)}(await _S(e),e.asyncQueue,t,n,r)),r.promise}function IS(e,t,n,r){const i=(n=n,t=zC(t),s="string"==typeof n?MT().encode(n):n,n=function(e){if(e instanceof Uint8Array)return iS(e,void 0);if(e instanceof ArrayBuffer)return iS(new Uint8Array(e),void 0);if(e instanceof ReadableStream)return e.getReader();throw new Error("Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream")}(s),t=t,new aS(n,t));var s;e.asyncQueue.enqueueAndForget(async()=>{!function(e,t,n){const r=e;!async function(t,n,r){try{var i=await n.getMetadata();if(await function(e,t){const n=e,r=r0(t.createTime);return n.persistence.runTransaction("hasNewerBundle","readonly",e=>n.qs.getBundleMetadata(e,t.id)).then(e=>!!e&&0<=e.createTime.compareTo(r))}(t.localStore,i))return await n.close(),r._completeWith({taskState:"Success",documentsLoaded:i.totalDocuments,bytesLoaded:i.totalBytes,totalDocuments:i.totalDocuments,totalBytes:i.totalBytes}),Promise.resolve(new Set);r._updateProgress(Rk(i));const a=new Nk(i,t.localStore,n.serializer);let e=await n.bc();for(;e;){const t=await a.zu(e);t&&r._updateProgress(t),e=await n.bc()}var s=await a.complete();return await Hk(t,s.Ju,void 0),await function(e,t){const n=e;return n.persistence.runTransaction("Save bundle","readwrite",e=>n.qs.saveBundleMetadata(e,t))}(t.localStore,i),r._completeWith(s.progress),Promise.resolve(s.Hu)}catch(t){return M_("SyncEngine",`Loading bundle failed with ${t}`),r._failWith(t),Promise.resolve(new Set)}}(r,t,n).then(e=>{r.sharedClientState.notifyBundleLoaded(e)})}(await yS(e),i,r)})}function TS(e){const t={};return void 0!==e.timeoutSeconds&&(t.timeoutSeconds=e.timeoutSeconds),t}const ES=new Map;function CS(e,t,n){if(!n)throw new q_(V_.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function kS(e,t,n,r){if(!0===t&&!0===r)throw new q_(V_.INVALID_ARGUMENT,`${e} and ${n} cannot be used together.`)}function SS(e){if(!aw.isDocumentKey(e))throw new q_(V_.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function AS(e){if(aw.isDocumentKey(e))throw new q_(V_.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function NS(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return 20{var e=jC();e&&x_("AsyncQueue","Visibility state changed to "+e.visibilityState),this.qo.Mo()};const e=jC();e&&"function"==typeof e.addEventListener&&e.addEventListener("visibilitychange",this.Xc)}get isShuttingDown(){return this.jc}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.Zc(),this.ta(e)}enterRestrictedMode(e){if(!this.jc){this.jc=!0,this.Jc=e||!1;const t=jC();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.Xc)}}enqueue(e){if(this.Zc(),this.jc)return new Promise(()=>{});const t=new B_;return this.ta(()=>this.jc&&this.Jc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Qc.push(e),this.ea()))}async ea(){if(0!==this.Qc.length){try{await this.Qc[0](),this.Qc.shift(),this.qo.reset()}catch(e){if(!Ew(e))throw e;x_("AsyncQueue","Operation failed with retryable error: "+e)}0this.ea())}}ta(e){var t=this.Gc.then(()=>(this.Hc=!0,e().catch(e=>{throw this.Wc=e,this.Hc=!1,O_("INTERNAL UNHANDLED ERROR: ",function(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}(e)),e}).then(e=>(this.Hc=!1,e))));return this.Gc=t}enqueueAfterDelay(e,t,n){this.Zc(),-1this.na(e));return this.zc.push(r),r}Zc(){this.Wc&&F_()}verifyOperationInProgress(){}async sa(){for(var e;await(e=this.Gc),e!==this.Gc;);}ia(e){for(const t of this.zc)if(t.timerId===e)return!0;return!1}ra(t){return this.sa().then(()=>{this.zc.sort((e,t)=>e.targetTimeMs-t.targetTimeMs);for(const e of this.zc)if(e.skipDelay(),"all"!==t&&e.timerId===t)break;return this.sa()})}oa(e){this.Yc.push(e)}na(e){var t=this.zc.indexOf(e);this.zc.splice(t,1)}}function jS(e){return function(e){if("object"==typeof e&&null!==e){var t=e;for(const e of["next","error","complete"])if(e in t&&"function"==typeof t[e])return 1}}(e)}class zS{constructor(){this._progressObserver={},this._taskCompletionResolver=new B_,this._lastProgress={taskState:"Running",totalBytes:0,totalDocuments:0,bytesLoaded:0,documentsLoaded:0}}onProgress(e,t,n){this._progressObserver={next:e,error:t,complete:n}}catch(e){return this._taskCompletionResolver.promise.catch(e)}then(e,t){return this._taskCompletionResolver.promise.then(e,t)}_completeWith(e){this._updateProgress(e),this._progressObserver.complete&&this._progressObserver.complete(),this._taskCompletionResolver.resolve(e)}_failWith(e){this._lastProgress.taskState="Error",this._progressObserver.next&&this._progressObserver.next(this._lastProgress),this._progressObserver.error&&this._progressObserver.error(e),this._taskCompletionResolver.reject(e)}_updateProgress(e){this._lastProgress=e,this._progressObserver.next&&this._progressObserver.next(e)}}var $S,KS,WS,GS;class HS extends xS{constructor(e,t,n,r){super(e,t,n,r),this.type="firestore",this._queue=new BS,this._persistenceKey=(null==r?void 0:r.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||YS(this),this._firestoreClient.terminate()}}function QS(e){return e._firestoreClient||YS(e),e._firestoreClient.verifyNotTerminated(),e._firestoreClient}function YS(e){var t,n,r,i,s,a=e._freezeSettings(),o=(n=e._databaseId,r=(null===(o=e._app)||void 0===o?void 0:o.options.appId)||"",i=e._persistenceKey,s=a,new Ab(n,r,i,s.host,s.ssl,s.experimentalForceLongPolling,s.experimentalAutoDetectLongPolling,TS(s.experimentalLongPollingOptions),s.useFetchStreams));e._firestoreClient=new lS(e._authCredentials,e._appCheckCredentials,e._queue,o),null!==(o=a.cache)&&void 0!==o&&o._offlineComponentProvider&&null!==(t=a.cache)&&void 0!==t&&t._onlineComponentProvider&&(e._firestoreClient._uninitializedComponentsProvider={_offlineKind:a.cache.kind,_offline:a.cache._offlineComponentProvider,_online:a.cache._onlineComponentProvider})}function JS(e,t,n){const r=new B_;return e.asyncQueue.enqueue(async()=>{try{await uS(e,n),await hS(e,t),r.resolve()}catch(e){const t=e;if(!dS(t))throw t;M_("Error enabling indexeddb cache. Falling back to memory cache: "+t),r.reject(t)}}).then(()=>r.promise)}function XS(e){return function(e){const t=new B_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t){const n=e;sk(n.remoteStore)||x_("SyncEngine","The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.");try{const e=await function(){const t=n.localStore;return t.persistence.runTransaction("Get highest unacknowledged batch id","readonly",e=>t.mutationQueue.getHighestUnacknowledgedBatchId(e))}();if(-1===e)return void t.resolve();const r=n.Ec.get(e)||[];r.push(t),n.Ec.set(e,r)}catch(e){const n=vk(e,"Initialization of waitForPendingWrites() operation failed");t.reject(n)}}(await yS(e),t)),t.promise}(QS(e=RS(e,HS)))}function ZS(e){return(n=QS(e=RS(e,HS))).asyncQueue.enqueue(async()=>{const e=await gS(n),t=await vS(n);return e.setNetworkEnabled(!0),function(){const e=t;return e.vu.delete(0),JC(e)}()});var n}function eA(e){return(n=QS(e=RS(e,HS))).asyncQueue.enqueue(async()=>{const e=await gS(n),t=await vS(n);return e.setNetworkEnabled(!1),async function(){const e=t;e.vu.add(0),await XC(e),e.bu.set("Offline")}()});var n}function tA(t,e){return n=QS(t=RS(t,HS)),r=e,n.asyncQueue.enqueue(async()=>function(e,t){const n=e;return n.persistence.runTransaction("Get named query","readonly",e=>n.qs.getNamedQuery(e,t))}(await mS(n),r)).then(e=>e?new MS(t,null,e.query):null);var n,r}function nA(e){if(e._initialized||e._terminated)throw new q_(V_.FAILED_PRECONDITION,"Firestore has already been started and persistence can no longer be enabled. You can only enable persistence before calling any other methods on a Firestore object.")}class rA{constructor(e){this._byteString=e}static fromBase64String(e){try{return new rA(wb.fromBase64String(e))}catch(e){throw new q_(V_.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new rA(wb.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}class iA{constructor(...e){for(let t=0;tt.isPrefixOf(e))||void 0!==this.fieldTransforms.find(e=>t.isPrefixOf(e.field))}ua(){if(this.path)for(let e=0;ec.covers(e.field))}else c=null,l=a.fieldTransforms;return new cA(new Hb(o),c,l)}class gA extends sA{_toFieldTransform(e){if(2!==e.ca)throw 1===e.ca?e._a(`${this._methodName}() can only appear at the top level of your update data`):e._a(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof gA}}function mA(e,t,n){return new hA({ca:3,ga:t.settings.ga,methodName:e._methodName,la:n},t.databaseId,t.serializer,t.ignoreUndefinedProperties)}class vA extends sA{_toFieldTransform(e){return new hT(e.path,new rT)}isEqual(e){return e instanceof vA}}class yA extends sA{constructor(e,t){super(e),this.pa=t}_toFieldTransform(e){const t=mA(this,e,!0),n=this.pa.map(e=>EA(e,t)),r=new iT(n);return new hT(e.path,r)}isEqual(e){return this===e}}class _A extends sA{constructor(e,t){super(e),this.pa=t}_toFieldTransform(e){const t=mA(this,e,!0),n=this.pa.map(e=>EA(e,t)),r=new aT(n);return new hT(e.path,r)}isEqual(e){return this===e}}class wA extends sA{constructor(e,t){super(e),this.Ia=t}_toFieldTransform(e){var t=new cT(e.serializer,eT(e.serializer,this.Ia));return new hT(e.path,t)}isEqual(e){return this===e}}function bA(e,i,s,t){const a=e.ya(1,i,s);SA("Data must be an object, but it was:",a,t);const o=[],c=Hb.empty();ub(t,(e,t)=>{var n=RA(i,e,s);t=ae(t);var r=a.da(n);if(t instanceof gA)o.push(n);else{const e=EA(t,r);null!=e&&(o.push(n),c.set(n,e))}});var n=new yb(o);return new lA(c,n,a.fieldTransforms)}function IA(e,t,n,r,i,s){const a=e.ya(1,t,n),o=[AA(t,r,n)],c=[i];if(s.length%2!=0)throw new q_(V_.INVALID_ARGUMENT,`Function ${t}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let p=0;p{var n=EA(t,r.ha(e));null!=n&&(i[e]=n)}),{mapValue:{fields:i}}}function kA(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof ew||e instanceof aA||e instanceof rA||e instanceof OS||e instanceof sA)}function SA(e,t,n){if(!kA(n)||("object"!=typeof(i=n)||null===i||Object.getPrototypeOf(i)!==Object.prototype&&null!==Object.getPrototypeOf(i))){var r=NS(n);throw"an object"===r?t._a(e+" a custom object"):t._a(e+" "+r)}var i}function AA(e,t,n){if((t=ae(t))instanceof iA)return t._internalPath;if("string"==typeof t)return RA(e,t);throw DA("Field path arguments must be of type string or ",e,!1,void 0,n)}const NA=new RegExp("[~\\*/\\[\\]]");function RA(t,n,r){if(0<=n.search(NA))throw DA(`Invalid field path (${n}). Paths must not contain '~', '*', '/', '[', or ']'`,t,!1,void 0,r);try{return new iA(...n.split("."))._internalPath}catch(e){throw DA(`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,t,!1,void 0,r)}}function DA(e,t,n,r,i){var s=r&&!r.isEmpty(),a=void 0!==i;let o=`Function ${t}() called with invalid data`;n&&(o+=" (via `toFirestore()`)"),o+=". ";let c="";return(s||a)&&(c+=" (found",s&&(c+=` in field ${r}`),a&&(c+=` in document ${i}`),c+=")"),new q_(V_.INVALID_ARGUMENT,o+e+c)}function PA(e,t){return e.some(e=>e.isEqual(t))}class xA{constructor(e,t,n,r,i){this._firestore=e,this._userDataWriter=t,this._key=n,this._document=r,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new OS(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){var e=new OA(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){var t=this._document.data.field(MA("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class OA extends xA{data(){return super.data()}}function MA(e,t){return"string"==typeof t?RA(e,t):(t instanceof iA?t:t._delegate)._internalPath}function LA(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new q_(V_.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class FA{}class UA extends FA{}function VA(e,t,...n){let r=[];t instanceof FA&&r.push(t),r=r.concat(n),function(e){var t=e.filter(e=>e instanceof BA).length,n=e.filter(e=>e instanceof qA).length;if(1e._parse(t)).filter(e=>0a.length)throw new q_(V_.INVALID_ARGUMENT,`Too many arguments provided to ${r}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);const o=[];for(let c=0;c, or >=) must be on the same field. But you have inequality filters on '${r.toString()}' and '${i.toString()}'`);var n=NI(e);null!==n&&YA(0,i,n)}const r=function(e,t){for(const n of e)for(const e of n.getFlattenedFilters())if(0<=t.indexOf(e.op))return e.op;return null}(e.filters,function(){switch(t.op){case"!=":return["!=","not-in"];case"array-contains-any":case"in":return["not-in"];case"not-in":return["array-contains-any","in","not-in","!="];default:return[]}}());if(null!==r)throw r===t.op?new q_(V_.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new q_(V_.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${r.toString()}' filters.`)}function YA(e,t,n){if(!n.isEqual(t))throw new q_(V_.INVALID_ARGUMENT,`Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '${t.toString()}' and so you must also use '${t.toString()}' as your first argument to orderBy(), but your first orderBy() is on field '${n.toString()}' instead.`)}class JA{convertValue(e,t="none"){switch(Pb(e)){case 0:return null;case 1:return e.booleanValue;case 2:return Tb(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(Eb(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 10:return this.convertObject(e.mapValue,t);default:throw F_()}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,n="none"){const r={};return ub(e,(e,t)=>{r[e]=this.convertValue(t,n)}),r}convertGeoPoint(e){return new aA(Tb(e.latitude),Tb(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":var n=kb(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(Sb(e));default:return null}}convertTimestamp(e){var t=Ib(e);return new ew(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=rw.fromString(e);U_(T0(n));const r=new Nb(n.get(1),n.get(3)),i=new aw(n.popFirst(5));return r.isEqual(t)||O_(`Document ${i} contains a document reference within a different database (${r.projectId}/${r.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}}function XA(e,t,n){return e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t}class ZA extends JA{constructor(e){super(),this.firestore=e}convertBytes(e){return new rA(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new OS(this.firestore,null,t)}}class eN{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class tN extends xA{constructor(e,t,n,r,i,s){super(e,t,n,r,s),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){var t=new nN(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){var n=this._document.data.field(MA("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class nN extends tN{data(e={}){return super.data(e)}}class rN{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new eN(r.hasPendingWrites,r.fromCache),this.query=n}get docs(){const t=[];return this.forEach(e=>t.push(e)),t}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(t,n){this._snapshot.docs.forEach(e=>{t.call(n,new nN(this._firestore,this._userDataWriter,e.key,e,new eN(this._snapshot.mutatedKeys.has(e.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){var t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new q_(V_.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(s,t){if(s._snapshot.oldDocs.isEmpty()){let n=0;return s._snapshot.docChanges.map(e=>{var t=new nN(s._firestore,s._userDataWriter,e.doc.key,e.doc,new eN(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);return e.doc,{type:"added",doc:t,oldIndex:-1,newIndex:n++}})}{let i=s._snapshot.oldDocs;return s._snapshot.docChanges.filter(e=>t||3!==e.type).map(e=>{var t=new nN(s._firestore,s._userDataWriter,e.doc.key,e.doc,new eN(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);let n=-1,r=-1;return 0!==e.type&&(n=i.indexOf(e.doc.key),i=i.delete(e.doc.key)),1!==e.type&&(i=i.add(e.doc),r=i.indexOf(e.doc.key)),{type:function(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return F_()}}(e.type),doc:t,oldIndex:n,newIndex:r}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function iN(e,t){return e instanceof tN&&t instanceof tN?e._firestore===t._firestore&&e._key.isEqual(t._key)&&(null===e._document?null===t._document:e._document.isEqual(t._document))&&e._converter===t._converter:e instanceof rN&&t instanceof rN&&e._firestore===t._firestore&&qS(e.query,t.query)&&e.metadata.isEqual(t.metadata)&&e._snapshot.isEqual(t._snapshot)}class sN extends JA{constructor(e){super(),this.firestore=e}convertBytes(e){return new rA(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new OS(this.firestore,null,t)}}function aN(t){t=RS(t,OS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return function(e,t){const n=new B_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await function(t){const n=e;return n.persistence.runTransaction("read document","readonly",e=>n.localDocuments.getDocument(e,t))}(t);i.isFoundDocument()?n.resolve(i):i.isNoDocument()?n.resolve(null):n.reject(new q_(V_.UNAVAILABLE,"Failed to get document from cache. (However, this document may exist on the server. Run again without setting 'source' in the GetOptions to attempt to retrieve the document from the server.)"))}catch(e){var r=vk(e,`Failed to get document '${t} from cache`);n.reject(r)}}(await mS(e),t,n)),n.promise}(e,t._key).then(e=>new tN(n,r,t._key,e,new eN(null!==e&&e.hasLocalMutations,!0),t.converter))}function oN(t){t=RS(t,MS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return function(e,t){const n=new B_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await _C(e,t,!0),s=new xk(t,i.ir),a=s.sc(i.documents),o=s.applyChanges(a,!1);n.resolve(o.snapshot)}catch(e){var r=vk(e,`Failed to execute query '${t} against cache`);n.reject(r)}}(await mS(e),t,n)),n.promise}(e,t._query).then(e=>new rN(n,r,t,e))}function cN(e,t,n){e=RS(e,OS);var r=RS(e.firestore,HS),i=XA(e.converter,t,n);return dN(r,[fA(pA(r),"setDoc",e._key,i,null!==e.converter,n).toMutation(e._key,pT.none())])}function lN(e,t,n,...r){e=RS(e,OS);var i=RS(e.firestore,HS),s=pA(i);let a;return a="string"==typeof(t=ae(t))||t instanceof iA?IA(s,"updateDoc",e._key,t,n,r):bA(s,"updateDoc",e._key,t),dN(i,[a.toMutation(e._key,pT.exists(!0))])}function uN(t,...n){var e;t=ae(t);let r={includeMetadataChanges:!1},i=0;"object"!=typeof n[i]||jS(n[i])||(r=n[i],i++);var s={includeMetadataChanges:r.includeMetadataChanges};if(jS(n[i])){const t=n[i];n[i]=null===(e=t.next)||void 0===e?void 0:e.bind(t),n[i+1]=null===(e=t.error)||void 0===e?void 0:e.bind(t),n[i+2]=null===(e=t.complete)||void 0===e?void 0:e.bind(t)}let a,o,c;if(t instanceof OS)o=RS(t.firestore,HS),c=SI(t._key.path),a={next:e=>{n[i]&&n[i](pN(o,t,e))},error:n[i+1],complete:n[i+2]};else{const l=RS(t,MS);o=RS(l.firestore,HS),c=l._query;const u=new sN(o);a={next:e=>{n[i]&&n[i](new rN(o,u,l,e))},error:n[i+1],complete:n[i+2]},LA(t._query)}return function(e,t,n,r){const i=new sS(r),s=new kk(t,i,n);return e.asyncQueue.enqueueAndForget(async()=>Tk(await _S(e),s)),()=>{i.Dc(),e.asyncQueue.enqueueAndForget(async()=>Ek(await _S(e),s))}}(QS(o),c,s,a)}function hN(e,t){return function(e,t){const n=new sS(t);return e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.ku.add(t),t.next()}(await _S(e),n)),()=>{n.Dc(),e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.ku.delete(t)}(await _S(e),n))}}(QS(e=RS(e,HS)),jS(t)?t:{next:t})}function dN(e,t){return function(e,t){const n=new B_;return e.asyncQueue.enqueueAndForget(async()=>Uk(await yS(e),t,n)),n.promise}(QS(e),t)}function pN(e,t,n){var r=n.docs.get(t._key),i=new sN(e);return new tN(e,i,t._key,r,new eN(n.hasPendingWrites,n.fromCache),t.converter)}const fN={maxAttempts:5};class gN{constructor(e,t){this._firestore=e,this._commitHandler=t,this._mutations=[],this._committed=!1,this._dataReader=pA(e)}set(e,t,n){this._verifyNotCommitted();const r=mN(e,this._firestore),i=XA(r.converter,t,n),s=fA(this._dataReader,"WriteBatch.set",r._key,i,null!==r.converter,n);return this._mutations.push(s.toMutation(r._key,pT.none())),this}update(e,t,n,...r){this._verifyNotCommitted();var i=mN(e,this._firestore);let s;return s="string"==typeof(t=ae(t))||t instanceof iA?IA(this._dataReader,"WriteBatch.update",i._key,t,n,r):bA(this._dataReader,"WriteBatch.update",i._key,t),this._mutations.push(s.toMutation(i._key,pT.exists(!0))),this}delete(e){this._verifyNotCommitted();var t=mN(e,this._firestore);return this._mutations=this._mutations.concat(new CT(t._key,pT.none())),this}commit(){return this._verifyNotCommitted(),this._committed=!0,0{if(!e||1!==e.length)return F_();const t=e[0];if(t.isFoundDocument())return new xA(this._firestore,r,t.key,t,n.converter);if(t.isNoDocument())return new xA(this._firestore,r,n._key,null,n.converter);throw F_()})}set(e,t,n){var r=mN(e,this._firestore),i=XA(r.converter,t,n),i=fA(this._dataReader,"Transaction.set",r._key,i,null!==r.converter,n);return this._transaction.set(r._key,i),this}update(e,t,n,...r){var i=mN(e,this._firestore),s="string"==typeof(t=ae(t))||t instanceof iA?IA(this._dataReader,"Transaction.update",i._key,t,n,r):bA(this._dataReader,"Transaction.update",i._key,t);return this._transaction.update(i._key,s),this}delete(e){var t=mN(e,this._firestore);return this._transaction.delete(t._key),this}}{constructor(e,t){super(e,t),this._firestore=e}get(e){const t=mN(e,this._firestore),n=new sN(this._firestore);return super.get(e).then(e=>new tN(this._firestore,n,t._key,e._document,new eN(!1,!1),t.converter))}}function yN(t,n,e){t=RS(t,HS);var r=Object.assign(Object.assign({},fN),e);return function(){if(r.maxAttempts<1)throw new q_(V_.INVALID_ARGUMENT,"Max attempts must be at least 1")}(),function(t,n,r){const i=new B_;return t.asyncQueue.enqueueAndForget(async()=>{var e=await fS(t).then(e=>e.datastore);new cS(t.asyncQueue,e,r,n,i).run()}),i.promise}(QS(t),e=>n(new vN(t,e)),r)}sR=Ye,R_=sR,We(new oe("firestore",(e,{instanceIdentifier:t,options:n})=>{const r=e.getProvider("app").getImmediate(),i=new HS(new K_(e.getProvider("auth-internal")),new Q_(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new q_(V_.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Nb(e.options.projectId,t)}(r,t),r);return n=Object.assign({useFetchStreams:!0},n),i._setSettings(n),i},"PUBLIC").setMultipleInstances(!0)),et(A_,"3.13.0",void 0),et(A_,"3.13.0","esm2017");function _N(e,t){if(void 0===t)return{merge:!1};if(void 0!==t.mergeFields&&void 0!==t.merge)throw new q_("invalid-argument",`Invalid options passed to function ${e}(): You cannot `+'specify both "merge" and "mergeFields".');return t}function wN(){if("undefined"==typeof Uint8Array)throw new q_("unimplemented","Uint8Arrays are not available in this environment.")}function bN(){if("undefined"==typeof atob)throw new q_("unimplemented","Blobs are unavailable in Firestore in this environment.")}class IN{constructor(e){this._delegate=e}static fromBase64String(e){return bN(),new IN(rA.fromBase64String(e))}static fromUint8Array(e){return wN(),new IN(rA.fromUint8Array(e))}toBase64(){return bN(),this._delegate.toBase64()}toUint8Array(){return wN(),this._delegate.toUint8Array()}isEqual(e){return this._delegate.isEqual(e._delegate)}toString(){return"Blob(base64: "+this.toBase64()+")"}}function TN(e){return function(e,t){if("object"!=typeof e||null===e)return;var n=e;for(const r of t)if(r in n&&"function"==typeof n[r])return 1;return}(e,["next","error","complete"])}class EN{enableIndexedDbPersistence(e,t){return function(e,t){nA(e=RS(e,HS));var n=QS(e);if(n._uninitializedComponentsProvider)throw new q_(V_.FAILED_PRECONDITION,"SDK cache is already specified.");M_("enableIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");var r=e._freezeSettings(),i=new rS;return JS(n,i,new tS(i,r.cacheSizeBytes,null==t?void 0:t.forceOwnership))}(e._delegate,{forceOwnership:t})}enableMultiTabIndexedDbPersistence(e){return function(e){nA(e=RS(e,HS));var t=QS(e);if(t._uninitializedComponentsProvider)throw new q_(V_.FAILED_PRECONDITION,"SDK cache is already specified.");M_("enableMultiTabIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.");var n=e._freezeSettings(),r=new rS;return JS(t,r,new nS(r,n.cacheSizeBytes))}(e._delegate)}clearIndexedDbPersistence(e){return function(e){if(e._initialized&&!e._terminated)throw new q_(V_.FAILED_PRECONDITION,"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.");const t=new B_;return e._queue.enqueueAndForgetEvenWhileRestricted(async()=>{try{await async function(e){if(!bw.D())return Promise.resolve();var t=e+"main";await bw.delete(t)}(cC(e._databaseId,e._persistenceKey)),t.resolve()}catch(e){t.reject(e)}}),t.promise}(e._delegate)}}class CN{constructor(e,t,n){this._delegate=t,this._persistenceProvider=n,this.INTERNAL={delete:()=>this.terminate()},e instanceof Nb||(this._appCompat=e)}get _databaseId(){return this._delegate._databaseId}settings(e){var t=this._delegate._getSettings();e.merge||t.host===e.host||M_("You are overriding the original host. If you did not intend to override your settings, use {merge: true}."),e.merge&&delete(e=Object.assign(Object.assign({},t),e)).merge,this._delegate._setSettings(e)}useEmulator(e,t,n={}){!function(n,e,t,r={}){var i;const s=(n=RS(n,xS))._getSettings(),a=`${e}:${t}`;if("firestore.googleapis.com"!==s.host&&s.host!==a&&M_("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),n._setSettings(Object.assign(Object.assign({},s),{host:a,ssl:!1})),r.mockUserToken){let e,t;if("string"==typeof r.mockUserToken)e=r.mockUserToken,t=N_.MOCK_USER;else{e=_(r.mockUserToken,null===(i=n._app)||void 0===i?void 0:i.options.projectId);const s=r.mockUserToken.sub||r.mockUserToken.user_id;if(!s)throw new q_(V_.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new N_(s)}n._authCredentials=new $_(new j_(e,t))}}(this._delegate,e,t,n)}enableNetwork(){return ZS(this._delegate)}disableNetwork(){return eA(this._delegate)}enablePersistence(e){let t=!1,n=!1;return e&&(t=!!e.synchronizeTabs,n=!!e.experimentalForceOwningTab,kS("synchronizeTabs",t,"experimentalForceOwningTab",n)),t?this._persistenceProvider.enableMultiTabIndexedDbPersistence(this):this._persistenceProvider.enableIndexedDbPersistence(this,n)}clearPersistence(){return this._persistenceProvider.clearIndexedDbPersistence(this)}terminate(){return this._appCompat&&(this._appCompat._removeServiceInstance("firestore-compat"),this._appCompat._removeServiceInstance("firestore")),this._delegate._delete()}waitForPendingWrites(){return XS(this._delegate)}onSnapshotsInSync(e){return hN(this._delegate,e)}get app(){if(!this._appCompat)throw new q_("failed-precondition","Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._appCompat}collection(e){try{return new VN(this,FS(this._delegate,e))}catch(e){throw DN(e,"collection()","Firestore.collection()")}}doc(e){try{return new RN(this,US(this._delegate,e))}catch(e){throw DN(e,"doc()","Firestore.doc()")}}collectionGroup(e){try{return new LN(this,function(e,t){if(e=RS(e,xS),CS("collectionGroup","collection id",t),0<=t.indexOf("/"))throw new q_(V_.INVALID_ARGUMENT,`Invalid collection ID '${t}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);return new MS(e,null,(t=t,new CI(rw.emptyPath(),t)))}(this._delegate,e))}catch(e){throw DN(e,"collectionGroup()","Firestore.collectionGroup()")}}runTransaction(t){return yN(this._delegate,e=>t(new SN(this,e)))}batch(){return QS(this._delegate),new AN(new gN(this._delegate,e=>dN(this._delegate,e)))}loadBundle(e){return t=this._delegate,e=e,n=QS(t=RS(t,HS)),r=new zS,IS(n,t._databaseId,e,r),r;var t,n,r}namedQuery(e){return tA(this._delegate,e).then(e=>e?new LN(this,e):null)}}class kN extends JA{constructor(e){super(),this.firestore=e}convertBytes(e){return new IN(new rA(e))}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return RN.forKey(t,this.firestore,null)}}class SN{constructor(e,t){this._firestore=e,this._delegate=t,this._userDataWriter=new kN(e)}get(e){const t=qN(e);return this._delegate.get(t).then(e=>new ON(this._firestore,new tN(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,t.converter)))}set(e,t,n){var r=qN(e);return n?(_N("Transaction.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=qN(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=qN(e);return this._delegate.delete(t),this}}class AN{constructor(e){this._delegate=e}set(e,t,n){var r=qN(e);return n?(_N("WriteBatch.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=qN(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=qN(e);return this._delegate.delete(t),this}commit(){return this._delegate.commit()}}class NN{constructor(e,t,n){this._firestore=e,this._userDataWriter=t,this._delegate=n}fromFirestore(e,t){var n=new nN(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,null);return this._delegate.fromFirestore(new MN(this._firestore,n),null!=t?t:{})}toFirestore(e,t){return t?this._delegate.toFirestore(e,t):this._delegate.toFirestore(e)}static getInstance(e,t){const n=NN.INSTANCES;let r=n.get(e);r||(r=new WeakMap,n.set(e,r));let i=r.get(t);return i||(i=new NN(e,new kN(e),t),r.set(t,i)),i}}NN.INSTANCES=new WeakMap;class RN{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new kN(e)}static forPath(e,t,n){if(e.length%2!=0)throw new q_("invalid-argument","Invalid document reference. Document references must have an even number of segments, but "+`${e.canonicalString()} has ${e.length}`);return new RN(t,new OS(t._delegate,n,new aw(e)))}static forKey(e,t,n){return new RN(t,new OS(t._delegate,n,e))}get id(){return this._delegate.id}get parent(){return new VN(this.firestore,this._delegate.parent)}get path(){return this._delegate.path}collection(e){try{return new VN(this.firestore,FS(this._delegate,e))}catch(e){throw DN(e,"collection()","DocumentReference.collection()")}}isEqual(e){return(e=ae(e))instanceof OS&&VS(this._delegate,e)}set(e,t){t=_N("DocumentReference.set",t);try{return t?cN(this._delegate,e,t):cN(this._delegate,e)}catch(e){throw DN(e,"setDoc()","DocumentReference.set()")}}update(e,t,...n){try{return 1===arguments.length?lN(this._delegate,e):lN(this._delegate,e,t,...n)}catch(e){throw DN(e,"updateDoc()","DocumentReference.update()")}}delete(){return dN(RS((e=this._delegate).firestore,HS),[new CT(e._key,pT.none())]);var e}onSnapshot(...e){var t=PN(e),n=xN(e,e=>new ON(this.firestore,new tN(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)));return uN(this._delegate,t,n)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?aN:"server"===(null==e?void 0:e.source)?function(t){t=RS(t,OS);const n=RS(t.firestore,HS);return wS(QS(n),t._key,{source:"server"}).then(e=>pN(n,t,e))}:function(t){t=RS(t,OS);const n=RS(t.firestore,HS);return wS(QS(n),t._key).then(e=>pN(n,t,e))})(this._delegate),t.then(e=>new ON(this.firestore,new tN(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)))}withConverter(e){return new RN(this.firestore,e?this._delegate.withConverter(NN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function DN(e,t,n){return e.message=e.message.replace(t,n),e}function PN(e){for(const t of e)if("object"==typeof t&&!TN(t))return t;return{}}function xN(e,t){var n;let r;return r=TN(e[0])?e[0]:TN(e[1])?e[1]:"function"==typeof e[0]?{next:e[0],error:e[1],complete:e[2]}:{next:e[1],error:e[2],complete:e[3]},{next:e=>{r.next&&r.next(t(e))},error:null===(n=r.error)||void 0===n?void 0:n.bind(r),complete:null===(n=r.complete)||void 0===n?void 0:n.bind(r)}}class ON{constructor(e,t){this._firestore=e,this._delegate=t}get ref(){return new RN(this._firestore,this._delegate.ref)}get id(){return this._delegate.id}get metadata(){return this._delegate.metadata}get exists(){return this._delegate.exists()}data(e){return this._delegate.data(e)}get(e,t){return this._delegate.get(e,t)}isEqual(e){return iN(this._delegate,e._delegate)}}class MN extends ON{data(e){var t=this._delegate.data(e);return void 0!==t||F_(),t}}class LN{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new kN(e)}where(e,t,n){try{return new LN(this.firestore,VA(this._delegate,(r=n,i=t,s=MA("where",e),qA._create(s,i,r))))}catch(e){throw DN(e,/(orderBy|where)\(\)/,"Query.$1()")}var r,i,s}orderBy(e,t){try{return new LN(this.firestore,VA(this._delegate,([n,r="asc"]=[e,t],i=r,s=MA("orderBy",n),jA._create(s,i))))}catch(e){throw DN(e,/(orderBy|where)\(\)/,"Query.$1()")}var n,r,i,s}limit(e){try{return new LN(this.firestore,VA(this._delegate,(DS("limit",t=e),zA._create("limit",t,"F"))))}catch(e){throw DN(e,"limit()","Query.limit()")}var t}limitToLast(e){try{return new LN(this.firestore,VA(this._delegate,(DS("limitToLast",t=e),zA._create("limitToLast",t,"L"))))}catch(e){throw DN(e,"limitToLast()","Query.limitToLast()")}var t}startAt(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return $A._create("startAt",e,!0)}(...e)))}catch(e){throw DN(e,"startAt()","Query.startAt()")}}startAfter(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return $A._create("startAfter",e,!1)}(...e)))}catch(e){throw DN(e,"startAfter()","Query.startAfter()")}}endBefore(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return KA._create("endBefore",e,!1)}(...e)))}catch(e){throw DN(e,"endBefore()","Query.endBefore()")}}endAt(...e){try{return new LN(this.firestore,VA(this._delegate,function(...e){return KA._create("endAt",e,!0)}(...e)))}catch(e){throw DN(e,"endAt()","Query.endAt()")}}isEqual(e){return qS(this._delegate,e._delegate)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?oN:"server"===(null==e?void 0:e.source)?function(t){t=RS(t,MS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return bS(e,t._query,{source:"server"}).then(e=>new rN(n,r,t,e))}:function(t){t=RS(t,MS);const n=RS(t.firestore,HS),e=QS(n),r=new sN(n);return LA(t._query),bS(e,t._query).then(e=>new rN(n,r,t,e))})(this._delegate),t.then(e=>new UN(this.firestore,new rN(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)))}onSnapshot(...e){var t=PN(e),n=xN(e,e=>new UN(this.firestore,new rN(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)));return uN(this._delegate,t,n)}withConverter(e){return new LN(this.firestore,e?this._delegate.withConverter(NN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}class FN{constructor(e,t){this._firestore=e,this._delegate=t}get type(){return this._delegate.type}get doc(){return new MN(this._firestore,this._delegate.doc)}get oldIndex(){return this._delegate.oldIndex}get newIndex(){return this._delegate.newIndex}}class UN{constructor(e,t){this._firestore=e,this._delegate=t}get query(){return new LN(this._firestore,this._delegate.query)}get metadata(){return this._delegate.metadata}get size(){return this._delegate.size}get empty(){return this._delegate.empty}get docs(){return this._delegate.docs.map(e=>new MN(this._firestore,e))}docChanges(e){return this._delegate.docChanges(e).map(e=>new FN(this._firestore,e))}forEach(t,n){this._delegate.forEach(e=>{t.call(n,new MN(this._firestore,e))})}isEqual(e){return iN(this._delegate,e._delegate)}}class VN extends LN{constructor(e,t){super(e,t),this.firestore=e,this._delegate=t}get id(){return this._delegate.id}get path(){return this._delegate.path}get parent(){var e=this._delegate.parent;return e?new RN(this.firestore,e):null}doc(e){try{return void 0===e?new RN(this.firestore,US(this._delegate)):new RN(this.firestore,US(this._delegate,e))}catch(e){throw DN(e,"doc()","CollectionReference.doc()")}}add(e){return function(e,t){const n=RS(e.firestore,HS),r=US(e),i=XA(e.converter,t);return dN(n,[fA(pA(e.firestore),"addDoc",r._key,i,null!==e.converter,{}).toMutation(r._key,pT.exists(!1))]).then(()=>r)}(this._delegate,e).then(e=>new RN(this.firestore,e))}isEqual(e){return VS(this._delegate,e._delegate)}withConverter(e){return new VN(this.firestore,e?this._delegate.withConverter(NN.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function qN(e){return RS(e,OS)}const BN={Firestore:CN,GeoPoint:aA,Timestamp:ew,Blob:IN,Transaction:SN,WriteBatch:AN,DocumentReference:RN,DocumentSnapshot:ON,Query:LN,QueryDocumentSnapshot:MN,QuerySnapshot:UN,CollectionReference:VN,FieldPath:class Y1{constructor(...e){this._delegate=new iA(...e)}static documentId(){return new Y1(sw.keyField().canonicalString())}isEqual(e){return(e=ae(e))instanceof iA&&this._delegate._internalPath.isEqual(e._internalPath)}},FieldValue:class J1{constructor(e){this._delegate=e}static serverTimestamp(){const e=new vA("serverTimestamp");return e._methodName="FieldValue.serverTimestamp",new J1(e)}static delete(){const e=new gA("deleteField");return e._methodName="FieldValue.delete",new J1(e)}static arrayUnion(...e){const t=function(...e){return new yA("arrayUnion",e)}(...e);return t._methodName="FieldValue.arrayUnion",new J1(t)}static arrayRemove(...e){const t=function(...e){return new _A("arrayRemove",e)}(...e);return t._methodName="FieldValue.arrayRemove",new J1(t)}static increment(e){const t=new wA("increment",e);return t._methodName="FieldValue.increment",new J1(t)}isEqual(e){return this._delegate.isEqual(e._delegate)}},setLogLevel:function(e){e=e,D_.setLogLevel(e)},CACHE_SIZE_UNLIMITED:-1};$S=wt,KS=(e,t)=>new CN(e,t,new EN),$S.INTERNAL.registerComponent(new oe("firestore-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("firestore").getImmediate();return KS(t,n)},"PUBLIC").setServiceProps(Object.assign({},BN))),$S.registerVersion("@firebase/firestore-compat","0.3.12");const jN="type.googleapis.com/google.protobuf.Int64Value",zN="type.googleapis.com/google.protobuf.UInt64Value";function $N(e,t){const n={};for(const r in e)e.hasOwnProperty(r)&&(n[r]=t(e[r]));return n}function KN(e){if(null==e)return e;if(e["@type"])switch(e["@type"]){case jN:case zN:var t=Number(e.value);if(isNaN(t))throw new Error("Data cannot be decoded from JSON: "+e);return t;default:throw new Error("Data cannot be decoded from JSON: "+e)}return Array.isArray(e)?e.map(e=>KN(e)):"function"==typeof e||"object"==typeof e?$N(e,e=>KN(e)):e}const WN="functions",GN={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class HN extends R{constructor(e,t,n){super(`${WN}/${e}`,t||""),this.details=n}}function QN(e,t){let n=function(e){if(200<=e&&e<300)return"ok";switch(e){case 0:return"internal";case 400:return"invalid-argument";case 401:return"unauthenticated";case 403:return"permission-denied";case 404:return"not-found";case 409:return"aborted";case 429:return"resource-exhausted";case 499:return"cancelled";case 500:return"internal";case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline-exceeded"}return"unknown"}(e),r=n,i=void 0;try{var s=t&&t.error;if(s){const e=s.status;if("string"==typeof e){if(!GN[e])return new HN("internal","internal");n=GN[e],r=e}var a=s.message;"string"==typeof a&&(r=a),i=s.details,void 0!==i&&(i=KN(i))}}catch(e){}return"ok"===n?null:new HN(n,r,i)}class YN{constructor(e,t,n){this.auth=null,this.messaging=null,this.appCheck=null,this.auth=e.getImmediate({optional:!0}),this.messaging=t.getImmediate({optional:!0}),this.auth||e.get().then(e=>this.auth=e,()=>{}),this.messaging||t.get().then(e=>this.messaging=e,()=>{}),this.appCheck||n.get().then(e=>this.appCheck=e,()=>{})}async getAuthToken(){if(this.auth)try{var e=await this.auth.getToken();return null==e?void 0:e.accessToken}catch(e){return}}async getMessagingToken(){if(this.messaging&&"Notification"in self&&"granted"===Notification.permission)try{return this.messaging.getToken()}catch(e){return}}async getAppCheckToken(e){if(this.appCheck){var t=e?await this.appCheck.getLimitedUseToken():await this.appCheck.getToken();return t.error?null:t.token}return null}async getContext(e){return{authToken:await this.getAuthToken(),messagingToken:await this.getMessagingToken(),appCheckToken:await this.getAppCheckToken(e)}}}const JN="us-central1";class XN{constructor(e,t,n,r,i=JN,s){this.app=e,this.fetchImpl=s,this.emulatorOrigin=null,this.contextProvider=new YN(t,n,r),this.cancelAllRequests=new Promise(e=>{this.deleteService=()=>Promise.resolve(e())});try{var a=new URL(i);this.customDomain=a.origin,this.region=JN}catch(e){this.customDomain=null,this.region=i}}_delete(){return this.deleteService()}_url(e){var t=this.app.options.projectId;return null===this.emulatorOrigin?null!==this.customDomain?`${this.customDomain}/${e}`:`https://${this.region}-${t}.cloudfunctions.net/${e}`:`${this.emulatorOrigin}/${t}/${this.region}/${e}`}}function ZN(i,s,a){return e=>{return t=e,n=a||{},r=(e=i)._url(s),eR(e,r,t,n);var t,n,r}}async function eR(e,t,n,r){var i={data:n=function t(e){if(null==e)return null;if("number"==typeof(e=e instanceof Number?e.valueOf():e)&&isFinite(e))return e;if(!0===e||!1===e)return e;if("[object String]"===Object.prototype.toString.call(e))return e;if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(e=>t(e));if("function"==typeof e||"object"==typeof e)return $N(e,e=>t(e));throw new Error("Data cannot be encoded in JSON: "+e)}(n)};const s={};var a=await e.contextProvider.getContext(r.limitedUseAppCheckTokens);a.authToken&&(s.Authorization="Bearer "+a.authToken),a.messagingToken&&(s["Firebase-Instance-ID-Token"]=a.messagingToken),null!==a.appCheckToken&&(s["X-Firebase-AppCheck"]=a.appCheckToken);const o=function(n){let r=null;return{promise:new Promise((e,t)=>{r=setTimeout(()=>{t(new HN("deadline-exceeded","deadline-exceeded"))},n)}),cancel:()=>{r&&clearTimeout(r)}}}(r.timeout||7e4);a=await Promise.race([async function(e,t,n,r){n["Content-Type"]="application/json";let i;try{i=await r(e,{method:"POST",body:JSON.stringify(t),headers:n})}catch(e){return{status:0,json:null}}let s=null;try{s=await i.json()}catch(e){}return{status:i.status,json:s}}(t,i,s,e.fetchImpl),o.promise,e.cancelAllRequests]);if(o.cancel(),!a)throw new HN("cancelled","Firebase Functions instance was deleted.");i=QN(a.status,a.json);if(i)throw i;if(!a.json)throw new HN("internal","Response is not valid JSON object.");let c=a.json.data;if(void 0===c&&(c=a.json.result),void 0===c)throw new HN("internal","Response is missing data field.");return{data:KN(c)}}const tR="@firebase/functions";function nR(e,t,n){ae(e).emulatorOrigin=`http://${t}:${n}`}function rR(e,t,n){return r=ae(e),i=t,s=n,e=>eR(r,i,e,s||{});var r,i,s}WS=fetch.bind(self),We(new oe(WN,(e,{instanceIdentifier:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("messaging-internal"),s=e.getProvider("app-check-internal");return new XN(n,r,i,s,t,WS)},"PUBLIC").setMultipleInstances(!0)),et(tR,"0.10.0",GS),et(tR,"0.10.0","esm2017");var iR,sR,aR,oR,cR;class lR{constructor(e,t){this.app=e,this._delegate=t,this._region=this._delegate.region,this._customDomain=this._delegate.customDomain}httpsCallable(e,t){return ZN(ae(this._delegate),e,t)}httpsCallableFromURL(e,t){return rR(this._delegate,e,t)}useFunctionsEmulator(e){var t=e.match("[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?");if(null==t)throw new R("functions","No origin provided to useFunctionsEmulator()");if(null==t[2])throw new R("functions","Port missing in origin provided to useFunctionsEmulator()");return nR(this._delegate,t[1],Number(t[2]))}useEmulator(e,t){return nR(this._delegate,e,t)}}const uR="us-central1",hR=(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("functions").getImmediate({identifier:null!=t?t:uR});return new lR(n,r)};iR={Functions:lR},wt.INTERNAL.registerComponent(new oe("functions-compat",hR,"PUBLIC").setServiceProps(iR).setMultipleInstances(!0)),wt.registerVersion("@firebase/functions-compat","0.3.5");const dR="/firebase-messaging-sw.js",pR="/firebase-cloud-messaging-push-scope",fR="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",gR="https://fcmregistrations.googleapis.com/v1",mR="google.c.a.c_id",vR="google.c.a.e";function yR(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(sR=Px=Px||{})[sR.DATA_MESSAGE=1]="DATA_MESSAGE",sR[sR.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(il=aR=aR||{}).PUSH_RECEIVED="push-received",il.NOTIFICATION_CLICKED="notification-clicked";const _R="fcm_token_details_db",wR="fcm_token_object_Store";async function bR(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(_R))return null}let l=null;const e=await Re(_R,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(wR)){const o=r.objectStore(wR);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:yR(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:yR(s.auth),p256dh:yR(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:yR(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:yR(a.auth),p256dh:yR(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:yR(a.vapidKey)}}))}}});return e.close(),await De(_R),await De("fcm_vapid_details_db"),await De("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0{0===t&&e.createObjectStore(ER)}}),CR}async function SR(e){var t=NR(e);const n=await kR();t=await n.transaction(ER).objectStore(ER).get(t);if(t)return t;t=await bR(e.appConfig.senderId);return t?(await AR(e,t),t):void 0}async function AR(e,t){var n=NR(e);const r=await kR(),i=r.transaction(ER,"readwrite");return await i.objectStore(ER).put(t,n),await i.done,t}function NR({appConfig:e}){return e.appId}const RR=new D("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function DR(e,t){var n={method:"DELETE",headers:await xR(e)};try{const s=await fetch(`${PR(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw RR.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw RR.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function PR({projectId:e}){return`${gR}/projects/${e}/registrations`}async function xR({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function OR({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==fR&&(i.web.applicationPubKey=r),i}const MR=6048e5;async function LR(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i=c.createTime+MR?async function(t,e){try{var n=await async function(e,t){var n=await xR(e),r=OR(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${PR(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw RR.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw RR.create("token-update-failed",{errorInfo:r})}if(!i.token)throw RR.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await AR(t.firebaseDependencies,r),n}catch(e){throw await FR(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await DR(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return UR(e.firebaseDependencies,o)}return UR(e.firebaseDependencies,o)}async function FR(e){var t=await SR(e.firebaseDependencies);t&&(await DR(e.firebaseDependencies,t.token),await async function(e){var t=NR(e);const n=await kR(),r=n.transaction(ER,"readwrite");await r.objectStore(ER).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function UR(e,t){var n={token:await async function(e,t){var n=await xR(e),r=OR(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(PR(e.appConfig),r);i=await s.json()}catch(e){throw RR.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw RR.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw RR.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await AR(e,n),n.token}function VR(e){var t,n,r,i,s,a={from:e.from,collapseKey:e.collapse_key,messageId:e.fcmMessageId};return r=a,(n=e).notification&&(r.notification={},(t=n.notification.title)&&(r.notification.title=t),(t=n.notification.body)&&(r.notification.body=t),(t=n.notification.image)&&(r.notification.image=t),(t=n.notification.icon)&&(r.notification.icon=t)),n=a,(r=e).data&&(n.data=r.data),r=a,((e=e).fcmOptions||null!==(i=e.notification)&&void 0!==i&&i.click_action)&&(r.fcmOptions={},(s=null!==(i=null===(i=e.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=e.notification)||void 0===s?void 0:s.click_action)&&(r.fcmOptions.link=s),(s=null===(s=e.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(r.fcmOptions.analyticsLabel=s)),a}function qR(e,t){const n=[];for(let r=0;r{})}catch(e){throw RR.create("failed-service-worker-registration",{browserErrorMessage:null==e?void 0:e.message})}}async function $R(e,t){if(!navigator)throw RR.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw RR.create("permission-blocked");var n,r;return n=e,await((r=null==t?void 0:t.vapidKey)?n.vapidKey=r:n.vapidKey||(n.vapidKey=fR)),await async function(e,t){if(t||e.swRegistration||await zR(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw RR.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),LR(e)}async function KR(e,t,n){var r=function(e){switch(e){case aR.NOTIFICATION_CLICKED:return"notification_open";case aR.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);const i=await e.firebaseDependencies.analyticsProvider.get();i.logEvent(r,{message_id:n[mR],message_name:n["google.c.a.c_l"],message_time:n["google.c.a.ts"],message_device_time:Math.floor(Date.now()/1e3)})}async function WR(e,t){var n,r=t.data;r.isFirebaseMessaging&&(e.onMessageHandler&&r.messageType===aR.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(VR(r)):e.onMessageHandler.next(VR(r))),n=r.data,"object"==typeof(t=n)&&t&&mR in t&&"1"===n[vR]&&await KR(e,r.messageType,n))}const GR="@firebase/messaging",HR=e=>{const t=new jR(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",e=>WR(t,e)),t},QR=e=>{const t=e.getProvider("messaging").getImmediate();return{getToken:e=>$R(t,e)}};function YR(e){return async function(e){if(!navigator)throw RR.create("only-available-in-window");return e.swRegistration||await zR(e),FR(e)}(e=ae(e))}function JR(e,t){return function(e,t){if(!navigator)throw RR.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=ae(e),t)}We(new oe("messaging",HR,"PUBLIC")),We(new oe("messaging-internal",QR,"PRIVATE")),et(GR,"0.12.4"),et(GR,"0.12.4","esm2017");const XR="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",ZR="https://fcmregistrations.googleapis.com/v1",eD="FCM_MSG",tD="google.c.a.c_id",nD=3,rD=1;function iD(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(il=oR=oR||{})[il.DATA_MESSAGE=1]="DATA_MESSAGE",il[il.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(il=cR=cR||{}).PUSH_RECEIVED="push-received",il.NOTIFICATION_CLICKED="notification-clicked";const sD="fcm_token_details_db",aD="fcm_token_object_Store";async function oD(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(sD))return null}let l=null;const e=await Re(sD,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(aD)){const o=r.objectStore(aD);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:iD(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:iD(s.auth),p256dh:iD(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:iD(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:iD(a.auth),p256dh:iD(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:iD(a.vapidKey)}}))}}});return e.close(),await De(sD),await De("fcm_vapid_details_db"),await De("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0{0===t&&e.createObjectStore(uD)}}),hD}async function pD(e){var t=gD(e);const n=await dD();t=await n.transaction(uD).objectStore(uD).get(t);if(t)return t;t=await oD(e.appConfig.senderId);return t?(await fD(e,t),t):void 0}async function fD(e,t){var n=gD(e);const r=await dD(),i=r.transaction(uD,"readwrite");return await i.objectStore(uD).put(t,n),await i.done,t}function gD({appConfig:e}){return e.appId}const mD=new D("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function vD(e,t){var n={method:"DELETE",headers:await _D(e)};try{const s=await fetch(`${yD(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw mD.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw mD.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function yD({projectId:e}){return`${ZR}/projects/${e}/registrations`}async function _D({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function wD({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==XR&&(i.web.applicationPubKey=r),i}async function bD(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i=c.createTime+6048e5?async function(t,e){try{var n=await async function(e,t){var n=await _D(e),r=wD(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${yD(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw mD.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw mD.create("token-update-failed",{errorInfo:r})}if(!i.token)throw mD.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await fD(t.firebaseDependencies,r),n}catch(e){throw await ID(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await vD(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return TD(e.firebaseDependencies,o)}return TD(e.firebaseDependencies,o)}async function ID(e){var t=await pD(e.firebaseDependencies);t&&(await vD(e.firebaseDependencies,t.token),await async function(e){var t=gD(e);const n=await dD(),r=n.transaction(uD,"readwrite");await r.objectStore(uD).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function TD(e,t){var n={token:await async function(e,t){var n=await _D(e),r=wD(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(yD(e.appConfig),r);i=await s.json()}catch(e){throw mD.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw mD.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw mD.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await fD(e,n),n.token}async function ED(e,t){var n=function(e,t){var n;const r={};e.from&&(r.project_number=e.from);e.fcmMessageId&&(r.message_id=e.fcmMessageId);r.instance_id=t,e.notification?r.message_type=oR.DISPLAY_NOTIFICATION.toString():r.message_type=oR.DATA_MESSAGE.toString();r.sdk_platform=nD.toString(),r.package_name=self.origin.replace(/(^\w+:|^)\/\//,""),e.collapse_key&&(r.collapse_key=e.collapse_key);r.event=rD.toString(),null!==(n=e.fcmOptions)&&void 0!==n&&n.analytics_label&&(r.analytics_label=null===(n=e.fcmOptions)||void 0===n?void 0:n.analytics_label);return r}(t,await e.firebaseDependencies.installations.getId());!function(e,t){const n={};n.event_time_ms=Math.floor(Date.now()).toString(),n.source_extension_json_proto3=JSON.stringify(t),e.logEvents.push(n)}(e,n)}function CD(e,t){const n=[];for(let r=0;r"visible"===e.visibilityState&&!e.url.startsWith("chrome-extension://")))return function(e,t){t.isFirebaseMessaging=!0,t.messageType=cR.PUSH_RECEIVED;for(const n of e)n.postMessage(t)}(o,n);n.notification&&await function(e){var t=e["actions"],n=Notification["maxActions"];t&&n&&t.length>n&&console.warn(`This browser only supports ${n} actions. The remaining actions will not be displayed.`);return self.registration.showNotification(null!==(n=e.title)&&void 0!==n?n:"",e)}(function(e){const t=Object.assign({},e.notification);return t.data={[eD]:e},t}(n)),t&&t.onBackgroundMessageHandler&&(a={from:(r=n).from,collapseKey:r.collapse_key,messageId:r.fcmMessageId},o=a,(e=r).notification&&(o.notification={},(n=e.notification.title)&&(o.notification.title=n),(n=e.notification.body)&&(o.notification.body=n),(n=e.notification.image)&&(o.notification.image=n),(n=e.notification.icon)&&(o.notification.icon=n)),e=a,(o=r).data&&(e.data=o.data),o=a,((r=r).fcmOptions||null!==(i=r.notification)&&void 0!==i&&i.click_action)&&(o.fcmOptions={},(s=null!==(i=null===(i=r.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=r.notification)||void 0===s?void 0:s.click_action)&&(o.fcmOptions.link=s),(s=null===(s=r.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(o.fcmOptions.analyticsLabel=s)),a=a,"function"==typeof t.onBackgroundMessageHandler?await t.onBackgroundMessageHandler(a):t.onBackgroundMessageHandler.next(a))}}async function SD(e){const t=null===(s=null===(i=e.notification)||void 0===i?void 0:i.data)||void 0===s?void 0:s[eD];if(t&&!e.action){e.stopImmediatePropagation(),e.notification.close();var n=function(e){var t;var n=null!==(t=null===(t=e.fcmOptions)||void 0===t?void 0:t.link)&&void 0!==t?t:null===(n=e.notification)||void 0===n?void 0:n.click_action;if(n)return n;return function(e){return"object"==typeof e&&e&&tD in e}(e.data)?self.location.origin:null}(t);if(n){var r,i=new URL(n,self.location.href),s=new URL(self.location.origin);if(i.host===s.host){let e=await async function(e){var t=await AD();for(const r of t){var n=new URL(r.url,self.location.href);if(e.host===n.host)return r}return null}(i);if(e?e=await e.focus():(e=await self.clients.openWindow(n),r=3e3,await new Promise(e=>{setTimeout(e,r)})),e)return t.messageType=cR.NOTIFICATION_CLICKED,t.isFirebaseMessaging=!0,e.postMessage(t)}}}}function AD(){return self.clients.matchAll({type:"window",includeUncontrolled:!0})}function ND(e){return mD.create("missing-app-config-values",{valueName:e})}CD("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),CD("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class RD{constructor(e,t,n){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;var r=function(e){if(!e||!e.options)throw ND("App Configuration Object");if(!e.name)throw ND("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw ND(n);return{appName:e.name,projectId:t.projectId,apiKey:t.apiKey,appId:t.appId,senderId:t.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:r,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}const DD=e=>{const t=new RD(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return self.addEventListener("push",e=>{e.waitUntil(kD(e,t))}),self.addEventListener("pushsubscriptionchange",e=>{e.waitUntil(async function(e,t){var n;(n=e["newSubscription"])?(n=await pD(t.firebaseDependencies),await ID(t),t.vapidKey=null!==(n=null===(n=null==n?void 0:n.subscriptionOptions)||void 0===n?void 0:n.vapidKey)&&void 0!==n?n:XR,await bD(t)):await ID(t)}(e,t))}),self.addEventListener("notificationclick",e=>{e.waitUntil(SD(e))}),t};function PD(e,t){return function(e,t){if(void 0!==self.document)throw mD.create("only-available-in-sw");return e.onBackgroundMessageHandler=t,()=>{e.onBackgroundMessageHandler=null}}(e=ae(e),t)}We(new oe("messaging-sw",DD,"PUBLIC"));var xD,OD,MD,LD;class FD{constructor(e,t){this.app=e,this._delegate=t,this.app=e,this._delegate=t}async getToken(e){return async function(e,t){return $R(e=ae(e),t)}(this._delegate,e)}async deleteToken(){return YR(this._delegate)}onMessage(e){return JR(this._delegate,e)}onBackgroundMessage(e){return PD(this._delegate,e)}}const UD=e=>self&&"ServiceWorkerGlobalScope"in self?new FD(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-sw").getImmediate()):new FD(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging").getImmediate()),VD={isSupported:function(){return self&&"ServiceWorkerGlobalScope"in self?S()&&"PushManager"in self&&"Notification"in self&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey"):"undefined"!=typeof window&&S()&&N()&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")}};wt.INTERNAL.registerComponent(new oe("messaging-compat",UD,"PUBLIC").setServiceProps(VD)),wt.registerVersion("@firebase/messaging-compat","0.2.4");const qD="firebasestorage.googleapis.com",BD="storageBucket";class jD extends R{constructor(e,t,n=0){super(zD(e),`Firebase Storage: ${t} (${zD(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,jD.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return zD(e)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(e){this.customData.serverResponse=e,this.customData.serverResponse?this.message=`${this._baseMessage}\n${this.customData.serverResponse}`:this.message=this._baseMessage}}function zD(e){return"storage/"+e}function $D(){return new jD(xD.UNKNOWN,"An unknown error occurred, please check the error payload for server response.")}function KD(){return new jD(xD.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function WD(){return new jD(xD.CANCELED,"User canceled the upload/download.")}function GD(){return new jD(xD.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function HD(e){return new jD(xD.INVALID_ARGUMENT,e)}function QD(){return new jD(xD.APP_DELETED,"The Firebase app was deleted.")}function YD(e){return new jD(xD.INVALID_ROOT_OPERATION,"The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}function JD(e,t){return new jD(xD.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function XD(e){throw new jD(xD.INTERNAL_ERROR,"Internal error: "+e)}(It=xD=xD||{}).UNKNOWN="unknown",It.OBJECT_NOT_FOUND="object-not-found",It.BUCKET_NOT_FOUND="bucket-not-found",It.PROJECT_NOT_FOUND="project-not-found",It.QUOTA_EXCEEDED="quota-exceeded",It.UNAUTHENTICATED="unauthenticated",It.UNAUTHORIZED="unauthorized",It.UNAUTHORIZED_APP="unauthorized-app",It.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",It.INVALID_CHECKSUM="invalid-checksum",It.CANCELED="canceled",It.INVALID_EVENT_NAME="invalid-event-name",It.INVALID_URL="invalid-url",It.INVALID_DEFAULT_BUCKET="invalid-default-bucket",It.NO_DEFAULT_BUCKET="no-default-bucket",It.CANNOT_SLICE_BLOB="cannot-slice-blob",It.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",It.NO_DOWNLOAD_URL="no-download-url",It.INVALID_ARGUMENT="invalid-argument",It.INVALID_ARGUMENT_COUNT="invalid-argument-count",It.APP_DELETED="app-deleted",It.INVALID_ROOT_OPERATION="invalid-root-operation",It.INVALID_FORMAT="invalid-format",It.INTERNAL_ERROR="internal-error",It.UNSUPPORTED_ENVIRONMENT="unsupported-environment";class ZD{constructor(e,t){this.bucket=e,this.path_=t}get path(){return this.path_}get isRoot(){return 0===this.path.length}fullServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o/"+e(this.path)}bucketOnlyServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o"}static makeFromBucketSpec(t,e){let n;try{n=ZD.makeFromUrl(t,e)}catch(e){return new ZD(t,"")}if(""===n.path)return n;throw t=t,new jD(xD.INVALID_DEFAULT_BUCKET,"Invalid default bucket '"+t+"'.")}static makeFromUrl(e,t){let n=null;var r="([A-Za-z0-9.\\-_]+)";var i=new RegExp("^gs://"+r+"(/(.*))?$","i");function s(e){e.path_=decodeURIComponent(e.path)}var a=t.replace(/[.]/g,"\\."),o=new RegExp(`^https?://${a}/v[A-Za-z0-9_]+/b/${r}/o(/([^?#]*).*)?$`,"i"),a=t===qD?"(?:storage.googleapis.com|storage.cloud.google.com)":t,c=[{regex:i,indices:{bucket:1,path:3},postModify:function(e){"/"===e.path.charAt(e.path.length-1)&&(e.path_=e.path_.slice(0,-1))}},{regex:o,indices:{bucket:1,path:3},postModify:s},{regex:new RegExp(`^https?://${a}/${r}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:s}];for(let h=0;h{this.resolve_=e,this.reject_=t,this.start_()})}start_(){var e=(n,e)=>{if(e)n(!1,new lP(!1,null,!0));else{const r=this.connectionFactory_();this.pendingConnection_=r;const i=e=>{var t=e.loaded,n=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,n)};null!==this.progressCallback_&&r.addUploadProgressListener(i),r.send(this.url_,this.method_,this.body_,this.headers_).then(()=>{null!==this.progressCallback_&&r.removeUploadProgressListener(i),this.pendingConnection_=null;var e=r.getErrorCode()===OD.NO_ERROR,t=r.getStatus();!e||oP(t,this.additionalRetryCodes_)&&this.retry?(e=r.getErrorCode()===OD.ABORT,n(!1,new lP(!1,null,e))):(t=-1!==this.successCodes_.indexOf(t),n(!0,new lP(t,r)))})}},t=(e,t)=>{const n=this.resolve_,r=this.reject_,i=t.connection;if(t.wasSuccessCode)try{var s=this.callback_(i,i.getResponse());void 0!==s?n(s):n()}catch(e){r(e)}else if(null!==i){const o=$D();o.serverResponse=i.getErrorText(),this.errorCallback_?r(this.errorCallback_(i,o)):r(o)}else{var a;t.canceled?(a=(this.appDelete_?QD:WD)(),r(a)):(a=KD(),r(a))}};this.canceled_?t(0,new lP(!1,null,!0)):this.backoffId_=function(t,n,e){let r=1,i=null,s=null,a=!1,o=0;function c(){return 2===o}let l=!1;function u(...e){l||(l=!0,n.apply(null,e))}function h(e){i=setTimeout(()=>{i=null,t(p,c())},e)}function d(){s&&clearTimeout(s)}function p(t,...n){if(l)d();else{if(t)return d(),void u.call(null,t,...n);if(c()||a)return d(),void u.call(null,t,...n);r<64&&(r*=2);let e;e=1===o?(o=2,0):1e3*(r+Math.random()),h(e)}}let f=!1;function g(e){f||(f=!0,d(),l||(null!==i?(e||(o=2),clearTimeout(i),h(0)):e||(o=1)))}return h(0),s=setTimeout(()=>{g(a=!0)},e),g}(e,t,this.timeout_)}getPromise(){return this.promise_}cancel(e){this.canceled_=!0,this.appDelete_=e||!1,null!==this.backoffId_&&(0,this.backoffId_)(!1),null!==this.pendingConnection_&&this.pendingConnection_.abort()}}class lP{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function uP(...t){const n="undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0;if(void 0!==n){const r=new n;for(let e=0;e>6,128|63&e):55296==(64512&e)?s>18,128|e>>12&63,128|e>>6&63,128|63&e)):n.push(239,191,189):56320==(64512&e)?n.push(239,191,189):n.push(224|e>>12,128|e>>6&63,128|63&e)}return new Uint8Array(n)}function mP(t,e){switch(t){case dP.BASE64:var n=-1!==e.indexOf("-"),r=-1!==e.indexOf("_");if(n||r)throw JD(t,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break;case dP.BASE64URL:r=-1!==e.indexOf("+"),n=-1!==e.indexOf("/");if(r||n)throw JD(t,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");e=e.replace(/-/g,"+").replace(/_/g,"/")}let i;try{i=hP(e)}catch(e){if(e.message.includes("polyfill"))throw e;throw JD(t,"Invalid character found")}const s=new Uint8Array(i.length);for(let a=0;a][;base64],");const i=r[1]||null;null!=i&&(this.base64=(t=i,n=";base64",t.length>=n.length&&t.substring(t.length-n.length)===n),this.contentType=this.base64?i.substring(0,i.length-";base64".length):i),this.rest=e.substring(e.indexOf(",")+1)}}class yP{constructor(e,t){let n=0,r="";nP(e)?(this.data_=e,n=e.size,r=e.type):e instanceof ArrayBuffer?(t?this.data_=new Uint8Array(e):(this.data_=new Uint8Array(e.byteLength),this.data_.set(new Uint8Array(e))),n=this.data_.length):e instanceof Uint8Array&&(t?this.data_=e:(this.data_=new Uint8Array(e.length),this.data_.set(e)),n=e.length),this.size_=n,this.type_=r}size(){return this.size_}type(){return this.type_}slice(e,t){if(nP(this.data_)){var n=this.data_,n=(i=e,s=t,(r=n).webkitSlice?r.webkitSlice(i,s):r.mozSlice?r.mozSlice(i,s):r.slice?r.slice(i,s):null);return null===n?null:new yP(n)}var r,i,s,n=new Uint8Array(this.data_.buffer,e,t-e);return new yP(n,!0)}static getBlob(...e){if(rP()){var t=e.map(e=>e instanceof yP?e.data_:e);return new yP(uP.apply(null,t))}{const r=e.map(e=>tP(e)?fP(dP.RAW,e).data:e.data_);let t=0;r.forEach(e=>{t+=e.byteLength});const i=new Uint8Array(t);let n=0;return r.forEach(e=>{for(let t=0;t{var t=r.bucket,n=r.fullPath;return sP("/b/"+a(t)+"/o/"+a(n),i,s)+aP({alt:"media",token:e})})[0]}(n,t,r.host,r._protocol)}}function MP(i){return function(e,t){let n;var r;return n=401===e.getStatus()?e.getErrorText().includes("Firebase App Check token is invalid")?new jD(xD.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project."):new jD(xD.UNAUTHENTICATED,"User is not authenticated, please authenticate using Firebase Authentication and try again."):402===e.getStatus()?(r=i.bucket,new jD(xD.QUOTA_EXCEEDED,"Quota for bucket '"+r+"' exceeded, please view quota on https://firebase.google.com/pricing/.")):403===e.getStatus()?(r=i.path,new jD(xD.UNAUTHORIZED,"User does not have permission to access '"+r+"'.")):t,n.status=e.getStatus(),n.serverResponse=t.serverResponse,n}}function LP(r){const i=MP(r);return function(e,t){let n=i(e,t);return 404===e.getStatus()&&(n=(e=r.path,new jD(xD.OBJECT_NOT_FOUND,"Object '"+e+"' does not exist."))),n.serverResponse=t.serverResponse,n}}function FP(e,t,n){var r=sP(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new RP(r,"GET",PP(e,n),i);return s.errorHandler=LP(t),s}function UP(e,t,n){const r=Object.assign({},n);return r.fullPath=e.path,r.size=t.size(),r.contentType||(r.contentType=(e=t,(t=null)&&t.contentType||e&&e.type()||"application/octet-stream")),r}function VP(e,t,n,r,i){var s=t.bucketOnlyServerUrl();const a={"X-Goog-Upload-Protocol":"multipart"};var o=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();a["Content-Type"]="multipart/related; boundary="+o;var c=UP(t,r,i),l="--"+o+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+SP(c,n)+"\r\n--"+o+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",o="\r\n--"+o+"--";const u=yP.getBlob(l,r,o);if(null===u)throw GD();o={name:c.fullPath},c=sP(s,e.host,e._protocol),s=e.maxUploadRetryTime;const h=new RP(c,"POST",PP(e,n),s);return h.urlParams=o,h.headers=a,h.body=u.uploadData(),h.errorHandler=MP(t),h}class qP{constructor(e,t,n,r){this.current=e,this.total=t,this.finalized=!!n,this.metadata=r||null}}function BP(e,t){let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Status")}catch(e){DP(!1)}const r=t||["active"];return DP(!!n&&-1!==r.indexOf(n)),n}function jP(e,t,n,r,i){var s=t.bucketOnlyServerUrl(),a=UP(t,r,i),o={name:a.fullPath},c=sP(s,e.host,e._protocol),l={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${r.size()}`,"X-Goog-Upload-Header-Content-Type":a.contentType,"Content-Type":"application/json; charset=utf-8"},s=SP(a,n),a=e.maxUploadRetryTime;const u=new RP(c,"POST",function(e){BP(e);let t;try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){DP(!1)}return DP(tP(t)),t},a);return u.urlParams=o,u.headers=l,u.body=s,u.errorHandler=MP(t),u}function zP(e,t,n,i){var r=e.maxUploadRetryTime;const s=new RP(n,"POST",function(e){var t=BP(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){DP(!1)}n||DP(!1);var r=Number(n);return DP(!isNaN(r)),new qP(r,i.size(),"final"===t)},r);return s.headers={"X-Goog-Upload-Command":"query"},s.errorHandler=MP(t),s}function $P(e,a,t,o,n,c,r,i){const l=new qP(0,0);if(r?(l.current=r.current,l.total=r.total):(l.current=0,l.total=o.size()),o.size()!==l.total)throw new jD(xD.SERVER_FILE_WRONG_SIZE,"Server recorded incorrect upload file size, please retry the upload.");var s=l.total-l.current;let u=s;0{Promise.resolve().then(()=>t(...e))}}class YP extends class{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=OD.NO_ERROR,this.sendPromise_=new Promise(e=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=OD.ABORT,e()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=OD.NETWORK_ERROR,e()}),this.xhr_.addEventListener("load",()=>{e()})})}send(e,t,n,r){if(this.sent_)throw XD("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==r)for(const i in r)r.hasOwnProperty(i)&&this.xhr_.setRequestHeader(i,r[i].toString());return void 0!==n?this.xhr_.send(n):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw XD("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw XD("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw XD("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw XD("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(e){return this.xhr_.getResponseHeader(e)}addUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.addEventListener("progress",e)}removeUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.removeEventListener("progress",e)}}{initXhr(){this.xhr_.responseType="text"}}function JP(){return new YP}class XP{constructor(e,t,n=null){this._transferred=0,this._needToFetchStatus=!1,this._needToFetchMetadata=!1,this._observers=[],this._error=void 0,this._uploadUrl=void 0,this._request=void 0,this._chunkMultiplier=1,this._resolve=void 0,this._reject=void 0,this._ref=e,this._blob=t,this._metadata=n,this._mappings=EP(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals(xD.CANCELED))this._needToFetchStatus=!0,this.completeTransitions_();else{var t=this.isExponentialBackoffExpired();if(oP(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=KD()}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals(xD.CANCELED)?this.completeTransitions_():(this._error=e,this._transition("error"))},this.sleepTime=0,this.maxSleepTime=this._ref.storage.maxUploadRetryTime,this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t,this._start()}),this._promise.then(null,()=>{})}isExponentialBackoffExpired(){return this.sleepTime>this.maxSleepTime}_makeProgressCallback(){const t=this._transferred;return e=>this._updateProgress(t+e)}_shouldDoResumable(e){return 262144{this.pendingTimeout=void 0,this._continueUpload()},this.sleepTime):this._oneShotUpload())}_resolveToken(n){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then(([e,t])=>{switch(this._state){case"running":n(e,t);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}})}_createResumable(){this._resolveToken((e,t)=>{var n=jP(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,JP,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()},this._errorHandler)})}_fetchStatus(){const i=this._uploadUrl;this._resolveToken((e,t)=>{var n=zP(this._ref.storage,this._ref._location,i,this._blob);const r=this._ref.storage._makeRequest(n,JP,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._updateProgress(e.current),this._needToFetchStatus=!1,e.finalized&&(this._needToFetchMetadata=!0),this.completeTransitions_()},this._errorHandler)})}_continueUpload(){const i=262144*this._chunkMultiplier,s=new qP(this._transferred,this._blob.size()),a=this._uploadUrl;this._resolveToken((e,t)=>{let n;try{n=$P(this._ref._location,this._ref.storage,a,this._blob,i,this._mappings,s,this._makeProgressCallback())}catch(e){return this._error=e,void this._transition("error")}const r=this._ref.storage._makeRequest(n,JP,e,t,!1);this._request=r,r.getPromise().then(e=>{this._increaseMultiplier(),this._request=void 0,this._updateProgress(e.current),e.finalized?(this._metadata=e.metadata,this._transition("success")):this.completeTransitions_()},this._errorHandler)})}_increaseMultiplier(){2*(262144*this._chunkMultiplier)<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken((e,t)=>{var n=FP(this._ref.storage,this._ref._location,this._mappings);const r=this._ref.storage._makeRequest(n,JP,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._transition("success")},this._metadataErrorHandler)})}_oneShotUpload(){this._resolveToken((e,t)=>{var n=VP(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,JP,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")},this._errorHandler)})}_updateProgress(e){var t=this._transferred;this._transferred=e,this._transferred!==t&&this._notifyObservers()}_transition(e){if(this._state!==e)switch(e){case"canceling":case"pausing":this._state=e,void 0!==this._request?this._request.cancel():this.pendingTimeout&&(clearTimeout(this.pendingTimeout),this.pendingTimeout=void 0,this.completeTransitions_());break;case"running":var t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":this._state=e,this._notifyObservers();break;case"canceled":this._error=WD(),this._state=e,this._notifyObservers();break;case"error":case"success":this._state=e,this._notifyObservers()}}completeTransitions_(){switch(this._state){case"pausing":this._transition("paused");break;case"canceling":this._transition("canceled");break;case"running":this._start()}}get snapshot(){var e=GP(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,n,r){const i=new HP(t||void 0,n||void 0,r||void 0);return this._addObserver(i),()=>{this._removeObserver(i)}}then(e,t){return this._promise.then(e,t)}catch(e){return this.then(null,e)}_addObserver(e){this._observers.push(e),this._notifyObserver(e)}_removeObserver(e){var t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise();const e=this._observers.slice();e.forEach(e=>{this._notifyObserver(e)})}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(GP(this._state)){case WP.SUCCESS:QP(this._resolve.bind(null,this.snapshot))();break;case WP.CANCELED:case WP.ERROR:const t=this._reject;QP(t.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(GP(this._state)){case WP.RUNNING:case WP.PAUSED:e.next&&QP(e.next.bind(e,this.snapshot))();break;case WP.SUCCESS:e.complete&&QP(e.complete.bind(e))();break;case WP.CANCELED:case WP.ERROR:default:e.error&&QP(e.error.bind(e,this._error))()}}resume(){var e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){var e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){var e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}class ZP{constructor(e,t){this._service=e,t instanceof ZD?this._location=t:this._location=ZD.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new ZP(e,t)}get root(){var e=new ZD(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return wP(this._location.path)}get storage(){return this._service}get parent(){var e=function(e){if(0===e.length)return null;var t=e.lastIndexOf("/");return-1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;e=new ZD(this._location.bucket,e);return new ZP(this._service,e)}_throwIfRoot(e){if(""===this._location.path)throw YD(e)}}function ex(e){const t={prefixes:[],items:[]};return async function e(t,n,r){const i={pageToken:r};const s=await tx(t,i);n.prefixes.push(...s.prefixes);n.items.push(...s.items);null!=s.nextPageToken&&await e(t,n,s.nextPageToken)}(e,t).then(()=>t)}function tx(e,t){null!=t&&"number"==typeof t.maxResults&&iP("options.maxResults",1,1e3,t.maxResults);var n=t||{},n=function(e,t,n,r,i){const s={};t.isRoot?s.prefix="":s.prefix=t.path+"/",n&&0{if(null===e)throw new jD(xD.NO_DOWNLOAD_URL,"The given file does not have any download URLs.");return e})}function ix(e){e._throwIfRoot("deleteObject");var t=function(e,t){var n=sP(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime;const i=new RP(n,"DELETE",function(e,t){},r);return i.successCodes=[200,204],i.errorHandler=LP(t),i}(e.storage,e._location);return e.storage.makeRequestWithTokens(t,JP)}function sx(e,t){var n,r=(n=e._location.path,r=t.split("/").filter(e=>0e.cancel()),this._requests.clear()),Promise.resolve()}_makeStorageReference(e){return new ZP(this,e)}_makeRequest(e,t,n,r,i=!0){if(this._deleted)return new eP(QD());{const u=([s,a,o,e,n,r,t=!0]=[e,this._appId,n,r,t,this._firebaseVersion,i],c=aP(s.urlParams),l=s.url+c,c=Object.assign({},s.headers),i=c,(a=a)&&(i["X-Firebase-GMPID"]=a),a=c,null!==(o=o)&&0this._requests.delete(u),()=>this._requests.delete(u)),u}var s,a,o,c,l}async makeRequestWithTokens(e,t){var[n,r]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,n,r).getPromise()}}const ux="@firebase/storage";function hx(e,t,n){return e=ae(e),t=t,n=n,(e=e)._throwIfRoot("uploadBytesResumable"),new XP(e,new yP(t),n)}function dx(e){return function(e){e._throwIfRoot("getMetadata");var t=FP(e.storage,e._location,EP());return e.storage.makeRequestWithTokens(t,JP)}(e=ae(e))}function px(e,t){return ox(e=ae(e),t)}function fx(e,t,n,r={}){!function(e,t,n,r={}){e.host=`${t}:${n}`,e._protocol="http";var i=r["mockUserToken"];i&&(e._overrideAuthToken="string"==typeof i?i:_(i,e.app.options.projectId))}(e,t,n,r)}function gx(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("app-check-internal");return new lx(n,r,i,t,Ye)}We(new oe("storage",gx,"PUBLIC").setMultipleInstances(!0)),et(ux,"0.11.2",""),et(ux,"0.11.2","esm2017");class mx{constructor(e,t,n){this._delegate=e,this.task=t,this.ref=n}get bytesTransferred(){return this._delegate.bytesTransferred}get metadata(){return this._delegate.metadata}get state(){return this._delegate.state}get totalBytes(){return this._delegate.totalBytes}}class vx{constructor(e,t){this._delegate=e,this._ref=t,this.cancel=this._delegate.cancel.bind(this._delegate),this.catch=this._delegate.catch.bind(this._delegate),this.pause=this._delegate.pause.bind(this._delegate),this.resume=this._delegate.resume.bind(this._delegate)}get snapshot(){return new mx(this._delegate.snapshot,this,this._ref)}then(t,e){return this._delegate.then(e=>{if(t)return t(new mx(e,this,this._ref))},e)}on(e,t,n,r){let i=void 0;return t&&(i="function"==typeof t?e=>t(new mx(e,this,this._ref)):{next:t.next?e=>t.next(new mx(e,this,this._ref)):void 0,complete:t.complete||void 0,error:t.error||void 0}),this._delegate.on(e,i,n||void 0,r||void 0)}}class yx{constructor(e,t){this._delegate=e,this._service=t}get prefixes(){return this._delegate.prefixes.map(e=>new _x(e,this._service))}get items(){return this._delegate.items.map(e=>new _x(e,this._service))}get nextPageToken(){return this._delegate.nextPageToken||null}}class _x{constructor(e,t){this._delegate=e,this.storage=t}get name(){return this._delegate.name}get bucket(){return this._delegate.bucket}get fullPath(){return this._delegate.fullPath}toString(){return this._delegate.toString()}child(e){var t=sx(this._delegate,e);return new _x(t,this.storage)}get root(){return new _x(this._delegate.root,this.storage)}get parent(){var e=this._delegate.parent;return null==e?null:new _x(e,this.storage)}put(e,t){return this._throwIfRoot("put"),new vx(hx(this._delegate,e,t),this)}putString(e,t=dP.RAW,n){this._throwIfRoot("putString");var r=fP(t,e);const i=Object.assign({},n);return null==i.contentType&&null!=r.contentType&&(i.contentType=r.contentType),new vx(new XP(this._delegate,new yP(r.data,!0),i),this)}listAll(){return ex(ae(this._delegate)).then(e=>new yx(e,this.storage))}list(e){return t=this._delegate,e=e||void 0,tx(t=ae(t),e).then(e=>new yx(e,this.storage));var t}getMetadata(){return dx(this._delegate)}updateMetadata(e){return nx(ae(this._delegate),e)}getDownloadURL(){return rx(ae(this._delegate))}delete(){return this._throwIfRoot("delete"),ix(ae(this._delegate))}_throwIfRoot(e){if(""===this._delegate._location.path)throw YD(e)}}class wx{constructor(e,t){this.app=e,this._delegate=t}get maxOperationRetryTime(){return this._delegate.maxOperationRetryTime}get maxUploadRetryTime(){return this._delegate.maxUploadRetryTime}ref(e){if(bx(e))throw HD("ref() expected a child path but got a URL, use refFromURL instead.");return new _x(px(this._delegate,e),this)}refFromURL(e){if(!bx(e))throw HD("refFromURL() expected a full URL but got a child path, use ref() instead.");try{ZD.makeFromUrl(e,this._delegate.host)}catch(e){throw HD("refFromUrl() expected a valid full URL but got an invalid one.")}return new _x(px(this._delegate,e),this)}setMaxUploadRetryTime(e){this._delegate.maxUploadRetryTime=e}setMaxOperationRetryTime(e){this._delegate.maxOperationRetryTime=e}useEmulator(e,t,n={}){fx(this._delegate,e,t,n)}}function bx(e){return/^[A-Za-z]+:\/\//.test(e)}function Ix(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("storage").getImmediate({identifier:t});return new wx(n,r)}MD=wt,LD={TaskState:WP,TaskEvent:KP,StringFormat:dP,Storage:wx,Reference:_x},MD.INTERNAL.registerComponent(new oe("storage-compat",Ix,"PUBLIC").setServiceProps(LD).setMultipleInstances(!0)),MD.registerVersion("@firebase/storage-compat","0.3.2");const Tx="@firebase/performance",Ex="0.6.4",Cx=Ex,kx="FB-PERF-TRACE-MEASURE",Sx="@firebase/performance/config",Ax="@firebase/performance/configexpire";var Nx,Rx,Dx,Px="Performance";const xx=new D("performance",Px,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),Ox=new me(Px);Ox.logLevel=m.INFO;let Mx,Lx;class Fx{constructor(e){if(!(this.window=e))throw xx.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,n){this.performance&&this.performance.measure&&this.performance.measure(e,t,n)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&N()?!!S()||(Ox.info("IndexedDB is not supported by current browser"),!1):(Ox.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,n){if(this.PerformanceObserver){const t=new this.PerformanceObserver(e=>{for(const t of e.getEntries())n(t)});t.observe({entryTypes:[e]})}}static getInstance(){return void 0===Mx&&(Mx=new Fx(Lx)),Mx}}let Ux;function Vx(e,t){var n=e.length-t.length;if(n<0||1i&&r.push(t.charAt(i));return r.join("")}let qx;class Bx{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=Vx("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=Vx("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===qx&&(qx=new Bx),qx}}(It=Nx=Nx||{})[It.UNKNOWN=0]="UNKNOWN",It[It.VISIBLE=1]="VISIBLE",It[It.HIDDEN=2]="HIDDEN";const jx=["firebase_","google_","ga_"],zx=new RegExp("^[a-zA-Z]\\w*$");function $x(){switch(Fx.getInstance().document.visibilityState){case"visible":return Nx.VISIBLE;case"hidden":return Nx.HIDDEN;default:return Nx.UNKNOWN}}function Kx(e){var t=null===(t=e.options)||void 0===t?void 0:t.appId;if(!t)throw xx.create("no app id");return t}const Wx="0.0.1",Gx={loggingEnabled:!0},Hx="FIREBASE_INSTALLATIONS_AUTH";function Qx(e,t){var r,i,n=function(){const e=Fx.getInstance().localStorage;if(e){var t=e.getItem(Ax);if(t&&function(e){return Number(e)>Date.now()}(t)){t=e.getItem(Sx);if(t)try{return JSON.parse(t)}catch(e){return}}}}();return n?(Jx(n),Promise.resolve()):(i=t,function(e){const t=e.getToken();return t.then(e=>{}),t}((r=e).installations).then(e=>{var t=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.projectId;if(!t)throw xx.create("no project id");return t}(r.app),n=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.apiKey;if(!t)throw xx.create("no api key");return t}(r.app),n=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${t}/namespaces/fireperf:fetch?key=${n}`,{method:"POST",headers:{Authorization:`${Hx} ${e}`},body:JSON.stringify({app_instance_id:i,app_instance_id_token:e,app_id:Kx(r.app),app_version:Cx,sdk_version:Wx})});return fetch(n).then(e=>{if(e.ok)return e.json();throw xx.create("RC response not ok")})}).catch(()=>{Ox.info(Yx)}).then(Jx).then(e=>function(e){const t=Fx.getInstance().localStorage;e&&t&&(t.setItem(Sx,JSON.stringify(e)),t.setItem(Ax,String(Date.now()+60*Bx.getInstance().configTimeToLive*60*1e3)))}(e),()=>{}))}const Yx="Could not fetch config, will use default configs";function Jx(e){if(!e)return e;const t=Bx.getInstance();var n=e.entries||{};return void 0!==n.fpr_enabled?t.loggingEnabled="true"===String(n.fpr_enabled):t.loggingEnabled=Gx.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):Gx.logSource&&(t.logSource=Gx.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:Gx.logEndPointUrl&&(t.logEndPointUrl=Gx.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:Gx.transportKey&&(t.transportKey=Gx.transportKey),void 0!==n.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):void 0!==Gx.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=Gx.networkRequestsSamplingRate),void 0!==n.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):void 0!==Gx.tracesSamplingRate&&(t.tracesSamplingRate=Gx.tracesSamplingRate),t.logTraceAfterSampling=Xx(t.tracesSamplingRate),t.logNetworkAfterSampling=Xx(t.networkRequestsSamplingRate),e}function Xx(e){return Math.random()<=e}let Zx=1,e1;function t1(e){var t;return Zx=2,e1=e1||(t=e,function(){const n=Fx.getInstance().document;return new Promise(e=>{if(n&&"complete"!==n.readyState){const t=()=>{"complete"===n.readyState&&(n.removeEventListener("readystatechange",t),e())};n.addEventListener("readystatechange",t)}else e()})}().then(()=>function(e){const t=e.getId();return t.then(e=>{Ux=e}),t}(t.installations)).then(e=>Qx(t,e)).then(()=>n1(),()=>n1())),e1}function n1(){Zx=3}const r1=1e4,i1=3,s1=1e3;let a1=i1,o1=[],c1=!1;function l1(e){setTimeout(()=>{if(0!==a1)return o1.length?void function(){const e=o1.splice(0,s1),t=e.map(e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:Bx.getInstance().logSource,log_event:t};!function(e,r){return function(e){var t=Bx.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}(e).then(e=>(e.ok||Ox.info("Call to Firebase backend failed."),e.json())).then(e=>{var t=Number(e.nextRequestWaitMillis);let n=r1;isNaN(t)||(n=Math.max(t,n));t=e.logResponseDetails;Array.isArray(t)&&0{o1=[...e,...o1],a1--,Ox.info(`Tries left: ${a1}.`),l1(r1)})}():l1(r1)},e)}function u1(t){return(...e)=>{!function(e){if(!e.eventTime||!e.message)throw xx.create("invalid cc log");o1=[...o1,e]}({message:t(...e),eventTime:Date.now()})}}let h1;function d1(e,t){h1=h1||u1(g1),h1(e,t)}function p1(e){var t=Bx.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&Fx.getInstance().requiredApisAvailable()&&(e.isAuto&&$x()!==Nx.VISIBLE||(3===Zx?f1(e):t1(e.performanceController).then(()=>f1(e),()=>f1(e))))}function f1(e){var t;!Ux||(t=Bx.getInstance()).loggingEnabled&&t.logTraceAfterSampling&&setTimeout(()=>d1(e,1),0)}function g1(e,t){return 0===t?(n={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},n={application_info:m1(e.performanceController.app),network_request_metric:n},JSON.stringify(n)):function(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);var n=e.getAttributes();0!==Object.keys(n).length&&(t.custom_attributes=n);n={application_info:m1(e.performanceController.app),trace_metric:t};return JSON.stringify(n)}(e);var n}function m1(e){return{google_app_id:Kx(e),app_instance_id:Ux,web_app_info:{sdk_version:Cx,page_url:Fx.getInstance().getUrl(),service_worker_status:null!=(t=Fx.getInstance().navigator)&&t.serviceWorker?t.serviceWorker.controller?2:3:1,visibility_state:$x(),effective_connection_type:function(){var e=Fx.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}()},application_process_state:0};var t}const v1=["_fp","_fcp","_fid"];class y1{constructor(e,t,n=!1,r){this.performanceController=e,this.name=t,this.isAuto=n,this.state=1,this.customAttributes={},this.counters={},this.api=Fx.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=r||`${kx}-${this.randomId}-${this.name}`,r&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw xx.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw xx.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),p1(this)}record(e,t,n){if(e<=0)throw xx.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw xx.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),n&&n.attributes&&(this.customAttributes=Object.assign({},n.attributes)),n&&n.metrics)for(const r of Object.keys(n.metrics))isNaN(Number(n.metrics[r]))||(this.counters[r]=Math.floor(Number(n.metrics[r])));p1(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(r=e,i=this.name,0===r.length||100n.startsWith(e))&&!!n.match(zx)),s=0!==(r=t).length&&r.length<=100;if(i&&s)this.customAttributes[e]=t;else{if(!i)throw xx.create("invalid attribute name",{attributeName:e});if(!s)throw xx.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){var e=this.api.getEntriesByName(this.traceMeasure),e=e&&e[0];e&&(this.durationUs=Math.floor(1e3*e.duration),this.startTimeUs=Math.floor(1e3*(e.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,n,r){var i=Fx.getInstance().getUrl();if(i){const s=new y1(e,"_wt_"+i,!0);i=Math.floor(1e3*Fx.getInstance().getTimeOrigin());s.setStartTime(i),t&&t[0]&&(s.setDuration(Math.floor(1e3*t[0].duration)),s.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),s.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),s.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));n&&((i=n.find(e=>"first-paint"===e.name))&&i.startTime&&s.putMetric("_fp",Math.floor(1e3*i.startTime)),(i=n.find(e=>"first-contentful-paint"===e.name))&&i.startTime&&s.putMetric("_fcp",Math.floor(1e3*i.startTime)),r&&s.putMetric("_fid",Math.floor(1e3*r))),p1(s)}}static createUserTimingTrace(e,t){p1(new y1(e,t,!1,t))}}function _1(e,t){const n=t;var r,i,s;n&&void 0!==n.responseStart&&(s=Fx.getInstance().getTimeOrigin(),r=Math.floor(1e3*(n.startTime+s)),i=n.responseStart?Math.floor(1e3*(n.responseStart-n.startTime)):void 0,s=Math.floor(1e3*(n.responseEnd-n.startTime)),function(e){const t=Bx.getInstance();var n,r,i;t.instrumentationEnabled&&(n=e.url,r=t.logEndPointUrl.split("?")[0],i=t.flTransportEndpointUrl.split("?")[0],n!==r&&n!==i&&t.loggingEnabled&&t.logNetworkAfterSampling&&setTimeout(()=>d1(e,0),0))}({performanceController:e,url:n.name&&n.name.split("?")[0],responsePayloadBytes:n.transferSize,startTimeUs:r,timeToResponseInitiatedUs:i,timeToResponseCompletedUs:s}))}const w1=5e3;function b1(e){Ux&&(setTimeout(()=>function(n){const e=Fx.getInstance(),r=e.getEntriesByType("navigation"),i=e.getEntriesByType("paint");if(e.onFirstInputDelay){let t=setTimeout(()=>{y1.createOobTrace(n,r,i),t=void 0},w1);e.onFirstInputDelay(e=>{t&&(clearTimeout(t),y1.createOobTrace(n,r,i,e))})}else y1.createOobTrace(n,r,i)}(e),0),setTimeout(()=>function(t){const e=Fx.getInstance(),n=e.getEntriesByType("resource");for(const r of n)_1(t,r);e.setupObserver("resource",e=>_1(t,e))}(e),0),setTimeout(()=>function(t){const e=Fx.getInstance(),n=e.getEntriesByType("measure");for(const r of n)I1(t,r);e.setupObserver("measure",e=>I1(t,e))}(e),0))}function I1(e,t){const n=t.name;n.substring(0,kx.length)!==kx&&y1.createUserTimingTrace(e,n)}class T1{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==(null==e?void 0:e.dataCollectionEnabled)&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==(null==e?void 0:e.instrumentationEnabled)&&(this.instrumentationEnabled=e.instrumentationEnabled),Fx.getInstance().requiredApisAvailable()?A().then(e=>{e&&(c1||(l1(5500),c1=!0),t1(this).then(()=>b1(this),()=>b1(this)),this.initialized=!0)}).catch(e=>{Ox.info(`Environment doesn't support IndexedDB: ${e}`)}):Ox.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){Bx.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return Bx.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){Bx.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return Bx.getInstance().dataCollectionEnabled}}const E1="[DEFAULT]";const C1=(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==E1)throw xx.create("FB not default");if("undefined"==typeof window)throw xx.create("no window");e=window,Lx=e;const i=new T1(n,r);return i._init(t),i};We(new oe("performance",C1,"PUBLIC")),et(Tx,Ex),et(Tx,Ex,"esm2017");class k1{constructor(e,t){this.app=e,this._delegate=t}get instrumentationEnabled(){return this._delegate.instrumentationEnabled}set instrumentationEnabled(e){this._delegate.instrumentationEnabled=e}get dataCollectionEnabled(){return this._delegate.dataCollectionEnabled}set dataCollectionEnabled(e){this._delegate.dataCollectionEnabled=e}trace(e){return t=this._delegate,e=e,t=ae(t),new y1(t,e);var t}}function S1(e){var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("performance").getImmediate();return new k1(t,n)}(Rx=wt).INTERNAL.registerComponent(new oe("performance-compat",S1,"PUBLIC")),Rx.registerVersion("@firebase/performance-compat","0.2.4");const A1="@firebase/remote-config";class N1{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}const R1=new D("remoteconfig","Remote Config",{"registration-window":"Undefined window object. This SDK only supports usage in a browser environment.","registration-project-id":"Undefined project identifier. Check Firebase app initialization.","registration-api-key":"Undefined API key. Check Firebase app initialization.","registration-app-id":"Undefined app identifier. Check Firebase app initialization.","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}.","storage-delete":"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.","fetch-client-network":"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-timeout":'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',"fetch-throttle":'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',"fetch-client-parse":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","indexed-db-unavailable":"Indexed DB is not supported by current browser"});const D1=["1","true","t","yes","y","on"];class P1{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=D1.indexOf(this._value.toLowerCase())}asNumber(){if("static"===this._source)return 0;let e=Number(this._value);return isNaN(e)&&(e=0),e}getSource(){return this._source}}async function x1(e){const t=ae(e);var[n,r]=await Promise.all([t._storage.getLastSuccessfulFetchResponse(),t._storage.getActiveConfigEtag()]);return!!(n&&n.config&&n.eTag&&n.eTag!==r)&&(await Promise.all([t._storageCache.setActiveConfig(n.config),t._storage.setActiveConfigEtag(n.eTag)]),!0)}function O1(e){const t=ae(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function M1(t){const n=ae(t),e=new N1;setTimeout(async()=>{e.abort()},n.settings.fetchTimeoutMillis);try{await n._client.fetch({cacheMaxAgeMillis:n.settings.minimumFetchIntervalMillis,signal:e}),await n._storageCache.setLastFetchStatus("success")}catch(e){var r=(i="fetch-throttle",(t=e)instanceof R&&-1!==t.code.indexOf(i)?"throttle":"failure");throw await n._storageCache.setLastFetchStatus(r),e}var i}function L1(n){const e=ae(n);return[t={},r={}]=[e._storageCache.getActiveConfig(),e.defaultConfig],Object.keys(Object.assign(Object.assign({},t),r)).reduce((e,t)=>(e[t]=F1(n,t),e),{});var t,r}function F1(e,t){const n=ae(e);n._isInitializationComplete||n._logger.debug(`A value was requested for key "${t}" before SDK initialization completed.`+" Await on ensureInitialized if the intent was to get a previously activated value.");var r=n._storageCache.getActiveConfig();return r&&void 0!==r[t]?new P1("remote",r[t]):n.defaultConfig&&void 0!==n.defaultConfig[t]?new P1("default",String(n.defaultConfig[t])):(n._logger.debug(`Returning static value for key "${t}".`+" Define a default or remote value if this is unintentional."),new P1("static"))}class U1{constructor(e,t,n,r){this.client=e,this.storage=t,this.storageCache=n,this.logger=r}isCachedDataFresh(e,t){if(!t)return this.logger.debug("Config fetch cache check. Cache unpopulated."),!1;var n=Date.now()-t,r=n<=e;return this.logger.debug("Config fetch cache check."+` Cache age millis: ${n}.`+` Cache max age millis (minimumFetchIntervalMillis setting): ${e}.`+` Is cache hit: ${r}.`),r}async fetch(e){var[t,n]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(n&&this.isCachedDataFresh(e.cacheMaxAgeMillis,t))return n;e.eTag=n&&n.eTag;n=await this.client.fetch(e);const r=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===n.status&&r.push(this.storage.setLastSuccessfulFetchResponse(n)),await Promise.all(r),n}}class V1{constructor(e,t,n,r,i,s){this.firebaseInstallations=e,this.sdkVersion=t,this.namespace=n,this.projectId=r,this.apiKey=i,this.appId=s}async fetch(n){var e,[t,r]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),i=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`,s={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":n.eTag||"*"},r={sdk_version:this.sdkVersion,app_instance_id:t,app_instance_id_token:r,app_id:this.appId,language_code:(e=navigator).languages&&e.languages[0]||e.language},r={method:"POST",headers:s,body:JSON.stringify(r)},i=fetch(i,r),r=new Promise((e,t)=>{n.signal.addEventListener(()=>{const e=new Error("The operation was aborted.");e.name="AbortError",t(e)})});let a;try{await Promise.race([i,r]),a=await i}catch(e){let t="fetch-client-network";throw"AbortError"===(null==e?void 0:e.name)&&(t="fetch-timeout"),R1.create(t,{originalErrorMessage:null==e?void 0:e.message})}let o=a.status;i=a.headers.get("ETag")||void 0;let c,l;if(200===a.status){let e;try{e=await a.json()}catch(e){throw R1.create("fetch-client-parse",{originalErrorMessage:null==e?void 0:e.message})}c=e.entries,l=e.state}if("INSTANCE_STATE_UNSPECIFIED"===l?o=500:"NO_CHANGE"===l?o=304:"NO_TEMPLATE"!==l&&"EMPTY_CONFIG"!==l||(c={}),304!==o&&200!==o)throw R1.create("fetch-status",{httpStatus:o});return{status:o,eTag:i,config:c}}}class q1{constructor(e,t){this.client=e,this.storage=t}async fetch(e){var t=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(e,t)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:n}){var i,s;i=t.signal,s=e,await new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(R1.create("fetch-throttle",{throttleEndTimeMillis:s}))})});try{var r=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),r}catch(e){if(!function(e){if(e instanceof R&&e.customData){var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}}(e))throw e;r={throttleEndTimeMillis:Date.now()+se(n),backoffCount:n+1};return await this.storage.setThrottleMetadata(r),this.attemptFetch(t,r)}}}class B1{constructor(e,t,n,r,i){this.app=e,this._client=t,this._storageCache=n,this._storage=r,this._logger=i,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:6e4,minimumFetchIntervalMillis:432e5},this.defaultConfig={}}get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}}function j1(e,t){var n=e.target.error||void 0;return R1.create(t,{originalErrorMessage:n&&(null==n?void 0:n.message)})}const z1="app_namespace_store";class $1{constructor(e,t,n,r=function(){return new Promise((t,n)=>{try{const e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{n(j1(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(z1,{keyPath:"compositeKey"})}}catch(e){n(R1.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}})}()){this.appId=e,this.appName=t,this.namespace=n,this.openDbPromise=r}getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(e){return this.set("last_fetch_status",e)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(e){return this.set("last_successful_fetch_timestamp_millis",e)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(e){return this.set("last_successful_fetch_response",e)}getActiveConfig(){return this.get("active_config")}setActiveConfig(e){return this.set("active_config",e)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(e){return this.set("active_config_etag",e)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(e){return this.set("throttle_metadata",e)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}async get(a){const o=await this.openDbPromise;return new Promise((n,t)=>{const e=o.transaction([z1],"readonly"),r=e.objectStore(z1);var i=this.createCompositeKey(a);try{const s=r.get(i);s.onerror=e=>{t(j1(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)}}catch(e){t(R1.create("storage-get",{originalErrorMessage:null==e?void 0:e.message}))}})}async set(a,o){const c=await this.openDbPromise;return new Promise((e,t)=>{const n=c.transaction([z1],"readwrite"),r=n.objectStore(z1);var i=this.createCompositeKey(a);try{const s=r.put({compositeKey:i,value:o});s.onerror=e=>{t(j1(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(R1.create("storage-set",{originalErrorMessage:null==e?void 0:e.message}))}})}async delete(a){const o=await this.openDbPromise;return new Promise((e,t)=>{const n=o.transaction([z1],"readwrite"),r=n.objectStore(z1);var i=this.createCompositeKey(a);try{const s=r.delete(i);s.onerror=e=>{t(j1(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(R1.create("storage-delete",{originalErrorMessage:null==e?void 0:e.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class K1{constructor(e){this.storage=e}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}async loadFromStorage(){var e=this.storage.getLastFetchStatus(),t=this.storage.getLastSuccessfulFetchTimestampMillis(),n=this.storage.getActiveConfig(),e=await e;e&&(this.lastFetchStatus=e);t=await t;t&&(this.lastSuccessfulFetchTimestampMillis=t);n=await n;n&&(this.activeConfig=n)}setLastFetchStatus(e){return this.lastFetchStatus=e,this.storage.setLastFetchStatus(e)}setLastSuccessfulFetchTimestampMillis(e){return this.lastSuccessfulFetchTimestampMillis=e,this.storage.setLastSuccessfulFetchTimestampMillis(e)}setActiveConfig(e){return this.activeConfig=e,this.storage.setActiveConfig(e)}}async function W1(){if(!S())return!1;try{return await A()}catch(e){return!1}}We(new oe("remote-config",function(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if("undefined"==typeof window)throw R1.create("registration-window");if(!S())throw R1.create("indexed-db-unavailable");var{projectId:i,apiKey:s,appId:a}=n.options;if(!i)throw R1.create("registration-project-id");if(!s)throw R1.create("registration-api-key");if(!a)throw R1.create("registration-app-id");t=t||"firebase";const o=new $1(a,n.name,t),c=new K1(o),l=new me(A1);l.logLevel=m.ERROR;a=new V1(r,Ye,t,i,s,a),a=new q1(a,o),a=new U1(a,o,c,l),a=new B1(n,a,c,o,l);return O1(a),a},"PUBLIC").setMultipleInstances(!0)),et(A1,"0.4.4"),et(A1,"0.4.4","esm2017");class G1{constructor(e,t){this.app=e,this._delegate=t}get defaultConfig(){return this._delegate.defaultConfig}set defaultConfig(e){this._delegate.defaultConfig=e}get fetchTimeMillis(){return this._delegate.fetchTimeMillis}get lastFetchStatus(){return this._delegate.lastFetchStatus}get settings(){return this._delegate.settings}set settings(e){this._delegate.settings=e}activate(){return x1(this._delegate)}ensureInitialized(){return O1(this._delegate)}fetch(){return M1(this._delegate)}fetchAndActivate(){return async function(e){return await M1(e=ae(e)),x1(e)}(this._delegate)}getAll(){return L1(this._delegate)}getBoolean(e){return F1(ae(this._delegate),e).asBoolean()}getNumber(e){return F1(ae(this._delegate),e).asNumber()}getString(e){return F1(ae(this._delegate),e).asString()}getValue(e){return F1(this._delegate,e)}setLogLevel(e){!function(e,t){const n=ae(e);switch(t){case"debug":n._logger.logLevel=m.DEBUG;break;case"silent":n._logger.logLevel=m.SILENT;break;default:n._logger.logLevel=m.ERROR}}(this._delegate,e)}}function H1(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("remote-config").getImmediate({identifier:t});return new G1(n,r)}return(Dx=wt).INTERNAL.registerComponent(new oe("remoteConfig-compat",H1,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:W1})),Dx.registerVersion("@firebase/remote-config-compat","0.2.4"),console.warn("\nIt looks like you're using the development build of the Firebase JS SDK.\nWhen deploying Firebase apps to production, it is advisable to only import\nthe individual SDK components you intend to use.\n\nFor the CDN builds, these are available in the following manner\n(replace with the name of a component - i.e. auth, database, etc):\n\nhttps://www.gstatic.com/firebasejs/5.0.0/firebase-.js\n"),wt.registerVersion("firebase","9.23.0","compat-cdn"),wt}); //# sourceMappingURL=firebase-compat.js.map