"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[135],{9745:(e,t,r)=>{r.d(t,{AB:()=>ul,BN:()=>ux,GG:()=>uS,H9:()=>lp,HM:()=>uh,My:()=>ua,O5:()=>uO,P:()=>ut,_M:()=>un,aU:()=>lE,d_:()=>uk,kd:()=>uD,mZ:()=>uN,rJ:()=>lg,x7:()=>uE});var n,i,s,a,o=r(4093),l=r(2881),u=r(6702),h=r(1280),c=r(2107),d=r(927),f=r(9509),m=r(9641).Buffer;let g="@firebase/firestore",p="4.9.2";class y{constructor(e){this.uid=e}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}y.UNAUTHENTICATED=new y(null),y.GOOGLE_CREDENTIALS=new y("google-credentials-uid"),y.FIRST_PARTY=new y("first-party-uid"),y.MOCK_USER=new y("mock-user");let w="12.3.0",v=new u.Vy("@firebase/firestore");function I(){return v.logLevel}function T(e,...t){if(v.logLevel<=u.$b.DEBUG){let r=t.map(_);v.debug(`Firestore (${w}): ${e}`,...r)}}function b(e,...t){if(v.logLevel<=u.$b.ERROR){let r=t.map(_);v.error(`Firestore (${w}): ${e}`,...r)}}function E(e,...t){if(v.logLevel<=u.$b.WARN){let r=t.map(_);v.warn(`Firestore (${w}): ${e}`,...r)}}function _(e){if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(t){return e}}function S(e,t,r){let n="Unexpected state";"string"==typeof t?n=t:r=t,x(e,n,r)}function x(e,t,r){let n=`FIRESTORE (${w}) INTERNAL ASSERTION FAILED: ${t} (ID: ${e.toString(16)})`;if(void 0!==r)try{n+=" CONTEXT: "+JSON.stringify(r)}catch(e){n+=" CONTEXT: "+r}throw b(n),Error(n)}function N(e,t,r,n){let i="Unexpected state";"string"==typeof r?i=r:n=r,e||x(t,i,n)}let D={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 C extends h.g{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class A{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class k{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class R{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(y.UNAUTHENTICATED))}shutdown(){}}class V{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 M{constructor(e){this.t=e,this.currentUser=y.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,t){N(void 0===this.o,42304);let r=this.i,n=e=>this.i!==r?(r=this.i,t(e)):Promise.resolve(),i=new A;this.o=()=>{this.i++,this.currentUser=this.u(),i.resolve(),i=new A,e.enqueueRetryable(()=>n(this.currentUser))};let s=()=>{let t=i;e.enqueueRetryable(async()=>{await t.promise,await n(this.currentUser)})},a=e=>{T("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.o&&(this.auth.addAuthTokenListener(this.o),s())};this.t.onInit(e=>a(e)),setTimeout(()=>{if(!this.auth){let e=this.t.getImmediate({optional:!0});e?a(e):(T("FirebaseAuthCredentialsProvider","Auth not yet detected"),i.resolve(),i=new A)}},0),s()}getToken(){let e=this.i,t=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(t).then(t=>this.i!==e?(T("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):t?(N("string"==typeof t.accessToken,31837,{l:t}),new k(t.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.o&&this.auth.removeAuthTokenListener(this.o),this.o=void 0}u(){let e=this.auth&&this.auth.getUid();return N(null===e||"string"==typeof e,2055,{h:e}),new y(e)}}class O{constructor(e,t,r){this.P=e,this.T=t,this.I=r,this.type="FirstParty",this.user=y.FIRST_PARTY,this.A=new Map}R(){return this.I?this.I():null}get headers(){this.A.set("X-Goog-AuthUser",this.P);let e=this.R();return e&&this.A.set("Authorization",e),this.T&&this.A.set("X-Goog-Iam-Authorization-Token",this.T),this.A}}class F{constructor(e,t,r){this.P=e,this.T=t,this.I=r}getToken(){return Promise.resolve(new O(this.P,this.T,this.I))}start(e,t){e.enqueueRetryable(()=>t(y.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class P{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class L{constructor(e,t){this.V=t,this.forceRefresh=!1,this.appCheck=null,this.m=null,this.p=null,(0,o.xZ)(e)&&e.settings.appCheckToken&&(this.p=e.settings.appCheckToken)}start(e,t){N(void 0===this.o,3512);let r=e=>{null!=e.error&&T("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);let r=e.token!==this.m;return this.m=e.token,T("FirebaseAppCheckTokenProvider",`Received ${r?"new":"existing"} token.`),r?t(e.token):Promise.resolve()};this.o=t=>{e.enqueueRetryable(()=>r(t))};let n=e=>{T("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.o&&this.appCheck.addTokenListener(this.o)};this.V.onInit(e=>n(e)),setTimeout(()=>{if(!this.appCheck){let e=this.V.getImmediate({optional:!0});e?n(e):T("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}},0)}getToken(){if(this.p)return Promise.resolve(new P(this.p));let e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?(N("string"==typeof e.token,44558,{tokenResult:e}),this.m=e.token,new P(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.o&&this.appCheck.removeTokenListener(this.o),this.o=void 0}}class U{static newId(){let e=62*Math.floor(256/62),t="";for(;t.length<20;){let r=function(e){let t="undefined"!=typeof self&&(self.crypto||self.msCrypto),r=new Uint8Array(40);if(t&&"function"==typeof t.getRandomValues)t.getRandomValues(r);else for(let e=0;e<40;e++)r[e]=Math.floor(256*Math.random());return r}(40);for(let n=0;nt)}function B(e,t){let r=Math.min(e.length,t.length);for(let n=0;n=55296&&t<=57343}function K(e,t,r){return e.length===t.length&&e.every((e,n)=>r(e,t[n]))}let $="__name__";class G{constructor(e,t,r){void 0===t?t=0:t>e.length&&S(637,{offset:t,range:e.length}),void 0===r?r=e.length-t:r>e.length-t&&S(1746,{length:r,range:e.length-t}),this.segments=e,this.offset=t,this.len=r}get length(){return this.len}isEqual(e){return 0===G.comparator(this,e)}child(e){let t=this.segments.slice(this.offset,this.limit());return e instanceof G?e.forEach(e=>{t.push(e)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return e=void 0===e?1:e,this.construct(this.segments,this.offset+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.length=0)throw new C(D.INVALID_ARGUMENT,`Invalid segment (${r}). Paths must not contain // in them.`);t.push(...r.split("/").filter(e=>e.length>0))}return new j(t)}static emptyPath(){return new j([])}}let Q=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class W extends G{construct(e,t,r){return new W(e,t,r)}static isValidIdentifier(e){return Q.test(e)}canonicalString(){return this.toArray().map(e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),W.isValidIdentifier(e)||(e="`"+e+"`"),e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&this.get(0)===$}static keyField(){return new W([$])}static fromServerFormat(e){let t=[],r="",n=0,i=()=>{if(0===r.length)throw new C(D.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(r),r=""},s=!1;for(;n=2&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return null!==e&&0===j.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return j.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new H(new j(e.slice()))}}function J(e,t,r){if(!r)throw new C(D.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function Y(e){if(!H.isDocumentKey(e))throw new C(D.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function X(e){if(H.isDocumentKey(e))throw new C(D.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function Z(e){return"object"==typeof e&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}function ee(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return e.length>20&&(e=`${e.substring(0,20)}...`),JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return""+e;if("object"==typeof e){if(e instanceof Array)return"an array";{var t;let r=(t=e).constructor?t.constructor.name:null;return r?`a custom ${r} object`:"an object"}}return"function"==typeof e?"a function":S(12329,{type:typeof e})}function et(e,t){if("_delegate"in e&&(e=e._delegate),!(e instanceof t)){if(t.name===e.constructor.name)throw new C(D.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{let r=ee(e);throw new C(D.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${r}`)}}return e}function er(e,t){let r={typeString:e};return t&&(r.value=t),r}function en(e,t){let r;if(!Z(e))throw new C(D.INVALID_ARGUMENT,"JSON must be an object");for(let n in t)if(t[n]){let i=t[n].typeString,s="value"in t[n]?{value:t[n].value}:void 0;if(!(n in e)){r=`JSON missing required field: '${n}'`;break}let a=e[n];if(i&&typeof a!==i){r=`JSON field '${n}' must be a ${i}.`;break}if(void 0!==s&&a!==s.value){r=`Expected '${n}' field to equal '${s.value}'`;break}}if(r)throw new C(D.INVALID_ARGUMENT,r);return!0}class ei{static now(){return ei.fromMillis(Date.now())}static fromDate(e){return ei.fromMillis(e.getTime())}static fromMillis(e){let t=Math.floor(e/1e3),r=Math.floor((e-1e3*t)*1e6);return new ei(t,r)}constructor(e,t){if(this.seconds=e,this.nanoseconds=t,t<0||t>=1e9)throw new C(D.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-0xe7791f700||e>=0x3afff44180)throw new C(D.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?q(this.nanoseconds,e.nanoseconds):q(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{type:ei._jsonSchemaVersion,seconds:this.seconds,nanoseconds:this.nanoseconds}}static fromJSON(e){if(en(e,ei._jsonSchema))return new ei(e.seconds,e.nanoseconds)}valueOf(){return String(this.seconds- -0xe7791f700).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}ei._jsonSchemaVersion="firestore/timestamp/1.0",ei._jsonSchema={type:er("string",ei._jsonSchemaVersion),seconds:er("number"),nanoseconds:er("number")};class es{static fromTimestamp(e){return new es(e)}static min(){return new es(new ei(0,0))}static max(){return new es(new ei(0x3afff4417f,0x3b9ac9ff))}constructor(e){this.timestamp=e}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 ea{constructor(e,t,r,n){this.indexId=e,this.collectionGroup=t,this.fields=r,this.indexState=n}}function eo(e){return e.fields.find(e=>2===e.kind)}function el(e){return e.fields.filter(e=>2!==e.kind)}ea.UNKNOWN_ID=-1;class eu{constructor(e,t){this.fieldPath=e,this.kind=t}}class eh{constructor(e,t){this.sequenceNumber=e,this.offset=t}static empty(){return new eh(0,ef.min())}}function ec(e,t){let r=e.toTimestamp().seconds,n=e.toTimestamp().nanoseconds+1;return new ef(es.fromTimestamp(1e9===n?new ei(r+1,0):new ei(r,n)),H.empty(),t)}function ed(e){return new ef(e.readTime,e.key,-1)}class ef{constructor(e,t,r){this.readTime=e,this.documentKey=t,this.largestBatchId=r}static min(){return new ef(es.min(),H.empty(),-1)}static max(){return new ef(es.max(),H.empty(),-1)}}function em(e,t){let r=e.readTime.compareTo(t.readTime);return 0!==r?r:0!==(r=H.comparator(e.documentKey,t.documentKey))?r:q(e.largestBatchId,t.largestBatchId)}let eg="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class ep{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}async function ey(e){if(e.code!==D.FAILED_PRECONDITION||e.message!==eg)throw e;T("LocalStore","Unexpectedly lost primary lease")}class ew{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(e,t){return this.callbackAttached&&S(59440),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(t,this.error):this.wrapSuccess(e,this.result):new ew((r,n)=>{this.nextCallback=t=>{this.wrapSuccess(e,t).next(r,n)},this.catchCallback=e=>{this.wrapFailure(t,e).next(r,n)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{let t=e();return t instanceof ew?t:ew.resolve(t)}catch(e){return ew.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):ew.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):ew.reject(t)}static resolve(e){return new ew((t,r)=>{t(e)})}static reject(e){return new ew((t,r)=>{r(e)})}static waitFor(e){return new ew((t,r)=>{let n=0,i=0,s=!1;e.forEach(e=>{++n,e.next(()=>{++i,s&&i===n&&t()},e=>r(e))}),s=!0,i===n&&t()})}static or(e){let t=ew.resolve(!1);for(let r of e)t=t.next(e=>e?ew.resolve(e):r());return t}static forEach(e,t){let r=[];return e.forEach((e,n)=>{r.push(t.call(this,e,n))}),this.waitFor(r)}static mapArray(e,t){return new ew((r,n)=>{let i=e.length,s=Array(i),a=0;for(let o=0;o{s[l]=e,++a===i&&r(s)},e=>n(e))}})}static doWhile(e,t){return new ew((r,n)=>{let i=()=>{!0===e()?t().next(()=>{i()},n):r()};i()})}}let ev="SimpleDb";class eI{static open(e,t,r,n){try{return new eI(t,e.transaction(n,r))}catch(e){throw new e_(t,e)}}constructor(e,t){this.action=e,this.transaction=t,this.aborted=!1,this.S=new A,this.transaction.oncomplete=()=>{this.S.resolve()},this.transaction.onabort=()=>{t.error?this.S.reject(new e_(e,t.error)):this.S.resolve()},this.transaction.onerror=t=>{let r=eC(t.target.error);this.S.reject(new e_(e,r))}}get D(){return this.S.promise}abort(e){e&&this.S.reject(e),this.aborted||(T(ev,"Aborting transaction:",e?e.message:"Client-initiated abort"),this.aborted=!0,this.transaction.abort())}C(){let e=this.transaction;this.aborted||"function"!=typeof e.commit||e.commit()}store(e){return new ex(this.transaction.objectStore(e))}}class eT{static delete(e){return T(ev,"Removing database:",e),eN((0,h.mS)().indexedDB.deleteDatabase(e)).toPromise()}static v(){if(!(0,h.zW)())return!1;if(eT.F())return!0;let e=(0,h.ZQ)(),t=eT.M(e),r=eb(e);return!(e.indexOf("MSIE ")>0||e.indexOf("Trident/")>0||e.indexOf("Edge/")>0||0{let n=indexedDB.open(this.name,this.version);n.onsuccess=e=>{t(e.target.result)},n.onblocked=()=>{r(new e_(e,"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed."))},n.onerror=t=>{let n=t.target.error;"VersionError"===n.name?r(new C(D.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"===n.name?r(new C(D.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: "+n)):r(new e_(e,n))},n.onupgradeneeded=e=>{T(ev,'Database "'+this.name+'" requires upgrade from version:',e.oldVersion);let t=e.target.result;this.N.k(t,n.transaction,e.oldVersion,this.version).next(()=>{T(ev,"Database upgrade to version "+this.version+" complete")})}})),this.q&&(this.db.onversionchange=e=>this.q(e)),this.db}$(e){this.q=e,this.db&&(this.db.onversionchange=t=>e(t))}async runTransaction(e,t,r,n){let i="readonly"===t,s=0;for(;;){++s;try{this.db=await this.L(e);let t=eI.open(this.db,e,i?"readonly":"readwrite",r),s=n(t).next(e=>(t.C(),e)).catch(e=>(t.abort(e),ew.reject(e))).toPromise();return s.catch(()=>{}),await t.D,s}catch(t){let e="FirebaseError"!==t.name&&s<3;if(T(ev,"Transaction failed with error:",t.message,"Retrying:",e),this.close(),!e)return Promise.reject(t)}}}close(){this.db&&this.db.close(),this.db=void 0}}function eb(e){let t=e.match(/Android ([\d.]+)/i);return Number(t?t[1].split(".").slice(0,2).join("."):"-1")}class eE{constructor(e){this.U=e,this.K=!1,this.W=null}get isDone(){return this.K}get G(){return this.W}set cursor(e){this.U=e}done(){this.K=!0}j(e){this.W=e}delete(){return eN(this.U.delete())}}class e_ extends C{constructor(e,t){super(D.UNAVAILABLE,`IndexedDB transaction '${e}' failed: ${t}`),this.name="IndexedDbTransactionError"}}function eS(e){return"IndexedDbTransactionError"===e.name}class ex{constructor(e){this.store=e}put(e,t){let r;return void 0!==t?(T(ev,"PUT",this.store.name,e,t),r=this.store.put(t,e)):(T(ev,"PUT",this.store.name,"",e),r=this.store.put(e)),eN(r)}add(e){return T(ev,"ADD",this.store.name,e,e),eN(this.store.add(e))}get(e){return eN(this.store.get(e)).next(t=>(void 0===t&&(t=null),T(ev,"GET",this.store.name,e,t),t))}delete(e){return T(ev,"DELETE",this.store.name,e),eN(this.store.delete(e))}count(){return T(ev,"COUNT",this.store.name),eN(this.store.count())}J(e,t){let r=this.options(e,t),n=r.index?this.store.index(r.index):this.store;if("function"==typeof n.getAll){let e=n.getAll(r.range);return new ew((t,r)=>{e.onerror=e=>{r(e.target.error)},e.onsuccess=e=>{t(e.target.result)}})}{let e=this.cursor(r),t=[];return this.H(e,(e,r)=>{t.push(r)}).next(()=>t)}}Y(e,t){let r=this.store.getAll(e,null===t?void 0:t);return new ew((e,t)=>{r.onerror=e=>{t(e.target.error)},r.onsuccess=t=>{e(t.target.result)}})}Z(e,t){T(ev,"DELETE ALL",this.store.name);let r=this.options(e,t);r.X=!1;let n=this.cursor(r);return this.H(n,(e,t,r)=>r.delete())}ee(e,t){let r;t?r=e:(r={},t=e);let n=this.cursor(r);return this.H(n,t)}te(e){let t=this.cursor({});return new ew((r,n)=>{t.onerror=e=>{n(eC(e.target.error))},t.onsuccess=t=>{let n=t.target.result;n?e(n.primaryKey,n.value).next(e=>{e?n.continue():r()}):r()}})}H(e,t){let r=[];return new ew((n,i)=>{e.onerror=e=>{i(e.target.error)},e.onsuccess=e=>{let i=e.target.result;if(!i)return void n();let s=new eE(i),a=t(i.primaryKey,i.value,s);if(a instanceof ew){let e=a.catch(e=>(s.done(),ew.reject(e)));r.push(e)}s.isDone?n():null===s.G?i.continue():i.continue(s.G)}}).next(()=>ew.waitFor(r))}options(e,t){let r;return void 0!==e&&("string"==typeof e?r=e:t=e),{index:r,range:t}}cursor(e){let t="next";if(e.reverse&&(t="prev"),e.index){let r=this.store.index(e.index);return e.X?r.openKeyCursor(e.range,t):r.openCursor(e.range,t)}return this.store.openCursor(e.range,t)}}function eN(e){return new ew((t,r)=>{e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{r(eC(e.target.error))}})}let eD=!1;function eC(e){let t=eT.M((0,h.ZQ)());if(t>=12.2&&t<13){let t="An internal error was encountered in the Indexed Database server";if(e.message.indexOf(t)>=0){let e=new C("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 eD||(eD=!0,setTimeout(()=>{throw e},0)),e}}return e}let eA="IndexBackfiller";class ek{constructor(e,t){this.asyncQueue=e,this.ne=t,this.task=null}start(){this.re(15e3)}stop(){this.task&&(this.task.cancel(),this.task=null)}get started(){return null!==this.task}re(e){T(eA,`Scheduled in ${e}ms`),this.task=this.asyncQueue.enqueueAfterDelay("index_backfill",e,async()=>{this.task=null;try{let e=await this.ne.ie();T(eA,`Documents written: ${e}`)}catch(e){eS(e)?T(eA,"Ignoring IndexedDB error during index backfill: ",e):await ey(e)}await this.re(6e4)})}}class eR{constructor(e,t){this.localStore=e,this.persistence=t}async ie(e=50){return this.persistence.runTransaction("Backfill Indexes","readwrite-primary",t=>this.se(t,e))}se(e,t){let r=new Set,n=t,i=!0;return ew.doWhile(()=>!0===i&&n>0,()=>this.localStore.indexManager.getNextCollectionGroupToUpdate(e).next(t=>{if(null!==t&&!r.has(t))return T(eA,`Processing collection: ${t}`),this.oe(e,t,n).next(e=>{n-=e,r.add(t)});i=!1})).next(()=>t-n)}oe(e,t,r){return this.localStore.indexManager.getMinOffsetFromCollectionGroup(e,t).next(n=>this.localStore.localDocuments.getNextDocuments(e,t,n,r).next(r=>{let i=r.changes;return this.localStore.indexManager.updateIndexEntries(e,i).next(()=>this._e(n,r)).next(r=>(T(eA,`Updating offset: ${r}`),this.localStore.indexManager.updateCollectionGroup(e,t,r))).next(()=>i.size)}))}_e(e,t){let r=e;return t.changes.forEach((e,t)=>{let n=ed(t);em(n,r)>0&&(r=n)}),new ef(r.readTime,r.documentKey,Math.max(t.batchId,e.largestBatchId))}}class eV{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=e=>this.ae(e),this.ue=e=>t.writeSequenceNumber(e))}ae(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){let e=++this.previousValue;return this.ue&&this.ue(e),e}}function eM(e){return null==e}function eO(e){return 0===e&&1/e==-1/0}function eF(e){return"number"==typeof e&&Number.isInteger(e)&&!eO(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}function eP(e){let t="";for(let r=0;r0&&(t+="\x01\x01"),t=function(e,t){let r=t,n=e.length;for(let t=0;t=2,64408,{path:e}),2===t)return N("\x01"===e.charAt(0)&&"\x01"===e.charAt(1),56145,{path:e}),j.emptyPath();let r=t-2,n=[],i="";for(let s=0;sr)&&S(50515,{path:e}),e.charAt(t+1)){case"\x01":let a,o=e.substring(s,t);0===i.length?a=o:(i+=o,a=i,i=""),n.push(a);break;case"\x10":i+=e.substring(s,t),i+="\0";break;case"\x11":i+=e.substring(s,t+1);break;default:S(61167,{path:e})}s=t+2}return new j(n)}let eU="remoteDocuments",eq="owner",eB="owner",ez="mutationQueues",eK="mutations",e$="batchId",eG="userMutationsIndex",ej=["userId","batchId"],eQ={},eW="documentMutations",eH="remoteDocumentsV14",eJ=["prefixPath","collectionGroup","readTime","documentId"],eY="documentKeyIndex",eX=["prefixPath","collectionGroup","documentId"],eZ="collectionGroupIndex",e0=["collectionGroup","readTime","prefixPath","documentId"],e1="remoteDocumentGlobal",e2="remoteDocumentGlobalKey",e4="targets",e5="queryTargetsIndex",e3=["canonicalId","targetId"],e6="targetDocuments",e8=["targetId","path"],e9="documentTargetsIndex",e7=["path","targetId"],te="targetGlobalKey",tt="targetGlobal",tr="collectionParents",tn=["collectionId","parent"],ti="clientMetadata",ts="bundles",ta="namedQueries",to="indexConfiguration",tl="collectionGroupIndex",tu="indexState",th=["indexId","uid"],tc="sequenceNumberIndex",td=["uid","sequenceNumber"],tf="indexEntries",tm=["indexId","uid","arrayValue","directionalValue","orderedDocumentKey","documentKey"],tg="documentKeyIndex",tp=["indexId","uid","orderedDocumentKey"],ty="documentOverlays",tw=["userId","collectionPath","documentId"],tv="collectionPathOverlayIndex",tI=["userId","collectionPath","largestBatchId"],tT="collectionGroupOverlayIndex",tb=["userId","collectionGroup","largestBatchId"],tE="globals",t_=[ez,eK,eW,eU,e4,eq,tt,e6,ti,e1,tr,ts,ta],tS=[...t_,ty],tx=[ez,eK,eW,eH,e4,eq,tt,e6,ti,e1,tr,ts,ta,ty],tN=[...tx,to,tu,tf],tD=[...tN,tE];class tC extends ep{constructor(e,t){super(),this.le=e,this.currentSequenceNumber=t}}function tA(e,t){return eT.O(e.le,t)}function tk(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}function tR(e,t){for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t(r,e[r])}function tV(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}class tM{constructor(e,t){this.comparator=e,this.root=t||tF.EMPTY}insert(e,t){return new tM(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,tF.BLACK,null,null))}remove(e){return new tM(this.comparator,this.root.remove(e,this.comparator).copy(null,null,tF.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){let r=this.comparator(e,t.key);if(0===r)return t.value;r<0?t=t.left:r>0&&(t=t.right)}return null}indexOf(e){let t=0,r=this.root;for(;!r.isEmpty();){let n=this.comparator(e,r.key);if(0===n)return t+r.left.size;n<0?r=r.left:(t+=r.left.size+1,r=r.right)}return -1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(e){this.inorderTraversal((t,r)=>(e(t,r),!1))}toString(){let e=[];return this.inorderTraversal((t,r)=>(e.push(`${t}:${r}`),!1)),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new tO(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new tO(this.root,e,this.comparator,!1)}getReverseIterator(){return new tO(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new tO(this.root,e,this.comparator,!0)}}class tO{constructor(e,t,r,n){this.isReverse=n,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?r(e.key,t):1,t&&n&&(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(),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 this.nodeStack.length>0}peek(){if(0===this.nodeStack.length)return null;let e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class tF{constructor(e,t,r,n,i){this.key=e,this.value=t,this.color=null!=r?r:tF.RED,this.left=null!=n?n:tF.EMPTY,this.right=null!=i?i:tF.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,r,n,i){return new tF(null!=e?e:this.key,null!=t?t:this.value,null!=r?r:this.color,null!=n?n:this.left,null!=i?i:this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,r){let n=this,i=r(e,n.key);return(n=i<0?n.copy(null,null,null,n.left.insert(e,t,r),null):0===i?n.copy(null,t,null,null,null):n.copy(null,null,null,null,n.right.insert(e,t,r))).fixUp()}removeMin(){if(this.left.isEmpty())return tF.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),(e=e.copy(null,null,null,e.left.removeMin(),null)).fixUp()}remove(e,t){let r,n=this;if(0>t(e,n.key))n.left.isEmpty()||n.left.isRed()||n.left.left.isRed()||(n=n.moveRedLeft()),n=n.copy(null,null,null,n.left.remove(e,t),null);else{if(n.left.isRed()&&(n=n.rotateRight()),n.right.isEmpty()||n.right.isRed()||n.right.left.isRed()||(n=n.moveRedRight()),0===t(e,n.key)){if(n.right.isEmpty())return tF.EMPTY;r=n.right.min(),n=n.copy(r.key,r.value,null,null,n.right.removeMin())}n=n.copy(null,null,null,null,n.right.remove(e,t))}return n.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=(e=(e=e.copy(null,null,null,null,e.right.rotateRight())).rotateLeft()).colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=(e=e.rotateRight()).colorFlip()),e}rotateLeft(){let e=this.copy(null,null,tF.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){let e=this.copy(null,null,tF.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){let e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){return Math.pow(2,this.check())<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw S(43730,{key:this.key,value:this.value});if(this.right.isRed())throw S(14113,{key:this.key,value:this.value});let e=this.left.check();if(e!==this.right.check())throw S(27949);return e+ +!this.isRed()}}tF.EMPTY=null,tF.RED=!0,tF.BLACK=!1,tF.EMPTY=new class{constructor(){this.size=0}get key(){throw S(57766)}get value(){throw S(16141)}get color(){throw S(16727)}get left(){throw S(29726)}get right(){throw S(36894)}copy(e,t,r,n,i){return this}insert(e,t,r){return new tF(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class tP{constructor(e){this.comparator=e,this.data=new tM(this.comparator)}has(e){return null!==this.data.get(e)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(e){this.data.inorderTraversal((t,r)=>(e(t),!1))}forEachInRange(e,t){let r=this.data.getIteratorFrom(e[0]);for(;r.hasNext();){let n=r.getNext();if(this.comparator(n.key,e[1])>=0)return;t(n.key)}}forEachWhile(e,t){let r;for(r=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();r.hasNext();)if(!e(r.getNext().key))return}firstAfterOrEqual(e){let t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new tL(this.data.getIterator())}getIteratorFrom(e){return new tL(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 tP)||this.size!==e.size)return!1;let t=this.data.getIterator(),r=e.data.getIterator();for(;t.hasNext();){let e=t.getNext().key,n=r.getNext().key;if(0!==this.comparator(e,n))return!1}return!0}toArray(){let e=[];return this.forEach(t=>{e.push(t)}),e}toString(){let e=[];return this.forEach(t=>e.push(t)),"SortedSet("+e.toString()+")"}copy(e){let t=new tP(this.comparator);return t.data=e,t}}class tL{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}function tU(e){return e.hasNext()?e.getNext():void 0}class tq{constructor(e){this.fields=e,e.sort(W.comparator)}static empty(){return new tq([])}unionWith(e){let t=new tP(W.comparator);for(let e of this.fields)t=t.add(e);for(let r of e)t=t.add(r);return new tq(t.toArray())}covers(e){for(let t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return K(this.fields,e.fields,(e,t)=>e.isEqual(t))}}class tB extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class tz{constructor(e){this.binaryString=e}static fromBase64String(e){return new tz(function(e){try{return atob(e)}catch(e){throw"undefined"!=typeof DOMException&&e instanceof DOMException?new tB("Invalid base64 string: "+e):e}}(e))}static fromUint8Array(e){return new tz(function(e){let t="";for(let r=0;rere(e,t))}function rr(e,t){if(e===t)return 0;let r=t7(e),n=t7(t);if(r!==n)return q(r,n);switch(r){case 0:case 0x1fffffffffffff:return 0;case 1:return q(e.booleanValue,t.booleanValue);case 2:let i=tG(e.integerValue||e.doubleValue),s=tG(t.integerValue||t.doubleValue);return is?1:i===s?0:isNaN(i)?isNaN(s)?0:-1:1;case 3:return rn(e.timestampValue,t.timestampValue);case 4:return rn(tZ(e),tZ(t));case 5:return B(e.stringValue,t.stringValue);case 6:return function(e,t){let r=tj(e),n=tj(t);return r.compareTo(n)}(e.bytesValue,t.bytesValue);case 7:return function(e,t){let r=e.split("/"),n=t.split("/");for(let e=0;et.mapValue.fields[e]=rf(r)),t}if(e.arrayValue){let t={arrayValue:{values:[]}};for(let r=0;r<(e.arrayValue.values||[]).length;++r)t.arrayValue.values[r]=rf(e.arrayValue.values[r]);return t}return{...e}}function rm(e){return(((e.mapValue||{}).fields||{}).__type__||{}).stringValue===t5}let rg={mapValue:{fields:{[t4]:{stringValue:t6},[t8]:{arrayValue:{}}}}};function rp(e,t){let r=rr(e.value,t.value);return 0!==r?r:e.inclusive&&!t.inclusive?-1:!e.inclusive&&t.inclusive?1:0}function ry(e,t){let r=rr(e.value,t.value);return 0!==r?r:e.inclusive&&!t.inclusive?1:!e.inclusive&&t.inclusive?-1:0}class rw{constructor(e){this.value=e}static empty(){return new rw({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let t=this.value;for(let r=0;r{if(!t.isImmediateParentOf(i)){let e=this.getFieldsMap(t);this.applyChanges(e,r,n),r={},n=[],t=i.popLast()}e?r[i.lastSegment()]=rf(e):n.push(i.lastSegment())});let i=this.getFieldsMap(t);this.applyChanges(i,r,n)}delete(e){let t=this.field(e.popLast());rc(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return re(this.value,e.value)}getFieldsMap(e){let t=this.value;t.mapValue.fields||(t.mapValue={fields:{}});for(let r=0;re[t]=r),r))delete e[n]}clone(){return new rw(rf(this.value))}}class rv{constructor(e,t,r,n,i,s,a){this.key=e,this.documentType=t,this.version=r,this.readTime=n,this.createTime=i,this.data=s,this.documentState=a}static newInvalidDocument(e){return new rv(e,0,es.min(),es.min(),es.min(),rw.empty(),0)}static newFoundDocument(e,t,r,n){return new rv(e,1,t,es.min(),r,n,0)}static newNoDocument(e,t){return new rv(e,2,t,es.min(),es.min(),rw.empty(),0)}static newUnknownDocument(e,t){return new rv(e,3,t,es.min(),es.min(),rw.empty(),2)}convertToFoundDocument(e,t){return this.createTime.isEqual(es.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=rw.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=rw.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=es.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 rv&&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 rv(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 rI{constructor(e,t){this.position=e,this.inclusive=t}}function rT(e,t,r){let n=0;for(let i=0;i":return e>0;case">=":return e>=0;default:return S(47266,{operator:this.op})}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class rx extends r_{constructor(e,t){super(),this.filters=e,this.op=t,this.Pe=null}static create(e,t){return new rx(e,t)}matches(e){return rN(this)?void 0===this.filters.find(t=>!t.matches(e)):void 0!==this.filters.find(t=>t.matches(e))}getFlattenedFilters(){return null!==this.Pe||(this.Pe=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.Pe}getFilters(){return Object.assign([],this.filters)}}function rN(e){return"and"===e.op}function rD(e){return"or"===e.op}function rC(e){return rA(e)&&rN(e)}function rA(e){for(let t of e.filters)if(t instanceof rx)return!1;return!0}function rk(e,t){let r=e.filters.concat(t);return rx.create(r,e.op)}class rR extends rS{constructor(e,t,r){super(e,t,r),this.key=H.fromName(r.referenceValue)}matches(e){let t=H.comparator(e.key,this.key);return this.matchesComparison(t)}}class rV extends rS{constructor(e,t){super(e,"in",t),this.keys=rO("in",t)}matches(e){return this.keys.some(t=>t.isEqual(e.key))}}class rM extends rS{constructor(e,t){super(e,"not-in",t),this.keys=rO("not-in",t)}matches(e){return!this.keys.some(t=>t.isEqual(e.key))}}function rO(e,t){return(t.arrayValue?.values||[]).map(e=>H.fromName(e.referenceValue))}class rF extends rS{constructor(e,t){super(e,"array-contains",t)}matches(e){let t=e.data.field(this.field);return rl(t)&&rt(t.arrayValue,this.value)}}class rP extends rS{constructor(e,t){super(e,"in",t)}matches(e){let t=e.data.field(this.field);return null!==t&&rt(this.value.arrayValue,t)}}class rL extends rS{constructor(e,t){super(e,"not-in",t)}matches(e){if(rt(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;let t=e.data.field(this.field);return null!==t&&void 0===t.nullValue&&!rt(this.value.arrayValue,t)}}class rU extends rS{constructor(e,t){super(e,"array-contains-any",t)}matches(e){let t=e.data.field(this.field);return!(!rl(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>rt(this.value.arrayValue,e))}}class rq{constructor(e,t=null,r=[],n=[],i=null,s=null,a=null){this.path=e,this.collectionGroup=t,this.orderBy=r,this.filters=n,this.limit=i,this.startAt=s,this.endAt=a,this.Te=null}}function rB(e,t=null,r=[],n=[],i=null,s=null,a=null){return new rq(e,t,r,n,i,s,a)}function rz(e){if(null===e.Te){let t=e.path.canonicalString();null!==e.collectionGroup&&(t+="|cg:"+e.collectionGroup),t+="|f:",t+=e.filters.map(e=>(function e(t){if(t instanceof rS)return t.field.canonicalString()+t.op.toString()+rs(t.value);if(rC(t))return t.filters.map(t=>e(t)).join(",");{let r=t.filters.map(t=>e(t)).join(",");return`${t.op}(${r})`}})(e)).join(","),t+="|ob:",t+=e.orderBy.map(e=>e.field.canonicalString()+e.dir).join(","),eM(e.limit)||(t+="|l:",t+=e.limit),e.startAt&&(t+="|lb:",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map(e=>rs(e)).join(",")),e.endAt&&(t+="|ub:",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(e=>rs(e)).join(",")),e.Te=t}return e.Te}function rK(e,t){if(e.limit!==t.limit||e.orderBy.length!==t.orderBy.length)return!1;for(let i=0;it&&e(n,r.filters[i]),!0):void S(19439)}(e.filters[r],t.filters[r]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!rb(e.startAt,t.startAt)&&rb(e.endAt,t.endAt)}function r$(e){return H.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}function rG(e,t){return e.filters.filter(e=>e instanceof rS&&e.field.isEqual(t))}function rj(e,t,r){let n=t9,i=!0;for(let r of rG(e,t)){let e=t9,t=!0;switch(r.op){case"<":case"<=":var s;e="nullValue"in(s=r.value)?t9:"booleanValue"in s?{booleanValue:!1}:"integerValue"in s||"doubleValue"in s?{doubleValue:NaN}:"timestampValue"in s?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"stringValue"in s?{stringValue:""}:"bytesValue"in s?{bytesValue:""}:"referenceValue"in s?ra(t2.empty(),H.empty()):"geoPointValue"in s?{geoPointValue:{latitude:-90,longitude:-180}}:"arrayValue"in s?{arrayValue:{}}:"mapValue"in s?rd(s)?rg:{mapValue:{}}:S(35942,{value:s});break;case"==":case"in":case">=":e=r.value;break;case">":e=r.value,t=!1;break;case"!=":case"not-in":e=t9}0>rp({value:n,inclusive:i},{value:e,inclusive:t})&&(n=e,i=t)}if(null!==r){for(let s=0;srp({value:n,inclusive:i},{value:e,inclusive:r.inclusive})&&(n=e,i=r.inclusive);break}}return{value:n,inclusive:i}}function rQ(e,t,r){let n=t3,i=!0;for(let r of rG(e,t)){let e=t3,t=!0;switch(r.op){case">=":case">":var s;e="nullValue"in(s=r.value)?{booleanValue:!1}:"booleanValue"in s?{doubleValue:NaN}:"integerValue"in s||"doubleValue"in s?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"timestampValue"in s?{stringValue:""}:"stringValue"in s?{bytesValue:""}:"bytesValue"in s?ra(t2.empty(),H.empty()):"referenceValue"in s?{geoPointValue:{latitude:-90,longitude:-180}}:"geoPointValue"in s?{arrayValue:{}}:"arrayValue"in s?rg:"mapValue"in s?rd(s)?{mapValue:{}}:t3:S(61959,{value:s}),t=!1;break;case"==":case"in":case"<=":e=r.value;break;case"<":e=r.value,t=!1;break;case"!=":case"not-in":e=t3}ry({value:n,inclusive:i},{value:e,inclusive:t})>0&&(n=e,i=t)}if(null!==r){for(let s=0;s0&&(n=e,i=r.inclusive);break}}return{value:n,inclusive:i}}class rW{constructor(e,t=null,r=[],n=[],i=null,s="F",a=null,o=null){this.path=e,this.collectionGroup=t,this.explicitOrderBy=r,this.filters=n,this.limit=i,this.limitType=s,this.startAt=a,this.endAt=o,this.Ie=null,this.Ee=null,this.de=null,this.startAt,this.endAt}}function rH(e){return new rW(e)}function rJ(e){return 0===e.filters.length&&null===e.limit&&null==e.startAt&&null==e.endAt&&(0===e.explicitOrderBy.length||1===e.explicitOrderBy.length&&e.explicitOrderBy[0].field.isKeyField())}function rY(e){return null!==e.collectionGroup}function rX(e){if(null===e.Ie){let t;e.Ie=[];let r=new Set;for(let t of e.explicitOrderBy)e.Ie.push(t),r.add(t.field.canonicalString());let n=e.explicitOrderBy.length>0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc";(t=new tP(W.comparator),e.filters.forEach(e=>{e.getFlattenedFilters().forEach(e=>{e.isInequality()&&(t=t.add(e.field))})}),t).forEach(t=>{r.has(t.canonicalString())||t.isKeyField()||e.Ie.push(new rE(t,n))}),r.has(W.keyField().canonicalString())||e.Ie.push(new rE(W.keyField(),n))}return e.Ie}function rZ(e){return e.Ee||(e.Ee=r0(e,rX(e))),e.Ee}function r0(e,t){if("F"===e.limitType)return rB(e.path,e.collectionGroup,t,e.filters,e.limit,e.startAt,e.endAt);{t=t.map(e=>{let t="desc"===e.dir?"asc":"desc";return new rE(e.field,t)});let r=e.endAt?new rI(e.endAt.position,e.endAt.inclusive):null,n=e.startAt?new rI(e.startAt.position,e.startAt.inclusive):null;return rB(e.path,e.collectionGroup,t,e.filters,e.limit,r,n)}}function r1(e,t){let r=e.filters.concat([t]);return new rW(e.path,e.collectionGroup,e.explicitOrderBy.slice(),r,e.limit,e.limitType,e.startAt,e.endAt)}function r2(e,t,r){return new rW(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,r,e.startAt,e.endAt)}function r4(e,t){return rK(rZ(e),rZ(t))&&e.limitType===t.limitType}function r5(e){return`${rz(rZ(e))}|lt:${e.limitType}`}function r3(e){var t;let r;return`Query(target=${r=(t=rZ(e)).path.canonicalString(),null!==t.collectionGroup&&(r+=" collectionGroup="+t.collectionGroup),t.filters.length>0&&(r+=`, filters: [${t.filters.map(e=>(function e(t){return t instanceof rS?`${t.field.canonicalString()} ${t.op} ${rs(t.value)}`:t instanceof rx?t.op.toString()+" {"+t.getFilters().map(e).join(" ,")+"}":"Filter"})(e)).join(", ")}]`),eM(t.limit)||(r+=", limit: "+t.limit),t.orderBy.length>0&&(r+=`, orderBy: [${t.orderBy.map(e=>`${e.field.canonicalString()} (${e.dir})`).join(", ")}]`),t.startAt&&(r+=", startAt: ",r+=t.startAt.inclusive?"b:":"a:",r+=t.startAt.position.map(e=>rs(e)).join(",")),t.endAt&&(r+=", endAt: ",r+=t.endAt.inclusive?"a:":"b:",r+=t.endAt.position.map(e=>rs(e)).join(",")),`Target(${r})`}; limitType=${e.limitType})`}function r6(e,t){return t.isFoundDocument()&&function(e,t){let r=t.key.path;return null!==e.collectionGroup?t.key.hasCollectionId(e.collectionGroup)&&e.path.isPrefixOf(r):H.isDocumentKey(e.path)?e.path.isEqual(r):e.path.isImmediateParentOf(r)}(e,t)&&function(e,t){for(let r of rX(e))if(!r.field.isKeyField()&&null===t.data.field(r.field))return!1;return!0}(e,t)&&function(e,t){for(let r of e.filters)if(!r.matches(t))return!1;return!0}(e,t)&&(!e.startAt||!!function(e,t,r){let n=rT(e,t,r);return e.inclusive?n<=0:n<0}(e.startAt,rX(e),t))&&(!e.endAt||!!function(e,t,r){let n=rT(e,t,r);return e.inclusive?n>=0:n>0}(e.endAt,rX(e),t))}function r8(e){return e.collectionGroup||(e.path.length%2==1?e.path.lastSegment():e.path.get(e.path.length-2))}function r9(e){return(t,r)=>{let n=!1;for(let i of rX(e)){let e=function(e,t,r){let n=e.field.isKeyField()?H.comparator(t.key,r.key):function(e,t,r){let n=t.data.field(e),i=r.data.field(e);return null!==n&&null!==i?rr(n,i):S(42886)}(e.field,t,r);switch(e.dir){case"asc":return n;case"desc":return -1*n;default:return S(19790,{direction:e.dir})}}(i,t,r);if(0!==e)return e;n=n||i.field.isKeyField()}return 0}}class r7{constructor(e,t){this.mapKeyFn=e,this.equalsFn=t,this.inner={},this.innerSize=0}get(e){let t=this.mapKeyFn(e),r=this.inner[t];if(void 0!==r){for(let[t,n]of r)if(this.equalsFn(t,e))return n}}has(e){return void 0!==this.get(e)}set(e,t){let r=this.mapKeyFn(e),n=this.inner[r];if(void 0===n)return this.inner[r]=[[e,t]],void this.innerSize++;for(let r=0;r{for(let[t,n]of r)e(t,n)})}isEmpty(){return tV(this.inner)}size(){return this.innerSize}}let ne=new tM(H.comparator),nt=new tM(H.comparator);function nr(...e){let t=nt;for(let r of e)t=t.insert(r.key,r);return t}function nn(e){let t=nt;return e.forEach((e,r)=>t=t.insert(e,r.overlayedDocument)),t}function ni(){return new r7(e=>e.toString(),(e,t)=>e.isEqual(t))}let ns=new tM(H.comparator),na=new tP(H.comparator);function no(...e){let t=na;for(let r of e)t=t.add(r);return t}let nl=new tP(q);function nu(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:eO(t)?"-0":t}}function nh(e){return{integerValue:""+e}}function nc(e,t){return eF(t)?nh(t):nu(e,t)}class nd{constructor(){this._=void 0}}function nf(e,t){return e instanceof nv?ro(t)||t&&"doubleValue"in t?t:{integerValue:0}:null}class nm extends nd{}class ng extends nd{constructor(e){super(),this.elements=e}}function np(e,t){let r=nT(t);for(let t of e.elements)r.some(e=>re(e,t))||r.push(t);return{arrayValue:{values:r}}}class ny extends nd{constructor(e){super(),this.elements=e}}function nw(e,t){let r=nT(t);for(let t of e.elements)r=r.filter(e=>!re(e,t));return{arrayValue:{values:r}}}class nv extends nd{constructor(e,t){super(),this.serializer=e,this.Ae=t}}function nI(e){return tG(e.integerValue||e.doubleValue)}function nT(e){return rl(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class nb{constructor(e,t){this.field=e,this.transform=t}}class nE{constructor(e,t){this.version=e,this.transformResults=t}}class n_{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new n_}static exists(e){return new n_(void 0,e)}static updateTime(e){return new n_(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 nS(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class nx{}function nN(e,t){if(!e.hasLocalMutations||t&&0===t.fields.length)return null;if(null===t)return e.isNoDocument()?new nO(e.key,n_.none()):new nA(e.key,e.data,n_.none());{let r=e.data,n=rw.empty(),i=new tP(W.comparator);for(let e of t.fields)if(!i.has(e)){let t=r.field(e);null===t&&e.length>1&&(e=e.popLast(),t=r.field(e)),null===t?n.delete(e):n.set(e,t),i=i.add(e)}return new nk(e.key,n,new tq(i.toArray()),n_.none())}}function nD(e,t,r,n){return e instanceof nA?function(e,t,r,n){if(!nS(e.precondition,t))return r;let i=e.value.clone(),s=nM(e.fieldTransforms,n,t);return i.setAll(s),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null}(e,t,r,n):e instanceof nk?function(e,t,r,n){if(!nS(e.precondition,t))return r;let i=nM(e.fieldTransforms,n,t),s=t.data;return(s.setAll(nR(e)),s.setAll(i),t.convertToFoundDocument(t.version,s).setHasLocalMutations(),null===r)?null:r.unionWith(e.fieldMask.fields).unionWith(e.fieldTransforms.map(e=>e.field))}(e,t,r,n):nS(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):r}function nC(e,t){var r,n;return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&(r=e.fieldTransforms,n=t.fieldTransforms,!!(void 0===r&&void 0===n||!(!r||!n)&&K(r,n,(e,t)=>{var r,n;return e.field.isEqual(t.field)&&(r=e.transform,n=t.transform,r instanceof ng&&n instanceof ng||r instanceof ny&&n instanceof ny?K(r.elements,n.elements,re):r instanceof nv&&n instanceof nv?re(r.Ae,n.Ae):r instanceof nm&&n instanceof nm)})))&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask))}class nA extends nx{constructor(e,t,r,n=[]){super(),this.key=e,this.value=t,this.precondition=r,this.fieldTransforms=n,this.type=0}getFieldMask(){return null}}class nk extends nx{constructor(e,t,r,n,i=[]){super(),this.key=e,this.data=t,this.fieldMask=r,this.precondition=n,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function nR(e){let t=new Map;return e.fieldMask.fields.forEach(r=>{if(!r.isEmpty()){let n=e.data.field(r);t.set(r,n)}}),t}function nV(e,t,r){let n=new Map;N(e.length===r.length,32656,{Re:r.length,Ve:e.length});for(let s=0;s{let i=e.get(n.key),s=i.overlayedDocument,a=this.applyToLocalView(s,i.mutatedFields),o=nN(s,a=t.has(n.key)?null:a);null!==o&&r.set(n.key,o),s.isValidDocument()||s.convertToNoDocument(es.min())}),r}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),no())}isEqual(e){return this.batchId===e.batchId&&K(this.mutations,e.mutations,(e,t)=>nC(e,t))&&K(this.baseMutations,e.baseMutations,(e,t)=>nC(e,t))}}class nL{constructor(e,t,r,n){this.batch=e,this.commitVersion=t,this.mutationResults=r,this.docVersions=n}static from(e,t,r){N(e.mutations.length===r.length,58842,{me:e.mutations.length,fe:r.length});let n=ns,i=e.mutations;for(let e=0;e=8)throw new nH(`Invalid padding: ${t}`);if(r<0||e.length>0&&0===this.hashCount)throw new nH(`Invalid hash count: ${r}`);if(0===e.length&&0!==t)throw new nH(`Invalid padding when bitmap length is 0: ${t}`);this.ge=8*e.length-t,this.pe=c.jz.fromNumber(this.ge)}ye(e,t,r){let n=e.add(t.multiply(c.jz.fromNumber(r)));return 1===n.compare(nG)&&(n=new c.jz([n.getBits(0),n.getBits(1)],0)),n.modulo(this.pe).toNumber()}we(e){return!!(this.bitmap[Math.floor(e/8)]&1<n.insert(e)),n}insert(e){if(0===this.ge)return;let[t,r]=nQ(nj(e));for(let e=0;e0&&(this.Oe=!0,this.Me=e)}ke(){let e=no(),t=no(),r=no();return this.Fe.forEach((n,i)=>{switch(i){case 0:e=e.add(n);break;case 2:t=t.add(n);break;case 1:r=r.add(n);break;default:S(38017,{changeType:i})}}),new nY(this.Me,this.xe,e,t,r)}qe(){this.Oe=!1,this.Fe=n5()}Qe(e,t){this.Oe=!0,this.Fe=this.Fe.insert(e,t)}$e(e){this.Oe=!0,this.Fe=this.Fe.remove(e)}Ue(){this.ve+=1}Ke(){this.ve-=1,N(this.ve>=0,3241,{ve:this.ve})}We(){this.Oe=!0,this.xe=!0}}class n2{constructor(e){this.Ge=e,this.ze=new Map,this.je=ne,this.Je=n4(),this.He=n4(),this.Ye=new tM(q)}Ze(e){for(let t of e.be)e.De&&e.De.isFoundDocument()?this.Xe(t,e.De):this.et(t,e.key,e.De);for(let t of e.removedTargetIds)this.et(t,e.key,e.De)}tt(e){this.forEachTarget(e,t=>{let r=this.nt(t);switch(e.state){case 0:this.rt(t)&&r.Le(e.resumeToken);break;case 1:r.Ke(),r.Ne||r.qe(),r.Le(e.resumeToken);break;case 2:r.Ke(),r.Ne||this.removeTarget(t);break;case 3:this.rt(t)&&(r.We(),r.Le(e.resumeToken));break;case 4:this.rt(t)&&(this.it(t),r.Le(e.resumeToken));break;default:S(56790,{state:e.state})}})}forEachTarget(e,t){e.targetIds.length>0?e.targetIds.forEach(t):this.ze.forEach((e,r)=>{this.rt(r)&&t(r)})}st(e){let t=e.targetId,r=e.Ce.count,n=this.ot(t);if(n){let i=n.target;if(r$(i))if(0===r){let e=new H(i.path);this.et(t,e,rv.newNoDocument(e,es.min()))}else N(1===r,20013,{expectedCount:r});else{let n=this._t(t);if(n!==r){let r=this.ut(e),i=r?this.ct(r,e,n):1;0!==i&&(this.it(t),this.Ye=this.Ye.insert(t,2===i?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch"))}}}}ut(e){let t,r,n=e.Ce.unchangedNames;if(!n||!n.bits)return null;let{bits:{bitmap:i="",padding:s=0},hashCount:a=0}=n;try{t=tj(i).toUint8Array()}catch(e){if(e instanceof tB)return E("Decoding the base64 bloom filter in existence filter failed ("+e.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw e}try{r=new nW(t,s,a)}catch(e){return E(e instanceof nH?"BloomFilter error: ":"Applying bloom filter failed: ",e),null}return 0===r.ge?null:r}ct(e,t,r){return 2*(t.Ce.count!==r-this.Pt(e,t.targetId))}Pt(e,t){let r=this.Ge.getRemoteKeysForTarget(t),n=0;return r.forEach(r=>{let i=this.Ge.ht(),s=`projects/${i.projectId}/databases/${i.database}/documents/${r.path.canonicalString()}`;e.mightContain(s)||(this.et(t,r,null),n++)}),n}Tt(e){let t=new Map;this.ze.forEach((r,n)=>{let i=this.ot(n);if(i){if(r.current&&r$(i.target)){let t=new H(i.target.path);this.It(t).has(n)||this.Et(n,t)||this.et(n,t,rv.newNoDocument(t,e))}r.Be&&(t.set(n,r.ke()),r.qe())}});let r=no();this.He.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{let t=this.ot(e);return!t||"TargetPurposeLimboResolution"===t.purpose||(n=!1,!1)}),n&&(r=r.add(e))}),this.je.forEach((t,r)=>r.setReadTime(e));let n=new nJ(e,t,this.Ye,this.je,r);return this.je=ne,this.Je=n4(),this.He=n4(),this.Ye=new tM(q),n}Xe(e,t){if(!this.rt(e))return;let r=2*!!this.Et(e,t.key);this.nt(e).Qe(t.key,r),this.je=this.je.insert(t.key,t),this.Je=this.Je.insert(t.key,this.It(t.key).add(e)),this.He=this.He.insert(t.key,this.dt(t.key).add(e))}et(e,t,r){if(!this.rt(e))return;let n=this.nt(e);this.Et(e,t)?n.Qe(t,1):n.$e(t),this.He=this.He.insert(t,this.dt(t).delete(e)),this.He=this.He.insert(t,this.dt(t).add(e)),r&&(this.je=this.je.insert(t,r))}removeTarget(e){this.ze.delete(e)}_t(e){let t=this.nt(e).ke();return this.Ge.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}Ue(e){this.nt(e).Ue()}nt(e){let t=this.ze.get(e);return t||(t=new n1,this.ze.set(e,t)),t}dt(e){let t=this.He.get(e);return t||(t=new tP(q),this.He=this.He.insert(e,t)),t}It(e){let t=this.Je.get(e);return t||(t=new tP(q),this.Je=this.Je.insert(e,t)),t}rt(e){let t=null!==this.ot(e);return t||T("WatchChangeAggregator","Detected inactive target",e),t}ot(e){let t=this.ze.get(e);return t&&t.Ne?null:this.Ge.At(e)}it(e){this.ze.set(e,new n1),this.Ge.getRemoteKeysForTarget(e).forEach(t=>{this.et(e,t,null)})}Et(e,t){return this.Ge.getRemoteKeysForTarget(e).has(t)}}function n4(){return new tM(H.comparator)}function n5(){return new tM(H.comparator)}let n3={asc:"ASCENDING",desc:"DESCENDING"},n6={"<":"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"},n8={and:"AND",or:"OR"};class n9{constructor(e,t){this.databaseId=e,this.useProto3Json=t}}function n7(e,t){return e.useProto3Json||eM(t)?t:{value:t}}function ie(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 it(e,t){return e.useProto3Json?t.toBase64():t.toUint8Array()}function ir(e){return N(!!e,49232),es.fromTimestamp(function(e){let t=t$(e);return new ei(t.seconds,t.nanos)}(e))}function ii(e,t){return is(e,t).canonicalString()}function is(e,t){let r=new j(["projects",e.projectId,"databases",e.database]).child("documents");return void 0===t?r:r.child(t)}function ia(e){let t=j.fromString(e);return N(iE(t),10190,{key:t.toString()}),t}function io(e,t){return ii(e.databaseId,t.path)}function il(e,t){let r=ia(t);if(r.get(1)!==e.databaseId.projectId)throw new C(D.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+r.get(1)+" vs "+e.databaseId.projectId);if(r.get(3)!==e.databaseId.database)throw new C(D.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+r.get(3)+" vs "+e.databaseId.database);return new H(id(r))}function iu(e,t){return ii(e.databaseId,t)}function ih(e){let t=ia(e);return 4===t.length?j.emptyPath():id(t)}function ic(e){return new j(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function id(e){return N(e.length>4&&"documents"===e.get(4),29091,{key:e.toString()}),e.popFirst(5)}function im(e,t,r){return{name:io(e,t),fields:r.value.mapValue.fields}}function ig(e,t,r){let n=il(e,t.name),i=ir(t.updateTime),s=t.createTime?ir(t.createTime):es.min(),a=new rw({mapValue:{fields:t.fields}}),o=rv.newFoundDocument(n,i,s,a);return r&&o.setHasCommittedMutations(),r?o.setHasCommittedMutations():o}function ip(e,t){var r;let n;if(t instanceof nA)n={update:im(e,t.key,t.value)};else if(t instanceof nO)n={delete:io(e,t.key)};else if(t instanceof nk)n={update:im(e,t.key,t.data),updateMask:function(e){let t=[];return e.fields.forEach(e=>t.push(e.canonicalString())),{fieldPaths:t}}(t.fieldMask)};else{if(!(t instanceof nF))return S(16599,{Vt:t.type});n={verify:io(e,t.key)}}return t.fieldTransforms.length>0&&(n.updateTransforms=t.fieldTransforms.map(e=>(function(e,t){let r=t.transform;if(r instanceof nm)return{fieldPath:t.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(r instanceof ng)return{fieldPath:t.field.canonicalString(),appendMissingElements:{values:r.elements}};if(r instanceof ny)return{fieldPath:t.field.canonicalString(),removeAllFromArray:{values:r.elements}};if(r instanceof nv)return{fieldPath:t.field.canonicalString(),increment:r.Ae};throw S(20930,{transform:t.transform})})(0,e))),t.precondition.isNone||(n.currentDocument=void 0!==(r=t.precondition).updateTime?{updateTime:ie(e,r.updateTime.toTimestamp())}:void 0!==r.exists?{exists:r.exists}:S(27497)),n}function iy(e,t){var r;let n=t.currentDocument?void 0!==(r=t.currentDocument).updateTime?n_.updateTime(ir(r.updateTime)):void 0!==r.exists?n_.exists(r.exists):n_.none():n_.none(),i=t.updateTransforms?t.updateTransforms.map(t=>{let r;return r=null,"setToServerValue"in t?(N("REQUEST_TIME"===t.setToServerValue,16630,{proto:t}),r=new nm):"appendMissingElements"in t?r=new ng(t.appendMissingElements.values||[]):"removeAllFromArray"in t?r=new ny(t.removeAllFromArray.values||[]):"increment"in t?r=new nv(e,t.increment):S(16584,{proto:t}),new nb(W.fromServerFormat(t.fieldPath),r)}):[];if(t.update){t.update.name;let r=il(e,t.update.name),s=new rw({mapValue:{fields:t.update.fields}});return t.updateMask?new nk(r,s,new tq((t.updateMask.fieldPaths||[]).map(e=>W.fromServerFormat(e))),n,i):new nA(r,s,n,i)}return t.delete?new nO(il(e,t.delete),n):t.verify?new nF(il(e,t.verify),n):S(1463,{proto:t})}function iw(e,t){return{documents:[iu(e,t.path)]}}function iv(e,t){var r,n;let i,s={structuredQuery:{}},a=t.path;null!==t.collectionGroup?(i=a,s.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(i=a.popLast(),s.structuredQuery.from=[{collectionId:a.lastSegment()}]),s.parent=iu(e,i);let o=function(e){if(0!==e.length)return function e(t){return t instanceof rS?function(e){if("=="===e.op){if(rh(e.value))return{unaryFilter:{field:iT(e.field),op:"IS_NAN"}};if(ru(e.value))return{unaryFilter:{field:iT(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(rh(e.value))return{unaryFilter:{field:iT(e.field),op:"IS_NOT_NAN"}};if(ru(e.value))return{unaryFilter:{field:iT(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:iT(e.field),op:n6[e.op],value:e.value}}}(t):t instanceof rx?function(t){let r=t.getFilters().map(t=>e(t));return 1===r.length?r[0]:{compositeFilter:{op:n8[t.op],filters:r}}}(t):S(54877,{filter:t})}(rx.create(e,"and"))}(t.filters);o&&(s.structuredQuery.where=o);let l=function(e){if(0!==e.length)return e.map(e=>({field:iT(e.field),direction:n3[e.dir]}))}(t.orderBy);l&&(s.structuredQuery.orderBy=l);let u=n7(e,t.limit);return null!==u&&(s.structuredQuery.limit=u),t.startAt&&(s.structuredQuery.startAt={before:(r=t.startAt).inclusive,values:r.position}),t.endAt&&(s.structuredQuery.endAt={before:!(n=t.endAt).inclusive,values:n.position}),{ft:s,parent:i}}function iI(e){var t;let r,n=ih(e.parent),i=e.structuredQuery,s=i.from?i.from.length:0,a=null;if(s>0){N(1===s,65062);let e=i.from[0];e.allDescendants?a=e.collectionId:n=n.child(e.collectionId)}let o=[];i.where&&(o=function(e){let t=function e(t){return void 0!==t.unaryFilter?function(e){switch(e.unaryFilter.op){case"IS_NAN":let t=ib(e.unaryFilter.field);return rS.create(t,"==",{doubleValue:NaN});case"IS_NULL":let r=ib(e.unaryFilter.field);return rS.create(r,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":let n=ib(e.unaryFilter.field);return rS.create(n,"!=",{doubleValue:NaN});case"IS_NOT_NULL":let i=ib(e.unaryFilter.field);return rS.create(i,"!=",{nullValue:"NULL_VALUE"});case"OPERATOR_UNSPECIFIED":return S(61313);default:return S(60726)}}(t):void 0!==t.fieldFilter?rS.create(ib(t.fieldFilter.field),function(e){switch(e){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";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";case"OPERATOR_UNSPECIFIED":return S(58110);default:return S(50506)}}(t.fieldFilter.op),t.fieldFilter.value):void 0!==t.compositeFilter?rx.create(t.compositeFilter.filters.map(t=>e(t)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return S(1026)}}(t.compositeFilter.op)):S(30097,{filter:t})}(e);return t instanceof rx&&rC(t)?t.getFilters():[t]}(i.where));let l=[];i.orderBy&&(l=i.orderBy.map(e=>new rE(ib(e.field),function(e){switch(e){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(e.direction))));let u=null;i.limit&&(u=eM(r="object"==typeof(t=i.limit)?t.value:t)?null:r);let h=null;i.startAt&&(h=function(e){let t=!!e.before;return new rI(e.values||[],t)}(i.startAt));let c=null;return i.endAt&&(c=function(e){let t=!e.before;return new rI(e.values||[],t)}(i.endAt)),new rW(n,a,l,o,u,"F",h,c)}function iT(e){return{fieldPath:e.canonicalString()}}function ib(e){return W.fromServerFormat(e.fieldPath)}function iE(e){return e.length>=4&&"projects"===e.get(0)&&"databases"===e.get(2)}class i_{constructor(e,t,r,n,i=es.min(),s=es.min(),a=tz.EMPTY_BYTE_STRING,o=null){this.target=e,this.targetId=t,this.purpose=r,this.sequenceNumber=n,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=s,this.resumeToken=a,this.expectedCount=o}withSequenceNumber(e){return new i_(this.target,this.targetId,this.purpose,e,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(e,t){return new i_(this.target,this.targetId,this.purpose,this.sequenceNumber,t,this.lastLimboFreeSnapshotVersion,e,null)}withExpectedCount(e){return new i_(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,e)}withLastLimboFreeSnapshotVersion(e){return new i_(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,e,this.resumeToken,this.expectedCount)}}class iS{constructor(e){this.yt=e}}function ix(e,t){let r=t.key,n={prefixPath:r.getCollectionPath().popLast().toArray(),collectionGroup:r.collectionGroup,documentId:r.path.lastSegment(),readTime:iN(t.readTime),hasCommittedMutations:t.hasCommittedMutations};if(t.isFoundDocument()){var i;n.document={name:io(i=e.yt,t.key),fields:t.data.value.mapValue.fields,updateTime:ie(i,t.version.toTimestamp()),createTime:ie(i,t.createTime.toTimestamp())}}else if(t.isNoDocument())n.noDocument={path:r.path.toArray(),readTime:iD(t.version)};else{if(!t.isUnknownDocument())return S(57904,{document:t});n.unknownDocument={path:r.path.toArray(),version:iD(t.version)}}return n}function iN(e){let t=e.toTimestamp();return[t.seconds,t.nanoseconds]}function iD(e){let t=e.toTimestamp();return{seconds:t.seconds,nanoseconds:t.nanoseconds}}function iC(e){let t=new ei(e.seconds,e.nanoseconds);return es.fromTimestamp(t)}function iA(e,t){let r=(t.baseMutations||[]).map(t=>iy(e.yt,t));for(let e=0;eiy(e.yt,t)),i=ei.fromMillis(t.localWriteTimeMs);return new nP(t.batchId,i,r,n)}function ik(e){let t=iC(e.readTime),r=void 0!==e.lastLimboFreeSnapshotVersion?iC(e.lastLimboFreeSnapshotVersion):es.min();return new i_(void 0!==e.query.documents?function(e){let t=e.documents.length;return N(1===t,1966,{count:t}),rZ(rH(ih(e.documents[0])))}(e.query):rZ(iI(e.query)),e.targetId,"TargetPurposeListen",e.lastListenSequenceNumber,t,r,tz.fromBase64String(e.resumeToken))}function iR(e,t){let r,n=iD(t.snapshotVersion),i=iD(t.lastLimboFreeSnapshotVersion);r=r$(t.target)?iw(e.yt,t.target):iv(e.yt,t.target).ft;let s=t.resumeToken.toBase64();return{targetId:t.targetId,canonicalId:rz(t.target),readTime:n,resumeToken:s,lastListenSequenceNumber:t.sequenceNumber,lastLimboFreeSnapshotVersion:i,query:r}}function iV(e){let t=iI({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?r2(t,t.limit,"L"):t}function iM(e,t){return new nU(t.largestBatchId,iy(e.yt,t.overlayMutation))}function iO(e,t){let r=t.path.lastSegment();return[e,eP(t.path.popLast()),r]}function iF(e,t,r,n){return{indexId:e,uid:t,sequenceNumber:r,readTime:iD(n.readTime),documentKey:eP(n.documentKey.path),largestBatchId:n.largestBatchId}}class iP{getBundleMetadata(e,t){return tA(e,ts).get(t).next(e=>{if(e)return{id:e.bundleId,createTime:iC(e.createTime),version:e.version}})}saveBundleMetadata(e,t){return tA(e,ts).put({bundleId:t.id,createTime:iD(ir(t.createTime)),version:t.version})}getNamedQuery(e,t){return tA(e,ta).get(t).next(e=>{if(e)return{name:e.name,query:iV(e.bundledQuery),readTime:iC(e.readTime)}})}saveNamedQuery(e,t){return tA(e,ta).put({name:t.name,readTime:iD(ir(t.readTime)),bundledQuery:t.bundledQuery})}}class iL{constructor(e,t){this.serializer=e,this.userId=t}static wt(e,t){return new iL(e,t.uid||"")}getOverlay(e,t){return tA(e,ty).get(iO(this.userId,t)).next(e=>e?iM(this.serializer,e):null)}getOverlays(e,t){let r=ni();return ew.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&r.set(t,e)})).next(()=>r)}saveOverlays(e,t,r){let n=[];return r.forEach((r,i)=>{let s=new nU(t,i);n.push(this.St(e,s))}),ew.waitFor(n)}removeOverlaysForBatchId(e,t,r){let n=new Set;t.forEach(e=>n.add(eP(e.getCollectionPath())));let i=[];return n.forEach(t=>{let n=IDBKeyRange.bound([this.userId,t,r],[this.userId,t,r+1],!1,!0);i.push(tA(e,ty).Z(tv,n))}),ew.waitFor(i)}getOverlaysForCollection(e,t,r){let n=ni(),i=eP(t),s=IDBKeyRange.bound([this.userId,i,r],[this.userId,i,Number.POSITIVE_INFINITY],!0);return tA(e,ty).J(tv,s).next(e=>{for(let t of e){let e=iM(this.serializer,t);n.set(e.getKey(),e)}return n})}getOverlaysForCollectionGroup(e,t,r,n){let i,s=ni(),a=IDBKeyRange.bound([this.userId,t,r],[this.userId,t,Number.POSITIVE_INFINITY],!0);return tA(e,ty).ee({index:tT,range:a},(e,t,r)=>{let a=iM(this.serializer,t);s.size()s)}St(e,t){return tA(e,ty).put(function(e,t,r){let[n,i,s]=iO(t,r.mutation.key);return{userId:t,collectionPath:i,documentId:s,collectionGroup:r.mutation.key.getCollectionGroup(),largestBatchId:r.largestBatchId,overlayMutation:ip(e.yt,r.mutation)}}(this.serializer,this.userId,t))}}class iU{bt(e){return tA(e,tE)}getSessionToken(e){return this.bt(e).get("sessionToken").next(e=>{let t=e?.value;return t?tz.fromUint8Array(t):tz.EMPTY_BYTE_STRING})}setSessionToken(e,t){return this.bt(e).put({name:"sessionToken",value:t.toUint8Array()})}}class iq{constructor(){}Dt(e,t){this.Ct(e,t),t.vt()}Ct(e,t){if("nullValue"in e)this.Ft(t,5);else if("booleanValue"in e)this.Ft(t,10),t.Mt(+!!e.booleanValue);else if("integerValue"in e)this.Ft(t,15),t.Mt(tG(e.integerValue));else if("doubleValue"in e){let r=tG(e.doubleValue);isNaN(r)?this.Ft(t,13):(this.Ft(t,15),eO(r)?t.Mt(0):t.Mt(r))}else if("timestampValue"in e){let r=e.timestampValue;this.Ft(t,20),"string"==typeof r&&(r=t$(r)),t.xt(`${r.seconds||""}`),t.Mt(r.nanos||0)}else if("stringValue"in e)this.Ot(e.stringValue,t),this.Nt(t);else if("bytesValue"in e)this.Ft(t,30),t.Bt(tj(e.bytesValue)),this.Nt(t);else if("referenceValue"in e)this.Lt(e.referenceValue,t);else if("geoPointValue"in e){let r=e.geoPointValue;this.Ft(t,45),t.Mt(r.latitude||0),t.Mt(r.longitude||0)}else"mapValue"in e?rm(e)?this.Ft(t,Number.MAX_SAFE_INTEGER):rd(e)?this.kt(e.mapValue,t):(this.qt(e.mapValue,t),this.Nt(t)):"arrayValue"in e?(this.Qt(e.arrayValue,t),this.Nt(t)):S(19022,{$t:e})}Ot(e,t){this.Ft(t,25),this.Ut(e,t)}Ut(e,t){t.xt(e)}qt(e,t){let r=e.fields||{};for(let e of(this.Ft(t,55),Object.keys(r)))this.Ot(e,t),this.Ct(r[e],t)}kt(e,t){let r=e.fields||{};this.Ft(t,53);let n=r[t8].arrayValue?.values?.length||0;this.Ft(t,15),t.Mt(tG(n)),this.Ot(t8,t),this.Ct(r[t8],t)}Qt(e,t){let r=e.values||[];for(let e of(this.Ft(t,50),r))this.Ct(e,t)}Lt(e,t){this.Ft(t,37),H.fromName(e).path.forEach(e=>{this.Ft(t,60),this.Ut(e,t)})}Ft(e,t){e.Mt(t)}Nt(e){e.Mt(2)}}function iB(e){return Math.ceil((64-function(e){let t=0;for(let r=0;r<8;++r){let n=function(e){if(0===e)return 8;let t=0;return e>>4||(t+=4,e<<=4),e>>6||(t+=2,e<<=2),e>>7||(t+=1),t}(255&e[r]);if(t+=n,8!==n)break}return t}(e))/8)}iq.Kt=new iq;class iz{constructor(){this.buffer=new Uint8Array(1024),this.position=0}Wt(e){let t=e[Symbol.iterator](),r=t.next();for(;!r.done;)this.Gt(r.value),r=t.next();this.zt()}jt(e){let t=e[Symbol.iterator](),r=t.next();for(;!r.done;)this.Jt(r.value),r=t.next();this.Ht()}Yt(e){for(let t of e){let e=t.charCodeAt(0);if(e<128)this.Gt(e);else if(e<2048)this.Gt(960|e>>>6),this.Gt(128|63&e);else if(t<"\ud800"||"\udbff">>12),this.Gt(128|63&e>>>6),this.Gt(128|63&e);else{let e=t.codePointAt(0);this.Gt(240|e>>>18),this.Gt(128|63&e>>>12),this.Gt(128|63&e>>>6),this.Gt(128|63&e)}}this.zt()}Zt(e){for(let t of e){let e=t.charCodeAt(0);if(e<128)this.Jt(e);else if(e<2048)this.Jt(960|e>>>6),this.Jt(128|63&e);else if(t<"\ud800"||"\udbff">>12),this.Jt(128|63&e>>>6),this.Jt(128|63&e);else{let e=t.codePointAt(0);this.Jt(240|e>>>18),this.Jt(128|63&e>>>12),this.Jt(128|63&e>>>6),this.Jt(128|63&e)}}this.Ht()}Xt(e){let t=this.en(e),r=iB(t);this.tn(1+r),this.buffer[this.position++]=255&r;for(let e=t.length-r;eW.comparator(e.field,t.field)),this.collectionId=null!=e.collectionGroup?e.collectionGroup:e.path.lastSegment(),this.fn=e.orderBy,this.gn=[],e.filters))t.isInequality()?this.mn=this.mn.add(t):this.gn.push(t)}get pn(){return this.mn.size>1}yn(e){if(N(e.collectionGroup===this.collectionId,49279),this.pn)return!1;let t=eo(e);if(void 0!==t&&!this.wn(t))return!1;let r=el(e),n=new Set,i=0,s=0;for(;i0){let e=this.mn.getIterator().getNext();if(!n.has(e.field.canonicalString())){let t=r[i];if(!this.Sn(e,t)||!this.bn(this.fn[s++],t))return!1}++i}for(;i=this.fn.length||!this.bn(this.fn[s++],e))return!1}return!0}Dn(){if(this.pn)return null;let e=new tP(W.comparator),t=[];for(let r of this.gn)if(!r.field.isKeyField())if("array-contains"===r.op||"array-contains-any"===r.op)t.push(new eu(r.field,2));else{if(e.has(r.field))continue;e=e.add(r.field),t.push(new eu(r.field,0))}for(let r of this.fn)r.field.isKeyField()||e.has(r.field)||(e=e.add(r.field),t.push(new eu(r.field,+("asc"!==r.dir))));return new ea(ea.UNKNOWN_ID,this.collectionId,t,eh.empty())}wn(e){for(let t of this.gn)if(this.Sn(t,e))return!0;return!1}Sn(e,t){if(void 0===e||!e.field.isEqual(t.fieldPath))return!1;let r="array-contains"===e.op||"array-contains-any"===e.op;return 2===t.kind===r}bn(e,t){return!!e.field.isEqual(t.fieldPath)&&(0===t.kind&&"asc"===e.dir||1===t.kind&&"desc"===e.dir)}}function iX(e){return e instanceof rS}function iZ(e){return e instanceof rx&&rC(e)}function i0(e){return iX(e)||iZ(e)||function(e){if(e instanceof rx&&rD(e)){for(let t of e.getFilters())if(!iX(t)&&!iZ(t))return!1;return!0}return!1}(e)}function i1(e,t){return N(e instanceof rS||e instanceof rx,38388),N(t instanceof rS||t instanceof rx,25473),i4(e instanceof rS?t instanceof rS?rx.create([e,t],"and"):i2(e,t):t instanceof rS?i2(t,e):function(e,t){if(N(e.filters.length>0&&t.filters.length>0,48005),rN(e)&&rN(t))return rk(e,t.getFilters());let r=rD(e)?e:t,n=rD(e)?t:e,i=r.filters.map(e=>i1(e,n));return rx.create(i,"or")}(e,t))}function i2(e,t){if(rN(t))return rk(t,e.getFilters());{let r=t.filters.map(t=>i1(e,t));return rx.create(r,"or")}}function i4(e){if(N(e instanceof rS||e instanceof rx,11850),e instanceof rS)return e;let t=e.getFilters();if(1===t.length)return i4(t[0]);if(rA(e))return e;let r=t.map(e=>i4(e)),n=[];return r.forEach(t=>{t instanceof rS?n.push(t):t instanceof rx&&(t.op===e.op?n.push(...t.filters):n.push(t))}),1===n.length?n[0]:rx.create(n,e.op)}class i5{constructor(){this.Cn=new i3}addToCollectionParentIndex(e,t){return this.Cn.add(t),ew.resolve()}getCollectionParents(e,t){return ew.resolve(this.Cn.getEntries(t))}addFieldIndex(e,t){return ew.resolve()}deleteFieldIndex(e,t){return ew.resolve()}deleteAllFieldIndexes(e){return ew.resolve()}createTargetIndexes(e,t){return ew.resolve()}getDocumentsMatchingTarget(e,t){return ew.resolve(null)}getIndexType(e,t){return ew.resolve(0)}getFieldIndexes(e,t){return ew.resolve([])}getNextCollectionGroupToUpdate(e){return ew.resolve(null)}getMinOffset(e,t){return ew.resolve(ef.min())}getMinOffsetFromCollectionGroup(e,t){return ew.resolve(ef.min())}updateCollectionGroup(e,t,r){return ew.resolve()}updateIndexEntries(e,t){return ew.resolve()}}class i3{constructor(){this.index={}}add(e){let t=e.lastSegment(),r=e.popLast(),n=this.index[t]||new tP(j.comparator),i=!n.has(r);return this.index[t]=n.add(r),i}has(e){let t=e.lastSegment(),r=e.popLast(),n=this.index[t];return n&&n.has(r)}getEntries(e){return(this.index[e]||new tP(j.comparator)).toArray()}}let i6="IndexedDbIndexManager",i8=new Uint8Array(0);class i9{constructor(e,t){this.databaseId=t,this.vn=new i3,this.Fn=new r7(e=>rz(e),(e,t)=>rK(e,t)),this.uid=e.uid||""}addToCollectionParentIndex(e,t){if(!this.vn.has(t)){let r=t.lastSegment(),n=t.popLast();e.addOnCommittedListener(()=>{this.vn.add(t)});let i={collectionId:r,parent:eP(n)};return tA(e,tr).put(i)}return ew.resolve()}getCollectionParents(e,t){let r=[],n=IDBKeyRange.bound([t,""],[t+"\0",""],!1,!0);return tA(e,tr).J(n).next(e=>{for(let n of e){if(n.collectionId!==t)break;r.push(eL(n.parent))}return r})}addFieldIndex(e,t){let r=tA(e,to),n={indexId:t.indexId,collectionGroup:t.collectionGroup,fields:t.fields.map(e=>[e.fieldPath.canonicalString(),e.kind])};delete n.indexId;let i=r.add(n);if(t.indexState){let r=tA(e,tu);return i.next(e=>{r.put(iF(e,this.uid,t.indexState.sequenceNumber,t.indexState.offset))})}return i.next()}deleteFieldIndex(e,t){let r=tA(e,to),n=tA(e,tu),i=tA(e,tf);return r.delete(t.indexId).next(()=>n.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0))).next(()=>i.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0)))}deleteAllFieldIndexes(e){let t=tA(e,to),r=tA(e,tf),n=tA(e,tu);return t.Z().next(()=>r.Z()).next(()=>n.Z())}createTargetIndexes(e,t){return ew.forEach(this.Mn(t),t=>this.getIndexType(e,t).next(r=>{if(0===r||1===r){let r=new iY(t).Dn();if(null!=r)return this.addFieldIndex(e,r)}}))}getDocumentsMatchingTarget(e,t){let r=tA(e,tf),n=!0,i=new Map;return ew.forEach(this.Mn(t),t=>this.xn(e,t).next(e=>{n&&(n=!!e),i.set(t,e)})).next(()=>{if(n){let e=no(),n=[];return ew.forEach(i,(i,s)=>{T(i6,`Using index id=${i.indexId}|cg=${i.collectionGroup}|f=${i.fields.map(e=>`${e.fieldPath}:${e.kind}`).join(",")} to execute ${rz(t)}`);let a=function(e,t){let r=eo(t);if(void 0===r)return null;for(let t of rG(e,r.fieldPath))switch(t.op){case"array-contains-any":return t.value.arrayValue.values||[];case"array-contains":return[t.value]}return null}(s,i),o=function(e,t){let r=new Map;for(let n of el(t))for(let t of rG(e,n.fieldPath))switch(t.op){case"==":case"in":r.set(n.fieldPath.canonicalString(),t.value);break;case"not-in":case"!=":return r.set(n.fieldPath.canonicalString(),t.value),Array.from(r.values())}return null}(s,i),l=function(e,t){let r=[],n=!0;for(let i of el(t)){let t=0===i.kind?rj(e,i.fieldPath,e.startAt):rQ(e,i.fieldPath,e.startAt);r.push(t.value),n&&(n=t.inclusive)}return new rI(r,n)}(s,i),u=function(e,t){let r=[],n=!0;for(let i of el(t)){let t=0===i.kind?rQ(e,i.fieldPath,e.endAt):rj(e,i.fieldPath,e.endAt);r.push(t.value),n&&(n=t.inclusive)}return new rI(r,n)}(s,i),h=this.On(i,s,l),c=this.On(i,s,u),d=this.Nn(i,s,o),f=this.Bn(i.indexId,a,h,l.inclusive,c,u.inclusive,d);return ew.forEach(f,i=>r.Y(i,t.limit).next(t=>{t.forEach(t=>{let r=H.fromSegments(t.documentKey);e.has(r)||(e=e.add(r),n.push(r))})}))}).next(()=>n)}return ew.resolve(null)})}Mn(e){let t=this.Fn.get(e);return t||(t=0===e.filters.length?[e]:(function(e){if(0===e.getFilters().length)return[];let t=function e(t){if(N(t instanceof rS||t instanceof rx,34018),t instanceof rS)return t;if(1===t.filters.length)return e(t.filters[0]);let r=t.filters.map(t=>e(t)),n=rx.create(r,t.op);return i0(n=i4(n))?n:(N(n instanceof rx,64498),N(rN(n),40251),N(n.filters.length>1,57927),n.filters.reduce((e,t)=>i1(e,t)))}(function e(t){if(N(t instanceof rS||t instanceof rx,20012),t instanceof rS){if(t instanceof rP){let e=t.value.arrayValue?.values?.map(e=>rS.create(t.field,"==",e))||[];return rx.create(e,"or")}return t}let r=t.filters.map(t=>e(t));return rx.create(r,t.op)}(e));return N(i0(t),7391),iX(t)||iZ(t)?[t]:t.getFilters()})(rx.create(e.filters,"and")).map(t=>rB(e.path,e.collectionGroup,e.orderBy,t.getFilters(),e.limit,e.startAt,e.endAt)),this.Fn.set(e,t)),t}Bn(e,t,r,n,i,s,a){let o=(null!=t?t.length:1)*Math.max(r.length,i.length),l=o/(null!=t?t.length:1),u=[];for(let h=0;hthis.kn(e,o,t,!0));u.push(...this.createRange(c,d,f))}return u}kn(e,t,r,n){let i=new ij(e,H.empty(),t,r);return n?i:i.An()}qn(e,t,r,n){let i=new ij(e,H.empty(),t,r);return n?i.An():i}xn(e,t){let r=new iY(t),n=null!=t.collectionGroup?t.collectionGroup:t.path.lastSegment();return this.getFieldIndexes(e,n).next(e=>{let t=null;for(let n of e)r.yn(n)&&(!t||n.fields.length>t.fields.length)&&(t=n);return t})}getIndexType(e,t){let r=2,n=this.Mn(t);return ew.forEach(n,t=>this.xn(e,t).next(e=>{e?0!==r&&e.fields.lengthnull!==t.limit&&n.length>1&&2===r?1:r)}Qn(e,t){let r=new iG;for(let n of el(e)){let e=t.data.field(n.fieldPath);if(null==e)return null;let i=r.Pn(n.kind);iq.Kt.Dt(e,i)}return r.un()}Ln(e){let t=new iG;return iq.Kt.Dt(e,t.Pn(0)),t.un()}$n(e,t){let r=new iG;return iq.Kt.Dt(ra(this.databaseId,t),r.Pn(function(e){let t=el(e);return 0===t.length?0:t[t.length-1].kind}(e))),r.un()}Nn(e,t,r){if(null===r)return[];let n=[];n.push(new iG);let i=0;for(let s of el(e)){let e=r[i++];for(let r of n)if(this.Un(t,s.fieldPath)&&rl(e))n=this.Kn(n,s,e);else{let t=r.Pn(s.kind);iq.Kt.Dt(e,t)}}return this.Wn(n)}On(e,t,r){return this.Nn(e,t,r.position)}Wn(e){let t=[];for(let r=0;re instanceof rS&&e.field.isEqual(t)&&("in"===e.op||"not-in"===e.op))}getFieldIndexes(e,t){let r=tA(e,to),n=tA(e,tu);return(t?r.J(tl,IDBKeyRange.bound(t,t)):r.J()).next(e=>{let t=[];return ew.forEach(e,e=>n.get([e.indexId,this.uid]).next(r=>{t.push(function(e,t){let r=t?new eh(t.sequenceNumber,new ef(iC(t.readTime),new H(eL(t.documentKey)),t.largestBatchId)):eh.empty(),n=e.fields.map(([e,t])=>new eu(W.fromServerFormat(e),t));return new ea(e.indexId,e.collectionGroup,n,r)}(e,r))})).next(()=>t)})}getNextCollectionGroupToUpdate(e){return this.getFieldIndexes(e).next(e=>0===e.length?null:(e.sort((e,t)=>{let r=e.indexState.sequenceNumber-t.indexState.sequenceNumber;return 0!==r?r:q(e.collectionGroup,t.collectionGroup)}),e[0].collectionGroup))}updateCollectionGroup(e,t,r){let n=tA(e,to),i=tA(e,tu);return this.Gn(e).next(e=>n.J(tl,IDBKeyRange.bound(t,t)).next(t=>ew.forEach(t,t=>i.put(iF(t.indexId,this.uid,e,r)))))}updateIndexEntries(e,t){let r=new Map;return ew.forEach(t,(t,n)=>{let i=r.get(t.collectionGroup);return(i?ew.resolve(i):this.getFieldIndexes(e,t.collectionGroup)).next(i=>(r.set(t.collectionGroup,i),ew.forEach(i,r=>this.zn(e,t,r).next(t=>{let i=this.jn(n,r);return t.isEqual(i)?ew.resolve():this.Jn(e,n,r,t,i)}))))})}Hn(e,t,r,n){return tA(e,tf).put(n.Rn(this.uid,this.$n(r,t.key),t.key))}Yn(e,t,r,n){return tA(e,tf).delete(n.Vn(this.uid,this.$n(r,t.key),t.key))}zn(e,t,r){let n=tA(e,tf),i=new tP(iQ);return n.ee({index:tg,range:IDBKeyRange.only([r.indexId,this.uid,iH(this.$n(r,t))])},(e,n)=>{i=i.add(new ij(r.indexId,t,iJ(n.arrayValue),iJ(n.directionalValue)))}).next(()=>i)}jn(e,t){let r=new tP(iQ),n=this.Qn(t,e);if(null==n)return r;let i=eo(t);if(null!=i){let s=e.data.field(i.fieldPath);if(rl(s))for(let i of s.arrayValue.values||[])r=r.add(new ij(t.indexId,e.key,this.Ln(i),n))}else r=r.add(new ij(t.indexId,e.key,i8,n));return r}Jn(e,t,r,n,i){T(i6,"Updating index entries for document '%s'",t.key);let s=[];return function(e,t,r,n,i){let s=e.getIterator(),a=t.getIterator(),o=tU(s),l=tU(a);for(;o||l;){let e=!1,t=!1;if(o&&l){let n=r(o,l);n<0?t=!0:n>0&&(e=!0)}else null!=o?t=!0:e=!0;e?(n(l),l=tU(a)):t?(i(o),o=tU(s)):(o=tU(s),l=tU(a))}}(n,i,iQ,n=>{s.push(this.Hn(e,t,r,n))},n=>{s.push(this.Yn(e,t,r,n))}),ew.waitFor(s)}Gn(e){let t=1;return tA(e,tu).ee({index:tc,reverse:!0,range:IDBKeyRange.upperBound([this.uid,Number.MAX_SAFE_INTEGER])},(e,r,n)=>{n.done(),t=r.sequenceNumber+1}).next(()=>t)}createRange(e,t,r){r=r.sort((e,t)=>iQ(e,t)).filter((e,t,r)=>!t||0!==iQ(e,r[t-1]));let n=[];for(let i of(n.push(e),r)){let r=iQ(i,e),s=iQ(i,t);if(0===r)n[0]=e.An();else if(r>0&&s<0)n.push(i),n.push(i.An());else if(s>0)break}n.push(t);let i=[];for(let e=0;e0}getMinOffsetFromCollectionGroup(e,t){return this.getFieldIndexes(e,t).next(i7)}getMinOffset(e,t){return ew.mapArray(this.Mn(t),t=>this.xn(e,t).next(e=>e||S(44426))).next(i7)}}function i7(e){N(0!==e.length,28825);let t=e[0].indexState.offset,r=t.largestBatchId;for(let n=1;nem(i,t)&&(t=i),r(o++,r.delete()));s.push(l.next(()=>{N(1===o,47070,{batchId:r.batchId})}));let u=[];for(let e of r.mutations){var h,c;let n=(h=e.key.path,c=r.batchId,[t,eP(h),c]);s.push(i.delete(n)),u.push(e.key)}return ew.waitFor(s).next(()=>u)}function sn(e){let t;if(!e)return 0;if(e.document)t=e.document;else if(e.unknownDocument)t=e.unknownDocument;else{if(!e.noDocument)throw S(14731);t=e.noDocument}return JSON.stringify(t).length}st.DEFAULT_COLLECTION_PERCENTILE=10,st.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,st.DEFAULT=new st(0x2800000,st.DEFAULT_COLLECTION_PERCENTILE,st.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),st.DISABLED=new st(-1,0,0);class si{constructor(e,t,r,n){this.userId=e,this.serializer=t,this.indexManager=r,this.referenceDelegate=n,this.Xn={}}static wt(e,t,r,n){return N(""!==e.uid,64387),new si(e.isAuthenticated()?e.uid:"",t,r,n)}checkEmpty(e){let t=!0,r=IDBKeyRange.bound([this.userId,Number.NEGATIVE_INFINITY],[this.userId,Number.POSITIVE_INFINITY]);return sa(e).ee({index:eG,range:r},(e,r,n)=>{t=!1,n.done()}).next(()=>t)}addMutationBatch(e,t,r,n){let i=tA(e,eW),s=sa(e);return s.add({}).next(a=>{N("number"==typeof a,49019);let o=new nP(a,t,r,n),l=function(e,t,r){let n=r.baseMutations.map(t=>ip(e.yt,t)),i=r.mutations.map(t=>ip(e.yt,t));return{userId:t,batchId:r.batchId,localWriteTimeMs:r.localWriteTime.toMillis(),baseMutations:n,mutations:i}}(this.serializer,this.userId,o),u=[],h=new tP((e,t)=>q(e.canonicalString(),t.canonicalString()));for(let e of n){var c;let t=(c=this.userId,[c,eP(e.key.path),a]);h=h.add(e.key.path.popLast()),u.push(s.put(l)),u.push(i.put(t,eQ))}return h.forEach(t=>{u.push(this.indexManager.addToCollectionParentIndex(e,t))}),e.addOnCommittedListener(()=>{this.Xn[a]=o.keys()}),ew.waitFor(u).next(()=>o)})}lookupMutationBatch(e,t){return sa(e).get(t).next(e=>e?(N(e.userId===this.userId,48,"Unexpected user for mutation batch",{userId:e.userId,batchId:t}),iA(this.serializer,e)):null)}er(e,t){return this.Xn[t]?ew.resolve(this.Xn[t]):this.lookupMutationBatch(e,t).next(e=>{if(e){let r=e.keys();return this.Xn[t]=r,r}return null})}getNextMutationBatchAfterBatchId(e,t){let r=t+1,n=IDBKeyRange.lowerBound([this.userId,r]),i=null;return sa(e).ee({index:eG,range:n},(e,t,n)=>{t.userId===this.userId&&(N(t.batchId>=r,47524,{tr:r}),i=iA(this.serializer,t)),n.done()}).next(()=>i)}getHighestUnacknowledgedBatchId(e){let t=IDBKeyRange.upperBound([this.userId,Number.POSITIVE_INFINITY]),r=-1;return sa(e).ee({index:eG,range:t,reverse:!0},(e,t,n)=>{r=t.batchId,n.done()}).next(()=>r)}getAllMutationBatches(e){let t=IDBKeyRange.bound([this.userId,-1],[this.userId,Number.POSITIVE_INFINITY]);return sa(e).J(eG,t).next(e=>e.map(e=>iA(this.serializer,e)))}getAllMutationBatchesAffectingDocumentKey(e,t){let r=[this.userId,eP(t.path)],n=IDBKeyRange.lowerBound(r),i=[];return tA(e,eW).ee({range:n},(r,n,s)=>{let[a,o,l]=r,u=eL(o);if(a===this.userId&&t.path.isEqual(u))return sa(e).get(l).next(e=>{if(!e)throw S(61480,{nr:r,batchId:l});N(e.userId===this.userId,10503,"Unexpected user for mutation batch",{userId:e.userId,batchId:l}),i.push(iA(this.serializer,e))});s.done()}).next(()=>i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new tP(q),n=[];return t.forEach(t=>{let i=[this.userId,eP(t.path)],s=IDBKeyRange.lowerBound(i),a=tA(e,eW).ee({range:s},(e,n,i)=>{let[s,a,o]=e,l=eL(a);s===this.userId&&t.path.isEqual(l)?r=r.add(o):i.done()});n.push(a)}),ew.waitFor(n).next(()=>this.rr(e,r))}getAllMutationBatchesAffectingQuery(e,t){let r=t.path,n=r.length+1,i=[this.userId,eP(r)],s=IDBKeyRange.lowerBound(i),a=new tP(q);return tA(e,eW).ee({range:s},(e,t,i)=>{let[s,o,l]=e,u=eL(o);s===this.userId&&r.isPrefixOf(u)?u.length===n&&(a=a.add(l)):i.done()}).next(()=>this.rr(e,a))}rr(e,t){let r=[],n=[];return t.forEach(t=>{n.push(sa(e).get(t).next(e=>{if(null===e)throw S(35274,{batchId:t});N(e.userId===this.userId,9748,"Unexpected user for mutation batch",{userId:e.userId,batchId:t}),r.push(iA(this.serializer,e))}))}),ew.waitFor(n).next(()=>r)}removeMutationBatch(e,t){return sr(e.le,this.userId,t).next(r=>(e.addOnCommittedListener(()=>{this.ir(t.batchId)}),ew.forEach(r,t=>this.referenceDelegate.markPotentiallyOrphaned(e,t))))}ir(e){delete this.Xn[e]}performConsistencyCheck(e){return this.checkEmpty(e).next(t=>{if(!t)return ew.resolve();let r=IDBKeyRange.lowerBound([this.userId]),n=[];return tA(e,eW).ee({range:r},(e,t,r)=>{if(e[0]===this.userId){let t=eL(e[1]);n.push(t)}else r.done()}).next(()=>{N(0===n.length,56720,{sr:n.map(e=>e.canonicalString())})})})}containsKey(e,t){return ss(e,this.userId,t)}_r(e){return tA(e,ez).get(this.userId).next(e=>e||{userId:this.userId,lastAcknowledgedBatchId:-1,lastStreamToken:""})}}function ss(e,t,r){let n=[t,eP(r.path)],i=n[1],s=IDBKeyRange.lowerBound(n),a=!1;return tA(e,eW).ee({range:s,X:!0},(e,r,n)=>{let[s,o,l]=e;s===t&&o===i&&(a=!0),n.done()}).next(()=>a)}function sa(e){return tA(e,eK)}class so{constructor(e){this.ar=e}next(){return this.ar+=2,this.ar}static ur(){return new so(0)}static cr(){return new so(-1)}}class sl{constructor(e,t){this.referenceDelegate=e,this.serializer=t}allocateTargetId(e){return this.lr(e).next(t=>{let r=new so(t.highestTargetId);return t.highestTargetId=r.next(),this.hr(e,t).next(()=>t.highestTargetId)})}getLastRemoteSnapshotVersion(e){return this.lr(e).next(e=>es.fromTimestamp(new ei(e.lastRemoteSnapshotVersion.seconds,e.lastRemoteSnapshotVersion.nanoseconds)))}getHighestSequenceNumber(e){return this.lr(e).next(e=>e.highestListenSequenceNumber)}setTargetsMetadata(e,t,r){return this.lr(e).next(n=>(n.highestListenSequenceNumber=t,r&&(n.lastRemoteSnapshotVersion=r.toTimestamp()),t>n.highestListenSequenceNumber&&(n.highestListenSequenceNumber=t),this.hr(e,n)))}addTargetData(e,t){return this.Pr(e,t).next(()=>this.lr(e).next(r=>(r.targetCount+=1,this.Tr(t,r),this.hr(e,r))))}updateTargetData(e,t){return this.Pr(e,t)}removeTargetData(e,t){return this.removeMatchingKeysForTargetId(e,t.targetId).next(()=>tA(e,e4).delete(t.targetId)).next(()=>this.lr(e)).next(t=>(N(t.targetCount>0,8065),t.targetCount-=1,this.hr(e,t)))}removeTargets(e,t,r){let n=0,i=[];return tA(e,e4).ee((s,a)=>{let o=ik(a);o.sequenceNumber<=t&&null===r.get(o.targetId)&&(n++,i.push(this.removeTargetData(e,o)))}).next(()=>ew.waitFor(i)).next(()=>n)}forEachTarget(e,t){return tA(e,e4).ee((e,r)=>{t(ik(r))})}lr(e){return tA(e,tt).get(te).next(e=>(N(null!==e,2888),e))}hr(e,t){return tA(e,tt).put(te,t)}Pr(e,t){return tA(e,e4).put(iR(this.serializer,t))}Tr(e,t){let r=!1;return e.targetId>t.highestTargetId&&(t.highestTargetId=e.targetId,r=!0),e.sequenceNumber>t.highestListenSequenceNumber&&(t.highestListenSequenceNumber=e.sequenceNumber,r=!0),r}getTargetCount(e){return this.lr(e).next(e=>e.targetCount)}getTargetData(e,t){let r=rz(t),n=IDBKeyRange.bound([r,Number.NEGATIVE_INFINITY],[r,Number.POSITIVE_INFINITY]),i=null;return tA(e,e4).ee({range:n,index:e5},(e,r,n)=>{let s=ik(r);rK(t,s.target)&&(i=s,n.done())}).next(()=>i)}addMatchingKeys(e,t,r){let n=[],i=su(e);return t.forEach(t=>{let s=eP(t.path);n.push(i.put({targetId:r,path:s})),n.push(this.referenceDelegate.addReference(e,r,t))}),ew.waitFor(n)}removeMatchingKeys(e,t,r){let n=su(e);return ew.forEach(t,t=>{let i=eP(t.path);return ew.waitFor([n.delete([r,i]),this.referenceDelegate.removeReference(e,r,t)])})}removeMatchingKeysForTargetId(e,t){let r=su(e),n=IDBKeyRange.bound([t],[t+1],!1,!0);return r.delete(n)}getMatchingKeysForTargetId(e,t){let r=IDBKeyRange.bound([t],[t+1],!1,!0),n=su(e),i=no();return n.ee({range:r,X:!0},(e,t,r)=>{let n=new H(eL(e[1]));i=i.add(n)}).next(()=>i)}containsKey(e,t){let r=eP(t.path),n=IDBKeyRange.bound([r],[r+"\0"],!1,!0),i=0;return su(e).ee({index:e9,X:!0,range:n},([e,t],r,n)=>{0!==e&&(i++,n.done())}).next(()=>i>0)}At(e,t){return tA(e,e4).get(t).next(e=>e?ik(e):null)}}function su(e){return tA(e,e6)}let sh="LruGarbageCollector";function sc([e,t],[r,n]){let i=q(e,r);return 0===i?q(t,n):i}class sd{constructor(e){this.Ir=e,this.buffer=new tP(sc),this.Er=0}dr(){return++this.Er}Ar(e){let t=[e,this.dr()];if(this.buffer.sizesc(t,e)&&(this.buffer=this.buffer.delete(e).add(t))}}get maxValue(){return this.buffer.last()[0]}}class sf{constructor(e,t,r){this.garbageCollector=e,this.asyncQueue=t,this.localStore=r,this.Rr=null}start(){-1!==this.garbageCollector.params.cacheSizeCollectionThreshold&&this.Vr(6e4)}stop(){this.Rr&&(this.Rr.cancel(),this.Rr=null)}get started(){return null!==this.Rr}Vr(e){T(sh,`Garbage collection scheduled in ${e}ms`),this.Rr=this.asyncQueue.enqueueAfterDelay("lru_garbage_collection",e,async()=>{this.Rr=null;try{await this.localStore.collectGarbage(this.garbageCollector)}catch(e){eS(e)?T(sh,"Ignoring IndexedDB error during garbage collection: ",e):await ey(e)}await this.Vr(3e5)})}}class sm{constructor(e,t){this.mr=e,this.params=t}calculateTargetCount(e,t){return this.mr.gr(e).next(e=>Math.floor(t/100*e))}nthSequenceNumber(e,t){if(0===t)return ew.resolve(eV.ce);let r=new sd(t);return this.mr.forEachTarget(e,e=>r.Ar(e.sequenceNumber)).next(()=>this.mr.pr(e,e=>r.Ar(e))).next(()=>r.maxValue)}removeTargets(e,t,r){return this.mr.removeTargets(e,t,r)}removeOrphanedDocuments(e,t){return this.mr.removeOrphanedDocuments(e,t)}collect(e,t){return -1===this.params.cacheSizeCollectionThreshold?(T("LruGarbageCollector","Garbage collection skipped; disabled"),ew.resolve(se)):this.getCacheSize(e).next(r=>r(t>this.params.maximumSequenceNumbersToCollect?(T("LruGarbageCollector",`Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${t}`),n=this.params.maximumSequenceNumbersToCollect):n=t,s=Date.now(),this.nthSequenceNumber(e,n))).next(n=>(r=n,a=Date.now(),this.removeTargets(e,r,t))).next(t=>(i=t,o=Date.now(),this.removeOrphanedDocuments(e,r))).next(e=>(l=Date.now(),I()<=u.$b.DEBUG&&T("LruGarbageCollector",`LRU Garbage Collection Counted targets in ${s-h}ms Determined least recently used ${n} in `+(a-s)+"ms\n"+` Removed ${i} targets in `+(o-a)+"ms\n"+` Removed ${e} documents in `+(l-o)+"ms\n"+`Total Duration: ${l-h}ms`),ew.resolve({didRun:!0,sequenceNumbersCollected:n,targetsRemoved:i,documentsRemoved:e})))}}class sg{constructor(e,t){this.db=e,this.garbageCollector=new sm(this,t)}gr(e){let t=this.wr(e);return this.db.getTargetCache().getTargetCount(e).next(e=>t.next(t=>e+t))}wr(e){let t=0;return this.pr(e,e=>{t++}).next(()=>t)}forEachTarget(e,t){return this.db.getTargetCache().forEachTarget(e,t)}pr(e,t){return this.Sr(e,(e,r)=>t(r))}addReference(e,t,r){return sp(e,r)}removeReference(e,t,r){return sp(e,r)}removeTargets(e,t,r){return this.db.getTargetCache().removeTargets(e,t,r)}markPotentiallyOrphaned(e,t){return sp(e,t)}br(e,t){let r;return r=!1,tA(e,ez).te(n=>ss(e,n,t).next(e=>(e&&(r=!0),ew.resolve(!e)))).next(()=>r)}removeOrphanedDocuments(e,t){let r=this.db.getRemoteDocumentCache().newChangeBuffer(),n=[],i=0;return this.Sr(e,(s,a)=>{if(a<=t){let t=this.br(e,s).next(t=>{if(!t)return i++,r.getEntry(e,s).next(()=>(r.removeEntry(s,es.min()),su(e).delete([0,eP(s.path)])))});n.push(t)}}).next(()=>ew.waitFor(n)).next(()=>r.apply(e)).next(()=>i)}removeTarget(e,t){let r=t.withSequenceNumber(e.currentSequenceNumber);return this.db.getTargetCache().updateTargetData(e,r)}updateLimboDocument(e,t){return sp(e,t)}Sr(e,t){let r=su(e),n,i=eV.ce;return r.ee({index:e9},([e,r],{path:s,sequenceNumber:a})=>{0===e?(i!==eV.ce&&t(new H(eL(n)),i),i=a,n=s):i=eV.ce}).next(()=>{i!==eV.ce&&t(new H(eL(n)),i)})}getCacheSize(e){return this.db.getRemoteDocumentCache().getSize(e)}}function sp(e,t){var r;return su(e).put((r=e.currentSequenceNumber,{targetId:0,path:eP(t.path),sequenceNumber:r}))}class sy{constructor(){this.changes=new r7(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,rv.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();let r=this.changes.get(t);return void 0!==r?ew.resolve(r):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 sw{constructor(e){this.serializer=e}setIndexManager(e){this.indexManager=e}addEntry(e,t,r){return tA(e,eH).put(r)}removeEntry(e,t,r){return tA(e,eH).delete(function(e,t){let r=e.path.toArray();return[r.slice(0,r.length-2),r[r.length-2],iN(t),r[r.length-1]]}(t,r))}updateMetadata(e,t){return this.getMetadata(e).next(r=>(r.byteSize+=t,this.Dr(e,r)))}getEntry(e,t){let r=rv.newInvalidDocument(t);return tA(e,eH).ee({index:eY,range:IDBKeyRange.only(sI(t))},(e,n)=>{r=this.Cr(t,n)}).next(()=>r)}vr(e,t){let r={size:0,document:rv.newInvalidDocument(t)};return tA(e,eH).ee({index:eY,range:IDBKeyRange.only(sI(t))},(e,n)=>{r={document:this.Cr(t,n),size:sn(n)}}).next(()=>r)}getEntries(e,t){let r=ne;return this.Fr(e,t,(e,t)=>{let n=this.Cr(e,t);r=r.insert(e,n)}).next(()=>r)}Mr(e,t){let r=ne,n=new tM(H.comparator);return this.Fr(e,t,(e,t)=>{let i=this.Cr(e,t);r=r.insert(e,i),n=n.insert(e,sn(t))}).next(()=>({documents:r,Or:n}))}Fr(e,t,r){if(t.isEmpty())return ew.resolve();let n=new tP(sb);t.forEach(e=>n=n.add(e));let i=IDBKeyRange.bound(sI(n.first()),sI(n.last())),s=n.getIterator(),a=s.getNext();return tA(e,eH).ee({index:eY,range:i},(e,t,n)=>{let i=H.fromSegments([...t.prefixPath,t.collectionGroup,t.documentId]);for(;a&&0>sb(a,i);)r(a,null),a=s.getNext();a&&a.isEqual(i)&&(r(a,t),a=s.hasNext()?s.getNext():null),a?n.j(sI(a)):n.done()}).next(()=>{for(;a;)r(a,null),a=s.hasNext()?s.getNext():null})}getDocumentsMatchingQuery(e,t,r,n,i){let s=t.path,a=[s.popLast().toArray(),s.lastSegment(),iN(r.readTime),r.documentKey.path.isEmpty()?"":r.documentKey.path.lastSegment()],o=[s.popLast().toArray(),s.lastSegment(),[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],""];return tA(e,eH).J(IDBKeyRange.bound(a,o,!0)).next(e=>{i?.incrementDocumentReadCount(e.length);let r=ne;for(let i of e){let e=this.Cr(H.fromSegments(i.prefixPath.concat(i.collectionGroup,i.documentId)),i);e.isFoundDocument()&&(r6(t,e)||n.has(e.key))&&(r=r.insert(e.key,e))}return r})}getAllFromCollectionGroup(e,t,r,n){let i=ne,s=sT(t,r),a=sT(t,ef.max());return tA(e,eH).ee({index:eZ,range:IDBKeyRange.bound(s,a,!0)},(e,t,r)=>{let s=this.Cr(H.fromSegments(t.prefixPath.concat(t.collectionGroup,t.documentId)),t);(i=i.insert(s.key,s)).size===n&&r.done()}).next(()=>i)}newChangeBuffer(e){return new sv(this,!!e&&e.trackRemovals)}getSize(e){return this.getMetadata(e).next(e=>e.byteSize)}getMetadata(e){return tA(e,e1).get(e2).next(e=>(N(!!e,20021),e))}Dr(e,t){return tA(e,e1).put(e2,t)}Cr(e,t){if(t){let e=function(e,t){let r;if(t.document)r=ig(e.yt,t.document,!!t.hasCommittedMutations);else if(t.noDocument){let e=H.fromSegments(t.noDocument.path),n=iC(t.noDocument.readTime);r=rv.newNoDocument(e,n),t.hasCommittedMutations&&r.setHasCommittedMutations()}else{if(!t.unknownDocument)return S(56709);{let e=H.fromSegments(t.unknownDocument.path),n=iC(t.unknownDocument.version);r=rv.newUnknownDocument(e,n)}}return t.readTime&&r.setReadTime(function(e){let t=new ei(e[0],e[1]);return es.fromTimestamp(t)}(t.readTime)),r}(this.serializer,t);if(!(e.isNoDocument()&&e.version.isEqual(es.min())))return e}return rv.newInvalidDocument(e)}}class sv extends sy{constructor(e,t){super(),this.Nr=e,this.trackRemovals=t,this.Br=new r7(e=>e.toString(),(e,t)=>e.isEqual(t))}applyChanges(e){let t=[],r=0,n=new tP((e,t)=>q(e.canonicalString(),t.canonicalString()));return this.changes.forEach((i,s)=>{let a=this.Br.get(i);if(t.push(this.Nr.removeEntry(e,i,a.readTime)),s.isValidDocument()){let o=ix(this.Nr.serializer,s);n=n.add(i.path.popLast());let l=sn(o);r+=l-a.size,t.push(this.Nr.addEntry(e,i,o))}else if(r-=a.size,this.trackRemovals){let r=ix(this.Nr.serializer,s.convertToNoDocument(es.min()));t.push(this.Nr.addEntry(e,i,r))}}),n.forEach(r=>{t.push(this.Nr.indexManager.addToCollectionParentIndex(e,r))}),t.push(this.Nr.updateMetadata(e,r)),ew.waitFor(t)}getFromCache(e,t){return this.Nr.vr(e,t).next(e=>(this.Br.set(t,{size:e.size,readTime:e.document.readTime}),e.document))}getAllFromCache(e,t){return this.Nr.Mr(e,t).next(({documents:e,Or:t})=>(t.forEach((t,r)=>{this.Br.set(t,{size:r,readTime:e.get(t).readTime})}),e))}}function sI(e){let t=e.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],t[t.length-1]]}function sT(e,t){let r=t.documentKey.path.toArray();return[e,iN(t.readTime),r.slice(0,r.length-2),r.length>0?r[r.length-1]:""]}function sb(e,t){let r=e.path.toArray(),n=t.path.toArray(),i=0;for(let e=0;e(r=n,this.remoteDocumentCache.getEntry(e,t))).next(e=>(null!==r&&nD(r.mutation,e,tq.empty(),ei.now()),e))}getDocuments(e,t){return this.remoteDocumentCache.getEntries(e,t).next(t=>this.getLocalViewOfDocuments(e,t,no()).next(()=>t))}getLocalViewOfDocuments(e,t,r=no()){let n=ni();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,r).next(e=>{let t=nr();return e.forEach((e,r)=>{t=t.insert(e,r.overlayedDocument)}),t}))}getOverlayedDocuments(e,t){let r=ni();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,no()))}populateOverlays(e,t,r){let n=[];return r.forEach(e=>{t.has(e)||n.push(e)}),this.documentOverlayCache.getOverlays(e,n).next(e=>{e.forEach((e,r)=>{t.set(e,r)})})}computeViews(e,t,r,n){let i=ne,s=ni(),a=ni();return t.forEach((e,t)=>{let a=r.get(t.key);n.has(t.key)&&(void 0===a||a.mutation instanceof nk)?i=i.insert(t.key,t):void 0!==a?(s.set(t.key,a.mutation.getFieldMask()),nD(a.mutation,t,a.mutation.getFieldMask(),ei.now())):s.set(t.key,tq.empty())}),this.recalculateAndSaveOverlays(e,i).next(e=>(e.forEach((e,t)=>s.set(e,t)),t.forEach((e,t)=>a.set(e,new sE(t,s.get(e)??null))),a))}recalculateAndSaveOverlays(e,t){let r=ni(),n=new tM((e,t)=>e-t),i=no();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,t).next(e=>{for(let i of e)i.keys().forEach(e=>{let s=t.get(e);if(null===s)return;let a=r.get(e)||tq.empty();a=i.applyToLocalView(s,a),r.set(e,a);let o=(n.get(i.batchId)||no()).add(e);n=n.insert(i.batchId,o)})}).next(()=>{let s=[],a=n.getReverseIterator();for(;a.hasNext();){let n=a.getNext(),o=n.key,l=n.value,u=ni();l.forEach(e=>{if(!i.has(e)){let n=nN(t.get(e),r.get(e));null!==n&&u.set(e,n),i=i.add(e)}}),s.push(this.documentOverlayCache.saveOverlays(e,o,u))}return ew.waitFor(s)}).next(()=>r)}recalculateAndSaveOverlaysForDocumentKeys(e,t){return this.remoteDocumentCache.getEntries(e,t).next(t=>this.recalculateAndSaveOverlays(e,t))}getDocumentsMatchingQuery(e,t,r,n){return H.isDocumentKey(t.path)&&null===t.collectionGroup&&0===t.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):rY(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,r,n):this.getDocumentsMatchingCollectionQuery(e,t,r,n)}getNextDocuments(e,t,r,n){return this.remoteDocumentCache.getAllFromCollectionGroup(e,t,r,n).next(i=>{let s=n-i.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,t,r.largestBatchId,n-i.size):ew.resolve(ni()),a=-1,o=i;return s.next(t=>ew.forEach(t,(t,r)=>(a{o=o.insert(t,e)}))).next(()=>this.populateOverlays(e,t,i)).next(()=>this.computeViews(e,o,t,no())).next(e=>({batchId:a,changes:nn(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new H(t)).next(e=>{let t=nr();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(e,t,r,n){let i=t.collectionGroup,s=nr();return this.indexManager.getCollectionParents(e,i).next(a=>ew.forEach(a,a=>{let o=new rW(a.child(i),null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt);return this.getDocumentsMatchingCollectionQuery(e,o,r,n).next(e=>{e.forEach((e,t)=>{s=s.insert(e,t)})})}).next(()=>s))}getDocumentsMatchingCollectionQuery(e,t,r,n){let i;return this.documentOverlayCache.getOverlaysForCollection(e,t.path,r.largestBatchId).next(s=>(i=s,this.remoteDocumentCache.getDocumentsMatchingQuery(e,t,r,i,n))).next(e=>{i.forEach((t,r)=>{let n=r.getKey();null===e.get(n)&&(e=e.insert(n,rv.newInvalidDocument(n)))});let r=nr();return e.forEach((e,n)=>{let s=i.get(e);void 0!==s&&nD(s.mutation,n,tq.empty(),ei.now()),r6(t,n)&&(r=r.insert(e,n))}),r})}}class sS{constructor(e){this.serializer=e,this.Lr=new Map,this.kr=new Map}getBundleMetadata(e,t){return ew.resolve(this.Lr.get(t))}saveBundleMetadata(e,t){return this.Lr.set(t.id,{id:t.id,version:t.version,createTime:ir(t.createTime)}),ew.resolve()}getNamedQuery(e,t){return ew.resolve(this.kr.get(t))}saveNamedQuery(e,t){return this.kr.set(t.name,{name:t.name,query:iV(t.bundledQuery),readTime:ir(t.readTime)}),ew.resolve()}}class sx{constructor(){this.overlays=new tM(H.comparator),this.qr=new Map}getOverlay(e,t){return ew.resolve(this.overlays.get(t))}getOverlays(e,t){let r=ni();return ew.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&r.set(t,e)})).next(()=>r)}saveOverlays(e,t,r){return r.forEach((r,n)=>{this.St(e,t,n)}),ew.resolve()}removeOverlaysForBatchId(e,t,r){let n=this.qr.get(r);return void 0!==n&&(n.forEach(e=>this.overlays=this.overlays.remove(e)),this.qr.delete(r)),ew.resolve()}getOverlaysForCollection(e,t,r){let n=ni(),i=t.length+1,s=new H(t.child("")),a=this.overlays.getIteratorFrom(s);for(;a.hasNext();){let e=a.getNext().value,s=e.getKey();if(!t.isPrefixOf(s.path))break;s.path.length===i&&e.largestBatchId>r&&n.set(e.getKey(),e)}return ew.resolve(n)}getOverlaysForCollectionGroup(e,t,r,n){let i=new tM((e,t)=>e-t),s=this.overlays.getIterator();for(;s.hasNext();){let e=s.getNext().value;if(e.getKey().getCollectionGroup()===t&&e.largestBatchId>r){let t=i.get(e.largestBatchId);null===t&&(t=ni(),i=i.insert(e.largestBatchId,t)),t.set(e.getKey(),e)}}let a=ni(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>a.set(e,t)),!(a.size()>=n)););return ew.resolve(a)}St(e,t,r){let n=this.overlays.get(r.key);if(null!==n){let e=this.qr.get(n.largestBatchId).delete(r.key);this.qr.set(n.largestBatchId,e)}this.overlays=this.overlays.insert(r.key,new nU(t,r));let i=this.qr.get(t);void 0===i&&(i=no(),this.qr.set(t,i)),this.qr.set(t,i.add(r.key))}}class sN{constructor(){this.sessionToken=tz.EMPTY_BYTE_STRING}getSessionToken(e){return ew.resolve(this.sessionToken)}setSessionToken(e,t){return this.sessionToken=t,ew.resolve()}}class sD{constructor(){this.Qr=new tP(sC.$r),this.Ur=new tP(sC.Kr)}isEmpty(){return this.Qr.isEmpty()}addReference(e,t){let r=new sC(e,t);this.Qr=this.Qr.add(r),this.Ur=this.Ur.add(r)}Wr(e,t){e.forEach(e=>this.addReference(e,t))}removeReference(e,t){this.Gr(new sC(e,t))}zr(e,t){e.forEach(e=>this.removeReference(e,t))}jr(e){let t=new H(new j([])),r=new sC(t,e),n=new sC(t,e+1),i=[];return this.Ur.forEachInRange([r,n],e=>{this.Gr(e),i.push(e.key)}),i}Jr(){this.Qr.forEach(e=>this.Gr(e))}Gr(e){this.Qr=this.Qr.delete(e),this.Ur=this.Ur.delete(e)}Hr(e){let t=new H(new j([])),r=new sC(t,e),n=new sC(t,e+1),i=no();return this.Ur.forEachInRange([r,n],e=>{i=i.add(e.key)}),i}containsKey(e){let t=new sC(e,0),r=this.Qr.firstAfterOrEqual(t);return null!==r&&e.isEqual(r.key)}}class sC{constructor(e,t){this.key=e,this.Yr=t}static $r(e,t){return H.comparator(e.key,t.key)||q(e.Yr,t.Yr)}static Kr(e,t){return q(e.Yr,t.Yr)||H.comparator(e.key,t.key)}}class sA{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.tr=1,this.Zr=new tP(sC.$r)}checkEmpty(e){return ew.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,r,n){let i=this.tr;this.tr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];let s=new nP(i,t,r,n);for(let t of(this.mutationQueue.push(s),n))this.Zr=this.Zr.add(new sC(t.key,i)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return ew.resolve(s)}lookupMutationBatch(e,t){return ew.resolve(this.Xr(t))}getNextMutationBatchAfterBatchId(e,t){let r=this.ei(t+1),n=r<0?0:r;return ew.resolve(this.mutationQueue.length>n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return ew.resolve(0===this.mutationQueue.length?-1:this.tr-1)}getAllMutationBatches(e){return ew.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){let r=new sC(t,0),n=new sC(t,Number.POSITIVE_INFINITY),i=[];return this.Zr.forEachInRange([r,n],e=>{let t=this.Xr(e.Yr);i.push(t)}),ew.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new tP(q);return t.forEach(e=>{let t=new sC(e,0),n=new sC(e,Number.POSITIVE_INFINITY);this.Zr.forEachInRange([t,n],e=>{r=r.add(e.Yr)})}),ew.resolve(this.ti(r))}getAllMutationBatchesAffectingQuery(e,t){let r=t.path,n=r.length+1,i=r;H.isDocumentKey(i)||(i=i.child(""));let s=new sC(new H(i),0),a=new tP(q);return this.Zr.forEachWhile(e=>{let t=e.key.path;return!!r.isPrefixOf(t)&&(t.length===n&&(a=a.add(e.Yr)),!0)},s),ew.resolve(this.ti(a))}ti(e){let t=[];return e.forEach(e=>{let r=this.Xr(e);null!==r&&t.push(r)}),t}removeMutationBatch(e,t){N(0===this.ni(t.batchId,"removed"),55003),this.mutationQueue.shift();let r=this.Zr;return ew.forEach(t.mutations,n=>{let i=new sC(n.key,t.batchId);return r=r.delete(i),this.referenceDelegate.markPotentiallyOrphaned(e,n.key)}).next(()=>{this.Zr=r})}ir(e){}containsKey(e,t){let r=new sC(t,0),n=this.Zr.firstAfterOrEqual(r);return ew.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,ew.resolve()}ni(e,t){return this.ei(e)}ei(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}Xr(e){let t=this.ei(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class sk{constructor(e){this.ri=e,this.docs=new tM(H.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){let r=t.key,n=this.docs.get(r),i=n?n.size:0,s=this.ri(t);return this.docs=this.docs.insert(r,{document:t.mutableCopy(),size:s}),this.size+=s-i,this.indexManager.addToCollectionParentIndex(e,r.path.popLast())}removeEntry(e){let t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){let r=this.docs.get(t);return ew.resolve(r?r.document.mutableCopy():rv.newInvalidDocument(t))}getEntries(e,t){let r=ne;return t.forEach(e=>{let t=this.docs.get(e);r=r.insert(e,t?t.document.mutableCopy():rv.newInvalidDocument(e))}),ew.resolve(r)}getDocumentsMatchingQuery(e,t,r,n){let i=ne,s=t.path,a=new H(s.child("__id-9223372036854775808__")),o=this.docs.getIteratorFrom(a);for(;o.hasNext();){let{key:e,value:{document:a}}=o.getNext();if(!s.isPrefixOf(e.path))break;e.path.length>s.length+1||0>=em(ed(a),r)||(n.has(a.key)||r6(t,a))&&(i=i.insert(a.key,a.mutableCopy()))}return ew.resolve(i)}getAllFromCollectionGroup(e,t,r,n){S(9500)}ii(e,t){return ew.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new sR(this)}getSize(e){return ew.resolve(this.size)}}class sR extends sy{constructor(e){super(),this.Nr=e}applyChanges(e){let t=[];return this.changes.forEach((r,n)=>{n.isValidDocument()?t.push(this.Nr.addEntry(e,n)):this.Nr.removeEntry(r)}),ew.waitFor(t)}getFromCache(e,t){return this.Nr.getEntry(e,t)}getAllFromCache(e,t){return this.Nr.getEntries(e,t)}}class sV{constructor(e){this.persistence=e,this.si=new r7(e=>rz(e),rK),this.lastRemoteSnapshotVersion=es.min(),this.highestTargetId=0,this.oi=0,this._i=new sD,this.targetCount=0,this.ai=so.ur()}forEachTarget(e,t){return this.si.forEach((e,r)=>t(r)),ew.resolve()}getLastRemoteSnapshotVersion(e){return ew.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return ew.resolve(this.oi)}allocateTargetId(e){return this.highestTargetId=this.ai.next(),ew.resolve(this.highestTargetId)}setTargetsMetadata(e,t,r){return r&&(this.lastRemoteSnapshotVersion=r),t>this.oi&&(this.oi=t),ew.resolve()}Pr(e){this.si.set(e.target,e);let t=e.targetId;t>this.highestTargetId&&(this.ai=new so(t),this.highestTargetId=t),e.sequenceNumber>this.oi&&(this.oi=e.sequenceNumber)}addTargetData(e,t){return this.Pr(t),this.targetCount+=1,ew.resolve()}updateTargetData(e,t){return this.Pr(t),ew.resolve()}removeTargetData(e,t){return this.si.delete(t.target),this._i.jr(t.targetId),this.targetCount-=1,ew.resolve()}removeTargets(e,t,r){let n=0,i=[];return this.si.forEach((s,a)=>{a.sequenceNumber<=t&&null===r.get(a.targetId)&&(this.si.delete(s),i.push(this.removeMatchingKeysForTargetId(e,a.targetId)),n++)}),ew.waitFor(i).next(()=>n)}getTargetCount(e){return ew.resolve(this.targetCount)}getTargetData(e,t){let r=this.si.get(t)||null;return ew.resolve(r)}addMatchingKeys(e,t,r){return this._i.Wr(t,r),ew.resolve()}removeMatchingKeys(e,t,r){this._i.zr(t,r);let n=this.persistence.referenceDelegate,i=[];return n&&t.forEach(t=>{i.push(n.markPotentiallyOrphaned(e,t))}),ew.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this._i.jr(t),ew.resolve()}getMatchingKeysForTargetId(e,t){let r=this._i.Hr(t);return ew.resolve(r)}containsKey(e,t){return ew.resolve(this._i.containsKey(t))}}class sM{constructor(e,t){this.ui={},this.overlays={},this.ci=new eV(0),this.li=!1,this.li=!0,this.hi=new sN,this.referenceDelegate=e(this),this.Pi=new sV(this),this.indexManager=new i5,this.remoteDocumentCache=new sk(e=>this.referenceDelegate.Ti(e)),this.serializer=new iS(t),this.Ii=new sS(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.li=!1,Promise.resolve()}get started(){return this.li}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new sx,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let r=this.ui[e.toKey()];return r||(r=new sA(t,this.referenceDelegate),this.ui[e.toKey()]=r),r}getGlobalsCache(){return this.hi}getTargetCache(){return this.Pi}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Ii}runTransaction(e,t,r){T("MemoryPersistence","Starting transaction:",e);let n=new sO(this.ci.next());return this.referenceDelegate.Ei(),r(n).next(e=>this.referenceDelegate.di(n).next(()=>e)).toPromise().then(e=>(n.raiseOnCommittedEvent(),e))}Ai(e,t){return ew.or(Object.values(this.ui).map(r=>()=>r.containsKey(e,t)))}}class sO extends ep{constructor(e){super(),this.currentSequenceNumber=e}}class sF{constructor(e){this.persistence=e,this.Ri=new sD,this.Vi=null}static mi(e){return new sF(e)}get fi(){if(this.Vi)return this.Vi;throw S(60996)}addReference(e,t,r){return this.Ri.addReference(r,t),this.fi.delete(r.toString()),ew.resolve()}removeReference(e,t,r){return this.Ri.removeReference(r,t),this.fi.add(r.toString()),ew.resolve()}markPotentiallyOrphaned(e,t){return this.fi.add(t.toString()),ew.resolve()}removeTarget(e,t){this.Ri.jr(t.targetId).forEach(e=>this.fi.add(e.toString()));let r=this.persistence.getTargetCache();return r.getMatchingKeysForTargetId(e,t.targetId).next(e=>{e.forEach(e=>this.fi.add(e.toString()))}).next(()=>r.removeTargetData(e,t))}Ei(){this.Vi=new Set}di(e){let t=this.persistence.getRemoteDocumentCache().newChangeBuffer();return ew.forEach(this.fi,r=>{let n=H.fromPath(r);return this.gi(e,n).next(e=>{e||t.removeEntry(n,es.min())})}).next(()=>(this.Vi=null,t.apply(e)))}updateLimboDocument(e,t){return this.gi(e,t).next(e=>{e?this.fi.delete(t.toString()):this.fi.add(t.toString())})}Ti(e){return 0}gi(e,t){return ew.or([()=>ew.resolve(this.Ri.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Ai(e,t)])}}class sP{constructor(e,t){this.persistence=e,this.pi=new r7(e=>eP(e.path),(e,t)=>e.isEqual(t)),this.garbageCollector=new sm(this,t)}static mi(e,t){return new sP(e,t)}Ei(){}di(e){return ew.resolve()}forEachTarget(e,t){return this.persistence.getTargetCache().forEachTarget(e,t)}gr(e){let t=this.wr(e);return this.persistence.getTargetCache().getTargetCount(e).next(e=>t.next(t=>e+t))}wr(e){let t=0;return this.pr(e,e=>{t++}).next(()=>t)}pr(e,t){return ew.forEach(this.pi,(r,n)=>this.br(e,r,n).next(e=>e?ew.resolve():t(n)))}removeTargets(e,t,r){return this.persistence.getTargetCache().removeTargets(e,t,r)}removeOrphanedDocuments(e,t){let r=0,n=this.persistence.getRemoteDocumentCache(),i=n.newChangeBuffer();return n.ii(e,n=>this.br(e,n,t).next(e=>{e||(r++,i.removeEntry(n,es.min()))})).next(()=>i.apply(e)).next(()=>r)}markPotentiallyOrphaned(e,t){return this.pi.set(t,e.currentSequenceNumber),ew.resolve()}removeTarget(e,t){let r=t.withSequenceNumber(e.currentSequenceNumber);return this.persistence.getTargetCache().updateTargetData(e,r)}addReference(e,t,r){return this.pi.set(r,e.currentSequenceNumber),ew.resolve()}removeReference(e,t,r){return this.pi.set(r,e.currentSequenceNumber),ew.resolve()}updateLimboDocument(e,t){return this.pi.set(t,e.currentSequenceNumber),ew.resolve()}Ti(e){let t=e.key.toString().length;return e.isFoundDocument()&&(t+=function e(t){switch(t7(t)){case 0:case 1:return 4;case 2:return 8;case 3:case 8:return 16;case 4:let r=tX(t);return r?16+e(r):16;case 5:return 2*t.stringValue.length;case 6:return tj(t.bytesValue).approximateByteSize();case 7:return t.referenceValue.length;case 9:return(t.arrayValue.values||[]).reduce((t,r)=>t+e(r),0);case 10:case 11:var n;let i;return n=t.mapValue,i=0,tR(n.fields,(t,r)=>{i+=t.length+e(r)}),i;default:throw S(13486,{value:t})}}(e.data.value)),t}br(e,t,r){return ew.or([()=>this.persistence.Ai(e,t),()=>this.persistence.getTargetCache().containsKey(e,t),()=>{let e=this.pi.get(t);return ew.resolve(void 0!==e&&e>r)}])}getCacheSize(e){return this.persistence.getRemoteDocumentCache().getSize(e)}}class sL{constructor(e){this.serializer=e}k(e,t,r,n){let i=new eI("createOrUpgrade",t);r<1&&n>=1&&(!function(e){e.createObjectStore(eq)}(e),e.createObjectStore(ez,{keyPath:"userId"}),e.createObjectStore(eK,{keyPath:e$,autoIncrement:!0}).createIndex(eG,ej,{unique:!0}),e.createObjectStore(eW),sU(e),function(e){e.createObjectStore(eU)}(e));let s=ew.resolve();return r<3&&n>=3&&(0!==r&&(e.deleteObjectStore(e6),e.deleteObjectStore(e4),e.deleteObjectStore(tt),sU(e)),s=s.next(()=>(function(e){let t=e.store(tt),r={highestTargetId:0,highestListenSequenceNumber:0,lastRemoteSnapshotVersion:es.min().toTimestamp(),targetCount:0};return t.put(te,r)})(i))),r<4&&n>=4&&(0!==r&&(s=s.next(()=>i.store(eK).J().next(t=>{e.deleteObjectStore(eK),e.createObjectStore(eK,{keyPath:e$,autoIncrement:!0}).createIndex(eG,ej,{unique:!0});let r=i.store(eK),n=t.map(e=>r.put(e));return ew.waitFor(n)}))),s=s.next(()=>{!function(e){e.createObjectStore(ti,{keyPath:"clientId"})}(e)})),r<5&&n>=5&&(s=s.next(()=>this.yi(i))),r<6&&n>=6&&(s=s.next(()=>((function(e){e.createObjectStore(e1)})(e),this.wi(i)))),r<7&&n>=7&&(s=s.next(()=>this.Si(i))),r<8&&n>=8&&(s=s.next(()=>this.bi(e,i))),r<9&&n>=9&&(s=s.next(()=>{e.objectStoreNames.contains("remoteDocumentChanges")&&e.deleteObjectStore("remoteDocumentChanges")})),r<10&&n>=10&&(s=s.next(()=>this.Di(i))),r<11&&n>=11&&(s=s.next(()=>{(function(e){e.createObjectStore(ts,{keyPath:"bundleId"})})(e),function(e){e.createObjectStore(ta,{keyPath:"name"})}(e)})),r<12&&n>=12&&(s=s.next(()=>{let t=e.createObjectStore(ty,{keyPath:tw});t.createIndex(tv,tI,{unique:!1}),t.createIndex(tT,tb,{unique:!1})})),r<13&&n>=13&&(s=s.next(()=>(function(e){let t=e.createObjectStore(eH,{keyPath:eJ});t.createIndex(eY,eX),t.createIndex(eZ,e0)})(e)).next(()=>this.Ci(e,i)).next(()=>e.deleteObjectStore(eU))),r<14&&n>=14&&(s=s.next(()=>this.Fi(e,i))),r<15&&n>=15&&(s=s.next(()=>{e.createObjectStore(to,{keyPath:"indexId",autoIncrement:!0}).createIndex(tl,"collectionGroup",{unique:!1}),e.createObjectStore(tu,{keyPath:th}).createIndex(tc,td,{unique:!1}),e.createObjectStore(tf,{keyPath:tm}).createIndex(tg,tp,{unique:!1})})),r<16&&n>=16&&(s=s.next(()=>{t.objectStore(tu).clear()}).next(()=>{t.objectStore(tf).clear()})),r<17&&n>=17&&(s=s.next(()=>{!function(e){e.createObjectStore(tE,{keyPath:"name"})}(e)})),r<18&&n>=18&&(0,h.Ov)()&&(s=s.next(()=>{t.objectStore(tu).clear()}).next(()=>{t.objectStore(tf).clear()})),s}wi(e){let t=0;return e.store(eU).ee((e,r)=>{t+=sn(r)}).next(()=>{let r={byteSize:t};return e.store(e1).put(e2,r)})}yi(e){let t=e.store(ez),r=e.store(eK);return t.J().next(t=>ew.forEach(t,t=>{let n=IDBKeyRange.bound([t.userId,-1],[t.userId,t.lastAcknowledgedBatchId]);return r.J(eG,n).next(r=>ew.forEach(r,r=>{N(r.userId===t.userId,18650,"Cannot process batch from unexpected user",{batchId:r.batchId});let n=iA(this.serializer,r);return sr(e,t.userId,n).next(()=>{})}))}))}Si(e){let t=e.store(e6),r=e.store(eU);return e.store(tt).get(te).next(e=>{let n=[];return r.ee((r,i)=>{let s=new j(r),a=[0,eP(s)];n.push(t.get(a).next(r=>r?ew.resolve():t.put({targetId:0,path:eP(s),sequenceNumber:e.highestListenSequenceNumber})))}).next(()=>ew.waitFor(n))})}bi(e,t){e.createObjectStore(tr,{keyPath:tn});let r=t.store(tr),n=new i3,i=e=>{if(n.add(e)){let t=e.lastSegment(),n=e.popLast();return r.put({collectionId:t,parent:eP(n)})}};return t.store(eU).ee({X:!0},(e,t)=>i(new j(e).popLast())).next(()=>t.store(eW).ee({X:!0},([e,t,r],n)=>i(eL(t).popLast())))}Di(e){let t=e.store(e4);return t.ee((e,r)=>{let n=ik(r),i=iR(this.serializer,n);return t.put(i)})}Ci(e,t){let r=t.store(eU),n=[];return r.ee((e,r)=>{let i=t.store(eH),s=(r.document?new H(j.fromString(r.document.name).popFirst(5)):r.noDocument?H.fromSegments(r.noDocument.path):r.unknownDocument?H.fromSegments(r.unknownDocument.path):S(36783)).path.toArray(),a={prefixPath:s.slice(0,s.length-2),collectionGroup:s[s.length-2],documentId:s[s.length-1],readTime:r.readTime||[0,0],unknownDocument:r.unknownDocument,noDocument:r.noDocument,document:r.document,hasCommittedMutations:!!r.hasCommittedMutations};n.push(i.put(a))}).next(()=>ew.waitFor(n))}Fi(e,t){let r=t.store(eK),n=new sw(this.serializer),i=new sM(sF.mi,this.serializer.yt);return r.J().next(e=>{let r=new Map;return e.forEach(e=>{let t=r.get(e.userId)??no();iA(this.serializer,e).keys().forEach(e=>t=t.add(e)),r.set(e.userId,t)}),ew.forEach(r,(e,r)=>{let s=new y(r),a=iL.wt(this.serializer,s),o=i.getIndexManager(s);return new s_(n,si.wt(s,this.serializer,o,i.referenceDelegate),a,o).recalculateAndSaveOverlaysForDocumentKeys(new tC(t,eV.ce),e).next()})})}}function sU(e){e.createObjectStore(e6,{keyPath:e8}).createIndex(e9,e7,{unique:!0}),e.createObjectStore(e4,{keyPath:"targetId"}).createIndex(e5,e3,{unique:!0}),e.createObjectStore(tt)}let sq="IndexedDbPersistence",sB="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 sz{constructor(e,t,r,n,i,s,a,o,l,u,h=18){if(this.allowTabSynchronization=e,this.persistenceKey=t,this.clientId=r,this.Mi=i,this.window=s,this.document=a,this.xi=l,this.Oi=u,this.Ni=h,this.ci=null,this.li=!1,this.isPrimary=!1,this.networkEnabled=!0,this.Bi=null,this.inForeground=!1,this.Li=null,this.ki=null,this.qi=Number.NEGATIVE_INFINITY,this.Qi=e=>Promise.resolve(),!sz.v())throw new C(D.UNIMPLEMENTED,"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");this.referenceDelegate=new sg(this,n),this.$i=t+"main",this.serializer=new iS(o),this.Ui=new eT(this.$i,this.Ni,new sL(this.serializer)),this.hi=new iU,this.Pi=new sl(this.referenceDelegate,this.serializer),this.remoteDocumentCache=new sw(this.serializer),this.Ii=new iP,this.window&&this.window.localStorage?this.Ki=this.window.localStorage:(this.Ki=null,!1===u&&b(sq,"LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page."))}start(){return this.Wi().then(()=>{if(!this.isPrimary&&!this.allowTabSynchronization)throw new C(D.FAILED_PRECONDITION,sB);return this.Gi(),this.zi(),this.ji(),this.runTransaction("getHighestListenSequenceNumber","readonly",e=>this.Pi.getHighestSequenceNumber(e))}).then(e=>{this.ci=new eV(e,this.xi)}).then(()=>{this.li=!0}).catch(e=>(this.Ui&&this.Ui.close(),Promise.reject(e)))}Ji(e){return this.Qi=async t=>{if(this.started)return e(t)},e(this.isPrimary)}setDatabaseDeletedListener(e){this.Ui.$(async t=>{null===t.newVersion&&await e()})}setNetworkEnabled(e){this.networkEnabled!==e&&(this.networkEnabled=e,this.Mi.enqueueAndForget(async()=>{this.started&&await this.Wi()}))}Wi(){return this.runTransaction("updateClientMetadataAndTryBecomePrimary","readwrite",e=>tA(e,ti).put({clientId:this.clientId,updateTimeMs:Date.now(),networkEnabled:this.networkEnabled,inForeground:this.inForeground}).next(()=>{if(this.isPrimary)return this.Hi(e).next(e=>{e||(this.isPrimary=!1,this.Mi.enqueueRetryable(()=>this.Qi(!1)))})}).next(()=>this.Yi(e)).next(t=>this.isPrimary&&!t?this.Zi(e).next(()=>!1):!!t&&this.Xi(e).next(()=>!0))).catch(e=>{if(eS(e))return T(sq,"Failed to extend owner lease: ",e),this.isPrimary;if(!this.allowTabSynchronization)throw e;return T(sq,"Releasing owner lease after error during lease refresh",e),!1}).then(e=>{this.isPrimary!==e&&this.Mi.enqueueRetryable(()=>this.Qi(e)),this.isPrimary=e})}Hi(e){return tA(e,eq).get(eB).next(e=>ew.resolve(this.es(e)))}ts(e){return tA(e,ti).delete(this.clientId)}async ns(){if(this.isPrimary&&!this.rs(this.qi,18e5)){this.qi=Date.now();let e=await this.runTransaction("maybeGarbageCollectMultiClientState","readwrite-primary",e=>{let t=tA(e,ti);return t.J().next(e=>{let r=this.ss(e,18e5),n=e.filter(e=>-1===r.indexOf(e));return ew.forEach(n,e=>t.delete(e.clientId)).next(()=>n)})}).catch(()=>[]);if(this.Ki)for(let t of e)this.Ki.removeItem(this._s(t.clientId))}}ji(){this.ki=this.Mi.enqueueAfterDelay("client_metadata_refresh",4e3,()=>this.Wi().then(()=>this.ns()).then(()=>this.ji()))}es(e){return!!e&&e.ownerId===this.clientId}Yi(e){return this.Oi?ew.resolve(!0):tA(e,eq).get(eB).next(t=>{if(null!==t&&this.rs(t.leaseTimestampMs,5e3)&&!this.us(t.ownerId)){if(this.es(t)&&this.networkEnabled)return!0;if(!this.es(t)){if(!t.allowTabSynchronization)throw new C(D.FAILED_PRECONDITION,sB);return!1}}return!(!this.networkEnabled||!this.inForeground)||tA(e,ti).J().next(e=>void 0===this.ss(e,5e3).find(e=>{if(this.clientId!==e.clientId){let t=!this.networkEnabled&&e.networkEnabled,r=!this.inForeground&&e.inForeground,n=this.networkEnabled===e.networkEnabled;if(t||r&&n)return!0}return!1}))}).next(e=>(this.isPrimary!==e&&T(sq,`Client ${e?"is":"is not"} eligible for a primary lease.`),e))}async shutdown(){this.li=!1,this.cs(),this.ki&&(this.ki.cancel(),this.ki=null),this.ls(),this.hs(),await this.Ui.runTransaction("shutdown","readwrite",[eq,ti],e=>{let t=new tC(e,eV.ce);return this.Zi(t).next(()=>this.ts(t))}),this.Ui.close(),this.Ps()}ss(e,t){return e.filter(e=>this.rs(e.updateTimeMs,t)&&!this.us(e.clientId))}Ts(){return this.runTransaction("getActiveClients","readonly",e=>tA(e,ti).J().next(e=>this.ss(e,18e5).map(e=>e.clientId)))}get started(){return this.li}getGlobalsCache(){return this.hi}getMutationQueue(e,t){return si.wt(e,this.serializer,t,this.referenceDelegate)}getTargetCache(){return this.Pi}getRemoteDocumentCache(){return this.remoteDocumentCache}getIndexManager(e){return new i9(e,this.serializer.yt.databaseId)}getDocumentOverlayCache(e){return iL.wt(this.serializer,e)}getBundleCache(){return this.Ii}runTransaction(e,t,r){var n;let i;T(sq,"Starting transaction:",e);let s=18===(n=this.Ni)?tD:17===n?tD:16===n?tN:15===n?tN:14===n?tx:13===n?tx:12===n?tS:11===n?t_:void S(60245);return this.Ui.runTransaction(e,"readonly"===t?"readonly":"readwrite",s,n=>(i=new tC(n,this.ci?this.ci.next():eV.ce),"readwrite-primary"===t?this.Hi(i).next(e=>!!e||this.Yi(i)).next(t=>{if(!t)throw b(`Failed to obtain primary lease for action '${e}'.`),this.isPrimary=!1,this.Mi.enqueueRetryable(()=>this.Qi(!1)),new C(D.FAILED_PRECONDITION,eg);return r(i)}).next(e=>this.Xi(i).next(()=>e)):this.Is(i).next(()=>r(i)))).then(e=>(i.raiseOnCommittedEvent(),e))}Is(e){return tA(e,eq).get(eB).next(e=>{if(null!==e&&this.rs(e.leaseTimestampMs,5e3)&&!this.us(e.ownerId)&&!this.es(e)&&!(this.Oi||this.allowTabSynchronization&&e.allowTabSynchronization))throw new C(D.FAILED_PRECONDITION,sB)})}Xi(e){let t={ownerId:this.clientId,allowTabSynchronization:this.allowTabSynchronization,leaseTimestampMs:Date.now()};return tA(e,eq).put(eB,t)}static v(){return eT.v()}Zi(e){let t=tA(e,eq);return t.get(eB).next(e=>this.es(e)?(T(sq,"Releasing primary lease."),t.delete(eB)):ew.resolve())}rs(e,t){let r=Date.now();return!(er)||(b(`Detected an update time that is in the future: ${e} > ${r}`),!1))}Gi(){null!==this.document&&"function"==typeof this.document.addEventListener&&(this.Li=()=>{this.Mi.enqueueAndForget(()=>(this.inForeground="visible"===this.document.visibilityState,this.Wi()))},this.document.addEventListener("visibilitychange",this.Li),this.inForeground="visible"===this.document.visibilityState)}ls(){this.Li&&(this.document.removeEventListener("visibilitychange",this.Li),this.Li=null)}zi(){"function"==typeof this.window?.addEventListener&&(this.Bi=()=>{this.cs();let e=/(?:Version|Mobile)\/1[456]/;(0,h.nr)()&&(navigator.appVersion.match(e)||navigator.userAgent.match(e))&&this.Mi.enterRestrictedMode(!0),this.Mi.enqueueAndForget(()=>this.shutdown())},this.window.addEventListener("pagehide",this.Bi))}hs(){this.Bi&&(this.window.removeEventListener("pagehide",this.Bi),this.Bi=null)}us(e){try{let t=null!==this.Ki?.getItem(this._s(e));return T(sq,`Client '${e}' ${t?"is":"is not"} zombied in LocalStorage`),t}catch(e){return b(sq,"Failed to get zombied client id.",e),!1}}cs(){if(this.Ki)try{this.Ki.setItem(this._s(this.clientId),String(Date.now()))}catch(e){b("Failed to set zombie client id.",e)}}Ps(){if(this.Ki)try{this.Ki.removeItem(this._s(this.clientId))}catch(e){}}_s(e){return`firestore_zombie_${this.persistenceKey}_${e}`}}function sK(e,t){let r=e.projectId;return e.isDefaultDatabase||(r+="."+e.database),"firestore/"+t+"/"+r+"/"}class s${constructor(e,t,r,n){this.targetId=e,this.fromCache=t,this.Es=r,this.ds=n}static As(e,t){let r=no(),n=no();for(let e of t.docChanges)switch(e.type){case 0:r=r.add(e.doc.key);break;case 1:n=n.add(e.doc.key)}return new s$(e,t.fromCache,r,n)}}class sG{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(e){this._documentReadCount+=e}}class sj{constructor(){this.Rs=!1,this.Vs=!1,this.fs=100,this.gs=(0,h.nr)()?8:eb((0,h.ZQ)())>0?6:4}initialize(e,t){this.ps=e,this.indexManager=t,this.Rs=!0}getDocumentsMatchingQuery(e,t,r,n){let i={result:null};return this.ys(e,t).next(e=>{i.result=e}).next(()=>{if(!i.result)return this.ws(e,t,n,r).next(e=>{i.result=e})}).next(()=>{if(i.result)return;let r=new sG;return this.Ss(e,t,r).next(n=>{if(i.result=n,this.Vs)return this.bs(e,t,r,n.size)})}).next(()=>i.result)}bs(e,t,r,n){return r.documentReadCountthis.gs*n?(I()<=u.$b.DEBUG&&T("QueryEngine","The SDK decides to create cache indexes for query:",r3(t),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(e,rZ(t))):ew.resolve())}ys(e,t){if(rJ(t))return ew.resolve(null);let r=rZ(t);return this.indexManager.getIndexType(e,r).next(n=>0===n?null:(null!==t.limit&&1===n&&(r=rZ(t=r2(t,null,"F"))),this.indexManager.getDocumentsMatchingTarget(e,r).next(n=>{let i=no(...n);return this.ps.getDocuments(e,i).next(n=>this.indexManager.getMinOffset(e,r).next(r=>{let s=this.Ds(t,n);return this.Cs(t,s,i,r.readTime)?this.ys(e,r2(t,null,"F")):this.vs(e,s,t,r)}))})))}ws(e,t,r,n){return rJ(t)||n.isEqual(es.min())?ew.resolve(null):this.ps.getDocuments(e,r).next(i=>{let s=this.Ds(t,i);return this.Cs(t,s,r,n)?ew.resolve(null):(I()<=u.$b.DEBUG&&T("QueryEngine","Re-using previous result from %s to execute query: %s",n.toString(),r3(t)),this.vs(e,s,t,ec(n,-1)).next(e=>e))})}Ds(e,t){let r=new tP(r9(e));return t.forEach((t,n)=>{r6(e,n)&&(r=r.add(n))}),r}Cs(e,t,r,n){if(null===e.limit)return!1;if(r.size!==t.size)return!0;let i="F"===e.limitType?t.last():t.first();return!!i&&(i.hasPendingWrites||i.version.compareTo(n)>0)}Ss(e,t,r){return I()<=u.$b.DEBUG&&T("QueryEngine","Using full collection scan to execute query:",r3(t)),this.ps.getDocumentsMatchingQuery(e,t,ef.min(),r)}vs(e,t,r,n){return this.ps.getDocumentsMatchingQuery(e,r,n).next(e=>(t.forEach(t=>{e=e.insert(t.key,t)}),e))}}let sQ="LocalStore";class sW{constructor(e,t,r,n){this.persistence=e,this.Fs=t,this.serializer=n,this.Ms=new tM(q),this.xs=new r7(e=>rz(e),rK),this.Os=new Map,this.Ns=e.getRemoteDocumentCache(),this.Pi=e.getTargetCache(),this.Ii=e.getBundleCache(),this.Bs(r)}Bs(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new s_(this.Ns,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Ns.setIndexManager(this.indexManager),this.Fs.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",t=>e.collect(t,this.Ms))}}async function sH(e,t){return await e.persistence.runTransaction("Handle user change","readonly",r=>{let n;return e.mutationQueue.getAllMutationBatches(r).next(i=>(n=i,e.Bs(t),e.mutationQueue.getAllMutationBatches(r))).next(t=>{let i=[],s=[],a=no();for(let e of n)for(let t of(i.push(e.batchId),e.mutations))a=a.add(t.key);for(let e of t)for(let t of(s.push(e.batchId),e.mutations))a=a.add(t.key);return e.localDocuments.getDocuments(r,a).next(e=>({Ls:e,removedBatchIds:i,addedBatchIds:s}))})})}function sJ(e){return e.persistence.runTransaction("Get last remote snapshot version","readonly",t=>e.Pi.getLastRemoteSnapshotVersion(t))}function sY(e,t,r){let n=no(),i=no();return r.forEach(e=>n=n.add(e)),t.getEntries(e,n).next(e=>{let n=ne;return r.forEach((r,s)=>{let a=e.get(r);s.isFoundDocument()!==a.isFoundDocument()&&(i=i.add(r)),s.isNoDocument()&&s.version.isEqual(es.min())?(t.removeEntry(r,s.readTime),n=n.insert(r,s)):!a.isValidDocument()||s.version.compareTo(a.version)>0||0===s.version.compareTo(a.version)&&a.hasPendingWrites?(t.addEntry(s),n=n.insert(r,s)):T(sQ,"Ignoring outdated watch update for ",r,". Current version:",a.version," Watch version:",s.version)}),{ks:n,qs:i}})}function sX(e,t){return e.persistence.runTransaction("Allocate target","readwrite",r=>{let n;return e.Pi.getTargetData(r,t).next(i=>i?(n=i,ew.resolve(n)):e.Pi.allocateTargetId(r).next(i=>(n=new i_(t,i,"TargetPurposeListen",r.currentSequenceNumber),e.Pi.addTargetData(r,n).next(()=>n))))}).then(r=>{let n=e.Ms.get(r.targetId);return(null===n||r.snapshotVersion.compareTo(n.snapshotVersion)>0)&&(e.Ms=e.Ms.insert(r.targetId,r),e.xs.set(t,r.targetId)),r})}async function sZ(e,t,r){let n=e.Ms.get(t);try{r||await e.persistence.runTransaction("Release target",r?"readwrite":"readwrite-primary",t=>e.persistence.referenceDelegate.removeTarget(t,n))}catch(e){if(!eS(e))throw e;T(sQ,`Failed to update sequence numbers for target ${t}: ${e}`)}e.Ms=e.Ms.remove(t),e.xs.delete(n.target)}function s0(e,t,r){let n=es.min(),i=no();return e.persistence.runTransaction("Execute query","readwrite",s=>(function(e,t,r){let n=e.xs.get(r);return void 0!==n?ew.resolve(e.Ms.get(n)):e.Pi.getTargetData(t,r)})(e,s,rZ(t)).next(t=>{if(t)return n=t.lastLimboFreeSnapshotVersion,e.Pi.getMatchingKeysForTargetId(s,t.targetId).next(e=>{i=e})}).next(()=>e.Fs.getDocumentsMatchingQuery(s,t,r?n:es.min(),r?i:no())).next(r=>(s4(e,r8(t),r),{documents:r,Qs:i})))}function s1(e,t){let r=e.Pi,n=e.Ms.get(t);return n?Promise.resolve(n.target):e.persistence.runTransaction("Get target data","readonly",e=>r.At(e,t).next(e=>e?e.target:null))}function s2(e,t){let r=e.Os.get(t)||es.min();return e.persistence.runTransaction("Get new document changes","readonly",n=>e.Ns.getAllFromCollectionGroup(n,t,ec(r,-1),Number.MAX_SAFE_INTEGER)).then(r=>(s4(e,t,r),r))}function s4(e,t,r){let n=e.Os.get(t)||es.min();r.forEach((e,t)=>{t.readTime.compareTo(n)>0&&(n=t.readTime)}),e.Os.set(t,n)}async function s5(e,t,r,n){let i=no(),s=ne;for(let e of r){let r=t.$s(e.metadata.name);e.document&&(i=i.add(r));let n=t.Us(e);n.setReadTime(t.Ks(e.metadata.readTime)),s=s.insert(r,n)}let a=e.Ns.newChangeBuffer({trackRemovals:!0}),o=await sX(e,rZ(rH(j.fromString(`__bundle__/docs/${n}`))));return e.persistence.runTransaction("Apply bundle documents","readwrite",t=>sY(t,a,s).next(e=>(a.apply(t),e)).next(r=>e.Pi.removeMatchingKeysForTargetId(t,o.targetId).next(()=>e.Pi.addMatchingKeys(t,i,o.targetId)).next(()=>e.localDocuments.getLocalViewOfDocuments(t,r.ks,r.qs)).next(()=>r.ks)))}async function s3(e,t,r=no()){let n=await sX(e,rZ(iV(t.bundledQuery)));return e.persistence.runTransaction("Save named query","readwrite",i=>{let s=ir(t.readTime);if(n.snapshotVersion.compareTo(s)>=0)return e.Ii.saveNamedQuery(i,t);let a=n.withResumeToken(tz.EMPTY_BYTE_STRING,s);return e.Ms=e.Ms.insert(a.targetId,a),e.Pi.updateTargetData(i,a).next(()=>e.Pi.removeMatchingKeysForTargetId(i,n.targetId)).next(()=>e.Pi.addMatchingKeys(i,r,n.targetId)).next(()=>e.Ii.saveNamedQuery(i,t))})}let s6="firestore_clients";function s8(e,t){return`${s6}_${e}_${t}`}let s9="firestore_mutations";function s7(e,t,r){let n=`${s9}_${e}_${r}`;return t.isAuthenticated()&&(n+=`_${t.uid}`),n}let ae="firestore_targets";function at(e,t){return`${ae}_${e}_${t}`}let ar="SharedClientState";class an{constructor(e,t,r,n){this.user=e,this.batchId=t,this.state=r,this.error=n}static Ws(e,t,r){let n=JSON.parse(r),i,s="object"==typeof n&&-1!==["pending","acknowledged","rejected"].indexOf(n.state)&&(void 0===n.error||"object"==typeof n.error);return s&&n.error&&(s="string"==typeof n.error.message&&"string"==typeof n.error.code)&&(i=new C(n.error.code,n.error.message)),s?new an(e,t,n.state,i):(b(ar,`Failed to parse mutation state for ID '${t}': ${r}`),null)}Gs(){let e={state:this.state,updateTimeMs:Date.now()};return this.error&&(e.error={code:this.error.code,message:this.error.message}),JSON.stringify(e)}}class ai{constructor(e,t,r){this.targetId=e,this.state=t,this.error=r}static Ws(e,t){let r=JSON.parse(t),n,i="object"==typeof r&&-1!==["not-current","current","rejected"].indexOf(r.state)&&(void 0===r.error||"object"==typeof r.error);return i&&r.error&&(i="string"==typeof r.error.message&&"string"==typeof r.error.code)&&(n=new C(r.error.code,r.error.message)),i?new ai(e,r.state,n):(b(ar,`Failed to parse target state for ID '${e}': ${t}`),null)}Gs(){let e={state:this.state,updateTimeMs:Date.now()};return this.error&&(e.error={code:this.error.code,message:this.error.message}),JSON.stringify(e)}}class as{constructor(e,t){this.clientId=e,this.activeTargetIds=t}static Ws(e,t){let r=JSON.parse(t),n="object"==typeof r&&r.activeTargetIds instanceof Array,i=nl;for(let e=0;n&&ethis.shutdown()),this.started=!0}writeSequenceNumber(e){this.setItem(this.no,JSON.stringify(e))}getAllActiveQueryTargets(){return this.lo(this.Zs)}isActiveQueryTarget(e){let t=!1;return this.Zs.forEach((r,n)=>{n.activeTargetIds.has(e)&&(t=!0)}),t}addPendingMutation(e){this.ho(e,"pending")}updateMutationState(e,t,r){this.ho(e,t,r),this.Po(e)}addLocalQueryTarget(e,t=!0){let r="not-current";if(this.isActiveQueryTarget(e)){let t=this.storage.getItem(at(this.persistenceKey,e));if(t){let n=ai.Ws(e,t);n&&(r=n.state)}}return t&&this.To.zs(e),this.ao(),r}removeLocalQueryTarget(e){this.To.js(e),this.ao()}isLocalQueryTarget(e){return this.To.activeTargetIds.has(e)}clearQueryState(e){this.removeItem(at(this.persistenceKey,e))}updateQueryState(e,t,r){this.Io(e,t,r)}handleUserChange(e,t,r){t.forEach(e=>{this.Po(e)}),this.currentUser=e,r.forEach(e=>{this.addPendingMutation(e)})}setOnlineState(e){this.Eo(e)}notifyBundleLoaded(e){this.Ao(e)}shutdown(){this.started&&(this.window.removeEventListener("storage",this.Hs),this.removeItem(this.eo),this.started=!1)}getItem(e){let t=this.storage.getItem(e);return T(ar,"READ",e,t),t}setItem(e,t){T(ar,"SET",e,t),this.storage.setItem(e,t)}removeItem(e){T(ar,"REMOVE",e),this.storage.removeItem(e)}Ys(e){if(e.storageArea===this.storage){if(T(ar,"EVENT",e.key,e.newValue),e.key===this.eo)return void b("Received WebStorage notification for local change. Another client might have garbage-collected our state");this.Mi.enqueueRetryable(async()=>{if(this.started){if(null!==e.key){if(this.ro.test(e.key)){if(null==e.newValue){let t=this.Ro(e.key);return this.Vo(t,null)}{let t=this.mo(e.key,e.newValue);if(t)return this.Vo(t.clientId,t)}}else if(this.io.test(e.key)){if(null!==e.newValue){let t=this.fo(e.key,e.newValue);if(t)return this.po(t)}}else if(this.so.test(e.key)){if(null!==e.newValue){let t=this.yo(e.key,e.newValue);if(t)return this.wo(t)}}else if(e.key===this.oo){if(null!==e.newValue){let t=this.uo(e.newValue);if(t)return this.co(t)}}else if(e.key===this.no){let t=function(e){let t=eV.ce;if(null!=e)try{let r=JSON.parse(e);N("number"==typeof r,30636,{So:e}),t=r}catch(e){b(ar,"Failed to read sequence number from WebStorage",e)}return t}(e.newValue);t!==eV.ce&&this.sequenceNumberHandler(t)}else if(e.key===this._o){let t=this.bo(e.newValue);await Promise.all(t.map(e=>this.syncEngine.Do(e)))}}}else this.Xs.push(e)})}}get To(){return this.Zs.get(this.Js)}ao(){this.setItem(this.eo,this.To.Gs())}ho(e,t,r){let n=new an(this.currentUser,e,t,r),i=s7(this.persistenceKey,this.currentUser,e);this.setItem(i,n.Gs())}Po(e){let t=s7(this.persistenceKey,this.currentUser,e);this.removeItem(t)}Eo(e){let t={clientId:this.Js,onlineState:e};this.storage.setItem(this.oo,JSON.stringify(t))}Io(e,t,r){let n=at(this.persistenceKey,e),i=new ai(e,t,r);this.setItem(n,i.Gs())}Ao(e){let t=JSON.stringify(Array.from(e));this.setItem(this._o,t)}Ro(e){let t=this.ro.exec(e);return t?t[1]:null}mo(e,t){let r=this.Ro(e);return as.Ws(r,t)}fo(e,t){let r=this.io.exec(e),n=Number(r[1]),i=void 0!==r[2]?r[2]:null;return an.Ws(new y(i),n,t)}yo(e,t){let r=Number(this.so.exec(e)[1]);return ai.Ws(r,t)}uo(e){return aa.Ws(e)}bo(e){return JSON.parse(e)}async po(e){if(e.user.uid===this.currentUser.uid)return this.syncEngine.Co(e.batchId,e.state,e.error);T(ar,`Ignoring mutation for non-active user ${e.user.uid}`)}wo(e){return this.syncEngine.vo(e.targetId,e.state,e.error)}Vo(e,t){let r=t?this.Zs.insert(e,t):this.Zs.remove(e),n=this.lo(this.Zs),i=this.lo(r),s=[],a=[];return i.forEach(e=>{n.has(e)||s.push(e)}),n.forEach(e=>{i.has(e)||a.push(e)}),this.syncEngine.Fo(s,a).then(()=>{this.Zs=r})}co(e){this.Zs.get(e.clientId)&&this.onlineStateHandler(e.onlineState)}lo(e){let t=nl;return e.forEach((e,r)=>{t=t.unionWith(r.activeTargetIds)}),t}}class au{constructor(){this.Mo=new ao,this.xo={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,r){}addLocalQueryTarget(e,t=!0){return t&&this.Mo.zs(e),this.xo[e]||"not-current"}updateQueryState(e,t,r){this.xo[e]=t}removeLocalQueryTarget(e){this.Mo.js(e)}isLocalQueryTarget(e){return this.Mo.activeTargetIds.has(e)}clearQueryState(e){delete this.xo[e]}getAllActiveQueryTargets(){return this.Mo.activeTargetIds}isActiveQueryTarget(e){return this.Mo.activeTargetIds.has(e)}start(){return this.Mo=new ao,Promise.resolve()}handleUserChange(e,t,r){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class ah{Oo(e){}shutdown(){}}let ac="ConnectivityMonitor";class ad{constructor(){this.No=()=>this.Bo(),this.Lo=()=>this.ko(),this.qo=[],this.Qo()}Oo(e){this.qo.push(e)}shutdown(){window.removeEventListener("online",this.No),window.removeEventListener("offline",this.Lo)}Qo(){window.addEventListener("online",this.No),window.addEventListener("offline",this.Lo)}Bo(){for(let e of(T(ac,"Network connectivity changed: AVAILABLE"),this.qo))e(0)}ko(){for(let e of(T(ac,"Network connectivity changed: UNAVAILABLE"),this.qo))e(1)}static v(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let af=null;function am(){return null===af?af=0x10000000+Math.round(0x80000000*Math.random()):af++,"0x"+af.toString(16)}let ag="RestConnection",ap={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class ay{get $o(){return!1}constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;let t=e.ssl?"https":"http",r=encodeURIComponent(this.databaseId.projectId),n=encodeURIComponent(this.databaseId.database);this.Uo=t+"://"+e.host,this.Ko=`projects/${r}/databases/${n}`,this.Wo=this.databaseId.database===t1?`project_id=${r}`:`project_id=${r}&database_id=${n}`}Go(e,t,r,n,i){let s=am(),a=this.zo(e,t.toUriEncodedString());T(ag,`Sending RPC '${e}' ${s}:`,a,r);let o={"google-cloud-resource-prefix":this.Ko,"x-goog-request-params":this.Wo};this.jo(o,n,i);let{host:l}=new URL(a),u=(0,h.zJ)(l);return this.Jo(e,a,o,r,u).then(t=>(T(ag,`Received RPC '${e}' ${s}: `,t),t),t=>{throw E(ag,`RPC '${e}' ${s} failed with error: `,t,"url: ",a,"request:",r),t})}Ho(e,t,r,n,i,s){return this.Go(e,t,r,n,i)}jo(e,t,r){e["X-Goog-Api-Client"]="gl-js/ fire/"+w,e["Content-Type"]="text/plain",this.databaseInfo.appId&&(e["X-Firebase-GMPID"]=this.databaseInfo.appId),t&&t.headers.forEach((t,r)=>e[r]=t),r&&r.headers.forEach((t,r)=>e[r]=t)}zo(e,t){let r=ap[e];return`${this.Uo}/v1/${t}:${r}`}terminate(){}}class aw{constructor(e){this.Yo=e.Yo,this.Zo=e.Zo}Xo(e){this.e_=e}t_(e){this.n_=e}r_(e){this.i_=e}onMessage(e){this.s_=e}close(){this.Zo()}send(e){this.Yo(e)}o_(){this.e_()}__(){this.n_()}a_(e){this.i_(e)}u_(e){this.s_(e)}}let av="WebChannelConnection";class aI extends ay{constructor(e){super(e),this.c_=[],this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams,this.longPollingOptions=e.longPollingOptions}Jo(e,t,r,n,i){let s=am();return new Promise((i,a)=>{let o=new d.ZS;o.setWithCredentials(!0),o.listenOnce(d.Bx.COMPLETE,()=>{try{switch(o.getLastErrorCode()){case d.O4.NO_ERROR:let t=o.getResponseJson();T(av,`XHR for RPC '${e}' ${s} received:`,JSON.stringify(t)),i(t);break;case d.O4.TIMEOUT:T(av,`RPC '${e}' ${s} timed out`),a(new C(D.DEADLINE_EXCEEDED,"Request time out"));break;case d.O4.HTTP_ERROR:let r=o.getStatus();if(T(av,`RPC '${e}' ${s} failed with status:`,r,"response text:",o.getResponseText()),r>0){let e=o.getResponseJson();Array.isArray(e)&&(e=e[0]);let t=e?.error;if(t&&t.status&&t.message){let e=function(e){let t=e.toLowerCase().replace(/_/g,"-");return Object.values(D).indexOf(t)>=0?t:D.UNKNOWN}(t.status);a(new C(e,t.message))}else a(new C(D.UNKNOWN,"Server responded with status "+o.getStatus()))}else a(new C(D.UNAVAILABLE,"Connection failed."));break;default:S(9055,{l_:e,streamId:s,h_:o.getLastErrorCode(),P_:o.getLastError()})}}finally{T(av,`RPC '${e}' ${s} completed.`)}});let l=JSON.stringify(n);T(av,`RPC '${e}' ${s} sending request:`,n),o.send(t,"POST",l,r,15)})}T_(e,t,r){let i=am(),s=[this.Uo,"/","google.firestore.v1.Firestore","/",e,"/channel"],a=(0,d.fF)(),o=(0,d.Ao)(),l={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},u=this.longPollingOptions.timeoutSeconds;void 0!==u&&(l.longPollingTimeout=Math.round(1e3*u)),this.useFetchStreams&&(l.useFetchStreams=!0),this.jo(l.initMessageHeaders,t,r),l.encodeInitMessageHeaders=!0;let h=s.join("");T(av,`Creating RPC '${e}' stream ${i}: ${h}`,l);let c=a.createWebChannel(h,l);this.I_(c);let f=!1,m=!1,g=new aw({Yo:t=>{m?T(av,`Not sending because RPC '${e}' stream ${i} is closed:`,t):(f||(T(av,`Opening RPC '${e}' stream ${i} transport.`),c.open(),f=!0),T(av,`RPC '${e}' stream ${i} sending:`,t),c.send(t))},Zo:()=>c.close()}),p=(e,t,r)=>{e.listen(t,e=>{try{r(e)}catch(e){setTimeout(()=>{throw e},0)}})};return p(c,d.iO.EventType.OPEN,()=>{m||(T(av,`RPC '${e}' stream ${i} transport opened.`),g.o_())}),p(c,d.iO.EventType.CLOSE,()=>{m||(m=!0,T(av,`RPC '${e}' stream ${i} transport closed`),g.a_(),this.E_(c))}),p(c,d.iO.EventType.ERROR,t=>{m||(m=!0,E(av,`RPC '${e}' stream ${i} transport errored. Name:`,t.name,"Message:",t.message),g.a_(new C(D.UNAVAILABLE,"The operation could not be completed")))}),p(c,d.iO.EventType.MESSAGE,t=>{if(!m){let r=t.data[0];N(!!r,16349);let s=r?.error||r[0]?.error;if(s){T(av,`RPC '${e}' stream ${i} received error:`,s);let t=s.status,r=function(e){let t=n[e];if(void 0!==t)return nK(t)}(t),a=s.message;void 0===r&&(r=D.INTERNAL,a="Unknown error status: "+t+" with message "+s.message),m=!0,g.a_(new C(r,a)),c.close()}else T(av,`RPC '${e}' stream ${i} received:`,r),g.u_(r)}}),p(o,d.Jh.STAT_EVENT,t=>{t.stat===d.ro.PROXY?T(av,`RPC '${e}' stream ${i} detected buffering proxy`):t.stat===d.ro.NOPROXY&&T(av,`RPC '${e}' stream ${i} detected no buffering proxy`)}),setTimeout(()=>{g.__()},0),g}terminate(){this.c_.forEach(e=>e.close()),this.c_=[]}I_(e){this.c_.push(e)}E_(e){this.c_=this.c_.filter(t=>t===e)}}function aT(){return"undefined"!=typeof window?window:null}function ab(){return"undefined"!=typeof document?document:null}function aE(e){return new n9(e,!0)}class a_{constructor(e,t,r=1e3,n=1.5,i=6e4){this.Mi=e,this.timerId=t,this.d_=r,this.A_=n,this.R_=i,this.V_=0,this.m_=null,this.f_=Date.now(),this.reset()}reset(){this.V_=0}g_(){this.V_=this.R_}p_(e){this.cancel();let t=Math.floor(this.V_+this.y_()),r=Math.max(0,Date.now()-this.f_),n=Math.max(0,t-r);n>0&&T("ExponentialBackoff",`Backing off for ${n} ms (base delay: ${this.V_} ms, delay with jitter: ${t} ms, last attempt: ${r} ms ago)`),this.m_=this.Mi.enqueueAfterDelay(this.timerId,n,()=>(this.f_=Date.now(),e())),this.V_*=this.A_,this.V_this.R_&&(this.V_=this.R_)}w_(){null!==this.m_&&(this.m_.skipDelay(),this.m_=null)}cancel(){null!==this.m_&&(this.m_.cancel(),this.m_=null)}y_(){return(Math.random()-.5)*this.V_}}let aS="PersistentStream";class ax{constructor(e,t,r,n,i,s,a,o){this.Mi=e,this.S_=r,this.b_=n,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=a,this.listener=o,this.state=0,this.D_=0,this.C_=null,this.v_=null,this.stream=null,this.F_=0,this.M_=new a_(e,t)}x_(){return 1===this.state||5===this.state||this.O_()}O_(){return 2===this.state||3===this.state}start(){this.F_=0,4!==this.state?this.auth():this.N_()}async stop(){this.x_()&&await this.close(0)}B_(){this.state=0,this.M_.reset()}L_(){this.O_()&&null===this.C_&&(this.C_=this.Mi.enqueueAfterDelay(this.S_,6e4,()=>this.k_()))}q_(e){this.Q_(),this.stream.send(e)}async k_(){if(this.O_())return this.close(0)}Q_(){this.C_&&(this.C_.cancel(),this.C_=null)}U_(){this.v_&&(this.v_.cancel(),this.v_=null)}async close(e,t){this.Q_(),this.U_(),this.M_.cancel(),this.D_++,4!==e?this.M_.reset():t&&t.code===D.RESOURCE_EXHAUSTED?(b(t.toString()),b("Using maximum backoff delay to prevent overloading the backend."),this.M_.g_()):t&&t.code===D.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.K_(),this.stream.close(),this.stream=null),this.state=e,await this.listener.r_(t)}K_(){}auth(){this.state=1;let e=this.W_(this.D_),t=this.D_;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,r])=>{this.D_===t&&this.G_(e,r)},t=>{e(()=>{let e=new C(D.UNKNOWN,"Fetching auth token failed: "+t.message);return this.z_(e)})})}G_(e,t){let r=this.W_(this.D_);this.stream=this.j_(e,t),this.stream.Xo(()=>{r(()=>this.listener.Xo())}),this.stream.t_(()=>{r(()=>(this.state=2,this.v_=this.Mi.enqueueAfterDelay(this.b_,1e4,()=>(this.O_()&&(this.state=3),Promise.resolve())),this.listener.t_()))}),this.stream.r_(e=>{r(()=>this.z_(e))}),this.stream.onMessage(e=>{r(()=>1==++this.F_?this.J_(e):this.onNext(e))})}N_(){this.state=5,this.M_.p_(async()=>{this.state=0,this.start()})}z_(e){return T(aS,`close with error: ${e}`),this.stream=null,this.close(4,e)}W_(e){return t=>{this.Mi.enqueueAndForget(()=>this.D_===e?t():(T(aS,"stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class aN extends ax{constructor(e,t,r,n,i,s){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,r,n,s),this.serializer=i}j_(e,t){return this.connection.T_("Listen",e,t)}J_(e){return this.onNext(e)}onNext(e){this.M_.reset();let t=function(e,t){let r;if("targetChange"in t){var n,i;t.targetChange;let s="NO_CHANGE"===(n=t.targetChange.targetChangeType||"NO_CHANGE")?0:"ADD"===n?1:"REMOVE"===n?2:"CURRENT"===n?3:"RESET"===n?4:S(39313,{state:n}),a=t.targetChange.targetIds||[],o=(i=t.targetChange.resumeToken,e.useProto3Json?(N(void 0===i||"string"==typeof i,58123),tz.fromBase64String(i||"")):(N(void 0===i||i instanceof m||i instanceof Uint8Array,16193),tz.fromUint8Array(i||new Uint8Array))),l=t.targetChange.cause;r=new n0(s,a,o,l&&new C(void 0===l.code?D.UNKNOWN:nK(l.code),l.message||"")||null)}else if("documentChange"in t){t.documentChange;let n=t.documentChange;n.document,n.document.name,n.document.updateTime;let i=il(e,n.document.name),s=ir(n.document.updateTime),a=n.document.createTime?ir(n.document.createTime):es.min(),o=new rw({mapValue:{fields:n.document.fields}}),l=rv.newFoundDocument(i,s,a,o);r=new nX(n.targetIds||[],n.removedTargetIds||[],l.key,l)}else if("documentDelete"in t){t.documentDelete;let n=t.documentDelete;n.document;let i=il(e,n.document),s=n.readTime?ir(n.readTime):es.min(),a=rv.newNoDocument(i,s);r=new nX([],n.removedTargetIds||[],a.key,a)}else if("documentRemove"in t){t.documentRemove;let n=t.documentRemove;n.document;let i=il(e,n.document);r=new nX([],n.removedTargetIds||[],i,null)}else{if(!("filter"in t))return S(11601,{Rt:t});{t.filter;let e=t.filter;e.targetId;let{count:n=0,unchangedNames:i}=e,s=new nB(n,i);r=new nZ(e.targetId,s)}}return r}(this.serializer,e),r=function(e){if(!("targetChange"in e))return es.min();let t=e.targetChange;return t.targetIds&&t.targetIds.length?es.min():t.readTime?ir(t.readTime):es.min()}(e);return this.listener.H_(t,r)}Y_(e){let t={};t.database=ic(this.serializer),t.addTarget=function(e,t){let r,n=t.target;if((r=r$(n)?{documents:iw(e,n)}:{query:iv(e,n).ft}).targetId=t.targetId,t.resumeToken.approximateByteSize()>0){r.resumeToken=it(e,t.resumeToken);let n=n7(e,t.expectedCount);null!==n&&(r.expectedCount=n)}else if(t.snapshotVersion.compareTo(es.min())>0){r.readTime=ie(e,t.snapshotVersion.toTimestamp());let n=n7(e,t.expectedCount);null!==n&&(r.expectedCount=n)}return r}(this.serializer,e);let r=function(e,t){let r=function(e){switch(e){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return S(28987,{purpose:e})}}(t.purpose);return null==r?null:{"goog-listen-tags":r}}(this.serializer,e);r&&(t.labels=r),this.q_(t)}Z_(e){let t={};t.database=ic(this.serializer),t.removeTarget=e,this.q_(t)}}class aD extends ax{constructor(e,t,r,n,i,s){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,r,n,s),this.serializer=i}get X_(){return this.F_>0}start(){this.lastStreamToken=void 0,super.start()}K_(){this.X_&&this.ea([])}j_(e,t){return this.connection.T_("Write",e,t)}J_(e){return N(!!e.streamToken,31322),this.lastStreamToken=e.streamToken,N(!e.writeResults||0===e.writeResults.length,55816),this.listener.ta()}onNext(e){var t,r;N(!!e.streamToken,12678),this.lastStreamToken=e.streamToken,this.M_.reset();let n=(t=e.writeResults,r=e.commitTime,t&&t.length>0?(N(void 0!==r,14353),t.map(e=>{let t;return(t=e.updateTime?ir(e.updateTime):ir(r)).isEqual(es.min())&&(t=ir(r)),new nE(t,e.transformResults||[])})):[]),i=ir(e.commitTime);return this.listener.na(i,n)}ra(){let e={};e.database=ic(this.serializer),this.q_(e)}ea(e){let t={streamToken:this.lastStreamToken,writes:e.map(e=>ip(this.serializer,e))};this.q_(t)}}class aC{}class aA extends aC{constructor(e,t,r,n){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=r,this.serializer=n,this.ia=!1}sa(){if(this.ia)throw new C(D.FAILED_PRECONDITION,"The client has already been terminated.")}Go(e,t,r,n){return this.sa(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([i,s])=>this.connection.Go(e,is(t,r),n,i,s)).catch(e=>{throw"FirebaseError"===e.name?(e.code===D.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new C(D.UNKNOWN,e.toString())})}Ho(e,t,r,n,i){return this.sa(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([s,a])=>this.connection.Ho(e,is(t,r),n,s,a,i)).catch(e=>{throw"FirebaseError"===e.name?(e.code===D.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new C(D.UNKNOWN,e.toString())})}terminate(){this.ia=!0,this.connection.terminate()}}class ak{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.oa=0,this._a=null,this.aa=!0}ua(){0===this.oa&&(this.ca("Unknown"),this._a=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,()=>(this._a=null,this.la("Backend didn't respond within 10 seconds."),this.ca("Offline"),Promise.resolve())))}ha(e){"Online"===this.state?this.ca("Unknown"):(this.oa++,this.oa>=1&&(this.Pa(),this.la(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.ca("Offline")))}set(e){this.Pa(),this.oa=0,"Online"===e&&(this.aa=!1),this.ca(e)}ca(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}la(e){let t=`Could not reach Cloud Firestore backend. ${e} This 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.aa?(b(t),this.aa=!1):T("OnlineStateTracker",t)}Pa(){null!==this._a&&(this._a.cancel(),this._a=null)}}let aR="RemoteStore";class aV{constructor(e,t,r,n,i){this.localStore=e,this.datastore=t,this.asyncQueue=r,this.remoteSyncer={},this.Ta=[],this.Ia=new Map,this.Ea=new Set,this.da=[],this.Aa=i,this.Aa.Oo(e=>{r.enqueueAndForget(async()=>{az(this)&&(T(aR,"Restarting streams for network reachability change."),await async function(e){e.Ea.add(4),await aO(e),e.Ra.set("Unknown"),e.Ea.delete(4),await aM(e)}(this))})}),this.Ra=new ak(r,n)}}async function aM(e){if(az(e))for(let t of e.da)await t(!0)}async function aO(e){for(let t of e.da)await t(!1)}function aF(e,t){e.Ia.has(t.targetId)||(e.Ia.set(t.targetId,t),aB(e)?aq(e):a5(e).O_()&&aL(e,t))}function aP(e,t){let r=a5(e);e.Ia.delete(t),r.O_()&&aU(e,t),0===e.Ia.size&&(r.O_()?r.L_():az(e)&&e.Ra.set("Unknown"))}function aL(e,t){if(e.Va.Ue(t.targetId),t.resumeToken.approximateByteSize()>0||t.snapshotVersion.compareTo(es.min())>0){let r=e.remoteSyncer.getRemoteKeysForTarget(t.targetId).size;t=t.withExpectedCount(r)}a5(e).Y_(t)}function aU(e,t){e.Va.Ue(t),a5(e).Z_(t)}function aq(e){e.Va=new n2({getRemoteKeysForTarget:t=>e.remoteSyncer.getRemoteKeysForTarget(t),At:t=>e.Ia.get(t)||null,ht:()=>e.datastore.serializer.databaseId}),a5(e).start(),e.Ra.ua()}function aB(e){return az(e)&&!a5(e).x_()&&e.Ia.size>0}function az(e){return 0===e.Ea.size}async function aK(e){e.Ra.set("Online")}async function a$(e){e.Ia.forEach((t,r)=>{aL(e,t)})}async function aG(e,t){e.Va=void 0,aB(e)?(e.Ra.ha(t),aq(e)):e.Ra.set("Unknown")}async function aj(e,t,r){if(e.Ra.set("Online"),t instanceof n0&&2===t.state&&t.cause)try{await async function(e,t){let r=t.cause;for(let n of t.targetIds)e.Ia.has(n)&&(await e.remoteSyncer.rejectListen(n,r),e.Ia.delete(n),e.Va.removeTarget(n))}(e,t)}catch(r){T(aR,"Failed to remove targets %s: %s ",t.targetIds.join(","),r),await aQ(e,r)}else if(t instanceof nX?e.Va.Ze(t):t instanceof nZ?e.Va.st(t):e.Va.tt(t),!r.isEqual(es.min()))try{let t=await sJ(e.localStore);r.compareTo(t)>=0&&await function(e,t){let r=e.Va.Tt(t);return r.targetChanges.forEach((r,n)=>{if(r.resumeToken.approximateByteSize()>0){let i=e.Ia.get(n);i&&e.Ia.set(n,i.withResumeToken(r.resumeToken,t))}}),r.targetMismatches.forEach((t,r)=>{let n=e.Ia.get(t);if(!n)return;e.Ia.set(t,n.withResumeToken(tz.EMPTY_BYTE_STRING,n.snapshotVersion)),aU(e,t);let i=new i_(n.target,t,r,n.sequenceNumber);aL(e,i)}),e.remoteSyncer.applyRemoteEvent(r)}(e,r)}catch(t){T(aR,"Failed to raise snapshot:",t),await aQ(e,t)}}async function aQ(e,t,r){if(!eS(t))throw t;e.Ea.add(1),await aO(e),e.Ra.set("Offline"),r||(r=()=>sJ(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{T(aR,"Retrying IndexedDB access"),await r(),e.Ea.delete(1),await aM(e)})}function aW(e,t){return t().catch(r=>aQ(e,r,t))}async function aH(e){var t;let r=a3(e),n=e.Ta.length>0?e.Ta[e.Ta.length-1].batchId:-1;for(;az(t=e)&&t.Ta.length<10;)try{let t=await function(e,t){return e.persistence.runTransaction("Get next mutation batch","readonly",r=>(void 0===t&&(t=-1),e.mutationQueue.getNextMutationBatchAfterBatchId(r,t)))}(e.localStore,n);if(null===t){0===e.Ta.length&&r.L_();break}n=t.batchId,function(e,t){e.Ta.push(t);let r=a3(e);r.O_()&&r.X_&&r.ea(t.mutations)}(e,t)}catch(t){await aQ(e,t)}aJ(e)&&aY(e)}function aJ(e){return az(e)&&!a3(e).x_()&&e.Ta.length>0}function aY(e){a3(e).start()}async function aX(e){a3(e).ra()}async function aZ(e){let t=a3(e);for(let r of e.Ta)t.ea(r.mutations)}async function a0(e,t,r){let n=e.Ta.shift(),i=nL.from(n,t,r);await aW(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await aH(e)}async function a1(e,t){t&&a3(e).X_&&await async function(e,t){var r;if(nz(r=t.code)&&r!==D.ABORTED){let r=e.Ta.shift();a3(e).B_(),await aW(e,()=>e.remoteSyncer.rejectFailedWrite(r.batchId,t)),await aH(e)}}(e,t),aJ(e)&&aY(e)}async function a2(e,t){e.asyncQueue.verifyOperationInProgress(),T(aR,"RemoteStore received new credentials");let r=az(e);e.Ea.add(3),await aO(e),r&&e.Ra.set("Unknown"),await e.remoteSyncer.handleCredentialChange(t),e.Ea.delete(3),await aM(e)}async function a4(e,t){t?(e.Ea.delete(2),await aM(e)):t||(e.Ea.add(2),await aO(e),e.Ra.set("Unknown"))}function a5(e){var t,r,n;return e.ma||(t=e.datastore,r=e.asyncQueue,n={Xo:aK.bind(null,e),t_:a$.bind(null,e),r_:aG.bind(null,e),H_:aj.bind(null,e)},t.sa(),e.ma=new aN(r,t.connection,t.authCredentials,t.appCheckCredentials,t.serializer,n),e.da.push(async t=>{t?(e.ma.B_(),aB(e)?aq(e):e.Ra.set("Unknown")):(await e.ma.stop(),e.Va=void 0)})),e.ma}function a3(e){var t,r,n;return e.fa||(t=e.datastore,r=e.asyncQueue,n={Xo:()=>Promise.resolve(),t_:aX.bind(null,e),r_:a1.bind(null,e),ta:aZ.bind(null,e),na:a0.bind(null,e)},t.sa(),e.fa=new aD(r,t.connection,t.authCredentials,t.appCheckCredentials,t.serializer,n),e.da.push(async t=>{t?(e.fa.B_(),await aH(e)):(await e.fa.stop(),e.Ta.length>0&&(T(aR,`Stopping write stream with ${e.Ta.length} pending writes`),e.Ta=[]))})),e.fa}class a6{constructor(e,t,r,n,i){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=r,this.op=n,this.removalCallback=i,this.deferred=new A,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch(e=>{})}get promise(){return this.deferred.promise}static createAndSchedule(e,t,r,n,i){let s=new a6(e,t,Date.now()+r,n,i);return s.start(r),s}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new C(D.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 a8(e,t){if(b("AsyncQueue",`${t}: ${e}`),eS(e))return new C(D.UNAVAILABLE,`${t}: ${e}`);throw e}class a9{static emptySet(e){return new a9(e.comparator)}constructor(e){this.comparator=e?(t,r)=>e(t,r)||H.comparator(t.key,r.key):(e,t)=>H.comparator(e.key,t.key),this.keyedMap=nr(),this.sortedSet=new tM(this.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){let t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal((t,r)=>(e(t),!1))}add(e){let t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){let t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof a9)||this.size!==e.size)return!1;let t=this.sortedSet.getIterator(),r=e.sortedSet.getIterator();for(;t.hasNext();){let e=t.getNext().key,n=r.getNext().key;if(!e.isEqual(n))return!1}return!0}toString(){let e=[];return this.forEach(t=>{e.push(t.toString())}),0===e.length?"DocumentSet ()":"DocumentSet (\n "+e.join(" \n")+"\n)"}copy(e,t){let r=new a9;return r.comparator=this.comparator,r.keyedMap=e,r.sortedSet=t,r}}class a7{constructor(){this.ga=new tM(H.comparator)}track(e){let t=e.doc.key,r=this.ga.get(t);r?0!==e.type&&3===r.type?this.ga=this.ga.insert(t,e):3===e.type&&1!==r.type?this.ga=this.ga.insert(t,{type:r.type,doc:e.doc}):2===e.type&&2===r.type?this.ga=this.ga.insert(t,{type:2,doc:e.doc}):2===e.type&&0===r.type?this.ga=this.ga.insert(t,{type:0,doc:e.doc}):1===e.type&&0===r.type?this.ga=this.ga.remove(t):1===e.type&&2===r.type?this.ga=this.ga.insert(t,{type:1,doc:r.doc}):0===e.type&&1===r.type?this.ga=this.ga.insert(t,{type:2,doc:e.doc}):S(63341,{Rt:e,pa:r}):this.ga=this.ga.insert(t,e)}ya(){let e=[];return this.ga.inorderTraversal((t,r)=>{e.push(r)}),e}}class oe{constructor(e,t,r,n,i,s,a,o,l){this.query=e,this.docs=t,this.oldDocs=r,this.docChanges=n,this.mutatedKeys=i,this.fromCache=s,this.syncStateChanged=a,this.excludesMetadataChanges=o,this.hasCachedResults=l}static fromInitialDocuments(e,t,r,n,i){let s=[];return t.forEach(e=>{s.push({type:0,doc:e})}),new oe(e,t,a9.emptySet(t),s,r,n,!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)&&r4(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;let t=this.docChanges,r=e.docChanges;if(t.length!==r.length)return!1;for(let e=0;ee.Da())}}class or{constructor(){this.queries=on(),this.onlineState="Unknown",this.Ca=new Set}terminate(){!function(e,t){let r=e.queries;e.queries=on(),r.forEach((e,r)=>{for(let e of r.Sa)e.onError(t)})}(this,new C(D.ABORTED,"Firestore shutting down"))}}function on(){return new r7(e=>r5(e),r4)}async function oi(e,t){let r=3,n=t.query,i=e.queries.get(n);i?!i.ba()&&t.Da()&&(r=2):(i=new ot,r=+!t.Da());try{switch(r){case 0:i.wa=await e.onListen(n,!0);break;case 1:i.wa=await e.onListen(n,!1);break;case 2:await e.onFirstRemoteStoreListen(n)}}catch(r){let e=a8(r,`Initialization of query '${r3(t.query)}' failed`);return void t.onError(e)}e.queries.set(n,i),i.Sa.push(t),t.va(e.onlineState),i.wa&&t.Fa(i.wa)&&ol(e)}async function os(e,t){let r=t.query,n=3,i=e.queries.get(r);if(i){let e=i.Sa.indexOf(t);e>=0&&(i.Sa.splice(e,1),0===i.Sa.length?n=+!t.Da():!i.ba()&&t.Da()&&(n=2))}switch(n){case 0:return e.queries.delete(r),e.onUnlisten(r,!0);case 1:return e.queries.delete(r),e.onUnlisten(r,!1);case 2:return e.onLastRemoteStoreUnlisten(r);default:return}}function oa(e,t){let r=!1;for(let n of t){let t=n.query,i=e.queries.get(t);if(i){for(let e of i.Sa)e.Fa(n)&&(r=!0);i.wa=n}}r&&ol(e)}function oo(e,t,r){let n=e.queries.get(t);if(n)for(let e of n.Sa)e.onError(r);e.queries.delete(t)}function ol(e){e.Ca.forEach(e=>{e.next()})}(a=s||(s={})).Ma="default",a.Cache="cache";class ou{constructor(e,t,r){this.query=e,this.xa=t,this.Oa=!1,this.Na=null,this.onlineState="Unknown",this.options=r||{}}Fa(e){if(!this.options.includeMetadataChanges){let t=[];for(let r of e.docChanges)3!==r.type&&t.push(r);e=new oe(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Oa?this.Ba(e)&&(this.xa.next(e),t=!0):this.La(e,this.onlineState)&&(this.ka(e),t=!0),this.Na=e,t}onError(e){this.xa.error(e)}va(e){this.onlineState=e;let t=!1;return this.Na&&!this.Oa&&this.La(this.Na,e)&&(this.ka(this.Na),t=!0),t}La(e,t){return!(e.fromCache&&this.Da())||(!this.options.qa||"Offline"===t)&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}Ba(e){if(e.docChanges.length>0)return!0;let t=this.Na&&this.Na.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}ka(e){e=oe.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.Oa=!0,this.xa.next(e)}Da(){return this.options.source!==s.Cache}}class oh{constructor(e,t){this.Qa=e,this.byteLength=t}$a(){return"metadata"in this.Qa}}class oc{constructor(e){this.serializer=e}$s(e){return il(this.serializer,e)}Us(e){return e.metadata.exists?ig(this.serializer,e.document,!1):rv.newNoDocument(this.$s(e.metadata.name),this.Ks(e.metadata.readTime))}Ks(e){return ir(e)}}class od{constructor(e,t){this.Ua=e,this.serializer=t,this.Ka=[],this.Wa=[],this.collectionGroups=new Set,this.progress=of(e)}get queries(){return this.Ka}get documents(){return this.Wa}Ga(e){this.progress.bytesLoaded+=e.byteLength;let t=this.progress.documentsLoaded;if(e.Qa.namedQuery)this.Ka.push(e.Qa.namedQuery);else if(e.Qa.documentMetadata){this.Wa.push({metadata:e.Qa.documentMetadata}),e.Qa.documentMetadata.exists||++t;let r=j.fromString(e.Qa.documentMetadata.name);this.collectionGroups.add(r.get(r.length-2))}else e.Qa.document&&(this.Wa[this.Wa.length-1].document=e.Qa.document,++t);return t!==this.progress.documentsLoaded?(this.progress.documentsLoaded=t,{...this.progress}):null}za(e){let t=new Map,r=new oc(this.serializer);for(let n of e)if(n.metadata.queries){let e=r.$s(n.metadata.name);for(let r of n.metadata.queries){let n=(t.get(r)||no()).add(e);t.set(r,n)}}return t}async ja(e){let t=await s5(e,new oc(this.serializer),this.Wa,this.Ua.id),r=this.za(this.documents);for(let t of this.Ka)await s3(e,t,r.get(t.name));return this.progress.taskState="Success",{progress:this.progress,Ja:this.collectionGroups,Ha:t}}}function of(e){return{taskState:"Running",documentsLoaded:0,bytesLoaded:0,totalDocuments:e.totalDocuments,totalBytes:e.totalBytes}}class om{constructor(e){this.key=e}}class og{constructor(e){this.key=e}}class op{constructor(e,t){this.query=e,this.Ya=t,this.Za=null,this.hasCachedResults=!1,this.current=!1,this.Xa=no(),this.mutatedKeys=no(),this.eu=r9(e),this.tu=new a9(this.eu)}get nu(){return this.Ya}ru(e,t){let r=t?t.iu:new a7,n=t?t.tu:this.tu,i=t?t.mutatedKeys:this.mutatedKeys,s=n,a=!1,o="F"===this.query.limitType&&n.size===this.query.limit?n.last():null,l="L"===this.query.limitType&&n.size===this.query.limit?n.first():null;if(e.inorderTraversal((e,t)=>{let u=n.get(e),h=r6(this.query,t)?t:null,c=!!u&&this.mutatedKeys.has(u.key),d=!!h&&(h.hasLocalMutations||this.mutatedKeys.has(h.key)&&h.hasCommittedMutations),f=!1;u&&h?u.data.isEqual(h.data)?c!==d&&(r.track({type:3,doc:h}),f=!0):this.su(u,h)||(r.track({type:2,doc:h}),f=!0,(o&&this.eu(h,o)>0||l&&0>this.eu(h,l))&&(a=!0)):!u&&h?(r.track({type:0,doc:h}),f=!0):u&&!h&&(r.track({type:1,doc:u}),f=!0,(o||l)&&(a=!0)),f&&(h?(s=s.add(h),i=d?i.add(e):i.delete(e)):(s=s.delete(e),i=i.delete(e)))}),null!==this.query.limit)for(;s.size>this.query.limit;){let e="F"===this.query.limitType?s.last():s.first();s=s.delete(e.key),i=i.delete(e.key),r.track({type:1,doc:e})}return{tu:s,iu:r,Cs:a,mutatedKeys:i}}su(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,r,n){let i=this.tu;this.tu=e.tu,this.mutatedKeys=e.mutatedKeys;let s=e.iu.ya();s.sort((e,t)=>(function(e,t){let r=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return S(20277,{Rt:e})}};return r(e)-r(t)})(e.type,t.type)||this.eu(e.doc,t.doc)),this.ou(r),n=n??!1;let a=t&&!n?this._u():[],o=0===this.Xa.size&&this.current&&!n?1:0,l=o!==this.Za;return(this.Za=o,0!==s.length||l)?{snapshot:new oe(this.query,e.tu,i,s,e.mutatedKeys,0===o,l,!1,!!r&&r.resumeToken.approximateByteSize()>0),au:a}:{au:a}}va(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({tu:this.tu,iu:new a7,mutatedKeys:this.mutatedKeys,Cs:!1},!1)):{au:[]}}uu(e){return!this.Ya.has(e)&&!!this.tu.has(e)&&!this.tu.get(e).hasLocalMutations}ou(e){e&&(e.addedDocuments.forEach(e=>this.Ya=this.Ya.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.Ya=this.Ya.delete(e)),this.current=e.current)}_u(){if(!this.current)return[];let e=this.Xa;this.Xa=no(),this.tu.forEach(e=>{this.uu(e.key)&&(this.Xa=this.Xa.add(e.key))});let t=[];return e.forEach(e=>{this.Xa.has(e)||t.push(new og(e))}),this.Xa.forEach(r=>{e.has(r)||t.push(new om(r))}),t}cu(e){this.Ya=e.Qs,this.Xa=no();let t=this.ru(e.documents);return this.applyChanges(t,!0)}lu(){return oe.fromInitialDocuments(this.query,this.tu,this.mutatedKeys,0===this.Za,this.hasCachedResults)}}let oy="SyncEngine";class ow{constructor(e,t,r){this.query=e,this.targetId=t,this.view=r}}class ov{constructor(e){this.key=e,this.hu=!1}}class oI{constructor(e,t,r,n,i,s){this.localStore=e,this.remoteStore=t,this.eventManager=r,this.sharedClientState=n,this.currentUser=i,this.maxConcurrentLimboResolutions=s,this.Pu={},this.Tu=new r7(e=>r5(e),r4),this.Iu=new Map,this.Eu=new Set,this.du=new tM(H.comparator),this.Au=new Map,this.Ru=new sD,this.Vu={},this.mu=new Map,this.fu=so.cr(),this.onlineState="Unknown",this.gu=void 0}get isPrimaryClient(){return!0===this.gu}}async function oT(e,t,r=!0){let n,i=oY(e),s=i.Tu.get(t);return s?(i.sharedClientState.addLocalQueryTarget(s.targetId),n=s.view.lu()):n=await oE(i,t,r,!0),n}async function ob(e,t){let r=oY(e);await oE(r,t,!0,!1)}async function oE(e,t,r,n){let i,s=await sX(e.localStore,rZ(t)),a=s.targetId,o=e.sharedClientState.addLocalQueryTarget(a,r);return n&&(i=await o_(e,t,a,"current"===o,s.resumeToken)),e.isPrimaryClient&&r&&aF(e.remoteStore,s),i}async function o_(e,t,r,n,i){e.pu=(t,r,n)=>(async function(e,t,r,n){let i=t.view.ru(r);i.Cs&&(i=await s0(e.localStore,t.query,!1).then(({documents:e})=>t.view.ru(e,i)));let s=n&&n.targetChanges.get(t.targetId),a=n&&null!=n.targetMismatches.get(t.targetId),o=t.view.applyChanges(i,e.isPrimaryClient,s,a);return oP(e,t.targetId,o.au),o.snapshot})(e,t,r,n);let s=await s0(e.localStore,t,!0),a=new op(t,s.Qs),o=a.ru(s.documents),l=nY.createSynthesizedTargetChangeForCurrentChange(r,n&&"Offline"!==e.onlineState,i),u=a.applyChanges(o,e.isPrimaryClient,l);oP(e,r,u.au);let h=new ow(t,r,a);return e.Tu.set(t,h),e.Iu.has(r)?e.Iu.get(r).push(t):e.Iu.set(r,[t]),u.snapshot}async function oS(e,t,r){let n=e.Tu.get(t),i=e.Iu.get(n.targetId);if(i.length>1)return e.Iu.set(n.targetId,i.filter(e=>!r4(e,t))),void e.Tu.delete(t);e.isPrimaryClient?(e.sharedClientState.removeLocalQueryTarget(n.targetId),e.sharedClientState.isActiveQueryTarget(n.targetId)||await sZ(e.localStore,n.targetId,!1).then(()=>{e.sharedClientState.clearQueryState(n.targetId),r&&aP(e.remoteStore,n.targetId),oO(e,n.targetId)}).catch(ey)):(oO(e,n.targetId),await sZ(e.localStore,n.targetId,!0))}async function ox(e,t){let r=e.Tu.get(t),n=e.Iu.get(r.targetId);e.isPrimaryClient&&1===n.length&&(e.sharedClientState.removeLocalQueryTarget(r.targetId),aP(e.remoteStore,r.targetId))}async function oN(e,t,r){let n=oX(e);try{var i;let e,s=await function(e,t){let r,n,i=ei.now(),s=t.reduce((e,t)=>e.add(t.key),no());return e.persistence.runTransaction("Locally write mutations","readwrite",a=>{let o=ne,l=no();return e.Ns.getEntries(a,s).next(e=>{(o=e).forEach((e,t)=>{t.isValidDocument()||(l=l.add(e))})}).next(()=>e.localDocuments.getOverlayedDocuments(a,o)).next(n=>{r=n;let s=[];for(let e of t){let t=function(e,t){let r=null;for(let n of e.fieldTransforms){let e=t.data.field(n.field),i=nf(n.transform,e||null);null!=i&&(null===r&&(r=rw.empty()),r.set(n.field,i))}return r||null}(e,r.get(e.key).overlayedDocument);null!=t&&s.push(new nk(e.key,t,function e(t){let r=[];return tR(t.fields,(t,n)=>{let i=new W([t]);if(rc(n)){let t=e(n.mapValue).fields;if(0===t.length)r.push(i);else for(let e of t)r.push(i.child(e))}else r.push(i)}),new tq(r)}(t.value.mapValue),n_.exists(!0)))}return e.mutationQueue.addMutationBatch(a,i,s,t)}).next(t=>{n=t;let i=t.applyToLocalDocumentSet(r,l);return e.documentOverlayCache.saveOverlays(a,t.batchId,i)})}).then(()=>({batchId:n.batchId,changes:nn(r)}))}(n.localStore,t);n.sharedClientState.addPendingMutation(s.batchId),i=s.batchId,(e=n.Vu[n.currentUser.toKey()])||(e=new tM(q)),e=e.insert(i,r),n.Vu[n.currentUser.toKey()]=e,await oU(n,s.changes),await aH(n.remoteStore)}catch(t){let e=a8(t,"Failed to persist write");r.reject(e)}}async function oD(e,t){try{let r=await function(e,t){let r=t.snapshotVersion,n=e.Ms;return e.persistence.runTransaction("Apply remote event","readwrite-primary",i=>{let s=e.Ns.newChangeBuffer({trackRemovals:!0});n=e.Ms;let a=[];t.targetChanges.forEach((s,o)=>{var l;let u=n.get(o);if(!u)return;a.push(e.Pi.removeMatchingKeys(i,s.removedDocuments,o).next(()=>e.Pi.addMatchingKeys(i,s.addedDocuments,o)));let h=u.withSequenceNumber(i.currentSequenceNumber);null!==t.targetMismatches.get(o)?h=h.withResumeToken(tz.EMPTY_BYTE_STRING,es.min()).withLastLimboFreeSnapshotVersion(es.min()):s.resumeToken.approximateByteSize()>0&&(h=h.withResumeToken(s.resumeToken,r)),n=n.insert(o,h),l=h,(0===u.resumeToken.approximateByteSize()||l.snapshotVersion.toMicroseconds()-u.snapshotVersion.toMicroseconds()>=3e8||s.addedDocuments.size+s.modifiedDocuments.size+s.removedDocuments.size>0)&&a.push(e.Pi.updateTargetData(i,h))});let o=ne,l=no();if(t.documentUpdates.forEach(r=>{t.resolvedLimboDocuments.has(r)&&a.push(e.persistence.referenceDelegate.updateLimboDocument(i,r))}),a.push(sY(i,s,t.documentUpdates).next(e=>{o=e.ks,l=e.qs})),!r.isEqual(es.min())){let t=e.Pi.getLastRemoteSnapshotVersion(i).next(t=>e.Pi.setTargetsMetadata(i,i.currentSequenceNumber,r));a.push(t)}return ew.waitFor(a).next(()=>s.apply(i)).next(()=>e.localDocuments.getLocalViewOfDocuments(i,o,l)).next(()=>o)}).then(t=>(e.Ms=n,t))}(e.localStore,t);t.targetChanges.forEach((t,r)=>{let n=e.Au.get(r);n&&(N(t.addedDocuments.size+t.modifiedDocuments.size+t.removedDocuments.size<=1,22616),t.addedDocuments.size>0?n.hu=!0:t.modifiedDocuments.size>0?N(n.hu,14607):t.removedDocuments.size>0&&(N(n.hu,42227),n.hu=!1))}),await oU(e,r,t)}catch(e){await ey(e)}}function oC(e,t,r){var n;if(e.isPrimaryClient&&0===r||!e.isPrimaryClient&&1===r){let r,i=[];e.Tu.forEach((e,r)=>{let n=r.view.va(t);n.snapshot&&i.push(n.snapshot)}),(n=e.eventManager).onlineState=t,r=!1,n.queries.forEach((e,n)=>{for(let e of n.Sa)e.va(t)&&(r=!0)}),r&&ol(n),i.length&&e.Pu.H_(i),e.onlineState=t,e.isPrimaryClient&&e.sharedClientState.setOnlineState(t)}}async function oA(e,t,r){e.sharedClientState.updateQueryState(t,"rejected",r);let n=e.Au.get(t),i=n&&n.key;if(i){let r=new tM(H.comparator);r=r.insert(i,rv.newNoDocument(i,es.min()));let n=no().add(i),s=new nJ(es.min(),new Map,new tM(q),r,n);await oD(e,s),e.du=e.du.remove(i),e.Au.delete(t),oL(e)}else await sZ(e.localStore,t,!1).then(()=>oO(e,t,r)).catch(ey)}async function ok(e,t){var r;let n=t.batch.batchId;try{let i=await (r=e.localStore).persistence.runTransaction("Acknowledge batch","readwrite-primary",e=>{let n=t.batch.keys(),i=r.Ns.newChangeBuffer({trackRemovals:!0});return(function(e,t,r,n){let i=r.batch,s=i.keys(),a=ew.resolve();return s.forEach(e=>{a=a.next(()=>n.getEntry(t,e)).next(t=>{let s=r.docVersions.get(e);N(null!==s,48541),0>t.version.compareTo(s)&&(i.applyToRemoteDocument(t,r),t.isValidDocument()&&(t.setReadTime(r.commitVersion),n.addEntry(t)))})}),a.next(()=>e.mutationQueue.removeMutationBatch(t,i))})(r,e,t,i).next(()=>i.apply(e)).next(()=>r.mutationQueue.performConsistencyCheck(e)).next(()=>r.documentOverlayCache.removeOverlaysForBatchId(e,n,t.batch.batchId)).next(()=>r.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=no();for(let r=0;r0&&(t=t.add(e.batch.mutations[r].key));return t}(t))).next(()=>r.localDocuments.getDocuments(e,n))});oM(e,n,null),oV(e,n),e.sharedClientState.updateMutationState(n,"acknowledged"),await oU(e,i)}catch(e){await ey(e)}}async function oR(e,t,r){var n;try{let i=await (n=e.localStore).persistence.runTransaction("Reject batch","readwrite-primary",e=>{let r;return n.mutationQueue.lookupMutationBatch(e,t).next(t=>(N(null!==t,37113),r=t.keys(),n.mutationQueue.removeMutationBatch(e,t))).next(()=>n.mutationQueue.performConsistencyCheck(e)).next(()=>n.documentOverlayCache.removeOverlaysForBatchId(e,r,t)).next(()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,r)).next(()=>n.localDocuments.getDocuments(e,r))});oM(e,t,r),oV(e,t),e.sharedClientState.updateMutationState(t,"rejected",r),await oU(e,i)}catch(e){await ey(e)}}function oV(e,t){(e.mu.get(t)||[]).forEach(e=>{e.resolve()}),e.mu.delete(t)}function oM(e,t,r){let n=e.Vu[e.currentUser.toKey()];if(n){let i=n.get(t);i&&(r?i.reject(r):i.resolve(),n=n.remove(t)),e.Vu[e.currentUser.toKey()]=n}}function oO(e,t,r=null){for(let n of(e.sharedClientState.removeLocalQueryTarget(t),e.Iu.get(t)))e.Tu.delete(n),r&&e.Pu.yu(n,r);e.Iu.delete(t),e.isPrimaryClient&&e.Ru.jr(t).forEach(t=>{e.Ru.containsKey(t)||oF(e,t)})}function oF(e,t){e.Eu.delete(t.path.canonicalString());let r=e.du.get(t);null!==r&&(aP(e.remoteStore,r),e.du=e.du.remove(t),e.Au.delete(r),oL(e))}function oP(e,t,r){for(let n of r)n instanceof om?(e.Ru.addReference(n.key,t),function(e,t){let r=t.key,n=r.path.canonicalString();e.du.get(r)||e.Eu.has(n)||(T(oy,"New document in limbo: "+r),e.Eu.add(n),oL(e))}(e,n)):n instanceof og?(T(oy,"Document no longer in limbo: "+n.key),e.Ru.removeReference(n.key,t),e.Ru.containsKey(n.key)||oF(e,n.key)):S(19791,{wu:n})}function oL(e){for(;e.Eu.size>0&&e.du.size{s.push(e.pu(o,t,r).then(t=>{if((t||r)&&e.isPrimaryClient){let n=t?!t.fromCache:r?.targetChanges.get(o.targetId)?.current;e.sharedClientState.updateQueryState(o.targetId,n?"current":"not-current")}if(t){n.push(t);let e=s$.As(o.targetId,t);i.push(e)}}))}),await Promise.all(s),e.Pu.H_(n),await async function(e,t){try{await e.persistence.runTransaction("notifyLocalViewChanges","readwrite",r=>ew.forEach(t,t=>ew.forEach(t.Es,n=>e.persistence.referenceDelegate.addReference(r,t.targetId,n)).next(()=>ew.forEach(t.ds,n=>e.persistence.referenceDelegate.removeReference(r,t.targetId,n)))))}catch(e){if(!eS(e))throw e;T(sQ,"Failed to update sequence numbers: "+e)}for(let r of t){let t=r.targetId;if(!r.fromCache){let r=e.Ms.get(t),n=r.snapshotVersion,i=r.withLastLimboFreeSnapshotVersion(n);e.Ms=e.Ms.insert(t,i)}}}(e.localStore,i))}async function oq(e,t){if(!e.currentUser.isEqual(t)){T(oy,"User change. New user:",t.toKey());let r=await sH(e.localStore,t);e.currentUser=t,e.mu.forEach(e=>{e.forEach(e=>{e.reject(new C(D.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))})}),e.mu.clear(),e.sharedClientState.handleUserChange(t,r.removedBatchIds,r.addedBatchIds),await oU(e,r.Ls)}}function oB(e,t){let r=e.Au.get(t);if(r&&r.hu)return no().add(r.key);{let r=no(),n=e.Iu.get(t);if(!n)return r;for(let t of n){let n=e.Tu.get(t);r=r.unionWith(n.view.nu)}return r}}async function oz(e,t){let r=await s0(e.localStore,t.query,!0),n=t.view.cu(r);return e.isPrimaryClient&&oP(e,t.targetId,n.au),n}async function oK(e,t){return s2(e.localStore,t).then(t=>oU(e,t))}async function o$(e,t,r,n){let i=await function(e,t){let r=e.mutationQueue;return e.persistence.runTransaction("Lookup mutation documents","readonly",n=>r.er(n,t).next(t=>t?e.localDocuments.getDocuments(n,t):ew.resolve(null)))}(e.localStore,t);null!==i?("pending"===r?await aH(e.remoteStore):"acknowledged"===r||"rejected"===r?(oM(e,t,n||null),oV(e,t),function(e,t){e.mutationQueue.ir(t)}(e.localStore,t)):S(6720,"Unknown batchState",{Su:r}),await oU(e,i)):T(oy,"Cannot apply mutation batch with id: "+t)}async function oG(e,t){if(oY(e),oX(e),!0===t&&!0!==e.gu){let t=e.sharedClientState.getAllActiveQueryTargets(),r=await oj(e,t.toArray());for(let t of(e.gu=!0,await a4(e.remoteStore,!0),r))aF(e.remoteStore,t)}else if(!1===t&&!1!==e.gu){let t=[],r=Promise.resolve();e.Iu.forEach((n,i)=>{e.sharedClientState.isLocalQueryTarget(i)?t.push(i):r=r.then(()=>(oO(e,i),sZ(e.localStore,i,!0))),aP(e.remoteStore,i)}),await r,await oj(e,t),e.Au.forEach((t,r)=>{aP(e.remoteStore,r)}),e.Ru.Jr(),e.Au=new Map,e.du=new tM(H.comparator),e.gu=!1,await a4(e.remoteStore,!1)}}async function oj(e,t,r){let n=[],i=[];for(let r of t){let t,s=e.Iu.get(r);if(s&&0!==s.length)for(let r of(t=await sX(e.localStore,rZ(s[0])),s)){let t=e.Tu.get(r),n=await oz(e,t);n.snapshot&&i.push(n.snapshot)}else{let n=await s1(e.localStore,r);t=await sX(e.localStore,n),await o_(e,oQ(n),r,!1,t.resumeToken)}n.push(t)}return e.Pu.H_(i),n}function oQ(e){var t,r,n,i,s;return t=e.path,r=e.collectionGroup,n=e.orderBy,i=e.filters,s=e.limit,new rW(t,r,n,i,s,"F",e.startAt,e.endAt)}function oW(e){return e.localStore.persistence.Ts()}async function oH(e,t,r,n){if(e.gu)return void T(oy,"Ignoring unexpected query state notification.");let i=e.Iu.get(t);if(i&&i.length>0)switch(r){case"current":case"not-current":{let n=await s2(e.localStore,r8(i[0])),s=nJ.createSynthesizedRemoteEventForCurrentChange(t,"current"===r,tz.EMPTY_BYTE_STRING);await oU(e,n,s);break}case"rejected":await sZ(e.localStore,t,!0),oO(e,t,n);break;default:S(64155,r)}}async function oJ(e,t,r){let n=oY(e);if(n.gu){for(let e of t){if(n.Iu.has(e)&&n.sharedClientState.isActiveQueryTarget(e)){T(oy,"Adding an already active target "+e);continue}let t=await s1(n.localStore,e),r=await sX(n.localStore,t);await o_(n,oQ(t),r.targetId,!1,r.resumeToken),aF(n.remoteStore,r)}for(let e of r)n.Iu.has(e)&&await sZ(n.localStore,e,!1).then(()=>{aP(n.remoteStore,e),oO(n,e)}).catch(ey)}}function oY(e){return e.remoteStore.remoteSyncer.applyRemoteEvent=oD.bind(null,e),e.remoteStore.remoteSyncer.getRemoteKeysForTarget=oB.bind(null,e),e.remoteStore.remoteSyncer.rejectListen=oA.bind(null,e),e.Pu.H_=oa.bind(null,e.eventManager),e.Pu.yu=oo.bind(null,e.eventManager),e}function oX(e){return e.remoteStore.remoteSyncer.applySuccessfulWrite=ok.bind(null,e),e.remoteStore.remoteSyncer.rejectFailedWrite=oR.bind(null,e),e}class oZ{constructor(){this.kind="memory",this.synchronizeTabs=!1}async initialize(e){this.serializer=aE(e.databaseInfo.databaseId),this.sharedClientState=this.Du(e),this.persistence=this.Cu(e),await this.persistence.start(),this.localStore=this.vu(e),this.gcScheduler=this.Fu(e,this.localStore),this.indexBackfillerScheduler=this.Mu(e,this.localStore)}Fu(e,t){return null}Mu(e,t){return null}vu(e){var t,r;return t=this.persistence,r=new sj,new sW(t,r,e.initialUser,this.serializer)}Cu(e){return new sM(sF.mi,this.serializer)}Du(e){return new au}async terminate(){this.gcScheduler?.stop(),this.indexBackfillerScheduler?.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}oZ.provider={build:()=>new oZ};class o0 extends oZ{constructor(e){super(),this.cacheSizeBytes=e}Fu(e,t){return N(this.persistence.referenceDelegate instanceof sP,46915),new sf(this.persistence.referenceDelegate.garbageCollector,e.asyncQueue,t)}Cu(e){let t=void 0!==this.cacheSizeBytes?st.withCacheSize(this.cacheSizeBytes):st.DEFAULT;return new sM(e=>sP.mi(e,t),this.serializer)}}class o1 extends oZ{constructor(e,t,r){super(),this.xu=e,this.cacheSizeBytes=t,this.forceOwnership=r,this.kind="persistent",this.synchronizeTabs=!1}async initialize(e){await super.initialize(e),await this.xu.initialize(this,e),await oX(this.xu.syncEngine),await aH(this.xu.remoteStore),await this.persistence.Ji(()=>(this.gcScheduler&&!this.gcScheduler.started&&this.gcScheduler.start(),this.indexBackfillerScheduler&&!this.indexBackfillerScheduler.started&&this.indexBackfillerScheduler.start(),Promise.resolve()))}vu(e){var t,r;return t=this.persistence,r=new sj,new sW(t,r,e.initialUser,this.serializer)}Fu(e,t){return new sf(this.persistence.referenceDelegate.garbageCollector,e.asyncQueue,t)}Mu(e,t){let r=new eR(t,this.persistence);return new ek(e.asyncQueue,r)}Cu(e){let t=sK(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey),r=void 0!==this.cacheSizeBytes?st.withCacheSize(this.cacheSizeBytes):st.DEFAULT;return new sz(this.synchronizeTabs,t,e.clientId,r,e.asyncQueue,aT(),ab(),this.serializer,this.sharedClientState,!!this.forceOwnership)}Du(e){return new au}}class o2 extends o1{constructor(e,t){super(e,t,!1),this.xu=e,this.cacheSizeBytes=t,this.synchronizeTabs=!0}async initialize(e){await super.initialize(e);let t=this.xu.syncEngine;this.sharedClientState instanceof al&&(this.sharedClientState.syncEngine={Co:o$.bind(null,t),vo:oH.bind(null,t),Fo:oJ.bind(null,t),Ts:oW.bind(null,t),Do:oK.bind(null,t)},await this.sharedClientState.start()),await this.persistence.Ji(async e=>{await oG(this.xu.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())})}Du(e){let t=aT();if(!al.v(t))throw new C(D.UNIMPLEMENTED,"IndexedDB persistence is only available on platforms that support LocalStorage.");let r=sK(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey);return new al(t,e.asyncQueue,r,e.clientId,e.initialUser)}}class o4{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=>oC(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=oq.bind(null,this.syncEngine),await a4(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new or}createDatastore(e){var t;let r=aE(e.databaseInfo.databaseId),n=new aI(e.databaseInfo);return t=e.authCredentials,new aA(t,e.appCheckCredentials,n,r)}createRemoteStore(e){var t,r;return t=this.localStore,r=this.datastore,new aV(t,r,e.asyncQueue,e=>oC(this.syncEngine,e,0),ad.v()?new ad:new ah)}createSyncEngine(e,t){return function(e,t,r,n,i,s,a){let o=new oI(e,t,r,n,i,s);return a&&(o.gu=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}async terminate(){await async function(e){T(aR,"RemoteStore shutting down."),e.Ea.add(5),await aO(e),e.Aa.shutdown(),e.Ra.set("Unknown")}(this.remoteStore),this.datastore?.terminate(),this.eventManager?.terminate()}}function o5(e,t=10240){let r=0;return{async read(){if(rnew o4};class o3{constructor(e){this.observer=e,this.muted=!1}next(e){this.muted||this.observer.next&&this.Ou(this.observer.next,e)}error(e){this.muted||(this.observer.error?this.Ou(this.observer.error,e):b("Uncaught Error in snapshot listener:",e.toString()))}Nu(){this.muted=!0}Ou(e,t){setTimeout(()=>{this.muted||e(t)},0)}}class o6{constructor(e,t){this.Bu=e,this.serializer=t,this.metadata=new A,this.buffer=new Uint8Array,this.Lu=new TextDecoder("utf-8"),this.ku().then(e=>{e&&e.$a()?this.metadata.resolve(e.Qa.metadata):this.metadata.reject(Error(`The first element of the bundle is not a metadata, it is ${JSON.stringify(e?.Qa)}`))},e=>this.metadata.reject(e))}close(){return this.Bu.cancel()}async getMetadata(){return this.metadata.promise}async bu(){return await this.getMetadata(),this.ku()}async ku(){let e=await this.qu();if(null===e)return null;let t=this.Lu.decode(e),r=Number(t);return isNaN(r)&&this.Qu(`length string (${t}) is not valid number`),new oh(JSON.parse(await this.$u(r)),e.length+r)}Uu(){return this.buffer.findIndex(e=>123===e)}async qu(){for(;0>this.Uu()&&!await this.Ku(););if(0===this.buffer.length)return null;let e=this.Uu();e<0&&this.Qu("Reached the end of bundle when a length string is expected.");let t=this.buffer.slice(0,e);return this.buffer=this.buffer.slice(e),t}async $u(e){for(;this.buffer.lengththis.bundleData.length)throw new C(D.INTERNAL,"Reached the end of bundle when more is expected.");return this.bundleData.slice(this.cursor,this.cursor+=e)}qu(){let e=this.cursor,t=this.cursor;for(;t0)throw this.lastTransactionError=new C(D.INVALID_ARGUMENT,"Firestore transactions require all reads to be executed before all writes."),this.lastTransactionError;let t=await async function(e,t){let r={documents:t.map(t=>io(e.serializer,t))},n=await e.Ho("BatchGetDocuments",e.serializer.databaseId,j.emptyPath(),r,t.length),i=new Map;n.forEach(t=>{var r;let n=(r=e.serializer,"found"in t?function(e,t){N(!!t.found,43571),t.found.name,t.found.updateTime;let r=il(e,t.found.name),n=ir(t.found.updateTime),i=t.found.createTime?ir(t.found.createTime):es.min(),s=new rw({mapValue:{fields:t.found.fields}});return rv.newFoundDocument(r,n,i,s)}(r,t):"missing"in t?function(e,t){N(!!t.missing,3894),N(!!t.readTime,22933);let r=il(e,t.missing),n=ir(t.readTime);return rv.newNoDocument(r,n)}(r,t):S(7234,{result:t}));i.set(n.key.toString(),n)});let s=[];return t.forEach(e=>{let t=i.get(e.toString());N(!!t,55234,{key:e}),s.push(t)}),s}(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.lastTransactionError=e}this.writtenDocs.add(e.toString())}delete(e){this.write(new nO(e,this.precondition(e))),this.writtenDocs.add(e.toString())}async commit(){if(this.ensureCommitNotCalled(),this.lastTransactionError)throw this.lastTransactionError;let e=this.readVersions;this.mutations.forEach(t=>{e.delete(t.key.toString())}),e.forEach((e,t)=>{let r=H.fromPath(t);this.mutations.push(new nF(r,this.precondition(r)))}),await async function(e,t){let r={writes:t.map(t=>ip(e.serializer,t))};await e.Go("Commit",e.serializer.databaseId,j.emptyPath(),r)}(this.datastore,this.mutations),this.committed=!0}recordVersion(e){let t;if(e.isFoundDocument())t=e.version;else{if(!e.isNoDocument())throw S(50498,{Gu:e.constructor.name});t=es.min()}let r=this.readVersions.get(e.key.toString());if(r){if(!t.isEqual(r))throw new C(D.ABORTED,"Document version changed between two reads.")}else this.readVersions.set(e.key.toString(),t)}precondition(e){let t=this.readVersions.get(e.toString());return!this.writtenDocs.has(e.toString())&&t?t.isEqual(es.min())?n_.exists(!1):n_.updateTime(t):n_.none()}preconditionForUpdate(e){let t=this.readVersions.get(e.toString());if(!this.writtenDocs.has(e.toString())&&t){if(t.isEqual(es.min()))throw new C(D.INVALID_ARGUMENT,"Can't update a document that doesn't exist.");return n_.updateTime(t)}return n_.exists(!0)}write(e){this.ensureCommitNotCalled(),this.mutations.push(e)}ensureCommitNotCalled(){}}let o7="FirestoreClient";class le{constructor(e,t,r,n,i){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=r,this.databaseInfo=n,this.user=y.UNAUTHENTICATED,this.clientId=U.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this._uninitializedComponentsProvider=i,this.authCredentials.start(r,async e=>{T(o7,"Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(r,e=>(T(o7,"Received new app check token=",e),this.appCheckCredentialListener(e,this.user)))}get configuration(){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}terminate(){this.asyncQueue.enterRestrictedMode();let e=new A;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(r){let t=a8(r,"Failed to shutdown persistence");e.reject(t)}}),e.promise}}async function lt(e,t){e.asyncQueue.verifyOperationInProgress(),T(o7,"Initializing OfflineComponentProvider");let r=e.configuration;await t.initialize(r);let n=r.initialUser;e.setCredentialChangeListener(async e=>{n.isEqual(e)||(await sH(t.localStore,e),n=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e._offlineComponents=t}async function lr(e,t){e.asyncQueue.verifyOperationInProgress();let r=await ln(e);T(o7,"Initializing OnlineComponentProvider"),await t.initialize(r,e.configuration),e.setCredentialChangeListener(e=>a2(t.remoteStore,e)),e.setAppCheckTokenChangeListener((e,r)=>a2(t.remoteStore,r)),e._onlineComponents=t}async function ln(e){if(!e._offlineComponents)if(e._uninitializedComponentsProvider){T(o7,"Using user provided OfflineComponentProvider");try{await lt(e,e._uninitializedComponentsProvider._offline)}catch(t){if(!("FirebaseError"===t.name?t.code===D.FAILED_PRECONDITION||t.code===D.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&t instanceof DOMException)||22===t.code||20===t.code||11===t.code))throw t;E("Error using user provided cache. Falling back to memory cache: "+t),await lt(e,new oZ)}}else T(o7,"Using default OfflineComponentProvider"),await lt(e,new o0(void 0));return e._offlineComponents}async function li(e){return e._onlineComponents||(e._uninitializedComponentsProvider?(T(o7,"Using user provided OnlineComponentProvider"),await lr(e,e._uninitializedComponentsProvider._online)):(T(o7,"Using default OnlineComponentProvider"),await lr(e,new o4))),e._onlineComponents}function ls(e){return li(e).then(e=>e.syncEngine)}async function la(e){let t=await li(e),r=t.eventManager;return r.onListen=oT.bind(null,t.syncEngine),r.onUnlisten=oS.bind(null,t.syncEngine),r.onFirstRemoteStoreListen=ob.bind(null,t.syncEngine),r.onLastRemoteStoreUnlisten=ox.bind(null,t.syncEngine),r}function lo(e){let t={};return void 0!==e.timeoutSeconds&&(t.timeoutSeconds=e.timeoutSeconds),t}let ll=new Map,lu="firestore.googleapis.com";class lh{constructor(e){if(void 0===e.host){if(void 0!==e.ssl)throw new C(D.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host=lu,this.ssl=!0}else this.host=e.host,this.ssl=e.ssl??!0;if(this.isUsingEmulator=void 0!==e.emulatorOptions,this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,this.localCache=e.localCache,void 0===e.cacheSizeBytes)this.cacheSizeBytes=0x2800000;else{if(-1!==e.cacheSizeBytes&&e.cacheSizeBytes<1048576)throw new C(D.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}(function(e,t,r,n){if(!0===t&&!0===n)throw new C(D.INVALID_ARGUMENT,`${e} and ${r} cannot be used together.`)})("experimentalForceLongPolling",e.experimentalForceLongPolling,"experimentalAutoDetectLongPolling",e.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:void 0===e.experimentalAutoDetectLongPolling?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=lo(e.experimentalLongPollingOptions??{}),function(e){if(void 0!==e.timeoutSeconds){if(isNaN(e.timeoutSeconds))throw new C(D.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (must not be NaN)`);if(e.timeoutSeconds<5)throw new C(D.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (minimum allowed value is 5)`);if(e.timeoutSeconds>30)throw new C(D.INVALID_ARGUMENT,`invalid long polling timeout: ${e.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!e.useFetchStreams}isEqual(e){var t,r;return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&(t=this.experimentalLongPollingOptions,r=e.experimentalLongPollingOptions,t.timeoutSeconds===r.timeoutSeconds)&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class lc{constructor(e,t,r,n){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=r,this._app=n,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new lh({}),this._settingsFrozen=!1,this._emulatorOptions={},this._terminateTask="notTerminated"}get app(){if(!this._app)throw new C(D.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return"notTerminated"!==this._terminateTask}_setSettings(e){if(this._settingsFrozen)throw new C(D.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new lh(e),this._emulatorOptions=e.emulatorOptions||{},void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new R;switch(e.type){case"firstParty":return new F(e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new C(D.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_getEmulatorOptions(){return this._emulatorOptions}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return"notTerminated"===this._terminateTask&&(this._terminateTask=this._terminate()),this._terminateTask}async _restart(){"notTerminated"===this._terminateTask?await this._terminate():this._terminateTask="notTerminated"}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(e){let t=ll.get(e);t&&(T("ComponentProvider","Removing Datastore"),ll.delete(e),t.terminate())}(this),Promise.resolve()}}class ld{constructor(e,t,r){this.converter=t,this._query=r,this.type="query",this.firestore=e}withConverter(e){return new ld(this.firestore,e,this._query)}}class lf{constructor(e,t,r){this.converter=t,this._key=r,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new lm(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new lf(this.firestore,e,this._key)}toJSON(){return{type:lf._jsonSchemaVersion,referencePath:this._key.toString()}}static fromJSON(e,t,r){if(en(t,lf._jsonSchema))return new lf(e,r||null,new H(j.fromString(t.referencePath)))}}lf._jsonSchemaVersion="firestore/documentReference/1.0",lf._jsonSchema={type:er("string",lf._jsonSchemaVersion),referencePath:er("string")};class lm extends ld{constructor(e,t,r){super(e,t,rH(r)),this._path=r,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){let e=this._path.popLast();return e.isEmpty()?null:new lf(this.firestore,null,new H(e))}withConverter(e){return new lm(this.firestore,e,this._path)}}function lg(e,t,...r){if(e=(0,h.Ku)(e),J("collection","path",t),e instanceof lc){let n=j.fromString(t,...r);return X(n),new lm(e,null,n)}{if(!(e instanceof lf||e instanceof lm))throw new C(D.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");let n=e._path.child(j.fromString(t,...r));return X(n),new lm(e.firestore,null,n)}}function lp(e,t,...r){if(e=(0,h.Ku)(e),1==arguments.length&&(t=U.newId()),J("doc","path",t),e instanceof lc){let n=j.fromString(t,...r);return Y(n),new lf(e,null,new H(n))}{if(!(e instanceof lf||e instanceof lm))throw new C(D.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");let n=e._path.child(j.fromString(t,...r));return Y(n),new lf(e.firestore,e instanceof lm?e.converter:null,new H(n))}}let ly="AsyncQueue";class lw{constructor(e=Promise.resolve()){this.Xu=[],this.ec=!1,this.tc=[],this.nc=null,this.rc=!1,this.sc=!1,this.oc=[],this.M_=new a_(this,"async_queue_retry"),this._c=()=>{let e=ab();e&&T(ly,"Visibility state changed to "+e.visibilityState),this.M_.w_()},this.ac=e;let t=ab();t&&"function"==typeof t.addEventListener&&t.addEventListener("visibilitychange",this._c)}get isShuttingDown(){return this.ec}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.uc(),this.cc(e)}enterRestrictedMode(e){if(!this.ec){this.ec=!0,this.sc=e||!1;let t=ab();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this._c)}}enqueue(e){if(this.uc(),this.ec)return new Promise(()=>{});let t=new A;return this.cc(()=>this.ec&&this.sc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise)).then(()=>t.promise)}enqueueRetryable(e){this.enqueueAndForget(()=>(this.Xu.push(e),this.lc()))}async lc(){if(0!==this.Xu.length){try{await this.Xu[0](),this.Xu.shift(),this.M_.reset()}catch(e){if(!eS(e))throw e;T(ly,"Operation failed with retryable error: "+e)}this.Xu.length>0&&this.M_.p_(()=>this.lc())}}cc(e){let t=this.ac.then(()=>(this.rc=!0,e().catch(e=>{throw this.nc=e,this.rc=!1,b("INTERNAL UNHANDLED ERROR: ",lv(e)),e}).then(e=>(this.rc=!1,e))));return this.ac=t,t}enqueueAfterDelay(e,t,r){this.uc(),this.oc.indexOf(e)>-1&&(t=0);let n=a6.createAndSchedule(this,e,t,r,e=>this.hc(e));return this.tc.push(n),n}uc(){this.nc&&S(47125,{Pc:lv(this.nc)})}verifyOperationInProgress(){}async Tc(){let e;do e=this.ac,await e;while(e!==this.ac)}Ic(e){for(let t of this.tc)if(t.timerId===e)return!0;return!1}Ec(e){return this.Tc().then(()=>{for(let t of(this.tc.sort((e,t)=>e.targetTimeMs-t.targetTimeMs),this.tc))if(t.skipDelay(),"all"!==e&&t.timerId===e)break;return this.Tc()})}dc(e){this.oc.push(e)}hc(e){let t=this.tc.indexOf(e);this.tc.splice(t,1)}}function lv(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}function lI(e){if("object"!=typeof e||null===e)return!1;for(let t of["next","error","complete"])if(t in e&&"function"==typeof e[t])return!0;return!1}class lT{constructor(){this._progressObserver={},this._taskCompletionResolver=new A,this._lastProgress={taskState:"Running",totalBytes:0,totalDocuments:0,bytesLoaded:0,documentsLoaded:0}}onProgress(e,t,r){this._progressObserver={next:e,error:t,complete:r}}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)}}class lb extends lc{constructor(e,t,r,n){super(e,t,r,n),this.type="firestore",this._queue=new lw,this._persistenceKey=n?.name||"[DEFAULT]"}async _terminate(){if(this._firestoreClient){let e=this._firestoreClient.terminate();this._queue=new lw(e),this._firestoreClient=void 0,await e}}}function lE(e,t){let r="object"==typeof e?e:(0,o.Sx)(),n=(0,o.j6)(r,"firestore").getImmediate({identifier:"string"==typeof e?e:t||t1});if(!n._initialized){let e=(0,h.yU)("firestore");e&&function(e,t,r,n={}){e=et(e,lc);let i=(0,h.zJ)(t),s=e._getSettings(),a={...s,emulatorOptions:e._getEmulatorOptions()},o=`${t}:${r}`;i&&((0,h.gE)(`https://${o}`),(0,h.P1)("Firestore",!0)),s.host!==lu&&s.host!==o&&E("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used.");let l={...s,host:o,ssl:i,emulatorOptions:n};if(!(0,h.bD)(l,a)&&(e._setSettings(l),n.mockUserToken)){let t,r;if("string"==typeof n.mockUserToken)t=n.mockUserToken,r=y.MOCK_USER;else{t=(0,h.Fy)(n.mockUserToken,e._app?.options.projectId);let i=n.mockUserToken.sub||n.mockUserToken.user_id;if(!i)throw new C(D.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");r=new y(i)}e._authCredentials=new V(new k(t,r))}}(n,...e)}return n}function l_(e){if(e._terminated)throw new C(D.FAILED_PRECONDITION,"The client has already been terminated.");return e._firestoreClient||lS(e),e._firestoreClient}function lS(e){var t,r;let n=e._freezeSettings(),i=(t=e._databaseId,r=e._app?.options.appId||"",new t0(t,r,e._persistenceKey,n.host,n.ssl,n.experimentalForceLongPolling,n.experimentalAutoDetectLongPolling,lo(n.experimentalLongPollingOptions),n.useFetchStreams,n.isUsingEmulator));e._componentsProvider||n.localCache?._offlineComponentProvider&&n.localCache?._onlineComponentProvider&&(e._componentsProvider={_offline:n.localCache._offlineComponentProvider,_online:n.localCache._onlineComponentProvider}),e._firestoreClient=new le(e._authCredentials,e._appCheckCredentials,e._queue,i,e._componentsProvider&&function(e){let t=e?._online.build();return{_offline:e?._offline.build(t),_online:t}}(e._componentsProvider))}class lx{constructor(e="count",t){this._internalFieldPath=t,this.type="AggregateField",this.aggregateType=e}}class lN{constructor(e,t,r){this._userDataWriter=t,this._data=r,this.type="AggregateQuerySnapshot",this.query=e}data(){return this._userDataWriter.convertObjectMap(this._data)}}class lD{constructor(e){this._byteString=e}static fromBase64String(e){try{return new lD(tz.fromBase64String(e))}catch(e){throw new C(D.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new lD(tz.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)}toJSON(){return{type:lD._jsonSchemaVersion,bytes:this.toBase64()}}static fromJSON(e){if(en(e,lD._jsonSchema))return lD.fromBase64String(e.bytes)}}lD._jsonSchemaVersion="firestore/bytes/1.0",lD._jsonSchema={type:er("string",lD._jsonSchemaVersion),bytes:er("string")};class lC{constructor(...e){for(let t=0;t90)throw new C(D.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||t>180)throw new C(D.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}_compareTo(e){return q(this._lat,e._lat)||q(this._long,e._long)}toJSON(){return{latitude:this._lat,longitude:this._long,type:lk._jsonSchemaVersion}}static fromJSON(e){if(en(e,lk._jsonSchema))return new lk(e.latitude,e.longitude)}}lk._jsonSchemaVersion="firestore/geoPoint/1.0",lk._jsonSchema={type:er("string",lk._jsonSchemaVersion),latitude:er("number"),longitude:er("number")};class lR{constructor(e){this._values=(e||[]).map(e=>e)}toArray(){return this._values.map(e=>e)}isEqual(e){return function(e,t){if(e.length!==t.length)return!1;for(let r=0;r"number"==typeof e))return new lR(e.vectorValues);throw new C(D.INVALID_ARGUMENT,"Expected 'vectorValues' field to be a number array")}}}lR._jsonSchemaVersion="firestore/vectorValue/1.0",lR._jsonSchema={type:er("string",lR._jsonSchemaVersion),vectorValues:er("object")};let lV=/^__.*__$/;class lM{constructor(e,t,r){this.data=e,this.fieldMask=t,this.fieldTransforms=r}toMutation(e,t){return null!==this.fieldMask?new nk(e,this.data,this.fieldMask,t,this.fieldTransforms):new nA(e,this.data,t,this.fieldTransforms)}}class lO{constructor(e,t,r){this.data=e,this.fieldMask=t,this.fieldTransforms=r}toMutation(e,t){return new nk(e,this.data,this.fieldMask,t,this.fieldTransforms)}}function lF(e){switch(e){case 0:case 2:case 1:return!0;case 3:case 4:return!1;default:throw S(40011,{Ac:e})}}class lP{constructor(e,t,r,n,i,s){this.settings=e,this.databaseId=t,this.serializer=r,this.ignoreUndefinedProperties=n,void 0===i&&this.Rc(),this.fieldTransforms=i||[],this.fieldMask=s||[]}get path(){return this.settings.path}get Ac(){return this.settings.Ac}Vc(e){return new lP({...this.settings,...e},this.databaseId,this.serializer,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}mc(e){let t=this.path?.child(e),r=this.Vc({path:t,fc:!1});return r.gc(e),r}yc(e){let t=this.path?.child(e),r=this.Vc({path:t,fc:!1});return r.Rc(),r}wc(e){return this.Vc({path:void 0,fc:!0})}Sc(e){return l4(e,this.settings.methodName,this.settings.bc||!1,this.path,this.settings.Dc)}contains(e){return void 0!==this.fieldMask.find(t=>e.isPrefixOf(t))||void 0!==this.fieldTransforms.find(t=>e.isPrefixOf(t.field))}Rc(){if(this.path)for(let e=0;ea.covers(e.field))}else a=null,o=l.fieldTransforms;return new lM(new rw(u),a,o)}class lB extends lA{_toFieldTransform(e){if(2!==e.Ac)throw 1===e.Ac?e.Sc(`${this._methodName}() can only appear at the top level of your update data`):e.Sc(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof lB}}function lz(e,t,r){return new lP({Ac:3,Dc:t.settings.Dc,methodName:e._methodName,fc:r},t.databaseId,t.serializer,t.ignoreUndefinedProperties)}class lK extends lA{_toFieldTransform(e){return new nb(e.path,new nm)}isEqual(e){return e instanceof lK}}class l$ extends lA{constructor(e,t){super(e),this.vc=t}_toFieldTransform(e){let t=lz(this,e,!0),r=new ng(this.vc.map(e=>lJ(e,t)));return new nb(e.path,r)}isEqual(e){return e instanceof l$&&(0,h.bD)(this.vc,e.vc)}}class lG extends lA{constructor(e,t){super(e),this.vc=t}_toFieldTransform(e){let t=lz(this,e,!0),r=new ny(this.vc.map(e=>lJ(e,t)));return new nb(e.path,r)}isEqual(e){return e instanceof lG&&(0,h.bD)(this.vc,e.vc)}}class lj extends lA{constructor(e,t){super(e),this.Fc=t}_toFieldTransform(e){let t=new nv(e.serializer,nc(e.serializer,this.Fc));return new nb(e.path,t)}isEqual(e){return e instanceof lj&&this.Fc===e.Fc}}function lQ(e,t,r,n){let i=e.Cc(1,t,r);lZ("Data must be an object, but it was:",i,n);let s=[],a=rw.empty();return tR(n,(e,n)=>{let o=l2(t,e,r);n=(0,h.Ku)(n);let l=i.yc(o);if(n instanceof lB)s.push(o);else{let e=lJ(n,l);null!=e&&(s.push(o),a.set(o,e))}}),new lO(a,new tq(s),i.fieldTransforms)}function lW(e,t,r,n,i,s){let a=e.Cc(1,t,r),o=[l0(t,n,r)],l=[i];if(s.length%2!=0)throw new C(D.INVALID_ARGUMENT,`Function ${t}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let e=0;e=0;--e)if(!l5(u,o[e])){let t=o[e],r=l[e];r=(0,h.Ku)(r);let n=a.yc(t);if(r instanceof lB)u.push(t);else{let e=lJ(r,n);null!=e&&(u.push(t),c.set(t,e))}}return new lO(c,new tq(u),a.fieldTransforms)}function lH(e,t,r,n=!1){return lJ(r,e.Cc(n?4:3,t))}function lJ(e,t){if(lX(e=(0,h.Ku)(e)))return lZ("Unsupported field value:",t,e),lY(e,t);if(e instanceof lA)return function(e,t){if(!lF(t.Ac))throw t.Sc(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t.Sc(`${e._methodName}() is not currently supported inside arrays`);let r=e._toFieldTransform(t);r&&t.fieldTransforms.push(r)}(e,t),null;if(void 0===e&&t.ignoreUndefinedProperties)return null;if(t.path&&t.fieldMask.push(t.path),e instanceof Array){if(t.settings.fc&&4!==t.Ac)throw t.Sc("Nested arrays are not supported");let r=[],n=0;for(let i of e){let e=lJ(i,t.wc(n));null==e&&(e={nullValue:"NULL_VALUE"}),r.push(e),n++}return{arrayValue:{values:r}}}return function(e,t){if(null===(e=(0,h.Ku)(e)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return nc(t.serializer,e);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){let r=ei.fromDate(e);return{timestampValue:ie(t.serializer,r)}}if(e instanceof ei){let r=new ei(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:ie(t.serializer,r)}}if(e instanceof lk)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof lD)return{bytesValue:it(t.serializer,e._byteString)};if(e instanceof lf){let r=t.databaseId,n=e.firestore._databaseId;if(!n.isEqual(r))throw t.Sc(`Document reference is for database ${n.projectId}/${n.database} but should be for database ${r.projectId}/${r.database}`);return{referenceValue:ii(e.firestore._databaseId||t.databaseId,e._key.path)}}if(e instanceof lR)return{mapValue:{fields:{[t4]:{stringValue:t6},[t8]:{arrayValue:{values:e.toArray().map(e=>{if("number"!=typeof e)throw t.Sc("VectorValues must only contain numeric values.");return nu(t.serializer,e)})}}}}};throw t.Sc(`Unsupported field value: ${ee(e)}`)}(e,t)}function lY(e,t){let r={};return tV(e)?t.path&&t.path.length>0&&t.fieldMask.push(t.path):tR(e,(e,n)=>{let i=lJ(n,t.mc(e));null!=i&&(r[e]=i)}),{mapValue:{fields:r}}}function lX(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof ei||e instanceof lk||e instanceof lD||e instanceof lf||e instanceof lA||e instanceof lR)}function lZ(e,t,r){if(!lX(r)||!Z(r)){let n=ee(r);throw"an object"===n?t.Sc(e+" a custom object"):t.Sc(e+" "+n)}}function l0(e,t,r){if((t=(0,h.Ku)(t))instanceof lC)return t._internalPath;if("string"==typeof t)return l2(e,t);throw l4("Field path arguments must be of type string or ",e,!1,void 0,r)}let l1=RegExp("[~\\*/\\[\\]]");function l2(e,t,r){if(t.search(l1)>=0)throw l4(`Invalid field path (${t}). Paths must not contain '~', '*', '/', '[', or ']'`,e,!1,void 0,r);try{return new lC(...t.split("."))._internalPath}catch(n){throw l4(`Invalid field path (${t}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,e,!1,void 0,r)}}function l4(e,t,r,n,i){let s=n&&!n.isEmpty(),a=void 0!==i,o=`Function ${t}() called with invalid data`;r&&(o+=" (via `toFirestore()`)"),o+=". ";let l="";return(s||a)&&(l+=" (found",s&&(l+=` in field ${n}`),a&&(l+=` in document ${i}`),l+=")"),new C(D.INVALID_ARGUMENT,o+e+l)}function l5(e,t){return e.some(e=>e.isEqual(t))}class l3{constructor(e,t,r,n,i){this._firestore=e,this._userDataWriter=t,this._key=r,this._document=n,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new lf(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){let e=new l6(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){let t=this._document.data.field(l8("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class l6 extends l3{data(){return super.data()}}function l8(e,t){return"string"==typeof t?l2(e,t):t instanceof lC?t._internalPath:t._delegate._internalPath}function l9(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new C(D.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class l7{}class ue extends l7{}function ut(e,t,...r){let n=[];for(let i of(t instanceof l7&&n.push(t),function(e){let t=e.filter(e=>e instanceof ui).length,r=e.filter(e=>e instanceof ur).length;if(t>1||t>0&&r>0)throw new C(D.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")}(n=n.concat(r)),n))e=i._apply(e);return e}class ur extends ue{constructor(e,t,r){super(),this._field=e,this._op=t,this._value=r,this.type="where"}static _create(e,t,r){return new ur(e,t,r)}_apply(e){let t=this._parse(e);return ug(e._query,t),new ld(e.firestore,e.converter,r1(e._query,t))}_parse(e){let t=lU(e.firestore);return function(e,t,r,n,i,s,a){let o;if(i.isKeyField()){if("array-contains"===s||"array-contains-any"===s)throw new C(D.INVALID_ARGUMENT,`Invalid Query. You can't perform '${s}' queries on documentId().`);if("in"===s||"not-in"===s){um(a,s);let t=[];for(let r of a)t.push(uf(n,e,r));o={arrayValue:{values:t}}}else o=uf(n,e,a)}else"in"!==s&&"not-in"!==s&&"array-contains-any"!==s||um(a,s),o=lH(r,t,a,"in"===s||"not-in"===s);return rS.create(i,s,o)}(e._query,"where",t,e.firestore._databaseId,this._field,this._op,this._value)}}function un(e,t,r){let n=l8("where",e);return ur._create(n,t,r)}class ui extends l7{constructor(e,t){super(),this.type=e,this._queryConstraints=t}static _create(e,t){return new ui(e,t)}_parse(e){let t=this._queryConstraints.map(t=>t._parse(e)).filter(e=>e.getFilters().length>0);return 1===t.length?t[0]:rx.create(t,this._getOperator())}_apply(e){let t=this._parse(e);return 0===t.getFilters().length?e:(function(e,t){let r=e;for(let e of t.getFlattenedFilters())ug(r,e),r=r1(r,e)}(e._query,t),new ld(e.firestore,e.converter,r1(e._query,t)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return"and"===this.type?"and":"or"}}class us extends ue{constructor(e,t){super(),this._field=e,this._direction=t,this.type="orderBy"}static _create(e,t){return new us(e,t)}_apply(e){let t=function(e,t,r){if(null!==e.startAt)throw new C(D.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new C(D.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");return new rE(t,r)}(e._query,this._field,this._direction);return new ld(e.firestore,e.converter,function(e,t){let r=e.explicitOrderBy.concat([t]);return new rW(e.path,e.collectionGroup,r,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)}(e._query,t))}}function ua(e,t="asc"){let r=l8("orderBy",e);return us._create(r,t)}class uo extends ue{constructor(e,t,r){super(),this.type=e,this._limit=t,this._limitType=r}static _create(e,t,r){return new uo(e,t,r)}_apply(e){return new ld(e.firestore,e.converter,r2(e._query,this._limit,this._limitType))}}function ul(e){return function(e,t){if(t<=0)throw new C(D.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}("limit",e),uo._create("limit",e,"F")}class uu extends ue{constructor(e,t,r){super(),this.type=e,this._docOrFields=t,this._inclusive=r}static _create(e,t,r){return new uu(e,t,r)}_apply(e){var t;let r=ud(e,this.type,this._docOrFields,this._inclusive);return new ld(e.firestore,e.converter,new rW((t=e._query).path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,r,t.endAt))}}function uh(...e){return uu._create("startAfter",e,!1)}class uc extends ue{constructor(e,t,r){super(),this.type=e,this._docOrFields=t,this._inclusive=r}static _create(e,t,r){return new uc(e,t,r)}_apply(e){var t;let r=ud(e,this.type,this._docOrFields,this._inclusive);return new ld(e.firestore,e.converter,new rW((t=e._query).path,t.collectionGroup,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,r))}}function ud(e,t,r,n){if(r[0]=(0,h.Ku)(r[0]),r[0]instanceof l3)return function(e,t,r,n,i){if(!n)throw new C(D.NOT_FOUND,`Can't use a DocumentSnapshot that doesn't exist for ${r}().`);let s=[];for(let r of rX(e))if(r.field.isKeyField())s.push(ra(t,n.key));else{let e=n.data.field(r.field);if(tY(e))throw new C(D.INVALID_ARGUMENT,'Invalid query. You are trying to start or end a query using a document for which the field "'+r.field+'" is an uncommitted server timestamp. (Since the value of this field is unknown, you cannot start/end a query with it.)');if(null===e){let e=r.field.canonicalString();throw new C(D.INVALID_ARGUMENT,`Invalid query. You are trying to start or end a query using a document for which the field '${e}' (used as the orderBy) does not exist.`)}s.push(e)}return new rI(s,i)}(e._query,e.firestore._databaseId,t,r[0]._document,n);{let i=lU(e.firestore);return function(e,t,r,n,i,s){let a=e.explicitOrderBy;if(i.length>a.length)throw new C(D.INVALID_ARGUMENT,`Too many arguments provided to ${n}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);let o=[];for(let s=0;s=0)return e.op;return null}(e.filters,function(e){switch(e){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[]}}(t.op));if(null!==r)throw r===t.op?new C(D.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new C(D.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${r.toString()}' filters.`)}class up{convertValue(e,t="none"){switch(t7(e)){case 0:return null;case 1:return e.booleanValue;case 2:return tG(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(tj(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 11:return this.convertObject(e.mapValue,t);case 10:return this.convertVectorValue(e.mapValue);default:throw S(62114,{value:e})}}convertObject(e,t){return this.convertObjectMap(e.fields,t)}convertObjectMap(e,t="none"){let r={};return tR(e,(e,n)=>{r[e]=this.convertValue(n,t)}),r}convertVectorValue(e){return new lR(e.fields?.[t8].arrayValue?.values?.map(e=>tG(e.doubleValue)))}convertGeoPoint(e){return new lk(tG(e.latitude),tG(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":let r=tX(e);return null==r?null:this.convertValue(r,t);case"estimate":return this.convertTimestamp(tZ(e));default:return null}}convertTimestamp(e){let t=t$(e);return new ei(t.seconds,t.nanos)}convertDocumentKey(e,t){let r=j.fromString(e);N(iE(r),9688,{name:e});let n=new t2(r.get(1),r.get(3)),i=new H(r.popFirst(5));return n.isEqual(t)||b(`Document ${i} contains a document reference within a different database (${n.projectId}/${n.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}}function uy(e,t,r){return e?r&&(r.merge||r.mergeFields)?e.toFirestore(t,r):e.toFirestore(t):t}class uw extends up{constructor(e){super(),this.firestore=e}convertBytes(e){return new lD(e)}convertReference(e){let t=this.convertDocumentKey(e,this.firestore._databaseId);return new lf(this.firestore,null,t)}}class uv{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class uI extends l3{constructor(e,t,r,n,i,s){super(e,t,r,n,s),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){let t=new uT(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){let r=this._document.data.field(l8("DocumentSnapshot.get",e));if(null!==r)return this._userDataWriter.convertValue(r,t.serverTimestamps)}}toJSON(){if(this.metadata.hasPendingWrites)throw new C(D.FAILED_PRECONDITION,"DocumentSnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().");let e=this._document,t={};return t.type=uI._jsonSchemaVersion,t.bundle="",t.bundleSource="DocumentSnapshot",t.bundleName=this._key.toString(),e&&e.isValidDocument()&&e.isFoundDocument()&&(this._userDataWriter.convertObjectMap(e.data.value.mapValue.fields,"previous"),this._firestore,this.ref.path,t.bundle="NOT SUPPORTED"),t}}uI._jsonSchemaVersion="firestore/documentSnapshot/1.0",uI._jsonSchema={type:er("string",uI._jsonSchemaVersion),bundleSource:er("string","DocumentSnapshot"),bundleName:er("string"),bundle:er("string")};class uT extends uI{data(e={}){return super.data(e)}}class ub{constructor(e,t,r,n){this._firestore=e,this._userDataWriter=t,this._snapshot=n,this.metadata=new uv(n.hasPendingWrites,n.fromCache),this.query=r}get docs(){let e=[];return this.forEach(t=>e.push(t)),e}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(e,t){this._snapshot.docs.forEach(r=>{e.call(t,new uT(this._firestore,this._userDataWriter,r.key,r,new uv(this._snapshot.mutatedKeys.has(r.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){let t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new C(D.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(e,t){if(e._snapshot.oldDocs.isEmpty()){let t=0;return e._snapshot.docChanges.map(r=>{let n=new uT(e._firestore,e._userDataWriter,r.doc.key,r.doc,new uv(e._snapshot.mutatedKeys.has(r.doc.key),e._snapshot.fromCache),e.query.converter);return r.doc,{type:"added",doc:n,oldIndex:-1,newIndex:t++}})}{let r=e._snapshot.oldDocs;return e._snapshot.docChanges.filter(e=>t||3!==e.type).map(t=>{let n=new uT(e._firestore,e._userDataWriter,t.doc.key,t.doc,new uv(e._snapshot.mutatedKeys.has(t.doc.key),e._snapshot.fromCache),e.query.converter),i=-1,s=-1;return 0!==t.type&&(i=r.indexOf(t.doc.key),r=r.delete(t.doc.key)),1!==t.type&&(s=(r=r.add(t.doc)).indexOf(t.doc.key)),{type:function(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return S(61501,{type:e})}}(t.type),doc:n,oldIndex:i,newIndex:s}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}toJSON(){if(this.metadata.hasPendingWrites)throw new C(D.FAILED_PRECONDITION,"QuerySnapshot.toJSON() attempted to serialize a document with pending writes. Await waitForPendingWrites() before invoking toJSON().");let e={};e.type=ub._jsonSchemaVersion,e.bundleSource="QuerySnapshot",e.bundleName=U.newId(),this._firestore._databaseId.database,this._firestore._databaseId.projectId;let t=[],r=[],n=[];return this.docs.forEach(e=>{null!==e._document&&(t.push(e._document),r.push(this._userDataWriter.convertObjectMap(e._document.data.value.mapValue.fields,"previous")),n.push(e.ref.path))}),this._firestore,this.query._query,e.bundleName,e.bundle="NOT SUPPORTED",e}}function uE(e){e=et(e,lf);let t=et(e.firestore,lb);return(function(e,t,r={}){let n=new A;return e.asyncQueue.enqueueAndForget(async()=>(function(e,t,r,n,i){let s=new o3({next:o=>{s.Nu(),t.enqueueAndForget(()=>os(e,a));let l=o.docs.has(r);!l&&o.fromCache?i.reject(new C(D.UNAVAILABLE,"Failed to get document because the client is offline.")):l&&o.fromCache&&n&&"server"===n.source?i.reject(new C(D.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.)')):i.resolve(o)},error:e=>i.reject(e)}),a=new ou(rH(r.path),s,{includeMetadataChanges:!0,qa:!0});return oi(e,a)})(await la(e),e.asyncQueue,t,r,n)),n.promise})(l_(t),e._key).then(r=>uA(t,e,r))}ub._jsonSchemaVersion="firestore/querySnapshot/1.0",ub._jsonSchema={type:er("string",ub._jsonSchemaVersion),bundleSource:er("string","QuerySnapshot"),bundleName:er("string"),bundle:er("string")};class u_ extends up{constructor(e){super(),this.firestore=e}convertBytes(e){return new lD(e)}convertReference(e){let t=this.convertDocumentKey(e,this.firestore._databaseId);return new lf(this.firestore,null,t)}}function uS(e){e=et(e,ld);let t=et(e.firestore,lb),r=l_(t),n=new u_(t);return l9(e._query),(function(e,t,r={}){let n=new A;return e.asyncQueue.enqueueAndForget(async()=>(function(e,t,r,n,i){let s=new o3({next:r=>{s.Nu(),t.enqueueAndForget(()=>os(e,a)),r.fromCache&&"server"===n.source?i.reject(new C(D.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(r)},error:e=>i.reject(e)}),a=new ou(r,s,{includeMetadataChanges:!0,qa:!0});return oi(e,a)})(await la(e),e.asyncQueue,t,r,n)),n.promise})(r,e._query).then(r=>new ub(t,n,e,r))}function ux(e,t,r){e=et(e,lf);let n=et(e.firestore,lb),i=uy(e.converter,t,r);return uC(n,[lq(lU(n),"setDoc",e._key,i,null!==e.converter,r).toMutation(e._key,n_.none())])}function uN(e,t,r,...n){e=et(e,lf);let i=et(e.firestore,lb),s=lU(i);return uC(i,[("string"==typeof(t=(0,h.Ku)(t))||t instanceof lC?lW(s,"updateDoc",e._key,t,r,n):lQ(s,"updateDoc",e._key,t)).toMutation(e._key,n_.exists(!0))])}function uD(e){return uC(et(e.firestore,lb),[new nO(e._key,n_.none())])}function uC(e,t){var r=l_(e);let n=new A;return r.asyncQueue.enqueueAndForget(async()=>oN(await ls(r),t,n)),n.promise}function uA(e,t,r){let n=r.docs.get(t._key),i=new u_(e);return new uI(e,i,t._key,n,new uv(r.hasPendingWrites,r.fromCache),t.converter)}function uk(e){return function(e,t){let r=et(e.firestore,lb),n=l_(r),i=function(e,t){let r=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.push(t(e[n],n,e));return r}(t,(e,t)=>new nq(t,e.aggregateType,e._internalFieldPath));return(function(e,t,r){let n=new A;return e.asyncQueue.enqueueAndForget(async()=>{try{var i;let s=await (i=e,li(i).then(e=>e.datastore));n.resolve(async function(e,t,r){var n;let{request:i,gt:s,parent:a}=function(e,t,r,n){let{ft:i,parent:s}=iv(e,t),a={},o=[],l=0;return r.forEach(e=>{let t="aggregate_"+l++;a[t]=e.alias,"count"===e.aggregateType?o.push({alias:t,count:{}}):"avg"===e.aggregateType?o.push({alias:t,avg:{field:iT(e.fieldPath)}}):"sum"===e.aggregateType&&o.push({alias:t,sum:{field:iT(e.fieldPath)}})}),{request:{structuredAggregationQuery:{aggregations:o,structuredQuery:i.structuredQuery},parent:i.parent},gt:a,parent:s}}(e.serializer,((n=t).de||(n.de=r0(n,n.explicitOrderBy)),n.de),r);e.connection.$o||delete i.parent;let o=(await e.Ho("RunAggregationQuery",e.serializer.databaseId,a,i,1)).filter(e=>!!e.result);N(1===o.length,64727);let l=o[0].result?.aggregateFields;return Object.keys(l).reduce((e,t)=>(e[s[t]]=l[t],e),{})}(s,t,r))}catch(e){n.reject(e)}}),n.promise})(n,e._query,i).then(t=>new lN(e,new u_(r),t))}(e,{count:new lx("count")})}class uR{constructor(e){this.forceOwnership=e,this.kind="persistentSingleTab"}toJSON(){return{kind:this.kind}}_initialize(e){this._onlineComponentProvider=o4.provider,this._offlineComponentProvider={build:t=>new o1(t,e?.cacheSizeBytes,this.forceOwnership)}}}function uV(e,t){if((e=(0,h.Ku)(e)).firestore!==t)throw new C(D.INVALID_ARGUMENT,"Provided document reference is from a different Firestore instance.");return e}class uM{constructor(e,t){this._firestore=e,this._transaction=t,this._dataReader=lU(e)}get(e){let t=uV(e,this._firestore),r=new uw(this._firestore);return this._transaction.lookup([t._key]).then(e=>{if(!e||1!==e.length)return S(24041);let n=e[0];if(n.isFoundDocument())return new l3(this._firestore,r,n.key,n,t.converter);if(n.isNoDocument())return new l3(this._firestore,r,t._key,null,t.converter);throw S(18433,{doc:n})})}set(e,t,r){let n=uV(e,this._firestore),i=uy(n.converter,t,r),s=lq(this._dataReader,"Transaction.set",n._key,i,null!==n.converter,r);return this._transaction.set(n._key,s),this}update(e,t,r,...n){let i,s=uV(e,this._firestore);return i="string"==typeof(t=(0,h.Ku)(t))||t instanceof lC?lW(this._dataReader,"Transaction.update",s._key,t,r,n):lQ(this._dataReader,"Transaction.update",s._key,t),this._transaction.update(s._key,i),this}delete(e){let t=uV(e,this._firestore);return this._transaction.delete(t._key),this}}function uO(){return new lK("serverTimestamp")}new WeakMap,!function(e,t=!0){w=o.MF,(0,o.om)(new l.uA("firestore",(e,{instanceIdentifier:r,options:n})=>{let i=e.getProvider("app").getImmediate(),s=new lb(new M(e.getProvider("auth-internal")),new L(i,e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new C(D.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new t2(e.options.projectId,t)}(i,r),i);return n={useFetchStreams:t,...n},s._setSettings(n),s},"PUBLIC").setMultipleInstances(!0)),(0,o.KO)(g,p,void 0),(0,o.KO)(g,p,"esm2020")}()}}]);