@mdbase-dev/sdk 0.1.0-beta.175 → 0.1.0-beta.178
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -127,4 +127,4 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
|
|
|
127
127
|
`,t)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,t.value){let i="end"in t.value?t.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let o=e.items[e.items.length-2]?.value?.end;if(Array.isArray(o)){Nh(o,t.start),o.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let i=!this.onKeyLine&&this.indent===e.indent,o=i&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",s=[];if(o&&t.sep&&!t.value){let r=[];for(let a=0;a<t.sep.length;++a){let c=t.sep[a];switch(c.type){case"newline":r.push(a);break;case"space":break;case"comment":c.indent>e.indent&&(r.length=0);break;default:r.length=0}}r.length>=2&&(s=t.sep.splice(r[1]))}switch(this.type){case"anchor":case"tag":o||t.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):o||t.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Do(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(_x(t.key)&&!Do(t.sep,"newline")){let r=rl(t.start),a=t.key,c=t.sep;c.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:a,sep:c}]})}else s.length>0?t.sep=t.sep.concat(s,this.sourceToken):t.sep.push(this.sourceToken);else if(Do(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let r=rl(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||o?e.items.push({start:s,key:null,sep:[this.sourceToken]}):Do(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);o||t.value?(e.items.push({start:s,key:r,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(r):(Object.assign(t,{key:r,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type==="block-seq"){if(!t.explicitKey&&t.sep&&!Do(t.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else i&&e.items.push({start:s});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let i="end"in t.value?t.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let o=e.items[e.items.length-2]?.value?.end;if(Array.isArray(o)){Nh(o,t.start),o.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||Do(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let i=this.startBlockValue(e);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let o=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:o,sep:[]}):t.sep?this.stack.push(o):Object.assign(t,{key:o,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let i=this.startBlockValue(e);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===e.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let o=Uh(i),s=rl(o);vx(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:s,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(`
|
|
128
128
|
`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
|
|
129
129
|
`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Uh(e),i=rl(t);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Uh(e),i=rl(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}});function Jq(n){let e=n.prettyErrors!==!1;return{lineCounter:n.lineCounter||e&&new Yp||null,prettyErrors:e}}function Av(n,e={}){let{lineCounter:t,prettyErrors:i}=Jq(e),o=new Jp(t?.addNewLine),s=new Hp(e),r=null;for(let a of s.compose(o.parse(n),!0,n.length))if(!r)r=a;else if(r.options.logLevel!=="silent"){r.errors.push(new Ki(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&t&&(r.errors.forEach(tv(n,t)),r.warnings.forEach(tv(n,t))),r}var Ax=C(()=>{fv();$p();Fp();Tw();je();vv();_v()});var kv=C(()=>{fv();$p();ev();Fp();kp();je();Mo();Rt();To();Lo();Lh();wv();vv();_v();Ax();Ap()});var kx=C(()=>{kv();kv()});function Ai(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=Ai.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){for(let l in n)if(!(l==="app-runtime"||l==="mobile")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n["app-runtime"]!==void 0){let l=n["app-runtime"];if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(typeof h=="string"){if(V(h)>255){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(V(h)<1){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!zn(h)){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let p={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.mobile!==void 0){let l=n.mobile;if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(typeof h=="string"){if(V(h)>255){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(V(h)<1){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!zn(h)){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let p={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Ai.errors=r,a===0}function ol(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=ol.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.contract_version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contract_version"},message:"must have required property 'contract_version'"};r===null?r=[l]:r.push(l),a++}if(n.required===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="contract_version"||l==="required"||l==="optional")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.contract_version!==void 0&&n.contract_version!==2){let l={instancePath:e+"/contract_version",schemaPath:"#/properties/contract_version/const",keyword:"const",params:{allowedValue:2},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.required!==void 0){let l=n.required;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/required",schemaPath:"#/properties/required/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(!(h==="collection.read"||h==="records.create"||h==="records.edit"||h==="records.delete"||h==="views.manage"||h==="definitions.manage"||h==="background.schedule"||h==="offline.replica")){let m={instancePath:e+"/required/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:xx.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/required",schemaPath:"#/properties/required/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/required",schemaPath:"#/properties/required/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.optional!==void 0){let l=n.optional;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(!(h==="collection.read"||h==="records.create"||h==="records.edit"||h==="records.delete"||h==="views.manage"||h==="definitions.manage"||h==="background.schedule"||h==="offline.replica")){let m={instancePath:e+"/optional/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:xx.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/optional",schemaPath:"#/properties/optional/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ol.errors=r,a===0}function sl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=sl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.required===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[d]:r.push(d),a++}if(n.scope===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"scope"},message:"must have required property 'scope'"};r===null?r=[d]:r.push(d),a++}for(let d in n)if(!(d==="required"||d==="optional"||d==="scope")){let u={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),a++}if(n.required!==void 0){let d=n.required;if(Array.isArray(d)){if(d.length>6){let m={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/maxItems",keyword:"maxItems",params:{limit:6},message:"must NOT have more than 6 items"};r===null?r=[m]:r.push(m),a++}if(d.length<1){let m={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[m]:r.push(m),a++}let u=d.length;for(let m=0;m<u;m++){let b=d[m];if(!(b==="list"||b==="read"||b==="add"||b==="replace"||b==="move"||b==="delete")){let w={instancePath:e+"/required/"+m,schemaPath:"#/$defs/fileActions/items/enum",keyword:"enum",params:{allowedValues:Ix.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),a++}}let f=d.length,h;if(f>1){e:for(;f--;)for(h=f;h--;)if(ni(d[f],d[h])){let m={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/uniqueItems",keyword:"uniqueItems",params:{i:f,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+f+" are identical)"};r===null?r=[m]:r.push(m),a++;break e}}}else{let u={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),a++}}if(n.optional!==void 0){let d=n.optional;if(Array.isArray(d)){if(d.length>6){let m={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/maxItems",keyword:"maxItems",params:{limit:6},message:"must NOT have more than 6 items"};r===null?r=[m]:r.push(m),a++}if(d.length<1){let m={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[m]:r.push(m),a++}let u=d.length;for(let m=0;m<u;m++){let b=d[m];if(!(b==="list"||b==="read"||b==="add"||b==="replace"||b==="move"||b==="delete")){let w={instancePath:e+"/optional/"+m,schemaPath:"#/$defs/fileActions/items/enum",keyword:"enum",params:{allowedValues:Ix.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),a++}}let f=d.length,h;if(f>1){e:for(;f--;)for(h=f;h--;)if(ni(d[f],d[h])){let m={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/uniqueItems",keyword:"uniqueItems",params:{i:f,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+f+" are identical)"};r===null?r=[m]:r.push(m),a++;break e}}}else{let u={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),a++}}if(n.scope!==void 0){let d=n.scope,u=a,f=!1,h=null,m=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}if(d.folders===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"folders"},message:"must have required property 'folders'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(!(w==="kind"||w==="folders")){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="selected_folders"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/0/properties/kind/const",keyword:"const",params:{allowedValue:"selected_folders"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}if(d.folders!==void 0){let w=d.folders;if(Array.isArray(w)){if(w.length>100){let _={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[_]:r.push(_),a++}if(w.length<1){let _={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[_]:r.push(_),a++}let g=w.length;for(let _=0;_<g;_++){let k=w[_];if(typeof k=="string"){if(V(k)>1024){let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[S]:r.push(S),a++}if(V(k)<1){let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[S]:r.push(S),a++}if(!jx.test(k)){let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/pattern",keyword:"pattern",params:{pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"},message:'must match pattern "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"'};r===null?r=[S]:r.push(S),a++}}else{let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[S]:r.push(S),a++}}let y=w.length,v;if(y>1){let _={};for(;y--;){let k=w[y];if(typeof k=="string"){if(typeof _[k]=="number"){v=_[k];let S={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/uniqueItems",keyword:"uniqueItems",params:{i:y,j:v},message:"must NOT have duplicate items (items ## "+v+" and "+y+" are identical)"};r===null?r=[S]:r.push(S),a++;break}_[k]=y}}}}else{let g={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[g]:r.push(g),a++}}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var p=m===a;if(p){f=!0,h=0;var l=!0}let b=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(w!=="kind"){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="collection"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/1/properties/kind/const",keyword:"const",params:{allowedValue:"collection"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var p=b===a;if(p&&f?(f=!1,h=[h,1]):p&&(f=!0,h=1,l!==!0&&(l=!0)),f)a=u,r!==null&&(u?r.length=u:r=null);else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf",keyword:"oneOf",params:{passingSchemas:h},message:"must match exactly one schema in oneOf"};r===null?r=[w]:r.push(w),a++}}}else{let d={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),a++}return sl.errors=r,a===0}function al(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=al.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[p]:r.push(p),a++}if(n.path===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[p]:r.push(p),a++}if(n.predicate===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"predicate"},message:"must have required property 'predicate'"};r===null?r=[p]:r.push(p),a++}if(n.value===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[p]:r.push(p),a++}for(let p in n)if(!(p==="id"||p==="path"||p==="predicate"||p==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.id!==void 0){let p=n.id;if(typeof p=="string"){if(V(p)>100){let d={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!Bh.test(p)){let d={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.path!==void 0){let p=n.path;if(typeof p=="string"){if(V(p)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.predicate!==void 0&&n.predicate!=="contains"){let p={instancePath:e+"/predicate",schemaPath:"#/properties/predicate/const",keyword:"const",params:{allowedValue:"contains"},message:"must be equal to constant"};r===null?r=[p]:r.push(p),a++}if(n.value!==void 0){let p=n.value,d=a,u=!1,f=a;if(typeof p!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof p=="number"&&isFinite(p))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof p!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(p!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let p={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}return al.errors=r,a===0}function Si(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=Si.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.digest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="version"||l==="digest")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}if(!kl.test(l)){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!Fh.test(l)){let p={instancePath:e+"/version",schemaPath:"#/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.digest!==void 0){let l=n.digest;if(typeof l=="string"){if(!ll.test(l)){let p={instancePath:e+"/digest",schemaPath:"#/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/digest",schemaPath:"#/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Si.errors=r,a===0}function cl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=cl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.access===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"access"},message:"must have required property 'access'"};r===null?r=[p]:r.push(p),a++}if(n.contracts===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contracts"},message:"must have required property 'contracts'"};r===null?r=[p]:r.push(p),a++}for(let p in n)if(!(p==="capabilities"||p==="access"||p==="collection_kind"||p==="people"||p==="files"||p==="configuration"||p==="contracts")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.capabilities!==void 0&&(ol(n.capabilities,{instancePath:e+"/capabilities",parentData:n,parentDataProperty:"capabilities",rootData:o,dynamicAnchors:s})||(r=r===null?ol.errors:r.concat(ol.errors),a=r.length)),n.access!==void 0&&n.access!=="full_collection"){let p={instancePath:e+"/access",schemaPath:"#/properties/access/const",keyword:"const",params:{allowedValue:"full_collection"},message:"must be equal to constant"};r===null?r=[p]:r.push(p),a++}if(n.collection_kind!==void 0&&n.collection_kind!=="hosted"){let p={instancePath:e+"/collection_kind",schemaPath:"#/properties/collection_kind/const",keyword:"const",params:{allowedValue:"hosted"},message:"must be equal to constant"};r===null?r=[p]:r.push(p),a++}if(n.people!==void 0){let p=n.people,d=a,u=!1,f=a;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.required===void 0){let m={instancePath:e+"/people",schemaPath:"#/properties/people/anyOf/0/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[m]:r.push(m),a++}var l=f===a;u=u||l;let h=a;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.optional===void 0){let m={instancePath:e+"/people",schemaPath:"#/properties/people/anyOf/1/required",keyword:"required",params:{missingProperty:"optional"},message:"must have required property 'optional'"};r===null?r=[m]:r.push(m),a++}var l=h===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let m={instancePath:e+"/people",schemaPath:"#/properties/people/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[m]:r.push(m),a++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.version===void 0){let m={instancePath:e+"/people",schemaPath:"#/properties/people/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[m]:r.push(m),a++}for(let m in p)if(!(m==="version"||m==="required"||m==="optional")){let b={instancePath:e+"/people",schemaPath:"#/properties/people/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:m},message:"must NOT have additional properties"};r===null?r=[b]:r.push(b),a++}if(p.version!==void 0&&p.version!==1){let m={instancePath:e+"/people/version",schemaPath:"#/properties/people/properties/version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[m]:r.push(m),a++}if(p.required!==void 0){let m=p.required;if(Array.isArray(m)){if(m.length<1){let y={instancePath:e+"/people/required",schemaPath:"#/$defs/peoplePermissions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[y]:r.push(y),a++}let b=m.length;for(let y=0;y<b;y++){let v=m[y];if(!(v==="identity"||v==="members")){let _={instancePath:e+"/people/required/"+y,schemaPath:"#/$defs/peoplePermissions/items/enum",keyword:"enum",params:{allowedValues:Px.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[_]:r.push(_),a++}}let w=m.length,g;if(w>1){e:for(;w--;)for(g=w;g--;)if(ni(m[w],m[g])){let y={instancePath:e+"/people/required",schemaPath:"#/$defs/peoplePermissions/uniqueItems",keyword:"uniqueItems",params:{i:w,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+w+" are identical)"};r===null?r=[y]:r.push(y),a++;break e}}}else{let b={instancePath:e+"/people/required",schemaPath:"#/$defs/peoplePermissions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),a++}}if(p.optional!==void 0){let m=p.optional;if(Array.isArray(m)){if(m.length<1){let y={instancePath:e+"/people/optional",schemaPath:"#/$defs/peoplePermissions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[y]:r.push(y),a++}let b=m.length;for(let y=0;y<b;y++){let v=m[y];if(!(v==="identity"||v==="members")){let _={instancePath:e+"/people/optional/"+y,schemaPath:"#/$defs/peoplePermissions/items/enum",keyword:"enum",params:{allowedValues:Px.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[_]:r.push(_),a++}}let w=m.length,g;if(w>1){e:for(;w--;)for(g=w;g--;)if(ni(m[w],m[g])){let y={instancePath:e+"/people/optional",schemaPath:"#/$defs/peoplePermissions/uniqueItems",keyword:"uniqueItems",params:{i:w,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+w+" are identical)"};r===null?r=[y]:r.push(y),a++;break e}}}else{let b={instancePath:e+"/people/optional",schemaPath:"#/$defs/peoplePermissions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),a++}}}else{let m={instancePath:e+"/people",schemaPath:"#/properties/people/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[m]:r.push(m),a++}}if(n.files!==void 0&&(sl(n.files,{instancePath:e+"/files",parentData:n,parentDataProperty:"files",rootData:o,dynamicAnchors:s})||(r=r===null?sl.errors:r.concat(sl.errors),a=r.length)),n.configuration!==void 0){let p=n.configuration;if(Array.isArray(p)){if(p.length>50){let u={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[u]:r.push(u),a++}let d=p.length;for(let u=0;u<d;u++)al(p[u],{instancePath:e+"/configuration/"+u,parentData:p,parentDataProperty:u,rootData:o,dynamicAnchors:s})||(r=r===null?al.errors:r.concat(al.errors),a=r.length)}else{let d={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[d]:r.push(d),a++}}if(n.contracts!==void 0){let p=n.contracts;if(Array.isArray(p)){if(p.length>20){let h={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[h]:r.push(h),a++}let d=p.length;for(let h=0;h<d;h++)Si(p[h],{instancePath:e+"/contracts/"+h,parentData:p,parentDataProperty:h,rootData:o,dynamicAnchors:s})||(r=r===null?Si.errors:r.concat(Si.errors),a=r.length);let u=p.length,f;if(u>1){e:for(;u--;)for(f=u;f--;)if(ni(p[u],p[f])){let h={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/uniqueItems",keyword:"uniqueItems",params:{i:u,j:f},message:"must NOT have duplicate items (items ## "+f+" and "+u+" are identical)"};r===null?r=[h]:r.push(h),a++;break e}}}else{let d={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[d]:r.push(d),a++}}}else{let p={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}return cl.errors=r,a===0}function pl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=pl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.requirement===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"requirement"},message:"must have required property 'requirement'"};r===null?r=[p]:r.push(p),a++}if(n.operation===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"operation"},message:"must have required property 'operation'"};r===null?r=[p]:r.push(p),a++}if(n.path===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[p]:r.push(p),a++}if(n.value===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[p]:r.push(p),a++}for(let p in n)if(!(p==="requirement"||p==="operation"||p==="path"||p==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.requirement!==void 0){let p=n.requirement;if(typeof p=="string"){if(V(p)>100){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!Bh.test(p)){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.operation!==void 0&&n.operation!=="set_add"){let p={instancePath:e+"/operation",schemaPath:"#/properties/operation/const",keyword:"const",params:{allowedValue:"set_add"},message:"must be equal to constant"};r===null?r=[p]:r.push(p),a++}if(n.path!==void 0){let p=n.path;if(typeof p=="string"){if(V(p)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.value!==void 0){let p=n.value,d=a,u=!1,f=a;if(typeof p!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof p=="number"&&isFinite(p))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof p!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(p!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let p={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}return pl.errors=r,a===0}function dl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=dl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.kind===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[p]:r.push(p),a++}if(n.mode===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[p]:r.push(p),a++}if(n.source===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[p]:r.push(p),a++}if(n.target===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};r===null?r=[p]:r.push(p),a++}if(n.digest===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[p]:r.push(p),a++}for(let p in n)if(!(p==="kind"||p==="mode"||p==="upgrade_from"||p==="source"||p==="target"||p==="digest")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.kind!==void 0){let p=n.kind;if(!(p==="contract"||p==="type"||p==="schema")){let d={instancePath:e+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:Cx.properties.kind.enum},message:"must be equal to one of the allowed values"};r===null?r=[d]:r.push(d),a++}}if(n.mode!==void 0){let p=n.mode;if(!(p==="managed"||p==="seed")){let d={instancePath:e+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:Cx.properties.mode.enum},message:"must be equal to one of the allowed values"};r===null?r=[d]:r.push(d),a++}}if(n.upgrade_from!==void 0){let p=n.upgrade_from,d=a,u=!1,f=null,h=a;if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.digest===void 0){let b={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[b]:r.push(b),a++}if(p.document===void 0){let b={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[b]:r.push(b),a++}for(let b in p)if(!(b==="digest"||b==="document"||b==="version")){let w={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};r===null?r=[w]:r.push(w),a++}if(p.digest!==void 0){let b=p.digest;if(typeof b=="string"){if(!ll.test(b)){let w={instancePath:e+"/upgrade_from/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/upgrade_from/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}}if(p.document!==void 0){let b=p.document;if(typeof b=="string"){if(V(b)>262144){let w={instancePath:e+"/upgrade_from/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/upgrade_from/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}}if(p.version!==void 0){let b=p.version;if(!(typeof b=="number"&&!(b%1)&&!isNaN(b)&&isFinite(b))){let w={instancePath:e+"/upgrade_from/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[w]:r.push(w),a++}if(typeof b=="number"&&isFinite(b)&&(b<1||isNaN(b))){let w={instancePath:e+"/upgrade_from/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[w]:r.push(w),a++}}}else{let b={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[b]:r.push(b),a++}var l=h===a;l&&(u=!0,f=0);let m=a;if(Array.isArray(p)){if(p.length<1){let w={instancePath:e+"/upgrade_from",schemaPath:"#/properties/upgrade_from/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[w]:r.push(w),a++}let b=p.length;for(let w=0;w<b;w++){let g=p[w];if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.digest===void 0){let y={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[y]:r.push(y),a++}if(g.document===void 0){let y={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="digest"||y==="document"||y==="version")){let v={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.digest!==void 0){let y=g.digest;if(typeof y=="string"){if(!ll.test(y)){let v={instancePath:e+"/upgrade_from/"+w+"/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[v]:r.push(v),a++}}else{let v={instancePath:e+"/upgrade_from/"+w+"/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),a++}}if(g.document!==void 0){let y=g.document;if(typeof y=="string"){if(V(y)>262144){let v={instancePath:e+"/upgrade_from/"+w+"/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[v]:r.push(v),a++}}else{let v={instancePath:e+"/upgrade_from/"+w+"/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),a++}}if(g.version!==void 0){let y=g.version;if(!(typeof y=="number"&&!(y%1)&&!isNaN(y)&&isFinite(y))){let v={instancePath:e+"/upgrade_from/"+w+"/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[v]:r.push(v),a++}if(typeof y=="number"&&isFinite(y)&&(y<1||isNaN(y))){let v={instancePath:e+"/upgrade_from/"+w+"/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[v]:r.push(v),a++}}}else{let y={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}}else{let b={instancePath:e+"/upgrade_from",schemaPath:"#/properties/upgrade_from/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),a++}var l=m===a;if(l&&u?(u=!1,f=[f,1]):l&&(u=!0,f=1),u)a=d,r!==null&&(d?r.length=d:r=null);else{let b={instancePath:e+"/upgrade_from",schemaPath:"#/properties/upgrade_from/oneOf",keyword:"oneOf",params:{passingSchemas:f},message:"must match exactly one schema in oneOf"};r===null?r=[b]:r.push(b),a++}}if(n.source!==void 0){let p=n.source;if(typeof p=="string"){if(V(p)>240){let d={instancePath:e+"/source",schemaPath:"#/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/source",schemaPath:"#/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/source",schemaPath:"#/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.target!==void 0){let p=n.target;if(typeof p=="string"){if(V(p)>240){let d={instancePath:e+"/target",schemaPath:"#/properties/target/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/target",schemaPath:"#/properties/target/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.digest!==void 0){let p=n.digest;if(typeof p=="string"){if(!ll.test(p)){let d={instancePath:e+"/digest",schemaPath:"#/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/digest",schemaPath:"#/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let p={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}return dl.errors=r,a===0}function ul(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=ul.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.kind===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[l]:r.push(l),a++}if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="kind"||l==="id"||l==="version"||l==="name"||l==="description"||l==="resources"||Ux.test(l))){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.kind!==void 0&&n.kind!=="mdbase.type-pack"){let l={instancePath:e+"/kind",schemaPath:"#/properties/kind/const",keyword:"const",params:{allowedValue:"mdbase.type-pack"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}if(!kl.test(l)){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!Fh.test(l)){let p={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.name!==void 0){let l=n.name;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.description!==void 0){let l=n.description;if(typeof l=="string"){if(V(l)>500){let p={instancePath:e+"/description",schemaPath:"#/properties/description/maxLength",keyword:"maxLength",params:{limit:500},message:"must NOT have more than 500 characters"};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let p=l.length;for(let d=0;d<p;d++)dl(l[d],{instancePath:e+"/resources/"+d,parentData:l,parentDataProperty:d,rootData:o,dynamicAnchors:s})||(r=r===null?dl.errors:r.concat(dl.errors),a=r.length)}else{let p={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ul.errors=r,a===0}function fl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=fl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest"},message:"must have required property 'manifest'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}if(n.provides===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"provides"},message:"must have required property 'provides'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="manifest"||l==="resources"||l==="provides")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.manifest!==void 0&&(ul(n.manifest,{instancePath:e+"/manifest",parentData:n,parentDataProperty:"manifest",rootData:o,dynamicAnchors:s})||(r=r===null?ul.errors:r.concat(ul.errors),a=r.length)),n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let p=l.length;for(let d=0;d<p;d++){let u=l[d];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.source===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[f]:r.push(f),a++}if(u.document===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[f]:r.push(f),a++}for(let f in u)if(!(f==="source"||f==="document")){let h={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),a++}if(u.source!==void 0){let f=u.source;if(typeof f=="string"){if(V(f)>240){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(V(f)<1){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.document!==void 0){let f=u.document;if(typeof f=="string"){if(V(f)>262144){let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}}else{let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),a++}}}else{let p={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.provides!==void 0){let l=n.provides;if(Array.isArray(l)){if(l.length>20){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++)Si(l[f],{instancePath:e+"/provides/"+f,parentData:l,parentDataProperty:f,rootData:o,dynamicAnchors:s})||(r=r===null?Si.errors:r.concat(Si.errors),a=r.length);let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/provides",schemaPath:"#/properties/provides/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return fl.errors=r,a===0}function hl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=hl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.event===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"event"},message:"must have required property 'event'"};r===null?r=[l]:r.push(l),a++}if(n.presentation===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"presentation"},message:"must have required property 'presentation'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="event"||l==="if"||l==="debounce"||l==="minimum_interval"||l==="presentation")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}if(!kl.test(l)){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.event!==void 0&&(Si(n.event,{instancePath:e+"/event",parentData:n,parentDataProperty:"event",rootData:o,dynamicAnchors:s})||(r=r===null?Si.errors:r.concat(Si.errors),a=r.length)),n.if!==void 0){let l=n.if;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.$expr===void 0){let p={instancePath:e+"/if",schemaPath:"#/properties/if/required",keyword:"required",params:{missingProperty:"$expr"},message:"must have required property '$expr'"};r===null?r=[p]:r.push(p),a++}for(let p in l)if(p!=="$expr"){let d={instancePath:e+"/if",schemaPath:"#/properties/if/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.$expr!==void 0){let p=l.$expr;if(typeof p=="string"){if(V(p)>4096){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/maxLength",keyword:"maxLength",params:{limit:4096},message:"must NOT have more than 4096 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let p={instancePath:e+"/if",schemaPath:"#/properties/if/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}}if(n.debounce!==void 0){let l=n.debounce;if(typeof l=="string"){if(!Dh.test(l)){let p={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.minimum_interval!==void 0){let l=n.minimum_interval;if(typeof l=="string"){if(!Dh.test(l)){let p={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.presentation!==void 0){let l=n.presentation;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.title===void 0){let p={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};r===null?r=[p]:r.push(p),a++}for(let p in l)if(!(p==="title"||p==="body"||p==="tag")){let d={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.title!==void 0){let p=l.title;if(typeof p=="string"){if(V(p)>80){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.body!==void 0){let p=l.body;if(typeof p=="string"){if(V(p)>160){let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/maxLength",keyword:"maxLength",params:{limit:160},message:"must NOT have more than 160 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.tag!==void 0){let p=l.tag;if(typeof p=="string"){if(V(p)>80){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let p={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return hl.errors=r,a===0}function $h(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=$h.evaluated;c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0);let l=a,p=!1,d=null,u=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.homepage===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"homepage"},message:"must have required property 'homepage'"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"redirect_uris"},message:"must have required property 'redirect_uris'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="web"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/0/properties/distribution/const",keyword:"const",params:{allowedValue:"web"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.project_url!==void 0){let g={instancePath:e+"/project_url",schemaPath:"#/oneOf/0/properties/project_url/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=u===a;if(m){p=!0,d=0;var f={};f.distribution=!0,f.homepage=!0,f.redirect_uris=!0,f.project_url=!0}let h=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.distribution===void 0){let g={instancePath:e,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"distribution"},message:"must have required property 'distribution'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="portable"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/1/properties/distribution/const",keyword:"const",params:{allowedValue:"portable"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.platform!==void 0){let g={instancePath:e+"/platform",schemaPath:"#/oneOf/1/properties/platform/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g={instancePath:e+"/homepage",schemaPath:"#/oneOf/1/properties/homepage/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris!==void 0){let g={instancePath:e+"/redirect_uris",schemaPath:"#/oneOf/1/properties/redirect_uris/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=h===a;if(m&&p?(p=!1,d=[d,1]):m&&(p=!0,d=1,f!==!0&&(f=f||{},f.distribution=!0,f.platform=!0,f.homepage=!0,f.redirect_uris=!0)),p)a=l,r!==null&&(l?r.length=l:r=null);else{let g={instancePath:e,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:d},message:"must match exactly one schema in oneOf"};r===null?r=[g]:r.push(g),a++}if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest_version===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest_version"},message:"must have required property 'manifest_version'"};r===null?r=[g]:r.push(g),a++}if(n.id===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[g]:r.push(g),a++}if(n.name===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};r===null?r=[g]:r.push(g),a++}for(let g in n)if(!qx.call(Sx.properties,g)){let y={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[y]:r.push(y),a++}if(n.manifest_version!==void 0&&n.manifest_version!==1){let g={instancePath:e+"/manifest_version",schemaPath:"#/properties/manifest_version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0){let g=n.distribution;if(!(g==="web"||g==="portable")){let y={instancePath:e+"/distribution",schemaPath:"#/properties/distribution/enum",keyword:"enum",params:{allowedValues:Sx.properties.distribution.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),a++}}if(n.id!==void 0){let g=n.id;if(typeof g=="string"){if(V(g)>150){let y={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:150},message:"must NOT have more than 150 characters"};r===null?r=[y]:r.push(y),a++}if(V(g)<5){let y={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:5},message:"must NOT have fewer than 5 characters"};r===null?r=[y]:r.push(y),a++}if(!Tx.test(g)){let y={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"},message:'must match pattern "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.name!==void 0){let g=n.name;if(typeof g=="string"){if(V(g)>100){let y={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[y]:r.push(y),a++}if(V(g)<1){let y={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.platform!==void 0&&n.platform!=="native"){let g={instancePath:e+"/platform",schemaPath:"#/properties/platform/const",keyword:"const",params:{allowedValue:"native"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g=n.homepage;if(typeof g=="string"){if(!$o.test(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!zn(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.project_url!==void 0){let g=n.project_url;if(typeof g=="string"){if(!$o.test(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!zn(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.icon!==void 0){let g=n.icon;if(typeof g=="string"){if(!$o.test(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!zn(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.redirect_uris!==void 0){let g=n.redirect_uris;if(Array.isArray(g)){if(g.length>10){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/maxItems",keyword:"maxItems",params:{limit:10},message:"must NOT have more than 10 items"};r===null?r=[k]:r.push(k),a++}if(g.length<1){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),a++}let y=g.length;for(let k=0;k<y;k++){let S=g[k];if(typeof S=="string"){if(!zn(S)){let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[x]:r.push(x),a++}}else{let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[x]:r.push(x),a++}}let v=g.length,_;if(v>1){let k={};for(;v--;){let S=g[v];if(typeof S=="string"){if(typeof k[S]=="number"){_=k[S];let x={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/uniqueItems",keyword:"uniqueItems",params:{i:v,j:_},message:"must NOT have duplicate items (items ## "+_+" and "+v+" are identical)"};r===null?r=[x]:r.push(x),a++;break}k[S]=v}}}}else{let y={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[y]:r.push(y),a++}}if(n.installation_origins!==void 0){let g=n.installation_origins;if(g&&typeof g=="object"&&!Array.isArray(g)){for(let y in g)if(!(y==="lab"||y==="staging"||y==="production")){let v={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}g.lab!==void 0&&(Ai(g.lab,{instancePath:e+"/installation_origins/lab",parentData:g,parentDataProperty:"lab",rootData:o,dynamicAnchors:s})||(r=r===null?Ai.errors:r.concat(Ai.errors),a=r.length)),g.staging!==void 0&&(Ai(g.staging,{instancePath:e+"/installation_origins/staging",parentData:g,parentDataProperty:"staging",rootData:o,dynamicAnchors:s})||(r=r===null?Ai.errors:r.concat(Ai.errors),a=r.length)),g.production!==void 0&&(Ai(g.production,{instancePath:e+"/installation_origins/production",parentData:g,parentDataProperty:"production",rootData:o,dynamicAnchors:s})||(r=r===null?Ai.errors:r.concat(Ai.errors),a=r.length))}else{let y={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.requirements!==void 0&&(cl(n.requirements,{instancePath:e+"/requirements",parentData:n,parentDataProperty:"requirements",rootData:o,dynamicAnchors:s})||(r=r===null?cl.errors:r.concat(cl.errors),a=r.length)),n.provisions!==void 0){let g=n.provisions;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.type_packs===void 0){let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/required",keyword:"required",params:{missingProperty:"type_packs"},message:"must have required property 'type_packs'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="configuration"||y==="type_packs")){let v={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.configuration!==void 0){let y=g.configuration;if(Array.isArray(y)){if(y.length>50){let _={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[_]:r.push(_),a++}let v=y.length;for(let _=0;_<v;_++)pl(y[_],{instancePath:e+"/provisions/configuration/"+_,parentData:y,parentDataProperty:_,rootData:o,dynamicAnchors:s})||(r=r===null?pl.errors:r.concat(pl.errors),a=r.length)}else{let v={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.type_packs!==void 0){let y=g.type_packs;if(Array.isArray(y)){if(y.length>20){let _={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[_]:r.push(_),a++}let v=y.length;for(let _=0;_<v;_++)fl(y[_],{instancePath:e+"/provisions/type_packs/"+_,parentData:y,parentDataProperty:_,rootData:o,dynamicAnchors:s})||(r=r===null?fl.errors:r.concat(fl.errors),a=r.length)}else{let v={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}}else{let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.notifications!==void 0){let g=n.notifications;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.criteria===void 0){let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/required",keyword:"required",params:{missingProperty:"criteria"},message:"must have required property 'criteria'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="criteria"||y==="native_delivery")){let v={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.criteria!==void 0){let y=g.criteria;if(Array.isArray(y)){if(y.length>50){let _={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[_]:r.push(_),a++}let v=y.length;for(let _=0;_<v;_++)hl(y[_],{instancePath:e+"/notifications/criteria/"+_,parentData:y,parentDataProperty:_,rootData:o,dynamicAnchors:s})||(r=r===null?hl.errors:r.concat(hl.errors),a=r.length)}else{let v={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.native_delivery!==void 0){let y=g.native_delivery,v=a,_=!1,k=null,S=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"firebase_project_id"},message:"must have required property 'firebase_project_id'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="firebase_project_id")){let I={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[I]:r.push(I),a++}if(y.mode!==void 0&&y.mode!=="managed_fcm"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/mode/const",keyword:"const",params:{allowedValue:"managed_fcm"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id!==void 0){let P=y.firebase_project_id;if(typeof P=="string"){if(V(P)>63){let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/maxLength",keyword:"maxLength",params:{limit:63},message:"must NOT have more than 63 characters"};r===null?r=[I]:r.push(I),a++}if(V(P)<6){let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/minLength",keyword:"minLength",params:{limit:6},message:"must NOT have fewer than 6 characters"};r===null?r=[I]:r.push(I),a++}if(!Lx.test(P)){let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"},message:'must match pattern "^[a-z][a-z0-9-]*[a-z0-9]$"'};r===null?r=[I]:r.push(I),a++}}else{let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[I]:r.push(I),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=S===a;if(w){_=!0,k=0;var b=!0}let x=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.url===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"url"},message:"must have required property 'url'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="url")){let I={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[I]:r.push(I),a++}if(y.mode!==void 0&&y.mode!=="webhook"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/mode/const",keyword:"const",params:{allowedValue:"webhook"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.url!==void 0){let P=y.url;if(typeof P=="string"){if(!$o.test(P)){let I={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[I]:r.push(I),a++}if(!zn(P)){let I={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[I]:r.push(I),a++}}else{let I={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[I]:r.push(I),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=x===a;if(w&&_?(_=!1,k=[k,1]):w&&(_=!0,k=1,b!==!0&&(b=!0)),_)a=v,r!==null&&(v?r.length=v:r=null);else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf",keyword:"oneOf",params:{passingSchemas:k},message:"must match exactly one schema in oneOf"};r===null?r=[P]:r.push(P),a++}}}else{let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}}else{let g={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),a++}return $h.errors=r,a===0}function ki(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=ki.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){for(let l in n)if(!(l==="app-runtime"||l==="mobile")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n["app-runtime"]!==void 0){let l=n["app-runtime"];if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(typeof h=="string"){if(V(h)>255){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(V(h)<1){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!zn(h)){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let p={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.mobile!==void 0){let l=n.mobile;if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(typeof h=="string"){if(V(h)>255){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(V(h)<1){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!zn(h)){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let p={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ki.errors=r,a===0}function ml(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=ml.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.contract_version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contract_version"},message:"must have required property 'contract_version'"};r===null?r=[l]:r.push(l),a++}if(n.required===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="contract_version"||l==="required"||l==="optional")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.contract_version!==void 0&&n.contract_version!==1){let l={instancePath:e+"/contract_version",schemaPath:"#/properties/contract_version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.required!==void 0){let l=n.required;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/required",schemaPath:"#/properties/required/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(!(h==="collection.inspect"||h==="records.watch"||h==="records.read"||h==="records.query"||h==="records.validate"||h==="records.create"||h==="records.update"||h==="records.delete"||h==="records.rename"||h==="views.list"||h==="views.execute"||h==="views.source.read"||h==="views.source.create"||h==="views.source.update"||h==="views.source.delete"||h==="definitions.contracts.current"||h==="definitions.read"||h==="definitions.create"||h==="definitions.update"||h==="definitions.type-pack.inspect"||h==="definitions.type-pack.apply"||h==="collection.setup.apply"||h==="timers.list"||h==="timers.put"||h==="timers.cancel"||h==="timers.reconcile"||h==="sync.offline-replica"||h==="notifications.background-delivery"||h==="files.list"||h==="files.read"||h==="files.add"||h==="files.replace"||h==="files.move"||h==="files.delete")){let m={instancePath:e+"/required/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:Rx.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/required",schemaPath:"#/properties/required/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/required",schemaPath:"#/properties/required/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.optional!==void 0){let l=n.optional;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++){let h=l[f];if(!(h==="collection.inspect"||h==="records.watch"||h==="records.read"||h==="records.query"||h==="records.validate"||h==="records.create"||h==="records.update"||h==="records.delete"||h==="records.rename"||h==="views.list"||h==="views.execute"||h==="views.source.read"||h==="views.source.create"||h==="views.source.update"||h==="views.source.delete"||h==="definitions.contracts.current"||h==="definitions.read"||h==="definitions.create"||h==="definitions.update"||h==="definitions.type-pack.inspect"||h==="definitions.type-pack.apply"||h==="collection.setup.apply"||h==="timers.list"||h==="timers.put"||h==="timers.cancel"||h==="timers.reconcile"||h==="sync.offline-replica"||h==="notifications.background-delivery"||h==="files.list"||h==="files.read"||h==="files.add"||h==="files.replace"||h==="files.move"||h==="files.delete")){let m={instancePath:e+"/optional/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:Rx.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/optional",schemaPath:"#/properties/optional/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ml.errors=r,a===0}function yl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=yl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.actions===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"actions"},message:"must have required property 'actions'"};r===null?r=[d]:r.push(d),a++}if(n.scope===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"scope"},message:"must have required property 'scope'"};r===null?r=[d]:r.push(d),a++}for(let d in n)if(!(d==="actions"||d==="scope")){let u={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),a++}if(n.actions!==void 0){let d=n.actions;if(Array.isArray(d)){if(d.length>6){let m={instancePath:e+"/actions",schemaPath:"#/properties/actions/maxItems",keyword:"maxItems",params:{limit:6},message:"must NOT have more than 6 items"};r===null?r=[m]:r.push(m),a++}if(d.length<1){let m={instancePath:e+"/actions",schemaPath:"#/properties/actions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[m]:r.push(m),a++}let u=d.length;for(let m=0;m<u;m++){let b=d[m];if(!(b==="list"||b==="read"||b==="add"||b==="replace"||b==="move"||b==="delete")){let w={instancePath:e+"/actions/"+m,schemaPath:"#/properties/actions/items/enum",keyword:"enum",params:{allowedValues:Zq.properties.actions.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),a++}}let f=d.length,h;if(f>1){e:for(;f--;)for(h=f;h--;)if(ni(d[f],d[h])){let m={instancePath:e+"/actions",schemaPath:"#/properties/actions/uniqueItems",keyword:"uniqueItems",params:{i:f,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+f+" are identical)"};r===null?r=[m]:r.push(m),a++;break e}}}else{let u={instancePath:e+"/actions",schemaPath:"#/properties/actions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),a++}}if(n.scope!==void 0){let d=n.scope,u=a,f=!1,h=null,m=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}if(d.folders===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"folders"},message:"must have required property 'folders'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(!(w==="kind"||w==="folders")){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="selected_folders"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/0/properties/kind/const",keyword:"const",params:{allowedValue:"selected_folders"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}if(d.folders!==void 0){let w=d.folders;if(Array.isArray(w)){if(w.length>100){let _={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[_]:r.push(_),a++}if(w.length<1){let _={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[_]:r.push(_),a++}let g=w.length;for(let _=0;_<g;_++){let k=w[_];if(typeof k=="string"){if(V(k)>1024){let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[S]:r.push(S),a++}if(V(k)<1){let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[S]:r.push(S),a++}if(!jx.test(k)){let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/pattern",keyword:"pattern",params:{pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"},message:'must match pattern "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"'};r===null?r=[S]:r.push(S),a++}}else{let S={instancePath:e+"/scope/folders/"+_,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[S]:r.push(S),a++}}let y=w.length,v;if(y>1){let _={};for(;y--;){let k=w[y];if(typeof k=="string"){if(typeof _[k]=="number"){v=_[k];let S={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/uniqueItems",keyword:"uniqueItems",params:{i:y,j:v},message:"must NOT have duplicate items (items ## "+v+" and "+y+" are identical)"};r===null?r=[S]:r.push(S),a++;break}_[k]=y}}}}else{let g={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[g]:r.push(g),a++}}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var p=m===a;if(p){f=!0,h=0;var l=!0}let b=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(w!=="kind"){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="collection"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/1/properties/kind/const",keyword:"const",params:{allowedValue:"collection"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var p=b===a;if(p&&f?(f=!1,h=[h,1]):p&&(f=!0,h=1,l!==!0&&(l=!0)),f)a=u,r!==null&&(u?r.length=u:r=null);else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf",keyword:"oneOf",params:{passingSchemas:h},message:"must match exactly one schema in oneOf"};r===null?r=[w]:r.push(w),a++}}}else{let d={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),a++}return yl.errors=r,a===0}function gl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=gl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[p]:r.push(p),a++}if(n.path===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[p]:r.push(p),a++}if(n.predicate===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"predicate"},message:"must have required property 'predicate'"};r===null?r=[p]:r.push(p),a++}if(n.value===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[p]:r.push(p),a++}for(let p in n)if(!(p==="id"||p==="path"||p==="predicate"||p==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.id!==void 0){let p=n.id;if(typeof p=="string"){if(V(p)>100){let d={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!Bh.test(p)){let d={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.path!==void 0){let p=n.path;if(typeof p=="string"){if(V(p)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.predicate!==void 0&&n.predicate!=="contains"){let p={instancePath:e+"/predicate",schemaPath:"#/properties/predicate/const",keyword:"const",params:{allowedValue:"contains"},message:"must be equal to constant"};r===null?r=[p]:r.push(p),a++}if(n.value!==void 0){let p=n.value,d=a,u=!1,f=a;if(typeof p!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof p=="number"&&isFinite(p))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof p!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(p!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let p={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}return gl.errors=r,a===0}function Pi(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=Pi.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.digest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="version"||l==="digest")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}if(!kl.test(l)){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!Fh.test(l)){let p={instancePath:e+"/version",schemaPath:"#/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.digest!==void 0){let l=n.digest;if(typeof l=="string"){if(!ll.test(l)){let p={instancePath:e+"/digest",schemaPath:"#/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/digest",schemaPath:"#/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Pi.errors=r,a===0}function bl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=bl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.access===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"access"},message:"must have required property 'access'"};r===null?r=[l]:r.push(l),a++}if(n.contracts===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contracts"},message:"must have required property 'contracts'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="capabilities"||l==="access"||l==="collection_kind"||l==="files"||l==="configuration"||l==="contracts")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.capabilities!==void 0&&(ml(n.capabilities,{instancePath:e+"/capabilities",parentData:n,parentDataProperty:"capabilities",rootData:o,dynamicAnchors:s})||(r=r===null?ml.errors:r.concat(ml.errors),a=r.length)),n.access!==void 0&&n.access!=="full_collection"){let l={instancePath:e+"/access",schemaPath:"#/properties/access/const",keyword:"const",params:{allowedValue:"full_collection"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.collection_kind!==void 0&&n.collection_kind!=="hosted"){let l={instancePath:e+"/collection_kind",schemaPath:"#/properties/collection_kind/const",keyword:"const",params:{allowedValue:"hosted"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.files!==void 0&&(yl(n.files,{instancePath:e+"/files",parentData:n,parentDataProperty:"files",rootData:o,dynamicAnchors:s})||(r=r===null?yl.errors:r.concat(yl.errors),a=r.length)),n.configuration!==void 0){let l=n.configuration;if(Array.isArray(l)){if(l.length>50){let d={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[d]:r.push(d),a++}let p=l.length;for(let d=0;d<p;d++)gl(l[d],{instancePath:e+"/configuration/"+d,parentData:l,parentDataProperty:d,rootData:o,dynamicAnchors:s})||(r=r===null?gl.errors:r.concat(gl.errors),a=r.length)}else{let p={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.contracts!==void 0){let l=n.contracts;if(Array.isArray(l)){if(l.length>20){let f={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++)Pi(l[f],{instancePath:e+"/contracts/"+f,parentData:l,parentDataProperty:f,rootData:o,dynamicAnchors:s})||(r=r===null?Pi.errors:r.concat(Pi.errors),a=r.length);let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return bl.errors=r,a===0}function wl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=wl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.requirement===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"requirement"},message:"must have required property 'requirement'"};r===null?r=[p]:r.push(p),a++}if(n.operation===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"operation"},message:"must have required property 'operation'"};r===null?r=[p]:r.push(p),a++}if(n.path===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[p]:r.push(p),a++}if(n.value===void 0){let p={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[p]:r.push(p),a++}for(let p in n)if(!(p==="requirement"||p==="operation"||p==="path"||p==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.requirement!==void 0){let p=n.requirement;if(typeof p=="string"){if(V(p)>100){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!Bh.test(p)){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.operation!==void 0&&n.operation!=="set_add"){let p={instancePath:e+"/operation",schemaPath:"#/properties/operation/const",keyword:"const",params:{allowedValue:"set_add"},message:"must be equal to constant"};r===null?r=[p]:r.push(p),a++}if(n.path!==void 0){let p=n.path;if(typeof p=="string"){if(V(p)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.value!==void 0){let p=n.value,d=a,u=!1,f=a;if(typeof p!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof p=="number"&&isFinite(p))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof p!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(p!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let p={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}return wl.errors=r,a===0}function vl(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=vl.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.kind===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[l]:r.push(l),a++}if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="kind"||l==="id"||l==="version"||l==="name"||l==="description"||l==="resources"||Ux.test(l))){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.kind!==void 0&&n.kind!=="mdbase.type-pack"){let l={instancePath:e+"/kind",schemaPath:"#/properties/kind/const",keyword:"const",params:{allowedValue:"mdbase.type-pack"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}if(!kl.test(l)){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!Fh.test(l)){let p={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.name!==void 0){let l=n.name;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.description!==void 0){let l=n.description;if(typeof l=="string"){if(V(l)>500){let p={instancePath:e+"/description",schemaPath:"#/properties/description/maxLength",keyword:"maxLength",params:{limit:500},message:"must NOT have more than 500 characters"};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let p=l.length;for(let d=0;d<p;d++){let u=l[d];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.kind===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[f]:r.push(f),a++}if(u.mode===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[f]:r.push(f),a++}if(u.source===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[f]:r.push(f),a++}if(u.target===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};r===null?r=[f]:r.push(f),a++}if(u.digest===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[f]:r.push(f),a++}for(let f in u)if(!(f==="kind"||f==="mode"||f==="source"||f==="target"||f==="digest")){let h={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),a++}if(u.kind!==void 0){let f=u.kind;if(!(f==="contract"||f==="type"||f==="schema")){let h={instancePath:e+"/resources/"+d+"/kind",schemaPath:"#/$defs/typePackManifestResource/properties/kind/enum",keyword:"enum",params:{allowedValues:Ex.properties.kind.enum},message:"must be equal to one of the allowed values"};r===null?r=[h]:r.push(h),a++}}if(u.mode!==void 0){let f=u.mode;if(!(f==="managed"||f==="seed")){let h={instancePath:e+"/resources/"+d+"/mode",schemaPath:"#/$defs/typePackManifestResource/properties/mode/enum",keyword:"enum",params:{allowedValues:Ex.properties.mode.enum},message:"must be equal to one of the allowed values"};r===null?r=[h]:r.push(h),a++}}if(u.source!==void 0){let f=u.source;if(typeof f=="string"){if(V(f)>240){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackManifestResource/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(V(f)<1){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackManifestResource/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackManifestResource/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.target!==void 0){let f=u.target;if(typeof f=="string"){if(V(f)>240){let h={instancePath:e+"/resources/"+d+"/target",schemaPath:"#/$defs/typePackManifestResource/properties/target/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(V(f)<1){let h={instancePath:e+"/resources/"+d+"/target",schemaPath:"#/$defs/typePackManifestResource/properties/target/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/target",schemaPath:"#/$defs/typePackManifestResource/properties/target/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.digest!==void 0){let f=u.digest;if(typeof f=="string"){if(!ll.test(f)){let h={instancePath:e+"/resources/"+d+"/digest",schemaPath:"#/$defs/typePackManifestResource/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/digest",schemaPath:"#/$defs/typePackManifestResource/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}}else{let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),a++}}}else{let p={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return vl.errors=r,a===0}function _l(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=_l.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest"},message:"must have required property 'manifest'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}if(n.provides===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"provides"},message:"must have required property 'provides'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="manifest"||l==="resources"||l==="provides")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.manifest!==void 0&&(vl(n.manifest,{instancePath:e+"/manifest",parentData:n,parentDataProperty:"manifest",rootData:o,dynamicAnchors:s})||(r=r===null?vl.errors:r.concat(vl.errors),a=r.length)),n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let p=l.length;for(let d=0;d<p;d++){let u=l[d];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.source===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[f]:r.push(f),a++}if(u.document===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[f]:r.push(f),a++}for(let f in u)if(!(f==="source"||f==="document")){let h={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),a++}if(u.source!==void 0){let f=u.source;if(typeof f=="string"){if(V(f)>240){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(V(f)<1){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.document!==void 0){let f=u.document;if(typeof f=="string"){if(V(f)>262144){let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}}else{let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),a++}}}else{let p={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}if(n.provides!==void 0){let l=n.provides;if(Array.isArray(l)){if(l.length>20){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[f]:r.push(f),a++}let p=l.length;for(let f=0;f<p;f++)Pi(l[f],{instancePath:e+"/provides/"+f,parentData:l,parentDataProperty:f,rootData:o,dynamicAnchors:s})||(r=r===null?Pi.errors:r.concat(Pi.errors),a=r.length);let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(ni(l[d],l[u])){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let p={instancePath:e+"/provides",schemaPath:"#/properties/provides/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return _l.errors=r,a===0}function Al(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=Al.evaluated;if(c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.event===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"event"},message:"must have required property 'event'"};r===null?r=[l]:r.push(l),a++}if(n.presentation===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"presentation"},message:"must have required property 'presentation'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="event"||l==="if"||l==="debounce"||l==="minimum_interval"||l==="presentation")){let p={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(V(l)>100){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[p]:r.push(p),a++}if(V(l)<1){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[p]:r.push(p),a++}if(!kl.test(l)){let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.event!==void 0&&(Pi(n.event,{instancePath:e+"/event",parentData:n,parentDataProperty:"event",rootData:o,dynamicAnchors:s})||(r=r===null?Pi.errors:r.concat(Pi.errors),a=r.length)),n.if!==void 0){let l=n.if;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.$expr===void 0){let p={instancePath:e+"/if",schemaPath:"#/properties/if/required",keyword:"required",params:{missingProperty:"$expr"},message:"must have required property '$expr'"};r===null?r=[p]:r.push(p),a++}for(let p in l)if(p!=="$expr"){let d={instancePath:e+"/if",schemaPath:"#/properties/if/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.$expr!==void 0){let p=l.$expr;if(typeof p=="string"){if(V(p)>4096){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/maxLength",keyword:"maxLength",params:{limit:4096},message:"must NOT have more than 4096 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let p={instancePath:e+"/if",schemaPath:"#/properties/if/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}}if(n.debounce!==void 0){let l=n.debounce;if(typeof l=="string"){if(!Dh.test(l)){let p={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.minimum_interval!==void 0){let l=n.minimum_interval;if(typeof l=="string"){if(!Dh.test(l)){let p={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[p]:r.push(p),a++}}else{let p={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),a++}}if(n.presentation!==void 0){let l=n.presentation;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.title===void 0){let p={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};r===null?r=[p]:r.push(p),a++}for(let p in l)if(!(p==="title"||p==="body"||p==="tag")){let d={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.title!==void 0){let p=l.title;if(typeof p=="string"){if(V(p)>80){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.body!==void 0){let p=l.body;if(typeof p=="string"){if(V(p)>160){let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/maxLength",keyword:"maxLength",params:{limit:160},message:"must NOT have more than 160 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.tag!==void 0){let p=l.tag;if(typeof p=="string"){if(V(p)>80){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(V(p)<1){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let p={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Al.errors=r,a===0}function zh(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,c=zh.evaluated;c.dynamicProps&&(c.props=void 0),c.dynamicItems&&(c.items=void 0);let l=a,p=!1,d=null,u=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.homepage===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"homepage"},message:"must have required property 'homepage'"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"redirect_uris"},message:"must have required property 'redirect_uris'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="web"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/0/properties/distribution/const",keyword:"const",params:{allowedValue:"web"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.project_url!==void 0){let g={instancePath:e+"/project_url",schemaPath:"#/oneOf/0/properties/project_url/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=u===a;if(m){p=!0,d=0;var f={};f.distribution=!0,f.homepage=!0,f.redirect_uris=!0,f.project_url=!0}let h=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.distribution===void 0){let g={instancePath:e,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"distribution"},message:"must have required property 'distribution'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="portable"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/1/properties/distribution/const",keyword:"const",params:{allowedValue:"portable"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.platform!==void 0){let g={instancePath:e+"/platform",schemaPath:"#/oneOf/1/properties/platform/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g={instancePath:e+"/homepage",schemaPath:"#/oneOf/1/properties/homepage/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris!==void 0){let g={instancePath:e+"/redirect_uris",schemaPath:"#/oneOf/1/properties/redirect_uris/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=h===a;if(m&&p?(p=!1,d=[d,1]):m&&(p=!0,d=1,f!==!0&&(f=f||{},f.distribution=!0,f.platform=!0,f.homepage=!0,f.redirect_uris=!0)),p)a=l,r!==null&&(l?r.length=l:r=null);else{let g={instancePath:e,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:d},message:"must match exactly one schema in oneOf"};r===null?r=[g]:r.push(g),a++}if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest_version===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest_version"},message:"must have required property 'manifest_version'"};r===null?r=[g]:r.push(g),a++}if(n.id===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[g]:r.push(g),a++}if(n.name===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};r===null?r=[g]:r.push(g),a++}for(let g in n)if(!qx.call(Ox.properties,g)){let y={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[y]:r.push(y),a++}if(n.manifest_version!==void 0&&n.manifest_version!==1){let g={instancePath:e+"/manifest_version",schemaPath:"#/properties/manifest_version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0){let g=n.distribution;if(!(g==="web"||g==="portable")){let y={instancePath:e+"/distribution",schemaPath:"#/properties/distribution/enum",keyword:"enum",params:{allowedValues:Ox.properties.distribution.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),a++}}if(n.id!==void 0){let g=n.id;if(typeof g=="string"){if(V(g)>150){let y={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:150},message:"must NOT have more than 150 characters"};r===null?r=[y]:r.push(y),a++}if(V(g)<5){let y={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:5},message:"must NOT have fewer than 5 characters"};r===null?r=[y]:r.push(y),a++}if(!Tx.test(g)){let y={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"},message:'must match pattern "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.name!==void 0){let g=n.name;if(typeof g=="string"){if(V(g)>100){let y={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[y]:r.push(y),a++}if(V(g)<1){let y={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.platform!==void 0&&n.platform!=="native"){let g={instancePath:e+"/platform",schemaPath:"#/properties/platform/const",keyword:"const",params:{allowedValue:"native"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g=n.homepage;if(typeof g=="string"){if(!$o.test(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!zn(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.project_url!==void 0){let g=n.project_url;if(typeof g=="string"){if(!$o.test(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!zn(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.icon!==void 0){let g=n.icon;if(typeof g=="string"){if(!$o.test(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!zn(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.redirect_uris!==void 0){let g=n.redirect_uris;if(Array.isArray(g)){if(g.length>10){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/maxItems",keyword:"maxItems",params:{limit:10},message:"must NOT have more than 10 items"};r===null?r=[k]:r.push(k),a++}if(g.length<1){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),a++}let y=g.length;for(let k=0;k<y;k++){let S=g[k];if(typeof S=="string"){if(!zn(S)){let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[x]:r.push(x),a++}}else{let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[x]:r.push(x),a++}}let v=g.length,_;if(v>1){let k={};for(;v--;){let S=g[v];if(typeof S=="string"){if(typeof k[S]=="number"){_=k[S];let x={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/uniqueItems",keyword:"uniqueItems",params:{i:v,j:_},message:"must NOT have duplicate items (items ## "+_+" and "+v+" are identical)"};r===null?r=[x]:r.push(x),a++;break}k[S]=v}}}}else{let y={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[y]:r.push(y),a++}}if(n.installation_origins!==void 0){let g=n.installation_origins;if(g&&typeof g=="object"&&!Array.isArray(g)){for(let y in g)if(!(y==="lab"||y==="staging"||y==="production")){let v={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}g.lab!==void 0&&(ki(g.lab,{instancePath:e+"/installation_origins/lab",parentData:g,parentDataProperty:"lab",rootData:o,dynamicAnchors:s})||(r=r===null?ki.errors:r.concat(ki.errors),a=r.length)),g.staging!==void 0&&(ki(g.staging,{instancePath:e+"/installation_origins/staging",parentData:g,parentDataProperty:"staging",rootData:o,dynamicAnchors:s})||(r=r===null?ki.errors:r.concat(ki.errors),a=r.length)),g.production!==void 0&&(ki(g.production,{instancePath:e+"/installation_origins/production",parentData:g,parentDataProperty:"production",rootData:o,dynamicAnchors:s})||(r=r===null?ki.errors:r.concat(ki.errors),a=r.length))}else{let y={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.requirements!==void 0&&(bl(n.requirements,{instancePath:e+"/requirements",parentData:n,parentDataProperty:"requirements",rootData:o,dynamicAnchors:s})||(r=r===null?bl.errors:r.concat(bl.errors),a=r.length)),n.provisions!==void 0){let g=n.provisions;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.type_packs===void 0){let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/required",keyword:"required",params:{missingProperty:"type_packs"},message:"must have required property 'type_packs'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="configuration"||y==="type_packs")){let v={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.configuration!==void 0){let y=g.configuration;if(Array.isArray(y)){if(y.length>50){let _={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[_]:r.push(_),a++}let v=y.length;for(let _=0;_<v;_++)wl(y[_],{instancePath:e+"/provisions/configuration/"+_,parentData:y,parentDataProperty:_,rootData:o,dynamicAnchors:s})||(r=r===null?wl.errors:r.concat(wl.errors),a=r.length)}else{let v={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.type_packs!==void 0){let y=g.type_packs;if(Array.isArray(y)){if(y.length>20){let _={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[_]:r.push(_),a++}let v=y.length;for(let _=0;_<v;_++)_l(y[_],{instancePath:e+"/provisions/type_packs/"+_,parentData:y,parentDataProperty:_,rootData:o,dynamicAnchors:s})||(r=r===null?_l.errors:r.concat(_l.errors),a=r.length)}else{let v={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}}else{let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.notifications!==void 0){let g=n.notifications;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.criteria===void 0){let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/required",keyword:"required",params:{missingProperty:"criteria"},message:"must have required property 'criteria'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="criteria"||y==="native_delivery")){let v={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.criteria!==void 0){let y=g.criteria;if(Array.isArray(y)){if(y.length>50){let _={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[_]:r.push(_),a++}let v=y.length;for(let _=0;_<v;_++)Al(y[_],{instancePath:e+"/notifications/criteria/"+_,parentData:y,parentDataProperty:_,rootData:o,dynamicAnchors:s})||(r=r===null?Al.errors:r.concat(Al.errors),a=r.length)}else{let v={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.native_delivery!==void 0){let y=g.native_delivery,v=a,_=!1,k=null,S=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"firebase_project_id"},message:"must have required property 'firebase_project_id'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="firebase_project_id")){let I={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[I]:r.push(I),a++}if(y.mode!==void 0&&y.mode!=="managed_fcm"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/mode/const",keyword:"const",params:{allowedValue:"managed_fcm"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id!==void 0){let P=y.firebase_project_id;if(typeof P=="string"){if(V(P)>63){let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/maxLength",keyword:"maxLength",params:{limit:63},message:"must NOT have more than 63 characters"};r===null?r=[I]:r.push(I),a++}if(V(P)<6){let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/minLength",keyword:"minLength",params:{limit:6},message:"must NOT have fewer than 6 characters"};r===null?r=[I]:r.push(I),a++}if(!Lx.test(P)){let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"},message:'must match pattern "^[a-z][a-z0-9-]*[a-z0-9]$"'};r===null?r=[I]:r.push(I),a++}}else{let I={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[I]:r.push(I),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=S===a;if(w){_=!0,k=0;var b=!0}let x=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.url===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"url"},message:"must have required property 'url'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="url")){let I={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[I]:r.push(I),a++}if(y.mode!==void 0&&y.mode!=="webhook"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/mode/const",keyword:"const",params:{allowedValue:"webhook"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.url!==void 0){let P=y.url;if(typeof P=="string"){if(!$o.test(P)){let I={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[I]:r.push(I),a++}if(!zn(P)){let I={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[I]:r.push(I),a++}}else{let I={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[I]:r.push(I),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=x===a;if(w&&_?(_=!1,k=[k,1]):w&&(_=!0,k=1,b!==!0&&(b=!0)),_)a=v,r!==null&&(v?r.length=v:r=null);else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf",keyword:"oneOf",params:{passingSchemas:k},message:"must match exactly one schema in oneOf"};r===null?r=[P]:r.push(P),a++}}}else{let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}}else{let g={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),a++}return zh.errors=r,a===0}var Mx,Sx,qx,V,Tx,$o,Lx,zn,Px,xx,ni,Ix,jx,Bh,kl,Fh,ll,Ux,Cx,Dh,Nx,Ox,Rx,Zq,Ex,Dx=C(()=>{"use strict";Mx=$h,Sx={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://mdbase.dev/connect/schemas/mdbase-app.v1.json",title:"mdbase connect bundled application manifest v1",type:"object",additionalProperties:!1,required:["manifest_version","id","name"],properties:{manifest_version:{const:1},distribution:{enum:["web","portable"],description:"Portable declarations use device authorization and do not claim a browser origin."},id:{type:"string",minLength:5,maxLength:150,pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$",description:"Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication."},name:{type:"string",minLength:1,maxLength:100},platform:{const:"native",description:"Unverified native app; permits literal IPv4 loopback HTTP on any port."},homepage:{type:"string",format:"uri",pattern:"^https://"},project_url:{type:"string",format:"uri",pattern:"^https://"},icon:{type:"string",format:"uri",pattern:"^https://"},redirect_uris:{type:"array",minItems:1,maxItems:10,uniqueItems:!0,items:{type:"string",format:"uri",description:"An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID."}},installation_origins:{type:"object",additionalProperties:!1,properties:{lab:{$ref:"#/$defs/installationOriginPolicy"},staging:{$ref:"#/$defs/installationOriginPolicy"},production:{$ref:"#/$defs/installationOriginPolicy"}}},requirements:{$ref:"#/$defs/requirements"},provisions:{type:"object",additionalProperties:!1,required:["type_packs"],properties:{configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationProvision"}},type_packs:{type:"array",maxItems:20,items:{$ref:"#/$defs/typePackProvision"}}}},notifications:{type:"object",additionalProperties:!1,required:["criteria"],properties:{criteria:{type:"array",maxItems:50,items:{$ref:"#/$defs/notificationCriterion"}},native_delivery:{$ref:"#/$defs/nativeNotificationDelivery"}}}},oneOf:[{required:["homepage","redirect_uris"],properties:{distribution:{const:"web"},homepage:!0,redirect_uris:!0,project_url:!1}},{required:["distribution"],properties:{distribution:{const:"portable"},platform:!1,homepage:!1,redirect_uris:!1}}],$defs:{installationOriginPolicy:{type:"object",additionalProperties:!1,properties:{"app-runtime":{$ref:"#/$defs/installationOrigins"},mobile:{$ref:"#/$defs/installationOrigins"}}},installationOrigins:{type:"array",maxItems:16,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:255,format:"uri"}},identifier:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},duration:{type:"string",pattern:"^[0-9]+(ms|s|m|h|d)$"},contract:{type:"object",additionalProperties:!1,required:["id","version","digest"],properties:{id:{$ref:"#/$defs/identifier"},version:{type:"string",pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},requirements:{type:"object",additionalProperties:!1,required:["access","contracts"],properties:{capabilities:{$ref:"#/$defs/capabilityRequirements"},access:{const:"full_collection",description:"Compatibility declaration for collection-level application authorization."},collection_kind:{const:"hosted",description:"Require a durable provider-backed collection with direct sync support."},people:{type:"object",additionalProperties:!1,required:["version"],anyOf:[{required:["required"]},{required:["optional"]}],properties:{version:{const:1},required:{$ref:"#/$defs/peoplePermissions"},optional:{$ref:"#/$defs/peoplePermissions"}}},files:{$ref:"#/$defs/fileRequirement"},configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationRequirement"}},contracts:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},capabilityRequirements:{type:"object",additionalProperties:!1,required:["contract_version","required"],properties:{contract_version:{const:2},required:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}},optional:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}}}},configurationValue:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},configurationRequirement:{type:"object",additionalProperties:!1,required:["id","path","predicate","value"],properties:{id:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},path:{type:"string",minLength:1,maxLength:1024},predicate:{const:"contains"},value:{$ref:"#/$defs/configurationValue"}}},configurationProvision:{type:"object",additionalProperties:!1,required:["requirement","operation","path","value"],properties:{requirement:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},operation:{const:"set_add"},path:{type:"string",minLength:1,maxLength:1024},value:{$ref:"#/$defs/configurationValue"}}},applicationCapability:{enum:["collection.read","records.create","records.edit","records.delete","views.manage","definitions.manage","background.schedule","offline.replica"]},peoplePermissions:{type:"array",minItems:1,uniqueItems:!0,items:{enum:["identity","members"]}},fileRequirement:{type:"object",additionalProperties:!1,required:["required","scope"],properties:{required:{$ref:"#/$defs/fileActions"},optional:{$ref:"#/$defs/fileActions"},scope:{$ref:"#/$defs/fileScope"}}},fileActions:{type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},fileScope:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","folders"],properties:{kind:{const:"selected_folders"},folders:{type:"array",minItems:1,maxItems:100,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:1024,pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"}}}},{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{const:"collection"}}}]},typePackProvision:{type:"object",additionalProperties:!1,required:["manifest","resources","provides"],properties:{manifest:{$ref:"#/$defs/typePackManifest"},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackSourceResource"}},provides:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},typePackManifest:{type:"object",required:["kind","id","version","resources"],properties:{kind:{const:"mdbase.type-pack"},id:{$ref:"#/$defs/identifier"},version:{$ref:"#/$defs/contract/properties/version"},name:{type:"string",minLength:1,maxLength:100},description:{type:"string",maxLength:500},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackManifestResource"}}},patternProperties:{"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$":!0},additionalProperties:!1},typePackManifestResource:{type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},upgrade_from:{oneOf:[{$ref:"#/$defs/typePackUpgradeBaseline"},{type:"array",minItems:1,items:{$ref:"#/$defs/typePackUpgradeBaseline"}}]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},typePackUpgradeBaseline:{type:"object",additionalProperties:!1,required:["digest","document"],properties:{digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"},document:{type:"string",maxLength:262144},version:{type:"integer",minimum:1}}},typePackSourceResource:{type:"object",additionalProperties:!1,required:["source","document"],properties:{source:{type:"string",minLength:1,maxLength:240},document:{type:"string",maxLength:262144}}},notificationCriterion:{type:"object",additionalProperties:!1,required:["id","event","presentation"],properties:{id:{$ref:"#/$defs/identifier"},event:{$ref:"#/$defs/contract"},if:{type:"object",additionalProperties:!1,required:["$expr"],properties:{$expr:{type:"string",minLength:1,maxLength:4096}}},debounce:{$ref:"#/$defs/duration"},minimum_interval:{$ref:"#/$defs/duration"},presentation:{type:"object",additionalProperties:!1,required:["title"],properties:{title:{type:"string",minLength:1,maxLength:80},body:{type:"string",maxLength:160},tag:{type:"string",minLength:1,maxLength:80}}}}},nativeNotificationDelivery:{oneOf:[{type:"object",additionalProperties:!1,required:["mode","firebase_project_id"],properties:{mode:{const:"managed_fcm"},firebase_project_id:{type:"string",minLength:6,maxLength:63,pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"}}},{type:"object",additionalProperties:!1,required:["mode","url"],properties:{mode:{const:"webhook"},url:{type:"string",format:"uri",pattern:"^https://"}}}]}}},qx=Object.prototype.hasOwnProperty,V=(function(e){let t=e.length,i=0,o=0,s;for(;o<t;)i++,s=e.charCodeAt(o++),s>=55296&&s<=56319&&o<t&&(s=e.charCodeAt(o),(s&64512)===56320&&o++);return i}),Tx=new RegExp("^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$","u"),$o=new RegExp("^https://","u"),Lx=new RegExp("^[a-z][a-z0-9-]*[a-z0-9]$","u"),zn=(()=>{let n=/\/|:/,e=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;return function(i){return n.test(i)&&e.test(i)}})();Ai.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Px={type:"array",minItems:1,uniqueItems:!0,items:{enum:["identity","members"]}},xx={enum:["collection.read","records.create","records.edit","records.delete","views.manage","definitions.manage","background.schedule","offline.replica"]},ni=(function n(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var i,o,s;if(Array.isArray(e)){if(i=e.length,i!=t.length)return!1;for(o=i;o--!==0;)if(!n(e[o],t[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(s=Object.keys(e),i=s.length,i!==Object.keys(t).length)return!1;for(o=i;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,s[o]))return!1;for(o=i;o--!==0;){var r=s[o];if(!n(e[r],t[r]))return!1}return!0}return e!==e&&t!==t});ol.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Ix={type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},jx=new RegExp("^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$","u");sl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Bh=new RegExp("^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$","u");al.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};kl=new RegExp("^[a-z0-9]+(?:[._-][a-z0-9]+)*$","u"),Fh=new RegExp("^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$","u"),ll=new RegExp("^sha256:[0-9a-f]{64}$","u");Si.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};cl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};pl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Ux=new RegExp("^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$","u"),Cx={type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},upgrade_from:{oneOf:[{$ref:"#/$defs/typePackUpgradeBaseline"},{type:"array",minItems:1,items:{$ref:"#/$defs/typePackUpgradeBaseline"}}]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}};dl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};ul.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};fl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Dh=new RegExp("^[0-9]+(ms|s|m|h|d)$","u");hl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};$h.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Nx=zh,Ox={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://mdbase.dev/connect/schemas/mdbase-app.legacy-v1.json",title:"mdbase connect bundled application manifest v1",type:"object",additionalProperties:!1,required:["manifest_version","id","name"],properties:{manifest_version:{const:1},distribution:{enum:["web","portable"],description:"Portable declarations use device authorization and do not claim a browser origin."},id:{type:"string",minLength:5,maxLength:150,pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$",description:"Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication."},name:{type:"string",minLength:1,maxLength:100},platform:{const:"native",description:"Unverified native app; permits literal IPv4 loopback HTTP on any port."},homepage:{type:"string",format:"uri",pattern:"^https://"},project_url:{type:"string",format:"uri",pattern:"^https://"},icon:{type:"string",format:"uri",pattern:"^https://"},redirect_uris:{type:"array",minItems:1,maxItems:10,uniqueItems:!0,items:{type:"string",format:"uri",description:"An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID."}},installation_origins:{type:"object",additionalProperties:!1,properties:{lab:{$ref:"#/$defs/installationOriginPolicy"},staging:{$ref:"#/$defs/installationOriginPolicy"},production:{$ref:"#/$defs/installationOriginPolicy"}}},requirements:{$ref:"#/$defs/requirements"},provisions:{type:"object",additionalProperties:!1,required:["type_packs"],properties:{configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationProvision"}},type_packs:{type:"array",maxItems:20,items:{$ref:"#/$defs/typePackProvision"}}}},notifications:{type:"object",additionalProperties:!1,required:["criteria"],properties:{criteria:{type:"array",maxItems:50,items:{$ref:"#/$defs/notificationCriterion"}},native_delivery:{$ref:"#/$defs/nativeNotificationDelivery"}}}},oneOf:[{required:["homepage","redirect_uris"],properties:{distribution:{const:"web"},homepage:!0,redirect_uris:!0,project_url:!1}},{required:["distribution"],properties:{distribution:{const:"portable"},platform:!1,homepage:!1,redirect_uris:!1}}],$defs:{installationOriginPolicy:{type:"object",additionalProperties:!1,properties:{"app-runtime":{$ref:"#/$defs/installationOrigins"},mobile:{$ref:"#/$defs/installationOrigins"}}},installationOrigins:{type:"array",maxItems:16,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:255,format:"uri"}},identifier:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},duration:{type:"string",pattern:"^[0-9]+(ms|s|m|h|d)$"},contract:{type:"object",additionalProperties:!1,required:["id","version","digest"],properties:{id:{$ref:"#/$defs/identifier"},version:{type:"string",pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},requirements:{type:"object",additionalProperties:!1,required:["access","contracts"],properties:{capabilities:{$ref:"#/$defs/capabilityRequirements"},access:{const:"full_collection",description:"Compatibility declaration for collection-level application authorization."},collection_kind:{const:"hosted",description:"Require a durable provider-backed collection with direct sync support."},files:{$ref:"#/$defs/fileRequirement"},configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationRequirement"}},contracts:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},capabilityRequirements:{type:"object",additionalProperties:!1,required:["contract_version","required"],properties:{contract_version:{const:1},required:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}},optional:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}}}},configurationValue:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},configurationRequirement:{type:"object",additionalProperties:!1,required:["id","path","predicate","value"],properties:{id:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},path:{type:"string",minLength:1,maxLength:1024},predicate:{const:"contains"},value:{$ref:"#/$defs/configurationValue"}}},configurationProvision:{type:"object",additionalProperties:!1,required:["requirement","operation","path","value"],properties:{requirement:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},operation:{const:"set_add"},path:{type:"string",minLength:1,maxLength:1024},value:{$ref:"#/$defs/configurationValue"}}},applicationCapability:{enum:["collection.inspect","records.watch","records.read","records.query","records.validate","records.create","records.update","records.delete","records.rename","views.list","views.execute","views.source.read","views.source.create","views.source.update","views.source.delete","definitions.contracts.current","definitions.read","definitions.create","definitions.update","definitions.type-pack.inspect","definitions.type-pack.apply","collection.setup.apply","timers.list","timers.put","timers.cancel","timers.reconcile","sync.offline-replica","notifications.background-delivery","files.list","files.read","files.add","files.replace","files.move","files.delete"]},fileRequirement:{type:"object",additionalProperties:!1,required:["actions","scope"],properties:{actions:{type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},scope:{$ref:"#/$defs/fileScope"}}},fileScope:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","folders"],properties:{kind:{const:"selected_folders"},folders:{type:"array",minItems:1,maxItems:100,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:1024,pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"}}}},{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{const:"collection"}}}]},typePackProvision:{type:"object",additionalProperties:!1,required:["manifest","resources","provides"],properties:{manifest:{$ref:"#/$defs/typePackManifest"},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackSourceResource"}},provides:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},typePackManifest:{type:"object",required:["kind","id","version","resources"],properties:{kind:{const:"mdbase.type-pack"},id:{$ref:"#/$defs/identifier"},version:{$ref:"#/$defs/contract/properties/version"},name:{type:"string",minLength:1,maxLength:100},description:{type:"string",maxLength:500},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackManifestResource"}}},patternProperties:{"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$":!0},additionalProperties:!1},typePackManifestResource:{type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},typePackSourceResource:{type:"object",additionalProperties:!1,required:["source","document"],properties:{source:{type:"string",minLength:1,maxLength:240},document:{type:"string",maxLength:262144}}},notificationCriterion:{type:"object",additionalProperties:!1,required:["id","event","presentation"],properties:{id:{$ref:"#/$defs/identifier"},event:{$ref:"#/$defs/contract"},if:{type:"object",additionalProperties:!1,required:["$expr"],properties:{$expr:{type:"string",minLength:1,maxLength:4096}}},debounce:{$ref:"#/$defs/duration"},minimum_interval:{$ref:"#/$defs/duration"},presentation:{type:"object",additionalProperties:!1,required:["title"],properties:{title:{type:"string",minLength:1,maxLength:80},body:{type:"string",maxLength:160},tag:{type:"string",minLength:1,maxLength:80}}}}},nativeNotificationDelivery:{oneOf:[{type:"object",additionalProperties:!1,required:["mode","firebase_project_id"],properties:{mode:{const:"managed_fcm"},firebase_project_id:{type:"string",minLength:6,maxLength:63,pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"}}},{type:"object",additionalProperties:!1,required:["mode","url"],properties:{mode:{const:"webhook"},url:{type:"string",format:"uri",pattern:"^https://"}}}]}}};ki.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Rx={enum:["collection.inspect","records.watch","records.read","records.query","records.validate","records.create","records.update","records.delete","records.rename","views.list","views.execute","views.source.read","views.source.create","views.source.update","views.source.delete","definitions.contracts.current","definitions.read","definitions.create","definitions.update","definitions.type-pack.inspect","definitions.type-pack.apply","collection.setup.apply","timers.list","timers.put","timers.cancel","timers.reconcile","sync.offline-replica","notifications.background-delivery","files.list","files.read","files.add","files.replace","files.move","files.delete"]};ml.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Zq={type:"object",additionalProperties:!1,required:["actions","scope"],properties:{actions:{type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},scope:{$ref:"#/$defs/fileScope"}}};yl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};gl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Pi.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};bl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};wl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Ex={type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}};vl.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};_l.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Al.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};zh.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1}});var $x,zx,Vh=C(()=>{$x="/settings/record_extensions",zx="yaml-document-records-v1"});function Sv(n,e){let t=n===1?eT:n===2?Qq:void 0;if(!(!t||!Object.hasOwn(t,e)))return[...t[e]]}var Qq,Bx,eT,lK,Pv,Kh=C(()=>{Qq={"collection.read":["describe","changes","read","query","list_views","execute_view","read_view_source","validate","read_type"],"records.create":["create"],"records.edit":["update","rename"],"records.delete":["delete"],"views.manage":["create_view_source","update_view_source","delete_view_source"],"definitions.manage":["create_type","update_type","assess_type_pack","apply_type_pack"],"background.schedule":["list_timers","put_timer","cancel_timer","reconcile_timers"],"offline.replica":["sync"]},Bx=["assess_collection_setup","apply_collection_setup"],eT=Object.freeze({"collection.inspect":Object.freeze(["describe"]),"records.watch":Object.freeze(["changes"]),"records.read":Object.freeze(["read"]),"records.query":Object.freeze(["query"]),"records.validate":Object.freeze(["validate"]),"records.create":Object.freeze(["create"]),"records.update":Object.freeze(["update"]),"records.delete":Object.freeze(["delete"]),"records.rename":Object.freeze(["rename"]),"views.list":Object.freeze(["list_views"]),"views.execute":Object.freeze(["execute_view"]),"views.source.read":Object.freeze(["read_view_source"]),"views.source.create":Object.freeze(["create_view_source"]),"views.source.update":Object.freeze(["update_view_source"]),"views.source.delete":Object.freeze(["delete_view_source"]),"definitions.contracts.current":Object.freeze([]),"definitions.read":Object.freeze(["read_type"]),"definitions.create":Object.freeze(["create_type"]),"definitions.update":Object.freeze(["update_type"]),"definitions.type-pack.inspect":Object.freeze(["assess_type_pack"]),"definitions.type-pack.apply":Object.freeze(["assess_type_pack","apply_type_pack"]),"collection.setup.apply":Object.freeze(["assess_collection_setup","apply_collection_setup"]),"timers.list":Object.freeze(["list_timers"]),"timers.put":Object.freeze(["put_timer"]),"timers.cancel":Object.freeze(["cancel_timer"]),"timers.reconcile":Object.freeze(["reconcile_timers"]),"sync.offline-replica":Object.freeze(["sync"]),"notifications.background-delivery":Object.freeze([]),"files.list":Object.freeze([]),"files.read":Object.freeze([]),"files.add":Object.freeze([]),"files.replace":Object.freeze([]),"files.move":Object.freeze([]),"files.delete":Object.freeze([])});lK=Object.freeze([1,2]),Pv=Object.freeze(["application-authorization-v2-issuance"])});var Fx=C(()=>{});var Vx,xv=C(()=>{Vx={access_denied:{category:"authorization",recovery:"reauthorize"},access_paused:{category:"availability",recovery:"resume_connector_access"},application_authorization_issuance_disabled:{category:"authorization",recovery:"reauthorize"},application_declaration_mismatch:{category:"authorization",recovery:"reauthorize"},application_identity_unavailable:{category:"compatibility",recovery:"upgrade_application"},application_reauthorization_required:{category:"authorization",recovery:"reauthorize"},application_semantic_version_mismatch:{category:"authorization",recovery:"reauthorize"},approval_window_blocked:{category:"authorization",recovery:"reauthorize"},authority_authorization_changed:{category:"authorization",recovery:"reauthorize"},authorization_binding_incompatible:{category:"compatibility",recovery:"upgrade_application"},authorization_cancelled:{category:"cancellation",recovery:"none"},authorization_expired:{category:"authorization",recovery:"reauthorize"},authorization_replayed:{category:"integrity",recovery:"reauthorize"},browser_required:{category:"compatibility",recovery:"none"},callback_url_required:{category:"validation",recovery:"fix_request"},capability_contract_incompatible:{category:"compatibility",recovery:"upgrade_application"},change_cursor_reset:{category:"conflict",recovery:"refresh"},collection_access_denied:{category:"authorization",recovery:"reauthorize"},collection_claimed_by_newer_runtime:{category:"compatibility",recovery:"upgrade_connector"},collection_configuration_invalid:{category:"validation",recovery:"repair_collection"},collection_contracts_missing:{category:"compatibility",recovery:"choose_collection"},collection_incompatible:{category:"compatibility",recovery:"choose_collection"},collection_invalid:{category:"validation",recovery:"repair_collection"},collection_kind_unsupported:{category:"compatibility",recovery:"choose_collection"},collection_mismatch:{category:"selection",recovery:"choose_collection"},collection_not_found:{category:"selection",recovery:"choose_collection"},collection_not_ready:{category:"selection",recovery:"choose_collection"},collection_not_selected:{category:"selection",recovery:"choose_collection"},collection_type_registry_invalid:{category:"validation",recovery:"repair_collection"},collection_unavailable:{category:"availability",recovery:"choose_collection"},collection_version_unsupported:{category:"compatibility",recovery:"upgrade_collection"},concurrent_modification:{category:"conflict",recovery:"refresh"},connector_busy:{category:"availability",recovery:"retry"},connector_identity_changed:{category:"integrity",recovery:"reauthorize"},connector_offline:{category:"availability",recovery:"retry"},connector_upgrade_required:{category:"compatibility",recovery:"upgrade_connector"},cursor_capacity_exhausted:{category:"availability",recovery:"retry"},device_authorization_failed:{category:"authorization",recovery:"reauthorize"},direct_operation_rejected:{category:"authorization",recovery:"reauthorize"},discovery_failed:{category:"availability",recovery:"retry"},durable_mutation_unsupported:{category:"compatibility",recovery:"upgrade_connector"},encrypted_relay_rejected:{category:"authorization",recovery:"reauthorize"},encryption_required:{category:"authorization",recovery:"reauthorize"},expired_token:{category:"authorization",recovery:"reauthorize"},file_changed_during_move:{category:"conflict",recovery:"refresh"},file_changed_during_read:{category:"conflict",recovery:"refresh"},file_index_warming:{category:"availability",recovery:"retry"},file_list_changed:{category:"conflict",recovery:"refresh"},file_move_failed:{category:"internal",recovery:"contact_support"},file_mutation_conflict:{category:"conflict",recovery:"resolve_conflict"},file_not_found:{category:"conflict",recovery:"refresh"},file_source_mismatch:{category:"conflict",recovery:"refresh"},file_upload_incomplete:{category:"conflict",recovery:"retry"},fresh_request_required:{category:"availability",recovery:"retry"},generation_expired:{category:"conflict",recovery:"refresh"},hosted_provider_unavailable:{category:"availability",recovery:"retry"},insufficient_access:{category:"authorization",recovery:"reauthorize"},invalid_application_authorization:{category:"validation",recovery:"fix_request"},invalid_application_manifest:{category:"validation",recovery:"fix_request"},invalid_callback:{category:"validation",recovery:"fix_request"},invalid_device_authorization_response:{category:"integrity",recovery:"contact_support"},invalid_encrypted_response:{category:"integrity",recovery:"contact_support"},invalid_loopback_url:{category:"validation",recovery:"fix_request"},invalid_mutation_id:{category:"validation",recovery:"fix_request"},invalid_operation_response:{category:"integrity",recovery:"contact_support"},invalid_path:{category:"validation",recovery:"fix_request"},invalid_preflight:{category:"conflict",recovery:"refresh"},invalid_push_payload:{category:"validation",recovery:"fix_request"},invalid_push_subscription:{category:"validation",recovery:"fix_request"},invalid_read_cursor:{category:"validation",recovery:"fix_request"},invalid_replica:{category:"authorization",recovery:"reauthorize"},invalid_request:{category:"validation",recovery:"fix_request"},invalid_token_response:{category:"integrity",recovery:"contact_support"},legacy_scope_reauthorization_required:{category:"authorization",recovery:"reauthorize"},managed_fcm_not_declared:{category:"compatibility",recovery:"fix_request"},manifest_load_failed:{category:"availability",recovery:"retry"},manifest_required:{category:"validation",recovery:"fix_request"},missing_grant_key:{category:"authorization",recovery:"reauthorize"},mutation_recovery_expired:{category:"compatibility",recovery:"none"},mutation_request_conflict:{category:"conflict",recovery:"resolve_conflict"},no_pending_mutation:{category:"conflict",recovery:"refresh"},not_authorized:{category:"authorization",recovery:"reauthorize"},not_remote_authority:{category:"compatibility",recovery:"choose_collection"},notification_criterion_not_declared:{category:"validation",recovery:"fix_request"},notification_grant_reauthorization_required:{category:"authorization",recovery:"reauthorize"},notification_reauthorization_required:{category:"authorization",recovery:"reauthorize"},notification_registration_failed:{category:"availability",recovery:"retry"},notification_unregistration_failed:{category:"availability",recovery:"retry"},notifications_not_declared:{category:"compatibility",recovery:"fix_request"},notifications_unavailable:{category:"availability",recovery:"retry"},operation_cancelled:{category:"cancellation",recovery:"none"},operation_failed:{category:"internal",recovery:"contact_support"},operation_invalid:{category:"validation",recovery:"fix_request"},operation_outcome_unknown:{category:"conflict",recovery:"resolve_outcome"},origin_denied:{category:"authorization",recovery:"reauthorize"},path_occupied:{category:"conflict",recovery:"resolve_conflict"},pending_mutation_unresolved:{category:"conflict",recovery:"resolve_outcome"},query_snapshot_changed:{category:"conflict",recovery:"refresh"},rate_limited:{category:"availability",recovery:"retry"},reconnect_required:{category:"authorization",recovery:"reauthorize"},redirect_uri_required:{category:"validation",recovery:"fix_request"},reference_updates_unsupported:{category:"compatibility",recovery:"fix_request"},registry_backup_invalid:{category:"integrity",recovery:"contact_support"},registry_busy:{category:"availability",recovery:"retry"},registry_corrupt:{category:"integrity",recovery:"repair_collection"},registry_migration_failed:{category:"internal",recovery:"contact_support"},registry_schema_incompatible:{category:"compatibility",recovery:"upgrade_connector"},relay_authorization_expired:{category:"authorization",recovery:"reauthorize"},relay_unavailable:{category:"availability",recovery:"retry"},replica_scope_denied:{category:"authorization",recovery:"reauthorize"},sandbox_unsupported:{category:"compatibility",recovery:"fix_request"},scope_changed:{category:"authorization",recovery:"reauthorize"},scope_denied:{category:"authorization",recovery:"reauthorize"},scope_epoch_stale:{category:"authorization",recovery:"reauthorize"},session_destroyed:{category:"cancellation",recovery:"none"},session_not_started:{category:"validation",recovery:"fix_request"},session_starting:{category:"availability",recovery:"retry"},stale_file_revision:{category:"conflict",recovery:"refresh"},storage_required:{category:"compatibility",recovery:"none"},sync_failed:{category:"availability",recovery:"retry"},temporarily_unavailable:{category:"availability",recovery:"retry"},timeout:{category:"availability",recovery:"retry"},timer_grant_unavailable:{category:"authorization",recovery:"reauthorize"},token_exchange_failed:{category:"availability",recovery:"retry"},transport_protocol_incompatible:{category:"compatibility",recovery:"upgrade_connector"},type_pack_provision_failed:{category:"validation",recovery:"repair_collection"},unknown_collection:{category:"selection",recovery:"choose_collection"},unsafe_file_path:{category:"validation",recovery:"fix_request"},unsupported_encryption:{category:"compatibility",recovery:"upgrade_application"},unsupported_operation:{category:"compatibility",recovery:"fix_request"}}});function nT(n,e,...[t={}]){let i=Vx[n];return{problem_version:1,code:n,category:i.category,recovery:i.recovery,message:e,...t.details===void 0?{}:{details:t.details},...t.operationOutcome===void 0?{}:{operation_outcome:t.operationOutcome},...t.traceId===void 0?{}:{trace_id:t.traceId}}}function Kx(n,e,...t){let i=t[0];return new Iv(nT(n,e,...t),{status:i?.status,cause:i?.cause})}var Iv,Wx=C(()=>{xv();Iv=class extends Error{problem;code;status;constructor(e,t={}){super(e.message,t.cause===void 0?void 0:{cause:t.cause}),this.problem=e,this.name="MdbaseConnectError",this.code=e.code,this.status=t.status}get retryable(){return this.problem.recovery==="retry"&&this.problem.operation_outcome!=="unknown"}get requiresAuthorization(){return this.problem.category==="authorization"}get outcomeUnknown(){return this.problem.operation_outcome==="unknown"}get recovery(){return this.problem.recovery}get details(){return this.problem.details}}});function Hx(n,e={}){return{actions:[...new Set([...n.required,...e.includeOptional===!1?[]:n.optional??[]])],scope:structuredClone(n.scope)}}var hK,mK,Cv=C(()=>{hK=new Uint8Array([77,68,66,70]),mK=new Uint8Array([77,68,66,82])});function Zr(n){let e=n.capabilities===void 0?1:n.capabilities?.contract_version;return e!==1&&e!==2&&Sl("Unsupported declared capability contract version."),e}function Sl(n){throw Kx("invalid_application_manifest",n,{details:{issues:[{path:"/requirements/capabilities",keyword:"authorizationSelection",message:n,params:{}}]}})}function Yx(n,e){if(e.operations!==void 0&&e.capabilities!==void 0&&Sl("Specify operations or capabilities, not both."),e.operations!==void 0&&Zr(n)!==1&&Sl("Exact operations authorization is only supported for legacy v1 declarations."),e.capabilities!==void 0){let t=new Set([...n.capabilities?.required??[],...n.capabilities?.optional??[]]);e.capabilities.some(i=>!t.has(i)||Sv(Zr(n),i)===void 0)&&Sl("Authorization can only include capabilities declared by the application.")}}function Ov(n,e){let{requirements:t}=n;if(Yx(t,e),Zr(t)===1){if(e.operations!==void 0)return[...new Set(e.operations)];if(e.capabilities===void 0)return[...Gx]}let i=t.capabilities,s=[...i?.required??[],...e.capabilities??i?.optional??[]].flatMap(a=>Sv(Zr(t),a)??[]),r=(n.provisions?.type_packs.length??0)>0||(n.provisions?.configuration?.length??0)>0;return[...new Set([...s,...Zr(t)===2&&r?Bx:[]])]}function Rv(n){let e=n.files;if(e)return Zr(n)===1?((!("actions"in e)||"required"in e||"optional"in e)&&Sl("Legacy file declarations must use exact files.actions."),{actions:[...e.actions],scope:structuredClone(e.scope)}):("actions"in e&&Sl("V2 file declarations must use required/optional file actions."),Hx(e))}var Gx,Jx=C(()=>{Kh();Cv();Wx();Gx=["describe","changes","read","query"]});function lT(n,e){let t=cT(e)?e:{};if(t.dry_run===!0&&aT.has(n))return null;if(n==="file_control"){let o=typeof t.type=="string"?t.type:"";return sT.has(o)?`file_control:${o}`:null}let i=oT[n];return i==="always"?n:i==="sync_action"&&t.action==="mutate"?"sync:mutate":null}function Wh(n,e){return lT(n,e)!==null}function cT(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}var iT,rT,oT,sT,aT,_K,AK,Hh=C(()=>{iT=["describe","changes","read","query","list_views","execute_view","read_view_source","create_view_source","update_view_source","delete_view_source","validate","create","update","delete","rename","read_type","create_type","update_type","assess_type_pack","apply_type_pack","assess_collection_setup","apply_collection_setup","list_timers","put_timer","cancel_timer","reconcile_timers","sync"],rT=["list_files","stat_file","open_file_upload","open_file_download","move_file","delete_file","get_file_transfer_status","commit_file_upload","abort_file_transfer"],oT={describe:"never",changes:"never",read:"never",query:"never",list_views:"never",execute_view:"never",read_view_source:"never",create_view_source:"always",update_view_source:"always",delete_view_source:"always",validate:"never",create:"always",update:"always",delete:"always",rename:"always",read_type:"never",create_type:"always",update_type:"always",assess_type_pack:"never",apply_type_pack:"always",assess_collection_setup:"never",apply_collection_setup:"always",list_timers:"never",put_timer:"always",cancel_timer:"always",reconcile_timers:"always",sync:"sync_action"},sT=new Set(["open_file_upload","move_file","delete_file","commit_file_upload","abort_file_transfer"]),aT=new Set(["delete","rename"]),_K=new Set(iT),AK=new Set(rT)});var Xx=C(()=>{});var PK,Zx=C(()=>{PK=new TextEncoder});function tI(n,e,t=[],i=2){let o={operation_transport:Xp,authorization_binding:Qr,semantic_capabilities:i},s=[...new Set(t)].filter(r=>r!==Xp).sort((r,a)=>a-r);return s.length>0&&(o.operation_transport_recovery=s),(n.some(r=>Wh(r,{action:"mutate"}))||e?.actions.some(r=>r!=="list"&&r!=="read")===!0)&&(o.durable_mutation=1),o}function Mv(n){return Qx.includes(n)}function nI(n){return eI.includes(n)}var Xp,dT,Qx,Qr,Ev,eI,uT,fT,CK,Gh=C(()=>{Hh();Xp=3,dT=2,Qx=[Xp,dT],Qr=5,Ev=4,eI=[Qr,Ev],uT=2,fT=1,CK={operation_transport:[...Qx],authorization_binding:[...eI],semantic_capabilities:[uT,1],durable_mutation:[fT]}});async function rI(n){let e=Yh(n),i=new Uint8Array(await crypto.subtle.digest("SHA-256",js([hT,Kt(e)]))).slice(0,16);return i[6]=i[6]&15|128,i[8]=i[8]&63|128,[Zp(i.slice(0,4)),Zp(i.slice(4,6)),Zp(i.slice(6,8)),Zp(i.slice(8,10)),Zp(i.slice(10,16))].join("-")}function oI(n){let e=[Yh(n.installation_signing_public_key),Yh(n.grant_agreement_public_key),Yh(n.grant_signing_public_key)];if(e.some((c,l)=>e.slice(l+1).some(p=>AT(c,p))))throw new Error("Application authorization keys must be distinct.");let t=qv(n.authorization_nonce),i=qv(n.code_challenge),o=n.contracts,s=o.operation_transport_recovery??[],r=n.requested_operations.some(c=>Wh(c,{action:"mutate"}))||n.requested_files?.actions.some(c=>!["list","read"].includes(c))===!0;if(!nI(n.protocol_version)||t.byteLength!==32||!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/u.test(n.application_declaration_id)||!/^[0-9a-f]{64}$/u.test(n.application_manifest_digest)||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/u.test(n.issued_at)||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/u.test(n.expires_at)||i.byteLength!==32||![o.operation_transport,o.authorization_binding,o.semantic_capabilities,o.durable_mutation??1].every(c=>Number.isInteger(c)&&c>0)||o.authorization_binding!==n.protocol_version||!Mv(o.operation_transport)||n.protocol_version===Qr&&o.operation_transport!==Xp||s.some(c=>!Mv(c)||c===o.operation_transport)||new Set(s).size!==s.length||n.protocol_version===Ev&&s.length>0||s.length>0&&!r||(r?o.durable_mutation!==1:o.durable_mutation!==void 0)||n.requested_operations.length===0&&n.requested_files===void 0||new Set(n.requested_operations).size!==n.requested_operations.length||n.requested_operations.some(c=>!c||c.includes("\0"))||(n.flow==="authorization_code"?n.redirect_uri===void 0||n.state===void 0:n.flow!=="device_code"||n.redirect_uri!==void 0||n.state!==void 0))throw new Error("Application authorization binding is invalid.");bT(n.requested_files);let a=n.requested_operations.map(c=>Kt(new TextEncoder().encode(c)));return js([n.protocol_version===Qr?yT:mT,Hi(n.protocol_version),Kt(Jh(n.application_id)),Kt(Jh(n.authorization_id)),Kt(new TextEncoder().encode(n.application_declaration_id)),Kt(sI(n.application_manifest_digest)),Kt(Jh(n.application_installation_id)),...e.map(Kt),Kt(new TextEncoder().encode(n.flow)),Kt(t),Kt(new TextEncoder().encode(n.issued_at)),Kt(new TextEncoder().encode(n.expires_at)),iI(n.redirect_uri),iI(n.state),Kt(new TextEncoder().encode(n.code_challenge)),Hi(o.operation_transport),...n.protocol_version===Qr?[Hi(s.length),...s.map(Hi)]:[],Hi(o.authorization_binding),Hi(o.semantic_capabilities),gT(o.durable_mutation),Hi(a.length),...a,wT(n.requested_files),vT(n.collection_id)])}function gT(n){return n===void 0?new Uint8Array(1):js([new Uint8Array([1]),Hi(n)])}function bT(n){if(n!==void 0&&(n.actions.length===0||new Set(n.actions).size!==n.actions.length||n.scope.kind==="selected_folders"&&(n.scope.folders.length===0||new Set(n.scope.folders).size!==n.scope.folders.length||n.scope.folders.some(e=>!e||e.includes("\0")))))throw new Error("Application authorization file request is invalid.")}function wT(n){if(n===void 0)return new Uint8Array(1);let e=n.actions.map(t=>Kt(new TextEncoder().encode(t)));return js([new Uint8Array([1]),Hi(e.length),...e,Kt(new TextEncoder().encode(n.scope.kind)),...n.scope.kind==="selected_folders"?[Hi(n.scope.folders.length),...n.scope.folders.map(t=>Kt(new TextEncoder().encode(t)))]:[]])}function iI(n){return n===void 0?new Uint8Array(1):js([new Uint8Array([1]),Kt(new TextEncoder().encode(n))])}function vT(n){return n===void 0?new Uint8Array(1):js([new Uint8Array([1]),Kt(Jh(n))])}function Yh(n){let e=qv(n);if(e.byteLength!==65||e[0]!==4)throw new Error("Application authorization public key is invalid.");return e}function qv(n){if(!/^[A-Za-z0-9_-]+$/u.test(n))throw new Error("Invalid base64url value.");let e=n.replaceAll("-","+").replaceAll("_","/"),t=e.padEnd(Math.ceil(e.length/4)*4,"="),i=Uint8Array.from(atob(t),o=>o.charCodeAt(0));if(_T(i)!==n)throw new Error("Non-canonical base64url value.");return i}function Jh(n){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu.test(n))throw new Error("Invalid UUID value.");let e=n.replaceAll("-","");return sI(e)}function sI(n){if(!/^[0-9a-f]+$/u.test(n)||n.length%2!==0)throw new Error("Invalid hexadecimal value.");return Uint8Array.from({length:n.length/2},(e,t)=>Number.parseInt(n.slice(t*2,t*2+2),16))}function Kt(n){return js([Hi(n.byteLength),n])}function Hi(n){let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,n,!1),e}function js(n){let e=new Uint8Array(n.reduce((i,o)=>i+o.byteLength,0)),t=0;for(let i of n)e.set(i,t),t+=i.byteLength;return e}function _T(n){return btoa(String.fromCharCode(...n)).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")}function AT(n,e){return n.byteLength===e.byteLength&&n.every((t,i)=>t===e[i])}function Zp(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")}var hT,mT,yT,aI=C(()=>{Hh();Gh();hT=new TextEncoder().encode("mdbase-connect application installation id v2\0"),mT=new TextEncoder().encode("mdbase-connect application authorization proof v4\0"),yT=new TextEncoder().encode("mdbase-connect application authorization proof v5\0")});var Xh,lI=C(()=>{Xh={id:"mdbase.runtime.timer.fired",version:"1.0.0",digest:"sha256:41105be7a7abf33b31ced47e1e1965242236e40ccaea286b959b0a8c591f5642"}});function pI(n,e){let t=n.protocol.slice(0,-1),i=e?.toLowerCase().split(".").reverse().join(".");return t.includes(".")&&/^[a-z][a-z0-9+.-]*$/.test(t)&&!["http","https","file","javascript","data"].includes(t)&&(!i||t===i||t.startsWith(`${i}.`))&&n.username===""&&n.password===""&&n.hostname.length>0&&n.hash===""}var kT,ST,PT,xT,IT,CT,OT,NK,RT,DK,Tv,cI,Qp,ed=C(()=>{Kh();Fx();Vh();xv();Jx();Cv();Hh();Xx();Zx();Gh();Kh();aI();lI();Vh();Gh();kT="contract-setup-v1",ST="file-relay-v1",PT="protocol-usage-report-v1",xT="policy-freshness-lease-v1",IT=["application-authorization-v4","authorization-activation","encrypted-relay","policy-ack"],CT=["durable-mutation-journal-v1","durable-file-lifecycle-v1","contract-metadata-read-v1"],OT="candidate-b-activation-v1",NK=[...Pv,...CT,"mutation-replay-after-credential-retirement-v1",OT],RT="application-declaration-evidence-v1",DK=[...Pv,RT,...IT,xT,"application-authorization-v5",kT,ST,PT,zx],Tv=1,cI="mdbase-authority-request-proof-v1",Qp={version:"x-mdbase-proof-version",timestamp:"x-mdbase-proof-timestamp",nonce:"x-mdbase-proof-nonce",signature:"x-mdbase-proof-signature"}});function qT(n,e={}){return TT(n,e,!0)}function mI(n){let e=Le(Le(n).requirements);return e.capabilities===void 0?1:Le(e.capabilities).contract_version}function TT(n,e,t){let i=NT(n,e.maxBytes??em);if(i)return Qh([i]);let o=t?mI(n):2;if(o!==1&&o!==2)return Qh([fe("/requirements/capabilities/contract_version","contractVersion","must declare supported contract version 1 or 2")]);let s=Le(n).platform==="native",r=e.allowLocal||s?GT(n,!e.allowLocal):n,a=jT(o===1?MT:ET,r);if(!a.valid)return a;let c=[...DT(n,e.allowLocal===!0),...o===1?HT(n):WT(n),...zT(n),...VT(n)];return c.length===0?{valid:!0,issues:[]}:Qh(c)}function td(n,e={}){let t=qT(n,e);if(!t.valid)throw new jv(t.issues);return mI(n)===1?{contractVersion:1,manifest:dI(n)}:{contractVersion:2,manifest:dI(n)}}function dI(n){let e=structuredClone(n);return{...e,requirements:{configuration:[],...e.requirements},provisions:{type_packs:[],configuration:[],...e.provisions},notifications:e.notifications??{criteria:[]}}}function LT(n){return n.map(e=>`${e.path||"/"} ${e.message}`).join("; ")}function jT(n,e){if(n(e))return{valid:!0,issues:[]};let t=(n.errors??[]).map(UT),i=t.filter(o=>o.keyword!=="oneOf");return Qh(i.length>0?i:t)}function UT(n){let e=n.params;return n.keyword==="required"&&typeof e.missingProperty=="string"?{path:Uv(n.instancePath,e.missingProperty),keyword:n.keyword,message:"is required",params:e}:n.keyword==="additionalProperties"&&typeof e.additionalProperty=="string"?{path:Uv(n.instancePath,e.additionalProperty),keyword:n.keyword,message:"is not allowed",params:e}:{path:n.instancePath,keyword:n.keyword,message:n.message??"is invalid",params:e}}function Uv(n,e){let t=e.replaceAll("~","~0").replaceAll("/","~1");return`${n}/${t}`}function NT(n,e){let t=yI(n,"",new WeakSet);if(t)return t;try{let i=JSON.stringify(n),o=new TextEncoder().encode(i).byteLength;return o<=e?void 0:fe("/","maxBytes",`must not exceed ${e} UTF-8 bytes`,{maxBytes:e,actualBytes:o})}catch{return fe("/","json","must be serializable as JSON")}}function yI(n,e,t){if(n===null||typeof n=="string"||typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n))return;if(typeof n!="object")return fe(e||"/","json","must be a JSON value");if(t.has(n))return fe(e||"/","json","must not contain circular references");let i=Object.getPrototypeOf(n);if(!Array.isArray(n)&&i!==Object.prototype&&i!==null)return fe(e||"/","json","must be a plain JSON object");t.add(n);let o=Array.isArray(n)?n.map((s,r)=>[String(r),s]):Object.entries(n);for(let[s,r]of o){let a=yI(r,Uv(e,s),t);if(a)return a}t.delete(n)}function DT(n,e){let t=Le(n),i=t.platform==="native";for(let[o,s]of Object.entries(Le(t.installation_origins)))for(let[r,a]of Object.entries(Le(s)))for(let[c,l]of a.entries()){let p=`/installation_origins/${o}/${r}/${c}`;try{if(i&&(r!=="app-runtime"||!Us(l)))return[fe(p,"origin","native applications require canonical IPv4 loopback HTTP app-runtime origins")];let d=new URL(l),u=(Lv(d,o==="lab")||i&&Us(l))&&d.origin===l,f=r==="mobile"&&d.protocol==="capacitor:"&&/^[a-z0-9.-]+$/u.test(d.hostname)&&`${d.protocol}//${d.host}`===l,h=r==="app-runtime"&&/^chrome-extension:\/\/[a-p]{32}$/u.test(l);if(!u&&!f&&!h||l.includes("*")||d.username||d.password||d.search||d.hash)return[fe(p,"origin","must be an exact HTTPS, loopback HTTP, mobile capacitor or Chrome extension origin without wildcards")]}catch{return[fe(p,"origin","must be an exact installation origin")]}}if(t.distribution==="portable"){if(t.project_url===void 0)return t.icon===void 0?[]:[fe("/icon","origin","requires a project_url on the same origin")];try{let o=new URL(String(t.project_url));return o.protocol!=="https:"?[fe("/project_url","protocol","must use HTTPS")]:t.icon!==void 0&&new URL(String(t.icon)).origin!==o.origin?[fe("/icon","origin","must use the project_url origin")]:[]}catch{return[fe("/","url","contains an invalid URL")]}}try{let o=new URL(String(t.homepage));if(i?!Zh(String(t.homepage)):!Lv(o,e))return[fe("/homepage","protocol",i?"native applications require canonical IPv4 loopback HTTP":"must use HTTPS (or loopback HTTP in local mode)")];for(let[s,r]of t.redirect_uris.entries()){if(String(r).includes("*"))return[fe(`/redirect_uris/${s}`,"url","must be an exact URI without wildcards")];let a=new URL(String(r));if(i&&["http:","https:"].includes(a.protocol)&&!Zh(String(r)))return[fe(`/redirect_uris/${s}`,"origin","native HTTP(S) redirects require canonical IPv4 loopback HTTP")];if(a.origin===o.origin&&!Lv(a,e)&&!(i&&Zh(String(r))))return[fe(`/redirect_uris/${s}`,"protocol","must use HTTPS (or loopback HTTP in local mode)")];let c=$T(a,String(t.id));if(a.origin!==o.origin&&!c)return[fe(`/redirect_uris/${s}`,"origin","must use the homepage origin or a private-use scheme matching the application ID")]}return t.icon!==void 0&&new URL(String(t.icon)).origin!==o.origin?[fe("/icon","origin","must use the homepage origin")]:[]}catch{return[fe("/","url","contains an invalid URL")]}}function $T(n,e){let t=n.protocol.slice(0,-1);return pI(n)&&(t===e||t.startsWith(`${e}.`))}function zT(n){let e=Le(n),t=Le(e.requirements),i=Array.isArray(t.contracts)?t.contracts:[],o=new Set(i.map(c=>{let l=Le(c);return`${l.id}@${l.version}`})),s=Le(e.provisions),r=Array.isArray(s.type_packs)?s.type_packs:[],a=[];for(let[c,l]of r.entries()){let p=Le(l),d=Array.isArray(p.provides)?p.provides:[];for(let u of d){let f=Le(u);o.has(`${f.id}@${f.version}`)||a.push(fe(`/provisions/type_packs/${c}/provides`,"contractRequirement","may only contain contracts required by the application"))}a.push(...BT(p,`/provisions/type_packs/${c}`))}return a}function BT(n,e=""){let t=Le(n),i=Le(t.manifest),o=Array.isArray(i.resources)?i.resources.map(Le):[],s=Array.isArray(t.resources)?t.resources.map(Le):[],r=new Map(s.map(c=>[String(c.source),c.document]));if(r.size!==s.length||new Set(o.map(c=>String(c.source))).size!==o.length||o.length!==s.length)return[fe(`${e}/resources`,"resourceSet","must match manifest source paths exactly")];let a=[];for(let[c,l]of o.entries()){let p=`${e}/manifest/resources/${c}`,d=String(l.source),u=r.get(d);if(typeof u!="string"){a.push(fe(`${e}/resources`,"resourceSet",`is missing manifest source ${d}`));continue}gI(u)!==l.digest&&a.push(fe(`${p}/digest`,"digest","does not match the embedded document")),l.upgrade_from!==void 0&&a.push(...FT(l,u,`${p}/upgrade_from`))}return a}function FT(n,e,t){if(n.kind!=="type"||n.mode!=="seed")return[fe(t,"seedUpgrade","is only allowed for seed types")];let i=uI(e),o=Array.isArray(n.upgrade_from),s=(o?n.upgrade_from:[n.upgrade_from]).map(Le),r=new Set,a=[];for(let[c,l]of s.entries()){let p=o?`${t}/${c}`:t,d=String(l.document);l.digest!==gI(d)?a.push(fe(`${p}/digest`,"digest","does not match the baseline document")):r.has(l.digest)?a.push(fe(`${p}/digest`,"uniqueBaseline","duplicates another upgrade baseline")):l.digest===n.digest&&a.push(fe(`${p}/digest`,"seedUpgrade","must not be the resource's own document")),r.add(l.digest);let u=uI(d);!i||!u||u.kind!==i.kind||u.name!==i.name?a.push(fe(`${p}/document`,"seedUpgrade","must be a type document with the same kind and name as the resource")):l.version!==void 0&&u.version!==l.version&&a.push(fe(`${p}/version`,"seedUpgrade","must equal the version the baseline document declares"))}return a}function uI(n){let e=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(n)?.[1];if(e===void 0)return;let t=Av(e,{uniqueKeys:!0});if(!(t.errors.length>0||!ti(t.contents)))return{kind:t.get("kind"),name:t.get("name"),version:t.get("version")}}function gI(n){return`sha256:${ma(Ge(zg(n)))}`}function VT(n){let e=Le(n),t=Le(e.requirements),i=Le(e.provisions),o=Array.isArray(t.configuration)?t.configuration:[],s=Array.isArray(i.configuration)?i.configuration:[],r=[],a=new Map;for(let[p,d]of o.entries()){let u=Le(d),f=String(u.id),h=String(u.path),m=fI(h,u.value);m&&r.push(fe(`/requirements/configuration/${p}/path`,"configurationPointer",m)),a.has(f)?r.push(fe(`/requirements/configuration/${p}/id`,"uniqueRequirement",`duplicates configuration requirement ${f}`)):a.set(f,{path:h,value:u.value,index:p})}let c=new Set,l=new Set;for(let[p,d]of s.entries()){let u=Le(d),f=String(u.requirement),h=String(u.path),m=fI(h,u.value);m&&r.push(fe(`/provisions/configuration/${p}/path`,"configurationPointer",m));let b=a.get(f);if(!b){r.push(fe(`/provisions/configuration/${p}/requirement`,"configurationRequirement",`references unknown configuration requirement ${f}`));continue}c.has(f)&&r.push(fe(`/provisions/configuration/${p}/requirement`,"uniqueProvision",`configuration requirement ${f} may have exactly one provision`)),c.add(f),h!==b.path&&r.push(fe(`/provisions/configuration/${p}/path`,"configurationRequirement",`must equal /requirements/configuration/${b.index}/path`)),JSON.stringify(u.value)!==JSON.stringify(b.value)&&r.push(fe(`/provisions/configuration/${p}/value`,"configurationRequirement",`must equal /requirements/configuration/${b.index}/value`));let w=`${h}\0${JSON.stringify(u.value)}`;l.has(w)&&r.push(fe(`/provisions/configuration/${p}`,"uniqueContribution","duplicates another configuration path and value contribution")),l.add(w)}for(let[p,d]of a)c.has(p)||r.push(fe(`/requirements/configuration/${d.index}`,"configurationProvision",`requires one provision linked by id ${p}`));return r}function fI(n,e){if(n===$x)return KT.includes(e)?void 0:"accepts only the record extensions md and base";if(!n.startsWith("/")||new TextEncoder().encode(n).byteLength>1024)return"must be a bounded RFC 6901 JSON pointer";let t=n.slice(1).split("/");if(t.length<2||t.length>16)return"must address a value below an x-* extension namespace";let i=[];for(let o of t){if(/~(?:[^01]|$)/u.test(o))return"contains an invalid RFC 6901 escape";let s=o.replaceAll("~1","/").replaceAll("~0","~");if(s.length===0||s==="-"||/^\d+$/u.test(s)||[...s].some(r=>/\p{Cc}/u.test(r)))return"contains a disallowed object-key segment";i.push(s)}return/^x-[a-z0-9][a-z0-9-]*$/u.test(i[0])?void 0:"must be inside a top-level x-* extension namespace"}function WT(n){let e=Le(n),t=Le(e.requirements),i=Le(t.capabilities),o=[];t.access!=="full_collection"&&o.push(fe("/requirements/access","collectionAccess","must explicitly request full_collection; legacy or omitted access is not widened"));let s=Array.isArray(i.required)?i.required.map(String):[],a=(Array.isArray(i.optional)?i.optional.map(String):[]).find(b=>s.includes(b));a&&o.push(fe("/requirements/capabilities/optional","disjoint",`must not repeat required capability ${a}`));let c=Le(t.files),l=Array.isArray(c.required)?c.required.map(String):[],d=(Array.isArray(c.optional)?c.optional.map(String):[]).find(b=>l.includes(b));d&&o.push(fe("/requirements/files/optional","disjoint",`must not repeat required file action ${d}`));let u=Le(t.people),f=Array.isArray(u.required)?u.required.map(String):[],m=(Array.isArray(u.optional)?u.optional.map(String):[]).find(b=>f.includes(b));return m&&o.push(fe("/requirements/people/optional","disjoint",`must not repeat required people permission ${m}`)),o}function HT(n){let e=Le(n),t=Le(e.requirements),i=Le(t.capabilities),o=[];if(t.access!=="full_collection"&&o.push(fe("/requirements/access","collectionAccess","must explicitly request full_collection; legacy or omitted access is not widened")),Object.keys(i).length===0)return o;let s=Array.isArray(i.required)?i.required.map(String):[],r=Array.isArray(i.optional)?i.optional.map(String):[],a=r.find(h=>s.includes(h));a&&o.push(fe("/requirements/capabilities/optional","disjoint",`must not repeat required capability ${a}`));let c=new Set([...s,...r]),l=Le(e.provisions);c.has("definitions.type-pack.apply")&&t.access!=="full_collection"&&o.push(fe("/requirements/access","typePackAccess","must be full_collection for definitions.type-pack.apply")),Array.isArray(l.type_packs)&&l.type_packs.length>0&&!s.includes("collection.setup.apply")&&o.push(fe("/requirements/capabilities/required","collectionSetupCapability","must require collection.setup.apply when bundled type packs are declared"));let p=Array.isArray(l.configuration)&&l.configuration.length>0,d=p||Array.isArray(l.type_packs)&&l.type_packs.length>0;p&&!s.includes("collection.setup.apply")&&o.push(fe("/requirements/capabilities/required","collectionSetupCapability","must require collection.setup.apply when configuration provisions are declared")),c.has("collection.setup.apply")&&(t.access!=="full_collection"&&o.push(fe("/requirements/access","collectionSetupAccess","must be full_collection for collection.setup.apply")),d||o.push(fe("/provisions","collectionSetupProvision","must declare a configuration provision or type pack for collection.setup.apply"))),c.has("notifications.background-delivery")&&!Array.isArray(Le(e.notifications).criteria)&&o.push(fe("/notifications/criteria","notificationCapability","must be declared for notifications.background-delivery"));let u=Le(t.files),f=Array.isArray(u.actions)?new Set(u.actions.map(String)):new Set;for(let h of["list","read","add","replace","move","delete"]){let m=`files.${h}`;c.has(m)!==f.has(h)&&o.push(fe("/requirements/capabilities","fileCapability",`${m} and requirements.files.actions.${h} must be declared together`))}return o}function GT(n,e=!1){let t=Le(n);if(t.distribution==="portable")return n;let i={...t};for(let o of["homepage","icon"])typeof i[o]=="string"&&(i[o]=hI(i[o],e));return Array.isArray(i.redirect_uris)&&(i.redirect_uris=i.redirect_uris.map(o=>typeof o=="string"?hI(o,e):o)),i}function hI(n,e){try{let t=new URL(n);return t.protocol==="http:"&&(e?Zh(n):bI(t.hostname))&&(t.protocol="https:"),t.href}catch{return n}}function Us(n){if(typeof n!="string"||!/^http:\/\/127\.0\.0\.1(?::[1-9][0-9]{0,4})?$/.test(n))return!1;try{return new URL(n).origin===n}catch{return!1}}function Zh(n){let e=/^http:\/\/[^/?#]+/.exec(n)?.[0];return Us(e)}function Lv(n,e){return n.protocol==="https:"||e&&n.protocol==="http:"&&bI(n.hostname)}function bI(n){return n==="localhost"||n==="127.0.0.1"||n==="[::1]"||n==="::1"}function Qh(n){return{valid:!1,issues:n}}function fe(n,e,t,i={}){return{path:n,keyword:e,message:t,params:i}}function Le(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{}}var em,jv,ET,MT,KT,nd=C(()=>{ar();sr();kx();Dx();Vh();ed();em=524288,jv=class extends Error{issues;constructor(e){super(`Invalid application manifest: ${LT(e)}`),this.issues=e,this.name="AppManifestValidationError"}},ET=Mx,MT=Nx;KT=["md","base"]});function kr(n){return!1}function zo(n){return n==="lab"||n==="staging"||n==="production"}function Pl(n){return n==="lab"}function Bo(n){try{let e=new URL(n);return e.protocol==="http:"&&e.hostname==="127.0.0.1"&&Number(e.port)>0&&e.origin===n&&!e.username&&!e.password}catch{return!1}}var bt=C(()=>{"use strict";Cf()});function An(n){return n.protocol==="https:"||n.protocol==="http:"?n.origin:`${n.protocol}//${n.host}`}function Nv(n,e){if(typeof n!="string"||n.length>512)return null;let t;try{t=new URL(n)}catch{return null}if(t.username||t.password||t.search||t.hash||!["","/"].includes(t.pathname)||An(t)!==n)return null;switch(t.protocol){case"https:":return"web";case"http:":return e==="native"?Us(n)?"native":null:Ye(n)?"web":null;case"capacitor:":return!t.port&&/^[a-z0-9.-]{1,253}$/.test(t.hostname)?"mobile":null;case"chrome-extension:":return/^[a-p]{32}$/.test(t.host)?"extension":null;case"moz-extension:":return YT.test(t.host)?"extension":null;default:return null}}function xt(){let n=globalThis.location;if(!n)return null;if(typeof n.origin=="string"&&n.origin!=="null")return n.origin;try{return An(new URL(n.href))}catch{return null}}var YT,Et,Bn=C(()=>{"use strict";nd();bt();YT=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;Et=n=>Nv(n)!==null});function vI(n,e){let t=wI.get(n);return(!t||!/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(e.id)||e.id==="00000000-0000-0000-0000-000000000000")&&en(),e.supersededDeclaredId!==void 0&&e.supersededDeclaredId!==n.id&&en(),eo({...n,id:e.id,name:e.name,storage:e.supersededDeclaredId===void 0?t:{...n.storage}})}function en(){throw A("invalid_request","invalid application declaration","application_declaration")}function Dv(n,e=new Set,t=0,i={nodes:0,chars:0}){if((++i.nodes>524288||t>64)&&en(),typeof n=="string")return i.chars+=n.length,i.chars>524288&&en(),n;if(n===null||typeof n=="boolean")return n;if(typeof n=="number")return Number.isFinite(n)||en(),n;(typeof n!="object"||e.has(n)||Object.getOwnPropertySymbols(n).length)&&en(),e.add(n);try{if(Array.isArray(n))return(n.length>524288||Object.keys(n).length!==n.length)&&en(),Object.freeze(Array.from({length:n.length},(s,r)=>{let a=Object.getOwnPropertyDescriptor(n,String(r));return(!a||!("value"in a))&&en(),Dv(a.value,e,t+1,i)}));Object.getPrototypeOf(n)!==Object.prototype&&Object.getPrototypeOf(n)!==null&&en();let o=Object.create(null);for(let s of Object.keys(n)){i.chars+=s.length;let r=Object.getOwnPropertyDescriptor(n,s);(i.chars>524288||!r||!("value"in r))&&en(),o[s]=Dv(r.value,e,t+1,i)}return Object.freeze(o)}finally{e.delete(n)}}function tm(n){return JSON.parse(JSON.stringify(n.manifest))}function eo(n){let e=Dv(n);(!e||Array.isArray(e)||Object.keys(e).some(m=>!["id","name","origin","environment","manifest","storage","installationKind"].includes(m)))&&en();let{id:t,name:i,origin:o,environment:s,manifest:r}=e;(typeof t!="string"||!t||t.length>256||!/^[a-z0-9][a-z0-9._-]*$/.test(t)||t==="00000000-0000-0000-0000-000000000000"||typeof i!="string"||!i.trim()||new TextEncoder().encode(i).length>100||/[\u0000-\u001f\u007f]/.test(i)||typeof o!="string"||typeof s!="string"||!zo(s)||!r||Array.isArray(r)||typeof r!="object")&&en(),kr(s)&&!Bo(o)&&en();let a=Nv(o,r.platform==="native"?"native":void 0),c=e.installationKind??(a==="mobile"?"mobile":"app-runtime");(a===null||c!=="app-runtime"&&c!=="mobile"||a==="mobile"&&c!=="mobile"||(a==="extension"||a==="native")&&c!=="app-runtime")&&en();let l=e.storage;l!==void 0&&(!l||Array.isArray(l)||typeof l!="object"||Object.keys(l).some(m=>!["joinDatabaseName","setupDatabaseName","unsyncedDatabaseName","applicationNamespace"].includes(m)))&&en();let p=l,d=p?.applicationNamespace??t,u=typeof d=="string"&&d!==t?`namespace.${Sw(JSON.stringify([t,d]))}`:t,f={joinDatabaseName:p?.joinDatabaseName??`mdbase.${u}.native-collection-join.v1`,setupDatabaseName:p?.setupDatabaseName??`mdbase.${u}.native-model-setup.v1`,unsyncedDatabaseName:p?.unsyncedDatabaseName??`mdbase.${u}.unsynced.v1`,applicationNamespace:d};for(let m of Object.values(f))(typeof m!="string"||!m||m.length>256||/[\u0000-\u001f\u007f]/.test(m))&&en();new Set([f.joinDatabaseName,f.setupDatabaseName,f.unsyncedDatabaseName]).size!==3&&en();let h=Object.freeze({id:t,name:i,origin:o,environment:s,installationKind:c,manifest:r,storage:Object.freeze(f)});return wI.set(h,Object.freeze({...p})),h}var wI,xl=C(()=>{"use strict";Yf();Bn();ne();bt();wI=new WeakMap});function id(n){if(n!==null&&typeof n=="object"){for(let e of Object.values(n))id(e);Object.freeze(n)}return n}function Fo(n){let e=td(tm(n),{allowLocal:!0}),t=id(e.manifest),i=t.requirements,o=Zr(i),s=id(Ov(t,{})),r=Rv(i),a=id(tI(s,r,void 0,o)),c=i.capabilities,l=c?.contract_version===2?Object.freeze({capabilityContractVersion:2,requiredNativeCapabilities:Object.freeze([...c.required])}):null,p=c?.contract_version===2&&[...c.required,...c.optional??[]].includes("offline.replica");return Object.freeze({contractVersion:e.contractVersion,manifest:t,semanticVersion:o,operations:s,...r?{files:id(r)}:{},contracts:a,nativeCapabilities:l,privateDeviceDeclared:p})}var nm=C(()=>{"use strict";ed();nd();xl()});function AI(n,e){if(typeof n!="string"||!n.length)throw rd();let t=new URL(n),i=e&&Ye(n);if(t.origin!==n||t.username||t.password||t.protocol!=="https:"&&!i)throw rd();return n}function xi(n){let{environment:e,release:t}=n;if(!zo(e)||!t||t.schema!=="mdbn-app-trust/release/1"||t.environment!==e||!/^[0-9a-f]{64}$/.test(t.assetSha256)||!t.source||t.source.repository!=="mdbase-dev/mdbase-connect"||!/^[0-9a-f]{40}$/.test(t.source.commit)||!/^[A-Za-z0-9.+-]{1,64}$/.test(t.source.version)||!Array.isArray(t.trustedRoots)||!t.trustedRoots.length||t.trustedRoots.length>64||t.trustedRoots.some(c=>!(c instanceof Uint8Array)||c.length!==32||c.every(l=>l===0))||!(t.policyPins instanceof Uint8Array)||!t.policyPins.length||t.policyPins.length>65536)throw rd();let i=kr(e),o=AI(t.cpOrigin,i),s=AI(t.logOrigin,i),r=n.appOrigin;if(i&&![o,s,r].every(Bo)||!Et(r))throw rd();let a=Object.freeze({environment:e,appOrigin:r,cpOrigin:o,logOrigin:s,assetSha256:t.assetSha256,allowLoopbackHttp:Pl(e)&&new URL(r).protocol==="http:"});return kI.add(a),a}function SI(n){return!!n&&typeof n=="object"&&kI.has(n)}var kI,rd,Vo=C(()=>{"use strict";Bn();bt();kI=new WeakSet,rd=()=>new Error("app environment: explicit authenticated build context required")});function Ns(){return Object.freeze({...$v,trustedRoots:Object.freeze(XT.map(PI)),policyPins:PI(ZT)})}var $v,XT,ZT,PI,im=C(()=>{$v={schema:"mdbn-app-trust/release/1",environment:"production",cpOrigin:"https://connect.mdbase.dev",logOrigin:"https://log.mdbase.dev",assetSha256:"7912e40838213e60b65848350d319a48019021317b112e3326429b250f0133d7",source:{commit:"36abd4b065be9495a7f5ae0808865a1f2279af04",repository:"mdbase-dev/mdbase-connect",version:"0.1.0-beta.141"}};Object.freeze($v.source);Object.freeze($v);XT=Object.freeze(["d9f6e481aa47ae9e0373c8994fe6edb3131d8ac3cf3cbc1be58672a8543c932d"]),ZT="8281825070a2bd532b5544dfb77617d4040ca6a25820d9f6e481aa47ae9e0373c8994fe6edb3131d8ac3cf3cbc1be58672a8543c932d818350c580fb092af10eb030605bd6e478e6f158206b587b1b32ba84b3d630868fe8e5396339f0c0ed2c59324a67824c1a2028040c5070a2bd532b5544dfb77617d4040ca6a2",PI=n=>{let e=new Uint8Array(n.length/2);for(let t=0;t<e.length;t++)e[t]=parseInt(n.slice(t*2,t*2+2),16);return e}});function Bv(n){if(!n||typeof n!="object"||Array.isArray(n))throw to();return n}function Fv(n){return n===null||typeof n=="string"||typeof n=="boolean"||typeof n=="number"?JSON.stringify(n):Array.isArray(n)?`[${n.map(Fv).join(",")}]`:`{${Object.entries(n).filter(([,t])=>t!==void 0).sort(([t],[i])=>t<i?-1:t>i?1:0).map(([t,i])=>`${JSON.stringify(t)}:${Fv(i)}`).join(",")}}`}async function om(n){let e=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(Fv(n))));return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function eL(n,e){let t=[[n,e]],i=0;for(;t.length;){if(++i>524288)return!1;let[o,s]=t.pop();if(o===s)continue;if(!o||!s||typeof o!="object"||typeof s!="object"||Array.isArray(o)!==Array.isArray(s))return!1;let r=Object.keys(o);if(r.length!==Object.keys(s).length)return!1;for(let a of r){if(!Object.hasOwn(s,a))return!1;t.push([o[a],s[a]])}}return!0}async function sm(n){let e=n.declaration,t=n.signal,i=n.isCurrent,o=n.fetch??globalThis.fetch,s=e.manifest,r=eo(e);function a(){try{if(!t.aborted&&n.signal===t&&n.declaration===e&&n.isCurrent===i&&e.id===r.id&&e.name===r.name&&e.origin===r.origin&&e.environment===r.environment&&e.manifest===s&&i.call(n)===!0&&!t.aborted)return}catch{}throw A("cancelled","Application registration fenced","application_registration_fenced")}a();let c,l;try{c=xi({environment:r.environment,appOrigin:r.origin,release:Ns()})}catch{throw a(),A("unavailable","SDK registration environment unavailable","application_registration_unavailable")}try{l=td(tm(r),{allowLocal:!0}).manifest}catch{throw od()}let p=r.environment==="local"?[]:l.installation_origins?.[r.environment]?.[r.installationKind]??[];if(l.name!==r.name||l.distribution==="portable"||new URL(l.homepage).origin!==r.origin&&!p.includes(r.origin)&&!("platform"in l&&l.platform==="native"&&r.installationKind==="app-runtime"&&Us(r.origin)))throw od();let d=JSON.stringify({manifest:l}),u=`${c.cpOrigin}/v1/apps/register`,f=`mdbase.app.registration.v1.${encodeURIComponent(c.cpOrigin)}.${encodeURIComponent(l.id)}`,h=()=>{try{return globalThis.localStorage??null}catch{return null}},m=h()?await om(l).catch(()=>null):null;a();let b=x=>{if(m)try{h()?.setItem(f,JSON.stringify({v:1,digest:m,declaredId:r.id,...x}))}catch{}};{let x=null;try{let P=h()?.getItem(f);x=P?Bv(JSON.parse(P)):null}catch{x=null}if(x&&m&&x.v===1&&x.digest===m&&x.declaredId===r.id&&typeof x.id=="string"&&zv.test(x.id)&&x.id!==II&&x.name===l.name&&typeof x.manifestDigest=="string"&&/^[0-9a-f]{64}$/.test(x.manifestDigest)&&(x.supersededDeclaredId===void 0||x.supersededDeclaredId===r.id))return Object.freeze({id:x.id,name:l.name,manifestDigest:x.manifestDigest,...x.supersededDeclaredId!==void 0?{supersededDeclaredId:r.id}:{}})}if(new TextEncoder().encode(d).length>em+32||typeof o!="function")throw od();let w=new AbortController,g=()=>w.abort(),y=setTimeout(g,15e3);y.unref?.(),t.addEventListener("abort",g,{once:!0});function v(){if(a(),w.signal.aborted)throw rm()}async function _(x){let P=x.headers.get("content-length");if(!x.body||P!==null&&(!/^(0|[1-9][0-9]*)$/.test(P)||Number(P)>8192))return x.body?.cancel().catch(()=>{}),null;let I=x.body.getReader(),R=new Uint8Array(8192),O=0;try{for(;;){let q=await I.read();if(v(),q.done)break;if(O+q.value.length>R.length)return null;R.set(q.value,O),O+=q.value.length}return Os(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(R.subarray(0,O))))}catch(q){if(q instanceof pe)throw q;return null}finally{I.cancel().catch(()=>{})}}async function k(x){let P=new Uint8Array(2*em+8192),I=0,R=x.headers.get("content-length");if(R!==null&&/^(0|[1-9][0-9]*)$/.test(R)&&Number(R)>P.length)throw x.body?.cancel().catch(()=>{}),to();if(!x.body)throw to();let O=x.body.getReader();try{for(;;){let q=await O.read();try{if(v(),q.done)break;if(I+q.value.length>P.length)throw to();P.set(q.value,I),I+=q.value.length}finally{q.value?.fill(0)}}try{return Bv(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(P.subarray(0,I))))}catch{throw to()}}finally{P.fill(0),O.cancel().catch(()=>{}),O.releaseLock()}}async function S(x){let P=Bv(x.application),I=P.id,R=P.manifest_digest;if(typeof I!="string"||!zv.test(I)||I===II)throw to();let O=zv.test(r.id)&&I!==r.id,q=O?od:to;if(O&&R!==await om(l).catch(()=>null))throw od();if(v(),typeof R!="string"||!/^[0-9a-f]{64}$/.test(R)||P.name!==l.name||P.canonical_identity!==`bundle:${l.id}:sha256:${R}`||P.family_identity!==`bundle:${l.id}`||P.distribution!=="web")throw q();if(!P.application_declaration)throw A("upgrade_required","Canonical registration evidence unavailable","application_registration_unsupported");let j;try{j=td(P.application_declaration,{allowLocal:!0}).manifest}catch{throw to()}if(!eL(l,j))throw q();return v(),Object.freeze({id:I,name:l.name,manifestDigest:R,...O?{supersededDeclaredId:r.id}:{}})}try{v();try{n.onRequest?.()}catch{}for(let x=0;x<3;x++){v();let P;try{if(P=await o(u,{method:"POST",headers:{"content-type":"application/json"},body:d,signal:w.signal,credentials:"omit",redirect:"error",cache:"default",referrerPolicy:"no-referrer"}),v(),P.redirected||P.url&&P.url!==u)throw to();if(!P.ok){if(QT.has(P.status))throw await P.body?.cancel().catch(()=>{}),rm();let R=await _(P);throw A("forbidden","Application registration refused",R?{reason:"application_registration_refused",details:new Map([["code",R.code],["paths",[...R.paths]]])}:"application_registration_refused")}let I=await S(await k(P));return b(I),I}catch(I){if(P?.body?.cancel().catch(()=>{}),v(),I instanceof pe&&I.reason!=="application_registration_unknown")throw I;if(x===2)throw rm();await new Promise((R,O)=>{let q=()=>{clearTimeout(j),w.signal.removeEventListener("abort",q);try{v(),R()}catch(z){O(z)}},j=setTimeout(q,x===0?250:1e3);j.unref?.(),w.signal.addEventListener("abort",q,{once:!0}),w.signal.aborted&&q()})}}throw rm()}finally{clearTimeout(y),t.removeEventListener("abort",g),w.abort()}}var zv,II,QT,od,to,rm,am=C(()=>{"use strict";nd();nd();Vo();ne();xl();im();Nf();zv=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,II="00000000-0000-0000-0000-000000000000",QT=new Set([408,429,500,502,503,504]),od=()=>A("invalid_request","Application registration binding mismatch","application_registration_binding"),to=()=>A("unavailable","Application registration evidence invalid","application_registration_response"),rm=()=>A("outcome_unknown","Original application registration outcome unknown","application_registration_unknown")});function TI(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:null}function LI(n,e,t){if(!/^[A-Za-z0-9_-]+$/.test(n))return!1;try{let i=atob(n.replaceAll("-","+").replaceAll("_","/"));return i.length===e&&(t===void 0||i.charCodeAt(0)===t)&&btoa(i).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")===n}catch{return!1}}function um(n,e){let t=TI(n),i=TI(t?.native_completion);if(!i||!Object.hasOwn(i,"version")||i.version!==1||Object.keys(i).length!==qI.length+1||qI.some(r=>!Object.hasOwn(i,r)||typeof i[r]!="string"))throw Ol();let o=i;for(let r of["account_id","authorization_request_id","application_id","application_installation_id","collection_id","grant_id"])if(!pL.test(o[r]))throw Ol();if(!o.application_declaration_id||!/^[0-9a-f]{64}$/.test(o.application_manifest_digest)||!LI(o.grant_signing_public_key,65,4)||!LI(o.client_noise_public_key,32))throw Ol();try{if(new URL(o.application_origin).origin!==o.application_origin)throw Ol()}catch{throw Ol()}let s={account_id:e.accountId,authorization_request_id:e.authorizationRequestId,application_id:e.applicationId,application_declaration_id:e.declarationId,application_manifest_digest:e.manifestDigest,application_installation_id:e.applicationInstallationId,application_origin:e.applicationOrigin,collection_id:e.collectionId,grant_signing_public_key:e.grantSigningPublicKey,client_noise_public_key:e.clientNoisePublicKey};if(Object.entries(s).some(([r,a])=>o[r]!==a)||e.grantId!==void 0&&o.grant_id!==e.grantId||t.collection_id!==o.collection_id||t.grant_id!==o.grant_id||t.application_origin!==o.application_origin)throw Ol();return Object.freeze({...o})}var qI,pL,Ol,Vv=C(()=>{"use strict";ne();qI=["account_id","authorization_request_id","application_id","application_declaration_id","application_manifest_digest","application_installation_id","application_origin","collection_id","grant_id","grant_signing_public_key","client_noise_public_key"],pL=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Ol=()=>A("unauthenticated","native completion does not match the original approved preparation")});function Kv(n,e,t,i,o,s){return um({native_completion:n,collection_id:e.collectionId,grant_id:n?.grant_id,application_origin:o},{accountId:t,authorizationRequestId:e.authorizationRequestId,applicationId:i,applicationOrigin:o,collectionId:e.collectionId,manifestDigest:s,declarationId:n?.application_declaration_id,applicationInstallationId:n?.application_installation_id,grantSigningPublicKey:n?.grant_signing_public_key,clientNoisePublicKey:n?.client_noise_public_key})}var jI=C(()=>{"use strict";Vv()});function ii(n){let e=()=>new TypeError("invalid collection display name");if(typeof n!="string"||/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/.test(n))throw e();for(let i=0;i<n.length;i++){let o=n.charCodeAt(i);if(o>=55296&&o<=56319){let s=n.charCodeAt(++i);if(!(s>=56320&&s<=57343))throw e()}else if(o>=56320&&o<=57343)throw e()}let t=n.trim();if(!t.length||t.length>200)throw e();return t}var $s=C(()=>{"use strict"});function fm(n){let e=[n.account,n.installation,n.collection];if(e.some(t=>typeof t!="string"||!UI.test(t)))throw new Qe("invalid_scope");return`mdbase-app-${e.map(t=>t.toLowerCase()).join("-")}`}function Wv(n){let e=[n.account,n.installation];if(e.some(t=>typeof t!="string"||!UI.test(t)))throw new Qe("invalid_scope");return`mdbase-app-installation-${e.map(t=>t.toLowerCase()).join("-")}`}function cd(n,e,t){return ld(n,fm(e),t)}function pd(n,e,t){return ld(n,Wv(e),t)}function dd(n){return typeof n=="string"&&n.length>0&&n.length<=64&&!/[^A-Za-z0-9_-]/.test(n)}function zs(n){return typeof n=="string"&&n.length>0&&n.length<=256&&!/[\u0000-\u001f\u007f]/.test(n)}function NI(n){let e=DI({cpOrigin:n.cpOrigin,appId:n.appId});if(n.storageNamespace===void 0)return e;if(!zs(n.storageNamespace))throw new Qe("invalid_scope");return`mdbase-app-sign-in-namespace-v1-${JSON.stringify([n.cpOrigin,n.appId,n.storageNamespace])}`}function DI(n){let e=new URL(n.cpOrigin);if(e.origin!==n.cpOrigin||e.username||e.password||!["https:","http:"].includes(e.protocol)||!dd(n.appId))throw new Qe("invalid_scope");if(n.owner===void 0)return`mdbase-app-sign-in-v1-${n.appId}-${n.cpOrigin}`;if(!zs(n.owner))throw new Qe("invalid_scope");return`mdbase-app-sign-in-v2-${JSON.stringify([n.cpOrigin,n.owner,n.appId])}`}function $I(n,e,t){if(e.storageNamespace!==void 0&&(!zs(e.owner)||e.owner.startsWith("bundle:")))throw new Qe("invalid_scope");let i=DI(e),o=NI(e);return e.owner===void 0?ld(n,o,t):(async()=>{let s=await ld(n,o,t);try{let r=await ld(n,i,t);return{release:async()=>{await r.release(),await s.release()}}}catch(r){throw await s.release(),r}})()}function zI(n,e,t){try{return n.request(NI(e),{mode:"shared",signal:t},async()=>{})}catch(i){return Promise.reject(i)}}function ld(n,e,t){if(!n)return Promise.reject(new Qe("unavailable"));if(t?.aborted)return Promise.reject(new Qe("aborted"));let i,o=new Promise(d=>{i=d}),s,r,a=new Promise((d,u)=>{s=d,r=u}),c=!1,l=()=>{c=!0,r(new Qe("aborted"))};t?.addEventListener("abort",l,{once:!0});let p=Promise.resolve().then(()=>n.request(e,{mode:"exclusive",ifAvailable:!0},async d=>{if(t?.removeEventListener("abort",l),c||t?.aborted){r(new Qe("aborted"));return}if(!d){r(new Qe("busy"));return}s({release:()=>(i(),p)}),await o}));return p.catch(()=>{t?.removeEventListener("abort",l),r(new Qe("unavailable"))}),a}async function BI(n){let e=n.closeTimeoutMs??5e3;if(!Number.isSafeInteger(e)||e<1||e>3e4)throw new RangeError("invalid Worker close timeout");let t=n.signal,i=Object.freeze({account:n.scope.account,installation:n.scope.installation,collection:n.scope.collection});fm(i);let o=await pd(n.locks,i,t),s;try{s=await cd(n.locks,i,t)}catch(h){throw await o.release(),h}let r={release:async()=>{await s.release(),await o.release()}},a;try{if(t?.aborted)throw new Qe("aborted");a=n.create(i)}catch{throw await r.release(),new Qe(t?.aborted?"aborted":"initialization_failed")}let c,l=Object.freeze({scope:Object.freeze({account:i.account,installation:i.installation}),isCurrent:()=>!c&&!t?.aborted}),p,d=new Promise((h,m)=>{p=()=>m(new Qe("aborted"))}),u=()=>c??=(async()=>{t?.removeEventListener("abort",f);let h;try{await Promise.race([Promise.resolve().then(()=>a.stop()),new Promise(m=>{h=setTimeout(m,e)})])}catch{}finally{h&&clearTimeout(h)}try{a.terminate()}catch{throw new Qe("shutdown_failed")}await r.release()})(),f=()=>{p(),u().catch(()=>{})};t?.addEventListener("abort",f,{once:!0});try{if(t?.aborted)throw new Qe("aborted");if(await Promise.race([Promise.resolve().then(()=>n.initialize(a,t,i,l)),d]),t?.aborted||c)throw new Qe("aborted");return{worker:a,scope:i,close:u}}catch{throw await u(),new Qe(t?.aborted?"aborted":"initialization_failed")}}var Qe,UI,Ko=C(()=>{"use strict";Qe=class extends Error{constructor(t){super(`app replica owner: ${t}`);this.reason=t;this.name="AppReplicaOwnerError"}reason},UI=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i});function KI(n){if(typeof CryptoKey!="function"||!(n instanceof CryptoKey)||n.type!=="secret"||n.extractable||n.algorithm.name!=="AES-GCM"||n.algorithm.length!==256||n.usages.length!==2||!n.usages.includes("encrypt")||!n.usages.includes("decrypt"))throw ot();return n}function FI(n){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!=="encrypted,key,revision,version")throw ot();let e=n;if(e.version!==1||!Number.isSafeInteger(e.revision)||e.revision<0||!(e.encrypted instanceof Uint8Array)||e.encrypted.length<29||e.encrypted.length>VI+28)throw ot();return{version:1,revision:e.revision,key:KI(e.key),encrypted:new Uint8Array(e.encrypted)}}var Rl,hm,VI,ud,ot,dL,mm,WI=C(()=>{"use strict";bt();Bn();Ko();Rl="installation-sign-in",hm="original",VI=128*1024,ud=class extends Error{constructor(t){super(`app installation storage ${t}; preserve storage and reopen`);this.reason=t}reason},ot=(n="unavailable")=>new ud(n),dL=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);mm=class n{constructor(e,t){this.options=e;this.lease=t;this.namespace=JSON.stringify(e.owner===void 0?["mdbase.app-installation.v1",e.origin,e.cpOrigin,e.appId]:["mdbase.app-installation.v2",e.origin,e.cpOrigin,e.owner,e.appId])}options;lease;db=null;record=null;closing=!1;closeResult=null;namespace;static async open(e,t){let i=Object.freeze({origin:e.origin,cpOrigin:e.cpOrigin,appId:e.appId,...e.owner===void 0?{}:{owner:e.owner},...e.storageNamespace===void 0?{}:{storageNamespace:e.storageNamespace},mode:e.mode,signal:e.signal,locks:e.locks,allowLoopbackHttp:e.allowLoopbackHttp===!0}),o=null,s=null,r=null;try{if(!Et(i.origin))throw ot();{let l=i.cpOrigin,p=new URL(l),d=i.allowLoopbackHttp&&Ye(l);if(p.origin!==l||p.username||p.password||p.protocol!=="https:"&&!d)throw ot()}if(i.owner!==void 0&&!zs(i.owner)||!["fresh","existing","open"].includes(i.mode)||!dd(i.appId)||i.signal.aborted||xt()!==i.origin||!globalThis.indexedDB||!globalThis.crypto?.subtle||typeof CryptoKey!="function")throw ot();let a=await $I(i.locks,i,i.signal);if(o=new n(i,a),o.check(),i.mode!=="existing"){s=t(),o.check(),o.bound(s);let l=KI(await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]));o.check(),r={version:1,revision:0,key:l,encrypted:await o.encrypt(l,0,s)},s.fill(0),s=null}o.db=await o.openDatabase(r),o.check(),o.db.onversionchange=()=>{o.close()},o.record=await o.readRecord(),o.check(),s=await o.decrypt(o.record),o.check(),o.bound(s);let c={store:o,plaintext:s};return s=null,c}catch(a){throw await o?.close(),ot(a instanceof Qe&&a.reason==="busy"?"busy":"unavailable")}finally{s?.fill(0),r?.encrypted.fill(0)}}isCurrent(){try{return this.check(),!0}catch{return!1}}check(){if(this.closing||this.options.signal.aborted||xt()!==this.options.origin)throw ot()}bound(e){if(!(e instanceof Uint8Array)||!e.length||e.length>VI)throw ot()}aad(e){return new TextEncoder().encode(`${this.namespace}:${e}`)}async encrypt(e,t,i){this.check(),this.bound(i);let o=crypto.getRandomValues(new Uint8Array(12)),s=this.aad(t),r=new Uint8Array(i),a=null;try{a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:o,additionalData:s},e,r)),this.check();let c=new Uint8Array(12+a.length);return c.set(o),c.set(a,12),c}finally{r.fill(0),a?.fill(0),o.fill(0),s.fill(0)}}async decrypt(e){this.check();let t=this.aad(e.revision),i=new Uint8Array(e.encrypted.subarray(0,12)),o=new Uint8Array(e.encrypted.subarray(12));try{let s=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:i,additionalData:t},e.key,o));try{return this.check(),this.bound(s),s}catch{throw s.fill(0),ot()}}finally{i.fill(0),o.fill(0),t.fill(0)}}openDatabase(e){return new Promise((t,i)=>{this.check();let o=this.options,s=o.owner===void 0?`mdbase.app.installation.v1.${encodeURIComponent(o.cpOrigin)}.${o.appId}`:`mdbase.app.installation.v2.${encodeURIComponent(o.cpOrigin)}.${encodeURIComponent(o.owner)}.${o.appId}`,r=indexedDB.open(s,1),a=!1,c=!1,l=()=>{a=!0;try{r.transaction?.abort()}catch{}i(ot())},p=()=>this.options.signal.removeEventListener("abort",l);this.options.signal.addEventListener("abort",l,{once:!0}),r.onblocked=l,r.onupgradeneeded=()=>{try{if(this.check(),a||!e||r.result.objectStoreNames.length)throw ot();r.result.createObjectStore(Rl).add(e,hm),c=!0}catch{r.transaction?.abort()}},r.onerror=()=>{p(),i(ot())},r.onsuccess=()=>{p();try{if(this.check(),a||this.options.mode==="fresh"&&!c||r.result.objectStoreNames.length!==1||!r.result.objectStoreNames.contains(Rl))throw ot();t(r.result)}catch{r.result.close(),i(ot())}}})}readRecord(){return new Promise((e,t)=>{if(this.check(),!this.db)throw ot();let i=this.db.transaction(Rl,"readonly",{durability:"strict"}),o=null,s=()=>{try{i.abort()}catch{}},r=()=>this.options.signal.removeEventListener("abort",s);this.options.signal.addEventListener("abort",s,{once:!0}),i.onerror=i.onabort=()=>{r(),o?.encrypted.fill(0),t(ot())},i.oncomplete=()=>{r();try{if(this.check(),!o)throw ot();e(o)}catch{o?.encrypted.fill(0),t(ot())}};let a=i.objectStore(Rl).get(hm);a.onsuccess=()=>{try{this.check(),o=FI(a.result)}catch{s()}}})}async commit(e){let t=null;try{if(this.check(),!this.record||this.record.revision>=Number.MAX_SAFE_INTEGER)throw ot();let i=this.record;t={version:1,revision:i.revision+1,key:i.key,encrypted:await this.encrypt(i.key,i.revision+1,e)},this.check(),await new Promise((o,s)=>{if(this.check(),!this.db)throw ot();let r=this.db.transaction(Rl,"readwrite",{durability:"strict"}),a=()=>{try{r.abort()}catch{}},c=()=>this.options.signal.removeEventListener("abort",a);this.options.signal.addEventListener("abort",a,{once:!0}),r.onerror=r.onabort=()=>{c(),s(ot())},r.oncomplete=()=>{c();try{this.check(),o()}catch{s(ot())}};let l=r.objectStore(Rl),p=l.get(hm);p.onsuccess=()=>{let d=null;try{if(this.check(),d=FI(p.result),d.revision!==i.revision||!dL(d.encrypted,i.encrypted))throw ot();l.put(t,hm)}catch{a()}finally{d?.encrypted.fill(0)}}}),this.check(),i.encrypted.fill(0),this.record=t,t=null}catch{throw await this.close(),ot()}finally{t?.encrypted.fill(0)}}close(){return this.closeResult??=(async()=>{this.closing=!0,this.db?.close(),this.db=null,this.record?.encrypted.fill(0),this.record=null,await this.lease.release()})()}}});function uL(n,e){if(n!==400||!e||typeof e!="object"||Array.isArray(e))return!1;let{code:t,message:i}=e;return t==="invalid_request"&&typeof i=="string"&&i.length<=512&&/unrecognized key/i.test(i)&&i.includes("requested_private_device")}function Ae(n){if(typeof n!="string"||!fL.test(n)||U(n).every(e=>e===0))throw M("response");return n}function un(n,e){if(typeof n!="string"||!e.test(n))throw M("response");return n}function Ee(n,e){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join())throw M("response");return n}function hL(n){if(typeof n!="string"||n.length>320||!/^[^\s@\u0000-\u001f\u007f]+@[^\s@\u0000-\u001f\u007f]+$/.test(n))throw M("response");return n}function El(n,e=!1){let[t,i,o,s]=e?["accountEmail","portalConfirmed","accountProvider","accountLogin"]:["account_email","account_selection_confirmed","account_provider","account_login"];return[t,i,o,s].some(r=>Object.hasOwn(n,r))?`,${t},${i}${Object.hasOwn(n,o)||Object.hasOwn(n,s)?`,${o},${s}`:""}`:""}function ym(n,e=!1){let t=El(n,e);if(!t)return{};let i=e?n.accountEmail:n.account_email,o=e?n.portalConfirmed:n.account_selection_confirmed,s=e?n.accountProvider:n.account_provider,r=e?n.accountLogin:n.account_login;if(o!==!0)throw M("response");if(t.includes(e?"accountProvider":"account_provider")){if(i!==null||s!=="github"||typeof r!="string"||!r.length||new TextEncoder().encode(r).byteLength>100||/[\s\u0000-\u001f\u007f]/.test(r))throw M("response");return{accountEmail:null,portalConfirmed:!0,accountProvider:"github",accountLogin:r}}return{accountEmail:hL(i),portalConfirmed:!0}}function HI(n,e){if(n.portalConfirmed&&(e.portalConfirmed!==!0||n.accountEmail!==e.accountEmail||n.accountProvider!==e.accountProvider||n.accountLogin!==e.accountLogin))throw M("binding")}function Zv(n){return Object.hasOwn(n,"timer_consent")||Object.hasOwn(n,"timer_grants")?",timer_consent,timer_grants":""}function Yv(n,e,t,i,o){if(!Zv(n))return;if(![!0,!1,null].includes(n.timer_consent)||!Array.isArray(n.timer_grants)||n.timer_grants.length>1e3)throw M("response");let s=n.timer_grants.map(r=>{let a=Ee(r,"grant_id,collection_id,declaration_digest"),c=Ae(a.collection_id);if(!t.includes(c))throw M("response");return Object.freeze({grantId:Ae(a.grant_id),collectionId:c,declarationDigest:un(a.declaration_digest,/^[0-9a-f]{64}$/)})});if(new Set(s.map(r=>r.grantId)).size!==s.length||new Set(s.map(r=>r.collectionId)).size!==s.length||(n.timer_consent===!0?!i||!o||!s.some(r=>r.collectionId===o):s.length!==0)||new Set(s.map(r=>r.declarationDigest)).size>1)throw M("response");return n.timer_consent===null?void 0:Object.freeze({requestId:e,approved:n.timer_consent===!0,grants:Object.freeze(s.filter(r=>r.collectionId===o))})}function Jv(n){let e=Ee(n,"grantId,kind,targetDigest,channelId,pending");if(!["web_push","fcm"].includes(e.kind)||![null,"register","delete"].includes(e.pending)||e.channelId===null&&e.pending!=="register")throw M("response");return Object.freeze({grantId:Ae(e.grantId),kind:e.kind,targetDigest:un(e.targetDigest,/^[0-9a-f]{64}$/),channelId:e.channelId===null?null:Ae(e.channelId),pending:e.pending})}function mL(n){let e=n&&typeof n=="object"&&!Array.isArray(n)?n.collections:void 0;return Array.isArray(e)&&e.length>0&&e.every(t=>!t||typeof t!="object"||!("mode"in t))}function Xv(n){if(!Array.isArray(n)||n.length>1e3)throw M("response");let e=new Set;return Object.freeze(n.map(t=>{let i=c=>t&&typeof t=="object"&&c in t?`,${c}`:"",o=Ee(t,`collection_id,display_name,role${i("availability")}${i("file_actions")}${i("mode")}`),s=Ae(o.collection_id);if("mode"in o&&o.mode!=="cloud_copy"&&o.mode!=="private"||e.has(s)||typeof o.display_name!="string"||!o.display_name.length||o.display_name.length>1024||o.role!=="owner"&&o.role!=="editor"&&o.role!=="viewer")throw M("response");let r=gi(o.availability),a="file_actions"in o?Qv(o.file_actions):null;return e.add(s),Object.freeze({collectionId:s,displayName:o.display_name,role:o.role,...r?{availability:r}:{},...a?{fileActions:a}:{},...o.mode==="private"?{mode:"private"}:{}})}))}function Qv(n,e=gm,t=!0){if(!Array.isArray(n)||n.length>gm.length||!t&&!n.length||new Set(n).size!==n.length||n.some(i=>!e.includes(i)))throw M("response");return Object.freeze(gm.filter(i=>n.includes(i)))}function GI(n){let e=n.collectionHint??null;if(e!==null&&(typeof e!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(e)||e==="00000000-0000-0000-0000-000000000000"))throw M("binding");return e}function YI(n,e,t){return n===e||t!==null&&n===`${e}?collection_hint=${t}`?n:null}var et,M,Hv,Gv,ri,fL,gm,Ml,fd=C(()=>{"use strict";jI();Po();be();bt();$s();Vo();WI();Ko();Qn();et=class extends Error{constructor(t,i){super(`app installation sign-in: ${t}`);this.reason=t;this.server=i;this.name="AppInstallationSignInError"}reason;server},M=n=>new et(n),Hv=new WeakSet,Gv=new WeakSet;ri=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),fL=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;gm=["list","read","add","replace","move","delete"];Ml=class n{constructor(e,t,i){this.store=e;this.state=t;this.options=i;this.request=i.fetch??((o,s)=>globalThis.fetch(o,s)),this.parent=i.signal,this.parent.addEventListener("abort",this.onAbort,{once:!0}),this.check()}store;state;options;closed=!1;busy=!1;nativeAcknowledged=!1;expiredRequestId=null;wrongAccountRequestId=null;lifetime=new AbortController;request;parent;onAbort=()=>{this.close()};static async open(e){let t=Object.freeze({...e,...e.recoveryFor?{recoveryFor:Object.freeze({...e.recoveryFor})}:{}}),i=null;try{if(!["lab","staging","production"].includes(t.environment)||!dd(t.appId)||typeof t.appName!="string"||!t.appName.length||t.appName.length>100||t.appName.trim()!==t.appName||t.installationKind!==void 0&&t.installationKind!=="app-runtime"&&t.installationKind!=="mobile")throw M("binding");let o=t.environmentSelection;if(t.requestedCreateCollections!==void 0&&typeof t.requestedCreateCollections!="boolean"||t.freshRequestedCreateCollections!==void 0&&typeof t.freshRequestedCreateCollections!="boolean"||t.freshRequestedPrivateDevice!==void 0&&typeof t.freshRequestedPrivateDevice!="boolean")throw M("binding");if(t.recoveryFor!==void 0){let r=Ee(t.recoveryFor,"accountId,collectionId");if(Ae(r.accountId),Ae(r.collectionId),!t.owner||t.requestedCreateCollections===!0||t.freshRequestedCreateCollections===!0)throw M("binding")}if(o!==void 0&&(!SI(o)||o.environment!==t.environment||o.appOrigin!==t.origin||o.cpOrigin!==t.cpOrigin||t.allowLoopbackHttp===!0&&!o.allowLoopbackHttp))throw M("binding");i=await mm.open({...t,allowLoopbackHttp:o?.allowLoopbackHttp??t.allowLoopbackHttp},()=>{let r=crypto.getRandomValues(new Uint8Array(32));try{let a=`pair_${btoa(String.fromCharCode(...r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`;return new TextEncoder().encode(JSON.stringify({version:3,renewal:null,requestedCreateCollections:t.requestedCreateCollections??t.freshRequestedCreateCollections??!1,collectionIds:[],createCollections:!1,consentRequest:null,...t.freshRequestedPrivateDevice===!0?{requestedPrivateDevice:!0}:{},requestId:crypto.randomUUID(),installationId:crypto.randomUUID(),deviceId:crypto.randomUUID(),secret:a,appId:t.appId,...t.owner===void 0?{}:{owner:t.owner},kind:t.installationKind??"app-runtime",origin:t.origin,cpOrigin:t.cpOrigin,environment:t.environment,selection:null,confirmed:!1,nativeStarted:!1,proof:null,token:null,...t.recoveryFor?{recoveryFor:t.recoveryFor}:{}}))}finally{r.fill(0)}});let s=this.decode(i.plaintext,t);return new n(i.store,s,t)}catch(o){throw await i?.store.close(),o instanceof et?o:o instanceof ud&&o.reason==="busy"?M("open_in_another_tab"):M("recovery_required")}finally{i?.plaintext.fill(0)}}static decode(e,t){let i=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e)),o="version,requestId,installationId,deviceId,secret,appId,kind,origin,cpOrigin,environment,selection,confirmed,nativeStarted,proof,token",s=i?.version===1,r=`${o},requestedCreateCollections,collectionIds,createCollections,consentRequest`,a=s?{...Ee(i,o),version:3,renewal:null,requestedCreateCollections:!1,collectionIds:[],createCollections:!1,consentRequest:null}:i?.version===2?{...Ee(i,r),version:3,renewal:null}:Ee(i,`${r},renewal${Object.hasOwn(i,"collectionSelection")?",collectionSelection":""}${Object.hasOwn(i,"timerConsent")?",timerConsent":""}${Object.hasOwn(i,"timerChannel")?",timerChannel":""}${Object.hasOwn(i,"owner")?",owner":""}${Object.hasOwn(i,"collectionListing")?",collectionListing":""}${Object.hasOwn(i,"collectionRecoveries")?",collectionRecoveries":""}${Object.hasOwn(i,"recoveryFor")?",recoveryFor":""}${Object.hasOwn(i,"nativeAuthorization")?",nativeAuthorization":""}${Object.hasOwn(i,"nativeSelection")?",nativeSelection":""}${Object.hasOwn(i,"nativeGrants")?",nativeGrants":""}${Object.hasOwn(i,"requestedPrivateDevice")?",requestedPrivateDevice":""}${Object.hasOwn(i,"privateDeviceCollectionIds")?",privateDeviceCollectionIds":""}`);if(a.version!==3||a.appId!==t.appId||a.owner!==t.owner||a.kind!==(t.installationKind??"app-runtime")||a.origin!==t.origin||a.cpOrigin!==t.cpOrigin||a.environment!==t.environment||typeof a.confirmed!="boolean"||typeof a.nativeStarted!="boolean")throw M("recovery_required");let c=a;if(typeof c.requestedCreateCollections!="boolean"||typeof c.createCollections!="boolean"||t.requestedCreateCollections!==void 0&&t.requestedCreateCollections!==c.requestedCreateCollections)throw M("binding");if(c.collectionIds=this.collectionIds(c.collectionIds),c.requestedPrivateDevice!==void 0&&c.requestedPrivateDevice!==!0)throw M("recovery_required");if(c.privateDeviceCollectionIds!==void 0){let l=this.collectionIds(c.privateDeviceCollectionIds);if(!l.length||!c.token||l.some(p=>!c.collectionIds.includes(p)))throw M("recovery_required");c.privateDeviceCollectionIds=l}if(c.recoveryFor!==void 0){let l=Ee(c.recoveryFor,"accountId,collectionId");Ae(l.accountId),Ae(l.collectionId)}if(c.recoveryFor===void 0!=(t.recoveryFor===void 0)||c.recoveryFor?.accountId!==t.recoveryFor?.accountId||c.recoveryFor?.collectionId!==t.recoveryFor?.collectionId||c.recoveryFor&&(c.requestedCreateCollections||c.createCollections||c.selection&&c.selection.accountId!==c.recoveryFor.accountId||c.token&&(c.nativeSelection?c.collectionIds.length!==0||c.nativeSelection.collectionId!==c.recoveryFor.collectionId:!n.recovered(c.recoveryFor.collectionId,c.collectionIds,c.privateDeviceCollectionIds??[],c.collectionSelection))))throw M("recovery_required");if(c.consentRequest!==null){let l=Ee(c.consentRequest,`requestId,secret,requestedCreateCollections,challenge,completed,addedCollectionIds,approvedCreateCollections${Object.hasOwn(c.consentRequest,"requestedPrivateDevice")?",requestedPrivateDevice":""}${El(c.consentRequest,!0)}`);if(l.requestedPrivateDevice!==void 0&&l.requestedPrivateDevice!==!0||(ym(l,!0),Ae(l.requestId),un(l.secret,/^pair_[A-Za-z0-9_-]{43}$/),l.requestId===c.requestId||l.secret===c.secret||typeof l.requestedCreateCollections!="boolean"||typeof l.completed!="boolean"||typeof l.approvedCreateCollections!="boolean"||l.approvedCreateCollections&&!l.requestedCreateCollections)||(l.challenge!==null&&un(l.challenge,/^[0-9a-f]{64}$/),this.collectionIds(l.addedCollectionIds),!c.token||!c.selection||l.completed&&l.challenge===null))throw M("recovery_required")}if(c.createCollections&&!c.token||c.collectionIds.length&&!c.token)throw M("recovery_required");if(c.collectionSelection!==void 0){let l=Ee(c.collectionSelection,"requestId,selectedCollectionId,createdCollectionIds");if(Ae(l.requestId),!c.token||!c.collectionIds.includes(Ae(l.selectedCollectionId))||this.collectionIds(l.createdCollectionIds).some(p=>!c.collectionIds.includes(p)))throw M("recovery_required")}if(Ae(c.requestId),Ae(c.installationId),Ae(c.deviceId),un(c.secret,/^pair_[A-Za-z0-9_-]{43}$/),c.renewal!==null){let l=Ee(c.renewal,"requestId,secret");if(Ae(l.requestId),un(l.secret,/^pair_[A-Za-z0-9_-]{43}$/),l.requestId===c.requestId||l.secret===c.secret)throw M("recovery_required")}if(c.timerChannel!==void 0){if(!c.token||!c.selection)throw M("recovery_required");try{c.timerChannel=Jv(c.timerChannel)}catch{throw M("recovery_required")}}if(c.timerConsent!==void 0){let l=Ee(c.timerConsent,"requestId,approved,grants");if(Ae(l.requestId),!c.token||!c.selection||typeof l.approved!="boolean"||!Array.isArray(l.grants)||l.grants.length>1)throw M("recovery_required");let p=l.grants.map(u=>{let f=Ee(u,"grantId,collectionId,declarationDigest");return{grant_id:f.grantId,collection_id:f.collectionId,declaration_digest:f.declarationDigest}}),d=c.selection.portalConfirmed===!0||c.consentRequest?.portalConfirmed===!0;c.timerConsent=Yv({timer_consent:l.approved,timer_grants:p},Ae(l.requestId),c.collectionIds,d,p[0]?.collection_id)}if(c.selection!==null){let l=Ee(c.selection,`accountId,connectorId,challenge,approvalMode${El(c.selection,!0)}`);if(Ae(l.accountId),Ae(l.connectorId),un(l.challenge,/^[0-9a-f]{64}$/),l.approvalMode!=="password-ak1")throw M("response");ym(l,!0)}if(c.proof!==null&&this.proof(c.proof),c.token!==null&&un(c.token,/^idev_[A-Za-z0-9_-]{43}$/),c.confirmed&&!c.selection||c.nativeStarted&&!c.confirmed||c.proof&&!c.nativeStarted||c.token&&!c.proof||c.collectionListing!==void 0&&(!c.token||!c.confirmed||!c.selection||!c.proof||Xv(c.collectionListing).some(l=>!c.collectionIds.includes(l.collectionId))))throw M("recovery_required");if(c.collectionRecoveries!==void 0){if(!c.token||!c.confirmed||!c.selection||!c.proof||!c.collectionRecoveries||typeof c.collectionRecoveries!="object"||Array.isArray(c.collectionRecoveries))throw M("recovery_required");let l=Object.entries(c.collectionRecoveries);if(l.length>1e3||l.some(([p,d])=>!(c.collectionIds.includes(Ae(p))||c.nativeGrants?.some(u=>u.collection_id===p))||d!==null&&!Ae(d)))throw M("recovery_required")}if(c.nativeAuthorization){let l=Ee(c.nativeAuthorization,"requestId,authorizationId,applicationId,manifestDigest");if(Ae(l.requestId),Ae(l.authorizationId),l.applicationId!==c.appId||!c.proof||!c.confirmed)throw M("recovery_required");un(l.manifestDigest,/^[0-9a-f]{64}$/)}if(c.nativeSelection){let l=Ee(c.nativeSelection,"requestId,authorizationRequestId,collectionId");if(Ae(l.requestId),Ae(l.authorizationRequestId),Ae(l.collectionId),!c.token||!c.nativeAuthorization||l.requestId!==c.nativeAuthorization.requestId||l.authorizationRequestId!==c.nativeAuthorization.authorizationId)throw M("recovery_required")}if(c.nativeGrants&&(!c.token||!c.selection||!Array.isArray(c.nativeGrants)||c.nativeGrants.length>1e3||(c.nativeGrants=c.nativeGrants.map(l=>Kv(l,{requestId:c.requestId,authorizationRequestId:l.authorization_request_id,collectionId:l.collection_id},c.selection.accountId,c.appId,c.origin,l.application_manifest_digest)),new Set(c.nativeGrants.map(l=>l.collection_id)).size!==c.nativeGrants.length)))throw M("recovery_required");return c}modeConsented(e){return e.mode==="private"==(this.state.privateDeviceCollectionIds?.includes(e.collectionId)===!0)}static collectionIds(e){if(!Array.isArray(e)||e.length>1e3)throw M("response");let t=e.map(Ae);if(new Set(t).size!==t.length)throw M("response");return t}static proof(e){let t=Ee(e,"sign_pk,kem_pk,noise_pk,sig");return{sign_pk:un(t.sign_pk,/^[0-9a-f]{64}$/),kem_pk:un(t.kem_pk,/^[0-9a-f]{64}$/),noise_pk:un(t.noise_pk,/^[0-9a-f]{64}$/),sig:un(t.sig,/^[0-9a-f]{128}$/)}}isCurrent(){return!this.closed&&!this.parent.aborted&&!this.lifetime.signal.aborted&&this.store.isCurrent()}check(){if(!this.isCurrent())throw M("fenced")}view(){this.check();let e=this.state,t=e.consentRequest?.portalConfirmed?e.consentRequest:e.selection;return Object.freeze({requestId:e.requestId,installationId:e.installationId,deviceId:e.deviceId,appId:e.appId,kind:e.kind,verificationUri:`${e.cpOrigin}/pair/${e.requestId}`,state:e.token?"paired":e.proof?"awaiting_approval":e.confirmed?"account_confirmed":e.selection?"account_selected":"pending",accountId:e.selection?.accountId??null,accountEmail:t?.accountEmail??null,...t?.accountProvider?{accountProvider:t.accountProvider,accountLogin:t.accountLogin}:{},collectionSelection:e.collectionSelection?Object.freeze({...e.collectionSelection,createdCollectionIds:Object.freeze([...e.collectionSelection.createdCollectionIds])}):null,nativeSelection:e.nativeSelection&&e.nativeGrants?.some(i=>i.authorization_request_id===e.nativeSelection.authorizationRequestId&&i.collection_id===e.nativeSelection.collectionId)?Object.freeze({...e.nativeSelection}):null,nativeGrants:Object.freeze([...e.nativeGrants??[]]),...e.timerConsent?{timerConsent:e.timerConsent}:{},collectionIds:Object.freeze([...e.collectionIds]),createCollections:e.createCollections,requestedCreateCollections:e.requestedCreateCollections,...e.privateDeviceCollectionIds?.length?{privateDeviceCollectionIds:Object.freeze([...e.privateDeviceCollectionIds])}:{}})}async save(e){this.check();let t=new TextEncoder().encode(JSON.stringify(e));try{await this.store.commit(t),this.check(),this.state=e}catch{throw await this.close(),M("recovery_required")}finally{t.fill(0)}}async exclusive(e){if(this.check(),this.busy)throw M("busy");this.busy=!0;try{return await e()}finally{this.busy=!1}}async json(e,t,i,o){this.check(),this.wrongAccountRequestId=null;let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);this.lifetime.signal.addEventListener("abort",r,{once:!0});let c=null,l=null,p=!1,d=!1,u=new Uint8Array(o?.get||e.endsWith("/exchange")?1024*1024:64*1024),f=0;try{if(c=await this.request(`${this.state.cpOrigin}${e}`,{method:o?.get?"GET":o?.patch?"PATCH":o?.delete?"DELETE":"POST",headers:{...o?{authorization:`Bearer ${o.bearer}`}:t?{authorization:`Bearer ${this.state.secret}`}:{},...i===void 0?{}:{"content-type":"application/json"}},body:i===void 0?void 0:JSON.stringify(i),credentials:"omit",redirect:"error",cache:"default",referrerPolicy:"no-referrer",signal:s.signal}),this.check(),s.signal.aborted)throw M("outcome_unknown");let h=c.headers.get("content-length");if(h!==null&&/^(0|[1-9][0-9]*)$/.test(h)&&Number(h)>u.length)throw s.abort(),M("response");if(!c.body)throw M("response");for(l=c.body.getReader();;){let{done:b,value:w}=await l.read();try{if(this.check(),s.signal.aborted)throw M("outcome_unknown");if(b){p=!0;break}if(f+w.length>u.length)throw s.abort(),M("response");u.set(w,f),f+=w.length}finally{w?.fill(0)}}d=!0;let m=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(u.subarray(0,f)));if(!m||typeof m!="object"||Array.isArray(m))throw M("response");if(!c.ok){let b=m.error;if(!o&&c.status===404&&(e==="/v1/pairing-requests"||e===`/v1/pairing-requests/${this.state.requestId}/exchange`||e===`/v1/pairing-requests/${this.state.requestId}/attest`)&&b&&typeof b=="object"&&!Array.isArray(b)&&(b.code==="installation_pairing_expired"||b.code==="installation_pairing_denied"))throw this.expiredRequestId=this.state.requestId,M(b.code==="installation_pairing_expired"?"expired":"refused");let w=wi(c.status,m,c.headers),g=new et(Ot(w)??"refused",w);throw e==="/v1/pairing-requests"&&uL(c.status,b)&&Gv.add(g),g}return{status:c.status,value:m}}catch(h){this.check();let m=h instanceof et?h:M(o?.get&&!s.signal.aborted&&!(h instanceof DOMException&&h.name==="AbortError")?d?"response":!c||c.ok?"unavailable":"refused":"outcome_unknown");throw c&&!c.ok&&Hv.add(m),m}finally{u.fill(0),p||(l?.cancel()??c?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(a),this.lifetime.signal.removeEventListener("abort",r)}}start(e={}){let t;try{t=GI(e)}catch(i){return Promise.reject(i)}return this.exclusive(()=>this.startRequest(t))}renewExpiredPairing(){return this.exclusive(async()=>{let e=this.state;if(e.token||this.expiredRequestId!==e.requestId)throw M("recovery_required");let t=crypto.getRandomValues(new Uint8Array(32));try{let i=crypto.randomUUID(),o=`pair_${btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`;if(i===e.requestId||i===e.renewal?.requestId||o===e.secret)throw M("binding");return await this.save({...e,requestId:i,secret:o,renewal:{requestId:e.requestId,secret:e.secret}}),this.expiredRequestId=null,await this.startRequest()}finally{t.fill(0)}})}async startRequest(e=null){if(this.state.token)return this.view();let t=this.state;if(t.recoveryFor&&e!==null&&e!==t.recoveryFor.collectionId)throw M("binding");let i;try{i=await this.json("/v1/pairing-requests",!1,{installation:{app_id:t.appId,request_id:t.requestId,pairing_secret:t.secret,installation_id:t.installationId,device_id:t.deviceId,kind:t.kind,requested_create_collections:t.requestedCreateCollections,...t.requestedPrivateDevice===!0?{requested_private_device:!0}:{},...t.recoveryFor?{recovery_collection_id:t.recoveryFor.collectionId}:{},...t.renewal?{renewal:{request_id:t.renewal.requestId,pairing_secret:t.renewal.secret}}:{}},...e?{collection_hint:e}:{}})}catch(a){if(t.requestedPrivateDevice!==!0||!(a instanceof et)||!Gv.has(a))throw a;let{requestedPrivateDevice:c,...l}=t;return await this.save(l),await this.startRequest(e)}let{status:o,value:s}=i;if(o!==200&&o!==201)throw M("response");Ee(s,`pairing_id,pairing_secret,verification_uri,expires_in,installation_device,app_id,app_origin,app_name${this.recoveryTargetKeys()}`),this.assertRecoveryTarget(s);let r=YI(s.verification_uri,`${t.cpOrigin}/pair/${t.requestId}`,e);if(s.pairing_id!==t.requestId||s.pairing_secret!==t.secret||r===null||s.installation_device!==!0||s.app_id!==t.appId||s.app_origin!==t.origin||s.app_name!==this.options.appName||!Number.isSafeInteger(s.expires_in)||s.expires_in<0||s.expires_in>600)throw M("response");return this.expiredRequestId=null,Object.freeze({...this.view(),verificationUri:r})}recoveryTargetKeys(){return this.state.recoveryFor?",recovery_collection_id":""}assertRecoveryTarget(e){if(this.state.recoveryFor&&Ae(e.recovery_collection_id)!==this.state.recoveryFor.collectionId)throw M("binding")}selected(e){let t=this.state;if(this.assertRecoveryTarget(e),e.request_id!==t.requestId||e.installation_id!==t.installationId||e.device_id!==t.deviceId||e.kind!==t.kind||e.app_id!==t.appId||e.app_origin!==t.origin||e.approval_mode!=="password-ak1"||!Number.isSafeInteger(e.expires_at)||e.expires_at<0)throw M("response");let i={accountId:Ae(e.account_id),connectorId:Ae(e.connector_id),challenge:un(e.challenge,/^[0-9a-f]{64}$/),approvalMode:"password-ak1"};if(t.selection&&(i.accountId!==t.selection.accountId||i.connectorId!==t.selection.connectorId||i.challenge!==t.selection.challenge||i.approvalMode!==t.selection.approvalMode))throw M("binding");if(Object.assign(i,ym(e)),t.selection&&HI(t.selection,i),t.recoveryFor&&i.accountId!==t.recoveryFor.accountId)throw e.status==="account_selected"&&!t.selection&&!t.confirmed&&!t.nativeStarted&&!t.proof&&!t.token?(this.wrongAccountRequestId=t.requestId,M("recovery_account_mismatch")):M("binding");return this.wrongAccountRequestId=null,i}canAbandonWrongAccount(){let e=this.state;return this.isCurrent()&&e.recoveryFor!==void 0&&this.wrongAccountRequestId===e.requestId&&!e.selection&&!e.confirmed&&!e.nativeStarted&&!e.proof&&!e.token&&!e.consentRequest}exchange(){return this.exclusive(async()=>{if(this.state.token)return this.view();let{status:e,value:t}=await this.json(`/v1/pairing-requests/${this.state.requestId}/exchange`,!0);if(t.status==="pending"){if(Ee(t,"status"),e!==202||this.state.selection&&!this.state.renewal)throw M("response");return this.view()}let i=`status,request_id,account_id,connector_id,device_id,installation_id,kind,challenge,approval_mode,app_id,app_origin,expires_at${El(t)}${this.recoveryTargetKeys()}`;if(t.status==="account_selected"||t.status==="awaiting_approval"){if(Ee(t,i),e!==202||t.status==="awaiting_approval"&&!this.state.proof)throw M("response");let v=this.selected(t);return JSON.stringify(v)!==JSON.stringify(this.state.selection)&&await this.save({...this.state,selection:v}),this.view()}let o=Object.hasOwn(t,"collection_ids")||Object.hasOwn(t,"create_collections"),s=Object.hasOwn(t,"selected_collection_id")||Object.hasOwn(t,"created_collection_ids"),r=Object.hasOwn(t,"native_selection"),a=Object.hasOwn(t,"private_device_collection_ids");if(Ee(t,`${i},connector,token,registration${o?",collection_ids,create_collections":""}${a?",private_device_collection_ids":""}${s?",selected_collection_id,created_collection_ids":""}${r?",native_selection":""}${Zv(t)}`),e!==200||t.status!=="paired"||!this.state.confirmed||!this.state.proof)throw M("response");let c=this.selected(t),l=Ee(t.connector,"id,name"),p=Ee(t.registration,"device_id,sign_pk,kem_pk,noise_pk");if(l.id!==c.connectorId||l.name!==this.options.appName||p.device_id!==this.state.deviceId||p.sign_pk!==this.state.proof.sign_pk||p.kem_pk!==this.state.proof.kem_pk||p.noise_pk!==this.state.proof.noise_pk)throw M("binding");let d=o?n.collectionIds(t.collection_ids):[],u=a?n.collectionIds(t.private_device_collection_ids):[];if(u.length&&(!o||this.state.requestedPrivateDevice!==!0||u.some(v=>d.includes(v))))throw M("response");let f=n.collectionIds([...d,...u]),h=o?t.create_collections:!1;if(typeof h!="boolean"||h&&!this.state.requestedCreateCollections)throw M("response");let m=s?this.collectionSelection(t,f,this.state.requestId):void 0,b=r?this.parseNativeSelection(t.native_selection,this.state.requestId):void 0;if(r&&(!o||s||h||f.length!==0||t.timer_consent===!0))throw M("response");if(this.state.recoveryFor&&b&&b.collectionId!==this.state.recoveryFor.collectionId||this.state.recoveryFor&&!b&&(h||!n.recovered(this.state.recoveryFor.collectionId,f,u,m)))throw M("binding");if(t.timer_consent===!0&&!m)throw M("response");let w=!m&&u.length>0,g=Yv(t,this.state.requestId,f,c.portalConfirmed===!0,m?.selectedCollectionId),y=un(t.token,/^idev_[A-Za-z0-9_-]{43}$/);return await this.save({...this.state,selection:c,token:y,collectionIds:f,createCollections:h,privateDeviceCollectionIds:u.length?u:void 0,nativeSelection:b,...b||w?{collectionSelection:void 0}:m?{collectionSelection:m}:{},...g?{timerConsent:g}:{}}),this.view()})}static recovered(e,t,i,o){return t.length!==1||t[0]!==e?!1:i.length?i.length===1&&i[0]===e&&o===void 0:o?.selectedCollectionId===e&&o.createdCollectionIds.length===0}parseNativeSelection(e,t){let i=Ee(e,"authorization_request_id,collection_id"),o=this.state.nativeAuthorization;if(!o||o.requestId!==t||Ae(i.authorization_request_id)!==o.authorizationId)throw M("binding");return Object.freeze({requestId:t,authorizationRequestId:o.authorizationId,collectionId:Ae(i.collection_id)})}pendingNativeSelection(){return this.check(),this.state.nativeSelection??null}nativeAuthorizationContext(e){this.check(),this.owned(e);let t=this.state,i=t.consentRequest&&!t.consentRequest.completed?t.consentRequest:null,o=i?.challenge??t.selection?.challenge,s=i?i.portalConfirmed:t.selection?.portalConfirmed;if(!t.proof||!t.confirmed||!s||!o||t.token&&!i)return null;let r=i?.requestId??t.requestId,a=t.nativeAuthorization;return Object.freeze({requestId:r,accountId:t.selection.accountId,appId:t.appId,challenge:o,...a?.requestId===r?{authorizationId:a.authorizationId}:{}})}attachNativeAuthorization(e,t,i){let o=Object.freeze({...t}),s=Object.freeze({...i}),r=e.isCurrent;return this.exclusive(async()=>{this.owned(e);let a=this.nativeAuthorizationContext(e);if(!a||e.isCurrent!==r||a.requestId!==o.requestId||a.challenge!==o.challenge||a.accountId!==o.accountId||s.applicationId!==a.appId||!/^[0-9a-f]{64}$/.test(s.manifestDigest)||(Ae(s.authorizationId),a.authorizationId&&a.authorizationId!==s.authorizationId))throw M("binding");await this.save({...this.state,nativeAuthorization:{...s,requestId:a.requestId}});let c=a.requestId===this.state.requestId?this.state.secret:this.state.consentRequest.secret,{status:l,value:p}=await this.json(`/v1/pairing-requests/${a.requestId}/native-authorization`,!1,{authorization_request_id:s.authorizationId},{bearer:c});if(this.owned(e),e.isCurrent!==r)throw M("fenced");if(Ee(p,"request_id,authorization_request_id,account_id"),l!==200||p.request_id!==a.requestId||p.authorization_request_id!==s.authorizationId||p.account_id!==a.accountId)throw M("binding")})}completeNativeAuthorization(e,t){let i=this.consentGuard(e);return this.exclusive(async()=>{i();let o=this.state,s=o.nativeSelection,r=o.nativeAuthorization;if(!this.nativeAcknowledged||!s||!r)throw M("binding");let a=Kv(t,s,o.selection.accountId,o.appId,o.origin,r.manifestDigest);await this.save({...o,nativeGrants:[...(o.nativeGrants??[]).filter(c=>c.collection_id!==s.collectionId),a]}),i()})}collectionSelection(e,t,i){let o=Ae(e.selected_collection_id),s=n.collectionIds(e.created_collection_ids);if(!t.includes(o)||s.some(r=>!t.includes(r)))throw M("response");return Object.freeze({requestId:i,selectedCollectionId:o,createdCollectionIds:Object.freeze(s)})}collectionConsentView(){this.check();let e=this.state.consentRequest;return e?Object.freeze({requestId:e.requestId,verificationUri:`${this.state.cpOrigin}/pair/${e.requestId}`,state:e.completed?"scope_updated":"pending",requestedCreateCollections:e.requestedCreateCollections,addedCollectionIds:Object.freeze([...e.addedCollectionIds]),approvedCreateCollections:e.approvedCreateCollections,...e.requestedPrivateDevice===!0?{requestedPrivateDevice:!0}:{},accountEmail:e.accountEmail??null,...e.accountProvider?{accountProvider:e.accountProvider,accountLogin:e.accountLogin}:{},accountSelectionConfirmed:e.portalConfirmed===!0}):null}consentGuard(e){let t=e.isCurrent;return()=>{if(this.check(),this.owned(e),this.receipt(),e.isCurrent!==t)throw M("fenced")}}async consentWindow(e,t){try{return await t()}catch(i){let o=i instanceof et?i.server?.code:null;if((o==="installation_pairing_denied"||o==="installation_pairing_expired")&&i instanceof et&&i.server?.status===404){let s=this.state.consentRequest;throw s&&!s.completed&&s.requestId===e&&await this.save({...this.state,consentRequest:null}),M(o==="installation_pairing_expired"?"expired":"refused")}throw i}}startCollectionConsent(e,t=!1,i={},o=!1){let s=this.consentGuard(e),r;try{r=GI(i)}catch(c){return Promise.reject(c)}let a=async()=>{if(s(),this.state.recoveryFor||typeof t!="boolean"||typeof o!="boolean")throw M("binding");let c=this.state.consentRequest;if(!c||c.completed){let b=crypto.getRandomValues(new Uint8Array(32));try{let w=`pair_${btoa(String.fromCharCode(...b)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`;c={requestId:crypto.randomUUID(),secret:w,requestedCreateCollections:t,challenge:null,completed:!1,addedCollectionIds:[],approvedCreateCollections:!1,...o?{requestedPrivateDevice:!0}:{}},await this.save({...this.state,consentRequest:c}),s()}finally{b.fill(0)}}else if(c.requestedCreateCollections!==t)throw M("binding");let l=this.state,p=l.token,d=c,u;try{u=await this.consentWindow(d.requestId,()=>this.json("/v1/pairing-requests",!1,{installation:{app_id:l.appId,request_id:d.requestId,pairing_secret:d.secret,installation_id:l.installationId,device_id:l.deviceId,kind:l.kind,requested_create_collections:d.requestedCreateCollections,...d.requestedPrivateDevice===!0?{requested_private_device:!0}:{},reconsent:!0},...r?{collection_hint:r}:{}},{bearer:p}))}catch(b){if(d.requestedPrivateDevice!==!0||!(b instanceof et)||!Gv.has(b))throw b;s();let{requestedPrivateDevice:w,...g}=d;return await this.save({...this.state,consentRequest:g}),s(),await a()}s();let{status:f,value:h}=u;Ee(h,"pairing_id,pairing_secret,verification_uri,expires_in,installation_device,app_id,app_origin,app_name");let m=null;if(f!==200&&f!==201||h.pairing_id!==c.requestId||h.pairing_secret!==c.secret||(m=YI(h.verification_uri,`${l.cpOrigin}/pair/${c.requestId}`,r))===null||h.installation_device!==!0||h.app_id!==l.appId||h.app_origin!==l.origin||h.app_name!==this.options.appName||!Number.isSafeInteger(h.expires_in)||h.expires_in<0||h.expires_in>600||p!==this.state.token)throw M("response");return Object.freeze({...this.collectionConsentView(),verificationUri:m})};return this.exclusive(async()=>{let c=this.state.consentRequest,l=c!==null&&!c.completed;try{return await a()}catch(p){if(l&&this.state.consentRequest===null&&p instanceof et&&(p.reason==="refused"||p.reason==="expired"))return await a();throw p}})}exchangeCollectionConsent(e){let t=this.consentGuard(e);return this.exclusive(async()=>{t();let i=this.state.consentRequest,o=this.state;if(!i)throw M("binding");if(i.completed)return this.collectionConsentView();let{status:s,value:r}=await this.consentWindow(i.requestId,()=>this.json(`/v1/pairing-requests/${i.requestId}/exchange`,!1,void 0,{bearer:i.secret}));t();let a=El(r),c=`status,request_id,account_id,connector_id,device_id,installation_id,kind,challenge,approval_mode,app_id,app_origin,expires_at${a}`,l=r.status==="scope_updated",p=l&&(Object.hasOwn(r,"selected_collection_id")||Object.hasOwn(r,"created_collection_ids")),d=l&&Object.hasOwn(r,"native_selection"),u=l?Object.hasOwn(r,"added_private_device_collection_ids")?"added_private_device_collection_ids":Object.hasOwn(r,"private_device_collection_ids")?"private_device_collection_ids":null:null;if(Ee(r,`${c}${l?",added_collection_ids,approved_create_collections":""}${u?`,${u}`:""}${p?",selected_collection_id,created_collection_ids":""}${d?",native_selection":""}${l?Zv(r):""}`),!l&&(s!==202||r.status!=="awaiting_approval")||l&&s!==200||r.request_id!==i.requestId||r.account_id!==o.selection.accountId||r.connector_id!==o.selection.connectorId||r.device_id!==o.deviceId||r.installation_id!==o.installationId||r.kind!==o.kind||r.app_id!==o.appId||r.app_origin!==o.origin||r.approval_mode!==o.selection.approvalMode||!Number.isSafeInteger(r.expires_at)||r.expires_at<0)throw M("binding");let f=ym(r);if(i.portalConfirmed&&!a)throw M("response");HI(i,f);let h=un(r.challenge,/^[0-9a-f]{64}$/);if(i.challenge!==null&&i.challenge!==h)throw M("binding");if(!l)return(i.challenge===null||a&&!i.portalConfirmed)&&await this.save({...o,consentRequest:{...i,...f,challenge:h}}),t(),this.collectionConsentView();let m=n.collectionIds(r.added_collection_ids),b=u?n.collectionIds(r[u]):[];if(b.length&&(i.requestedPrivateDevice!==!0||b.some(S=>m.includes(S)||o.collectionIds.includes(S)&&!o.privateDeviceCollectionIds?.includes(S)))||m.some(S=>o.privateDeviceCollectionIds?.includes(S)))throw M("response");let w=n.collectionIds([...m,...b]),g=[...new Set([...o.privateDeviceCollectionIds??[],...b])];if(typeof r.approved_create_collections!="boolean"||r.approved_create_collections&&!i.requestedCreateCollections)throw M("response");let y=n.collectionIds([...new Set([...o.collectionIds,...w])]),v=p?this.collectionSelection(r,y,i.requestId):void 0,_=d?this.parseNativeSelection(r.native_selection,i.requestId):void 0;if(d&&(p||w.length!==0||r.approved_create_collections!==!1||r.timer_consent===!0)||r.timer_consent===!0&&!v)throw M("response");let k=Yv(r,i.requestId,w,f.portalConfirmed===!0,v?.selectedCollectionId);return await this.save({...o,collectionIds:y,privateDeviceCollectionIds:g.length?g:void 0,nativeSelection:_,..._||!v&&b.length>0?{collectionSelection:void 0}:v?{collectionSelection:v}:{},...k?{timerConsent:k}:{},createCollections:o.createCollections||r.approved_create_collections,consentRequest:{...i,...f,challenge:h,completed:!0,addedCollectionIds:w,approvedCreateCollections:r.approved_create_collections}}),t(),this.collectionConsentView()})}listApprovedCollections(e){let t=this.consentGuard(e);return this.exclusive(async()=>{t();let i,o=this.options.freshRequestedPrivateDevice===!0&&(this.state.privateDeviceCollectionIds?.length??0)>0,s="/v1/next/collections?include=file_actions",r=f=>this.json(f,!1,void 0,{bearer:this.state.token,get:!0});try{i=await r(o?`${s},mode`:s),o&&i.status===200&&mL(i.value)&&(t(),i=await r(s))}catch(f){if(t(),f instanceof et&&f.reason==="unavailable"&&!f.server&&!Hv.has(f)&&this.state.collectionListing!==void 0)return Object.freeze(Xv(this.state.collectionListing).filter(h=>this.state.collectionIds.includes(h.collectionId)&&this.modeConsented(h)).map(h=>Object.freeze({...h,fileActions:Object.freeze([])})));if(f instanceof et&&(f.server||Hv.has(f))&&this.state.collectionListing!==void 0){let h={...this.state};delete h.collectionListing,await this.save(h),t()}throw f}t();let{status:a,value:c}=i;if(Ee(c,"collections"),a!==200)throw M("response");let l=Object.freeze(Xv(c.collections).filter(f=>this.modeConsented(f))),p=c.collections.filter(f=>this.state.collectionIds.includes(f.collection_id)).map(f=>{let h={...f};return delete h.file_actions,h}),d={...this.state};delete d.collectionListing;let u={...d,collectionListing:p};return await this.save(new TextEncoder().encode(JSON.stringify(u)).length<=128*1024?u:d),t(),l})}collectionRecoveries(){return this.check(),Object.freeze({...this.state.collectionRecoveries})}retireCollectionScope(e,t,i=null){let o=this.consentGuard(e);return this.exclusive(async()=>{if(o(),Ae(t),!(this.state.collectionIds.includes(t)||this.state.nativeGrants?.some(s=>s.collection_id===t)))throw M("binding");if(i!==null){if(Ae(i),this.state.collectionRecoveries?.[t]!==i)throw M("fenced")}else if(Object.hasOwn(this.state.collectionRecoveries??{},t))return;await this.saveRecovery(t,null),o()})}freshCollectionInstallation(e,t){let i=this.consentGuard(e);return this.exclusive(async()=>{if(i(),Ae(t),!Object.hasOwn(this.state.collectionRecoveries??{},t))throw M("binding");let o=this.state.collectionRecoveries[t];if(o!==null)return o;let s=crypto.randomUUID();return await this.saveRecovery(t,s),i(),s})}async saveRecovery(e,t){let i={...this.state,collectionRecoveries:{...this.state.collectionRecoveries,[e]:t}};new TextEncoder().encode(JSON.stringify(i)).length>128*1024&&delete i.collectionListing,await this.save(i)}startFileAccess(e,t,i,o){let s=this.consentGuard(e),r;try{if(Ae(t),r=Qv([...i],gm,!1),r.length!==i.length)throw M("binding")}catch{return Promise.reject(M("binding"))}return this.exclusive(async()=>{s();let a=crypto.getRandomValues(new Uint8Array(32));try{let c=crypto.randomUUID(),l=`pair_${btoa(String.fromCharCode(...a)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`,p=this.state,d=p.token,{status:u,value:f}=await this.json("/v1/pairing-requests",!1,{installation:{app_id:p.appId,request_id:c,pairing_secret:l,installation_id:p.installationId,device_id:p.deviceId,kind:p.kind,requested_create_collections:!1,reconsent:!0,file_access:{collection_id:t,actions:[...r],reason:o}}},{bearer:d});s(),Ee(f,"pairing_id,pairing_secret,verification_uri,expires_in,installation_device,app_id,app_origin,app_name");let h=`${p.cpOrigin}/pair/${c}`;if(u!==200&&u!==201||f.pairing_id!==c||f.pairing_secret!==l||f.verification_uri!==h||f.installation_device!==!0||f.app_id!==p.appId||f.app_origin!==p.origin||f.app_name!==this.options.appName||!Number.isSafeInteger(f.expires_in)||f.expires_in<0||f.expires_in>600||d!==this.state.token)throw M("response");return Object.freeze({requestId:c,secret:l,collectionId:t,actions:r,verificationUri:h,expiresAt:Date.now()+f.expires_in*1e3})}finally{a.fill(0)}})}exchangeFileAccess(e,t){let i=this.consentGuard(e);return this.exclusive(async()=>{i();let o=this.state,{status:s,value:r}=await this.json(`/v1/pairing-requests/${t.requestId}/exchange`,!1,void 0,{bearer:t.secret});if(i(),r.status==="pending"){if(Ee(r,"status"),s!==202)throw M("response");return Object.freeze({state:"pending"})}if(r.status==="account_selected"||r.status==="awaiting_approval"){if(Ee(r,`status,request_id,account_id,connector_id,device_id,installation_id,kind,challenge,approval_mode,app_id,app_origin,expires_at${El(r)}`),s!==202||r.request_id!==t.requestId||r.account_id!==o.selection?.accountId||r.installation_id!==o.installationId||r.device_id!==o.deviceId||r.app_id!==o.appId)throw M("binding");return Object.freeze({state:"pending"})}if(r.status==="declined"){if(Ee(r,"status,request_id"),s!==200||r.request_id!==t.requestId)throw M("response");return Object.freeze({state:"declined"})}if(Ee(r,"status,request_id,collection_id,file_actions"),s!==200||r.status!=="file_access_updated"||r.request_id!==t.requestId||r.collection_id!==t.collectionId)throw M("response");return Object.freeze({state:"granted",actions:Qv(r.file_actions,t.actions,!1)})})}renameApprovedCollection(e,t,i){let o;try{Ae(t),o=ii(i)}catch{return Promise.reject(M("binding"))}let s=this.consentGuard(e);return this.exclusive(async()=>{if(s(),!this.state.collectionIds.includes(t))throw M("refused");let{status:r,value:a}=await this.json(`/v1/next/collections/${t}/name`,!1,{display_name:o},{bearer:this.state.token,patch:!0});s();let c=Ee(a,"collection_id,display_name");if(r!==200||c.collection_id!==t||c.display_name!==o)throw M("response");return Object.freeze({collectionId:t,displayName:o})})}deleteApprovedCollection(e,t,i){let o;try{Ae(t),o=ii(i)}catch{return Promise.reject(M("binding"))}let s=this.consentGuard(e);return this.exclusive(async()=>{if(s(),!this.state.collectionIds.includes(t))throw M("refused");let{status:r,value:a}=await this.json(`/v1/next/collections/${t}`,!1,{confirm_name:o},{bearer:this.state.token,delete:!0});s();let c=Ee(a,"collection_id,deleted");if(r!==200||c.collection_id!==t||c.deleted!==!0)throw M("response");return Object.freeze({collectionId:t,deleted:!0})})}signOutInstallation(){return this.exclusive(async()=>{let e=this.state.token;if(!e)throw M("binding");try{let{status:t,value:i}=await this.json("/v1/next/installation",!1,void 0,{bearer:e,delete:!0});if(t!==200||i.ok!==!0||i.revoked!==!0||!Number.isSafeInteger(i.collections)||i.collections<0||i.fence!=="closed"&&i.fence!=="committed_with_degraded_fence")throw M("response");return"revoked"}catch(t){if(t instanceof et&&t.server?.status===401&&t.server.code==="invalid_connector")return"already_signed_out";throw t}})}hasWebPushChannel(){return this.check(),this.state.timerChannel?.kind==="web_push"}confirmPortalSelectedAccount(){return this.exclusive(async()=>{let e=this.state.selection;if(!e?.portalConfirmed)throw M("account_confirmation_required");if(this.state.confirmed||await this.save({...this.state,confirmed:!0}),this.check(),this.state.selection!==e)throw M("binding");return this.view()})}confirmSelectedAccount(e){return this.exclusive(async()=>{if(!this.state.selection||e!==this.state.selection.accountId)throw M("binding");return this.state.confirmed||await this.save({...this.state,confirmed:!0}),this.view()})}confirmedSelection(){if(this.check(),!this.state.confirmed||!this.state.selection)throw M("account_confirmation_required");let e=this.state,t=e.selection;return Object.freeze({accountId:t.accountId,connectorId:t.connectorId,installationId:e.installationId,deviceId:e.deviceId,kind:e.kind,cpOrigin:e.cpOrigin,approvalMode:t.approvalMode,isCurrent:()=>this.isCurrent()})}owned(e){let t=this.confirmedSelection();if(e.isCurrent()!==!0||e.scope.account!==t.accountId||e.scope.installation!==t.installationId)throw M("fenced")}prepareOriginalDevice(e){let t=e.isCurrent,i=()=>{try{return this.check(),this.owned(e),e.isCurrent===t}catch{return!1}};return this.exclusive(async()=>{if(!i())throw M("fenced");let o=this.state.nativeStarted?"existing":"fresh";if(this.state.nativeStarted||await this.save({...this.state,nativeStarted:!0}),!i())throw M("fenced");return Object.freeze({mode:o,pin:Object.freeze({...this.confirmedSelection(),isCurrent:i,installationOwned:i})})})}attest(e){let{runtime:t,custody:i,persistence:o,installation:s}=e,r=s.isCurrent,a=()=>{if(this.check(),this.owned(s),s.isCurrent!==r||!t.deviceCustodyCurrent(this.confirmedSelection(),i))throw M("fenced")};return this.exclusive(async()=>{if(a(),!this.state.nativeStarted)throw M("recovery_required");if(this.state.token)return this.view();if(!this.state.proof){await o.pending(new Uint8Array(i.envelope),{signal:this.lifetime.signal}),a();let d=Uint8Array.from(this.state.selection.challenge.match(/../g),f=>parseInt(f,16)),u=null;try{let f=t.signCpEnrol(d);u=f.signature,a(),await this.save({...this.state,proof:n.proof({sign_pk:ri(f.signPublicKey),kem_pk:ri(f.kemPublicKey),noise_pk:ri(f.noisePublicKey),sig:ri(u)})}),a()}finally{d.fill(0),u?.fill(0)}}let c=this.state.proof;if(c.sign_pk!==ri(i.signPublicKey)||c.kem_pk!==ri(i.kemPublicKey)||c.noise_pk!==ri(i.noisePublicKey))throw M("binding");let{status:l,value:p}=await this.json(`/v1/pairing-requests/${this.state.requestId}/attest`,!0,c);if(a(),Ee(p,"ok"),l!==200||p.ok!==!0)throw M("response");return this.view()})}receipt(){let e=this.state,t=e.proof;if(this.check(),!e.token||!t||!e.selection)throw M("binding");let i=o=>Uint8Array.from(o.match(/../g),s=>parseInt(s,16));return Object.freeze({connectorId:e.selection.connectorId,deviceId:e.deviceId,installationId:e.installationId,signPublicKey:i(t.sign_pk),kemPublicKey:i(t.kem_pk),noisePublicKey:i(t.noise_pk)})}acknowledge(e){let{runtime:t,custody:i,persistence:o,installation:s}=e,r=s.isCurrent,a=()=>{if(this.check(),this.owned(s),s.isCurrent!==r||!t.deviceCustodyCurrent(this.confirmedSelection(),i))throw M("fenced")};return this.exclusive(async()=>{a();let c=this.receipt();if(ri(c.signPublicKey)!==ri(i.signPublicKey)||ri(c.kemPublicKey)!==ri(i.kemPublicKey)||ri(c.noisePublicKey)!==ri(i.noisePublicKey))throw M("binding");return await o.registered(c,{signal:this.lifetime.signal}),a(),t.acknowledgeDeviceRegistration(c),a(),this.nativeAcknowledged=!0,c})}originalTimerChannel(e){if(this.check(),this.receipt(),!this.state.timerConsent?.approved||!this.state.timerConsent.grants.some(i=>i.grantId===e))throw M("fenced");let t=this.state.timerChannel;return t?.grantId===e?t:null}retainTimerChannel(e,t){return this.exclusive(async()=>{if(this.originalTimerChannel(e),t!==null&&Jv(t).grantId!==e)throw M("binding");await this.save({...this.state,timerChannel:t===null?void 0:Jv(t)}),this.originalTimerChannel(e)})}session(e){return this.receipt(),this.confirmedHostSession(e,this.state.environment)}confirmedHostSession(e,t){let i=this.confirmedSelection();if(t!==this.state.environment)throw M("binding");let o=new URL(e);if(o.origin!==e||o.protocol!=="https:"&&!!1||o.username||o.password)throw M("binding");return Object.freeze({...i,logOrigin:e,timerConsent:()=>(this.check(),this.state.timerConsent??null),connectorBearer:async({signal:s})=>{if(this.check(),s.aborted||!this.state.token)throw M("fenced");return this.state.token}})}async close(){this.closed||(this.closed=!0,this.lifetime.abort(),this.parent.removeEventListener("abort",this.onAbort),this.state.secret="",this.state.token=null,this.state.consentRequest&&(this.state.consentRequest.secret=""),this.state.renewal&&(this.state.renewal.secret=""),this.state.renewal=null),await this.store.close()}}});function e_(n){return/^[0-9a-f]{64}$/.test(n)?Uint8Array.from(n.match(/../g).map(e=>parseInt(e,16))):null}function JI(n){if(!(n instanceof Map))return!1;let e=n.get(3);return e instanceof Map?e.get(0)==="unauthenticated"&&(e.get(1)==="nonce"||e.get(1)==="replay"):!1}var yL,bm,XI=C(()=>{"use strict";yL="x-mdbase-next-nonce";bm=class{constructor(e=Date.now){this.now=e}now;spares=[];take(){for(let e=this.spares.pop();e;e=this.spares.pop()){let t=this.now()-e.at;if(t>=0&&t<4e4)return e.nonce;e.nonce.fill(0)}return null}keep(e){let t=e_(e.get(yL)??"");if(t)for(this.spares.push({nonce:t,at:this.now()});this.spares.length>6;)this.spares.shift().nonce.fill(0)}}});function ql(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw de("shape");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw de("shape");return e}function vm(n,e){let t=ql(n);if(t>BigInt(e))throw de("shape");return Number(t)}function Bs(n){if(!(n instanceof Map))throw de("shape");return n}function _m(n){let e=[];for(let[t,i]of n){if(typeof t!="number"||!Number.isSafeInteger(t)||t<0)throw de("shape");e.push([t,i])}return new Map(e.sort(([t],[i])=>t-i))}function Fs(n,e){if(!(n instanceof Uint8Array)||e!==void 0&&n.length!==e)throw de("shape");return n}function Am(n,e){return n.length===e.length&&n.every((t,i)=>t===e[i])}function ZI(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")}function QI(n){return btoa(String.fromCharCode(...n))}function n_(n,e){let t;try{t=new URL(n)}catch{throw de("binding")}if(t.username||t.password||t.pathname!=="/"||t.search||t.hash||t.protocol!=="https:"&&!(e&&Ye(n)))throw de("binding");return t.origin}function eC(n,e){let t=n.headers.get("content-length");return t!==null&&/^(0|[1-9][0-9]*)$/.test(t)&&Number(t)>e}function wL(n,e,t,i,o,s,r){let a=wm.encode("mdbase/v1/ls-http"),c=wm.encode(t),l=wm.encode("/v1/rpc"),p=wm.encode(o),d=Ge(p),u=Ge(s);p.fill(0);let f=new Uint8Array(1+a.length+c.length+1+l.length+1+16+96),h=0;for(let b of[Uint8Array.of(a.length),a,c,Uint8Array.of(0),l,Uint8Array.of(0),U(i),d,u,r])f.set(b,h),h+=b.length;let m=Ge(f);return f.fill(0),Object.freeze({endpoint:n,originalCallId:e,frame:s.slice(),token:o,method:t,path:"/v1/rpc",collection:i,nonce:r.slice(),bodyHash:u,tokenHash:d,digest:m})}var t_,hd,gL,bL,wm,kn,de,Tl,md=C(()=>{"use strict";bt();ar();Xe();be();Qn();XI();t_=16*1024*1024,hd=9*1024*1024,gL=new Set(["append","read","head","subscribe","unsubscribe","put_object","get_object","has_objects","put_snapshot","get_snapshot","endorse_snapshot","stream_join","stream_leave","stream_send"]),bL=new Set(["host","content-length","transfer-encoding","connection","keep-alive","upgrade","te","trailer","expect","range","cookie","authorization","proxy-authorization","origin","referer","accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","date","dnt","permissions-policy","set-cookie","via"]),wm=new TextEncoder,kn=class extends Error{constructor(t,i){super(`app log transport: ${t}`);this.reason=t;this.server=i;this.name="AppHttpLogError"}reason;server},de=n=>new kn(n);Tl=class{constructor(e,t={}){this.authority=e;try{if(this.endpointId=ql(e.endpoint),this.endpoint=this.endpointId,this.collection=e.collection,this.collectionBytes=U(this.collection),this.loopback=t.allowLoopbackHttp===!0,this.base=n_(e.origin,this.loopback),!Array.isArray(e.directOrigins)||e.directOrigins.length>32)throw de("binding");this.approved=new Set([this.base,...e.directOrigins.map(i=>n_(i,this.loopback))]),this.fetchImpl=t.fetch??globalThis.fetch,this.now=t.now??Date.now,this.spares=new bm(this.now)}catch{throw de("binding")}}authority;endpoint;collection;endpointId;collectionBytes;base;approved;fetchImpl;now;loopback;commitId=(1n<<64n)-1n;spares;responseId=0;receiving=new Map;responseProgress(){return[...this.receiving].map(([e,t])=>({id:e,bytes:t}))}isCurrent(){try{return this.authority.isCurrent()===!0&&ql(this.authority.endpoint)===this.endpointId&&this.authority.collection===this.collection&&n_(this.authority.origin,this.loopback)===this.base}catch{return!1}}check(e){if(e.aborted||!this.isCurrent())throw de("fenced")}request(e){if(e.length>t_)throw de("shape");let t=Bs(ce(e));if(t.get(0)!==0||typeof t.get(2)!="string")throw de("shape");let i=t.get(2),o=Bs(t.get(3));if(!gL.has(i)||!Am(Fs(o.get(0),16),this.collectionBytes))throw de("shape");return{id:ql(t.get(1)),method:i,params:o}}response(e,t){let i=Bs(ce(e));if(i.get(0)!==1||ql(i.get(1))!==t||i.has(2)===i.has(3))throw de("shape");return i}async fetch(e,t,i,o){this.check(i);let s=new AbortController,r=()=>s.abort();i.addEventListener("abort",r,{once:!0});let a=setTimeout(r,o);a.unref?.();try{let c=this.fetchImpl,l=(t.method??"GET")==="GET"?"no-store":"default",p=await c(e,{...t,signal:s.signal,redirect:"error",credentials:"omit",cache:l,referrerPolicy:"no-referrer"});if(!this.isCurrent()||i.aborted)throw p.body?.cancel().catch(()=>{}),de("fenced");return this.withCleanup(p,()=>{clearTimeout(a),i.removeEventListener("abort",r)})}catch{throw clearTimeout(a),i.removeEventListener("abort",r),de(i.aborted||!this.isCurrent()?"fenced":"unavailable")}}cleanups=new WeakMap;withCleanup(e,t){return this.cleanups.set(e,t),e}release(e){this.cleanups.get(e)?.(),this.cleanups.delete(e)}async read(e,t,i,o){let s=new Uint8Array(Math.min(1024,t)),r=0,a=null;try{if(this.check(i),eC(e,t))throw de("integrity");if(!e.body)return s.subarray(0,0);for(a=e.body.getReader();;){let{done:c,value:l}=await a.read();try{if(this.check(i),c)break;if(r+l.length>t)throw de("integrity");if(r+l.length>s.length){let p=new Uint8Array(Math.min(t,Math.max(s.length*2,r+l.length)));p.set(s.subarray(0,r)),s.fill(0),s=p}s.set(l,r),r+=l.length,o(l.length)}finally{l?.fill(0)}}return s.subarray(0,r)}catch(c){throw s.fill(0),(a?.cancel()??e.body?.cancel())?.catch(()=>{}),c}finally{a?.releaseLock(),this.release(e)}}async refusal(e,t,i){let o;try{let r=await this.read(e,8192,t,i);try{o=Co(r)}finally{r.fill(0)}}catch(r){if(r instanceof kn&&r.reason==="fenced")return r;o=void 0}let s=wi(e.status,o,e.headers);return new kn(Ot(s)??"unavailable",s)}async freshNonce(e,t){let i=await this.fetch(`${this.base}/v1/nonce`,{},e,15e3);if(!i.ok)throw await this.refusal(i,e,t);let o=await this.read(i,128,e,t);try{this.check(e);let s=e_(new TextDecoder("utf-8",{fatal:!0}).decode(o).trim());if(!s)throw de("shape");return s}finally{o.fill(0)}}async rpc(e,t,i,o,s,r=i,a=!0){this.check(o);let c=await this.authority.accessToken({signal:o});if(this.check(o),typeof c!="string"||!c||c.length>16*1024||/[\r\n]/.test(c))throw de("shape");let l=a?this.spares.take():null,p=l??await this.freshNonce(o,s);this.check(o);let d=wL(this.endpoint,r,t,this.collection,c,e,p);p.fill(0);let u=null;try{if(u=await this.authority.signLogProof(d,{signal:o}),this.check(o),!(u instanceof Uint8Array)||u.length!==64)throw de("shape");let f=await this.fetch(`${this.base}/v1/rpc`,{method:"POST",headers:{authorization:`Bearer ${c}`,"content-type":"application/cbor","x-mdbase-nonce":ZI(d.nonce),"x-mdbase-sig":ZI(u)},body:e},o,15e3);if(this.spares.keep(f.headers),f.status===401&&this.authority.invalidateToken?.(c),!f.ok)throw await this.refusal(f,o,s);let h=await this.read(f,t==="append"?64*1024:t_,o,s),m;try{this.check(o),m=JI(this.response(h,i))}catch(b){throw h.fill(0),b}return l&&m?(h.fill(0),await this.rpc(e,t,i,o,s,r,!1)):h}finally{u?.fill(0),d.frame.fill(0),d.nonce.fill(0),d.bodyHash.fill(0),d.tokenHash.fill(0),d.digest.fill(0)}}direct(e,t){let i=Bs(e),o=i.get(0),s=Bs(i.get(1)),r=i.get(2);if(typeof o!="string"||o.length>16*1024||typeof r!="number"||!Number.isSafeInteger(r))throw de("shape");let a;try{a=new URL(o)}catch{throw de("shape")}if(a.username||a.password||a.hash||!this.approved.has(a.origin))throw de("binding");let c=new Headers,l=new Set;if(s.size>32)throw de("shape");for(let[p,d]of s){if(typeof p!="string"||typeof d!="string")throw de("shape");let u=p.toLowerCase();if(!/^[a-z0-9!#$%&'*+.^_`|~-]+$/.test(u)||bL.has(u)||u.startsWith("proxy-")||u.startsWith("sec-")||u.startsWith("x-mdbase-")||u.startsWith("x-http-method")||l.has(u)||d.length>8*1024||/[\r\n]/.test(d))throw de("shape");if(u==="x-amz-checksum-sha256"&&d!==QI(t))throw de("integrity");l.add(u),c.set(u,d)}if(r-this.now()<=5e3)throw de("unavailable");return{url:a.href,headers:c,expires:r}}timeout(e,t){let i=e.expires-this.now();if(i<=5e3)throw de("unavailable");return Math.min(i,3e4+Math.ceil(t/(128*1024))*1e3)}async upload(e,t,i){this.check(i);let o;try{o=await this.fetch(e.url,{method:"PUT",headers:e.headers,body:t},i,this.timeout(e,t.length))}catch(s){if(this.check(i),s instanceof kn&&s.reason==="unavailable")return;throw s}try{if(this.check(i),o.ok||o.status===408||o.status===425||o.status===429||o.status>=500)return;throw de("unavailable")}finally{o.body?.cancel().catch(()=>{}),this.release(o)}}async download(e,t,i,o,s){let r=new Uint8Array(t),a=0,c=0;try{for(let l=0;l<32&&c<5;l++){this.check(o);let p=a,d=new Headers(e.headers);p>0&&d.set("range",`bytes=${p}-${t-1}`);let u;try{u=await this.fetch(e.url,{headers:d},o,this.timeout(e,t-p))}catch{this.check(o),c++;continue}let f=null;try{if(this.check(o),[401,403,404,410].includes(u.status))throw de("unavailable");if([408,425,429].includes(u.status)||u.status>=500){c++;continue}if(u.status!==(p===0?200:206)||eC(u,t-p)||(p>0?u.headers.get("content-range")!==`bytes ${p}-${t-1}/${t}`:u.headers.has("content-range"))||u.headers.has("content-encoding")&&u.headers.get("content-encoding")!=="identity")throw de("integrity");let h=u.headers.get("x-amz-checksum-sha256");if(h!==null&&h!==QI(i)||!u.body)throw de("integrity");for(f=u.body.getReader();;){let m;try{m=await f.read()}catch{this.check(o);break}try{if(this.check(o),m.done)break;if(m.value.length>t-a)throw de("integrity");r.set(m.value,a),a+=m.value.length,s(m.value.length)}finally{m.value?.fill(0)}}}finally{(f?.cancel()??u.body?.cancel())?.catch(()=>{}),f?.releaseLock(),this.release(u)}if(a===t){if(!Am(Ge(r),i))throw de("integrity");return r}c=a>p?0:c+1}throw de("unavailable")}catch(l){throw r.fill(0),l}}async send(e,t){let i=null,o=null,s=null,r=null,a=null,c=++this.responseId,l=0;this.receiving.set(c,l);let p=d=>{l+=d,this.receiving.set(c,l)};try{if(this.check(t.signal),ql(e.endpoint)!==this.endpointId||!(e.frame instanceof Uint8Array)||e.frame.length>t_||e.sidecar!==void 0&&(!(e.sidecar instanceof Uint8Array)||e.sidecar.length>hd))throw de("shape");i=e.frame.slice(),o=e.sidecar?.slice()??null;let d=this.request(i);if(o&&d.method!=="put_object")throw de("shape");if(d.method==="put_object"){let h=vm(d.params.get(3),hd),m=Fs(d.params.get(4),32),b=d.params.get(5);if(h===0||o!==null&&(b!==void 0||o.length<=1024*1024)||o===null&&h>1024*1024)throw de("shape");let w=o??Fs(b);if(w.length!==h||!Am(Ge(w),m))throw de("integrity")}s=await this.rpc(i,d.method,d.id,t.signal,p),this.check(t.signal);let u=this.response(s,d.id);if(u.has(3)){let h=s;return s=null,h}if(d.method==="put_object"){let h=Bs(u.get(2)),m=h.get(0);if(m===0||m===2){if(h.has(1))throw de("shape");let _=s;return s=null,_}if(m!==1||!o)throw de("shape");let b=Fs(d.params.get(4),32),w=Fs(d.params.get(1),32);if(await this.upload(this.direct(h.get(1),b),o,t.signal),this.check(t.signal),this.commitId===d.id||this.commitId===0n)throw de("unavailable");let g=this.commitId--;a=se(new Map([[0,0],[1,g],[2,"commit_object"],[3,new Map([[0,this.collectionBytes],[1,w]])]]));let y=await this.rpc(a,"commit_object",g,t.signal,p,d.id);try{this.check(t.signal);let _=this.response(y,g),k=_.get(2);if(_.has(3)||!(k instanceof Map)||k.size!==1||k.get(0)!==!0)throw de("unavailable")}finally{y.fill(0)}let v=new Map(h);return v.delete(1),v.set(0,0),u.set(2,_m(v)),se(_m(u))}if(d.method==="get_object"){let h=Bs(u.get(2)),m=vm(h.get(2),hd),b=Fs(h.get(3),32);if(m===0||h.has(0)===h.has(1))throw de("shape");let w=d.params.get(2),g=0,y=m;if(w!==void 0&&(!Array.isArray(w)||w.length!==2||(g=vm(w[0],hd),y=vm(w[1],hd),g>m||y>m-g)))throw de("shape");if(h.has(0)){let _=Fs(h.get(0));if(_.length!==y||y===m&&!Am(Ge(_),b))throw de("integrity");let k=s;return s=null,k}r=await this.download(this.direct(h.get(1),b),m,b,t.signal,p),this.check(t.signal);let v=new Map(h);return v.delete(1),v.set(0,r.subarray(g,g+y)),u.set(2,_m(v)),se(_m(u))}let f=s;return s=null,f}catch(d){if(d instanceof kn)throw d;if(t.signal.aborted||!this.isCurrent())throw de("fenced");let u=null;try{u=d.server}catch{}let f=Dn(u)?Ot(u):null;throw f&&Dn(u)?new kn(f,u):de("unavailable")}finally{this.receiving.delete(c),i?.fill(0),o?.fill(0),s?.fill(0),r?.fill(0),a?.fill(0)}}}});function tC(n,e){let t;try{t=new URL(n)}catch{throw ht("binding")}if(t.username||t.password||t.pathname!=="/"||t.search||t.hash||t.protocol!=="https:"&&!(e&&Ye(n)))throw ht("binding");return t.origin}function nC(n){if(typeof n=="number"&&!Number.isSafeInteger(n))throw ht("binding");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw ht("binding");return e}function vL(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")}function _L(n){if(!n||typeof n!="object"||Array.isArray(n))throw ht("response");return n}var Ci,ht,i_,Ll,yd=C(()=>{"use strict";bt();be();md();Qn();Ci=class extends Error{constructor(t,i){super(`app CP authority: ${t}`);this.reason=t;this.server=i;this.name="AppCpAuthorityError"}reason;server},ht=n=>new Ci(n),i_=n=>new Ci(Ot(n)??"unavailable",n);Ll=class{constructor(e,t,i={}){this.runtime=e;this.session=t;this.tokenCache=i.tokenCache??null;try{this.endpoint=nC(t.endpoint),this.collection=t.collection,this.connectorId=t.connectorId,this.deviceId=t.deviceId;for(let o of[this.collection,this.connectorId,this.deviceId])if(U(o).every(r=>r===0))throw ht("binding");if(this.rawCpOrigin=t.cpOrigin,this.rawLogOrigin=t.logOrigin,this.cpOrigin=tC(this.rawCpOrigin,i.allowLoopbackHttp===!0),this.origin=tC(this.rawLogOrigin,i.allowLoopbackHttp===!0),this.directOrigins=Object.freeze([...t.directOrigins]),this.now=i.now??Date.now,this.fetchImpl=i.fetch??globalThis.fetch,this.transport=new Tl(this,i),!this.scopeCurrent())throw ht("binding");e.bindCpConnector(t)}catch{throw ht("binding")}}runtime;session;endpoint;collection;origin;directOrigins;cpOrigin;connectorId;deviceId;rawCpOrigin;rawLogOrigin;now;fetchImpl;lifetime=new AbortController;authenticated=!1;token=null;tokenCache;cacheTried=!1;transport;scopeCurrent(){try{return!this.lifetime.signal.aborted&&this.session.isCurrent()===!0&&nC(this.session.endpoint)===this.endpoint&&this.session.collection===this.collection&&this.session.connectorId===this.connectorId&&this.session.deviceId===this.deviceId&&this.session.cpOrigin===this.rawCpOrigin&&this.session.logOrigin===this.rawLogOrigin}catch{return!1}}isCurrent(){return this.authenticated&&this.scopeCurrent()}check(e){if(!this.scopeCurrent())throw this.close(),ht("fenced");if(e.aborted)throw ht("fenced")}logTransport(){if(!this.isCurrent())throw ht("fenced");return this.transport}async signLogProof(e,t){if(this.check(t.signal),!this.authenticated)throw ht("fenced");return this.runtime.signLogHttp(e)}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort();o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let a=setTimeout(r,15e3);a.unref?.();let c=null,l=null,p=new Uint8Array(32*1024),d=0;try{let u=this.fetchImpl;if(c=await u(`${this.cpOrigin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted)throw ht("unavailable");let f=c.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>p.length)throw s.abort(),c.ok?ht("unavailable"):i_(wi(c.status,void 0,c.headers));if(!c.body)throw c.ok?ht("response"):i_(wi(c.status,void 0,c.headers));for(l=c.body.getReader();;){let{done:h,value:m}=await l.read();try{if(this.check(o),s.signal.aborted)throw ht("unavailable");if(h)break;if(d+m.length>p.length)throw s.abort(),ht("response");p.set(m,d),d+=m.length}finally{m?.fill(0)}}if(!c.ok)throw i_(wi(c.status,Co(p.subarray(0,d)),c.headers));return _L(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(p.subarray(0,d))))}catch(u){throw this.check(o),u instanceof Ci?u:ht("unavailable")}finally{p.fill(0),(l?.cancel()??c?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async accessToken(e){let t=null,i=null;try{if(this.check(e.signal),this.token&&this.token.expires-this.now()>5e3)return this.token.value;if(!this.token&&this.tokenCache&&!this.cacheTried){this.cacheTried=!0;let c=await this.tokenCache.read(this.cacheKey(),this.now());if(this.check(e.signal),c)return this.token={value:c.value,expires:c.expires},this.authenticated=!0,c.value}let o=await this.session.connectorBearer(e);if(this.check(e.signal),typeof o!="string"||!o||o.length>16*1024||/[^\x21-\x7e]/.test(o))throw ht("binding");let s=await this.json("/v1/next/devices/challenge",o,void 0,e.signal);if(this.check(e.signal),typeof s.challenge!="string"||!/^[0-9a-f]{64}$/.test(s.challenge)||typeof s.expires_at!="number"||!Number.isSafeInteger(s.expires_at)||s.expires_at-this.now()<=5e3||(t=Uint8Array.from(s.challenge.match(/../g).map(c=>parseInt(c,16))),i=this.runtime.signCpLogToken(t),this.check(e.signal),!(i instanceof Uint8Array)||i.length!==64))throw ht("response");let r=JSON.stringify({device_id:this.deviceId,challenge:s.challenge,sig:vL(i),capabilities:["collection_mode_switch_v1"]}),a=await this.json(`/v1/next/collections/${this.collection}/log-token`,o,r,e.signal);if(this.check(e.signal),typeof a.token!="string"||!a.token||a.token.length>16*1024||/[^\x21-\x7e]/.test(a.token)||typeof a.expires_at!="number"||!Number.isSafeInteger(a.expires_at)||a.expires_at-this.now()<=5e3||a.expires_at-this.now()>16*6e4)throw ht("response");return this.token={value:a.token,expires:a.expires_at},this.authenticated=!0,this.tokenCache?.write(this.cacheKey(),this.token).catch(()=>{}),a.token}catch(o){throw o instanceof Ci?o:ht(this.scopeCurrent()?"unavailable":"fenced")}finally{t?.fill(0),i?.fill(0)}}cacheKey(){return[this.rawCpOrigin,this.rawLogOrigin,this.connectorId,this.deviceId,this.collection].join(" ")}invalidateToken(e){this.token?.value===e&&(this.token=null,this.tokenCache?.drop(this.cacheKey()).catch(()=>{}))}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.token=null,this.authenticated=!1,this.runtime.retireLog())}}});function r_(n,e){if(typeof n!="string"||!n.length||n.length%2||n.length>e*2||!/^[0-9a-f]+$/.test(n))throw Se("response");return Uint8Array.from(n.match(/../g),t=>parseInt(t,16))}function o_(n){if(!n||typeof n!="object"||Array.isArray(n))throw Se("response");return n}var Sn,Se,AL,km,iC,jl,gd=C(()=>{"use strict";be();bt();$s();Qn();Sn=class extends Error{constructor(t,i=!1,o){super(`app cloud copy bootstrap: ${t}`);this.reason=t;this.retryable=i;this.server=o;this.name="AppCloudCopyBootstrapError"}reason;retryable;server},Se=(n,e=!1)=>new Sn(n,e),AL=new Set([408,429,500,502,503,504]),km=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),iC=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join("");jl=class{constructor(e,t,i,o,s={}){this.runtime=e;this.session=t;this.trust=i;this.persistence=o;try{if(this.storageCallbacks=Object.freeze({restore:o.restore,pending:o.pending,completed:o.completed}),this.scope=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,collection:t.collection,purpose:t.purpose,cpOrigin:t.cpOrigin,logOrigin:t.logOrigin}),this.callbacks=Object.freeze({current:t.isCurrent,owned:t.installationOwned,bearer:t.connectorBearer}),this.local=kr(i.environment),!1)throw Se("binding");this.loopback=s.allowLoopbackHttp===!0||this.local;for(let c of[this.scope.accountId,this.scope.connectorId,this.scope.deviceId,this.scope.installationId,this.scope.collection])if(U(c).every(l=>l===0))throw Se("binding");if(this.origin(this.scope.cpOrigin),this.origin(this.scope.logOrigin),i.schema!=="mdbn-app-trust/release/1"||!(["lab","staging","production"].includes(i.environment)||this.loopback&&i.environment==="test"||this.local)||i.cpOrigin!==this.scope.cpOrigin||i.logOrigin!==this.scope.logOrigin||!/^[0-9a-f]{64}$/.test(i.assetSha256)||i.source.repository!=="mdbase-dev/mdbase-connect"||!/^[0-9a-f]{40}$/.test(i.source.commit)||!i.source.version||i.source.version.length>64||!Array.isArray(i.trustedRoots)||i.trustedRoots.length<1||i.trustedRoots.length>64||!(i.policyPins instanceof Uint8Array)||!i.policyPins.length||i.policyPins.length>65536)throw Se("binding");this.trustFields=Object.freeze({schema:i.schema,environment:i.environment,assetSha256:i.assetSha256,...i.source}),this.roots=Object.freeze(i.trustedRoots.map(c=>{if(!(c instanceof Uint8Array)||c.length!==32||c.every(l=>l===0))throw Se("binding");return new Uint8Array(c)})),this.pins=new Uint8Array(i.policyPins);let r=s.displayName,a=r===void 0?void 0:ii(r);if(a!==void 0&&this.scope.purpose!=="create"||(this.operation=Object.freeze({...e.registeredDeviceReceipt(),...a===void 0?{}:{displayName:a},accountId:this.scope.accountId,collection:this.scope.collection,purpose:this.scope.purpose,assetSha256:i.assetSha256,cpOrigin:this.scope.cpOrigin,logOrigin:this.scope.logOrigin}),this.request=s.fetch??globalThis.fetch,this.now=s.now??Date.now,!this.current()))throw Se("binding")}catch{throw e.retireLog(),Se("binding")}}runtime;session;trust;persistence;attempted=!1;adopted=!1;originalSignal=null;completion=null;lifetime=new AbortController;scope;callbacks;trustFields;roots;pins;operation;storageCallbacks;request;now;loopback;local;origin(e){if(this.local&&!Bo(e))throw Se("binding");let t=new URL(e);if(t.origin!==e||t.username||t.password||t.protocol!=="https:"&&!(this.loopback&&Ye(e)))throw Se("binding");return t.origin}current(){try{let e=this.session,t=this.trust,i=this.trustFields;return!this.lifetime.signal.aborted&&!this.originalSignal?.aborted&&(this.adopted||this.runtime.cloudCopyCollectionCurrent(e))&&this.persistence.restore===this.storageCallbacks.restore&&this.persistence.pending===this.storageCallbacks.pending&&this.persistence.completed===this.storageCallbacks.completed&&e.isCurrent===this.callbacks.current&&e.installationOwned===this.callbacks.owned&&e.connectorBearer===this.callbacks.bearer&&this.callbacks.current.call(e)===!0&&this.callbacks.owned.call(e)===!0&&Object.entries(this.scope).every(([o,s])=>e[o]===s)&&t.cpOrigin===this.scope.cpOrigin&&t.logOrigin===this.scope.logOrigin&&t.schema===i.schema&&t.environment===i.environment&&t.assetSha256===i.assetSha256&&t.source.repository===i.repository&&t.source.commit===i.commit&&t.source.version===i.version&&t.trustedRoots.length===this.roots.length&&t.trustedRoots.every((o,s)=>km(o,this.roots[s]))&&km(t.policyPins,this.pins)}catch{return!1}}check(e){if(e.aborted||!this.current())throw this.close(),Se("fenced")}operationCopy(e){for(let t of["accountId","connectorId","deviceId","installationId","collection","purpose","cpOrigin","logOrigin","assetSha256","displayName"])if(e[t]!==this.operation[t])throw Se("response");for(let t of["signPublicKey","kemPublicKey","noisePublicKey"])if(!(e[t]instanceof Uint8Array)||!km(e[t],this.operation[t]))throw Se("response");return Object.freeze({...this.operation,signPublicKey:new Uint8Array(this.operation.signPublicKey),kemPublicKey:new Uint8Array(this.operation.kemPublicKey),noisePublicKey:new Uint8Array(this.operation.noisePublicKey)})}copy(e){if(!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis))throw Se("response");return Object.freeze({operation:this.operationCopy(e.operation),genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis})}async hash(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.length);o[0]=i.length,o.set(i,1),o.set(e,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));return this.check(t),`sha256:${iC(s)}`}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let c=new Uint8Array(1024*1024),l=0,p=null,d=null;try{let u=this.request;if(p=await u(`${this.scope.cpOrigin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"no-store",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted)throw Se("unavailable",!0);if(!p.ok){let h=await this.problem(p,o),m=Ot(h),b=!m&&AL.has(p.status);throw new Sn(m??(b?"unavailable":"refused"),b,h)}let f=p.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>c.length)throw s.abort(),Se("response");if(!p.body)throw Se("response");for(d=p.body.getReader();;){let{done:h,value:m}=await d.read();try{if(this.check(o),s.signal.aborted)throw Se("unavailable",!0);if(h)break;if(l+m.length>c.length)throw s.abort(),Se("response");c.set(m,l),l+=m.length}finally{m?.fill(0)}}try{return o_(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c.subarray(0,l))))}catch{throw Se("response")}}catch(u){throw this.check(o),u instanceof Sn?u:Se("unavailable",!0)}finally{c.fill(0),(d?.cancel()??p?.body?.cancel())?.catch(()=>{}),d?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async problem(e,t){let i=new Uint8Array(8192),o=0,s=e.body?.getReader();try{for(;s;){let{done:r,value:a}=await s.read();try{if(this.check(t),r)break;if(o+a.length>i.length){o=0;break}i.set(a,o),o+=a.length}finally{a?.fill(0)}}}catch{this.check(t),o=0}finally{s?.cancel().catch(()=>{}),s?.releaseLock()}try{return wi(e.status,o?Co(i.subarray(0,o)):void 0,e.headers)}finally{i.fill(0)}}async challenge(e,t){for(let i=0;i<3;i++)try{return await this.json("/v1/next/devices/challenge",e,void 0,t)}catch(o){if(!(o instanceof Sn)||o.reason!=="unavailable"||!o.retryable||i===2)throw o;this.check(t),await new Promise((s,r)=>{let a=()=>{clearTimeout(l),t.removeEventListener("abort",c),this.lifetime.signal.removeEventListener("abort",c);try{this.check(t),s()}catch(p){r(p)}},c=()=>a(),l=setTimeout(a,i===0?250:1e3);l.unref?.(),t.addEventListener("abort",c,{once:!0}),this.lifetime.signal.addEventListener("abort",c,{once:!0}),(t.aborted||this.lifetime.signal.aborted)&&a()})}throw Se("unavailable",!0)}async bootstrap(e){let{signal:t,reconcile:i}=e,o=Object.freeze({signal:t}),s=null,r=null;try{if(this.originalSignal??=t,t!==this.originalSignal||(this.check(t),this.attempted))throw Se("fenced");this.attempted=!0;let a=await this.storageCallbacks.restore.call(this.persistence,o);if(this.check(t),a.state==="completed"){let b=this.copy(a.metadata);if(await this.hash(b.genesisItem,t)!==b.expectedGenesis)throw Se("response");return this.completion=this.copy(b),b}if(a.state==="pending"){if(this.operationCopy(a.operation),i!=="explicit-unknown-outcome")throw Se("outcome_unknown")}else if(a.state!=="none")throw Se("response");await this.storageCallbacks.pending.call(this.persistence,this.operationCopy(this.operation),o),this.check(t);let c=await this.callbacks.bearer.call(this.session,o);if(this.check(t),typeof c!="string"||!c||c.length>16384||/[^\x21-\x7e]/.test(c))throw Se("binding");let l=await this.challenge(c,t);if(s=r_(l.challenge,32),s.length!==32||typeof l.expires_at!="number"||!Number.isSafeInteger(l.expires_at)||l.expires_at-this.now()<=5e3||l.expires_at-this.now()>16*6e4)throw Se("response");let p=this.scope.purpose==="create";if(r=p?this.runtime.signCloudCopyCreate(s):this.runtime.signCloudCopyJoin(s),this.check(t),r.length!==64)throw Se("response");let d;try{d=await this.json(p?"/v1/next/collections/cloud-copy":`/v1/next/collections/${this.scope.collection}/devices`,c,JSON.stringify({device_id:this.scope.deviceId,capabilities:["collection_mode_switch_v1"],challenge:l.challenge,sig:iC(r),...p?{collection_id:this.scope.collection,...this.operation.displayName===void 0?{}:{display_name:this.operation.displayName}}:{}}),t)}catch(b){throw b instanceof Sn&&b.reason==="unavailable"?Se("outcome_unknown"):b}if(d.collection_id!==this.scope.collection||d.log_url!==this.scope.logOrigin)throw Se("response");if(p){let b=r_(d.root_public_key,32);if(d.state!=="cloud-copy"||d.owner_account!==this.scope.accountId||!this.roots.some(w=>km(w,b)))throw Se("response")}else if(typeof d.enrolled_at!="number"||!Number.isSafeInteger(d.enrolled_at)||d.enrolled_at<1)throw Se("response");let u=o_(d.device);if(u.device_id!==this.scope.deviceId||typeof u.token!="string"||!u.token||u.token.length>16384||/[^\x21-\x7e]/.test(u.token)||typeof u.expires_at!="number"||!Number.isSafeInteger(u.expires_at)||u.expires_at-this.now()<=5e3||u.expires_at-this.now()>16*6e4)throw Se("response");let f=o_(d.genesis);if(f.seq!==1)throw Se("response");let h=r_(f.item,256*1024),m=this.copy({operation:this.operation,genesisItem:h,expectedGenesis:await this.hash(h,t)});return await this.storageCallbacks.completed.call(this.persistence,this.copy(m),o),this.check(t),this.completion=this.copy(m),m}catch(a){throw this.close(),a instanceof Sn?a:Se("unavailable")}finally{s?.fill(0),r?.fill(0)}}adoptCollection(e,t){let{signal:i,replicaId:o,endpoint:s,opened:r,sqliteVersion:a,cloudCopyOptIn:c}=e;try{if(this.check(i),this.adopted||!this.completion||i!==this.originalSignal||c!==!0)throw Se("binding");let l={replicaId:o,endpoint:s,opened:r,sqliteVersion:a,collection:this.scope.collection,deviceId:this.scope.deviceId,state:"cloud_copy",cloudCopyOptIn:!0,trustedRoots:this.roots.map(p=>new Uint8Array(p)),policyPins:new Uint8Array(this.pins),trustedSigners:[],expectedGenesis:this.completion.expectedGenesis};this.runtime.adoptDevice(l,t),this.adopted=!0,this.check(i)}catch(l){throw this.close(),l instanceof Sn?l:Se("unavailable")}}close(){this.completion=null,this.lifetime.abort(),this.runtime.retireLog()}}});function oC(n){try{if(n instanceof Gi)return n;if(n instanceof et){if(n.reason==="outcome_unknown")return new Gi("collection_delete_outcome_unknown");if(n.reason==="binding")return new Gi("collection_delete_invalid");let e=Io(n.server)?.code;if(e&&Object.hasOwn(rC,e))return new Gi(rC[e]);if(n.reason==="refused"&&!n.server)return new Gi("collection_delete_not_approved")}}catch{}return new Gi("collection_delete_failed")}var Gi,rC,sC=C(()=>{"use strict";fd();Qn();Gi=class extends Error{constructor(t){super(`collection delete: ${t}`);this.code=t;this.name="AppCollectionDeleteError"}code},rC=Object.assign(Object.create(null),{collection_name_mismatch:"collection_delete_name_mismatch",not_owner:"collection_delete_not_owner",not_found:"collection_delete_not_found",migration_frozen:"collection_delete_frozen",busy:"collection_delete_busy",not_member:"collection_delete_not_approved",device_not_enrolled:"collection_delete_not_approved",installation_collection_not_approved:"collection_delete_not_approved",installation_not_current:"collection_delete_sign_in",identity_not_current:"collection_delete_sign_in",device_revoked:"collection_delete_sign_in",invalid_request:"collection_delete_invalid"})});function aC(n){return typeof n=="string"&&/^[a-zA-Z0-9_-]{16,128}$/.test(n)}function a_(n,e){let t=()=>{throw new xe("application_worker_binding")};if(!Array.isArray(n)||n.length!==5||n[0]!==oi||n[1]!==e||!Number.isInteger(n[2])||n[2]<0||n[2]>Sm||n[2]===0&&n[3]!=="foreground"&&n[3]!=="approvalClosed"||n[2]!==0&&n[3]==="approvalClosed")return t();let i=n[3],o=n[4];["start","authorize","renewExpiredPairing","select","clearSelection","forget","refreshCollections","signOut","deleteCollection","requestFileAccess","pollFileAccess","openUnsynced","attachUnsynced","detachUnsynced","retireUnsynced","discardUnsynced","foreground","approvalClosed","close","unlock"].includes(i)||t();let s=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;if(i==="requestFileAccess")return(!Array.isArray(o)||o.length!==3||typeof o[0]!="string"||!s.test(o[0])||!Array.isArray(o[1])||!o[1].length||o[1].length>6||o[1].some(r=>typeof r!="string"||!["list","read","add","replace","move","delete"].includes(r))||typeof o[2]!="string"||!o[2]||o[2].length>140)&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],Object.freeze([...o[1]]),o[2]])]);if(i==="unlock")return(!Array.isArray(o)||o.length!==3||typeof o[0]!="string"||!s.test(o[0])||o[0]==="00000000-0000-0000-0000-000000000000"||o[1]!=="password"&&o[1]!=="recoveryKey"||!(o[2]instanceof Uint8Array)||!o[2].length||o[2].length>s_)&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],o[1],o[2]])]);if(i==="pollFileAccess")(typeof o!="string"||!s.test(o))&&t();else if(i==="select"||i==="forget")(typeof o!="string"||!o||o.length>256||/[\u0000-\u001f\u007f]/.test(o))&&t();else{if(i==="deleteCollection")return(!Array.isArray(o)||o.length!==2||typeof o[0]!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(o[0])||typeof o[1]!="string"||!o[1]||o[1].length>1024)&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],o[1]])]);if(i==="retireUnsynced")return(!Array.isArray(o)||o.length!==2||o.some(r=>typeof r!="string"||!s.test(r))||o[0]===o[1])&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],o[1]])]);i==="authorize"?o!==null&&(typeof o!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(o)||o==="00000000-0000-0000-0000-000000000000")&&t():i==="foreground"?typeof o!="boolean"&&t():i==="approvalClosed"?o!==!0&&t():o!==null&&t()}return Object.freeze([...n])}var oi,Sm,s_,xe,bd=C(()=>{"use strict";oi="mdbn-application-worker/1",Sm=4294967295,s_=4096,xe=class extends Error{constructor(t){super("SDK application Worker unavailable");this.code=t;this.name="ApplicationWorkerError"}code}});function Pm(n){let e=n.cpOrigin,t=n.signal,i=n.isCurrent,o=n.open,s=()=>{let f=!1;try{f=!t.aborted&&i()===!0}catch{}if(!f)throw new tn("application_popup_fenced")};s();let r;try{r=new URL(e)}catch{throw new tn("application_popup_binding")}let a=n.allowLoopbackHttp===!0&&Ye(e);if(r.origin!==e||r.username||r.password||r.search||r.hash||r.pathname!=="/"||r.protocol!=="https:"&&!a)throw new tn("application_popup_binding");let c;try{c=o()}catch{throw new tn("application_popup_unavailable")}if(c===null)throw new tn("application_popup_blocked");if(lC.has(c))throw new tn("application_popup_binding");lC.add(c);let l=!1,p=null,d=()=>{if(l){if(p)throw p;return}l=!0,t.removeEventListener("abort",u);try{c.close()}catch{throw p=new tn("application_popup_stop_failed"),p}},u=()=>{try{d()}catch{}};t.addEventListener("abort",u,{once:!0});try{s()}catch(f){throw d(),f}return Object.freeze({close:d,get closed(){try{return l||c.closed?.()===!0}catch{return!1}},focus(){if(s(),!l){try{c.focus?.()}catch{throw new tn("application_popup_unavailable")}s()}},navigate(f){if(s(),l)throw new tn("application_popup_fenced");let h;try{h=new URL(f)}catch{throw new tn("application_popup_binding")}if(h.origin!==e||h.username||h.password)throw new tn("application_popup_binding");try{c.navigate(h.href)}catch(m){throw m instanceof tn?m:new tn("application_popup_unavailable")}if(s(),l)throw new tn("application_popup_fenced")}})}function kL(){let n=0,e=0;try{let t=globalThis.window;n=Math.max(0,Math.round(t.screenX+(t.outerWidth-pC)/2)),e=Math.max(0,Math.round(t.screenY+(t.outerHeight-dC)/2))}catch{}return`popup,width=${pC},height=${dC},left=${Number.isFinite(n)?n:0},top=${Number.isFinite(e)?e:0}`}function xm(n,e,t,i=!1){return{cpOrigin:n,signal:e,isCurrent:t,allowLoopbackHttp:i,open(){let o=globalThis.window.open("about:blank","_blank",kL());if(!o)return null;let s=cC.get(o);if(s)return s;let r={navigate(a){if(o.closed)throw new tn("application_popup_fenced");o.location.href=a},close(){let a=!o.closed;if(o.close(),a)try{globalThis.window.focus()}catch{}},focus(){try{o.focus()}catch{}},closed:()=>o.closed};return cC.set(o,r),r}}}function uC(n,e,t,i,o=!1){return{cpOrigin:n,signal:e,isCurrent:t,allowLoopbackHttp:o,open(){let s=!1;return{navigate(r){let a=new URL(r);i.returnUrl!==void 0&&a.searchParams.set("return_url",i.returnUrl),s=!0,Promise.resolve().then(()=>i.open(a.href)).catch(()=>{})},close(){s&&i.close&&Promise.resolve().then(()=>i.close()).catch(()=>{})}}}}}var tn,lC,cC,pC,dC,l_=C(()=>{"use strict";bt();tn=class extends Error{constructor(t){super("application authorization popup unavailable");this.reason=t;this.name="ApplicationPortalError"}reason},lC=new WeakSet;cC=new WeakMap,pC=620,dC=760});function Vs(n,e=null){if(n instanceof Ke)return n;let t=n?.name??"",i=n instanceof Error?n.message:String(n),o=n?.resultCode,s=typeof o=="number"?o&255:null;return t==="QuotaExceededError"||/quota/i.test(i)||s===13?new Ke("Full",i,e):s===11||s===26||/malformed|not a database|SQLITE_CORRUPT|SQLITE_NOTADB/i.test(i)?new Ke("Corrupt",i,e):t==="NoModificationAllowedError"||s===5||s===6||/SQLITE_BUSY|SQLITE_LOCKED|NoModificationAllowed/i.test(i)?new Ke("Busy",i,e):s===1||s===19||s===20||s===25||/SQLITE_ERROR|SQLITE_CONSTRAINT|syntax/i.test(i)?new Ke("Sql",i,e):new Ke("Other",i,e)}function c_(n){if(typeof n=="bigint")return n;if(typeof n=="number"&&Number.isSafeInteger(n))return BigInt(n);throw new Ke("Other","SQLite integer is not losslessly represented")}var Ke,fC,hC,mC,yC,gC,SL,Im,p_=C(()=>{"use strict";Ke=class extends Error{constructor(t,i,o=null){super(`${t}${o===null?"":`@${o}`}(${i})`);this.kind=t;this.detail=i;this.stmt=o;this.name="IndexError"}kind;detail;stmt},fC=1,hC=2,mC=3,yC=4,gC=5;SL="CREATE TABLE IF NOT EXISTS _mdbn_host(k TEXT PRIMARY KEY, v) WITHOUT ROWID",Im=class n{constructor(e,t,i){this.sqlite3=e;this.db=t;this.info=i}sqlite3;db;info;cache=new Map;closed=!1;static open(e,t,i={}){try{let o=i.synchronous??"NORMAL";if(o!=="NORMAL"&&o!=="FULL")throw new Ke("Other","unsupported synchronous profile");if(i.pragmas!==!1&&(t.exec("PRAGMA locking_mode=EXCLUSIVE"),t.exec("PRAGMA journal_mode=WAL"),t.exec(`PRAGMA synchronous=${o}`)),i.verifyPragmas&&(String(t.selectValue("PRAGMA locking_mode")).toLowerCase()!=="exclusive"||String(t.selectValue("PRAGMA journal_mode")).toLowerCase()!=="wal"||t.selectValue("PRAGMA synchronous")!==(o==="FULL"?2:1)))throw new Ke("Other","SQLite did not apply the requested storage profile");let s=t.selectValue("SELECT count(*) FROM sqlite_master WHERE name='_mdbn_host'")>0,r=t.selectValue("SELECT count(*) FROM sqlite_master");t.exec(SL);let a="Fresh";return s?a=t.selectValue("SELECT v FROM _mdbn_host WHERE k='clean'")===1?"Existing":"Unclean":r>0&&(a="Unclean"),t.exec("INSERT OR REPLACE INTO _mdbn_host(k, v) VALUES ('clean', 0)"),new n(e,t,{durability:"Disposable",opened:a,sqliteVersion:e.capi.sqlite3_libversion_number(),quotaSuspect:i.quotaSuspect??!1})}catch(o){throw Vs(o)}}prepare(e){let t=this.cache.get(e);return t||(t=this.db.prepare(e),this.cache.set(e,t)),t}bind(e,t){e.clearBindings(),t.forEach((i,o)=>{let s=o+1;switch(i.kind){case"Null":e.bind(s,null);break;case"Integer":e.bind(s,i.value);break;case"Real":e.bind(s,i.value);break;case"Text":e.bind(s,i.value);break;case"Blob":e.bindAsBlob(s,i.value);break}})}column(e,t){let i=this.sqlite3.capi;switch(i.sqlite3_column_type(e.pointer,t)){case gC:return{kind:"Null"};case fC:{let o=i.sqlite3_column_int64(e.pointer,t);return{kind:"Integer",value:c_(o)}}case hC:return{kind:"Real",value:i.sqlite3_column_double(e.pointer,t)};case mC:return{kind:"Text",value:e.getString(t)};case yC:return{kind:"Blob",value:e.getBlob(t)??new Uint8Array(0)};default:return{kind:"Null"}}}run(e,t){if(this.closed)throw new Ke("Other","index closed");let i=this.sqlite3.capi,o=e.mode==="Transaction",s=[],r=0,a=0,c=13,l=p=>{if(t){if(!Number.isSafeInteger(p)||p<0||p>t.maxBytes-c)throw new Ke("Full","index reply byte budget exceeded");c+=p}};if(t&&([t.maxBytes,t.maxRows,t.maxValues,t.maxColumns].some(p=>!Number.isSafeInteger(p)||p<0)||t.maxBytes<c))throw new Ke("Full","invalid index reply budget");if(o)try{this.db.exec("BEGIN IMMEDIATE")}catch(p){throw Vs(p)}for(let p=0;p<e.stmts.length;p++){let d=e.stmts[p];try{let u=this.prepare(d.sql);try{this.bind(u,d.params);let f=u.columnCount;if(t&&(!Number.isSafeInteger(f)||f<0||f>t.maxColumns))throw new Ke("Full","index reply column budget exceeded");l(24);let h=[];for(;u.step();){if(t&&++r>t.maxRows)throw new Ke("Full","index reply row budget exceeded");for(let m=0;m<f;m++){if(t){if(++a>t.maxValues)throw new Ke("Full","index reply value budget exceeded");let b=i.sqlite3_column_type(u.pointer,m);if(b===mC||b===yC)l(5),l(i.sqlite3_column_bytes(u.pointer,m));else if(b===fC||b===hC)l(9);else if(b===gC)l(1);else throw new Ke("Other","unknown SQLite value type")}h.push(this.column(u,m))}}s.push({columns:f,values:h,changes:c_(i.sqlite3_changes(this.db.pointer)),lastInsertRowid:c_(i.sqlite3_last_insert_rowid(this.db.pointer))})}finally{u.reset()}}catch(u){if(o)try{this.db.exec("ROLLBACK")}catch{}throw Vs(u,p)}}if(o)try{this.db.exec("COMMIT")}catch(p){try{this.db.exec("ROLLBACK")}catch{}throw Vs(p)}return s}close(e={}){if(!this.closed){this.closed=!0;for(let t of this.cache.values())try{t.finalize()}catch{}if(this.cache.clear(),e.markClean!==!1)try{this.db.exec("INSERT OR REPLACE INTO _mdbn_host(k, v) VALUES ('clean', 1)")}catch{}this.db.close()}}}});function OL(n){let e=new d_(n);if(!e.take(8).every((r,a)=>r===wC[a]))throw Wt();let t=e.byte();if(t===1)throw e.done(),new Ke("Other","app database reset requires explicit recovery; automatic wipe refused");if(t!==0)throw Wt();let i=e.byte();if(i>1)throw Wt();let o=e.count(Fn.maxStatements,8),s=[];for(let r=0;r<o;r++){let a=e.text(Fn.maxSqlBytes),c=e.count(Fn.maxParameters,1),l=[];for(let p=0;p<c;p++)l.push(e.value());s.push({sql:a,params:l})}return e.done(),{mode:i===0?"Transaction":"Autocommit",stmts:s}}function RL(n,e){if(!Array.isArray(n)||n.length!==e)throw Wt();let t=new Cm(2);t.u32(n.length);let i=0;for(let o of n){if(!Number.isSafeInteger(o.columns)||o.columns<0||o.columns>Fn.maxColumns)throw Wo();if(!Array.isArray(o.values)||(o.columns===0?o.values.length!==0:o.values.length%o.columns!==0))throw Wt();if(i+=o.columns===0?0:o.values.length/o.columns,i>Fn.maxRows||o.values.length>Fn.maxValues)throw Wo();t.u32(o.columns),t.int(o.changes,!1),t.int(o.lastInsertRowid,!0),t.u32(o.values.length);for(let s of o.values)t.value(s)}return t.done()}function EL(n,e){let t=n instanceof Ke?n.kind:"Other",i={Sql:0,Corrupt:1,Full:2,Busy:3,Other:4},o=new Cm(3);o.byte(i[t]);let s=n instanceof Ke?n.stmt:null;return e!==null&&s!==null&&Number.isSafeInteger(s)&&s>=0&&s<e?(o.byte(1),o.u32(s)):o.byte(0),o.data(vC.encode("app index operation failed; reopen and reconcile")),o.done()}function bC(n,e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<0||t<0||e>4294967295||t>4294967295||e>n.buffer.byteLength||t>n.buffer.byteLength-e)throw Wt()}function _C(n,e){let t=!1,i=!1;return(o,s)=>{if(t)throw i=!0,n.fence(),Wt();t=!0,i=!1;try{let r=e();if(bC(r.memory,o,s),s>Fn.maxBytes)throw n.fence(),Wo();let a=n.run(new Uint8Array(r.memory.buffer,o,s).slice()),c=r.alloc(a.length);if(bC(r.memory,c,a.length),i||c===0||c<o+s&&o<c+a.length)throw Wt();return new Uint8Array(r.memory.buffer,c,a.length).set(a),BigInt(c)<<32n|BigInt(a.length)}catch(r){throw n.fence(),r}finally{t=!1}}}var wC,Fn,PL,xL,IL,Wt,Wo,CL,vC,d_,Cm,Om,AC=C(()=>{"use strict";p_();wC=Uint8Array.of(77,68,66,73,68,88,0,1),Fn=Object.freeze({maxBytes:4*1024*1024,maxStatements:16384,maxValues:131072,maxRows:4096,maxColumns:100,maxSqlBytes:100*1024,maxParameters:100}),PL=-(1n<<63n),xL=(1n<<63n)-1n,IL=(1n<<64n)-1n,Wt=()=>new Ke("Other","invalid app index ABI"),Wo=()=>new Ke("Full","app index ABI budget exceeded"),CL=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}),vC=new TextEncoder,d_=class{constructor(e){this.bytes=e;if(e.length>Fn.maxBytes)throw Wo();this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}bytes;pos=0;values=0;view;take(e){if(!Number.isSafeInteger(e)||e<0||e>this.bytes.length-this.pos)throw Wt();let t=this.bytes.subarray(this.pos,this.pos+e);return this.pos+=e,t}byte(){return this.take(1)[0]}u32(){let e=this.pos;return this.take(4),this.view.getUint32(e,!0)}count(e,t){let i=this.u32();if(i>e)throw Wo();if(i>Math.floor((this.bytes.length-this.pos)/t))throw Wt();return i}data(e){return this.take(this.count(e,1))}text(e){return CL.decode(this.data(e))}value(){if(++this.values>Fn.maxValues)throw Wo();switch(this.byte()){case 0:return{kind:"Null"};case 1:{let e=this.pos;return this.take(8),{kind:"Integer",value:this.view.getBigInt64(e,!0)}}case 2:{let e=this.pos;this.take(8);let t=this.view.getFloat64(e,!0);if(!Number.isFinite(t))throw Wt();return{kind:"Real",value:t}}case 3:return{kind:"Text",value:this.text(Fn.maxBytes)};case 4:return{kind:"Blob",value:this.data(Fn.maxBytes).slice()};default:throw Wt()}}done(){if(this.pos!==this.bytes.length)throw Wt()}};Cm=class{parts=[];length=0;values=0;constructor(e){this.put(wC),this.byte(e)}put(e){if(e.length>Fn.maxBytes-this.length)throw Wo();this.length+=e.length,this.parts.push(e)}byte(e){this.put(Uint8Array.of(e))}u32(e){if(!Number.isSafeInteger(e)||e<0||e>4294967295)throw Wt();let t=new Uint8Array(4);new DataView(t.buffer).setUint32(0,e,!0),this.put(t)}int(e,t){if(typeof e!="bigint"||e<(t?PL:0n)||e>(t?xL:IL))throw Wt();let i=new Uint8Array(8),o=new DataView(i.buffer);t?o.setBigInt64(0,e,!0):o.setBigUint64(0,e,!0),this.put(i)}data(e){this.u32(e.length),this.put(e)}value(e){if(++this.values>Fn.maxValues)throw Wo();switch(e.kind){case"Null":this.byte(0);return;case"Integer":this.byte(1),this.int(e.value,!0);return;case"Real":{if(!Number.isFinite(e.value))throw Wt();this.byte(2);let t=new Uint8Array(8);new DataView(t.buffer).setFloat64(0,e.value,!0),this.put(t);return}case"Text":this.byte(3),this.data(vC.encode(e.value));return;case"Blob":this.byte(4),this.data(e.value);return;default:throw Wt()}}done(){let e=new Uint8Array(this.length),t=0;for(let i of this.parts)e.set(i,t),t+=i.length;return e}};Om=class{constructor(e){this.index=e}index;fenced=!1;get needsRecovery(){return this.fenced||this.index.needsRecovery}fence(){this.fenced=!0,this.index.fence()}run(e){let t=null;try{if(this.needsRecovery)throw Wt();let i=OL(e);t=i.stmts.length;let o=Fn;return RL(this.index.run(i,o),t)}catch(i){return this.fence(),EL(i,t)}}}});function f_(n){let e=[n.account,n.installation,n.collection];if(e.some(i=>!ML.test(i)))throw new Ke("Other","invalid app storage scope");let t=`mdbase-app-${e.map(i=>i.toLowerCase()).join("-")}`;return{vfs:t,directory:`.${t}`}}async function kC(n,e){let t=f_(e),i,o,s;try{i=await n.installOpfsSAHPoolVfs({name:t.vfs,directory:t.directory,initialCapacity:6}),i.isPaused?.()&&await i.unpauseVfs(),o=new i.OpfsSAHPoolDb("/app.db");let r=Im.open(n,o,{synchronous:"FULL",verifyPragmas:!0});if(s=new u_(r),r.info.opened==="Unclean"){let a=s.run({mode:"Autocommit",stmts:[{sql:"PRAGMA quick_check",params:[]}]}),c=a[0]?.values;if(a.length!==1||c?.length!==1||c[0]?.kind!=="Text"||c[0].value!=="ok")throw s=void 0,r.close({markClean:!1}),o=void 0,new Ke("Corrupt","app database integrity check failed; recovery required")}return{index:s,pool:i}}catch(r){let a=!1;try{s?s.close():o?.close()}catch{a=!0}try{i?.pauseVfs?.()}catch{a=!0}let c=Vs(r);throw new Ke(a?"Other":c.kind,"app SQLite open failed; recovery required",c.stmt)}}var ML,u_,SC=C(()=>{"use strict";p_();ML=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;u_=class{constructor(e){this.inner=e}inner;fenced=!1;closed=!1;get info(){return this.inner.info}get needsRecovery(){return this.fenced}fence(){this.fenced=!0}run(e,t){if(this.closed||this.fenced)throw new Ke("Other","app database fenced or closed; reopen and reconcile");try{return t?this.inner.run(e,t):this.inner.run(e)}catch(i){this.fenced=!0;let o=Vs(i);throw new Ke(o.kind,"app SQLite operation failed; reopen and reconcile",o.stmt)}}reset(){throw new Ke("Other","app database reset requires explicit recovery; automatic wipe refused")}close(){this.closed||(this.closed=!0,this.inner.close({markClean:!this.fenced}))}}});function PC(n){let e=Object.freeze({...n});if(!/^[0-9a-f]{64}$/.test(e.wasmSha256)||!Number.isSafeInteger(e.maxWasmBytes)||e.maxWasmBytes<1||e.maxWasmBytes>4*1024*1024||typeof e.loadWasm!="function"||typeof e.initialize!="function")throw Ul("binding");return async({scope:t,signal:i})=>{let o=Object.freeze({account:t.account,installation:t.installation,collection:t.collection});f_(o);let s=()=>{if(i.aborted||Object.entries(o).some(([y,v])=>t[y]!==v))throw Ul("fenced")};s();let r=globalThis.WorkerGlobalScope;if(typeof r!="function"||!(globalThis instanceof r))throw Ul("unsupported");let a=await e.loadWasm({signal:i});if(s(),!(a instanceof Uint8Array)||a.byteLength<1||a.byteLength>e.maxWasmBytes)throw Ul("binding");let c=new Uint8Array(a),l=new Uint8Array(await crypto.subtle.digest("SHA-256",c));if(s(),Array.from(l,y=>y.toString(16).padStart(2,"0")).join("")!==e.wasmSha256)throw Ul("binding");let p=await e.initialize({wasmBinary:c,print(){},printErr(){}});s();let d=await kC(p,o),u=d.index,f=new Om(u),h={import:y=>_C(f,y),fence:()=>f.fence(),get needsRecovery(){return f.needsRecovery}},m=y=>({kind:"Text",value:y}),b=Object.freeze({list(y){let[v]=u.run({mode:"Autocommit",stmts:[{sql:"SELECT v FROM _mdbn_host WHERE k >= 'w:' AND k < 'w;' ORDER BY k LIMIT 1024",params:[]}]}),_=[],k=0;for(let S of v?.values??[])if(S.kind==="Text"){if(k+=S.value.length,k>y)break;_.push(S.value)}return _},put(y,v){u.run({mode:"Autocommit",stmts:[{sql:"INSERT OR REPLACE INTO _mdbn_host(k, v) VALUES (?, ?)",params:[m(`w:${y}`),m(v)]}]})},remove(y){u.run({mode:"Autocommit",stmts:[{sql:"DELETE FROM _mdbn_host WHERE k = ?",params:[m(`w:${y}`)]}]})}}),w=null,g=()=>w??=Promise.resolve().then(async()=>{try{u.close(),await d.pool.pauseVfs()}catch{throw f.fence(),Ul("unavailable")}});return(i.aborted||Object.entries(o).some(([y,v])=>t[y]!==v))&&f.fence(),Object.freeze({sql:h,opened:{Fresh:"fresh",Existing:"existing",Unclean:"unclean"}[u.info.opened],sqliteVersion:u.info.sqliteVersion,ledger:b,close:g})}}var h_,Ul,xC=C(()=>{"use strict";SC();AC();h_=class extends Error{constructor(t){super(`app collection SQL: ${t}`);this.reason=t;this.name="AppCollectionSqlError"}reason},Ul=n=>new h_(n)});var no,m_=C(()=>{"use strict";no=Object.freeze({plaintextBytes:524288,operations:64,readbacks:128,pathCodeUnits:1024})});function ie(n){throw new xn(n)}function Pn(n,e){return Object.keys(n).sort().join()===e}function y_(n){return(!n||!Pn(n,"account,collection,installation")||Object.values(n).some(e=>typeof e!="string"||!g_.test(e)||e==="00000000-0000-0000-0000-000000000000"))&&ie("binding"),Object.freeze({account:n.account,installation:n.installation,collection:n.collection})}function IC(n){for(let e of n){let t=e.charCodeAt(0);if(t<32||t===127)return!0}return n.includes("\\")}function qL(n){(!Array.isArray(n)||n.length!==2)&&ie("binding");let e=n.map(t=>((!t||typeof t!="object"||!Pn(t,"doc,kind,mustNotExist,path")||t.kind!=="resource_put"||t.mustNotExist!==!0||typeof t.path!="string"||typeof t.doc!="string"||!t.doc.length||t.path.length>1024||!t.path.endsWith(".md")||t.path.startsWith("/")||IC(t.path)||t.path.split("/").some(i=>!i||i==="."||i===".."))&&ie("binding"),Object.freeze({kind:"resource_put",path:t.path,doc:t.doc,mustNotExist:!0})));return(e[0].path===e[1].path||xr.encode(JSON.stringify(e)).byteLength>Yi)&&ie("binding"),Object.freeze(e)}function vd(n){return typeof n=="string"&&n.length>0&&n.length<=no.pathCodeUnits&&!n.startsWith("/")&&!IC(n)&&!n.split("/").some(e=>!e||e==="."||e==="..")}function Ws(n){let e=n;(!e||typeof e!="object"||!Pn(e,"assessmentDigest,ops,pack,readback")||!e.pack||typeof e.pack!="object"||!Pn(e.pack,"digest,id,version")||typeof e.pack.id!="string"||!e.pack.id.length||typeof e.pack.version!="string"||!e.pack.version.length||typeof e.pack.digest!="string"||!Ks.test(e.pack.digest)||typeof e.assessmentDigest!="string"||!Ks.test(e.assessmentDigest)||!Array.isArray(e.ops)||!e.ops.length||e.ops.length>no.operations||!Array.isArray(e.readback)||!e.readback.length||e.readback.length>no.readbacks)&&ie("binding");let t=e.ops.map(r=>{(!r||typeof r!="object"||!vd(r.path)||"baseRevision"in r&&(typeof r.baseRevision!="string"||!Ks.test(r.baseRevision)))&&ie("binding");let a="baseRevision"in r?{baseRevision:r.baseRevision}:{};return r.kind==="resource_put"?((!Pn(r,"baseRevision"in r?"baseRevision,doc,kind,mustNotExist,path":"doc,kind,mustNotExist,path")||typeof r.doc!="string"||typeof r.mustNotExist!="boolean")&&ie("binding"),Object.freeze({kind:r.kind,path:r.path,doc:r.doc,...a,mustNotExist:r.mustNotExist})):((r.kind!=="resource_delete"||!Pn(r,"baseRevision"in r?"baseRevision,kind,path":"kind,path"))&&ie("binding"),Object.freeze({kind:r.kind,path:r.path,...a}))}),i=new Set,o=e.readback.map(r=>((!r||typeof r!="object"||!Pn(r,"doc,path")||!vd(r.path)||r.doc!==null&&typeof r.doc!="string"||i.has(r.path))&&ie("binding"),i.add(r.path),Object.freeze({path:r.path,doc:r.doc})));for(let r of t){let a=o.find(c=>c.path===r.path);(!a||a.doc!==(r.kind==="resource_put"?r.doc:null))&&ie("binding")}let s=Object.freeze({pack:Object.freeze({id:e.pack.id,version:e.pack.version,digest:e.pack.digest}),assessmentDigest:e.assessmentDigest,ops:Object.freeze(t),readback:Object.freeze(o)});return xr.encode(JSON.stringify(s)).byteLength>Yi&&ie("binding"),s}function $t(n){let e=n;(!e||typeof e!="object"||!Pn(e,Object.hasOwn(e,"planKind")?"assessmentDigest,packs,planKind,provisionDigest,resourceOps,resourceReadback,sources":Object.hasOwn(e,"sourcePolicy")?"assessmentDigest,packs,provisionDigest,resourceOps,resourceReadback,sourcePolicy,sources":"assessmentDigest,packs,provisionDigest,resourceOps,resourceReadback,sources")||Object.hasOwn(e,"sourcePolicy")&&(e.sourcePolicy!=="current-only"||e.sources?.length!==0)||typeof e.assessmentDigest!="string"||!Ks.test(e.assessmentDigest)||typeof e.provisionDigest!="string"||!Ks.test(e.provisionDigest)||!Array.isArray(e.packs)||!e.packs.length&&e.planKind!=="configuration-only"||e.packs.length>16||!Array.isArray(e.resourceOps)||!Array.isArray(e.sources)||!e.resourceOps.length&&!e.sources.length||e.resourceOps.length+e.sources.length>no.operations||!Array.isArray(e.resourceReadback)||!e.resourceReadback.length||e.resourceReadback.length+e.sources.length>no.readbacks)&&ie("binding"),Object.hasOwn(e,"planKind")&&(e.planKind!=="configuration-only"||e.packs.length!==0||!e.resourceOps.length||e.resourceOps.some(p=>!p||p.kind!=="resource_put"||!["mdbase.yaml","mdbase.provisions.yaml"].includes(p.path)))&&ie("binding");let t=new Set,i=e.packs.map(p=>((!p||typeof p!="object"||!Pn(p,"digest,id,version")||typeof p.id!="string"||!p.id.length||p.id.length>150||t.has(p.id)||typeof p.version!="string"||!p.version.length||p.version.length>256||typeof p.digest!="string"||!Ks.test(p.digest))&&ie("binding"),t.add(p.id),Object.freeze({...p}))),o=new Set,s=e.resourceReadback.map(p=>((!p||typeof p!="object"||!Pn(p,"doc,path")||!vd(p.path)||o.has(p.path)||p.doc!==null&&typeof p.doc!="string")&&ie("binding"),o.add(p.path),Object.freeze({...p}))),r=e.resourceOps.map(p=>{(!p||typeof p!="object"||!vd(p.path))&&ie("binding");let d=Object.hasOwn(p,"baseRevision");d&&(typeof p.baseRevision!="string"||!Ks.test(p.baseRevision))&&ie("binding"),p.kind==="resource_put"?(!Pn(p,d?"baseRevision,doc,kind,mustNotExist,path":"doc,kind,mustNotExist,path")||typeof p.doc!="string"||typeof p.mustNotExist!="boolean"||(p.mustNotExist?d:!d))&&ie("binding"):(p.kind!=="resource_delete"||!d||!Pn(p,"baseRevision,kind,path"))&&ie("binding");let u=s.find(f=>f.path===p.path);return(!u||u.doc!==(p.kind==="resource_put"?p.doc:null))&&ie("binding"),Object.freeze({...p})}),a=new Set,c=e.sources.map(p=>((!p||typeof p!="object"||!Pn(p,"document,id,path")||!vd(p.path)||o.has(p.path)||typeof p.id!="string"||!g_.test(p.id)||p.id==="00000000-0000-0000-0000-000000000000"||a.has(p.id)||typeof p.document!="string"||!p.document.length)&&ie("binding"),o.add(p.path),a.add(p.id),Object.freeze({...p}))),l=Object.freeze({...e.planKind==="configuration-only"?{planKind:e.planKind}:{},...e.sourcePolicy==="current-only"?{sourcePolicy:e.sourcePolicy}:{},assessmentDigest:e.assessmentDigest,provisionDigest:e.provisionDigest,packs:Object.freeze(i),resourceOps:Object.freeze(r),resourceReadback:Object.freeze(s),sources:Object.freeze(c)});return xr.encode(JSON.stringify(l)).byteLength>Yi&&ie("binding"),l}function Ht(n,e,t=0){t>8&&ie("binding");let i=n;(!i||typeof i!="object"||i.version!==1&&i.version!==2&&i.version!==3&&i.version!==4||!Pn(i,i.version===1?"mutationId,ops,phase,scope,version":i.version===4?"mutationId,phase,plan,previous,scope,version":"mutationId,phase,plan,scope,version")||typeof i.mutationId!="string"||!g_.test(i.mutationId)||i.mutationId==="00000000-0000-0000-0000-000000000000"||!(wd.includes(i.phase)||i.phase==="rejected"&&(i.version===3||i.version===4)))&&ie("recovery_required");let o=y_(i.scope);if(JSON.stringify(o)!==JSON.stringify(e)&&ie("binding"),i.version===1)return Object.freeze({version:1,scope:o,mutationId:i.mutationId,ops:qL(i.ops),phase:i.phase});if(i.version===4){let r=Ht(i.previous,e,t+1);r.phase!=="verified"&&ie("recovery_required");for(let l=r;l.mutationId===i.mutationId&&ie("binding"),l.version===4;)l=l.previous;let a=$t(i.plan);a.resourceOps.some(l=>l.kind!=="resource_put"||!l.mustNotExist&&!["mdbase.yaml","mdbase.lock.yaml","mdbase.provisions.yaml"].includes(l.path))&&ie("binding");let c=Object.freeze({version:4,scope:o,mutationId:i.mutationId,plan:a,phase:i.phase,previous:r});return xr.encode(JSON.stringify({...c,phase:"confirmed"})).byteLength>Yi&&ie("binding"),c}if(i.version===3){$t(i.plan).sourcePolicy!==void 0&&ie("binding");let r=Object.freeze({version:3,scope:o,mutationId:i.mutationId,plan:$t(i.plan),phase:i.phase});return xr.encode(JSON.stringify({...r,phase:"confirmed"})).byteLength>Yi&&ie("binding"),r}let s=Object.freeze({version:2,scope:o,mutationId:i.mutationId,plan:Ws(i.plan),phase:i.phase});return xr.encode(JSON.stringify({...s,phase:"confirmed"})).byteLength>Yi&&ie("binding"),s}function Rm(n){return n.version!==2&&ie("recovery_required"),n}function TL(n,e,t){return t(),globalThis.indexedDB||ie("recovery_required"),new Promise((i,o)=>{let s=indexedDB.open(n,1),r=!1,a=()=>{r=!0,e.removeEventListener("abort",a);try{s.transaction?.abort()}catch{}o(new xn("recovery_required"))};e.addEventListener("abort",a,{once:!0}),s.onupgradeneeded=()=>{try{t(),(r||s.result.objectStoreNames.length)&&ie("recovery_required"),s.result.createObjectStore(Nl)}catch{a()}},s.onerror=s.onblocked=a,s.onsuccess=()=>{e.removeEventListener("abort",a);try{t(),(r||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Nl))&&ie("recovery_required"),i(s.result)}catch{s.result.close(),o(new xn("recovery_required"))}}})}var Nl,wd,g_,Yi,Ks,xr,xn,Dl,Hs=C(()=>{"use strict";bt();m_();Nl="original-model-operation",wd=["prepared","attempted","confirmed","verified"],g_=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Yi=no.plaintextBytes,Ks=/^sha256:[0-9a-f]{64}$/,xr=new TextEncoder,xn=class extends Error{constructor(t){super("Preserve the original collection setup operation.");this.reason=t}reason};Dl=class{constructor(e){this.owner=e;this.scope=y_(e.scope),(typeof e.isCurrent!="function"||[e.databaseName,e.applicationNamespace].some(o=>typeof o!="string"||!o.length||o.length>256||/[\u0000-\u001f\u007f]/.test(o)))&&ie("binding"),this.current=e.isCurrent,this.pins=JSON.stringify([e.databaseName,e.applicationNamespace,e.appOrigin,e.cpOrigin]);let t=new URL(e.appOrigin),i=new URL(e.cpOrigin);(t.origin!==e.appOrigin||i.origin!==e.cpOrigin||i.protocol!=="https:"&&!!1)&&ie("binding"),this.namespace=JSON.stringify([e.appOrigin,e.cpOrigin,e.applicationNamespace,this.scope.account,this.scope.installation,this.scope.collection]),this.binding=JSON.stringify(this.scope)}owner;scope;namespace;binding;stopped=!1;turn=Promise.resolve();pins;current;close(){this.stopped=!0}check(e){e.throwIfAborted();let t=!1;try{t=!this.stopped&&this.owner.isCurrent===this.current&&this.current.call(this.owner)===!0&&JSON.stringify([this.owner.databaseName,this.owner.applicationNamespace,this.owner.appOrigin,this.owner.cpOrigin])===this.pins&&JSON.stringify(y_(this.owner.scope))===this.binding}catch{}t||(this.stopped=!0,ie("fenced"))}async exclusive(e,t){this.check(e);let i=this.turn,o,s=new Promise(a=>{o=a});this.turn=i.then(()=>s);let r;try{await new Promise((c,l)=>{let p=()=>l(e.reason);e.addEventListener("abort",p,{once:!0}),i.then(()=>{e.removeEventListener("abort",p),c()})}),this.check(e),r=await TL(this.owner.databaseName,e,()=>this.check(e)),this.check(e);let a=await t(r);return this.check(e),a}finally{r?.close(),o()}}read(e,t){return this.check(t),new Promise((i,o)=>{let s=e.transaction(Nl,"readonly"),r=s.objectStore(Nl).get(this.namespace),a=()=>s.abort();t.addEventListener("abort",a,{once:!0}),s.onabort=s.onerror=()=>{t.removeEventListener("abort",a),o(new xn("recovery_required"))},s.oncomplete=()=>{t.removeEventListener("abort",a),i(r.result)}})}aad(e){return xr.encode(JSON.stringify([this.namespace,1,e]))}async unwrap(e,t){if(this.check(t),e===void 0)return null;(!e||!Pn(e,"ciphertext,iv,key,revision,version")||e.version!==1||!Number.isSafeInteger(e.revision)||e.revision<1||!(e.key instanceof CryptoKey)||e.key.extractable||e.key.type!=="secret"||e.key.algorithm.name!=="AES-GCM"||!e.key.usages.includes("encrypt")||!e.key.usages.includes("decrypt")||!(e.iv instanceof Uint8Array)||e.iv.byteLength!==12||!(e.ciphertext instanceof ArrayBuffer)||e.ciphertext.byteLength>Yi+2048)&&ie("recovery_required");let i;try{i=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:e.iv,additionalData:this.aad(e.revision)},e.key,e.ciphertext)),this.check(t);let o=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(i));return(o?.version===2||o?.version===3||o?.version===4)&&i.byteLength>Yi&&ie("recovery_required"),Ht(o,this.scope)}catch(o){throw o instanceof xn||t.aborted?o:new xn("recovery_required")}finally{i?.fill(0)}}async commit(e,t,i,o){this.check(o);let s=(t?.revision??0)+1;Number.isSafeInteger(s)||ie("fenced");let r=t?.key??await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]),a=crypto.getRandomValues(new Uint8Array(12)),c=xr.encode(JSON.stringify(i));c.byteLength>Yi&&(c.fill(0),ie("binding"));let l;try{l=await crypto.subtle.encrypt({name:"AES-GCM",iv:a,additionalData:this.aad(s)},r,c)}finally{c.fill(0)}this.check(o);try{await new Promise((p,d)=>{let u=e.transaction(Nl,"readwrite",{durability:"strict"}),f=()=>u.abort();o.addEventListener("abort",f,{once:!0}),u.onerror=u.onabort=()=>{o.removeEventListener("abort",f),d(new xn("outcome_unknown"))},u.oncomplete=()=>{o.removeEventListener("abort",f),p()};let h=u.objectStore(Nl),m=h.get(this.namespace);m.onsuccess=()=>{try{this.check(o);let b=m.result;if(b===void 0!=(t===void 0)||b&&b.revision!==t?.revision){u.abort();return}h.put({version:1,revision:s,key:r,iv:a,ciphertext:l},this.namespace)}catch{u.abort()}}})}catch(p){throw this.stopped=!0,p}return this.check(o),i}load(e){return this.exclusive(e,async t=>this.unwrap(await this.read(t,e),e))}prepare(e,t){let i=Ws(e);return xr.encode(JSON.stringify({version:2,scope:this.scope,mutationId:this.scope.collection,plan:i,phase:"confirmed"})).byteLength>Yi&&ie("binding"),this.exclusive(t,async o=>{let s=await this.read(o,t),r=await this.unwrap(s,t);if(r){let c=Rm(r);return JSON.stringify(c.plan)!==JSON.stringify(i)&&ie("binding"),c}let a=Rm(Ht({version:2,scope:this.scope,mutationId:crypto.randomUUID(),plan:i,phase:"prepared"},this.scope));return this.commit(o,s,a,t)})}prepareResources(e,t){let i=$t(e);return i.sourcePolicy!==void 0&&ie("binding"),xr.encode(JSON.stringify({version:3,scope:this.scope,mutationId:this.scope.collection,plan:i,phase:"confirmed"})).byteLength>Yi&&ie("binding"),this.exclusive(t,async o=>{let s=await this.read(o,t),r=await this.unwrap(s,t);if(r&&!(r.version===3&&r.phase==="rejected"))return r.version!==3&&ie("recovery_required"),JSON.stringify(r.plan)!==JSON.stringify(i)&&ie("binding"),r;let a=Ht({version:3,scope:this.scope,mutationId:crypto.randomUUID(),plan:i,phase:"prepared"},this.scope);return a.version!==3&&ie("binding"),this.commit(o,s,a,t)})}prepareResourceRound(e,t,i){let o=$t(e);return this.exclusive(i,async s=>{let r=await this.read(s,i),a=await this.unwrap(r,i);a?.version===4&&a.phase==="rejected"&&(a=a.previous),(!a||a.mutationId!==t)&&ie("binding"),a.phase!=="verified"&&ie("recovery_required");let c=Ht({version:4,scope:this.scope,mutationId:crypto.randomUUID(),plan:o,phase:"prepared",previous:a},this.scope);return c.version!==4&&ie("binding"),this.commit(s,r,c,i)})}advanceResource(e,t,i){return this.exclusive(i,async o=>{let s=await this.read(o,i),r=await this.unwrap(s,i);(!r||r.version!==3&&r.version!==4)&&ie("recovery_required"),r.mutationId!==e&&ie("binding"),r.phase==="rejected"&&ie("recovery_required");let a=wd.indexOf(r.phase),c=wd.indexOf(t);if((c<a||c>a+1)&&ie("recovery_required"),c===a)return r;let l=Ht({...r,phase:t},this.scope);return l.version!==3&&l.version!==4&&ie("binding"),this.commit(o,s,l,i)})}recordResourceAttempt(e,t){return this.advanceResource(e,"attempted",t)}recordResourceConfirmed(e,t){return this.advanceResource(e,"confirmed",t)}recordResourceVerified(e,t){return this.advanceResource(e,"verified",t)}recordResourceRejected(e,t){return this.exclusive(t,async i=>{let o=await this.read(i,t),s=await this.unwrap(o,t);if((!s||s.version!==3&&s.version!==4)&&ie("recovery_required"),s.mutationId!==e&&ie("binding"),s.phase==="rejected")return s;s.phase!=="attempted"&&ie("recovery_required");let r=Ht({...s,phase:"rejected"},this.scope);return r.version!==3&&r.version!==4&&ie("binding"),this.commit(i,o,r,t)})}advance(e,t,i){return this.exclusive(i,async o=>{let s=await this.read(o,i),r=await this.unwrap(s,i);r||ie("recovery_required");let a=Rm(r);a.mutationId!==e&&ie("binding"),a.phase==="rejected"&&ie("recovery_required");let c=wd.indexOf(a.phase),l=wd.indexOf(t);return(l<c||l>c+1)&&ie("recovery_required"),l===c?a:this.commit(o,s,Rm(Ht({...a,phase:t},this.scope)),i)})}recordAttempt(e,t){return this.advance(e,"attempted",t)}recordConfirmed(e,t){return this.advance(e,"confirmed",t)}recordVerified(e,t){return this.advance(e,"verified",t)}}});function CC(n){if(!n||typeof n!="object")return null;let e=n;if(typeof e.mutationId!="string"||!LL.test(e.mutationId)||!Array.isArray(e.records)||!e.records.every(i=>typeof i=="string")||typeof e.createdAt!="number"||e.state!=="pending"&&e.state!=="rejected")return null;let t=e.problem;return t!==void 0&&(!t||typeof t.code!="string"||typeof t.message!="string"||typeof t.recovery!="string")?null:{mutationId:e.mutationId,records:[...e.records],createdAt:e.createdAt,state:e.state,...t?{problem:{code:t.code,recovery:t.recovery,message:t.message,...t.reason?{reason:t.reason}:{}}}:{}}}var LL,OC=C(()=>{"use strict";LL=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/});function Em(n){if(!n||typeof n!="object"||Array.isArray(n))throw Vn();let e=Object.getPrototypeOf(n);if(e!==Object.prototype&&e!==null)throw Vn();let t=Object.create(null);for(let i of Reflect.ownKeys(n)){if(typeof i!="string")throw Vn();let o=Object.getOwnPropertyDescriptor(n,i);if(!o||!("value"in o))throw Vn();o.enumerable&&(t[i]=o.value)}return t}function b_(n){if(typeof n!="string"||!n.trim()||jL.encode(n).byteLength>4096)throw Vn();return n}function EC(n){let e=b_(n),t=new URL(e);if(!["http:","https:"].includes(t.protocol)||t.username||t.password)throw Vn();return e}function RC(n){let e=Em(n),t={issuer:EC(e.issuer),subject:b_(e.subject),name:b_(e.name)};if(e.account_id!==void 0){if(typeof e.account_id!="string"||!UL.test(e.account_id)||e.account_id==="00000000-0000-0000-0000-000000000000")throw Vn();t.account_id=e.account_id}return t}function NL(n){if(!Array.isArray(n)||Object.getPrototypeOf(n)!==Array.prototype||n.length>1e3)throw Vn();for(let t of Reflect.ownKeys(n)){let i=Object.getOwnPropertyDescriptor(n,t);if(typeof t!="string"||!i||!("value"in i))throw Vn()}let e=[];for(let t=0;t<n.length;t++){let i=Object.getOwnPropertyDescriptor(n,String(t));if(!i||!("value"in i))throw Vn();e.push(i.value)}return e}function $l(n,e){try{let t=Em(e);if(n==="identity"){let o=RC(t);return t.person_settings_url!==void 0&&(o.person_settings_url=EC(t.person_settings_url)),o}if(n!=="members")throw Vn();return{members:NL(t.members).map(o=>{let s=Em(o),r=RC(s),a=s.role;if(a!=="owner"&&a!=="editor"&&a!=="viewer")throw Vn();return{...r,role:a}})}}catch{throw Vn()}}function MC(n,e){try{if(e instanceof pe)switch(e.code){case"forbidden":return{code:"forbidden",reason:n==="members"&&e.reason==="people_permission_declined"?"people_permission_declined":"people_access"};case"unauthenticated":case"cancelled":return{code:"unauthenticated",reason:"people_fenced"};case"upgrade_required":return{code:"upgrade_required",reason:"people_unsupported"}}}catch{}return{code:"unavailable",reason:"people_response"}}function qC(n){let e=Em(n);if(!(e.code==="forbidden"&&["people_permission_declined","people_access"].includes(e.reason)||e.code==="unauthenticated"&&e.reason==="people_fenced"||e.code==="upgrade_required"&&e.reason==="people_unsupported"||e.code==="unavailable"&&["people_response","people_busy"].includes(e.reason))||Object.keys(e).length!==2)throw Vn();return A(e.code,"people metadata request failed",e.reason)}function Mm(n,e){if(!e.peopleAuthority)throw A("upgrade_required","people metadata is unsupported","people_unsupported");return new mr(n,e.peopleAuthority)}var Vn,jL,UL,_d=C(()=>{"use strict";ne();fp();Vn=()=>A("unavailable","invalid people response","people_response"),jL=new TextEncoder,UL=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/});function Oi(n){if(!Gs(n)||Object.keys(n).some(i=>i!=="adopt"))throw he("binding");if(n.adopt===void 0)return Object.freeze({});let e=n.adopt;if(!Gs(e)||Object.keys(e).length>256)throw he("binding");let t={};for(let[i,o]of Object.entries(e)){if(!Ir(i)||typeof o!="string"||!kd.test(o))throw he("binding");t[i]=o}return Object.freeze({adopt:Object.freeze(t)})}function DL(n){if(!Gs(n)||!Ad(n,"configuration,packs,staged")||!Array.isArray(n.packs)||n.packs.length>16||!Array.isArray(n.configuration)||n.configuration.length>64||!Array.isArray(n.staged)||n.staged.length>1024)throw he("binding");let e=n.packs.map(o=>{if(!Gs(o)||!Ad(o,"id,installedVersion,resources,status,version")||!Ir(o.id,150)||!Ir(o.version,128)||!["current","install","upgrade","downgrade","reconfigure","conflict"].includes(o.status)||!(o.installedVersion===null||Ir(o.installedVersion,128))||!Array.isArray(o.resources)||o.resources.length>1024)throw he("binding");let s=o.resources.map(r=>{if(!Gs(r)||!Ad(r,"action,installed,kind,mode,target",["currentDigest","reason"])||!Ir(r.target)||!Ir(r.kind,64)||r.mode!=="managed"&&r.mode!=="seed"||typeof r.installed!="boolean"||!["create","update","delete","adopt","preserve","conflict"].includes(r.action)||r.currentDigest!==void 0&&(typeof r.currentDigest!="string"||!kd.test(r.currentDigest))||r.reason!==void 0&&!Ir(r.reason,8192))throw he("binding");return Object.freeze({...r})});return Object.freeze({id:o.id,version:o.version,status:o.status,installedVersion:o.installedVersion,resources:Object.freeze(s)})}),t=n.configuration.map(o=>{if(!Gs(o)||!Ad(o,"action,path,requirement",["value"])||!Ir(o.requirement,256)||!Ir(o.path,1024)||o.action!=="add"&&o.action!=="conflict"||!(o.value===void 0||o.value===null||["string","number","boolean"].includes(typeof o.value)))throw he("binding");return Object.freeze({...o})}),i=n.staged.map(o=>{if(!Gs(o)||!Ad(o,"document,path")||!Ir(o.path)||typeof o.document!="string"||o.document.length>512*1024)throw he("binding");return Object.freeze({path:o.path,document:o.document})});return Object.freeze({packs:Object.freeze(e),configuration:Object.freeze(t),staged:Object.freeze(i)})}function Ys(n,e=!1){let t=n;if(!t||typeof t!="object"||Object.keys(t).sort().join(",")!==(e?"assessmentDigest,review,status":"assessmentDigest,status")||!["current","provision","conflict"].includes(t.status)||typeof t.assessmentDigest!="string"||!kd.test(t.assessmentDigest))throw he("binding");return Object.freeze({status:t.status,assessmentDigest:t.assessmentDigest,...e?{review:DL(t.review)}:{}})}function TC(n){let e=Object.freeze({account:n.scope.account,installation:n.scope.installation,collection:n.scope.collection});if(Object.values(e).some(t=>!zl.test(t)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(t))||!zl.test(n.generation))throw he("binding");return{scope:e,generation:n.generation,binding:JSON.stringify([e.account,e.installation,e.collection])}}function Bl(n){try{return new TextEncoder().encode(JSON.stringify(n)).byteLength<=$L}catch{return!1}}function LC(n,e,t){t=Object.freeze({...t});let i=TC(e),o=!1,s=null,r=null,a=0,c={},l=t.setupTurn,p=()=>{l?.owner===c&&(l.owner=null)},d=()=>{if(o||t.signal.aborted||t.isCurrent()!==!0)throw he()},u=(m,b,w)=>{d();let g=[1,i.binding,i.generation,m,b,w];if(!Bl(g))throw he("binding");n.postMessage(g)},f=()=>{if(!o){o=!0,p(),n.onmessage=n.onmessageerror=null;try{n.postMessage([1,i.binding,i.generation,0,"closed",null])}catch{}n.close()}},h=()=>{try{f()}finally{t.onProtocolFailure()}};return n.onmessageerror=h,n.onmessage=m=>{let b=m.data;try{if(d(),Array.isArray(b)&&b.length===6&&b[0]===1&&b[1]===i.binding&&b[2]===i.generation&&b[3]===0&&b[4]==="detach"&&b[5]===null){h();return}if(!Array.isArray(b)||b.length!==6||b[0]!==1||b[1]!==i.binding||b[2]!==i.generation||!Number.isInteger(b[3])||b[3]<1||b[3]>4294967295||!VL.includes(b[4])||!Bl(b))throw he("binding");let w=b[3],g=b[4],y=b[5];if(w<=a)throw he("binding");if(a=w,zL(g)){let k=null;try{let S=t.ledger?.()??null;if(!S)throw he("recovery_required");if(g==="ledgerList"){if(y!==null)throw he("binding");k=S.list(FL)}else if(g==="ledgerRemove"){if(typeof y!="string"||!zl.test(y))throw he("binding");S.remove(y)}else{if(!Array.isArray(y)||y.length!==2||typeof y[0]!="string"||!zl.test(y[0])||typeof y[1]!="string"||y[1].length>BL)throw he("binding");S.put(y[0],y[1])}}catch(S){u(w,"error",S instanceof Ri?S.reason:"recovery_required");return}u(w,"result",k);return}if(s){u(w,"error","busy");return}if(l&&KL(g)&&l.owner!==null&&l.owner!==c){u(w,"error","busy");return}let v=async()=>{d();let k=null;switch(g){case"resourcesAssess":case"resourcesApply":{let S=t.resourceSetup;if(!S)throw he("recovery_required");if(g==="resourcesAssess"){let x=Array.isArray(y);if(x&&y.length!==2)throw he("binding");k=x?Ys(await S.assess(y[0],t.signal,Oi(y[1])),!0):Ys(await S.assess(y,t.signal))}else{if(!Array.isArray(y)||y.length!==2&&y.length!==3||typeof y[1]!="string"||!kd.test(y[1]))throw he("binding");k=$t(y.length===3?await S.apply(y[0],y[1],t.signal,Oi(y[2])):await S.apply(y[0],y[1],t.signal))}d();break}case"peopleIdentity":case"peopleMembers":{if(y!==null)throw he("binding");let S=t.peopleAuthority;if(!S)throw A("upgrade_required","people metadata is unsupported","people_unsupported");let x=()=>{if(d(),S.collection!==i.scope.collection||S.isCurrent()!==!0)throw A("unauthenticated","people scope changed","people_fenced")};x();let P=qm(g),I=await S.request(P,{signal:t.signal});if(x(),k=$l(P,I),x(),!Bl([1,i.binding,i.generation,w,"result",k]))throw A("unavailable","invalid people response","people_response");break}case"load":if(y!==null)throw he("binding");p(),k=await t.journal.load(t.signal);break;case"prepare":k=await t.journal.prepare(Ws(y),t.signal),d(),l&&(l.owner=c);break;case"prepareResources":k=await t.journal.prepareResources($t(y),t.signal),d(),l&&(l.owner=c);break;case"prepareResourceRound":if(!Array.isArray(y)||y.length!==2||typeof y[1]!="string")throw he("binding");k=await t.journal.prepareResourceRound($t(y[0]),y[1],t.signal),d(),l&&(l.owner=c);break;case"assess":if(y!=="ready"&&y!=="setup_required")throw he("binding");t.assess(y);break;case"foreground":if(typeof y!="boolean")throw he("binding");t.foreground(y);break;case"recordResourceRejected":{if(typeof y!="string"||!zl.test(y))throw he("binding");let S=t.resourceSetup?.rejected;if(!S||await S(y,t.signal)!==!0)throw he("recovery_required");d(),k=await t.journal.recordResourceRejected(y,t.signal),p();break}default:if(typeof y!="string"||!zl.test(y))throw he("binding");k=await t.journal[g](y,t.signal),(g==="recordVerified"||g==="recordResourceVerified")&&p()}d(),u(w,"result",k)},_=s=Promise.resolve().then(v).catch(k=>{if(!(o||t.signal.aborted))try{let S=qm(g);u(w,"error",S?MC(S,k):k instanceof xn||k instanceof Ri?k.reason:"recovery_required")}catch{h()}});_.finally(()=>{s===_&&(s=null)}).catch(()=>{})}catch{h()}},n.start(),{close(){return r||(r=Promise.resolve().then(async()=>{f(),await s}),r)}}}function Tm(n,e,t){t=Object.freeze({...t});let i=TC(e),o=!1,s=1,r=null,a=new Map,c=()=>{if(o||t.signal.aborted||t.isCurrent()!==!0)throw he()},l=()=>{if(o)return;o=!0,t.signal.removeEventListener("abort",l),n.onmessage=n.onmessageerror=null;let v=r;r=null,v?.finish(void 0,he(w_(v.action)?"fenced":"outcome_unknown"));for(let _ of a.values())_(void 0,he("fenced"));a.clear();try{n.postMessage([1,i.binding,i.generation,0,"detach",null])}catch{}try{n.close()}finally{t.onClose()}};t.signal.addEventListener("abort",l,{once:!0}),n.onmessageerror=l,n.onmessage=v=>{try{c();let _=v.data;if(!Array.isArray(_)||_.length!==6||_[0]!==1||_[1]!==i.binding||_[2]!==i.generation||!Bl(_))throw he();if(_[3]===0&&_[4]==="closed"&&_[5]===null){l();return}let k=a.get(_[3]);if(k&&["result","error"].includes(_[4])){a.delete(_[3]),k(_[4]==="result"?_[5]:void 0,_[4]==="error"?he(_[5]==="binding"?"binding":"recovery_required"):void 0);return}if(!r||_[3]!==r.id||!["result","error"].includes(_[4]))throw he();let S=r,x=_[4]==="error"?qm(S.action)&&_[5]!=="busy"?qC(_[5]):_[5]==="busy"?he("busy"):he(["binding","fenced","recovery_required","outcome_unknown"].includes(_[5])?_[5]:"recovery_required"):void 0;r=null,S.finish(_[4]==="result"?_[5]:void 0,x)}catch{l()}},n.start();let p=(v,_,k)=>{try{if(c(),k.aborted)throw he();if(r)throw he("busy");if(s>4294967295)throw l(),he()}catch(x){return Promise.reject(x)}let S=s++;return new Promise((x,P)=>{let I=!1,R=()=>O(void 0,he(w_(v)?"fenced":"outcome_unknown")),O=(q,j)=>{I||(I=!0,k.removeEventListener("abort",R),j?P(j):x(q))};r={id:S,action:v,finish:O},k.addEventListener("abort",R,{once:!0});try{let q=[1,i.binding,i.generation,S,v,_];if(!Bl(q))throw he("binding");n.postMessage(q)}catch(q){r=null,O(void 0,q),l()}})},d=(v,_)=>{try{if(c(),s>4294967295)throw l(),he()}catch(S){return Promise.reject(S)}let k=s++;return new Promise((S,x)=>{a.set(k,(P,I)=>I?x(I):S(P));try{let P=[1,i.binding,i.generation,k,v,_];if(!Bl(P))throw he("binding");n.postMessage(P)}catch(P){a.delete(k),x(P)}})},u=Object.freeze({async list(){let v=await d("ledgerList",null);if(!Array.isArray(v))throw he("recovery_required");return v.flatMap(_=>{try{let k=CC(JSON.parse(String(_)));return k?[k]:[]}catch{return[]}})},async put(v){await d("ledgerPut",[v.mutationId,JSON.stringify(v)])},async remove(v){await d("ledgerRemove",v)}}),f=(v,_)=>{let k=w_(v)?"fenced":"outcome_unknown";try{if(c(),_.aborted)throw he()}catch{throw he(k)}},h=async(v,_,k)=>{let S=await p(v,_,k);f(v,k);let x=Ht(S,i.scope);return f(v,k),x},m=async(v,_,k)=>{let S=await h(v,_,k);if(f(v,k),S.version!==2)throw he("recovery_required");return S},b=async(v,_,k)=>{let S=await h(v,_,k);if(f(v,k),S.version!==3&&S.version!==4)throw he("recovery_required");return S},w=Object.freeze({scope:i.scope,async load(v){let _=await p("load",null,v);f("load",v);let k=_===null?null:Ht(_,i.scope);return f("load",v),k},prepare:(v,_)=>m("prepare",Ws(v),_),recordAttempt:(v,_)=>m("recordAttempt",v,_),recordConfirmed:(v,_)=>m("recordConfirmed",v,_),recordVerified:(v,_)=>m("recordVerified",v,_),async prepareResources(v,_){let k=await b("prepareResources",$t(v),_);if(f("prepareResources",_),k.version!==3)throw he("recovery_required");return k},async prepareResourceRound(v,_,k){let S=await b("prepareResourceRound",[$t(v),_],k);if(f("prepareResourceRound",k),S.version!==4)throw he("recovery_required");return S},recordResourceAttempt:(v,_)=>b("recordResourceAttempt",v,_),recordResourceConfirmed:(v,_)=>b("recordResourceConfirmed",v,_),recordResourceVerified:(v,_)=>b("recordResourceVerified",v,_),recordResourceRejected:(v,_)=>b("recordResourceRejected",v,_)}),g=t.people===!0?Object.freeze({collection:i.scope.collection,isCurrent(){try{return c(),!0}catch{return!1}},async request(v,_={}){if(v!=="identity"&&v!=="members")throw A("invalid_request","invalid people resource");let k=v==="identity"?"peopleIdentity":"peopleMembers",S=_.signal??t.signal;try{let x=await p(k,null,S);f(k,S);let P=$l(v,x);return f(k,S),P}catch(x){try{f(k,S)}catch{throw A("unauthenticated","people scope changed","people_fenced")}throw x instanceof Ri?A(x.reason==="busy"?"unavailable":"unauthenticated","people metadata request failed",x.reason==="busy"?"people_busy":"people_fenced"):x}}}):void 0,y=Object.freeze({async assess(v,_,k){let S=k!==void 0,x=await p("resourcesAssess",S?[v,Oi(k)]:v,_);f("resourcesAssess",_);let P=Ys(x,S);return f("resourcesAssess",_),P},async apply(v,_,k,S){if(!kd.test(_))throw he("binding");let x=await p("resourcesApply",S===void 0?[v,_]:[v,_,Oi(S)],k);f("resourcesApply",k);let P=$t(x);return f("resourcesApply",k),P}});return Object.freeze({journal:w,close:l,resourceSetup:y,ledger:u,...g?{peopleAuthority:g}:{},async assess(v,_){await p("assess",v,_),f("assess",_)},async setForeground(v,_){await p("foreground",v,_),f("foreground",_)}})}var kd,Gs,Ir,Ad,$L,zl,Ri,he,zL,BL,FL,VL,qm,w_,KL,Ho=C(()=>{"use strict";Hs();ne();OC();_d();kd=/^sha256:[0-9a-f]{64}$/,Gs=n=>!!n&&typeof n=="object"&&!Array.isArray(n)&&Object.getPrototypeOf(n)===Object.prototype,Ir=(n,e=4096)=>typeof n=="string"&&n.length>0&&n.length<=e;Ad=(n,e,t=[])=>{let i=e.split(",");return i.every(o=>Object.hasOwn(n,o))&&Object.keys(n).every(o=>i.includes(o)||t.includes(o))};$L=512*1024+8192,zl=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Ri=class extends Error{constructor(t){super(`app collection control: ${t}`);this.reason=t;this.name="AppCollectionControlError"}reason},he=(n="fenced")=>new Ri(n);zL=n=>n==="ledgerList"||n==="ledgerPut"||n==="ledgerRemove",BL=16*1024,FL=448*1024,VL=["load","prepare","prepareResources","prepareResourceRound","recordAttempt","recordConfirmed","recordVerified","recordResourceAttempt","recordResourceConfirmed","recordResourceVerified","recordResourceRejected","assess","foreground","peopleIdentity","peopleMembers","resourcesAssess","resourcesApply","ledgerList","ledgerPut","ledgerRemove"],qm=n=>n==="peopleIdentity"?"identity":n==="peopleMembers"?"members":null,w_=n=>n==="load"||n==="assess"||n==="foreground"||n==="resourcesAssess"||n==="resourcesApply"||qm(n)!==null,KL=n=>n==="load"||n==="prepare"||n==="prepareResources"||n==="prepareResourceRound"||n.startsWith("record")});function v_(n){let e=[n.account,n.installation,n.collection];if(e.some(o=>typeof o!="string"||!WL.test(o))||typeof n.isCurrent!="function")throw wt();let t=JSON.stringify(e.map(o=>o.toLowerCase())),i=n.isCurrent.bind(n);return{binding:t,current:()=>{try{return i()===!0&&JSON.stringify([n.account,n.installation,n.collection].map(o=>o.toLowerCase()))===t}catch{return!1}}}}function NC(n,e,t,i,o){let s=v_(e),r=!1,a=()=>{if(!r){r=!0,n.onmessage=null,n.onmessageerror=null;try{n.postMessage([1,s.binding,"close"])}catch{}n.close(),i()}},c=()=>{if(r||!s.current())throw a(),wt()};return n.onmessageerror=a,n.onmessage=l=>{try{c();let p=l.data;if(!Array.isArray(p)||p[0]!==1||p[1]!==s.binding)throw wt();if(p.length===3&&p[2]==="close"){a();return}if(p.length===5&&HL.includes(p[2])){let u=p[2],f=p[3],h=p[4],m=jC(u);if(!o||!Number.isInteger(f)||f<1||f>4294967295||!(h instanceof Uint8Array)||!h.length||h.length>m)throw wt();c(),o(u,f,h);return}if(p.length!==4||p[2]!=="frame"||!(p[3]instanceof Uint8Array)||p[3].length===0||p[3].length>vo)throw wt();let d=ce(new Uint8Array(p[3]));c(),t(d)}catch{a()}},n.start(),{close:a,send(l){try{c();let p=se(l);if(!p.length||p.length>vo)throw wt();c(),n.postMessage([1,s.binding,"frame",p],[p.buffer])}catch{throw a(),wt()}},control(l,p,d){try{c();let u=jC(l);if(!Number.isInteger(p)||p<1||p>4294967295||!(d instanceof Uint8Array)||!d.length||d.length>u||!(d.buffer instanceof ArrayBuffer)||d.byteOffset!==0||d.byteLength!==d.buffer.byteLength)throw wt();c(),n.postMessage([1,s.binding,l,p,d],[d.buffer])}catch{throw a(),wt()}},current:c}}function YL(n){if(!(n instanceof Map))return!1;let e=n;return e.get(0)===0&&GL.has(e.get(2))}function Lm(n,e,t,i){if(!v_(t).current())throw wt();let s;try{s=n.connect({collection:t.collection})}catch{throw e.close(),wt()}let r;try{r=NC(e,t,c=>{if(s.send(c),i&&YL(c))try{i(c.get(2))}catch{}},()=>s.close(),(c,l,p)=>{let d;try{if(c==="bases-request"&&typeof n.executeBases=="function")d=n.executeBases(s,p);else if((c==="bases-list-views-request"||c==="bases-read-view-source-request")&&typeof n.discoverBases=="function")d=n.discoverBases(s,c==="bases-list-views-request"?"list-views":"read-view-source",p);else throw wt()}finally{p.fill(0)}try{r.current(),r.control(UC(c),l,d)}catch(u){throw d.byteLength&&d.fill(0),u}}),s.onframe=c=>{try{r.send(c)}catch{}},s.onclose=()=>r.close()}catch{throw s.close(),e.close(),wt()}let a=Object.freeze({async assess(c,l,p){if(l.throwIfAborted(),r.current(),!n.setupResources)throw wt();let d=p===void 0?n.setupResources(s,"assess",c):n.setupResources(s,"assess",c,void 0,p);return r.current(),l.throwIfAborted(),d},async apply(c,l,p,d){if(p.throwIfAborted(),r.current(),!n.setupResources)throw wt();let u=d===void 0?n.setupResources(s,"apply",c,l):n.setupResources(s,"apply",c,l,d);return r.current(),p.throwIfAborted(),u},async rejected(c,l){if(l.throwIfAborted(),r.current(),!n.resourceRejected)return!1;let p=n.resourceRejected(s,c);return r.current(),l.throwIfAborted(),p}});return{close:()=>r.close(),resourceSetup:a}}function jm(n,e){let t=v_(e),i=!1,o=!1,s,r=null,a=[],c=()=>A("cancelled","Bases read cancelled"),l=1;return{description:"app-local",close(){o=!0,s?s.close():n.close()},async open(p,d){if(i)throw wt();if(!t.current()||d?.aborted||o)throw n.close(),wt();i=!0;let u,f=s=NC(n,e,b=>u?.onframe?.(b),()=>{let b=r;r=null;let w=a.splice(0);b?.finish(void 0,c());for(let g of w)g.finish(void 0,c());u?.onclose?.(wt())},(b,w,g)=>{if(!r||b!==r.response||w!==r.id)throw g.fill(0),wt();let y=r;r=null,y.finish(g),h()});function h(){if(r||a.length===0)return;let b=a.shift();r=b;try{if(f.current(),r!==b){h();return}if(l>4294967295)throw f.close(),wt();b.id=l++,f.control(b.kind,b.id,b.request)}catch(w){r===b&&(r=null),b.finish(void 0,w),h()}}let m=(b,w,g)=>{try{if(f.current(),g?.aborted)throw c();if(!(w instanceof Uint8Array)||!w.length||w.length>128*1024)throw A("invalid_request","Bases request bytes exceed bound");if(a.length>=32)throw A("unavailable","Bases read queue is full","bases_read_backpressure")}catch(v){return Promise.reject(v)}let y=new Uint8Array(w);return new Promise((v,_)=>{let k=!1,S=(I,R)=>{if(r!==x&&y.byteLength&&y.fill(0),k){I?.byteLength&&I.fill(0);return}k=!0,g?.removeEventListener("abort",P),R!==void 0?_(R):v(I)},x={kind:b,request:y,response:UC(b),finish:S},P=()=>{let I=a.indexOf(x);I!==-1&&a.splice(I,1),r===x&&x.id===void 0&&(r=null),S(void 0,c())};a.push(x),g?.addEventListener("abort",P,{once:!0}),h()})};u={onframe:null,onclose:null,send:b=>f.send(b),close:()=>f.close(),readAppBases:(b,w)=>m("bases-request",b,w),readAppBasesDiscovery(b,w,g){return b!=="list-views"&&b!=="read-view-source"?Promise.reject(A("invalid_request","unknown native Bases read")):m(b==="list-views"?"bases-list-views-request":"bases-read-view-source-request",w,g)}};try{if(d?.aborted||o)throw wt();return await Na({connect:()=>u}).open(p,d)}catch{throw f.close(),wt()}}}}var WL,wt,HL,UC,jC,GL,Um=C(()=>{"use strict";Xe();ne();Lf();Bc();WL=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/iu,wt=()=>A("unavailable","app local facade unavailable; reopen and reconcile");HL=["bases-request","bases-response","bases-list-views-request","bases-list-views-response","bases-read-view-source-request","bases-read-view-source-response"],UC=n=>n==="bases-request"?"bases-response":n==="bases-list-views-request"?"bases-list-views-response":"bases-read-view-source-response",jC=n=>n.endsWith("request")?128*1024:n==="bases-response"?vo:1024*1024;GL=new Set(["submit","resolve_hold","open_upload","upload_chunk","commit_upload","abort_upload","fetch_file","read_file","ack_chunks"])});function Js(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw new vt("invalid_call");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw new vt("invalid_call");return e}function Nm(n,e){return n.length===e.length&&n.every((t,i)=>t===e[i])}function $C(n){try{return n.server}catch{return null}}function nj(n){try{return n.reason}catch{return null}}function __(n,e=globalThis.navigator?.onLine){let t=$C(n);if(Dn(t)){let i=t.retryAfterMs;return t.status===429?{kind:"rate_limited",retryAfterMs:i}:t.status>=500?{kind:"server_busy",retryAfterMs:i}:t.status===401||t.status===403?{kind:"auth"}:null}return nj(n)!=="unavailable"?null:e===!1?{kind:"offline"}:{kind:"unreachable"}}var DC,JL,XL,ZL,QL,vt,ej,tj,Xs,A_=C(()=>{"use strict";ar();Xe();be();Qn();DC=16*1024*1024,JL=9*1024*1024,XL=64,ZL=64*1024*1024,QL=new Set(["append","read","head","subscribe","unsubscribe","put_object","get_object","has_objects","put_snapshot","get_snapshot","endorse_snapshot","stream_join","stream_leave","stream_send"]),vt=class extends Error{constructor(t){super(`app log host: ${t}`);this.reason=t;this.name="AppLogHostError"}reason};ej=new Set(["read","head","subscribe","get_object","has_objects","put_object","get_snapshot"]),tj=6;Xs=class{constructor(e,t,i){this.runtime=e;this.transport=t;try{if(this.endpoint=Js(i.endpoint),this.collection=U(i.collection),Js(t.endpoint)!==this.endpoint||!Nm(U(t.collection),this.collection))throw new Error}catch{throw new vt("invalid_binding")}if(this.rounds=i.maxRounds??64,!Number.isSafeInteger(this.rounds)||this.rounds<1||this.rounds>64)throw new RangeError("invalid app log pump rounds")}runtime;transport;abort=new AbortController;endpoint;collection;rounds;work=null;closed=!1;failed=!1;retired=!1;problem=null;terminal=null;health=null;sent=0;readAfter=[-1n,-1n];readAdvances=0;get fenced(){return this.failed}get callsSent(){return this.sent}get readProgress(){return this.readAdvances}responseProgress(){return this.transport.responseProgress?.()??[]}get serverProblem(){return this.problem}get terminalProblem(){return this.terminal}get transportHealth(){return this.health}current(){if(this.closed||this.failed)return!1;if(Js(this.transport.endpoint)!==this.endpoint||!Nm(U(this.transport.collection),this.collection))throw new vt("invalid_binding");return this.transport.isCurrent()===!0?!0:(this.retire(),!1)}retire(){if(this.closed=!0,this.abort.abort(),!this.retired){this.retired=!0;try{this.runtime.retireLog()}catch{throw this.failed=!0,new vt("fenced")}}}capture(e){if(!Array.isArray(e)||e.length>XL)throw new vt("invalid_call");let t=0,i=new Set,o=[];try{for(let s of e){if(Js(s.endpoint)!==this.endpoint||!(s.frame instanceof Uint8Array)||s.frame.length>DC||s.sidecar!==void 0&&(!(s.sidecar instanceof Uint8Array)||s.sidecar.length>JL))throw new vt("invalid_call");if(t+=s.frame.length+(s.sidecar?.length??0),t>ZL)throw new vt("invalid_call");let r=ce(s.frame);if(!(r instanceof Map))throw new vt("invalid_call");let a=r;if(a.size!==4||a.get(0)!==0||!QL.has(a.get(2)))throw new vt("invalid_call");let c=Js(a.get(1));if(i.has(c))throw new vt("invalid_call");i.add(c);let l=a.get(3),p=l instanceof Map?l.get(0):void 0;if(!(p instanceof Uint8Array)||!Nm(p,this.collection)||s.sidecar!==void 0&&a.get(2)!=="put_object")throw new vt("invalid_call");if(s.sidecar!==void 0){let u=l,f=u.get(4);if(s.sidecar.length<=1024*1024||Js(u.get(3))!==BigInt(s.sidecar.length)||u.has(5)||!(f instanceof Uint8Array)||!Nm(f,Ge(s.sidecar)))throw new vt("invalid_call")}let d=a.get(2)==="read"?{after:Js(l.get(1)),control:l.get(3)===1}:void 0;o.push({id:c,method:a.get(2),...d?{read:d}:{},call:{endpoint:this.endpoint,frame:s.frame.slice(),...s.sidecar?{sidecar:s.sidecar.slice()}:{}}})}return o}catch{for(let s of o)this.wipe(s);throw new vt("invalid_call")}}wipe(e){e.call.frame.fill(0),e.call.sidecar?.fill(0)}pump(){return this.work?this.work:this.failed?Promise.reject(new vt("fenced")):this.closed?Promise.resolve({quiet:!0}):(this.work=Promise.resolve().then(()=>this.drive()).finally(()=>{this.work=null}),this.work)}async drive(){try{for(let e=0;e<this.rounds;e++){if(!this.current())return{quiet:!0};let t=this.capture(this.runtime.takeLogCalls());if(!t.length)return{quiet:!0};this.sent+=t.length;let i=[];try{for(let o=0;o<t.length;){if(!this.current())return{quiet:!0};let s=o+1,r=l=>ej.has(t[l].method);if(r(o))for(;s<t.length&&s-o<tj&&r(s);)s++;let a=t.slice(o,s);o=s;let c=a.map(l=>this.transport.send(l.call,{signal:this.abort.signal}).then(p=>({reply:p,error:null}),p=>({reply:null,error:p})));i.push(...c);for(let[l,p]of a.entries()){let{reply:d,error:u}=await c[l];if(d===null){if(!this.current())return{quiet:!0};let f=$C(u);if(Dn(f)){let m=Ot(f);m&&(this.problem=f),(m||f.status===403&&f.code==="forbidden")&&(this.terminal??=f)}let h=__(u);h&&(this.health=h),this.runtime.logNoResponse(p.id);continue}try{if(!this.current())return{quiet:!0};if(!(d instanceof Uint8Array)||d.length>DC){this.runtime.logNoResponse(p.id);continue}if(this.runtime.acceptLogReply(p.id,d)!==!0)this.runtime.logNoResponse(p.id);else if(this.problem=null,this.health=null,p.read){let f=p.read.control?1:0;p.read.after>this.readAfter[f]&&(this.readAfter[f]=p.read.after,this.readAdvances++)}}finally{d instanceof Uint8Array&&d.fill(0)}}}}finally{for(let o of await Promise.all(i))o.reply instanceof Uint8Array&&o.reply.fill(0);for(let o of t)this.wipe(o)}}return{quiet:!1}}catch{throw this.failed=!0,this.retire(),new vt("fenced")}}async drainForAuthenticatedReconnect(){if(this.closed||this.failed||this.retired)throw new vt("fenced");if(this.closed=!0,this.abort.abort(),this.retired=!0,await this.work?.catch(()=>{}),this.failed)throw new vt("fenced")}async close(){this.retire(),await this.work?.catch(()=>{})}}});function Sd(n,e,t=0,i={nodes:0}){if(t>32||++i.nodes>65536)throw A("invalid_request","resource DATA exceeds bound");if(n===null||typeof n=="boolean"||typeof n=="string"||typeof n=="number"&&Number.isFinite(n))return n;if(Array.isArray(n))return n.map(r=>Sd(r,e,t+1,i));let o=e?n!==null&&typeof n=="object"&&Object.getPrototypeOf(n)===Object.prototype?Object.entries(n):null:n instanceof Map?[...n]:null;if(!o)throw A("invalid_request","invalid resource DATA");let s=new Map;for(let[r,a]of o){if(typeof r!="string"||s.has(r))throw A("invalid_request","invalid resource DATA");s.set(r,Sd(a,e,t+1,i))}return e?s:Object.fromEntries(s)}function zC(n){if(!(n instanceof Uint8Array)||n.length===0||n.length>64*1024)throw T();return new Uint8Array(n)}function Kn(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw T();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw T();return e}function nn(n){if(!(n instanceof Uint8Array)||n.length!==32)throw T();return n}var Go,Mt,T,BC,Fl,Dm=C(()=>{"use strict";Xe();be();ne();bw();Ut();A_();Ho();Hs();Go=class extends Error{reason="account_key_proof_unavailable";constructor(){super("this app runtime cannot prove an account-key request"),this.name="AppAccountKeyProofUnavailableError"}},Mt=class extends Error{reason="strict_device_approval";constructor(){super("this account uses strict device approval; add this device from your desktop"),this.name="AppStrictDeviceApprovalError"}},T=()=>A("unavailable","app runtime unavailable; reopen and reconcile");BC=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);Fl=class n extends Da{constructor(t,i){super(t);this.sqlBinding=i}sqlBinding;attempted=!1;active=!1;retired=!1;collection=null;deviceId=null;connectorId=null;cpPin=null;deviceAttempted=!1;deviceActive=!1;deviceRegistered=!1;devicePin=null;installationId=null;publicIdentity=null;noiseEnvelope=null;cloudSource=null;cloudCallback=null;cloudCollection=null;cloudPurpose=null;cloudIssued=!1;privateAttempted=!1;privateSource=null;prospectiveCollection=null;privatePurpose=null;sasCommitment=null;privateEnrolAcknowledged=!1;endpoint=null;logGeneration=0n;pump=null;transport=null;get sql(){return this.sqlBinding.sql}get app(){return this.x}static async create(t,i){if(i.needsRecovery)throw T();return this.instantiateApp(t,i)}static async createDevice(t){return this.instantiateApp(t,null)}static async instantiateApp(t,i){let o={sql:i,exports:null,run:null},s=await this.load(t,a=>(o.exports=a,o.run=i?.import(a)??null,{host_app_sql:(c,l)=>o.run?.(c,l)??0n})),r=["rt_app_account_key_unlock","rt_app_account_key_status","rt_app_account_key_device_setup","rt_app_private_collection_pin","rt_app_private_enrol_restore","rt_app_private_enrol_commitment","rt_app_private_create_sign","rt_app_private_device_enrol_sign","rt_app_device_open","rt_app_device_registered","rt_app_device_adopt","rt_app_device_retire","rt_app_cp_enrol_sign","rt_app_verify_handover","rt_app_cp_bind_connector","rt_app_cp_log_token_sign","rt_app_open","rt_app_log_bind","rt_app_log_generation","rt_app_log_reconnect","rt_app_log_http_sign","rt_app_log_calls","rt_app_log_reply","rt_app_log_no_response","rt_app_log_retire","rt_app_log_push","rt_app_observations","rt_app_shutdown"];if(!(s.memory instanceof WebAssembly.Memory)||r.some(a=>typeof s[a]!="function"))throw T();return new n(s,o)}open(t){throw T()}fail(){try{(this.active||this.attempted)&&this.sql?.fence()}finally{this.active=!1,this.deviceActive=!1,this.discard()}}guard(t){try{return t()}catch{throw this.fail(),T()}}openAppConsuming(t){let i=null;try{if(this.attempted||this.deviceAttempted||!this.sql||this.sql.needsRecovery)throw T();this.attempted=!0;let o=Kn(t.endpoint);if(!Array.isArray(t.trustedRoots)||t.trustedRoots.length<1||t.trustedRoots.length>64||!Array.isArray(t.trustedSigners)||t.trustedSigners.length>1024||!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295)throw T();let s=t.state==="e2e"?0:t.state==="cloud_copy"?1:-1,r=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(s<0||r<0||typeof t.cloudCopyOptIn!="boolean"||s===1!==t.cloudCopyOptIn||(i=qn(new Map([[0,3],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[4,o],[5,t.trustedRoots.map(nn)],[6,t.trustedSigners.map(U)],[7,Xd(t.expectedGenesis)],[8,s],[9,t.cloudCopyOptIn],[10,nn(t.signSecretKey)],[11,nn(t.kemSecretKey)],[12,r],[13,t.sqliteVersion],[16,zC(t.policyPins)]])),i.length>64*1024)||this.guard(()=>this.takeOut(this.app.rt_app_open(...this.put(i)))).length)throw T();this.collection=t.collection,this.deviceId=t.deviceId,this.endpoint=o,this.active=!0,this.markOpened()}catch{throw this.retireLog(),this.fail(),T()}finally{i?.fill(0),t.signSecretKey?.fill(0),t.kemSecretKey?.fill(0)}}openUnsyncedConsuming(t){let i=null;try{if(this.attempted||this.deviceAttempted||!this.sql||this.sql.needsRecovery||typeof this.app.rt_app_open_local!="function"||(this.attempted=!0,!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295))throw T();let o=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(o<0||(i=qn(new Map([[0,1],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[12,o],[13,t.sqliteVersion]])),this.guard(()=>this.takeOut(this.app.rt_app_open_local(...this.put(i)))).length))throw T();this.collection=t.collection,this.deviceId=t.deviceId,this.active=!0,this.markOpened()}catch{throw this.fail(),T()}finally{i?.fill(0)}}tick(){this.active&&!this.retired&&this.guard(()=>super.tick())}connect(t={}){if(!this.active||this.retired||t.collection!==void 0&&(typeof t.collection!="string"||t.collection.toLowerCase()!==this.collection?.toLowerCase()))throw T();let i=super.connect(t),o=i.send.bind(i),s=i.close.bind(i);return i.send=r=>this.guard(()=>o(r)),i.close=()=>this.guard(()=>s()),i}executeBases(t,i){return this.readBases(t,i,"execute")}discoverBases(t,i,o){if(i!=="list-views"&&i!=="read-view-source")throw T();return this.readBases(t,o,i)}readBases(t,i,o){let s=this.sessionForPort(t),r=o==="execute"?this.app.rt_app_bases_execute:o==="list-views"?this.app.rt_app_bases_list_views:this.app.rt_app_bases_read_view_source;if(!this.active||this.retired||!this.sql||this.sql.needsRecovery||s===null||typeof r!="function")throw T();if(!(i instanceof Uint8Array)||!i.length||i.length>128*1024)throw A("invalid_request","Bases request bytes exceed bound");let a=new Uint8Array(i);try{let c=this.guard(()=>{let l=Kn(r.call(this.app,s,...this.put(a))),p=Number(l&0xffffffffn);if(!p||p>(o==="execute"?16:1)*1024*1024)throw T();return this.takeOut(l)});if(!this.active||this.retired||this.sql.needsRecovery||this.sessionForPort(t)!==s)throw c.fill(0),T();return c}finally{a.fill(0)}}setupResources(t,i,o,s,r){let a=this.sessionForPort(t),c=this.app.rt_app_resources;if(!this.active||this.retired||!this.sql||this.sql.needsRecovery||a===null||typeof c!="function")throw A("unavailable","resource setup unsupported","resource_setup_unsupported");if(i!=="assess"&&i!=="apply"||i==="apply"&&(typeof s!="string"||!/^sha256:[0-9a-f]{64}$/.test(s)))throw T();let l=r!==void 0,p=[1,i==="apply"?1:0,Sd(o,!0),s??null];l&&p.push(Sd(Oi(r),!0));let d=se(p);if(!d.length||d.length>512*1024)throw d.fill(0),A("invalid_request","resource DATA exceeds bound");let u;try{if(u=this.guard(()=>{let m=Kn(c.call(this.app,a,...this.put(d))),b=Number(m&0xffffffffn);if(!b||b>512*1024)throw T();return this.takeOut(m)}),!this.active||this.retired||this.sql.needsRecovery||this.sessionForPort(t)!==a)throw T();let f=this.guard(()=>ce(u));if(!Array.isArray(f)||f.length!==3||f[0]!==1||typeof f[1]!="boolean")throw T();if(f[1]===!1)throw A("unavailable","resource setup unavailable","resource_setup_unavailable");let h=Sd(f[2],!1);return i==="assess"?Ys(h,l):$t(h)}finally{d.fill(0),u?.fill(0)}}resourceRejected(t,i){let o=null;try{let s=this.sessionForPort(t),r=this.app.rt_app_receipt_rejected;return!this.active||this.retired||s===null||typeof r!="function"||!/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(i)?!1:(o=U(i),this.guard(()=>r.call(this.app,s,...this.put(o)))===1&&this.active&&!this.retired&&this.sessionForPort(t)===s)}catch{return!1}finally{o?.fill(0)}}verifyHandover(t,i,o){let s=null,r=null;try{let a=this.sessionForPort(t),c=i.collection,l=i.deviceId;if(!this.active||this.retired||a===null||c!==this.collection||i.isCurrent()!==!0||!(o instanceof Uint8Array)||o.length>64*1024)return null;s=new Uint8Array(o),r=U(l);let p=this.guard(()=>this.takeOut(this.app.rt_app_verify_handover(a,...this.put(r),...this.put(s))));if(p.length===0||this.sessionForPort(t)!==a||i.isCurrent()!==!0||i.collection!==c||i.deviceId!==l)return null;let d=this.guard(()=>pu.dec(ce(p)));return d.seq===0||[d.chain,d.policyGeneration,d.catalogGeneration].some(u=>u===`sha256:${"00".repeat(32)}`)?null:d}catch{return null}finally{s?.fill(0),r?.fill(0)}}bindCpConnector(t){let i=null;try{if(!this.active||this.retired||this.pump||this.cpPin||t.isCurrent()!==!0||t.deviceId!==this.deviceId||t.collection!==this.collection)throw T();let o=t.connectorId;if(i=U(o),i.every(s=>s===0)||this.guard(()=>this.app.rt_app_cp_bind_connector(...this.put(i)))!==1)throw T();this.connectorId=o,this.cpPin=t}catch{throw T()}finally{i?.fill(0)}}deviceCurrent(){try{let t=this.devicePin;return this.deviceActive&&!this.retired&&t!==null&&t.isCurrent()===!0&&t.connectorId===this.connectorId&&t.deviceId===this.deviceId&&t.installationId===this.installationId}catch{return!1}}publicResult(t){if(t.length>1024)throw T();let i=ce(t);if(!(i instanceof Map))throw T();let o=i;if(o.size!==4||[0,1,2,3].some(r=>!o.has(r)))throw T();let s=r=>{let a=o.get(r);if(!(a instanceof Uint8Array)||a.length!==32||a.every(c=>c===0))throw T();return new Uint8Array(a)};return{m:o,identity:Object.freeze({signPublicKey:s(0),kemPublicKey:s(1),noisePublicKey:s(2)})}}openDeviceConsuming(t){let i=null;try{if(this.deviceAttempted||this.attempted||this.retired)throw T();this.deviceAttempted=!0;let o=t.pin;if(this.devicePin=o,this.connectorId=o.connectorId,this.deviceId=o.deviceId,this.installationId=o.installationId,this.deviceActive=!0,!this.deviceCurrent())throw T();let s=[this.connectorId,this.deviceId,this.installationId].map(U);if(s.some(l=>l.every(p=>p===0)))throw T();let r=t.opened;if(r.mode!=="fresh"&&r.mode!=="existing"||r.mode==="existing"&&(!(r.envelope instanceof Uint8Array)||!r.envelope.length||r.envelope.length>1024))throw T();i=qn(new Map([[0,1],[1,s[0]],[2,s[1]],[3,s[2]],[4,r.mode==="fresh"?0:1],[5,nn(t.signSecretKey)],[6,nn(t.kemSecretKey)],[7,r.mode==="fresh"?new Uint8Array:new Uint8Array(r.envelope)]]));let a=this.guard(()=>this.takeOut(this.app.rt_app_device_open(...this.put(i))));if(!a.length||!this.deviceCurrent())throw T();let c=this.guard(()=>{let{m:l,identity:p}=this.publicResult(a),d=l.get(3);if(!(d instanceof Uint8Array)||!d.length||d.length>1024)throw T();return{...p,envelope:new Uint8Array(d)}});return this.publicIdentity={signPublicKey:new Uint8Array(c.signPublicKey),kemPublicKey:new Uint8Array(c.kemPublicKey),noisePublicKey:new Uint8Array(c.noisePublicKey)},this.noiseEnvelope=new Uint8Array(c.envelope),Object.freeze(c)}catch{throw this.retireLog(),T()}finally{i?.fill(0),t.signSecretKey?.fill(0),t.kemSecretKey?.fill(0)}}deviceCustodyCurrent(t,i){try{return this.deviceCurrent()&&!this.active&&this.publicIdentity!==null&&this.noiseEnvelope!==null&&t.isCurrent()===!0&&t.connectorId===this.connectorId&&t.deviceId===this.deviceId&&t.installationId===this.installationId&&i.envelope instanceof Uint8Array&&i.envelope.length===this.noiseEnvelope.length&&i.envelope.every((o,s)=>o===this.noiseEnvelope[s])&&["signPublicKey","kemPublicKey","noisePublicKey"].every(o=>i[o]instanceof Uint8Array&&i[o].length===32&&i[o].every((s,r)=>s===this.publicIdentity[o][r]))}catch{return!1}}acknowledgeDeviceRegistration(t){let i=null;try{if(!this.deviceCurrent()||this.active||this.deviceRegistered||!this.publicIdentity||t.connectorId!==this.connectorId||t.deviceId!==this.deviceId||t.installationId!==this.installationId)throw T();for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(nn(t[o]).some((s,r)=>s!==this.publicIdentity[o][r]))throw T();if(i=qn(new Map([[0,U(t.connectorId)],[1,U(t.deviceId)],[2,U(t.installationId)],[3,new Uint8Array(t.signPublicKey)],[4,new Uint8Array(t.kemPublicKey)],[5,new Uint8Array(t.noisePublicKey)]])),this.guard(()=>this.app.rt_app_device_registered(...this.put(i)))!==1||!this.deviceCurrent())throw T();this.deviceRegistered=!0}catch{throw this.retireLog(),T()}finally{i?.fill(0)}}prepareCloudCopyCollection(t){let i=null;try{if(t.approvalMode==="strict")throw new Mt;if(this.cloudSource||this.privateAttempted||!this.deviceCurrent()||!this.deviceRegistered||this.active||t.approvalMode!=="password-ak1"||!["create","join"].includes(t.purpose)||(this.cloudSource=t,this.cloudCallback=t.isCurrent,this.cloudCollection=t.collection,this.cloudPurpose=t.purpose,!this.cloudCopyCollectionCurrent(t)))throw T();let o=U(t.collection);if(o.every(s=>s===0)||(i=qn(new Map([[0,o],[1,t.purpose==="create"?0:1]])),this.guard(()=>this.app.rt_app_cloud_copy_pin(...this.put(i)))!==1||!this.cloudCopyCollectionCurrent(t)))throw T()}catch(o){throw this.retireLog(),o instanceof Mt?o:T()}finally{i?.fill(0)}}cloudCopyCollectionCurrent(t){try{let i=this.cloudSource;return this.deviceCurrent()&&!this.active&&this.deviceRegistered&&i!==null&&(!t||t===i)&&i.isCurrent===this.cloudCallback&&i.isCurrent()===!0&&i.connectorId===this.connectorId&&i.deviceId===this.deviceId&&i.installationId===this.installationId&&i.collection===this.cloudCollection&&i.purpose===this.cloudPurpose&&i.approvalMode==="password-ak1"}catch{return!1}}signCloudCopyCreate(t){return this.signCloudCopy(t,"create")}signCloudCopyJoin(t){return this.signCloudCopy(t,"join")}signCloudCopy(t,i){let o=null,s=null;try{if(this.cloudIssued||!this.cloudCopyCollectionCurrent()||this.cloudPurpose!==i||(this.cloudIssued=!0,o=new Uint8Array(nn(t)),s=this.guard(()=>this.takeOut(i==="create"?this.app.rt_app_cloud_copy_create_sign(...this.put(o)):this.app.rt_app_cloud_copy_join_sign(...this.put(o)))),s.length!==64||!this.cloudCopyCollectionCurrent()))throw T();return s}catch{throw s?.fill(0),this.retireLog(),T()}finally{o?.fill(0)}}preparePrivateCollection(t,i){let o=null,s=null;try{if(t.approvalMode==="strict")throw new Mt;if(this.cloudSource||this.privateAttempted||!this.deviceCurrent()||!this.deviceRegistered||this.active||t.approvalMode!=="password-ak1"||!["create","enrol"].includes(t.purpose)||(this.privateAttempted=!0,this.privateSource=t,this.prospectiveCollection=t.collection,this.privatePurpose=t.purpose,!this.privateCollectionCurrent()))throw T();let r=U(t.collection);if(r.every(a=>a===0))throw T();if(i.mode==="fresh"){if(o=qn(new Map([[0,r],[1,t.purpose==="create"?0:1]])),this.guard(()=>this.app.rt_app_private_collection_pin(...this.put(o)))!==1)throw T()}else if(i.mode==="existing"){let a=i.marker,c=this.publicIdentity;if(t.purpose!=="enrol"||!c||a.collection!==t.collection||a.connectorId!==this.connectorId||a.deviceId!==this.deviceId||a.installationId!==this.installationId||typeof a.acknowledged!="boolean")throw T();for(let p of["signPublicKey","kemPublicKey","noisePublicKey"])if(!BC(nn(a[p]),c[p]))throw T();let l=new Uint8Array(nn(a.sasCommitment));if(l.every(p=>p===0)||(s=l,o=qn(new Map([[0,1],[1,r],[2,U(a.connectorId)],[3,U(a.deviceId)],[4,U(a.installationId)],[5,new Uint8Array(a.signPublicKey)],[6,new Uint8Array(a.kemPublicKey)],[7,new Uint8Array(a.noisePublicKey)],[8,l],[9,a.acknowledged]])),this.privateEnrolAcknowledged=a.acknowledged,this.guard(()=>this.app.rt_app_private_enrol_restore(...this.put(o)))!==1))throw T()}else throw T();if(!this.privateCollectionCurrent())throw T();if(t.purpose==="enrol"){let a=this.guard(()=>this.takeOut(this.app.rt_app_private_enrol_commitment()));if(a.length!==32||a.every(c=>c===0)||s!==null&&!BC(a,s))throw T();this.sasCommitment=new Uint8Array(a)}}catch(r){throw this.retireLog(),r instanceof Mt?r:T()}finally{o?.fill(0)}}registeredDeviceReceipt(){if(!this.deviceCurrent()||!this.deviceRegistered||!this.publicIdentity)throw T();let t=this.publicIdentity;return Object.freeze({connectorId:this.connectorId,deviceId:this.deviceId,installationId:this.installationId,signPublicKey:new Uint8Array(t.signPublicKey),kemPublicKey:new Uint8Array(t.kemPublicKey),noisePublicKey:new Uint8Array(t.noisePublicKey)})}privateEnrolMarker(){if(!this.privateCollectionCurrent()||this.privatePurpose!=="enrol"||!this.sasCommitment||!this.publicIdentity)throw T();let t=this.publicIdentity;return Object.freeze({connectorId:this.connectorId,deviceId:this.deviceId,installationId:this.installationId,collection:this.prospectiveCollection,sasCommitment:new Uint8Array(this.sasCommitment),acknowledged:this.privateEnrolAcknowledged,signPublicKey:new Uint8Array(t.signPublicKey),kemPublicKey:new Uint8Array(t.kemPublicKey),noisePublicKey:new Uint8Array(t.noisePublicKey)})}privateCollectionCurrent(t){try{if(t&&(t.isCurrent()!==!0||t.connectorId!==this.connectorId||t.deviceId!==this.deviceId||t.installationId!==this.installationId||t.collection!==this.prospectiveCollection||t.purpose!==this.privatePurpose||t.approvalMode!=="password-ak1"))return!1;let i=this.privateSource;return this.deviceCurrent()&&!this.active&&this.deviceRegistered&&i!==null&&i.isCurrent()===!0&&i.connectorId===this.connectorId&&i.deviceId===this.deviceId&&i.installationId===this.installationId&&i.collection===this.prospectiveCollection&&i.purpose===this.privatePurpose&&i.approvalMode==="password-ak1"}catch{return!1}}signPrivateCreate(t){let i=null;try{if(!this.privateCollectionCurrent()||this.privatePurpose!=="create")throw T();i=new Uint8Array(nn(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_private_create_sign(...this.put(i))));if(o.length!==64||!this.privateCollectionCurrent())throw T();return o}catch{throw this.retireLog(),T()}finally{i?.fill(0)}}signPrivateDeviceEnrol(t){let i=null;try{if(!this.privateCollectionCurrent()||this.privatePurpose!=="enrol"||!this.sasCommitment||this.privateEnrolAcknowledged)throw T();i=new Uint8Array(nn(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_private_device_enrol_sign(...this.put(i))));if(o.length!==64||!this.privateCollectionCurrent())throw T();return Object.freeze({signature:o,sasCommitment:new Uint8Array(this.sasCommitment)})}catch{throw this.retireLog(),T()}finally{i?.fill(0)}}adoptDevice(t,i){let o=null;try{if(!this.deviceCurrent()||!this.deviceRegistered||this.attempted||this.active||t.deviceId!==this.deviceId||this.privateSource&&(!this.privateCollectionCurrent()||t.collection!==this.prospectiveCollection)||this.cloudSource&&(!this.cloudCopyCollectionCurrent()||t.collection!==this.cloudCollection||t.state!=="cloud_copy"||t.cloudCopyOptIn!==!0))throw T();let s=zC(t.policyPins);if(i){if(this.sql||i.needsRecovery||!this.sqlBinding.exports)throw T();this.sqlBinding.sql=i,this.sqlBinding.run=i.import(this.sqlBinding.exports)}if(!this.sql||this.sql.needsRecovery)throw T();this.attempted=!0;let r=Kn(t.endpoint),a=t.state==="e2e"?0:t.state==="cloud_copy"?1:-1,c=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(a<0||c<0||typeof t.cloudCopyOptIn!="boolean"||a===1!==t.cloudCopyOptIn||!Array.isArray(t.trustedRoots)||t.trustedRoots.length<1||t.trustedRoots.length>64||!Array.isArray(t.trustedSigners)||t.trustedSigners.length>1024||!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295||(o=qn(new Map([[0,4],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[4,r],[5,t.trustedRoots.map(nn)],[6,t.trustedSigners.map(U)],[7,Xd(t.expectedGenesis)],[8,a],[9,t.cloudCopyOptIn],[10,null],[11,null],[12,c],[13,t.sqliteVersion],[14,U(this.connectorId)],[15,U(this.installationId)],[16,s]])),o.length>64*1024)||this.guard(()=>this.takeOut(this.app.rt_app_device_adopt(...this.put(o)))).length||!this.deviceCurrent())throw T();this.collection=t.collection,this.endpoint=r,this.active=!0,this.markOpened()}catch{throw this.retireLog(),this.fail(),T()}finally{o?.fill(0)}}signCpEnrol(t){let i=null;try{if(!this.deviceCurrent()||!this.publicIdentity||this.active||this.pump)throw this.retireLog(),T();i=new Uint8Array(nn(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_cp_enrol_sign(...this.put(i))));if(!this.deviceCurrent())throw this.retireLog(),T();if(!o.length)throw T();let{m:s,identity:r}=this.guard(()=>this.publicResult(o)),a=s.get(3);if(!(a instanceof Uint8Array)||a.length!==64||["signPublicKey","kemPublicKey","noisePublicKey"].some(c=>r[c].some((l,p)=>l!==this.publicIdentity[c][p])))throw T();return Object.freeze({...r,signature:new Uint8Array(a)})}catch{throw this.retireLog(),T()}finally{i?.fill(0)}}signCpLogToken(t){let i=null;try{if(!this.active||this.retired||!this.cpPin)throw T();let o=this.cpPin,s=!1;try{s=o.isCurrent()===!0&&o.connectorId===this.connectorId&&o.deviceId===this.deviceId&&o.collection===this.collection}catch{}if(!s)throw this.retireLog(),T();i=new Uint8Array(nn(t));let r=this.guard(()=>this.takeOut(this.app.rt_app_cp_log_token_sign(...this.put(i))));if(r.length!==64)throw r.fill(0),T();return r}catch{throw T()}finally{i?.fill(0)}}bindLogTransport(t){try{if(!this.active||this.retired||this.pump||this.endpoint===null||this.collection===null||t.isCurrent()!==!0||Kn(t.endpoint)!==this.endpoint||t.collection!==this.collection)throw T()}catch{throw T()}let i=U(this.collection);if(this.guard(()=>this.app.rt_app_log_bind(this.endpoint,...this.put(i)))!==1)throw T();if(this.logGeneration=this.guard(()=>Kn(this.app.rt_app_log_generation())),this.logGeneration===0n)throw this.retireLog(),T();return this.pump=new Xs(this,t,{endpoint:this.endpoint,collection:this.collection}),this.transport=t,this.pump}requestLogHead(){return!this.active||this.retired||this.pump===null||typeof this.app.rt_app_log_head!="function"?!1:this.guard(()=>this.app.rt_app_log_head())===1}get supportsLogPush(){return typeof this.app.rt_app_log_hello_sign=="function"}signLogHello(t,i){let o=null;try{if(!this.supportsLogPush||!this.active||this.retired||!this.pump||!this.transport||this.logGeneration===0n||!this.transport.isCurrent()||!(t instanceof Uint8Array)||t.length!==32||typeof i!="string"||i.length===0||i.length>16*1024||/[^\x21-\x7e]/.test(i))return null;let s=new TextEncoder().encode(i);o=new Uint8Array(32+s.length),o.set(t,0),o.set(s,32),s.fill(0);let r=this.logGeneration,a=this.guard(()=>this.takeOut(this.app.rt_app_log_hello_sign(r,...this.put(o))));return a.length!==64?(a.fill(0),null):a}catch{return null}finally{o?.fill(0)}}async reconnectLogTransport(t){let i=this.pump,o=this.logGeneration,s=()=>this.active&&!this.retired&&this.pump===i&&i!==null&&this.transport===t&&t.isCurrent()===!0&&Kn(t.endpoint)===this.endpoint&&t.collection===this.collection;try{if(!s()||(await i.drainForAuthenticatedReconnect(),!s()))throw T();this.pump=null,this.transport=null;let r=U(this.collection);try{if(this.guard(()=>this.app.rt_app_log_reconnect(this.endpoint,...this.put(r)))!==1)throw T()}finally{r.fill(0)}if(this.logGeneration=this.guard(()=>Kn(this.app.rt_app_log_generation())),this.logGeneration<=o||!t.isCurrent()||this.retired||!this.active)throw T();return this.pump=new Xs(this,t,{endpoint:this.endpoint,collection:this.collection}),this.transport=t,this.pump}catch{throw this.retireLog(),T()}}signLogHttp(t){let i=null;try{if(!this.active||!this.pump||!this.transport||this.logGeneration===0n||this.endpoint===null||t.path!=="/v1/rpc"||t.collection!==this.collection||Kn(t.endpoint)!==this.endpoint||!this.transport.isCurrent()||!(t.frame instanceof Uint8Array)||t.frame.length===0||t.frame.length>16*1024*1024||!(t.nonce instanceof Uint8Array)||t.nonce.length!==32||typeof t.token!="string"||t.token.length===0||t.token.length>16*1024||/[^\x21-\x7e]/.test(t.token))throw T();i=qn(new Map([[0,t.frame],[1,t.token],[2,t.nonce]]));let o=this.guard(()=>this.takeOut(this.app.rt_app_log_http_sign(this.endpoint,this.logGeneration,Kn(t.originalCallId),...this.put(i))));if(o.length!==64)throw o.fill(0),T();return o}catch{throw T()}finally{i?.fill(0)}}takeLogCalls(){return!this.active||this.retired?[]:this.guard(()=>{let t=this.takeOut(this.app.rt_app_log_calls());if(!t.length)return[];let i=ce(t);if(!Array.isArray(i)||i.length>64)throw T();return i.map(o=>{if(!(o instanceof Map))throw T();let s=o,r=s.get(0),a=s.get(1),c=s.get(2);if(Kn(r)!==this.endpoint||!(a instanceof Uint8Array)||c!==void 0&&!(c instanceof Uint8Array))throw T();return{endpoint:r,frame:a,...c!==void 0?{sidecar:c}:{}}})})}acceptLogReply(t,i){return!this.active||this.retired?!1:this.guard(()=>this.app.rt_app_log_reply(Kn(t),...this.put(i))===1)}logNoResponse(t){this.active&&!this.retired&&this.guard(()=>this.app.rt_app_log_no_response(Kn(t)))}retireLog(){this.logGeneration=0n,!this.retired&&(this.retired=!0,this.cpPin=null,this.connectorId=null,this.devicePin=null,this.installationId=null,this.privateSource=null,this.prospectiveCollection=null,this.privatePurpose=null,this.sasCommitment?.fill(0),this.sasCommitment=null,this.publicIdentity=null,this.noiseEnvelope?.fill(0),this.noiseEnvelope=null,this.deviceActive=!1,this.deviceRegistered=!1,this.active?this.guard(()=>{super.dispose(),this.app.rt_app_log_retire()}):this.deviceAttempted&&this.guard(()=>this.app.rt_app_device_retire()))}pushLog(t){return!this.active||this.retired||!this.pump||!this.transport?!1:this.guard(()=>{let i=this.transport;return i.isCurrent()!==!0||Kn(i.endpoint)!==this.endpoint||i.collection!==this.collection?(this.retireLog(),!1):this.app.rt_app_log_push(...this.put(t))===1})}accountKeyCurrent(t){try{return this.active&&!this.retired&&t.isCurrent()===!0&&t.approvalMode==="password-ak1"&&t.collection===this.collection&&t.deviceId===this.deviceId&&t.connectorId===this.connectorId&&t.installationId===this.installationId&&this.devicePin!==null&&this.devicePin.isCurrent()===!0&&this.devicePin.connectorId===this.connectorId&&this.devicePin.deviceId===this.deviceId&&this.devicePin.installationId===this.installationId}catch{return!1}}accountKeyState(t){let i=ce(t);if(!(i instanceof Map))throw T();let o=i;if(o.size!==2||!o.has(0)||!o.has(1))throw T();let s=o.get(0),r=o.get(1);if(s===0||s===1){if(r!==null)throw T();return Object.freeze({state:s===0?"pending":"keyed"})}if(s!==2||typeof r!="string"||!["not_private","not_ready","not_enrolled","not_authorized","device_missing","enrolment_mismatch","not_keyed","no_wrap","inconsistent","failed","outcome_unknown"].includes(r))throw T();return Object.freeze({state:"refused",reason:r})}unlockAccountKeyConsuming(t,i){try{if(t.approvalMode==="strict")throw new Mt;if(!this.accountKeyCurrent(t))throw T();nn(i);let o=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_unlock(...this.put(i)))));if(!this.accountKeyCurrent(t))throw T();return o}catch(o){throw this.retireLog(),o instanceof Mt?o:T()}finally{i instanceof Uint8Array&&i.fill(0)}}setupAccountKeyDeviceConsuming(t,i){try{if(t.approvalMode==="strict")throw new Mt;if(!this.accountKeyCurrent(t))throw T();nn(i);let o=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_device_setup(...this.put(i)))));if(!this.accountKeyCurrent(t))throw T();return o.state==="refused"?o:Object.freeze({state:o.state==="keyed"?"recovery_keyed":"recovery_pending"})}catch(o){throw this.retireLog(),o instanceof Mt?o:T()}finally{i instanceof Uint8Array&&i.fill(0)}}get supportsAccountKeyFetchProof(){return typeof this.app.rt_app_account_key_fetch_sign=="function"}signAccountKeyFetch(t,i,o){let s=this.app.rt_app_account_key_fetch_sign;if(typeof s!="function")throw new Go;let r=null,a=null;try{if(t.approvalMode==="strict")throw new Mt;if(!this.accountKeyCurrent(t)||(a=U(i),a.every(l=>l===0)))throw T();r=qn(new Map([[0,new Uint8Array(nn(o))],[1,a]]));let c=this.guard(()=>this.takeOut(s(...this.put(r))));if(c.length!==64||!this.accountKeyCurrent(t))throw c.fill(0),T();return c}catch(c){throw this.retireLog(),c instanceof Mt?c:T()}finally{r?.fill(0),a?.fill(0)}}accountKeyStatus(t){try{if(!this.accountKeyCurrent(t))throw T();let i=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_status())));if(!this.accountKeyCurrent(t))throw T();return i}catch{throw this.retireLog(),T()}}observations(){if(!this.active||this.retired)throw T();return this.guard(()=>{let t=ce(this.takeOut(this.app.rt_app_observations()));if(!(t instanceof Map))throw T();let i=t;for(let o of[1,2,3,4])if(typeof i.get(o)!="boolean")throw T();return{status:Dr.dec(i.get(0)),keyringRebuilding:i.get(1),keyringRebuildFailed:i.get(2),snapshotInstallAvailable:i.get(3),requiresReopen:i.get(4)}})}async close(){return this.pump&&(await this.pump.close(),this.pump=null,this.transport=null),this.shutdown()}shutdown(){if(!this.active)return this.deviceAttempted&&!this.retired&&this.retireLog(),this.discard(),!1;if(this.pump)return this.pump.close().catch(()=>{}),this.fail(),!1;try{return this.retireLog(),super.dispose(),this.guard(()=>this.app.rt_app_shutdown()===1)&&this.sql!==null&&!this.sql.needsRecovery}finally{this.active=!1,this.discard()}}dispose(){this.shutdown()}}});function Fm(n){let e=n.manifest.requirements.files;return e?Object.freeze({required:Object.freeze([...n.files?.actions??[]]),optional:Object.freeze([...e.optional??[]])}):null}function Vm(n,e){return n.collections.find(t=>t.collectionId===e)?.fileActions??[]}function XC(n,e){let t=i=>n.required.includes(i)||n.optional.includes(i)&&e().includes(i);return Object.freeze({allows:t,check(i){if(!t(i))throw JC(i,n.optional.includes(i))}})}function ZC(n,e,t,i){let o=e?.files,s=t?.reason;if(!Array.isArray(o)||!o.length||o.some(a=>!uj.includes(a))||new Set(o).size!==o.length)throw A("invalid_request","Invalid file actions","access_invalid");if(typeof s!="string"||!s.trim()||s.length>140||/[\u0000-\u001f\u007f\u2028\u2029]/.test(s))throw A("invalid_request","Reason must be one line, 1-140 characters","access_invalid");let r=[];for(let a of o)if(!n?.required.includes(a)){if(!n?.optional.includes(a))throw JC(a,!1);i.includes(a)||r.push(a)}return Object.freeze(r)}function QC(n,e,t){let i=n.grant?.actions??[...new Set([...e?.required??[],...t])];return Object.freeze({status:"granted",actions:Object.freeze([...i])})}function hj(n,e){return new Promise(t=>{let i=0,o=a=>{clearInterval(r),n.removeEventListener("abort",s),t(a)},s=()=>o(!1),r=setInterval(()=>{e.closed?o(!0):++i>=3&&o(!1)},500);n.addEventListener("abort",s,{once:!0})})}async function eO(n,e,t){let i=r=>{try{e.close()}catch{}return r},o;try{o=await n.start()}catch(r){if(t.aborted)return i(Bm);throw r}let s=o.fileAccess?.requestId;for(let r=!1;;){let a=n.native().fileAccess;if(!s||a?.requestId!==s)return i(Bm);if(a.state==="granted")return i(n.granted());if(a.state==="declined")return i(fj);if(a.state==="expired"||r||t.aborted||(r=await hj(t,e),t.aborted))return i(Bm);await n.poll(s).catch(()=>{})}}var uj,JC,Bm,fj,Km=C(()=>{"use strict";ne();uj=["list","read","add","replace","move","delete"];JC=(n,e)=>e?A("forbidden",`File action ${n} needs requestAccess first`,"access_required"):A("forbidden",`File action ${n} is not declared`,"access_undeclared");Bm=Object.freeze({status:"cancelled"}),fj=Object.freeze({status:"declined"})});function vj(n){let e=n==="contract"?"shared format for this app's notes":n==="type"?"note type for this app":n==="schema"?"set of checks for this app's note properties":"setup item this app needs";return{the:`the ${e}`,bare:e}}function Jm(n){if(n===void 0)return Object.freeze([]);if(!Array.isArray(n)||n.length>gj)throw new TypeError("setup records: at most 32 { path, document } entries");let e=new Set,t=new TextEncoder,i=0;return Object.freeze(n.map(o=>{let s=o?.path,r=o?.document;if(typeof s!="string"||!/\.md$/i.test(s)||s.length>1024||s.startsWith("/")||s.split("/").some(a=>!a||a==="."||a==="..")||e.has(s.toLowerCase())||typeof r!="string"||!r.length||(i+=t.encode(r).length+t.encode(s).length)>bj)throw new TypeError("setup records: each needs a unique relative .md path and a document (256 KiB in total)");return e.add(s.toLowerCase()),Object.freeze({path:s,document:r})}))}function sO(n,e){return n.status!=="current"||n.refusal||e.facets.contracts.assessment?.status!=="setup_required"?n:Object.freeze({...n,status:"conflict",summary:oO,refusal:Object.freeze({code:"setup_unresolved",message:oO})})}function xd(n,e){let t=n.review,i=n.status==="current"?"current":n.status==="conflict"?"conflict":"setup",o=[],s=[],r={},a=new Set(t.staged.map(u=>u.path));for(let u of t.packs)for(let f of u.resources){let h=vj(f.kind),m=`T${h.the.slice(1)}`,b=f.kind==="contract"?", so other apps can work with them":"";switch(f.action){case"create":o.push({kind:"create",target:f.target,message:`Add ${h.the}${b}.`});break;case"update":o.push({kind:"update",target:f.target,message:`Update ${h.the}.`});break;case"delete":o.push({kind:"delete",target:f.target,message:`Remove ${h.the}, which this app no longer uses.`});break;case"adopt":o.push({kind:"adopt",target:f.target,message:a.has(f.target)?`Replace ${h.the} with this app's version. Yours isn't kept.`:`Use your existing ${h.bare}, which already matches this app's.`});break;case"preserve":case"conflict":{if(f.action==="preserve"&&f.reason===void 0)break;let w=f.mode==="seed",g=f.currentDigest!==void 0&&(w||!f.installed);g&&(r[f.target]=f.currentDigest),s.push({target:f.target,...g?{adoptable:{digest:f.currentDigest}}:{},message:g&&w?`Your ${h.bare} has changes that can't be combined with the version this app needs. You can replace it with this app's version.`:g?`This collection already has a ${h.bare} that differs from the one this app needs. You can replace it with this app's version.`:f.installed?`${m} was changed after this app set it up, so it can't be updated automatically.`:`${m} can't be set up automatically.`});break}default:break}}for(let u of t.configuration){let f=Aj(u.path);u.action==="add"?o.push({kind:"setting",target:f,message:f==="include"?"Include this app's files when reading the collection.":f==="record extensions"&&typeof u.value=="string"?`Read .${u.value.replace(/^\./,"")} files as notes in this collection.`:"Adjust a collection setting this app needs."}):s.push({target:f,message:"A collection setting differs from what this app needs, so it can't be changed automatically."})}let c=i==="current"?[]:e.records.map(u=>Object.freeze({path:u.path,action:u.free?"create":"skip"}));for(let u of c)u.action==="create"&&o.push({kind:"record",target:u.path,message:`Create the starter note "${wj(u.path)}".`});i==="setup"&&o.length===0&&s.length===0&&o.push({kind:"update",target:"Setup record",message:"Update this collection's record of this app's setup. Your notes and note types stay as they are."}),i==="current"&&s.length&&(i="conflict");let l=(e.newer?.major.length??0)>0||t.packs.some(u=>u.installedVersion&&Es(u.installedVersion,u.version)==="installed_newer_major"),p;i!=="current"&&!e.canManage?p={code:"setup_forbidden",message:"This app doesn't have permission to set up this collection."}:l?p={code:"installed_newer",message:"A newer version of this app set up this collection. Update the app to continue."}:s.length?p={code:"setup_conflict",message:s.length===Object.keys(r).length?`${s.length===1?"One item differs":`${s.length} items differ`} from what this app needs. Choose whether to use this app's version to continue.`:"Some items can't be set up automatically. Resolve them, then try again."}:c.some(u=>u.action==="create")&&!e.canCreateRecords&&(p={code:"setup_records_forbidden",message:"This app doesn't have permission to create notes in this collection."});let d=i==="current"?"Everything this app needs is already set up.":p?p.message:`This app will make ${_j(o.length,"change")} to this collection.${o.every(u=>u.kind==="create"||u.kind==="record"||u.kind==="adopt"&&!a.has(u.target))?" Nothing already in it is changed.":""}`;return Object.freeze({status:i,canApply:i==="setup"&&p===void 0,digest:n.assessmentDigest,summary:d,changes:Object.freeze(o.map(u=>Object.freeze(u))),conflicts:Object.freeze(s.map(u=>Object.freeze(u))),adoptable:Object.freeze(r),packs:Object.freeze([...t.packs.map(u=>Object.freeze({id:u.id,version:u.version,status:u.status,...u.installedVersion?{installedVersion:u.installedVersion,relation:Es(u.installedVersion,u.version)}:{}})),...(e.newer?.kept??[]).map(u=>Object.freeze({id:u.id,version:u.version,status:"current",installedVersion:u.installedVersion,relation:"installed_newer"}))]),staged:t.staged,records:Object.freeze(c),...p?{refusal:Object.freeze(p)}:{}})}var gj,bj,wj,_j,Aj,oO,Xm=C(()=>{"use strict";Kf();gj=32,bj=256*1024,wj=n=>(n.split("/").pop()??n).replace(/\.(md|ya?ml|json)$/i,"");_j=(n,e,t=`${e}s`)=>`${n} ${n===1?e:t}`,Aj=n=>(n.split("/").filter(Boolean).pop()??n).replace(/[_-]+/g," ");oO="This collection is missing something this app needs, and setup can't add it. A note type this app set up may have been changed or removed. Restore it, then try again."});function uO(){throw A("unavailable","SDK release trust unavailable: package authenticated LAB or production inputs","application_release_trust_unavailable")}var fO=C(()=>{"use strict";ne()});function hO(n,e){let t=()=>A("unauthenticated","people scope changed","people_fenced"),i={collection:n,isCurrent:()=>e.holds(n),async request(o,s={}){if(o!=="identity"&&o!=="members")throw A("invalid_request","invalid people resource");for(let r=0;;r++){if(s.signal?.throwIfAborted(),!i.isCurrent())throw t();let a=await e.accessToken(n,r>0),{status:c,body:l}=await Ij(e,`/v1/authorities/${n}/${o}`,a,s.signal);if(!i.isCurrent())throw t();if(!(c===401&&r===0)){if(c===401)throw A("unauthenticated","people credential is no longer current","people_fenced");if(c===403){let p=l?.error?.code;throw p==="approval_required"?Nn("approval_required"):A("forbidden","people access was refused",o==="members"&&p==="insufficient_access"?"people_permission_declined":"people_access")}if(c===404)throw A("upgrade_required","people metadata is unsupported","people_unsupported");if(c!==200||!l)throw E_();return l}}}};return i}async function Ij(n,e,t,i){let o=new AbortController,s=()=>o.abort();i?.addEventListener("abort",s,{once:!0});let r=setTimeout(s,xj);r.unref?.();try{let a=await n.fetch(`${n.cpOrigin}${e}`,{method:"GET",headers:{authorization:`Bearer ${t}`},signal:o.signal,redirect:"error",credentials:"omit",cache:"no-store",referrerPolicy:"no-referrer"}),c=await a.text();if(c.length>Pj)throw E_();let l=null;try{let p=JSON.parse(c);p&&typeof p=="object"&&!Array.isArray(p)&&(l=p)}catch{l=null}return{status:a.status,body:l}}catch(a){throw i?.aborted?A("cancelled","request cancelled"):a instanceof pe?a:E_()}finally{clearTimeout(r),i?.removeEventListener("abort",s)}}var Pj,xj,E_,mO=C(()=>{"use strict";Po();ne();Pj=1024*1024,xj=15e3,E_=()=>A("unavailable","people metadata is unavailable","people_response")});function T_(n){if(!/^sha256:[a-f0-9]{64}$/.test(n))throw Or();return Uint8Array.from(n.slice(7).match(/../g),e=>parseInt(e,16))}function M_(n){if(!(n instanceof Map)||[...n.keys()].some(e=>typeof e!="number"))throw Or();return n}function Zm(n,e){if(!(n instanceof Uint8Array)||n.length!==e)throw Or();return n.slice()}function q_(n){if(n instanceof Ct)return n.value;if(n instanceof Map){if([...n.keys()].some(e=>typeof e!="string"))throw Or();return Object.fromEntries([...n].map(([e,t])=>[e,q_(t)]))}if(Array.isArray(n))return n.map(q_);if(n===null||["string","boolean","number"].includes(typeof n))return n;throw Or()}async function Id(n,e,t,i){let o=se(new Map([[0,1],[1,e],...t].sort(([r],[a])=>Number(r)-Number(a)))),s;try{s=await n.declaredSetup(o,i);let r=M_(ce(s));if(r.get(0)!==1)throw Or();let a=r.get(1),c=a==="review"?[0,1,2,3,4,5,6,7,8,9,10]:a==="pending"?[0,1,2]:a==="receipt"?[0,1,3]:a==="cancelled"?[0,1]:[];if(r.size!==c.length||c.some(f=>!r.has(f)))throw Or();if(a==="cancelled")return{kind:a};if(a==="receipt")return{kind:a,receipt:Nt.dec(r.get(3))};let l=Zm(r.get(2),16);if(a==="pending")return{kind:a,ticket:l};if(a!=="review"||!["ready","setup_required","incompatible"].includes(r.get(3))||typeof r.get(8)!="string")throw Or();let p=M_(r.get(9)),d=r.get(10);if(!(p instanceof Map)||p.size!==2||![p.get(0),p.get(1)].every(f=>Number.isSafeInteger(f)&&Number(f)>=0&&Number(f)<=256)||!Array.isArray(d)||d.length>32)throw Or();let u=d.map(f=>{let h=M_(f);if(h.size!==2||typeof h.get(0)!="string"||!["create","skip"].includes(h.get(1)))throw Or();return Object.freeze({path:h.get(0),action:h.get(1)})});return{kind:a,ticket:l,revision:Zm(r.get(4),32),declaration:yO(Zm(r.get(7),32)),application:r.get(8),promoted:p.get(0),retained:p.get(1),records:Object.freeze(u),assessment:Ys({status:r.get(3)==="ready"?"current":r.get(3)==="incompatible"?"conflict":"provision",assessmentDigest:"sha256:"+yO(Zm(r.get(5),32)),review:q_(r.get(6))},!0)}}finally{o.fill(0),s?.fill(0)}}var Or,yO,gO=C(()=>{"use strict";Xe();ne();Ho();Ut();Or=()=>A("internal","Invalid Native setup reply.","declared_setup_codec"),yO=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")});function Cj(n){return new Promise((e,t)=>{if(n?.aborted)return t(A("cancelled","Setup cancelled."));let i=()=>{clearTimeout(o),t(A("cancelled","Setup cancelled."))},o=setTimeout(()=>{n?.removeEventListener("abort",i),e()},100);n?.addEventListener("abort",i,{once:!0})})}function bO(n){let{client:e,journal:t}=n,i=n.operations.includes("assess_collection_setup")&&n.operations.includes("apply_collection_setup"),o=new WeakMap,s=new WeakSet,r=!1;async function a(m){if(r)throw A("rate_limited","A setup operation is already running.");r=!0;try{return await m()}finally{r=!1}}async function c(m,b){if(m||await e.readyForRead(b),await n.assertCurrent(),b?.aborted)throw A("cancelled","Setup cancelled.");if(m&&(m.closed||e.currentSession()!==m))throw Jo()}async function l(m,b){try{await Id(m,"cancel",[[2,b]],AbortSignal.timeout(1e3))}catch{}}async function p(m={}){await c(void 0,m.signal);let b=await e.readyForRead(m.signal);await c(b,m.signal);let w=await om(n.manifest);await c(b,m.signal);let g=Oi(m.adopt===void 0?{}:{adopt:m.adopt}),y=Jm(m.records),v=[];g.adopt&&Object.keys(g.adopt).length&&v.push([3,new Map(Object.entries(g.adopt).map(([k,S])=>[k,T_(S)]))]),y.length&&v.push([4,y.map(k=>new Map([[0,k.path],[1,k.document]]))]);let _;try{let k=await Id(b,"assess",v,m.signal);await c(b,m.signal);for(let S=0;k.kind==="pending";S++){if(_=k.ticket,S>=512)throw Cd();await Cj(m.signal),await c(b,m.signal),k=await Id(b,"poll",[[2,_]],m.signal),await c(b,m.signal)}if(k.kind!=="review")throw Cd();if(_=k.ticket,k.declaration!==w||k.application!==n.manifest?.id)throw Jo();if(k.records.length!==y.length||k.records.some((S,x)=>S.path!==y[x].path))throw Cd();return{s:b,review:k,options:{records:y,...g.adopt?{adopt:Object.freeze({...g.adopt})}:{}}}}catch(k){throw _&&await l(b,_),k}}async function d(m){await c(void 0,m);let b=await t.load();if(await c(void 0,m),!b)return;let w;try{w=await e.receipt(b,m)}catch(g){throw Zs(b,g)}if(await c(void 0,m),w.mutation!==b||w.state!=="confirmed"&&w.state!=="rejected")throw Zs(b);await t.clear(b)}function u(m,b){let w=xd(b.assessment,{canManage:!0,canCreateRecords:m.hello.grant.capabilities.includes("records.create"),records:b.records.map(y=>({path:y.path,free:y.action==="create"}))});if(!b.promoted)return w;let g=Object.freeze([...w.changes,{kind:"record",target:"Existing files",message:`Recognize ${b.promoted} existing ${b.promoted===1?"file":"files"} as notes, preserving their contents.`}]);return Object.freeze({...w,changes:g,summary:`This app will make ${g.length} ${g.length===1?"change":"changes"} to this collection.`})}let f=(m,b)=>JSON.stringify([m.status,m.canApply,m.summary,m.changes,m.conflicts,m.adoptable,m.packs,m.staged,m.records,m.refusal??null,b.promoted,b.retained]),h={async assess(m={}){let b=await h.plan(m),w=o.get(b);return w&&(await l(w.session,w.review.ticket),await c(w.session,m.signal)),b.status==="current"?"ready":b.status==="conflict"?"incompatible":"setup_required"},async plan(m={}){return a(async()=>{if(await c(void 0,m.signal),!i){if(n.operations.includes("apply_collection_setup")||n.operations.includes("assess_collection_setup"))throw Cd();let v=xd({status:"current",assessmentDigest:`sha256:${"0".repeat(64)}`,review:{configuration:[],packs:[],staged:[]}},{canManage:!1,canCreateRecords:!1,records:[]});return s.add(v),v}await d(m.signal);let{s:b,review:w,options:g}=await p(m),y=u(b,w);return o.set(y,{session:b,review:w,options:g,consumed:!1}),y})},async apply(m,b={}){return a(async()=>{if(s.has(m))return await c(void 0,b.signal),"ready";let w=o.get(m);if(!w)throw new TypeError("setup.apply needs the original plan returned by setup.plan");if(w.consumed)throw Jo();if(m.refusal)throw A(m.refusal.code==="setup_conflict"?"conflict":"forbidden",m.refusal.message,m.refusal.code);if(m.status==="current"){await c(w.session,b.signal);let g=await p({signal:b.signal});if(await l(g.s,g.review.ticket),g.review.assessment.status!=="current")throw Jo();return"ready"}w.consumed=!0;for(let g=0;;g++){let y=crypto.randomUUID(),v;try{v=await t.begin(y)}catch(S){throw Zs(y,S)}if(v!==y)throw Zs(v);let _=!1,k=!1;try{await c(w.session,b.signal),_=!0;let S=await Id(w.session,"apply",[[2,w.review.ticket],[3,U(y)],[4,w.review.revision],[5,T_(w.review.assessment.assessmentDigest)]],b.signal);if(await n.assertCurrent(),S.kind!=="receipt"||S.receipt.mutation!==y)throw Zs(y);let x=S.receipt.state==="pending"?await e.awaitReceipt(y,3e4,b.signal):S.receipt;if(await n.assertCurrent(),x.mutation!==y||x.state!=="confirmed"&&x.state!=="rejected")throw Zs(y);if(k=!0,await t.clear(y),x.state==="rejected"||(x.conflicts?.length??0)>0||x.status!==void 0&&x.status!=="applied")throw Jo(y,x.problem);let P=await p({signal:b.signal});if(P.review.assessment.status!=="current")throw Cd();return await l(P.s,P.review.ticket),"ready"}catch(S){if(!_||k||eb(S)&&S.code!=="outcome_unknown"){if(await t.clear(y),!k&&(eb(S)?S.code==="not_found"||S.code==="conflict":!_&&Q(S,"conflict")&&S.reason==="setup_changed")){if(g)throw Jo(y,S);let P=await p({...w.options,signal:b.signal});try{if(await c(P.s,b.signal),P.review.assessment.status!=="provision"||f(u(P.s,P.review),P.review)!==f(m,w.review))throw Jo(y,S)}catch(I){throw await l(P.s,P.review.ticket),I}w={...w,session:P.s,review:P.review};continue}throw new pe((Q(S)?S:Jo()).toProblem(),{mutationId:y,cause:S})}throw Zs(y,S)}}})}};return Object.freeze(h)}var Jo,Zs,Cd,wO=C(()=>{"use strict";ne();be();Fc();Ho();Xm();am();gO();Jo=(n,e)=>new pe(A("conflict","This collection changed since setup was reviewed. Review it again.","setup_changed").toProblem(),{...n?{mutationId:n}:{},...e?{cause:e}:{}}),Zs=(n,e)=>new pe(A("outcome_unknown","Reconcile the original setup before trying again.","setup_outcome_unknown").toProblem(),{mutationId:n,...e?{cause:e}:{}}),Cd=()=>A("unavailable","Native setup is unavailable.","resource_setup_unavailable")});function _O(n){let e=new Uint8Array([...n.aad,...new TextEncoder().encode("\0declared-setup-attempt-v1")]),t=()=>A("unavailable","Protected Native setup attempt storage is unavailable.","grant_storage");async function i(){let s=await n.grant();await n.assertCurrent(s);let r=await n.store();if(!r.getSetupAttempt||!r.putSetupAttemptIfAbsent||!r.deleteSetupAttempt)throw t();return{grant:s,store:r}}async function o(s,r){let a;try{if(s.length<29||s.length>2048)throw t();a=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:s.slice(0,12),additionalData:e},r.refreshKey,s.slice(12)));let c=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(a)),l=Array.from(r.noisePublicKey,p=>p.toString(16).padStart(2,"0")).join("");if(c.version!==1||!vO.test(c.mid)||c.noise!==l||Object.keys(c).sort().join(",")!=="mid,noise,version")throw t();return await n.assertCurrent(r),c.mid}catch{throw t()}finally{a?.fill(0)}}return{async load(){let{grant:s,store:r}=await i(),a=await r.getSetupAttempt(s.collection);return await n.assertCurrent(s),a?o(a,s):void 0},async begin(s){if(!vO.test(s))throw t();let{grant:r,store:a}=await i(),c=crypto.getRandomValues(new Uint8Array(12)),l=new TextEncoder().encode(JSON.stringify({version:1,mid:s,noise:Array.from(r.noisePublicKey,u=>u.toString(16).padStart(2,"0")).join("")})),p;try{p=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:c,additionalData:e},r.refreshKey,l))}finally{l.fill(0)}await n.assertCurrent(r);let d=await a.putSetupAttemptIfAbsent(r.collection,new Uint8Array([...c,...p]));return o(d,r)},async clear(s){let{grant:r,store:a}=await i(),c=await a.getSetupAttempt(r.collection);c&&await o(c,r)===s&&(await n.assertCurrent(r),await a.deleteSetupAttempt(r.collection,c))}}}var vO,AO=C(()=>{"use strict";ne();vO=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/});function Od(){throw A("unauthenticated","the stored grant belongs to another app","grant_storage")}function kO(n,e,t={}){let i=globalThis.indexedDB;if(!i)throw A("unavailable","IndexedDB is not available here","grant_storage");let o=t.owner;if(o!==void 0&&!zs(o))throw A("invalid_request","invalid grant store owner","grant_storage");let s=o===void 0?`mdbase.app-grants.v1.${encodeURIComponent(n)}.${e}`:`mdbase.app-grants.v2.${encodeURIComponent(n)}.${encodeURIComponent(o)}.${e}`,r=h=>h===void 0||o===void 0||h.owner===o?h:Od(),a=h=>o===void 0||h===void 0||h.owner===o,c=h=>o===void 0?h:{...h,owner:o},l=null,p=()=>l??=new Promise((h,m)=>{let b=i.open(s,2);b.onupgradeneeded=()=>{for(let w of[L_,Qs,Kl])b.result.objectStoreNames.contains(w)||b.result.createObjectStore(w)},b.onsuccess=()=>{b.result.onversionchange=()=>{b.result.close(),l=null},h(b.result)},b.onerror=()=>{l=null,m(A("unavailable","grant storage could not be opened","grant_storage"))}}),d=async(h,m,b)=>{let w=await p();return new Promise((g,y)=>{let v=w.transaction([...h],m,{durability:"strict"}),_,k=!1;v.oncomplete=()=>k?g(_):y(A("unavailable","grant storage returned no result","grant_storage")),v.onabort=v.onerror=()=>y(A("unavailable","grant storage transaction failed","grant_storage"));try{b(v,S=>{_=S,k=!0})}catch{try{v.abort()}catch{}}})},u=(h,m,b)=>d([h],m,(w,g)=>b(w.objectStore(h),g)),f=(h,m)=>u(h,"readonly",(b,w)=>{let g=b.get(m);g.onsuccess=()=>w(g.result)});return{getSetupAttempt:async h=>r(await f(Kl,h))?.bytes,putSetupAttemptIfAbsent:async(h,m)=>r(await u(Kl,"readwrite",(b,w)=>{let g=b.get(h);g.onsuccess=()=>{if(g.result!==void 0)return w(g.result);let y=c({bytes:m.slice()});b.add(y,h).onsuccess=()=>w(y)}})).bytes,deleteSetupAttempt:async(h,m)=>{await u(Kl,"readwrite",(w,g)=>{let y=w.get(h);y.onsuccess=()=>{if(!a(y.result))return g("refused");let v=y.result?.bytes;if(!v||v.length!==m.length||!v.every((_,k)=>_===m[k]))return g("done");w.delete(h).onsuccess=()=>g("done")}})==="refused"&&Od()},getIdentity:async()=>r(await f(L_,"installation")),putIdentityIfAbsent:async h=>r(await u(L_,"readwrite",(m,b)=>{let w=m.get("installation");w.onsuccess=()=>{if(w.result!==void 0)return b(w.result);let g=c(h);m.add(g,"installation").onsuccess=()=>b(g)}})),getGrant:async h=>r(await f(Qs,h)),listGrants:async()=>(await u(Qs,"readonly",(h,m)=>{let b=h.getAll();b.onsuccess=()=>m(b.result)})).map(h=>r(h)),putGrant:async h=>{await u(Qs,"readwrite",(b,w)=>{let g=b.get(h.collection);g.onsuccess=()=>{if(!a(g.result))return w("refused");b.put(c(h),h.collection).onsuccess=()=>w("done")}})==="refused"&&Od()},deleteGrant:async h=>{await u(Qs,"readwrite",(b,w)=>{let g=b.get(h);g.onsuccess=()=>{if(!a(g.result))return w("refused");b.delete(h).onsuccess=()=>w("done")}})==="refused"&&Od()},clearGrants:async()=>{await d([Qs,Kl],"readwrite",(m,b)=>{let w=!1,g=2,y=()=>{--g===0&&b(w?"refused":"done")};for(let v of[Qs,Kl]){let _=m.objectStore(v);if(o===void 0){_.clear().onsuccess=y;continue}let k=_.openCursor();k.onsuccess=()=>{let S=k.result;if(!S)return y();a(S.value)?S.delete():w=!0,S.continue()}}})==="refused"&&Od()}}}var L_,Qs,Kl,SO=C(()=>{"use strict";Ko();ne();L_="identity",Qs="grants",Kl="native-setup-attempts"});var RO={};ca(RO,{MdbaseAppGrants:()=>D_,deliverAppGrantCallback:()=>qj,mergeCollectionEntries:()=>Lj});function Ej(n){try{let e=Uint8Array.from(atob(n.replaceAll("-","+").replaceAll("_","/")),t=>t.charCodeAt(0));return e.length===32&&In(e)===n}catch{return!1}}function qj(n){let e=globalThis.BroadcastChannel;if(!e)throw A("unavailable","BroadcastChannel is not available","authorization_callback");let t=new e(OO);t.postMessage({type:"callback",url:String(n)}),t.close()}function Tj(){return{subscribe(n){let e=globalThis.BroadcastChannel;if(!e)throw A("unavailable","BroadcastChannel is not available","authorization_callback");let t=new e(OO);return t.onmessage=i=>{let o=i.data;o?.type==="callback"&&typeof o.url=="string"&&n(o.url)},()=>t.close()}}}function Lj(n,e){let t=new Map;for(let i of n)t.set(i.collectionId,Object.freeze({collectionId:i.collectionId,displayName:i.displayName,kind:"cloud_copy",availability:i.availability??Object.freeze({state:"available"}),role:i.role}));for(let i of e)t.has(i.collectionId)||t.set(i.collectionId,Object.freeze({collectionId:i.collectionId,displayName:i.displayName,kind:"private",availability:i.availability,role:i.role}));return[...t.values()].sort((i,o)=>i.displayName.localeCompare(o.displayName)||i.collectionId.localeCompare(o.collectionId))}async function N_(n,e){let t=new Uint8Array(await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},n,e));if(t.length!==64)throw A("internal","unexpected signature length","authorization_signature");let i=0n;for(let s of t.subarray(32))i=i<<8n|BigInt(s);if(i<=PO/2n)return t;let o=PO-i;for(let s=63;s>=32;s--)t[s]=Number(o&0xffn),o>>=8n;return t}async function jj(n,e,t,i){let o=Math.floor(Date.now()/1e3),s=crypto.randomUUID(),r=[cI,Tv,"POST",e,await CO(t),await CO(i),o,s].join(`
|
|
130
|
-
`);return{[Qp.version]:String(Tv),[Qp.timestamp]:String(o),[Qp.nonce]:s,[Qp.signature]:In(await N_(n,new TextEncoder().encode(r)))}}async function j_(n,e){let t=await crypto.subtle.generateKey({name:e,namedCurve:"P-256"},!1,n);return{privateKey:t.privateKey,publicKey:In(new Uint8Array(await crypto.subtle.exportKey("raw",t.publicKey)))}}async function Uj(){let n;try{n=await crypto.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{throw A("unavailable","this browser cannot keep a non-extractable X25519 key","browser_unsupported")}if(n.privateKey.extractable)throw A("unavailable","the Noise key must be non-extractable","browser_unsupported");return{privateKey:n.privateKey,publicKey:new Uint8Array(await crypto.subtle.exportKey("raw",n.publicKey))}}function Nj(n){return{publicKey:n.noisePublicKey.slice(),dh:async e=>{let t=await crypto.subtle.importKey("raw",e,{name:"X25519"},!1,[]);return new Uint8Array(await crypto.subtle.deriveBits({name:"X25519",public:t},n.noisePrivateKey,256))}}}function Dj(n,e){let t=new AbortController,i=()=>t.abort(),o=setTimeout(i,e);return o.unref?.(),n?.addEventListener("abort",i,{once:!0}),n?.aborted&&t.abort(),{signal:t.signal,done:()=>{clearTimeout(o),n?.removeEventListener("abort",i)}}}async function $j(n,e){let t=globalThis.navigator?.locks;if(t)return t.request(n,{mode:"exclusive"},e);let i=ey.get(n)??Promise.resolve(),o,s=new Promise(r=>{o=r});ey.set(n,s),await i;try{return await e()}finally{o(),ey.get(n)===s&&ey.delete(n)}}var Oj,OO,Xo,Rj,PO,Mj,In,Qm,xO,IO,CO,ty,Wl,U_,Rr,ey,D_,EO=C(()=>{"use strict";ed();Vo();xl();Yf();nm();fO();am();be();Po();ne();iw();Is();Ma();Yu();up();fp();mO();wO();AO();Qg();SO();Vv();Oj=new Set(["owner","editor","viewer"]),OO="mdbase.app-grant.v1",Xo=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Rj=15e3;PO=BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),Mj=new TextEncoder().encode("mdbase-next client noise key v1\0");In=n=>{let e="";for(let t of n)e+=String.fromCharCode(t);return btoa(e).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")},Qm=n=>crypto.getRandomValues(new Uint8Array(n)),xO=n=>{let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,n),e},IO=(...n)=>{let e=new Uint8Array(n.reduce((i,o)=>i+o.length,0)),t=0;for(let i of n)e.set(i,t),t+=i.length;return e};CO=async n=>In(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n))));ty=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),Wl=(n,e)=>!!e&&n.collection===e.collection&&n.owner===e.owner&&ty(n.noisePublicKey,e.noisePublicKey),U_=(n,e)=>Wl(n,e)&&ty(n.refresh,e.refresh),Rr=()=>A("cancelled","the stored grant changed during this operation"),ey=new Map;D_=class{constructor(e){this.options=e;this.declaration=eo(e.declaration),this.cpOrigin=xi({environment:this.declaration.environment,appOrigin:this.declaration.origin,release:uO()}).cpOrigin;try{this.redirect=new URL(e.redirectUri)}catch{throw A("invalid_request","redirectUri must be an absolute URL","redirect_uri")}if(this.redirect.origin!==this.declaration.origin||this.redirect.hash)throw A("invalid_request","redirectUri must be on the app's origin, without a fragment","redirect_uri");this.fetcher=e.fetch??globalThis.fetch.bind(globalThis),this.callbacks=e.callbacks??Tj(),this.storeValue=e.store??null}options;declaration;cpOrigin;redirect;fetcher;callbacks;storeValue;registration=null;tokens=new Map;refreshing=new Map;forgotten=new Set;epoch=0;register(){let e=this.registration??=sm({declaration:this.options.declaration,signal:new AbortController().signal,isCurrent:()=>!0,fetch:this.fetcher});return e.catch(()=>{this.registration===e&&(this.registration=null)}),e}ownerValue=null;owner(){return this.ownerValue??=d1(Fo(this.declaration).manifest.id,Gf(this.declaration))}async store(){if(this.storeValue)return this.storeValue;let e=this.owner();return this.storeValue=kO(this.cpOrigin,(await this.register()).id,{owner:e})}async identity(){let e=await this.store(),t=await e.getIdentity();if(t)return t;let i=await j_(["sign"],"ECDSA");return e.putIdentityIfAbsent({version:1,privateKey:i.privateKey,publicKey:i.publicKey})}async request(e,t,i){let o=Dj(i,Rj);try{let s;try{s=await this.fetcher(`${this.cpOrigin}${e}`,{...t,redirect:"error",signal:o.signal})}catch{throw i?.aborted?A("cancelled","request cancelled"):A("unavailable","cannot reach the control plane","control_unreachable")}let r=null;try{let a=await s.json();a&&typeof a=="object"&&!Array.isArray(a)&&(r=a)}catch{r=null}return{status:s.status,body:r}}finally{o.done()}}async authorize(e){e=Object.freeze({...e});let t=await this.prepareAuthorization(e).catch(i=>{throw e.popup.close(),i});try{e.popup.navigate(t.authorizationUri);let{collectionId:i}=await t.finish(e);return{collectionId:i}}finally{t.cancel();try{e.popup.close()}catch{}}}async prepareAuthorization(e={}){if(e=Object.freeze({...e}),e.collection!==void 0&&!Xo.test(e.collection))throw A("invalid_request","collection must be a UUID");if(e.expectedAccountId!==void 0&&(!Xo.test(e.expectedAccountId)||!e.authorizationNonce))throw A("invalid_request","original account and challenge required","authorization_binding");if(e.authorizationNonce!==void 0&&(!/^[A-Za-z0-9_-]{43}$/.test(e.authorizationNonce)||!Ej(e.authorizationNonce)))throw A("invalid_request","invalid original challenge","authorization_binding");let t=new AbortController,i=e.signal?AbortSignal.any([e.signal,t.signal]):t.signal,o=this.epoch,s=()=>{if(i.aborted)throw A("cancelled","authorization fenced","authorization_cancelled");if(o!==this.epoch)throw Rr()};s();let r=await this.register(),a=Fo(this.declaration),c=await this.identity(),l=await j_(["deriveBits"],"ECDH"),p=await j_(["sign"],"ECDSA"),d=await Uj(),u=In(Qm(32)),f=In(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(u)))),h=In(Qm(24)),m=crypto.randomUUID(),b=new Date,w={protocol_version:Qr,authorization_id:m,application_id:r.id,application_declaration_id:String(a.manifest.id),application_manifest_digest:r.manifestDigest,application_installation_id:await rI(c.publicKey),installation_signing_public_key:c.publicKey,grant_agreement_public_key:l.publicKey,grant_signing_public_key:p.publicKey,flow:"authorization_code",authorization_nonce:e.authorizationNonce??In(Qm(32)),issued_at:b.toISOString(),expires_at:new Date(b.getTime()+10*6e4).toISOString(),redirect_uri:this.redirect.href,state:h,code_challenge:f,contracts:a.contracts,requested_operations:[...a.operations],...a.files?{requested_files:a.files}:{},...e.collection?{collection_id:e.collection}:{}},g={binding:w,signature:In(await N_(c.privateKey,oI(w)))},y=IO(Mj,xO(16),U(m),xO(32),d.publicKey),v={public_key:In(d.publicKey),signature:In(await N_(p.privateKey,y))};s();let _=await this.request("/oauth/authorization_request",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:r.id,redirect_uri:this.redirect.href,code_challenge:f,code_challenge_method:"S256",state:h,operations:a.operations.join(","),...e.collection?{collection_id:e.collection}:{},application_authorization:JSON.stringify(g),client_noise_key:JSON.stringify(v)})},i);s();let k=_.body?.authorization_uri;if(_.status!==200||_.body?.authorization_id!==m||typeof k!="string"||!k.startsWith(`${this.cpOrigin}/oauth/authorize?`))throw A("unavailable",`authorization could not be started (${_.status})`,"authorization_start");let S=null,x=this.awaitCallback(h,{navigate(){},close(){},get closed(){return S?.closed===!0}},{popup:{navigate(){},close(){}},signal:i,timeoutMs:e.timeoutMs});x.catch(()=>{});let P=!1;return Object.freeze({applicationId:r.id,manifestDigest:r.manifestDigest,authorizationId:m,authorizationUri:k,cancel:()=>t.abort(),finish:async I=>{if(I=Object.freeze({...I}),P)throw A("invalid_request","original authorization already consumed","authorization_binding");P=!0,S=I.popup;let R=()=>t.abort();I.signal?.addEventListener("abort",R,{once:!0}),I.signal?.aborted&&t.abort();try{s();let O=I.collection??e.collection;if(O!==void 0&&!Xo.test(O))throw A("invalid_request","invalid approved collection","authorization_binding");if(e.collection&&O!==e.collection)throw A("forbidden","a different collection was approved","collection_mismatch");if(e.expectedAccountId&&!O)throw A("invalid_request","original Private choice required","authorization_binding");let q=await x;s();let j=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:q,client_id:r.id,redirect_uri:this.redirect.href,code_verifier:u})},i);s();let z=e.expectedAccountId?um(j.body,{accountId:e.expectedAccountId,authorizationRequestId:m,applicationId:r.id,declarationId:w.application_declaration_id,manifestDigest:r.manifestDigest,applicationInstallationId:w.application_installation_id,applicationOrigin:this.redirect.origin,collectionId:O,grantSigningPublicKey:p.publicKey,clientNoisePublicKey:In(d.publicKey)}):void 0,D=await this.saveTokens(j,{noise:d,signing:p.privateKey,collection:O,check:s});return s(),{collectionId:D,...z?{nativeCompletion:z}:{}}}finally{I.signal?.removeEventListener("abort",R),t.abort()}}})}awaitCallback(e,t,i){let o=Math.min(Math.max(i.timeoutMs??6e5,1e3),18e5);return new Promise((s,r)=>{let a=null,c=f=>{p(),clearTimeout(d),clearInterval(u),i.signal?.removeEventListener("abort",l),f()},l=()=>c(()=>r(A("cancelled","authorization cancelled","authorization_cancelled"))),p=this.callbacks.subscribe(f=>{let h;try{h=new URL(f)}catch{return}if(h.origin!==this.redirect.origin||h.pathname!==this.redirect.pathname||h.searchParams.get("state")!==e)return;if(h.searchParams.get("error"))return c(()=>r(A("forbidden","access was not approved","authorization_denied")));let b=h.searchParams.get("code");if(!b)return c(()=>r(A("unavailable","the authorization callback has no code","authorization_callback")));c(()=>s(b))}),d=setTimeout(()=>c(()=>r(A("cancelled","authorization timed out","authorization_timed_out"))),o),u=setInterval(()=>{let f=!1;try{f=t.closed===!0}catch{f=!1}if(!f){a=null;return}a??=Date.now(),Date.now()-a>=3e3&&c(()=>r(A("cancelled","the authorization window was closed","authorization_cancelled")))},500);i.signal?.addEventListener("abort",l,{once:!0}),i.signal?.aborted&&l()})}async saveTokens(e,t){let i=e.body;if(e.status!==200||!i)throw e.status===400&&i&&typeof i.error=="string"&&i.error==="invalid_grant"?A("unauthenticated","the grant is no longer valid","grant_invalid"):e.status===400?Nn("sync_required"):A("unavailable",`token request failed (${e.status})`,"token_error");let o=i.access_token,s=i.refresh_token,r=i.collection_id,a=i.expires_in,c=i.refresh_expires_in;if(typeof o!="string"||typeof s!="string"||typeof r!="string"||!Xo.test(r)||typeof a!="number"||!(a>0)||typeof c!="number"||!(c>0))throw A("unavailable","invalid token response","token_response");let l=r.toLowerCase();if(t.collection&&t.collection.toLowerCase()!==l)throw A("forbidden","a different collection was approved","collection_mismatch");if(t.previous&&t.previous.collection!==l)throw A("unavailable","the token names another collection","token_response");let p=t.previous?.refreshKey??await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]),d=Qm(12),u=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:d,additionalData:this.aad(l)},p,new TextEncoder().encode(s))),f=t.noise??{privateKey:t.previous.noisePrivateKey,publicKey:t.previous.noisePublicKey},h=t.signing??t.previous?.signingPrivateKey,m={version:1,collection:l,noisePrivateKey:f.privateKey,noisePublicKey:f.publicKey,refreshKey:p,refresh:IO(d,u),refreshExpiresAt:Date.now()+c*1e3,...h?{signingPrivateKey:h}:{},...t.previous?.owner?{owner:t.previous.owner}:{}},b=this.epoch;return await this.withLock(l,"commit",async()=>{let w=await this.store();if(b!==this.epoch||t.previous&&!U_(t.previous,await w.getGrant(l)))throw Rr();t.check?.(),await w.putGrant(m);let g=await w.getGrant(l);if(!g||!ty(m.noisePublicKey,g.noisePublicKey)||!ty(m.refresh,g.refresh))throw Rr();t.check?.(),this.tokens.set(l,{access:o,expiresAt:Date.now()+a*1e3,collection:l,owner:g.owner,noisePublicKey:g.noisePublicKey.slice()}),this.forgotten.delete(l)}),l}aad(e){return new TextEncoder().encode(`mdbase.app-grant.v2\0${this.cpOrigin}\0${this.owner()}\0${e}`)}async accessToken(e,t=!1){let i=await this.heldGrant(e),o=this.tokens.get(e);if(!t&&o&&Wl(i,o)&&o.expiresAt-Date.now()>6e4)return o.access;let s=this.refreshing.get(e);if(s&&U_(i,s.grant)){let c=await s.work;return await this.assertCurrent(i),c}let r=this.withLock(e,"refresh",async()=>{let c=await this.assertCurrent(i);return this.refresh(e,c)}),a={grant:i,work:r};this.refreshing.set(e,a);try{let c=await r;return await this.assertCurrent(i),c}finally{this.refreshing.get(e)===a&&this.refreshing.delete(e)}}withLock(e,t,i){return $j(`mdbase.app-grant.${t}:${JSON.stringify([this.cpOrigin,this.owner(),e])}`,i)}async heldGrant(e){let t=await(await this.store()).getGrant(e);if(!t)throw Nn("sync_required");return{...t,noisePublicKey:t.noisePublicKey.slice(),refresh:t.refresh.slice()}}async assertCurrent(e){let t=await(await this.store()).getGrant(e.collection);if(!Wl(e,t))throw Rr();return t}async refresh(e,t){if(t.refreshExpiresAt<=Date.now())throw Nn("sync_required");let i;try{let c=await crypto.subtle.decrypt({name:"AES-GCM",iv:t.refresh.slice(0,12),additionalData:this.aad(e)},t.refreshKey,t.refresh.slice(12));i=new TextDecoder().decode(c)}catch{throw A("unauthenticated","the stored grant could not be read","grant_storage")}let o=await this.register(),s=new URLSearchParams({grant_type:"refresh_token",refresh_token:i,client_id:o.id}),r=t.signingPrivateKey?await jj(t.signingPrivateKey,"/oauth/token",s.toString(),i):{},a=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",...r},body:s});try{await this.saveTokens(a,{previous:t})}catch(c){throw Q(c,"unauthenticated")&&c.reason==="grant_invalid"&&await this.withLock(e,"commit",async()=>{let l=await this.store();if(!U_(t,await l.getGrant(e)))throw Rr();await l.deleteGrant(e),this.forgotten.add(e);let p=this.tokens.get(e);p&&Wl(t,p)&&this.tokens.delete(e)}),c}return a.body.access_token}async route(e,t){for(let i=0;;i++){let o=await this.accessToken(e,i>0),s=await this.request(`/v1/next/collections/${encodeURIComponent(e)}/route`,{headers:{authorization:`Bearer ${o}`}},t);if(s.status===401&&i===0)continue;if(s.status===401)throw A("unauthenticated","the control plane refused the access token");if(s.status===409)throw A("unauthenticated","this app's key is not registered with its grant","client_key_required");if(s.status!==200||!s.body)throw A("unavailable",`control plane answered ${s.status}`,"control_error");let r=s.body;if(typeof r.collection!="string"||r.collection.toLowerCase()!==e||!Array.isArray(r.targets))throw A("unauthenticated","the route does not match this collection's grant","route_mismatch");let c=gi(r.availability)??(La(r,null).length?{state:"available"}:{state:"unavailable",reason:r.reason==="no_device_registered"?"no_device_registered":"device_offline"});return{token:o,route:r,availability:c}}}async verifiedStoredNativeGrant(e){let t=await this.register(),i=await(await this.store()).getGrant(e.collection_id);return!!i&&e.application_id===t.id&&e.application_origin===this.declaration.origin&&i.owner===this.owner()&&In(i.noisePublicKey)===e.client_noise_public_key}async collections(e={}){let t=await(await this.store()).listGrants(),i=[];for(let s of t)(e.bindings===void 0||e.bindings.some(r=>r.collection_id===s.collection&&r.application_origin===this.declaration.origin&&In(s.noisePublicKey)===r.client_noise_public_key))&&i.push(s);let o=new Set(i.map(s=>s.collection));for(let s of i){let r;try{r=await this.accessToken(s.collection)}catch(l){if(Q(l)&&(l.code==="unauthenticated"&&l.reason==="grant_invalid"||l.code==="forbidden"&&l.reason==="sync_required"))continue;throw l}await this.assertCurrent(s);let a=await this.request("/v1/next/apps/collections",{headers:{authorization:`Bearer ${r}`}},e.signal);if(await this.assertCurrent(s),a.status===401)throw await this.withLock(s.collection,"commit",async()=>{await this.assertCurrent(s);let l=this.tokens.get(s.collection);if(l?.access!==r||!Wl(s,l))throw Rr();this.tokens.delete(s.collection)}),A("unauthenticated","the control plane refused the collection listing token");if(a.status!==200||!Array.isArray(a.body?.collections))throw A("unavailable",`control plane answered ${a.status}`,"control_error");let c=[];for(let l of a.body.collections){let p=typeof l.collection=="string"?l.collection.toLowerCase():"";if(!Xo.test(p)||c.some(f=>f.collectionId===p))continue;let d=gi(l.availability);if(l.state!=="synced_e2e"&&!d)continue;let u=o.has(p)?d??{state:"opening"}:{state:"unavailable",reason:"sync_required"};c.push(Object.freeze({collectionId:p,displayName:typeof l.name=="string"?l.name:"Collection",operations:Object.freeze(Array.isArray(l.operations)?l.operations.filter(f=>typeof f=="string"):[]),availability:Object.freeze(u),role:Oj.has(l.role)?l.role:null}))}return c}return[]}async availability(e,t={}){let i=e.toLowerCase();try{return(await this.route(i,t.signal)).availability}catch(o){if(Q(o)&&o.details instanceof Map&&typeof o.details.get("availability")=="string")return gi({state:"unavailable",reason:o.details.get("availability")});throw o}}async waitForAvailable(e,t={}){let i=Date.now()+Math.min(Math.max(t.timeoutMs??6e4,0),6e5),o=Math.max(t.intervalMs??3e3,1e3),s=null;for(;;){if(t.signal?.aborted)throw A("cancelled","wait cancelled");let r=await this.availability(e,t.signal?{signal:t.signal}:{});if((!s||r.state!==s.state||r.state==="unavailable"&&s.state==="unavailable"&&r.reason!==s.reason)&&t.onAvailability?.(r),s=r,r.state==="available"||r.state==="unavailable"&&(r.reason==="sync_required"||r.reason==="access_removed"))return r;let a=i-Date.now();if(a<=0)return r;await new Promise(c=>{let l=setTimeout(p,Math.min(o,a));function p(){clearTimeout(l),t.signal?.removeEventListener("abort",p),c()}t.signal?.addEventListener("abort",p,{once:!0})})}}connector(e){let t=e.toLowerCase();if(!Xo.test(t))throw A("invalid_request","collection must be a UUID");let i=null,o=this.options.webSocket,s;return Gu({description:`app-grant:${t}`,open:async(r,a)=>{let c=await(s??=this.heldGrant(t));await this.assertCurrent(c);let p=await hr({description:`app-grant:${t}`,staticKey:Nj(c),target:async d=>{await this.assertCurrent(c);let{token:u,route:f,availability:h}=await this.route(t,d);if(await this.assertCurrent(c),h.state==="unavailable")throw Nn(h.reason);if(!Xo.test(f.grant))throw A("unauthenticated","the route names no grant","route_mismatch");let m=La(f,i)[0];if(!m)throw Nn("device_offline");let b=new Uint8Array(32);for(let w=0;w<32;w++)b[w]=parseInt(m.noise_pk.slice(2*w,2*w+2),16);return{prologue:fr(U(m.relay_collection),U(f.grant),U(m.device)),remoteStatic:b,device:m.device,openCarrier:async w=>{await this.assertCurrent(c);let g=await qa(m.url,{accessToken:u,collection:m.relay_collection,grant:f.grant,device:m.device,devicePublicKey:b},o,w);try{return await this.assertCurrent(c),g}catch(y){throw g.close(),y}}}}}).open(r,a);try{await this.assertCurrent(c)}catch(d){throw p.port.close(),d}return gk(p.port,c),i=p.device??null,p},get target(){return i}})}people(e,t){let i=e.toLowerCase();if(!Xo.test(i))throw A("invalid_request","collection must be a UUID");return new mr(t,hO(i,{cpOrigin:this.cpOrigin,fetch:this.fetcher,accessToken:(o,s)=>this.accessToken(o,s),holds:o=>!this.forgotten.has(o)}))}setup(e){let t=Fo(this.declaration),i,o=async()=>{let r=e.currentSession(),a=r&&wk(r);if(!a||a.collection!==e.collection||(i??=a,!Wl(i,a)))throw Rr();return i};return bO({assertCurrent:async()=>this.assertCurrent(await o()),journal:_O({store:()=>this.store(),grant:o,assertCurrent:r=>this.assertCurrent(r),aad:this.aad(e.collection)}),client:e,manifest:t.manifest,operations:t.operations})}async forget(e,t={}){let i=e.toLowerCase(),o=t.expectedNoisePublicKey;await this.withLock(i,"commit",async()=>{let s=await this.store(),r=await s.getGrant(i);if(o!==void 0&&r&&In(r.noisePublicKey)!==o)throw Rr();await s.deleteGrant(i),this.forgotten.add(i),this.tokens.delete(i)})}async forgetAllGrants(){this.epoch++;let e=await this.store(),t=[];try{t=(await e.listGrants()).map(o=>o.collection).sort()}catch{}for(let o of t)this.forgotten.add(o);let i=async(o,s)=>o.length?this.withLock(o[0],"commit",()=>i(o.slice(1),s)):s();await i(t,async()=>{if(this.tokens.clear(),typeof e.clearGrants=="function"){await e.clearGrants();return}for(let o of await e.listGrants())await e.deleteGrant(o.collection),this.forgotten.add(o.collection);if((await e.listGrants()).length)throw A("unavailable","grant storage could not be cleared","grant_storage")}),this.tokens.clear()}}});function LO(n){let e=0,t=0;try{let i=n?.records.status.pending;e=typeof i=="number"&&i>0?i:0}catch{e=0}try{t=n?.records.ledger?.getSnapshot().pending.length??0}catch{t=0}return Math.max(e,t)}function jO(n=0){let e=n===1?"1 change hasn't":n>1?`${n} changes haven't`:"Some changes haven't";return A("conflict",`${e} reached mdbase yet. Wait for them to finish, or sign out anyway and lose them on this device.`,{reason:"sign_out_pending_writes",details:n})}var UO=C(()=>{"use strict";ne()});function Qo(n,e){return new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})})}var ry=C(()=>{"use strict"});function oy(n,e){if(typeof n!="string"||!e.test(n))throw me("invalid_request","timer_input");return encodeURIComponent(n)}function es(n,e){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join())throw me("invalid_request","timer_input");return n}function NO(n){let e=es(n,"id,fire_at");if(oy(e.id,$_),typeof e.fire_at!="string"||!/^\d{4}-\d{2}-\d{2}T/.test(e.fire_at)||!Number.isFinite(Date.parse(e.fire_at)))throw me("invalid_request","timer_input");return{id:e.id,fire_at:e.fire_at}}function z_(n){if(typeof n!="string"||!n.length||n.length>100)throw me("invalid_request","timer_input")}function Gj(n,e,t){let i=`${n}/${oy(t[0],Hj)}`;if(e==="list"&&t.length===1)return{path:i,method:"GET",write:!1};if(e==="put"&&t.length===3){let o=es(t[2],"criterion_id,fire_at");return z_(o.criterion_id),NO({id:t[1],fire_at:o.fire_at}),{path:`${i}/${oy(t[1],$_)}`,method:"PUT",body:o,write:!0}}if(e==="cancel"&&t.length===3){let o=t[2];if(o!==void 0&&(!Number.isSafeInteger(o)||o<1))throw me("invalid_request","timer_input");return{path:`${i}/${oy(t[1],$_)}${o===void 0?"":`?generation=${o}`}`,method:"DELETE",write:!0}}if((e==="reconcile"||e==="reconcileWithReceipt")&&t.length===2){let o=es(t[1],`criterion_id,timers${e==="reconcileWithReceipt"?",recovery":""}`);if(z_(o.criterion_id),!Array.isArray(o.timers)||o.timers.length>1e4)throw me("invalid_request","timer_input");let s=o.timers.map(NO);if(new Set(s.map(r=>r.id)).size!==s.length)throw me("invalid_request","timer_input");if(e==="reconcileWithReceipt"){let r=es(o.recovery,"protocol_version,operation_id,expected_revision");if(r.protocol_version!==1||typeof r.operation_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(r.operation_id)||!Number.isSafeInteger(r.expected_revision)||r.expected_revision<0||r.expected_revision>=Number.MAX_SAFE_INTEGER)throw me("invalid_request","timer_input")}return{path:`${i}/reconcile`,method:"POST",body:{...o,timers:s},write:!0}}if(e==="lookupOperation"&&t.length===2&&typeof t[1]=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(t[1]))return{path:`${i}/operations/${t[1]}`,method:"GET",write:!1};throw me("invalid_request","timer_input")}function $O(n,e){let t=DO(e.scope),i=e.generation,o=`/v1/next/collections/${e.scope.collection}/background-grants/${e.grantId}/timers`,s=!1,r=0,a=null,c=null,l=()=>{if(s||e.signal.aborted||!e.isCurrent())throw me("unauthenticated","timer_fenced")},p=()=>{if(c)return c;s=!0,e.signal.removeEventListener("abort",d),a?.ctrl.abort();try{n.postMessage([1,t,i,"close"])}finally{n.removeEventListener("message",u),n.close()}return c=Promise.resolve().then(async()=>{await a?.work})},d=()=>{p()},u=f=>{let h=f.data;if(!Array.isArray(h)||h[0]!==1||h[1]!==t||h[2]!==i){p();return}if(h.length===4&&h[3]==="close"){p();return}if(h.length===5&&h[4]==="cancel"&&Number.isSafeInteger(h[3])&&h[3]>0){a&&a.id===h[3]&&a.ctrl.abort();return}if(h.length!==6||!Number.isSafeInteger(h[3])||h[3]<=r||a||typeof h[4]!="string"||!Array.isArray(h[5])){p();return}let m=h[3],b=h[4],w=h[5],g=new AbortController;r=m;let y=!1,v=b!=="list"&&b!=="lookupOperation",_=Promise.resolve().then(async()=>{let k=setTimeout(()=>g.abort(),1e4),S,x,P=new Uint8Array(Rd),I=0,R=()=>{x?.cancel().catch(()=>{})};g.signal.addEventListener("abort",R,{once:!0});try{l(),g.signal.throwIfAborted();let O=o.slice(0,-7)+"/notifications/channels",q,j,z=null;if(b==="vapid"&&w.length===0){if(!e.journal)throw me("upgrade_required","native_timer_channel_journal_unavailable");e.journal.read(),q={path:"/v1/notifications/vapid-public-key",method:"GET",write:!1}}else if(b==="registerChannel"&&w.length===1){if(!e.journal)throw me("upgrade_required","native_timer_channel_journal_unavailable");let te=w[0],ee=es(te,`kind,criteria,${te?.kind==="web_push"?"subscription":"token"}`);if(!["web_push","fcm"].includes(ee.kind)||!Array.isArray(ee.criteria)||!ee.criteria.length||ee.criteria.length>100||(ee.criteria.forEach(z_),new Set(ee.criteria).size!==ee.criteria.length))throw me("invalid_request","timer_input");let le;if(ee.kind==="fcm"){if(typeof ee.token!="string"||ee.token.length<16||ee.token.length>4096||/[\s\u0000-\u001f\u007f]/.test(ee.token))throw me("invalid_request","timer_input");le={transport:"fcm",token:ee.token}}else{let F=es(ee.subscription,"endpoint,expirationTime,keys"),Y=es(F.keys,"p256dh,auth");if(typeof F.endpoint!="string"||F.endpoint.length>2048||typeof Y.p256dh!="string"||typeof Y.auth!="string"||!/^[A-Za-z0-9_-]{87}$/.test(Y.p256dh)||!/^[A-Za-z0-9_-]{22}$/.test(Y.auth))throw me("invalid_request","timer_input");let we;try{we=new URL(F.endpoint)}catch{throw me("invalid_request","timer_input")}if(we.protocol!=="https:"||we.username||we.password||we.hash||we.href!==F.endpoint||F.expirationTime!==null&&(!Number.isFinite(F.expirationTime)||F.expirationTime<0))throw me("invalid_request","timer_input");le={subscription:F}}q={path:O,method:"POST",write:!0,body:{installation_id:e.scope.installation,criteria:[...ee.criteria].sort(),...le}};let ge=new TextEncoder().encode(JSON.stringify(q.body)),N;try{N=[...new Uint8Array(await crypto.subtle.digest("SHA-256",ge))].map(F=>F.toString(16).padStart(2,"0")).join("")}finally{ge.fill(0)}l(),g.signal.throwIfAborted();let G=e.journal.read();if(z=G,G?.pending)throw me("outcome_unknown","timer_channel_reapproval_required");j={grantId:e.grantId,kind:ee.kind,targetDigest:N,channelId:G?.channelId??null,pending:"register"}}else if(b==="unregisterChannel"&&w.length===1&&["web_push","fcm"].includes(w[0])){if(!e.journal)throw me("upgrade_required","native_timer_channel_journal_unavailable");let te=e.journal.read();if(z=te,!te){n.postMessage([1,t,i,m,!0,void 0]);return}if(te.pending==="register")throw me("outcome_unknown","timer_channel_reapproval_required");if(te.kind!==w[0]||!te.channelId)throw me("invalid_request","timer_channel_kind");j={...te,pending:"delete"},q={path:`${O}/${te.channelId}`,method:"DELETE",write:!0}}else q=Gj(o,b,w);v=q.write;let D=q.body===void 0?void 0:JSON.stringify(q.body);if(D&&new TextEncoder().encode(D).length>Rd)throw me("invalid_request","timer_input");let J=await e.bearer();if(l(),g.signal.throwIfAborted(),typeof J!="string"||!/^(idev_|ct_)[A-Za-z0-9_-]{43}$/.test(J))throw me("unauthenticated","timer_credential");j&&(await e.journal.write(j),l(),g.signal.throwIfAborted()),y=v;let X=e.fetch;if(S=await X(`${e.cpOrigin}${q.path}`,{method:q.method,body:D,headers:{authorization:`Bearer ${J}`,...D===void 0?{}:{"content-type":"application/json"}},credentials:"omit",redirect:"error",cache:q.method==="GET"?"no-store":"default",referrerPolicy:"no-referrer",signal:g.signal}),l(),g.signal.throwIfAborted(),S.redirected)throw me("unavailable","timer_response");if(b==="unregisterChannel"&&S.status===204){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(S.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json"||!S.body)throw me("unavailable","timer_response");let B=S.headers.get("content-length");if(B&&/^\d+$/.test(B)&&Number(B)>Rd)throw me("unavailable","timer_response");for(x=S.body.getReader();;){let te=await x.read();try{if(l(),g.signal.throwIfAborted(),te.done)break;if(I+te.value.length>Rd)throw me("unavailable","timer_response");P.set(te.value,I),I+=te.value.length}finally{te.value?.fill(0)}}let ae=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(P.subarray(0,I)));if(b==="unregisterChannel"&&S.status===404&&ae?.error?.code==="channel_not_found"){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(!S.ok)throw S.status>=500?me("unavailable","timer_http"):ae?.error?.operation_outcome==="unknown"?me("outcome_unknown","timer_write_unknown"):(j&&(await e.journal.write(z),l(),g.signal.throwIfAborted()),y=!1,A(S.status===401||S.status===403?"unauthenticated":S.status===409?"conflict":S.status===404?"upgrade_required":S.status===429?"rate_limited":"invalid_request","Native timer request was refused.","timer_refused"));if(l(),g.signal.throwIfAborted(),b==="registerChannel"){if(typeof ae?.channel_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(ae.channel_id))throw me("unavailable","timer_channel_response");await e.journal.write({...j,channelId:ae.channel_id,pending:null}),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,{channelId:ae.channel_id,installationId:e.scope.installation,criteria:q.body.criteria}])}else n.postMessage([1,t,i,m,!0,ae])}catch(O){let q=y?me("outcome_unknown","timer_write_unknown"):O instanceof pe?O:me(g.signal.aborted?"cancelled":"unavailable","timer_request");s||n.postMessage([1,t,i,m,!1,q.code,q.reason])}finally{clearTimeout(k),g.signal.removeEventListener("abort",R),P.fill(0),(x?.cancel()??S?.body?.cancel())?.catch(()=>{}),x?.releaseLock(),a?.id===m&&(a=null)}});a={id:m,ctrl:g,work:_}};n.addEventListener("message",u),n.start(),e.signal.addEventListener("abort",d,{once:!0});try{l()}catch(f){throw p(),f}return Object.freeze({close:p})}function zO(n,e,t){let i=DO(e.scope),o=e.generation,s=!1,r=0,a=null,c=()=>{if(s)return;s=!0,t.signal.removeEventListener("abort",c);let y=a;a=null,y?.signal?.removeEventListener("abort",y.abort),y?.reject(me(y.write?"outcome_unknown":"cancelled","timer_port_closed"));try{n.postMessage([1,i,o,"close"])}finally{n.removeEventListener("message",l),n.close(),t.onClose()}},l=y=>{let v=y.data;if(!Array.isArray(v)||v[0]!==1||v[1]!==i||v[2]!==o){c();return}if(v.length===4&&v[3]==="close"){c();return}let _=a;if(!_||v[3]!==_.id||!(v.length===6&&v[4]===!0||v.length===7&&v[4]===!1&&typeof v[5]=="string"&&uo(v[5]))){c();return}a=null,_.signal?.removeEventListener("abort",_.abort),v[4]?_.resolve(v[5]):_.reject(A(v[5],"Native timer request could not complete.",typeof v[6]=="string"?v[6]:void 0))},p=(y,v,_,k=!1)=>{if(s||t.signal.aborted||_.signal?.aborted)return Promise.reject(me("cancelled","timer_port_closed"));if(a||d&&!k)return Promise.reject(me("unavailable","timer_port_busy"));if(r>=Number.MAX_SAFE_INTEGER)return c(),Promise.reject(me("unavailable","timer_port_closed"));let S=++r,x=y!=="list"&&y!=="lookupOperation"&&y!=="vapid";return new Promise((P,I)=>{let R=()=>{try{n.postMessage([1,i,o,S,"cancel"])}catch{c()}I(me(x?"outcome_unknown":"cancelled","timer_request_cancelled"))};a={id:S,write:x,resolve:P,reject:I,abort:R,signal:_.signal},_.signal?.addEventListener("abort",R,{once:!0});try{if(new TextEncoder().encode(JSON.stringify(v)).length>Rd)throw me("invalid_request","timer_input");n.postMessage([1,i,o,S,y,v])}catch(O){a=null,_.signal?.removeEventListener("abort",R),I(O)}})},d=!1,u=()=>{if(s||t.signal.aborted)throw me("cancelled","timer_port_closed")},f=y=>{if(!y?.length||y.length>100||y.some(v=>typeof v!="string"||!v.length||v.length>100)||new Set(y).size!==y.length)throw me("invalid_request","timer_channel_criteria_required");return[...y].sort()},h=(y,v)=>{let _=es(y,"channelId,installationId,criteria");if(typeof _.channelId!="string"||_.installationId!==e.scope.installation||JSON.stringify(_.criteria)!==JSON.stringify(v))throw me("outcome_unknown","timer_channel_response");return{channelId:_.channelId,installationId:e.scope.installation,criteria:[...v]}},m=async(y,v)=>{if(u(),y.signal?.throwIfAborted(),d||a)throw me("unavailable","timer_port_busy");d=!0;try{return await v()}finally{d=!1}},b=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw me("invalid_request","timer_channel_installation");let _=y.serviceWorker;if(!_?.pushManager||typeof _.pushManager.getSubscription!="function"||typeof _.pushManager.subscribe!="function")throw me("invalid_request","timer_push_platform");let k=await p("vapid",[],y,!0);if(u(),y.signal?.throwIfAborted(),typeof k.public_key!="string"||!/^[A-Za-z0-9_-]{87}$/.test(k.public_key))throw me("unavailable","timer_vapid_response");let S=atob(k.public_key.replace(/-/g,"+").replace(/_/g,"/")),x=Uint8Array.from(S,R=>R.charCodeAt(0));if(x.length!==65||x[0]!==4||btoa(S).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")!==k.public_key)throw me("unavailable","timer_vapid_response");let P=await _.pushManager.getSubscription();if(u(),y.signal?.throwIfAborted(),P){let R=P.options.applicationServerKey;if(!R||R.byteLength!==x.length||new Uint8Array(R).some((O,q)=>O!==x[q]))throw me("invalid_request","timer_push_key_changed")}if(!P&&(P=await _.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:x}),s||t.signal.aborted||y.signal?.aborted))throw await P.unsubscribe(),me("cancelled","timer_port_closed");let I=P.toJSON();return h(await p("registerChannel",[{kind:"web_push",criteria:v,subscription:{endpoint:I.endpoint,expirationTime:I.expirationTime??null,keys:I.keys}}],y,!0),v)}),w=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw me("invalid_request","timer_channel_installation");return{...h(await p("registerChannel",[{kind:"fcm",criteria:v,token:y.token}],y,!0),v),transport:"fcm"}}),g=(y,v)=>m(v,async()=>{if(await p("unregisterChannel",["web_push"],v,!0),u(),v.signal?.throwIfAborted(),y){let _=await y.pushManager.getSubscription();u(),v.signal?.throwIfAborted(),_&&await _.unsubscribe(),u(),v.signal?.throwIfAborted()}});return n.addEventListener("message",l),n.start(),t.signal.addEventListener("abort",c,{once:!0}),t.signal.aborted&&c(),Object.freeze({list:(y,v)=>p("list",[y],v),put:(y,v,_,k)=>p("put",[y,v,_],k),cancel:(y,v,_,k)=>p("cancel",[y,v,_],k),reconcile:(y,v,_)=>p("reconcile",[y,v],_),reconcileWithReceipt:(y,v,_)=>p("reconcileWithReceipt",[y,v],_),lookupOperation:(y,v,_)=>p("lookupOperation",[y,v],_),registerWebPush:b,unregisterWebPush:g,registerFcm:w,unregisterFcm:y=>m(y,async()=>{await p("unregisterChannel",["fcm"],y,!0)}),close:c})}var Hj,$_,Rd,me,DO,B_=C(()=>{"use strict";ne();Hj=/^[A-Za-z0-9._-]{1,64}$/,$_=/^[A-Za-z0-9._:-]{1,128}$/,Rd=2*1024*1024,me=(n,e)=>A(n,"Native timer request could not complete.",e),DO=n=>JSON.stringify([n.account,n.installation,n.collection])});var Gl,Yj,Jj,ts,Cn,Yl,sy=C(()=>{"use strict";Gl="original-join",Yj=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Jj="00000000-0000-0000-0000-000000000000",ts=class extends Error{constructor(t){super(`app collection join: ${t}`);this.reason=t;this.name="AppCollectionJoinError"}reason},Cn=(n="recovery_required")=>new ts(n),Yl=class{options;key;busy=!1;constructor(e){let t=Object.freeze({account:e.scope.account,installation:e.scope.installation,collection:e.scope.collection});if(Object.values(t).some(i=>typeof i!="string"||!Yj.test(i)||i===Jj)||typeof e.databaseName!="string"||!e.databaseName.length||e.databaseName.length>256||/[\u0000-\u001f\u007f]/.test(e.databaseName)||typeof e.isCurrent!="function")throw Cn("binding");this.options=Object.freeze({databaseName:e.databaseName,scope:t,isCurrent:e.isCurrent}),this.key=JSON.stringify([t.account,t.installation,t.collection])}check(e){if(e.aborted||this.options.isCurrent()!==!0)throw Cn("fenced")}marker(e){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).sort().join()!=="account,collection,installation,phase,version")throw Cn();let t=e;if(t.version!==1||t.phase!=="attempted"&&t.phase!=="completed"||Object.entries(this.options.scope).some(([i,o])=>t[i]!==o))throw Cn();return t}open(e){if(this.check(e),!globalThis.indexedDB)throw Cn();return new Promise((t,i)=>{let o=indexedDB.open(this.options.databaseName,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(Cn())};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(this.check(e),s||o.result.objectStoreNames.length)throw Cn();o.result.createObjectStore(Gl)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{r();try{if(this.check(e),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(Gl))throw Cn();t(o.result)}catch{o.result.close(),i(Cn())}}})}async change(e,t){if(this.check(t),this.busy)throw Cn("busy");this.busy=!0;let i=null;try{return i=await this.open(t),this.check(t),await new Promise((o,s)=>{this.check(t);let r=i.transaction(Gl,"readwrite",{durability:"strict"}),a=null,c,l=()=>{try{r.abort()}catch{}},p=()=>t.removeEventListener("abort",l);t.addEventListener("abort",l,{once:!0}),r.onabort=r.onerror=()=>{p(),s(c??Cn())},r.oncomplete=()=>{p();try{if(this.check(t),!a)throw Cn();o(Object.freeze(a))}catch{s(Cn())}};let d=r.objectStore(Gl),u=d.get(this.key);u.onsuccess=()=>{try{this.check(t);let f=u.result;if(f===void 0){if(e!=="prepare")throw Cn();d.add({version:1,...this.options.scope,phase:"attempted"},this.key),a={outcomeMode:"fresh",phase:"attempted"}}else{let h=this.marker(f);e==="complete"&&h.phase!=="completed"&&d.put({...h,phase:"completed"},this.key),a={outcomeMode:"existing",phase:e==="complete"?"completed":h.phase}}}catch(f){c=f,l()}}})}catch(o){throw o instanceof ts?o:Cn()}finally{i?.close(),this.busy=!1}}prepare(e){return this.change("prepare",e.signal)}async syncedBefore(e){return await this.synced("read",e.signal)===!0}async markSynced(e){await this.synced("mark",e.signal)}async synced(e,t){let i=null;try{i=await this.open(t),this.check(t);let o=JSON.stringify([this.options.scope.account,this.options.scope.installation,this.options.scope.collection,"synced"]);return await new Promise(s=>{let r=i.transaction(Gl,e==="mark"?"readwrite":"readonly"),a=!1;r.onabort=r.onerror=()=>s(!1),r.oncomplete=()=>s(e==="mark"||a);let c=r.objectStore(Gl);if(e==="mark")c.put({version:1,synced:!0},o);else{let l=c.get(o);l.onsuccess=()=>{let p=l.result;a=!!p&&p.version===1&&p.synced===!0}}})}catch{return!1}finally{i?.close()}}async complete(e){await this.change("complete",e.signal)}}});var BO,FO=C(()=>{BO=Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9])});function ns(n,e,t,i,o,s){let r=o[s],a=o[s+1],c=K[2*n],l=K[2*n+1],p=K[2*e],d=K[2*e+1],u=K[2*t],f=K[2*t+1],h=K[2*i],m=K[2*i+1],b=Mc(c,p,r);l=qc(b,l,d,a),c=b|0;let w=m^l,g=h^c;m=M0(w,g),h=q0(w,g),{h:f,l:u}=Jn(f,u,m,h),w=d^f,g=p^u,d=rr(w,g,24),p=or(w,g,24),K[2*n]=c,K[2*n+1]=l,K[2*e]=p,K[2*e+1]=d,K[2*t]=u,K[2*t+1]=f,K[2*i]=h,K[2*i+1]=m}function is(n,e,t,i,o,s){let r=o[s],a=o[s+1],c=K[2*n],l=K[2*n+1],p=K[2*e],d=K[2*e+1],u=K[2*t],f=K[2*t+1],h=K[2*i],m=K[2*i+1],b=Mc(c,p,r);l=qc(b,l,d,a),c=b|0;let w=m^l,g=h^c;m=rr(w,g,16),h=or(w,g,16),{h:f,l:u}=Jn(f,u,m,h),w=d^f,g=p^u,d=ds(w,g,63),p=us(w,g,63),K[2*n]=c,K[2*n+1]=l,K[2*e]=p,K[2*e+1]=d,K[2*t]=u,K[2*t+1]=f,K[2*i]=h,K[2*i+1]=m}function Xj(n,e={},t,i,o){if(gn(t),n<=0||n>t)throw new Error('"dkLen" must be 1..'+t+", got "+n);let{key:s,salt:r,personalization:a}=e;if(s!==void 0&&(s.length<1||s.length>t))throw new Error('"key" expected to be undefined or of length=1..'+t);r!==void 0&&pt(r,i,"salt"),a!==void 0&&pt(a,o,"personalization")}var zt,K,F_,V_,Jl,VO=C(()=>{FO();_u();sr();zt=Uint32Array.from([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),K=new Uint32Array(32);F_=class{buffer;buffer32;finished=!1;destroyed=!1;length=0;pos=0;blockLen;outputLen;canXOF=!1;constructor(e,t){gn(e),gn(t),this.blockLen=e,this.outputLen=t,this.buffer=new Uint8Array(e),this.buffer32=ho(this.buffer)}update(e){$r(this),pt(e);let{blockLen:t,buffer:i,buffer32:o}=this,s=e.length,r=e.byteOffset,a=e.buffer;for(let c=0;c<s;){this.pos===t&&(qi(o),this.compress(o,0,!1),qi(o),this.pos=0);let l=Math.min(t-this.pos,s-c),p=r+c;if(l===t&&!(p%4)&&c+l<s){let d=new Uint32Array(a,p,Math.floor((s-c)/4));qi(d);for(let u=0;c+t<s;u+=o.length,c+=t)this.length+=t,this.compress(d,u,!1);qi(d);continue}i.set(c===0&&l===s?e:e.subarray(c,c+l),this.pos),this.pos+=l,this.length+=l,c+=l}return this}digestInto(e){if($r(this),ha(e,this),e.byteOffset&3)throw new RangeError('"output" expected 4-byte aligned byteOffset, got '+e.byteOffset);let{pos:t,buffer32:i}=this;this.finished=!0,this.buffer.fill(0,t),qi(i),this.compress(i,0,!0),qi(i);let o=this.get(),s=e===this.buffer?i:ho(e),r=Math.floor(this.outputLen/4);for(let p=0;p<r;p++)s[p]=Xt(o[p]);let a=this.outputLen%4;if(!a)return;let c=r*4,l=o[r];for(let p=0;p<a;p++)e[c+p]=l>>>8*p}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let i=e.slice(0,t);return this.destroy(),i}_cloneInto(e){let{buffer:t,length:i,finished:o,destroyed:s,outputLen:r,pos:a}=this;return e||=new this.constructor({dkLen:r}),e.set(...this.get()),e.buffer.set(t),e.destroyed=s,e.finished=o,e.length=i,e.pos=a,e.outputLen=r,e}clone(){return this._cloneInto()}},V_=class extends F_{v0l=zt[0]|0;v0h=zt[1]|0;v1l=zt[2]|0;v1h=zt[3]|0;v2l=zt[4]|0;v2h=zt[5]|0;v3l=zt[6]|0;v3h=zt[7]|0;v4l=zt[8]|0;v4h=zt[9]|0;v5l=zt[10]|0;v5h=zt[11]|0;v6l=zt[12]|0;v6h=zt[13]|0;v7l=zt[14]|0;v7h=zt[15]|0;constructor(e={}){e=jc({},e);let t=e.dkLen===void 0?64:e.dkLen;super(128,t),Xj(t,e,64,16,16);let{key:i,personalization:o,salt:s}=e,r=0;if(i!==void 0&&(pt(i,void 0,"key"),r=i.length),this.v0l^=this.outputLen|r<<8|65536|1<<24,s!==void 0){pt(s,void 0,"salt");let a=ho($g(s));this.v4l^=Xt(a[0]),this.v4h^=Xt(a[1]),this.v5l^=Xt(a[2]),this.v5h^=Xt(a[3])}if(o!==void 0){pt(o,void 0,"personalization");let a=ho($g(o));this.v6l^=Xt(a[0]),this.v6h^=Xt(a[1]),this.v7l^=Xt(a[2]),this.v7h^=Xt(a[3])}if(i!==void 0){let a=new Uint8Array(this.blockLen);a.set(i),this.update(a),it(a)}}get(){let{v0l:e,v0h:t,v1l:i,v1h:o,v2l:s,v2h:r,v3l:a,v3h:c,v4l:l,v4h:p,v5l:d,v5h:u,v6l:f,v6h:h,v7l:m,v7h:b}=this;return[e,t,i,o,s,r,a,c,l,p,d,u,f,h,m,b]}set(e,t,i,o,s,r,a,c,l,p,d,u,f,h,m,b){this.v0l=e|0,this.v0h=t|0,this.v1l=i|0,this.v1h=o|0,this.v2l=s|0,this.v2h=r|0,this.v3l=a|0,this.v3h=c|0,this.v4l=l|0,this.v4h=p|0,this.v5l=d|0,this.v5h=u|0,this.v6l=f|0,this.v6h=h|0,this.v7l=m|0,this.v7h=b|0}compress(e,t,i){let{v0l:o,v0h:s,v1l:r,v1h:a,v2l:c,v2h:l,v3l:p,v3h:d,v4l:u,v4h:f,v5l:h,v5h:m,v6l:b,v6h:w,v7l:g,v7h:y}=this;K[0]=o,K[1]=s,K[2]=r,K[3]=a,K[4]=c,K[5]=l,K[6]=p,K[7]=d,K[8]=u,K[9]=f,K[10]=h,K[11]=m,K[12]=b,K[13]=w,K[14]=g,K[15]=y,K.set(zt,16);let v=jg(this.length),_=Lg(this.length);K[24]=zt[8]^v,K[25]=zt[9]^_,i&&(K[28]=~K[28],K[29]=~K[29]);let k=0,S=BO;for(let x=0;x<12;x++)ns(0,4,8,12,e,t+2*S[k++]),is(0,4,8,12,e,t+2*S[k++]),ns(1,5,9,13,e,t+2*S[k++]),is(1,5,9,13,e,t+2*S[k++]),ns(2,6,10,14,e,t+2*S[k++]),is(2,6,10,14,e,t+2*S[k++]),ns(3,7,11,15,e,t+2*S[k++]),is(3,7,11,15,e,t+2*S[k++]),ns(0,5,10,15,e,t+2*S[k++]),is(0,5,10,15,e,t+2*S[k++]),ns(1,6,11,12,e,t+2*S[k++]),is(1,6,11,12,e,t+2*S[k++]),ns(2,7,8,13,e,t+2*S[k++]),is(2,7,8,13,e,t+2*S[k++]),ns(3,4,9,14,e,t+2*S[k++]),is(3,4,9,14,e,t+2*S[k++]);this.v0l^=K[0]^K[16],this.v0h^=K[1]^K[17],this.v1l^=K[2]^K[18],this.v1h^=K[3]^K[19],this.v2l^=K[4]^K[20],this.v2h^=K[5]^K[21],this.v3l^=K[6]^K[22],this.v3h^=K[7]^K[23],this.v4l^=K[8]^K[24],this.v4h^=K[9]^K[25],this.v5l^=K[10]^K[26],this.v5h^=K[11]^K[27],this.v6l^=K[12]^K[28],this.v6h^=K[13]^K[29],this.v7l^=K[14]^K[30],this.v7h^=K[15]^K[31],it(K)}destroy(){this.destroyed=!0,it(this.buffer32),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Jl=Uc(n=>new V_(n))});function rs(n,e,t,i){let o=qt[2*n],s=qt[2*n+1],r=qt[2*e],a=qt[2*e+1],c=qt[2*t],l=qt[2*t+1],p=qt[2*i],d=qt[2*i+1],u=0,f=0,h=0,m=0,b=0;u=Math.imul(o,r),f=((o>>>0)*(r>>>0)-(u>>>0))/4294967296+.5|0,h=(o>>>0)+(r>>>0)+(u<<1>>>0),s=s+a+(f<<1|u>>>31)+(h/4294967296|0)|0,o=h|0,m=d^s,b=p^o,d=b,p=m,u=Math.imul(c,p),f=((c>>>0)*(p>>>0)-(u>>>0))/4294967296+.5|0,h=(c>>>0)+(p>>>0)+(u<<1>>>0),l=l+d+(f<<1|u>>>31)+(h/4294967296|0)|0,c=h|0,m=a^l,b=r^c,a=m>>>24|b<<8,r=m<<8|b>>>24,u=Math.imul(o,r),f=((o>>>0)*(r>>>0)-(u>>>0))/4294967296+.5|0,h=(o>>>0)+(r>>>0)+(u<<1>>>0),s=s+a+(f<<1|u>>>31)+(h/4294967296|0)|0,o=h|0,m=d^s,b=p^o,d=m>>>16|b<<16,p=m<<16|b>>>16,u=Math.imul(c,p),f=((c>>>0)*(p>>>0)-(u>>>0))/4294967296+.5|0,h=(c>>>0)+(p>>>0)+(u<<1>>>0),l=l+d+(f<<1|u>>>31)+(h/4294967296|0)|0,c=h|0,m=a^l,b=r^c,a=m<<1|b>>>31,r=m>>>31|b<<1,qt[2*n]=o,qt[2*n+1]=s,qt[2*e]=r,qt[2*e+1]=a,qt[2*t]=c,qt[2*t+1]=l,qt[2*i]=p,qt[2*i+1]=d}function WO(n,e,t,i,o,s,r,a,c,l,p,d,u,f,h,m){rs(n,o,c,u),rs(e,s,l,f),rs(t,r,p,h),rs(i,a,d,m),rs(n,s,p,m),rs(e,r,d,u),rs(t,a,c,f),rs(i,o,l,h)}function Ed(n,e,t,i,o){if(o)for(let s=0;s<256;s++){let r=n[e+s]^n[t+s];qt[s]=r,n[i+s]^=r}else for(let s=0;s<256;s++){let r=n[e+s]^n[t+s];qt[s]=r,n[i+s]=r}for(let s=0;s<128;s+=16)WO(s,s+1,s+2,s+3,s+4,s+5,s+6,s+7,s+8,s+9,s+10,s+11,s+12,s+13,s+14,s+15);for(let s=0;s<16;s+=2)WO(s,s+1,s+16,s+17,s+32,s+33,s+48,s+49,s+64,s+65,s+80,s+81,s+96,s+97,s+112,s+113);for(let s=0;s<256;s++)n[i+s]^=qt[s];it(qt)}function K_(n,e){let t=Lc(n),i=new Uint32Array(1),o=Lc(i);if(i[0]=Xt(e),e<=64)return Jl.create({dkLen:e}).update(o).update(t).digest();let s=new Uint8Array(e),r=Jl.create({}).update(o).update(t).digest(),a=0;for(s.set(r.subarray(0,32)),a+=32;e-a>64;a+=32){let c=Jl.create({}).update(r);c.digestInto(r),c.destroy(),s.set(r.subarray(0,32),a)}return s.set(Jl(r,{dkLen:e-a}),a),it(r,i),s}function Zj(n,e,t,i,o,s,r=!1){let a;n===0?e===0?a=o-1:r?a=e*i+o-1:a=e*i+(o==0?-1:0):r?a=t-i+o-1:a=t-i+(o==0?-1:0);let c=n!==0&&e!==Md-1?(e+1)*i:0,l=Math.imul(s,s),p=((s>>>0)*(s>>>0)-(l>>>0))/4294967296+.5|0,d=Math.imul(a,p),u=((a>>>0)*(p>>>0)-(d>>>0))/4294967296+.5|0,f=a-1-u;return(c+f)%t}function os(n){return Number.isSafeInteger(n)&&n>=0&&n<Qj}function tU(n={}){n=jc({},n);let e={t:3,m:HO,p:1,version:19,dkLen:32,maxmem:eU,asyncTick:10};for(let[l,p]of Object.entries(n))p!==void 0&&(e[l]=p);let{dkLen:t,p:i,m:o,t:s,version:r,onProgress:a,asyncTick:c}=e;if(!os(t)||t<4)throw new Error('"dkLen" must be 4..');if(!os(i)||i<1||i>=Math.pow(2,24))throw new Error('"p" must be 1..2^24');if(!os(o))throw new Error('"m" must be 0..2^32');if(!os(s)||s<1)throw new Error('"t" (iterations) must be 1..2^32');if(a!==void 0&&typeof a!="function")throw new Error('"onProgress" must be a function');if(gn(c,"asyncTick"),!os(o)||o<8*i)throw new Error('"m" (memory) must be at least 8*p bytes');if(r!==16&&r!==19)throw new Error('"version" must be 0x10 or 0x13, got '+r);return e}function nU(n,e,t,i){let o=[],s=new Uint32Array(1),r=Lc(s),a,c,l=!1,p=(d,u)=>(typeof d=="string"&&o.push(u),u);try{let d=p(n,Pu(n,"password")),u=p(e,Pu(e,"salt"));if(!os(d.length))throw new Error('"password" must be less of length 1..4Gb');if(!os(u.length)||u.length<8)throw new Error('"salt" must be of length 8..4Gb');if(!Object.values(ay).includes(t))throw new Error('"type" was invalid');let{p:f,dkLen:h,m,t:b,version:w,key:g,personalization:y,maxmem:v,onProgress:_,asyncTick:k}=tU(i),S=g;g=p(S,KO(S,"key"));let x=y;y=p(x,KO(x,"personalization")),a=Jl.create();for(let P of[f,h,m,b,w,t])s[0]=Xt(P),a.update(r);for(let P of[d,u,g,y])s[0]=Xt(P.length),a.update(r).update(P);return c=new Uint32Array(18),a.digestInto(Lc(c)),l=!0,{H0:c,p:f,dkLen:h,m,t:b,version:w,maxmem:v,onProgress:_,asyncTick:k}}finally{a&&a.destroy(),it(s,...o),!l&&c&&it(c)}}function iU(n,e,t,i){let{H0:o,p:s,dkLen:r,m:a,t:c,version:l,maxmem:p,onProgress:d,asyncTick:u}=nU(n,e,t,i);try{let f=s,h=4*s*Math.floor(a/(Md*s)),m=Math.floor(h/s),b=Math.floor(m/Md),w=h*1024;if(!os(p))throw new Error('"maxmem" expected <2**32, got '+p);if(w>p)throw new Error('"maxmem" limit was hit: memUsed(mP*1024)='+w+", maxmem="+p);let g=new Uint32Array(w/4);for(let v=0;v<s;v++){let _=256*m*v;o[17]=Xt(v),o[16]=Xt(0),g.set(qi(ho(K_(o,1024))),_),o[16]=Xt(1),g.set(qi(ho(K_(o,1024))),_+256)}let y=()=>{};if(d){let v=c*Md*s*b-2*s,_=Math.max(Math.floor(v/1e4),1),k=0;y=()=>{k++,d&&(!(k%_)||k===v)&&d(k/v)}}return{type:t,mP:h,p:s,t:c,version:l,B:g,laneLen:m,lanes:f,segmentLen:b,dkLen:r,perBlock:y,asyncTick:u}}finally{it(o)}}function rU(n,e,t,i){let o=new Uint32Array(256);for(let r=0;r<e;r++)for(let a=0;a<256;a++)o[a]^=n[256*(t*r+t-1)+a];let s=K_(qi(o),i);return it(n,o),s}function*oU(n,e){let{type:t,mP:i,p:o,t:s,version:r,B:a,laneLen:c,lanes:l,segmentLen:p,perBlock:d}=n;e[262]=i,e[264]=s,e[266]=t;for(let u=0;u<s;u++){let f=u!==0&&r===19;e[256]=u;for(let h=0;h<Md;h++){e[260]=h;let m=t==ay.Argon2i||t==ay.Argon2id&&u===0&&h<2;for(let b=0;b<o;b++){e[258]=b,e[268]=0;let w=0;u===0&&h===0&&(w=2,m&&(e[268]++,Ed(e,256,2*256,0,!1),Ed(e,0,2*256,0,!1)));let g=b*c+h*p+w;for(let y=w;y<p;y++,g++){d();let v=g%c?g-1:g+c-1,_,k;if(m){let I=y%128;I===0&&(e[268]++,Ed(e,256,2*256,0,!1),Ed(e,0,2*256,0,!1)),_=e[2*I],k=e[2*I+1]}else{let I=256*v;_=a[I],k=a[I+1]}let S=u===0&&h===0?b:k%l,x=Zj(u,h,c,p,y,_,S==b),P=c*S+x;Ed(a,256*v,256*P,g*256,f),yield}}}}it(e)}async function sU(n,e,t,i){let o=iU(e,t,n,i),s=new Uint32Array(3*256),r=oU(o,s),a=()=>it(s,o.B),c=Date.now();for(;!r.next().done;){let l=Date.now()-c;l>=0&&l<o.asyncTick||(await V0(a),c=Date.now())}return rU(o.B,o.p,o.laneLen,o.dkLen)}var ay,Md,KO,qt,Qj,HO,eU,GO,YO=C(()=>{VO();sr();ay={Argon2d:0,Argon2i:1,Argon2id:2},Md=4,KO=(n,e="")=>n===void 0?Uint8Array.of():Pu(n,e),qt=new Uint32Array(256);Qj=Math.pow(2,32),HO=1024**2,eU=HO*1024;GO=(n,e,t={})=>sU(ay.Argon2id,n,e,t)});function lU(n,e,t,i=32,o){Tc(n),gn(i,"length"),pt(e,void 0,"prk");let s=n.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(i>255*s)throw new Error("Length must be <= 255*HashLen");let r=Math.ceil(i/s);if(t===void 0?t=aU:pt(t,void 0,"info"),!r)return o&&it(e),new Uint8Array;let a=o&&r===1?e:new Uint8Array(r*s),{iHash:c,oHash:l}=Ps.create(n,e),p=o?e:new Uint8Array(s),d=r>1?o?.iHash||n.create():void 0;for(let f=0;f<r-1;f++){qd[0]=f+1;let h=c._cloneInto(d);f&&h.update(p),h.update(t).update(qd).digestInto(p),l._cloneInto(d).update(p).digestInto(p),a.set(p,s*f)}if(qd[0]=r,r>1&&c.update(p),c.update(t).update(qd).digestInto(p),l.update(p).digestInto(p),a.set(p,s*(r-1)),c.destroy(),l.destroy(),d?.destroy(),p!==a&&it(p),it(qd),i===a.length)return a;let u=a.slice(0,i);return it(a),u}var qd,aU,ly,JO=C(()=>{Hb();sr();qd=Uint8Array.of(0),aU=Uint8Array.of();ly=(n,e,t,i,o)=>{Tc(n),t===void 0&&(t=new Uint8Array(n.outputLen));let s=Ps.create(n,t).update(e);return lU(n,s.digest(),i,o,s)}});function ta(n,e){let t=Xl.encode(n);if(t.length>255)throw Ue("internal","domain tag longer than 255 bytes");return Ge(G_(Uint8Array.of(t.length),t,e))}function G_(...n){let e=0;for(let o of n)e+=o.length;let t=new Uint8Array(e),i=0;for(let o of n)t.set(o,i),i+=o.length;return t}function Y_(n,e){if(n.length!==e.length)return!1;let t=0;for(let i=0;i<n.length;i++)t|=n[i]^e[i];return t===0}function mt(...n){for(let e of n)e.fill(0)}function Wn(n){if(!cU.test(n))throw Ue("internal","not a UUID");let e=n.replace(/-/g,"").toLowerCase(),t=new Uint8Array(16);for(let i=0;i<16;i++)t[i]=parseInt(e.slice(i*2,i*2+2),16);return t}function pU(n){let e="";for(let t of n)e+=t.toString(16).padStart(2,"0");return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}function ZO(n=cy){let e=n(Ji);if(e.length!==Ji)throw Ue("internal","entropy returned the wrong length");return e}function QO(n){return ta("mdbase/v1/recovery-key-check",n).subarray(0,XO)}function eR(n){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");let e=G_(n,QO(n)),t="",i=0,o=0;for(let s of e){for(i=i<<8|s,o+=8;o>=5;)t+=W_[i>>>o-5&31],o-=5;i&=(1<<o)-1}return o>0&&(t+=W_[i<<5-o&31]),mt(e),[H_,...t.match(/.{1,5}/g)].join("-")}function Ld(n){if(typeof n!="string"||n.length>4096)throw Ue("invalid_recovery_key","Not a recovery key.","wrong_length");let e=n.toUpperCase().replace(/[\s-]/g,"").replace(/O/g,"0").replace(/[IL]/g,"1");if(!e.startsWith(H_))throw Ue("invalid_recovery_key","A recovery key starts with MDB1.","wrong_prefix");if(e=e.slice(H_.length),e.length!==dU)throw Ue("invalid_recovery_key","A recovery key has 55 characters after MDB1.","wrong_length");let t=new Uint8Array(Ji+XO),i=0,o=0,s=0;for(let c of e){let l=W_.indexOf(c);if(l<0)throw Ue("invalid_recovery_key","A recovery key uses only Crockford base32 characters.","bad_character");i=i<<5|l,o+=5,o>=8&&(s<t.length&&(t[s++]=i>>>o-8&255),o-=8),i&=(1<<o)-1}if(s!==t.length||i!==0)throw Ue("invalid_recovery_key","Not a recovery key.","bad_character");let r=t.slice(0,Ji),a=Y_(QO(r),t.subarray(Ji));if(mt(t),!a)throw mt(r),Ue("invalid_recovery_key","The recovery key has a typo (check failed).","checksum");return r}function tR(n,e){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");let t=Wn(e),i=ly(Ge,n,t,Xl.encode("mdbase/v1/recovery-sign"),32),o=ly(Ge,n,t,Xl.encode("mdbase/v1/recovery-kem"),32),s=pp.getPublicKey(i),r=Ui.getPublicKey(o);return{device:pU(ta("mdbase/v1/recovery-id",G_(t,s)).subarray(0,16)),signSeed:i,signPk:s,kemSk:o,kemPk:r,noisePk:new Uint8Array(32)}}function nR(n,e){return pp.sign(e,n.signSeed)}function iR(n){mt(n.signSeed,n.kemSk)}function rR(n,e){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");let t=ly(Ge,n,Wn(e),Xl.encode("mdbase/v1/account-key-proof"),32);return{seed:t,pk:pp.getPublicKey(t)}}function uU(n,e,t){if(!Number.isSafeInteger(t)||t<0)throw Ue("internal","expected_version");return ta("mdbase/v1/account-key-rewrap",se([Wn(n),Ge(e),t]))}function oR(n,e,t,i){return pp.sign(uU(e,t,i),n.seed)}function jd(n){return ta("mdbase/v1/account-key-id",n)}function wU(n){if(!(ea(n.mKib)&&ea(n.t)&&ea(n.p)&&n.mKib>=mU&&n.mKib<=aR&&n.t>=yU&&n.t<=gU&&n.p>=1&&n.p<=bU&&n.mKib>=8*n.p&&n.salt instanceof Uint8Array&&n.salt.length===16))throw Ue("params","Unsupported key derivation parameters.")}function lR(n){return[sR,n.mKib,n.t,n.p,n.salt]}function vU(n){if(!Array.isArray(n)||n.length!==5)throw Ue("encoding","Not an account key bundle.");let[e,t,i,o,s]=n;if(!ea(e)||!ea(t)||!ea(i)||!ea(o)||!(s instanceof Uint8Array)||s.length!==16)throw Ue("encoding","Not an account key bundle.");if(e!==sR||t>4294967295||i>4294967295||o>4294967295)throw Ue("params","Unsupported key derivation parameters.");return{mKib:t,t:i,p:o,salt:s}}function X_(n){return se(Yy([[0,J_],[1,lR(n.kdf)],[2,n.nonce],[3,n.ct],[4,n.keyId]]))}function cR(n){if(!(n instanceof Uint8Array)||n.length>fU)throw Ue("encoding","Not an account key bundle.");let e;try{e=ce(n)}catch{throw Ue("encoding","Not an account key bundle.")}if(!(e instanceof Map)||e.size!==5||[...e.keys()].join()!=="0,1,2,3,4")throw Ue("encoding","Not an account key bundle.");let t=e,i=t.get(2),o=t.get(3),s=t.get(4);if(t.get(0)!==J_||!(i instanceof Uint8Array)||i.length!==24||!(o instanceof Uint8Array)||o.length!==48||!(s instanceof Uint8Array)||s.length!==32)throw Ue("encoding","Not an account key bundle.");let r={kdf:vU(t.get(1)),nonce:i,ct:o,keyId:s};if(!Jy(X_(r),n))throw Ue("encoding","Not an account key bundle.");return r}function pR(n){if(typeof n!="string")throw Ue("weak_password","The password is required.","too_short");if(Xl.encode(n).length>Td)throw Ue("weak_password","The password is too long.","too_long");let e=n.normalize("NFKC"),t=Xl.encode(e);if(t.length>Td)throw Ue("weak_password","The password is too long.","too_long");if([...e].length<Zl)throw mt(t),Ue("weak_password",`The password needs at least ${Zl} characters.`,"too_short");return t}function na(n){mt(pR(n))}async function dR(n,e,t,i){wU(e);let o=pR(n);try{let s=await t(o,e.salt,{mKib:e.mKib,t:e.t,p:e.p},i);if(!(s instanceof Uint8Array)||s.length!==32)throw Ue("internal","The KDF runner returned the wrong length.");return s}finally{mt(o)}}function uR(n,e,t){return ta("mdbase/v1/account-key-bundle",se([J_,Wn(n),e,lR(t)]))}async function dy(n,e,t,i={}){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");na(e);let o=i.entropy??cy,s=i.kdf??{...hU,salt:o(16)},r=i.nonce??o(24);if(r.length!==24)throw Ue("internal","nonce is 24 bytes");let a=jd(n),c=await dR(e,s,i.argon2id??py,i.signal);try{let l=Eb(c,r,uR(t,a,s)).encrypt(n);return{kdf:s,nonce:r,ct:l,keyId:a}}finally{mt(c)}}async function fR(n,e,t,i={}){let o=await dR(e,n.kdf,i.argon2id??py,i.signal),s;try{s=Eb(o,n.nonce,uR(t,n.keyId,n.kdf)).decrypt(n.ct)}catch{throw Ue("wrong_secret","Wrong password.")}finally{mt(o)}if(s.length!==Ji||!Y_(jd(s),n.keyId))throw mt(s),Ue("wrong_secret","Wrong password.");return s}function Ud(n,e){if(n.length!==Ji||!Y_(jd(n),e.keyId))throw Ue("wrong_secret","This recovery key belongs to a different account key.")}var ze,Ue,Xl,cy,cU,W_,H_,Ji,XO,dU,J_,sR,fU,Zl,Td,hU,mU,aR,yU,gU,bU,ea,py,uy=C(()=>{"use strict";Mb();Af();YO();JO();ar();Xe();ze=class extends Error{code;reason;retryAfterMs;constructor(e,t,i={}){super(t),this.name="AccountKeyError",this.code=e,i.reason!==void 0&&(this.reason=i.reason),i.retryAfterMs!==void 0&&(this.retryAfterMs=i.retryAfterMs)}},Ue=(n,e,t)=>new ze(n,e,t===void 0?{}:{reason:t}),Xl=new TextEncoder;cy=n=>crypto.getRandomValues(new Uint8Array(n)),cU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;W_="0123456789ABCDEFGHJKMNPQRSTVWXYZ",H_="MDB1",Ji=32,XO=2,dU=55;J_=1,sR=1,fU=512,Zl=12,Td=1024,hU={mKib:19456,t:3,p:1},mU=19456,aR=24576,yU=2,gU=10,bU=4;ea=n=>typeof n=="number"&&Number.isSafeInteger(n)&&n>=0;py=async(n,e,t,i)=>{let o=()=>Ue("cancelled","Key derivation cancelled.");if(i?.aborted)throw o();try{return await GO(n,e,{t:t.t,m:t.mKib,p:t.p,dkLen:32,version:19,maxmem:aR*1024+(1<<20),asyncTick:20,onProgress:()=>{if(i?.aborted)throw o()}})}catch(s){throw s instanceof ze?s:Ue("params","Key derivation failed.")}}});function hR(n){if(n.length<3)return!1;let e=[...n].reverse().join("");return[yR,...AU].some(t=>t.includes(n)||t.includes(e))}function kU(n){for(let e=1;e<=n.length/2;e++)if(n.length%e===0&&n.slice(0,e).repeat(n.length/e)===n)return n.slice(0,e);return null}function SU(n){let e=[];for(let t of n){let i=/\p{L}/u.test(t)?"letter":/\p{Nd}/u.test(t)?"digit":t.charCodeAt(0)<128?"symbol":"other",o=e[e.length-1];o&&o.kind===i?o.text+=t:e.push({kind:i,text:t})}return e}function gR(n,e,t,i){let o=e.toLowerCase();if(t.has(o))return i.add("repeat"),1;t.add(o);let s=kU(o);if(s&&s.length<o.length)return i.add("repeat"),gR(n,s,new Set,i)+Xi(o.length/s.length);if(n==="letter"){let r=[...o].map(c=>mR[c]??c).join("");if(Nd.has(o)||Nd.has(r))return i.add("common"),Xi(Nd.size)+1;if(hR(o))return i.add("sequence"),Xi(yR.length)+Xi(o.length)+1;let a=2.5*[...o].length;return o!==e&&e.toUpperCase()!==e?a+=1+Xi([...e].length):e.toUpperCase()===e&&e.length>1&&(a+=1),a}return n==="digit"?_U.has(o)||hR(o)?(i.add("sequence"),4):/^(19|20)\d\d$/.test(o)||/^\d{6}$/.test(o)||/^\d{8}$/.test(o)?(i.add("date"),6):3.32*o.length:n==="symbol"?[...e].reduce((r,a)=>r+(a===" "?1:"!?.,*#-_".includes(a)?2:5),0):7*[...e].length}function PU(n){let e=[...n],t=e.map(r=>mR[r.toLowerCase()]??r.toLowerCase()),i=[],o="",s=0;for(;s<e.length;){let r=null;for(let a=Math.min(24,e.length-s);a>=4;a--){let c=t.slice(s,s+a).join("");if(Nd.has(c)){r=c;break}}r?(o&&i.push({word:null,text:o}),o="",i.push({word:r,text:e.slice(s,s+[...r].length).join("")}),s+=[...r].length):(o+=e[s],s++)}return o&&i.push({word:null,text:o}),i}function Dd(n){typeof n!="string"&&(n="");let e=new TextEncoder().encode(n).length,t=n.normalize("NFKC"),i=[...t].length,o=new TextEncoder().encode(t).length,s=new Set,r=new Set,a=0,c=0,l=new Set;for(let h of PU(t)){if(h.word){s.add("common"),c++,l.add("word");let m=h.text.toLowerCase();a+=r.has(h.word)?1:Xi(Nd.size)+1+(m!==h.text?1:0)+(m!==h.word?1:0),r.add(h.word);continue}for(let m of SU(h.text))c++,l.add(m.kind),a+=gR(m.kind,m.text,r,s)}a+=Math.max(0,l.size-1)+Xi(Math.max(1,c));let p=a<Xi(1e3)?0:a<Xi(1e6)?1:a<Xi(1e8)?2:a<Xi(1e10)?3:4,d=[],u=e>Td||o>Td;i<Zl&&d.push(`Use at least ${Zl} characters.`),u&&d.push("The password is too long."),s.has("common")&&d.push("Avoid common words and passwords."),s.has("sequence")&&d.push("Avoid sequences like abcd, 1234 or qwerty."),s.has("repeat")&&d.push("Avoid repeated characters or words."),s.has("date")&&d.push("Avoid years and dates."),p<3&&d.length===0&&d.push("Add another word or two; uncommon words are best.");let f=p>=3&&i>=Zl&&!u;return{score:p,acceptable:f,feedback:f?[]:d,bits:Math.round(a*10)/10}}var Nd,_U,mR,yR,AU,Xi,bR=C(()=>{"use strict";uy();Nd=new Set(["password","passwort","passw0rd","letmein","welcome","admin","administrator","login","master","monkey","dragon","football","baseball","soccer","hockey","qwerty","qwertyuiop","asdfgh","asdfghjkl","zxcvbn","zxcvbnm","azerty","iloveyou","sunshine","princess","shadow","superman","batman","michael","jennifer","jessica","charlie","thomas","trustno1","abc","abcd","abcdef","abcdefg","abcdefgh","secret","freedom","whatever","starwars","pokemon","computer","internet","hello","mustang","ginger","cheese","summer","winter","spring","autumn","flower","killer","hunter","ranger","buster","soccer","tigger","pepper","jordan","harley","robert","matthew","daniel","andrew","joshua","ashley","nicole","chelsea","amanda","orange","purple","yellow","silver","golden","cookie","chocolate","mdbase","task","note","notes","obsidian","recovery","private","encryption","unlock","account","default","changeme","temp","test","testing","guest","root","user","system","server","database","oracle","google","apple","facebook","twitter","github","linkedin","amazon","netflix","spotify","windows","android","iphone","samsung","nokia","sony","january","february","march","april","june","july","august","september","october","november","december","monday","tuesday","wednesday","thursday","friday","saturday","sunday","spider","lovely","liverpool","arsenal","chelsea","manchester","barcelona","madrid","america","london","paris","berlin","sydney","melbourne","canada"]),_U=new Set(["123","1234","12345","123456","1234567","12345678","123456789","1234567890","111111","000000","123123","654321","696969","112233","121212","131313","007","666","777","888","999","420","69"]),mR={0:"o",1:"i",3:"e",4:"a",5:"s",7:"t",8:"b","@":"a",$:"s","!":"i","+":"t"},yR="abcdefghijklmnopqrstuvwxyz0123456789",AU=["qwertyuiop","asdfghjkl","zxcvbnm","1234567890"],Xi=n=>Math.log2(Math.max(1,n))});function vR(){let n=null;return{get:async()=>n?n.slice():null,set:async e=>{n&&mt(n),n=e.slice()},clear:async()=>{n&&mt(n),n=null}}}function ia(n){if(!n||typeof n!="object"||Array.isArray(n))throw rn("not_object");return n}function wR(n){if(typeof n.complete!="boolean"||!Array.isArray(n.pending)||n.pending.length>1024)throw rn("strict_completion");let e=new Set,t=n.pending.map(i=>{let o=ia(i);if(typeof o.collection_id!="string"||typeof o.device_id!="string"||o.revoked_at!==null&&(!Number.isSafeInteger(o.revoked_at)||o.revoked_at<0))throw rn("strict_pending");Wn(o.collection_id),Wn(o.device_id);let s=`${o.collection_id.toLowerCase()}/${o.device_id.toLowerCase()}`;if(e.has(s))throw rn("strict_pending");return e.add(s),{collectionId:o.collection_id,deviceId:o.device_id,revokedAt:o.revoked_at}});if(n.complete&&t.length!==0)throw rn("strict_completion");return{complete:n.complete,pending:t}}function io(n){if(n instanceof ze)return n;let e=n&&typeof n=="object"?n:{},t=e.problem&&typeof e.problem=="object"?e.problem:{},i=typeof t.code=="string"?t.code:typeof e.code=="string"?e.code:"",o=typeof e.status=="number"?e.status:void 0,s=e.retryAfterMs??t.retryAfterMs??(typeof e.retry_after=="number"?e.retry_after*1e3:void 0),r=typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0;return i==="rate_limited"||o===429?new ze("rate_limited","Too many account key requests; try again later.",r===void 0?{}:{retryAfterMs:r}):i==="version_conflict"||i==="rotate_requires_strict"?new ze("conflict","The account key changed; fetch the current state and retry.",{reason:i}):i==="strict_mode"?new ze("strict_mode","The account is in strict mode."):i==="account_key_proof_required"?new ze("wrong_secret","The account key held here is not the one registered for this bundle.",{reason:i}):i==="no_account_key"?new ze("no_account_key","The account has no account key."):i==="cancelled"||e.name==="AbortError"?new ze("cancelled","Account key request cancelled."):IU(i||(o===void 0?"port_failure":`http_${o}`),r)}var Z_,xU,rn,IU,fy,hy,_R=C(()=>{"use strict";uy();Xe();bR();Z_=/^[0-9a-f]{64}$/,xU=/^([0-9a-f]{2}){1,512}$/,rn=n=>new ze("internal","Invalid control-plane account-key response.",{reason:n}),IU=(n,e)=>new ze("unavailable","The account key service refused or was unreachable.",e===void 0?{reason:n}:{reason:n,retryAfterMs:e});fy=n=>{if(!Number.isSafeInteger(n)||n<0)throw rn("version");return n};hy=class{lifetime=new AbortController;control;replica;secrets;argon2id;entropy;busy=Promise.resolve();last=null;constructor(e){if(this.control=e.control,this.replica=e.replica,!e.secrets)throw new ze("internal","PrivateAccount needs a secret store (the platform keychain).");this.secrets=e.secrets,this.argon2id=e.argon2id??py,this.entropy=e.entropy??cy,Wn(this.control.accountId)}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.control.close?.())}passwordStrength(e){return Dd(e)}async status(e={}){return this.serial(e,t=>this.readStatus(t))}get lastStatus(){return this.last}async setup(e,t){return this.serial({signal:t},async i=>{let o=Dd(e);if(na(e),!o.acceptable)throw new ze("weak_password","The password is too weak.",{reason:"strength"});let s=await this.fetchState(i);if(s.mode==="password")throw new ze("already_set_up","This account already has an account key; unlock it instead.");let r=ZO(this.entropy);try{let a=await dy(r,e,this.control.accountId,{entropy:this.entropy,argon2id:this.argon2id,signal:i});this.check(i),await this.putBundle(r,s.version,a,i),await this.secrets.set(r);let c=eR(r),l=await this.keyAll(r,i);return l.length?{recoveryKey:c,incomplete:l}:{recoveryKey:c}}finally{mt(r)}})}async unlock(e,t){return this.serial({signal:t},async i=>{let o="recoveryKey"in e?Ld(e.recoveryKey):null;try{let s=await this.requirePassword(i);o?Ud(o,s.bundle):o=await fR(s.bundle,e.password,this.control.accountId,{argon2id:this.argon2id,signal:i}),this.check(i),await this.secrets.set(o);let r=await this.grantAll(o,i);return r.length?{incomplete:r}:{}}finally{o&&mt(o)}})}async changePassword(e,t){return this.serial({signal:t},async i=>{let o=Dd(e);if(na(e),!o.acceptable)throw new ze("weak_password","The password is too weak.",{reason:"strength"});let s=await this.secrets.get();if(!s)throw new ze("locked","Unlock the account key on this device first.");try{let r=await this.requirePassword(i);try{Ud(s,r.bundle)}catch{throw new ze("conflict","The account key on the server is not the one unlocked here; unlock again.",{reason:"key_id_changed"})}let a=await dy(s,e,this.control.accountId,{entropy:this.entropy,argon2id:this.argon2id,signal:i});this.check(i),await this.putBundle(s,r.version,a,i)}finally{mt(s)}})}async recover(e,t,i){return this.serial({signal:i},async o=>{let s=Dd(t);if(na(t),!s.acceptable)throw new ze("weak_password","The password is too weak.",{reason:"strength"});let r=Ld(e);try{let a=await this.requirePassword(o);Ud(r,a.bundle);let c=await dy(r,t,this.control.accountId,{entropy:this.entropy,argon2id:this.argon2id,signal:o});this.check(o),await this.putBundle(r,a.version,c,o),await this.secrets.set(r);let l=await this.grantAll(r,o);return l.length?{incomplete:l}:{}}finally{mt(r)}})}async enableStrict(e){return this.serial({signal:e},async t=>{let i=await this.readStatus(t);if(i.mode==="strict"){i.strictComplete===!0&&await this.secrets.clear();let p=i.strictComplete===!0?!1:i.accountKeyKept;return this.last={...i,accountKeyKept:p},{version:i.version,complete:i.strictComplete,pending:i.pending,accountKeyKept:p,revocations:[],alreadyStrict:!0}}let o;try{o=await this.control.strict({expected_version:i.version},{signal:t})}catch(p){throw io(p)}let s=ia(o);if(s.mode!=="strict"||fy(s.version)!==i.version+1||!Array.isArray(s.revocations))throw rn("strict");let r=wR(s),a=s.revocations.map(p=>{let d=ia(p);if(typeof d.collection_id!="string"||typeof d.device_id!="string")throw rn("strict");return Wn(d.collection_id),Wn(d.device_id),{collectionId:d.collection_id,deviceId:d.device_id}});r.complete===!0&&await this.secrets.clear();let c=await this.secrets.get(),l=c!==null;return c&&mt(c),this.last={mode:"strict",version:s.version,unlocked:!1,strictComplete:r.complete,pending:r.pending,accountKeyKept:l},{version:s.version,...r,accountKeyKept:l,revocations:a,alreadyStrict:!1}})}async keyCollections(e){return this.serial({signal:e},async t=>{let i=await this.secrets.get();if(!i)throw new ze("locked","Unlock the account key on this device first.");try{let o=await this.requirePassword(t);return Ud(i,o.bundle),await this.keyAll(i,t)}finally{mt(i)}})}async lock(){await this.secrets.clear()}serial(e,t){let i=e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal,o=this.busy.then(()=>(this.check(i),t(i)),()=>(this.check(i),t(i)));return this.busy=o.catch(()=>{}),o}check(e){if(e.aborted)throw new ze("cancelled","Account key request cancelled.")}async readStatus(e){let t;try{t=await this.control.status({signal:e})}catch(l){throw io(l)}this.check(e);let i=ia(t),o=fy(i.version),s,r=null;if(i.mode==="none"&&o===0)s="none";else if(i.mode==="strict")s="strict";else if(i.mode==="password"&&typeof i.key_id=="string"&&Z_.test(i.key_id))s="password",r=i.key_id;else throw rn("status");let a=s==="strict"?wR(i):void 0,c=await this.secrets.get();try{let l=r!==null&&c!==null&&c.length===32&&At(jd(c))===r;return this.last={mode:s,unlocked:l,version:o,...a?{strictComplete:a.complete,pending:a.pending,accountKeyKept:c!==null}:{}}}finally{c&&mt(c)}}async fetchState(e){let t;try{t=await this.control.fetch({signal:e})}catch(r){throw io(r)}this.check(e);let i=ia(t),o=fy(i.version);if(i.mode==="none"){if(o!==0)throw rn("mode");return{mode:"none",version:0}}if(i.mode==="strict")return{mode:"strict",version:o};if(i.mode!=="password")throw rn("mode");if(typeof i.key_id!="string"||!Z_.test(i.key_id)||typeof i.bundle!="string"||!xU.test(i.bundle))throw rn("bundle");let s=cR(Lr(i.bundle));if(At(s.keyId)!==i.key_id)throw rn("key_id");return{mode:"password",version:o,bundle:s}}async requirePassword(e){let t=await this.fetchState(e);if(t.mode==="none")throw new ze("no_account_key","The account has no account key yet; set one up on a device that holds the keys.");if(t.mode==="strict")throw new ze("strict_mode","The account is in strict mode; approve this device from an existing device.");return t}async putBundle(e,t,i,o){let s=At(i.keyId),r=X_(i),a=rR(e,this.control.accountId),c;try{let p=At(oR(a,this.control.accountId,r,t));c=await this.control.put({expected_version:t,key_id:s,bundle:At(r),proof_pk:At(a.pk),proof_sig:p},{signal:o})}catch(p){throw io(p)}finally{mt(a.seed)}let l=ia(c);if(l.mode!=="password"||fy(l.version)!==t+1||l.key_id!==s)throw rn("put")}async collections(e){let t;try{t=await this.replica.privateCollections({signal:e})}catch(i){throw io(i)}if(this.check(e),!Array.isArray(t)||t.some(i=>typeof i!="string")||new Set(t).size!==t.length)throw rn("collections");for(let i of t)Wn(i);return t}async keyAll(e,t){let i=[];for(let o of await this.collections(t)){this.check(t);try{await this.enrol(e,o,t),await this.replica.keyAccountKeyDevice(o,e,{signal:t})}catch(s){if(s instanceof ze&&s.code==="cancelled")throw s;i.push(o)}}return i}async grantAll(e,t){let i=[];for(let o of await this.collections(t)){this.check(t);try{await this.replica.selfGrantWithAccountKey(o,e,{signal:t})}catch(s){if(s instanceof ze&&s.code==="cancelled")throw s;i.push(o)}}return i}async enrol(e,t,i){let o;try{o=await this.control.challenge({signal:i})}catch(a){throw io(a)}let s=typeof o=="string"?o.toLowerCase():typeof o?.challenge=="string"?o.challenge.toLowerCase():"";if(!Z_.test(s))throw rn("challenge");this.check(i);let r=tR(e,t);try{let a=ta("mdbase/v1/account-key-enrol",se([Lr(s),Wn(t),Wn(r.device),Wn(this.control.accountId),r.signPk,r.kemPk,r.noisePk])),c=At(nR(r,a)),l;try{l=await this.control.enrolRecoveryDevice(t,{challenge:s,recovery_device:r.device,sign_pk:At(r.signPk),kem_pk:At(r.kemPk),pop:c},{signal:i})}catch(d){throw io(d)}let p=ia(l);if(p.collection_id!==t||p.device_id!==r.device||!Number.isSafeInteger(p.enrolled_at))throw rn("enrol")}finally{iR(r)}}}});function Q_(n){if(n instanceof st)return n;if(n instanceof Mt)return new st("unlock_strict");if(n instanceof Go)return new st("unlock_unavailable");if(!(n instanceof ze))return null;switch(n.code){case"wrong_secret":return new st("wrong_secret");case"invalid_recovery_key":return new st("invalid_recovery_key",n.reason);case"no_account_key":return new st("no_account_key");case"strict_mode":return new st("unlock_strict");case"rate_limited":return new st("rate_limited",void 0,n.retryAfterMs);case"cancelled":return null;default:return n.reason==="account_key_proof_unavailable"?new st("unlock_unavailable"):new st("unavailable",n.reason??n.code,n.retryAfterMs)}}async function MU(n,e){return(await kR(n,e)).mode}async function kR(n,e){let t;try{t=await n.status({signal:e})}catch(s){throw io(s)}if(e.aborted)throw eA();let i=t&&typeof t=="object"&&!Array.isArray(t)?t:{},o=i.mode;if(o!=="password"&&o!=="strict"&&o!=="none")throw _t("response");return{mode:o,version:Number.isSafeInteger(i.version)&&i.version>=1?i.version:null,keyId:typeof i.key_id=="string"&&AR.test(i.key_id)?i.key_id:null}}async function yy(n,e){let t=new ec(n,()=>{throw _t("proof")},e);try{return await MU(t,e.signal)}catch(i){throw e.signal.aborted?i:Q_(i)??i}finally{t.close()}}async function gy(n,e,t,i){let o=i.signal,s=i.settleMs??RU,r=i.sealed,a="password"in t,c="recoveryKey"in t;if(a===c||typeof(a?t.password:t.recoveryKey)!="string"||!Number.isSafeInteger(s)||s<1)throw new st("unavailable","binding");let l=()=>{if(o.aborted)throw eA();if(n.isCurrent()!==!0)throw _t("fenced")};if(l(),e.status().state==="keyed"){r?.clear();return}if(c)try{mt(Ld(t.recoveryKey))}catch(g){throw Q_(g)??g}else try{na(t.password)}catch{throw new st("wrong_secret")}let p,d=null,u={privateCollections:async()=>[n.collection],keyAccountKeyDevice:()=>Promise.reject(my()),async selfGrantWithAccountKey(g,y,v){let _=v.signal??o;try{if(l(),g!==n.collection||!(y instanceof Uint8Array)||y.length!==32)throw _t("binding");let k=new Uint8Array(y),S;try{S=e.unlockConsuming(k)}finally{k.fill(0)}let x=Date.now()+s,P=100;for(;S.state==="pending";){if(Date.now()>=x)throw p="grant_pending",_t("grant_pending");if(await e.drive({signal:_}),l(),S=e.status(),S.state!=="pending")break;await Qo(P,_),l(),P=Math.min(1e3,P*2)}if(S.state==="refused")throw p=S.reason,_t(S.reason)}catch(k){throw p===void 0&&(d={error:k}),k}}},f=new ec(n,g=>e.signFetch(g),i),h=null,m=r?{accountId:f.accountId,status:g=>f.status(g),challenge:g=>f.challenge(g),async fetch(g){let y=r.take(n,h?.version??null,h?.keyId??null);if(y)return y;let v=await f.fetch(g);return r.keep(n,v),v},put:()=>f.put(),strict:()=>f.strict(),enrolRecoveryDevice:()=>f.enrolRecoveryDevice(),close:()=>f.close()}:f,b=vR(),w=new hy({control:m,replica:u,secrets:b,...i.argon2id?{argon2id:i.argon2id}:{}});try{h=await kR(f,o),l();let g=h.mode;try{i.onMode?.(g)}catch{}if(g==="none")throw new st("no_account_key");if(g==="strict")throw new st("unlock_strict");if(!e.supportsFetchProof())throw new st("unlock_unavailable");if(e.headKnown()<=0&&(await e.drive({signal:o}),l()),e.headKnown()<=0)throw new st("unavailable","log_head_unknown");let y=await w.unlock(t,o),v=d;if(v)throw v.error;if(l(),y.incomplete?.length)throw new st(p==="grant_pending"?"unavailable":"unlock_failed",p??"incomplete");if(e.status().state!=="keyed")throw new st("unlock_failed","not_keyed");r?.clear()}catch(g){throw(!(g instanceof ze&&g.code==="wrong_secret")||o.aborted||n.isCurrent()!==!0)&&r?.clear(),o.aborted||n.isCurrent()!==!0?g:Q_(g)??g}finally{try{await b.clear()}finally{w.close()}}}var st,Ql,CU,OU,RU,_t,eA,my,EU,AR,ec,$d=C(()=>{"use strict";bt();uy();be();_R();Qn();ry();Dm();st=class extends Error{constructor(t,i,o){super(`app account key unlock: ${t}`);this.reason=t;this.detail=i;this.retryAfterMs=o;this.name="AppAccountKeyUnlockError"}reason;detail;retryAfterMs},Ql=class{held=null;get holding(){return this.held!==null}take(e,t,i){let o=this.held;return o&&t!==null&&i!==null&&o.accountId===e.accountId&&o.connectorId===e.connectorId&&o.deviceId===e.deviceId&&o.version===t&&o.keyId===i?{mode:"password",version:o.version,key_id:o.keyId,bundle:o.bundle}:(this.held=null,null)}keep(e,t){this.held=null;let i=t&&typeof t=="object"&&!Array.isArray(t)?t:{};i.mode!=="password"||!Number.isSafeInteger(i.version)||i.version<1||typeof i.key_id!="string"||!AR.test(i.key_id)||typeof i.bundle!="string"||!/^([0-9a-f]{2}){1,512}$/.test(i.bundle)||(this.held=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,version:i.version,keyId:i.key_id,bundle:i.bundle}))}clear(){this.held=null}},CU=64*1024,OU=15e3,RU=45e3,_t=n=>new ze("unavailable","The account key service refused or was unreachable.",{reason:n}),eA=()=>new ze("cancelled","Account key request cancelled."),my=()=>_t("not_supported"),EU=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),AR=/^[0-9a-f]{64}$/,ec=class{constructor(e,t,i={}){this.session=e;this.sign=t;for(let s of[e.accountId,e.connectorId,e.deviceId,e.collection])if(U(s).every(r=>r===0))throw _t("binding");let o=new URL(e.cpOrigin);if(o.origin!==e.cpOrigin||o.username||o.password||o.protocol!=="https:"&&!(i.allowLoopbackHttp===!0&&Ye(e.cpOrigin)))throw _t("binding");if(this.accountId=e.accountId,this.deviceId=e.deviceId,this.origin=o.origin,this.fetchImpl=i.fetch??globalThis.fetch,this.now=i.now??Date.now,e.isCurrent()!==!0)throw _t("fenced")}session;sign;accountId;lifetime=new AbortController;origin;deviceId;fetchImpl;now;check(e){if(e.aborted||this.lifetime.signal.aborted)throw eA();let t=!1;try{t=this.session.isCurrent()===!0&&this.session.accountId===this.accountId&&this.session.deviceId===this.deviceId&&this.session.cpOrigin===this.origin}catch{t=!1}if(!t)throw _t("fenced")}async request(e,t,i,o){let s=o.signal??this.lifetime.signal;this.check(s);let r=await this.session.connectorBearer({signal:s});if(this.check(s),typeof r!="string"||!r||r.length>16384||/[^\x21-\x7e]/.test(r))throw _t("binding");let a=new AbortController,c=()=>a.abort(),l=setTimeout(c,OU);l.unref?.(),s.addEventListener("abort",c,{once:!0}),this.lifetime.signal.addEventListener("abort",c,{once:!0});let p=new Uint8Array(CU),d=0,u=null,f=null;try{let h=this.fetchImpl;try{u=await h(`${this.origin}${t}`,{method:e,headers:{authorization:`Bearer ${r}`,...i},signal:a.signal,redirect:"error",credentials:"omit",cache:"no-store",referrerPolicy:"no-referrer"})}catch{throw this.check(s),_t("network")}if(this.check(s),a.signal.aborted)throw _t("timeout");if(u.body)for(f=u.body.getReader();;){let b;try{b=await f.read()}catch{throw this.check(s),_t("network")}try{if(this.check(s),a.signal.aborted)throw _t("timeout");if(b.done)break;if(d+b.value.length>p.length)throw a.abort(),_t("response");p.set(b.value,d),d+=b.value.length}finally{b.value?.fill(0)}}let m=Co(p.subarray(0,d));if(!u.ok)throw wi(u.status,m,u.headers);if(!m||typeof m!="object"||Array.isArray(m))throw _t("response");return m}finally{p.fill(0),(f?.cancel()??u?.body?.cancel())?.catch(()=>{});try{f?.releaseLock()}catch{}clearTimeout(l),s.removeEventListener("abort",c),this.lifetime.signal.removeEventListener("abort",c)}}status(e){return this.request("GET","/v1/next/account-key/status",{},e)}challenge(e){return this.request("POST","/v1/next/devices/challenge",{},e)}async fetch(e){let t=null,i=null;try{let o=await this.request("POST","/v1/next/devices/challenge",{},e),s=o.challenge,r=o.expires_at;if(typeof s!="string"||!/^[0-9a-f]{64}$/.test(s)||typeof r!="number"||!Number.isSafeInteger(r)||r-this.now()<=5e3||r-this.now()>16*6e4)throw _t("response");t=Uint8Array.from(s.match(/../g).map(a=>parseInt(a,16)));try{i=this.sign(t)}catch(a){throw a instanceof Go?_t(a.reason):a instanceof Mt?new ze("strict_mode","The account is in strict mode."):_t("proof")}if(!(i instanceof Uint8Array)||i.length!==64)throw _t("proof");return await this.request("GET","/v1/next/account-key",{"x-mdbase-device-id":this.deviceId,"x-mdbase-challenge":s,"x-mdbase-signature":EU(i)},e)}finally{t?.fill(0),i?.fill(0)}}put(){return Promise.reject(my())}strict(){return Promise.reject(my())}enrolRecoveryDevice(){return Promise.reject(my())}close(){this.lifetime.abort()}}});function SR(n){let e=Object.freeze({...n,setupJournal:Object.freeze({...n.setupJournal})}),t=PC(e.sql);if(typeof e.handoff!="function")throw Zi("binding");let i=new Set;return async o=>{let s=JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection]);if(i.has(s))throw Zi("fenced");i.add(s);let{host:r,installation:a,signal:c,collection:l,setupPolicy:p}=o,d=a.isCurrent,u=l.displayName,f=l.mode==="private",h=ke=>{if(le())try{o.onProgress?.(ke)}catch{}},m=Object.freeze({account:o.scope.account,installation:o.scope.installation,collection:o.scope.collection}),b=JSON.stringify([m.account,m.installation,m.collection]),w=new AbortController,g=!1,y=!0,v=null,_=null,k=null,S=null,x=null,P=null,I=null,R=null,O="setup_required",q=null,j=!1,z=null,D=!1,J=null,X=!1,B=null,ae=new Map,te=null,ee=new Set,le=()=>{try{return!g&&!w.signal.aborted&&!c.aborted&&o.signal===c&&o.host===r&&o.installation===a&&a.isCurrent===d&&d.call(a)===!0&&o.collection===l&&o.setupPolicy===p&&a.scope.account===m.account&&a.scope.installation===m.installation&&JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection])===b&&l.collectionId===m.collection}catch{return!1}},ge=()=>{if(!le())throw Zi("fenced")},N=()=>{for(let ke of[...ee])try{ke()}catch{}},G=()=>{if(k)return k;g=!0,O="setup_required",v!==null&&clearTimeout(v),v=null,J!==null&&clearTimeout(J),J=null;try{z?.close()}catch{}z=null;try{r.onLogWork?.(null)}catch{}c.removeEventListener("abort",F);let ke=[...ae.values()];return ae.clear(),k=Promise.resolve().then(async()=>{let Me=!1;try{await x?.close()}catch{Me=!0}try{await S?.close()}catch{Me=!0}for(let nt of ke){try{await nt.timers?.close()}catch{Me=!0}try{await nt.control.close()}catch{Me=!0}try{nt.data.port1.postMessage([1,JSON.stringify([m.account,m.installation,m.collection]),"close"])}catch{Me=!0}for(let jt of[nt.data.port1,nt.data.port2,nt.command.port1,nt.command.port2])try{jt.close()}catch{Me=!0}}try{I?.port1.postMessage([1,JSON.stringify([m.account,m.installation,m.collection]),"close"])}catch{Me=!0}for(let nt of[I?.port1,I?.port2,R?.port1,R?.port2])try{nt?.close()}catch{Me=!0}await _?.catch(()=>{});try{P?.close()}catch{Me=!0}if(Me)throw Zi("unavailable");ee.clear(),i.delete(s)}),w.abort(),N(),k},F=()=>{G().catch(()=>{})},Y=null,we=0,Pe=()=>{let ke=Ot(te);if(ke!==null)return ke==="collection_migrating"?Math.min(6e5,Math.max(5e3,te?.retryAfterMs??3e4)):3e5;let Me=Math.min(6e4,1e3*2**Math.min(Math.max(we,De),6));return Y?.kind==="offline"?Je?Me:null:Y?.kind==="server_busy"||Y?.kind==="rate_limited"?Y.retryAfterMs??Me:De||Y?Me:250},ve=()=>{let ke=null;try{ke=r.serverProblem()}catch{ke=null}let Me=null;try{Me=r.transportHealth()}catch{Me=null}we=Me?we+1:0;let nt=JSON.stringify(Me)===JSON.stringify(Y);(ke!==te||!nt)&&(te=ke,Y=Me,N())},lt=Number.POSITIVE_INFINITY,De=0,Gt=0,ct=!1,Je=null,nr=ke=>{let Me=ke&&typeof ke=="object"&&typeof ke.code=="string"?ke.code:null;try{console.debug("mdbase: sync turn failed",{reason:Y?.kind??Ot(te)??Me??"unknown",failures:De})}catch{}},la=()=>{if(y||Date.now()-Gt>=TU)return!1;try{return r.pendingWrites()>0}catch{return!1}},ai=()=>{if(!j||!le())return;if(!y&&!la()&&!X){_||z?.suspend();return}if(v!==null||_)return;let ke=X?0:Pe();X=!1,ke!==null&&(v=setTimeout(()=>{if(v=null,!le())return;let Me=y&&Date.now()>=lt;Me&&(lt=Number.POSITIVE_INFINITY);let nt=_=Me?r.wakeCollectionLog({signal:w.signal}):r.driveCollection({signal:w.signal});nt.then(()=>{_===nt&&(_=null),De=0,ct=!0,le()&&ve(),Je?.(),ai()},jt=>{_===nt&&(_=null),De++,le()&&ve(),nr(jt),Je?.(),ai()})},ke))},Mr=()=>{le()&&(X=!0,v!==null&&clearTimeout(v),v=null,ai())},so=ke=>{D!==ke&&(D=ke,N())},Ei=ke=>{if(J!==null&&clearTimeout(J),J=null,ke){so(!1);return}if(!z?.available){so(B===null);return}z.suspended||(J=setTimeout(()=>{J=null,le()&&!z?.live&&so(!0)},qU))},Yt=ke=>{if(ge(),ke){(!z?.live||Y?.kind==="offline")&&(lt=0),De=0,we=0,Y?.kind==="offline"&&(X=!0);try{z?.resume(),z&&!z.live&&Ei(!1)}catch{}}else y&&(Gt=Date.now());y=ke,v!==null&&clearTimeout(v),v=null,ai()},ao=()=>new Promise((ke,Me)=>{let nt,jt=null,lo=En=>{Je=null,jt!==null&&clearTimeout(jt),w.signal.removeEventListener("abort",qr),En?Me(En):ke()},qr=()=>lo(Zi("fenced"));w.signal.addEventListener("abort",qr,{once:!0}),Je=()=>{if(!le()){lo(Zi("fenced"));return}if(B!==null){lo();return}let En="first_turn";if(ct)try{En=typeof r.initialSync=="function"?r.initialSync():null}catch{En="unavailable"}if(En===null||En==="offline"||Y?.kind==="offline"){lo();return}let co=null;if(En==="waiting_for_key"&&typeof r.keyWaitDetail=="function")try{co=r.keyWaitDetail()}catch{co=null}let vc=En+(co?JSON.stringify(co):"");if(vc!==nt){nt=vc;try{console.debug("mdbase: waiting for the first sync",{...co,reason:En})}catch{}}},jt=setTimeout(()=>lo(),LU),Je()});c.addEventListener("abort",F,{once:!0});try{ge(),P=new Dl({...e.setupJournal,scope:m,isCurrent:le});let ke=new Yl({databaseName:e.joinDatabaseName,scope:m,isCurrent:le});if(f)h("joining"),await r.bootstrapPrivateDevice({scope:m,collectionCurrent:le,signal:w.signal,fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),ge();else{let It=await ke.prepare({signal:w.signal});ge(),h("joining"),await r.bootstrapCloudCopy({scope:m,collectionCurrent:le,purpose:"join",outcomeMode:It.outcomeMode,signal:w.signal,...It.outcomeMode==="existing"?{reconcile:"explicit-unknown-outcome"}:{},fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),ge(),await ke.complete({signal:w.signal}),ge()}let Me=r.registeredReceipt();if(Me.installationId!==m.installation)throw Zi("binding");let nt=null,jt=async It=>{let at=await t(It);return nt=at.ledger??null,at};h("opening_store"),await r.openCollectionSql({signal:w.signal,replicaId:Me.deviceId,endpoint:0,openSql:jt}),ge(),h("connecting_log");let lo=Date.now()+jU;for(let It=0;;It++)try{await r.startCollectionLog({signal:w.signal,fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),ge();break}catch(at){ge();let Tr=at instanceof Ci&&at.reason==="unavailable"?at.server:null;if(!Dn(Tr)||Tr.status!==503||Tr.code!=="busy"||Ot(Tr)!==null||It+1>=UU)throw at;let _c=Tr.retryAfterMs??1e3*2**It;if(Date.now()+_c>=lo||(await Qo(_c,w.signal),ge(),Date.now()>=lo))throw at}let qr=crypto.randomUUID(),En=null,co=null;if(f){h("syncing");let It=await r.settlePrivateKey({signal:w.signal});if(ge(),It==="locked"){let at=await r.accountKeyMode({signal:w.signal});ge(),q={mode:at,unlocking:!1,problem:null}}}let vc=async()=>{let It=await ke.syncedBefore({signal:w.signal});ge(),h("syncing"),await r.waitForVerifiedRead({signal:w.signal,cold:!It,onProgress:h}),ge(),j=!0,r.onLogWork?.(Mr),ai();try{z=typeof r.openLogPush=="function"?r.openLogPush({push:Jt=>{le()&&(r.pushLog(Jt),Mr())},live:Ei,ended:Jt=>{B=Jt,Mr(),Ei(!1),Je?.(),N()}}):null}catch{z=null}z?(z.start(),Ei(!1)):D=!0,It&&(h("syncing"),await ao()),ge(),h("checking_setup"),ke.markSynced({signal:w.signal}).catch(()=>{});let at=await P.load(w.signal);ge();let Tr=at&&at.version!==1&&(at.phase==="attempted"||at.phase==="confirmed")?"reconcile-original":at===null&&p==="approved-new-collection"?"approved-new":"inspect",_c=e.people===!0&&!f,BA=_c?{people:!0}:f?{privateDevice:!0}:{},v2={owner:null},FA=(Jt,Mn,yn,ls)=>LC(Mn,{scope:m,generation:qr},{journal:P,resourceSetup:r.attachDataFacade(Jt),signal:w.signal,isCurrent:le,ledger:()=>le()?nt:null,setupTurn:v2,assess(po){ge(),O=po,N()},foreground:yn,onProtocolFailure:ls,..._c?{peopleAuthority:r.peopleAuthority()}:{}});x=r.openTimersPort({scope:m,generation:qr,signal:w.signal}),ge(),I=new MessageChannel,R=new MessageChannel,S=FA(I.port1,R.port1,Yt,F),ge();let VA=Jt=>{if(I&&R&&Jt.dataPort===I.port2){let yn={data:I,command:R,control:S,timers:x};I=null,R=null,S=null,x=null;try{r.detachDataFacade(yn.data.port1)}catch{}yn.timers?.close().catch(()=>{}),yn.control?.close().catch(()=>{});for(let ls of[yn.data.port1,yn.command.port1])try{ls.close()}catch{}return}let Mn=ae.get(Jt.dataPort);if(Mn){ae.delete(Jt.dataPort);try{r.detachDataFacade(Mn.data.port1)}catch{}Mn.timers?.close().catch(()=>{}),Mn.control.close().catch(()=>{});for(let yn of[Mn.data.port1,Mn.command.port1])try{yn.close()}catch{}}};En=()=>{if(!le()||B!==null)return null;let Jt=new MessageChannel,Mn=new MessageChannel,yn=null,ls=null;try{yn=r.openTimersPort({scope:m,generation:qr,signal:w.signal});let po=null;return ls=FA(Jt.port1,Mn.port1,()=>{},()=>{po&&VA(po)}),po=Object.freeze({schema:"mdbn-app-collection/1",scope:m,generation:qr,displayName:u,setupMode:Tr==="reconcile-original"?Tr:"inspect",dataPort:Jt.port2,controlPort:Mn.port2,...BA,...yn?{timerPort:yn.port}:{}}),ae.set(Jt.port2,{data:Jt,command:Mn,control:ls,timers:yn}),po}catch{try{r.detachDataFacade(Jt.port1)}catch{}yn?.close().catch(()=>{}),ls?.close().catch(()=>{});for(let po of[Jt.port1,Jt.port2,Mn.port1,Mn.port2])po.close();return null}},co=VA,e.handoff(Object.freeze({schema:"mdbn-app-collection/1",scope:m,generation:qr,displayName:u,setupMode:Tr,dataPort:I.port2,controlPort:R.port2,...BA,...x?{timerPort:x.port}:{}})),ge(),ai()},b2=Object.freeze({scope:m,generation:qr,isCurrent:le,setForeground:Yt,attach:()=>En?En():null,detach:It=>{co?.(It)}}),w2={get state(){return le()?q?"needs_unlock":O:"setup_required"},get locked(){return le()&&q?Object.freeze({...q}):null},get problem(){return le()?te:null},get health(){return le()?Y:null},get live(){return le()?!D:null},get ended(){return le()?B:null},connection:b2,close:G,subscribe(It){return ge(),ee.add(It),()=>{ee.delete(It)}},...f?{unlock:async It=>{if(ge(),!q||q.unlocking)throw Zi("binding");q={mode:q.mode,unlocking:!0,problem:null},N();try{await r.unlockAccountKey(It,{signal:w.signal,onMode:at=>{q&&le()&&(q={...q,mode:at})}}),ge()}catch(at){if(at instanceof st&&le()&&q){q={mode:q.mode,unlocking:!1,problem:at.reason},N();return}throw await G(),at}try{await vc(),ge()}catch(at){throw await G(),at}q=null,N()}}:{}};return q||await vc(),ge(),Object.freeze(w2)}catch(ke){throw await G(),ke}}}async function by(n,e){if(n.schema!=="mdbn-app-collection/1"||tc.has(n.dataPort)||tc.has(n.controlPort)||n.dataPort===n.controlPort||!["inspect","approved-new","reconcile-original"].includes(n.setupMode)||n.people!==void 0&&n.people!==!0||n.privateDevice!==void 0&&(n.privateDevice!==!0||n.people!==void 0)||e.signal.aborted||n.timerPort&&(tc.has(n.timerPort)||n.timerPort===n.dataPort||n.timerPort===n.controlPort))throw Zi("binding");tc.add(n.dataPort),tc.add(n.controlPort),n.timerPort&&tc.add(n.timerPort);let t=Object.freeze({...n.scope}),i=n.generation,o=n.setupMode,s=n.people===!0,r=n.dataPort,a=n.controlPort,c=e.signal,l=!1,p=null,d=null,u=null,f,h=()=>{if(!l){l=!0,c.removeEventListener("abort",h);for(let m of[()=>f?.close(),()=>d?.close(),()=>p?.close(),()=>u?.close(),()=>r.close(),()=>a.close()])try{m()}catch{}}};c.addEventListener("abort",h,{once:!0});try{if(u=jm(r,{...t,isCurrent:()=>!l&&!c.aborted}),d=Tm(a,{scope:t,generation:i},{signal:c,isCurrent:()=>!l,onClose:h,...s?{people:!0}:{}}),n.timerPort&&(f=new ja(zO(n.timerPort,{scope:t,generation:i},{signal:c,onClose:()=>{}}),{criteria:e.timerCriteria??[]})),p=await pr.connect({app:e.app,connector:u,reconnect:!1,signal:c,ledger:d.ledger}),l||c.aborted)throw p.close(),Zi("fenced");let m=s?Mm(p,d):void 0;return Object.freeze({client:p,resourceSetup:d.resourceSetup,...m?{people:m}:{},journal:d.journal,scope:t,setupMode:o,close:h,...f?{timers:f}:{},assess:(b,w)=>d.assess(b,w),setForeground:(b,w)=>d.setForeground(b,w)})}catch(m){throw h(),m}}var qU,TU,LU,jU,UU,zd,Zi,tc,tA=C(()=>{"use strict";Qn();yd();ry();ka();uw();B_();xC();sy();Hs();Ho();Um();$d();_d();qU=1e4,TU=12e4,LU=2e3,jU=15e3,UU=3,zd=class extends Error{constructor(t){super(`app web collection: ${t}`);this.reason=t;this.name="AppWebCollectionError"}reason},Zi=n=>new zd(n);tc=new WeakSet});function NU(n,e){return Object.freeze({collection:n,isCurrent:e,request:()=>Promise.reject(A("upgrade_required","People is not available for a Private collection opened by this app","people_unsupported"))})}var on,wy,DU,nc,nA=C(()=>{"use strict";tA();ne();fp();on=class extends Error{constructor(t){super("SDK application connection unavailable");this.code=t;this.name="ApplicationUiConnectionError"}code},wy=new WeakSet;DU=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,nc=class{app;signal;current=null;pending=null;opening=null;retiring=null;closing=null;epoch=0;timerCriteria;constructor(e,t,i=[]){this.app=Object.freeze({...e}),this.signal=t,this.timerCriteria=Object.freeze([...i]),t.addEventListener("abort",this.abort,{once:!0})}abort=()=>{this.close().catch(()=>{})};connection(e){let t=this.current?.public;return t?.id===e&&t.isCurrent()?t:null}owned(){return this.current?.public.isCurrent()?this.current.ui:null}adopt(e,t){let i=t.caller,o=t.isCurrent,s=[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]];if(s.some(y=>!(y instanceof MessagePort))||new Set(s).size!==s.length||s.some(y=>wy.has(y))){for(let y of new Set(s))y instanceof MessagePort&&!wy.has(y)&&(wy.add(y),y.close());return Promise.reject(new on("application_connection_binding"))}for(let y of s)wy.add(y);let r=y=>{for(let v of s)v.close();return Promise.reject(new on(y))};if(this.pending||this.current||this.retiring)return r("application_connection_busy");if(this.closing||this.signal.aborted||i.aborted||!o())return r("application_connection_fenced");let a=Object.freeze({...e.scope}),c=e.generation,l=e.displayName;if(e.schema!=="mdbn-app-collection/1"||Object.keys(a).sort().join()!=="account,collection,installation"||Object.values(a).some(y=>!DU.test(y)||y==="00000000-0000-0000-0000-000000000000")||typeof c!="string"||!c||c.length>256||typeof l!="string"||!l.trim()||new TextEncoder().encode(l).length>4096||!["inspect","approved-new","reconcile-original"].includes(e.setupMode))return r("application_connection_binding");let p=e.privateDevice===!0;if(e.privateDevice!==void 0&&(!p||e.people!==void 0))return r("application_connection_binding");if(e.people!==!0&&!p)return r("application_connection_people_unavailable");let d=Object.freeze({...e,scope:a,generation:c,displayName:l}),u=new AbortController,f=this.epoch;this.opening=u;let h=()=>u.abort();i.addEventListener("abort",h,{once:!0});let m=AbortSignal.any([this.signal,u.signal]),b=()=>!m.aborted&&!this.closing&&!this.retiring&&this.epoch===f&&o(),w=null,g=Promise.resolve().then(async()=>{if(!b()||i.aborted)throw new on("application_connection_fenced");if(w=await by(d,{app:this.app,signal:m,timerCriteria:this.timerCriteria}),!b()||i.aborted)throw new on("application_connection_fenced");if(w.client.collection!==a.collection||w.client.link!=="open")throw new on("application_connection_binding");if(p?w.people!==void 0:!w.people)throw new on(p?"application_connection_binding":"application_connection_people_unavailable");let y=w,v=w.people??new mr(y.client,NU(a.collection,()=>b()&&this.current?.ui===y&&y.client.link==="open")),_=Object.freeze({id:a.collection,scope:a,generation:c,displayName:l,records:y.client,files:y.client.files,people:v,...y.timers?{timers:y.timers}:{},isCurrent:()=>b()&&this.current?.ui===y&&y.client.link==="open"});return this.current={public:_,ui:y,lifetime:u},_}).catch(y=>{u.abort(),w?.close();for(let v of s)v.close();throw y}).finally(()=>{i.removeEventListener("abort",h),this.pending===g&&(this.pending=null,this.opening=null)});return this.pending=g,g}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.current,t=this.pending;this.opening?.abort(),e?.lifetime.abort();let i=Promise.resolve().then(async()=>{await t?.catch(()=>{}),e?.ui.close(),this.current===e&&(this.current=null)});return this.retiring=i,i.then(()=>{this.retiring===i&&(this.retiring=null)},()=>{}),i}close(){return this.closing?this.closing:(this.closing=Promise.resolve().then(()=>this.retire()),this.signal.removeEventListener("abort",this.abort),++this.epoch,this.opening?.abort(),this.current?.lifetime.abort(),this.closing)}}});function KU(n){if(n.capabilityContractVersion!==2)throw A("upgrade_required","unsupported readiness capability projection","readiness_capability_version");if(!Array.isArray(n.contracts)||n.contracts.length>128||!Array.isArray(n.requiredNativeCapabilities)||n.requiredNativeCapabilities.length>64)throw Bt("unsupported");let e=n.contracts.map(i=>{if(!i||!rc(i.id,256)||!rc(i.version,128)||!VU.test(i.digest))throw Bt("unsupported");return Object.freeze({id:i.id,version:i.version,digest:i.digest})}),t=n.requiredNativeCapabilities.map(i=>{if(!rc(i,128))throw Bt("unsupported");return i});if(new Set(e.map(i=>JSON.stringify([i.id,i.version]))).size!==e.length||new Set(t).size!==t.length||n.typeIssues!==void 0&&n.typeIssues!=="block"&&n.typeIssues!=="degrade")throw Bt("unsupported");return Object.freeze({capabilityContractVersion:2,typeIssues:n.typeIssues??"block",contracts:Object.freeze(e),requiredNativeCapabilities:Object.freeze(t)})}function WU(n){let e=n instanceof Map?n.get("path"):null;return typeof e=="string"&&e?e:null}function ic(n,e){return Object.freeze({reason:n,...n==="fenced"&&e?{detail:e}:{}})}function iA(n){if(!Q(n))return;let e=n.details instanceof Map?n.details.get("condition"):void 0,t=$U.find(i=>i===e);if(t)return t;if(n.code==="unauthenticated")return"read_unauthenticated";if(n.code==="cancelled")return"read_cancelled"}function rA(n){try{if(Q(n)){if(n.code==="unauthenticated"||n.code==="cancelled")return"fenced";if(n.code==="too_large")return"budget";if(n.code==="upgrade_required"||n.code==="forbidden")return"unsupported";if(n.reason==="readiness_changed"||n.reason==="cursor_stale"||n.reason==="cursor_expired")return"changed";if(n.reason==="readiness_busy")return"busy";if(n.reason==="readiness_catalog_response")return"catalog_response"}}catch{}return"unavailable"}function sA(n){let e=n.status;return JSON.stringify([e.mode,e.confirmedThrough,e.headKnown,e.pending,e.holds,e.unresolved,e.connection,e.installing,e.resyncing,e.incidents.map(t=>t.kind),e.confirmedHead])}function aA(n){return n.mode==="local_only"}function oc(n){return JSON.stringify(n,(e,t)=>typeof t=="bigint"?`${t}n`:t instanceof Map?[...t.entries()]:t instanceof Uint8Array?[...t]:t)}function xR(n,e,t){return new oA(n,e,t)}var $U,zU,BU,FU,PR,VU,rc,Bt,oA,lA=C(()=>{"use strict";ne();$U=["binding_invalid","binding_aborted","binding_not_current","readiness_closed","read_aborted","session_closed","session_replaced","session_collection_mismatch","read_unauthenticated","read_cancelled"],zU=4096,BU=2*1024*1024,FU=64,PR=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,VU=/^sha256:[0-9a-f]{64}$/,rc=(n,e=4096)=>typeof n=="string"&&!!n.trim()&&new TextEncoder().encode(n).length<=e,Bt=(n,e)=>A(n==="fenced"?"unauthenticated":n==="budget"?"too_large":"unavailable","collection readiness unavailable",{reason:`readiness_${n}`,...e?{details:new Map([["condition",e]])}:{}});oA=class{constructor(e,t,i){this.client=e;if(this.declared=KU(t),!PR.test(i.collection)||i.collection==="00000000-0000-0000-0000-000000000000"||!PR.test(i.generation))throw Bt("fenced","binding_invalid");this.binding=Object.freeze({collection:i.collection,generation:i.generation,signal:i.signal,isCurrent:i.isCurrent.bind(i)}),this.readSignal=AbortSignal.any([this.binding.signal,this.lifetime.signal]),this.check(),this.binding.signal.addEventListener("abort",this.abort,{once:!0})}client;declared;binding;lifetime=new AbortController;readSignal;listeners=new Set;snapshotValue=Object.freeze({checking:!1,assessment:null,problem:null});watch=null;stops=[];pending=null;epoch=0;dirty=!1;scheduled=!1;retries=0;failures=0;closed=!1;lastStatus=null;assessedSession;assessedEpoch;assessedCatalog=null;probing=null;probeAgain=!1;abort=()=>{this.close()};getSnapshot(){if(this.snapshotValue.assessment)try{this.check(void 0,this.assessedSession,this.assessedEpoch)}catch(e){let t=rA(e);t==="fenced"&&!this.closed&&!this.binding.signal.aborted&&this.binding.isCurrent()===!0&&(t="changed"),this.retryLater(t)||this.publish({checking:!1,assessment:null,problem:ic(t,iA(e))})}return this.snapshotValue}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e){this.snapshotValue=Object.freeze(e);for(let t of this.listeners)try{t()}catch{}}check(e,t,i){e?.throwIfAborted();let o=this.fenceDetail(e);if(o)throw Bt("fenced",o);if(t?.closed)throw Bt("fenced","session_closed");if(t&&t!==this.client.currentSession())throw Bt("fenced","session_replaced");if(t&&t.hello.collection!==this.binding.collection)throw Bt("fenced","session_collection_mismatch");if(i!==void 0&&(i!==this.epoch||this.watch?.state!=="active"))throw Bt("changed")}fenceDetail(e){if(this.binding.signal.aborted)return"binding_aborted";if(this.closed)return"readiness_closed";if(e?.aborted)return"read_aborted";if(this.binding.isCurrent()!==!0)return"binding_not_current"}invalidate=()=>{if(this.closed)return;if(this.pending||!this.snapshotValue.assessment||this.assessedCatalog===null||this.client.link!=="open"){this.recheck();return}if(this.probing){this.probeAgain=!0;return}let e=this.snapshotValue.assessment,t=this.assessedCatalog,i=this.client.describe(this.readSignal).then(o=>{this.closed||this.snapshotValue.assessment!==e||oc(o)!==t&&this.recheck()},()=>{this.closed||this.recheck()});this.probing=i.finally(()=>{this.probing=null,this.probeAgain&&!this.closed&&(this.probeAgain=!1,this.invalidate())})};recheck(){this.closed||(this.epoch++,this.dirty=!0,this.publish({checking:!0,assessment:null,problem:null}),this.schedule())}schedule(){if(this.closed||this.pending||this.scheduled||!this.dirty||this.watch?.state!=="active"||this.client.link!=="open")return;this.scheduled=!0;let e=()=>{this.scheduled=!1,!this.closed&&this.dirty&&!this.pending&&this.watch?.state==="active"&&this.client.link==="open"&&this.refresh(void 0,!0).catch(()=>{})};this.retries?setTimeout(e,Math.min(5e3,100*2**this.retries,this.retrySince===null?5e3:Math.max(0,15e3-(Date.now()-this.retrySince)))):queueMicrotask(e)}retrySince=null;retryLater(e,t=!1){if(this.closed)return!1;if((e==="busy"||e==="changed")&&(this.retrySince??=Date.now(),Date.now()-this.retrySince>=15e3))return this.dirty=!1,this.publish({checking:!1,assessment:null,problem:ic("busy_timeout")}),!0;if(e==="unavailable"&&t&&this.failures<5)this.failures++;else if(e!=="changed"&&e!=="busy")return!1;return this.dirty=!0,this.retries=Math.min(this.retries+1,6),this.publish({checking:!0,assessment:null,problem:null}),this.schedule(),!0}attach(){this.watch||(this.watch=this.client.watchChanges(void 0,this.invalidate),this.stops.push(this.watch.subscribe(this.invalidate),this.client.onLink(this.invalidate),this.client.onStatus(e=>{let t=sA(this.client);(t!==this.lastStatus||aA(e))&&(this.lastStatus=t,this.invalidate())})))}start(e){return this.refresh(e)}refresh(e,t=!1){try{if(this.check(e),this.pending)throw Bt("busy")}catch(a){return Promise.reject(a)}t||(this.retrySince=null);let i=AbortSignal.any([this.binding.signal,this.lifetime.signal,...e?[e]:[]]),o,s,r=Promise.resolve().then(async()=>{this.check(i),this.attach();let a=await this.client.readyForRead(i);this.check(i,a),await this.watch.ready,this.check(i,a);let c=this.epoch;this.dirty=!1,this.check(i,a,c);let l=await this.inventory(i,a,c),p=await this.client.describe(this.readSignal);this.check(i,a,c);let d=this.evaluate(p,a),u=oc(p);for(let b of d.paths){let w=l.find(y=>y.path===b);if(!w)throw Bt("changed");let g=await this.client.resources.get(b,this.readSignal);if(this.check(i,a,c),g.path!==w.path||g.revision!==w.revision||g.size!==w.size||g.state!=="confirmed")throw Bt("changed")}let f=await this.inventory(i,a,c);if(JSON.stringify(l)!==JSON.stringify(f))throw Bt("changed");this.check(i,a,c);let h=Object.freeze({collection:this.binding.collection,generation:this.binding.generation,resources:Object.freeze(f)}),m=Object.freeze({status:d.status,problem:d.reason?ic(d.reason):null,witness:h,...d.unavailable.length?{unavailableTypes:Object.freeze(d.unavailable)}:{}});return o=a,s=c,this.retries=0,this.failures=0,this.retrySince=null,this.assessedSession=a,this.assessedEpoch=c,this.assessedCatalog=u,this.publish({checking:!1,assessment:m,problem:m.problem}),this.check(i,a,c),m}).catch(a=>{let c=i.aborted||this.closed?"fenced":rA(a);throw this.retryLater(c,t)||this.publish({checking:!1,assessment:null,problem:ic(c,this.fenceDetail(i)??iA(a))}),a});return this.pending=r,this.publish({checking:!0,assessment:null,problem:null}),r.finally(()=>{this.pending===r&&(this.pending=null),this.schedule()}).catch(()=>{}),r.then(a=>{try{if(this.check(i,o,s),this.snapshotValue.assessment!==a)throw Bt("changed");return a}catch(c){let l=i.aborted?"fenced":rA(c);throw this.snapshotValue.assessment===a&&!this.retryLater(l)&&this.publish({checking:!1,assessment:null,problem:ic(l,this.fenceDetail(i)??iA(c))}),c}})}async inventory(e,t,i){let o=[],s=new Set,r,a="",c=0;for(let l=0;l<FU;l++){this.check(e,t,i);let p=await this.client.resources.list({text:!1,limit:128,...r?{cursor:r}:{},signal:this.readSignal});this.check(e,t,i);for(let d of p.resources){if(!rc(d.path)||d.path<=a||!rc(d.revision,128)||!Number.isSafeInteger(d.size)||d.size<0||d.state!=="confirmed")throw Bt("catalog_response");a=d.path;let u=Object.freeze({path:d.path,revision:d.revision,size:d.size,state:d.state});if(c+=new TextEncoder().encode(JSON.stringify(u)).length,o.length>=zU||c>BU)throw Bt("budget");o.push(u)}if(p.complete===!0&&p.cursor===void 0)return o;if(p.complete!==!1||!rc(p.cursor)||s.has(p.cursor))throw Bt("catalog_response");s.add(p.cursor),r=p.cursor}throw Bt("budget")}evaluate(e,t){let i=e.issues.filter(d=>d.severity==="error"),o=new Set;for(let d of i){let u=WU(d.details);if(!u)return{status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};o.add(u)}let s={status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};if(this.declared.requiredNativeCapabilities.some(d=>!t.hello.grant.capabilities.includes(d)))return{status:"incompatible",reason:"capability_missing",paths:[],unavailable:[]};let r=new Set,a=new Set,c=new Set;for(let d of e.contracts){let u=JSON.stringify([d.id,d.version]);if(a.has(u))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};a.add(u)}for(let d of e.types){if(c.has(d.name))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};c.add(d.name)}let l,p=[];for(let d of this.declared.contracts){let u=e.contracts.find(f=>f.id===d.id&&f.version===d.version);if(!u){l??="contract_missing";continue}if(u.digest!==d.digest)return{status:"incompatible",reason:"contract_mismatch",paths:[],unavailable:[]};if(r.add(u.path),o.has(u.path))return s;if(!u.implementedBy.length){l??="implementation_missing";continue}for(let f of u.implementedBy){let h=e.types.find(m=>m.name===f);if(!h||!h.implements.some(m=>m.contract===d.id&&m.version===d.version))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};if(r.add(h.path),o.has(h.path)){if(this.declared.typeIssues!=="degrade")return s;p.some(m=>m.name===h.name)||p.push(Object.freeze({name:h.name,path:h.path,contract:Object.freeze({id:d.id,version:d.version}),problem:Object.freeze({code:"readiness_type_invalid"})}))}}}return{status:l?"setup_required":"ready",...l?{reason:l}:{},paths:[...r].sort(),unavailable:p}}async close(){if(!this.closed){this.closed=!0,this.dirty=!1,this.lifetime.abort(),this.binding.signal.removeEventListener("abort",this.abort);for(let e of this.stops.splice(0))e();this.watch?.(),this.watch=null,this.publish({checking:!1,assessment:null,problem:ic("fenced",this.fenceDetail())})}await this.pending?.catch(()=>{})}}});function GU(n){let e=o=>o?Object.freeze({code:`readiness_${o.reason}`,...o.detail?{detail:o.detail}:{}}):null,t=e(n.problem),i=n.assessment?.unavailableTypes;return Object.freeze({checking:n.checking,assessment:n.assessment?Object.freeze({status:n.assessment.status,problem:e(n.assessment.problem),...i?.length?{unavailableTypes:i}:{}}):null,problem:t})}var IR,HU,Bd,Er,vy,CR=C(()=>{"use strict";vp();ne();lA();IR=["configuration","files"],HU=["people","notifications"],Bd=class extends Error{constructor(t,i){super("SDK application readiness unavailable");this.code=t;this.detail=i;this.name="ApplicationReadinessError"}code;detail},Er=(n,e=!1,t)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n,...t?{detail:t}:{}}):null});vy=class{connection;signal;observed;native;sources;listeners=new Set;stops=[];pending=null;closing=null;checking=!1;closed=!1;advisory=Promise.resolve();lastReady=null;constructor(e){this.connection=e.connection,this.signal=e.signal,this.observed=e.isCurrent,this.sources=Object.freeze({configuration:e.configuration,files:e.files,people:e.people,notifications:e.notifications}),this.native=e.nativeRequirements?xR(this.connection.records,e.nativeRequirements,{collection:this.connection.id,generation:this.connection.generation,signal:this.signal,isCurrent:()=>this.current()}):null,this.native&&this.stops.push(this.native.subscribe(this.changed));for(let t of Object.values(this.sources))t&&this.stops.push(t.subscribe(this.changed));this.signal.addEventListener("abort",this.abort,{once:!0})}fenceDetail(){try{return this.signal.aborted?"scope_aborted":this.closed?"scope_closed":this.observed()!==!0?"observer_not_current":this.connection.isCurrent()?this.connection.records.collection!==this.connection.id?"collection_mismatch":null:"connection_not_current"}catch{return"currentness_check_failed"}}current(){return this.fenceDetail()===null}connectionProblem(){if(!this.closed&&!this.signal.aborted&&this.connection.records.collection===this.connection.id&&this.connection.records.link==="closed"){let e=this.connection.records.linkProblem;if(Q(e)){let t=Rs(e);return t&&t.key!=="unknown"?t.key:e.code}}return"readiness_fenced"}changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getSnapshot(){let e=this.current(),t=Er(e?"readiness_unsupported":"readiness_fenced"),i=t;if(e&&this.native){let u=this.native.getSnapshot(),f=u.assessment?.witness,h=f&&f.collection!==this.connection.id?"native_witness_collection_mismatch":f&&f.generation!==this.connection.generation?"native_witness_generation_mismatch":null;i=h?Er("readiness_fenced",!1,h):GU(u)}let o=u=>{if(!e)return t;let f=this.sources[u];if(!f)return Er(`${u}_unsupported`);try{let h=f.getSnapshot();return Object.freeze({checking:h.checking,assessment:h.assessment?Object.freeze({...h.assessment,problem:h.assessment.problem?Object.freeze({...h.assessment.problem}):null}):null,problem:h.problem?Object.freeze({...h.problem}):null})}catch{return Er(`${u}_unavailable`)}},s=Object.freeze({capabilities:i,contracts:i,configuration:o("configuration"),files:o("files"),people:o("people"),notifications:o("notifications")}),r=[s.capabilities,s.contracts,s.configuration,s.files],a=e&&(this.checking||r.some(u=>u.checking)),c=null,l=null;if(!e)l=Object.freeze({code:"readiness_fenced"});else if(!a){let u=["capabilities","contracts",...IR].find(f=>s[f].problem);if(l=u?s[u].problem:null,u&&l?.code==="readiness_fenced"&&!l.detail&&(l=Object.freeze({...l,detail:`${u}_facet`})),r.every(f=>f.assessment!==null)){let f=r.find(w=>w.assessment?.status==="incompatible"),h=r.find(w=>w.assessment?.status==="setup_required"),m=f??h,b=i.assessment?.unavailableTypes;c=Object.freeze({status:f?"incompatible":h?"setup_required":"ready",problem:m?.assessment?.problem??null,...b?.length?{unavailableTypes:b}:{}})}}let p=this.fenceDetail();if(p)return this.lastReady=null,Object.freeze({checking:!1,assessment:null,problem:Object.freeze({code:this.connectionProblem(),detail:p}),facets:Object.freeze({capabilities:Er("readiness_fenced",!1,p),contracts:Er("readiness_fenced",!1,p),configuration:Er("readiness_fenced",!1,p),files:Er("readiness_fenced",!1,p),people:Er("readiness_fenced",!1,p),notifications:Er("readiness_fenced",!1,p)})});let d=!l||/_(changed|busy)$/.test(l.code);if(l===null&&c!==null&&!a)this.lastReady=Object.freeze({checking:a,assessment:c,problem:l,facets:s});else{if(this.lastReady&&d&&(a||c===null)&&(this.lastReady.assessment?.status==="ready"||!this.checking))return Object.freeze({...this.lastReady,facets:s});this.lastReady=null}return Object.freeze({checking:a,assessment:c,problem:l,facets:s})}refresh(e={}){let t=e.signal,i=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(i)return Promise.reject(new Bd("application_readiness_fenced",i));if(this.pending)return Promise.reject(new Bd("application_readiness_busy"));this.checking=!0;let o=Promise.resolve().then(async()=>{if(!this.current())return this.getSnapshot();await this.advisory,this.native&&await this.native.start();for(let s of IR){let r=this.sources[s];if(!this.current())break;r&&await r.refresh()}return await this.reassessAfterSetup(),this.getSnapshot()}).finally(()=>{if(this.pending!==o)return;this.pending=null,this.checking=!1;let s=(async()=>{for(let r of HU){let a=this.sources[r];if(!this.current())break;a&&await a.refresh().catch(()=>{})}})();this.advisory=s,this.changed()}).then(()=>this.getSnapshot());return this.pending=o,this.changed(),o.then(s=>{let r=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(r)throw new Bd("application_readiness_fenced",r);return s})}async reassessAfterSetup(){if(!this.native||!this.current())return;let e=this.native.getSnapshot(),t=null;try{t=this.sources.configuration?.getSnapshot()??null}catch{}e.checking||e.assessment?.status!=="setup_required"||t?.checking||t?.assessment?.status!=="ready"||await this.native.start().catch(i=>{if(!(Q(i)&&i.reason==="readiness_busy"))throw i})}close(){return this.closing?this.closing:(this.closed=!0,this.checking=!1,this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{for(let e of this.stops.splice(0))e();for(let e of Object.values(this.sources))await e?.close();await this.native?.close(),await this.pending?.catch(()=>{}),await this.advisory,this.listeners.clear()}),this.changed(),this.closing)}}});function YU(n){let e=new Set,t=[],i=[];for(let o of n.review?.packs??[]){if(o.status!=="conflict"&&o.status!=="downgrade")continue;let s=o.installedVersion?Es(o.installedVersion,o.version):"unknown";s==="installed_newer"&&!o.resources.some(r=>r.action==="conflict")?(e.add(o.id),i.push(Object.freeze({id:o.id,version:o.version,installedVersion:o.installedVersion}))):s==="installed_newer_major"&&t.push(o.id)}return Object.freeze({kept:Object.freeze(i),compatible:e,major:Object.freeze(t)})}function JU(n,e){let t=n,i=t.provisions?.type_packs;return!e.size||!Array.isArray(i)?n:{...t,provisions:{...t.provisions,type_packs:i.filter(o=>!(typeof o?.manifest?.id=="string"&&e.has(o.manifest.id)))}}}function RR(n){return new Proxy({},{get(e,t){let i=Reflect.get(n,t,n);return typeof i!="function"?i:async(...o)=>{let s=o.find(a=>a instanceof AbortSignal),r=Date.now()+XU;for(let a=25;;a=Math.min(a*2,500))try{return await i.apply(n,o)}catch(c){if(!(c instanceof Ri&&c.reason==="busy")||!s)throw c;if(Date.now()+a>r)throw He("busy_timeout");await ZU(a,s)}}}})}function MR(n,e){let t=Object.freeze({...n,scope:Object.freeze({...n.scope}),journal:RR(n.journal)});if(e&&(e=RR(e)),Object.values(t.scope).some(N=>!OR.test(N)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(N))||!OR.test(t.generation)||!["inspect","approved-new","reconcile-original"].includes(t.setupMode))throw He("binding");let i=JSON.stringify([t.scope.account,t.scope.installation,t.scope.collection]),o=new AbortController,s=AbortSignal.any([t.signal,o.signal]),r=new Set,a=ro(),c=null,l=null,p=!1,d,u=null,f=!1,h=!1,m=0,b=!1,w=!1,g=null,y=null,v=()=>{try{return JSON.stringify([t.client.link,sA(t.client)])}catch{return null}},_=[],k=new WeakMap;function S(N,G){if(N?.throwIfAborted(),p||s.aborted||t.isCurrent()!==!0||JSON.stringify([t.journal.scope.account,t.journal.scope.installation,t.journal.scope.collection])!==i||G&&(G.closed||t.client.currentSession()!==G||G.hello.collection!==t.scope.collection))throw He("fenced")}function x(N){a=Object.freeze(N);for(let G of r)try{G()}catch{}}function P(){if(p)return;let N=v();if(N!==null&&N===y)return;if(y=N,c||!a.assessment||u===null||t.client.link!=="open"){I();return}if(f){h=!0;return}f=!0;let G=a,F=u;t.client.describe(s).then(Y=>{!p&&a===G&&oc(Y)!==F&&I()},()=>{p||I()}).finally(()=>{f=!1,h&&!p&&(h=!1,y=null,P())})}function I(){p||(b=!0,c||x(ro(null,!0)),R())}function R(){p||c||w||!b||(w=!0,setTimeout(()=>{if(w=!1,p||c||!b)return;let N=ee(!1,{},void 0,!0);g=c,N.catch(()=>{})},m?Math.min(5e3,250*2**m):50))}function O(){if(a.assessment)try{S(void 0,d)}catch{p||s.aborted||t.isCurrent()!==!0?x(ro("configuration_fenced")):(b=!0,y=null,x(ro(null,!0)),R())}return a}async function q(N,G,F){let Y=await t.client.awaitReceipt(N.mutationId,12e4,s);if(S(G,F),Y.mutation!==N.mutationId||Y.state!=="confirmed"||Y.status!=="applied"||(Y.conflicts?.length??0)!==0||Y.published==="publishing"||Y.published==="not_published")throw He("recovery_required");return Y}async function j(N,G,F){let Y,we=0,Pe=0,ve=new Set,lt=new Set,De=new TextEncoder;for(let Gt=0;Gt<64;Gt++){S(G,F);let ct=await t.client.resources.list({text:!1,limit:128,...Y===void 0?{}:{cursor:Y},signal:s});if(S(G,F),ct.resources.length>128)throw He("recovery_required");for(let Je of ct.resources){let nr=De.encode(Je.path).length;if(we++,Pe+=nr+128,!Je.path||nr>4096||lt.has(Je.path)||Je.state!=="confirmed"||!cA.test(Je.revision)||!Number.isSafeInteger(Je.size)||Je.size<0||we>4096||Pe>2*1024*1024||N.has(Je.path))throw He("recovery_required");lt.add(Je.path)}if(ct.complete===!0&&ct.cursor===void 0)return;if(ct.complete!==!1||!ct.resources.length||typeof ct.cursor!="string"||!ct.cursor||De.encode(ct.cursor).length>4096||ve.has(ct.cursor))throw He("recovery_required");ve.add(ct.cursor),Y=ct.cursor}throw He("recovery_required")}async function z(N,G,F){let Y=N.version===2?N.plan.readback:N.plan.resourceReadback,we=new Set(Y.filter(Pe=>Pe.doc===null).map(Pe=>Pe.path));we.size&&await j(we,G,F);for(let Pe of Y){if(Pe.doc===null)continue;let ve=await t.client.resources.get(Pe.path,s);if(S(G,F),ve.path!==Pe.path||ve.text!==Pe.doc||ve.state!=="confirmed")throw He("recovery_required")}if(N.version!==2)for(let Pe of N.plan.sources){let ve=await t.client.get(Pe.id,void 0,s);if(S(G,F),ve.id!==Pe.id||ve.path!==Pe.path||ve.state.state!=="confirmed"||ve.state.hold||ve.state.unresolved)throw He("recovery_required")}}async function D(N,G,F){return await q(N,G,F),N.phase==="attempted"&&(N=N.version===2?await t.journal.recordConfirmed(N.mutationId,s):await t.journal.recordResourceConfirmed(N.mutationId,s),S(G,F)),N.phase==="verified"||(await z(N,G,F),N.phase==="confirmed"&&(N=N.version===2?await t.journal.recordVerified(N.mutationId,s):await t.journal.recordResourceVerified(N.mutationId,s),S(G,F))),N}async function J(N,G){let F=await t.journal.load(s);if(S(N,G),!F)return{journaled:!1,previous:null};if(F=Ht(F,t.scope),F.version===1||F.phase==="prepared")throw He("recovery_required");if(F.phase==="attempted"&&(F.version===3||F.version===4)&&t.journal.recordResourceRejected){let Y=await t.client.awaitReceipt(F.mutationId,12e4,s);S(N,G),Y.mutation===F.mutationId&&Y.state==="rejected"&&(F=Ht(await t.journal.recordResourceRejected(F.mutationId,s),t.scope),S(N,G))}if(F.version===1)throw He("recovery_required");return F.phase==="rejected"?{journaled:!0,previous:F.version===4?F.previous:null}:{journaled:!0,previous:await D(F,N,G)}}async function X(N,G){let F=t.compiledManifest.manifest,Y=await pA(e.assess(F,s,N),N),we=Y;Y.status==="conflict"&&!Y.review&&(we=await e.assess(F,s,Oi({})));let Pe=YU(we);if(!Pe.compatible.size)return{assessed:Y,manifest:F,newer:Pe};let ve=JU(F,Pe.compatible),lt=G?N??Oi({}):N;return Y=await pA(e.assess(ve,s,lt),lt),{assessed:Y,manifest:ve,newer:Pe}}async function B(N,G,F={}){S(G);let Y=await t.client.readyForRead(s);S(G,Y),_.length||(y=v(),_.push(t.client.onStatus(Mr=>{aA(Mr)&&(y=null),P()}),t.client.onLink(P))),b=!1;let{journaled:we,previous:Pe}=await J(G,Y);if(!e)throw He("unsupported");let ve=null;try{ve=oc(await t.client.describe(s))}catch{}S(G,Y);let lt=await X(F.decisions,!1),De=lt.assessed,Gt=lt.manifest;if(S(G,Y),!cA.test(De.assessmentDigest)||!["current","provision","conflict"].includes(De.status))throw He("response");if(F.expected!==void 0&&De.assessmentDigest!==F.expected)throw dA();let ct=!we&&t.setupMode==="approved-new";if(De.status==="provision"&&(N||ct)){if(t.setupMode==="reconcile-original")throw He("recovery_required");if(!(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack"))||!Y.hello.grant.capabilities.includes("definitions.manage"))throw He("not_authorized");let Mr=F.records??[];if(Mr.length&&!Y.hello.grant.capabilities.includes("records.create"))throw He("not_authorized");let so=$t(await pA(e.apply(Gt,De.assessmentDigest,s,F.decisions),F.decisions));if(S(G,Y),so.assessmentDigest!==De.assessmentDigest)throw He("response");if(so.sources.length)throw He("unsupported_source_provision");let Ei=Mr.length?$t({...so,sources:Mr.map(jt=>({id:crypto.randomUUID(),path:jt.path,document:jt.document}))}):so,Yt;if(Pe){if(!t.journal.prepareResourceRound)throw He("recovery_required");Yt=await t.journal.prepareResourceRound(Ei,Pe.mutationId,s)}else Yt=await t.journal.prepareResources(Ei,s);if(S(G,Y),Yt=Ht(Yt,t.scope),Yt.version!==3&&Yt.version!==4||Yt.phase!=="prepared"||JSON.stringify(Yt.plan)!==JSON.stringify(Ei))throw He("recovery_required");let ao=Ht(await t.journal.recordResourceAttempt(Yt.mutationId,s),t.scope);if(S(G,Y),ao.version!==3&&ao.version!==4||ao.mutationId!==Yt.mutationId||ao.phase!=="attempted"||JSON.stringify(ao.plan)!==JSON.stringify(Ei))throw He("recovery_required");let ke=[...Ei.resourceOps,...Ei.sources.map(jt=>({kind:"create",id:jt.id,path:jt.path,document:jt.document}))],Me=await t.client.submit(ke,{mutationId:Yt.mutationId,wait:"confirmed",signal:s});if(S(G,Y),Me.length!==1||Me[0].mutationId!==Yt.mutationId)throw He("recovery_required");let nt;try{nt=await Me[0].confirmed}catch(jt){throw S(G,Y),Me[0].receipt.state!=="rejected"||!t.journal.recordResourceRejected?jt:(await t.journal.recordResourceRejected(Yt.mutationId,s),S(G,Y),dA(Yt.mutationId,jt))}if(S(G,Y),nt.state!=="confirmed"||nt.status!=="applied"||(nt.conflicts?.length??0)!==0)throw He("recovery_required");await D(ao,G,Y),b=!1,y=v();try{ve=oc(await t.client.describe(s))}catch{ve=null}if(De=await e.assess(Gt,s),S(G,Y),De.status!=="current"||!cA.test(De.assessmentDigest))throw He("recovery_required")}let Je=De.status==="conflict"?lt.newer.major.length?"installed_newer":"configuration_conflict":null,nr=Je?Object.freeze({code:Je}):null,la=Object.freeze({status:De.status==="current"?"ready":De.status==="conflict"?"incompatible":"setup_required",problem:nr});d=Y,u=ve;let ai=Object.freeze({checking:!1,assessment:la,problem:nr});return m=0,x(b?ro(null,!0):ai),S(G,Y),ai}function ae(N={}){try{S(N.signal)}catch(Y){return Promise.reject(Y)}let G=c,F=(G?G.then(()=>{},()=>{}):Promise.resolve()).then(()=>te(N));return c=F,F.finally(()=>{c===F&&(c=null)}).catch(()=>{}),F}async function te(N){let G=Jm(N.records),F=Oi(N.adopt===void 0?{}:{adopt:N.adopt}),Y=AbortSignal.any([s,...N.signal?[N.signal]:[]]),we=await t.client.readyForRead(s);if(S(Y,we),await J(Y,we),!e)throw He("unsupported");let{assessed:Pe,newer:ve}=await X(F,!0);if(S(Y,we),!Pe.review)throw He("response");let lt=[];if(Pe.status!=="current")for(let ct of G){let Je=await t.client.find({path:ct.path},void 0,s);S(Y,we),lt.push({path:ct.path,free:Je===null})}let De=we.hello.grant.capabilities,Gt=xd(Pe,{records:lt,canManage:De.includes("definitions.manage")&&(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack")),canCreateRecords:De.includes("records.create"),newer:ve});return k.set(Gt,Object.freeze({decisions:F,records:G.filter(ct=>lt.some(Je=>Je.path===ct.path&&Je.free))})),Gt}function ee(N,G={},F,Y=!1){try{S(G.signal)}catch(ve){return Promise.reject(ve)}if(c&&c===g){let ve=c;return ve.then(()=>{},()=>{}).then(()=>c&&c!==ve?Promise.reject(He("busy")):ee(N,G,F))}if(c)return Promise.reject(He("busy"));let we=AbortSignal.any([s,...G.signal?[G.signal]:[]]),Pe=Promise.resolve().then(()=>B(N,we,F)).catch(ve=>{let lt=s.aborted||we.aborted,De=Q(ve)&&ve.reason==="configuration_busy_timeout";De&&(b=!1);let Gt=!lt&&!De&&(b||ER(ve));throw Gt&&ER(ve)&&(b=!0,m=Math.min(m+1,4)),!lt&&!De&&!b&&Y&&m<5&&!p&&t.isCurrent()===!0&&(m++,b=!0,Gt=!0),x(Gt?ro(null,!0):ro(lt?"configuration_fenced":De?"configuration_busy_timeout":"configuration_unavailable")),ve});return c=Pe,x(ro(null,!0)),Pe.finally(()=>{c===Pe&&(c=null),g===Pe&&(g=null),R()}).catch(()=>{}),Pe.then(ve=>(S(we,d),ve))}let le=()=>{if(!l){p=!0,t.signal.removeEventListener("abort",ge),o.abort();for(let G of _.splice(0))G();x(ro("configuration_fenced"));let N=c;l=Promise.resolve().then(async()=>{await N})}return l},ge=()=>{le().catch(()=>{})};return t.signal.addEventListener("abort",ge,{once:!0}),Object.freeze({getSnapshot:O,subscribe(N){return r.add(N),()=>{r.delete(N)}},assess:N=>ee(!1,N),configure:N=>ee(!0,N),plan:ae,async apply(N,G={}){let F=k.get(N);if(!F)throw new TypeError("setup.apply needs a plan returned by setup.plan");if(N.refusal)throw A(N.refusal.code==="setup_conflict"?"conflict":N.refusal.code==="installed_newer"?"upgrade_required":"forbidden",N.refusal.message,N.refusal.code);if(N.status==="current"){await ee(!1,G,{decisions:F.decisions,expected:N.digest});return}await ee(!0,G,{decisions:F.decisions,expected:N.digest,records:F.records})},close:le})}var OR,cA,He,dA,pA,XU,ZU,ER,ro,qR=C(()=>{"use strict";ne();Hs();lA();Ho();Kf();Xm();OR=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,cA=/^sha256:[0-9a-f]{64}$/,He=n=>A("unavailable","application configuration unavailable",`configuration_${n}`),dA=(n,e)=>new pe(A("conflict","This collection changed since the setup was reviewed. Review it again.","setup_changed").toProblem(),{...n?{mutationId:n}:{},...e===void 0?{}:{cause:e}}),pA=async(n,e)=>{try{return await n}catch(t){throw e?.adopt&&Object.keys(e.adopt).length&&Q(t,"unavailable")&&t.reason==="resource_setup_unavailable"?dA(void 0,t):t}};XU=15e3,ZU=(n,e)=>new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})});ER=n=>Q(n)&&n.reason==="configuration_busy",ro=(n=null,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n}):null})});function TR(n){return{issuer:n.issuer,subject:n.subject,name:n.name,...n.accountId===void 0?{}:{account_id:n.accountId}}}function LR(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.people,c=n.isCurrent.bind(n),l=typeof a?.current=="function"?a.current.bind(a):void 0,p=typeof a?.members=="function"?a.members.bind(a):void 0,d=new Set,u=ra(null),f=!1,h=!1,m=null;function b(){try{return f||r.aborted||c()!==!0?!1:!f&&!r.aborted&&n.scope===e&&n.generation===s&&n.signal===r&&n.people===a&&!!s&&s.length<=256&&[t,i,o].every(k=>typeof k=="string"&&!!k&&k.length<=128)&&e.account===t&&e.installation===i&&e.collection===o}catch{return!1}}function w(k){u=b()?k:oo;for(let S of[...d])try{S()}catch{}b()||(u=oo)}function g(){return b()||(u=oo),u}function y(){if(!f){f=!0,r.removeEventListener("abort",y),u=oo;for(let k of[...d])try{k()}catch{}d.clear()}}r.addEventListener("abort",y,{once:!0}),r.aborted&&y();function v(k,S){return!b()||S?.aborted?Promise.reject(Fd()):new Promise((x,P)=>{let I=!1,R=(j,z)=>{I||(I=!0,S?.removeEventListener("abort",O),r.removeEventListener("abort",O),d.delete(q),z!==void 0?P(z):x(j))},O=()=>R(void 0,Fd()),q=()=>{b()||O()};d.add(q),S?.addEventListener("abort",O,{once:!0}),r.addEventListener("abort",O,{once:!0}),k.then(()=>{!b()||S?.aborted?O():R(g())},()=>R(void 0,Fd())),(!b()||S?.aborted)&&O()})}function _(k={}){let S=k.signal;if(!b()||S?.aborted)return Promise.reject(Fd());if(m)return Promise.reject(A("unavailable","People readiness READ is occupied","people_readiness_busy"));let x=Promise.resolve().then(async()=>{if(!b())return oo;if(!l||!p)return ra("people_unsupported");try{let I=await l({signal:r});if(!b()||($l("identity",{...TR(I),...I.personSettingsUrl===void 0?{}:{person_settings_url:I.personSettingsUrl}}),!b()))return oo;let R=await p({signal:r});return b()?!Array.isArray(R)||R.length>1e3?ra("people_response"):($l("members",{members:Array.from(R,O=>({...TR(O),role:O.role}))}),b()?QU:oo):oo}catch{return ra(b()?"people_unavailable":"people_fenced")}});m=x,w(ra(null,!0));let P=x.then(I=>(w(I),g()),()=>(w(ra("people_unavailable")),g())).finally(()=>{m===x&&(m=null)});return v(P,S)}return Object.freeze({getSnapshot:g,subscribe(k){return f?()=>{}:(d.add(k),()=>{d.delete(k)})},start(k={}){return h?v(m??Promise.resolve(g()),k.signal):!b()||k.signal?.aborted?Promise.reject(Fd()):(h=!0,_(k))},refresh:_,close:y})}var ra,oo,QU,Fd,jR=C(()=>{"use strict";_d();ne();ra=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:Object.freeze({code:n})}),oo=ra("people_fenced"),QU=Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),Fd=()=>A("cancelled","People readiness ended","people_readiness_fenced")});function _y(n){if(!n||!Array.isArray(n.criteria))return Object.freeze([]);let e=n.criteria.filter(t=>t?.event?.id===Xh.id&&t.event.version===Xh.version&&t.event.digest===Xh.digest).map(t=>t.id);return Object.freeze([...new Set(e)])}var uA=C(()=>{"use strict";ed()});function UR(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.isCurrent.bind(n),c=n.notifications,l=c?.declaration,p=c?.timerNamespace,d=n.timers,u=typeof d?.list=="function"?d.list.bind(d):void 0,f=new Set,h=Qi(null),m=!1,b=!1,w=null;function g(){try{return m||r.aborted||a()!==!0?!1:!m&&!r.aborted&&n.signal===r&&n.scope===e&&n.generation===s&&!!s&&s.length<=256&&[t,i,o].every(x=>typeof x=="string"&&!!x&&x.length<=128)&&e.account===t&&e.installation===i&&e.collection===o&&n.notifications===c&&c?.declaration===l&&c?.timerNamespace===p&&n.timers===d}catch{return!1}}function y(x){h=g()?x:Ay;for(let P of[...f])try{P()}catch{}g()||(h=Ay)}function v(){return g()||(h=Ay),h}function _(){if(!m){m=!0,r.removeEventListener("abort",_),h=Ay;for(let x of[...f])try{x()}catch{}f.clear()}}r.addEventListener("abort",_,{once:!0}),r.aborted&&_();function k(x,P){return!g()||P?.aborted?Promise.reject(Vd()):new Promise((I,R)=>{let O=!1,q=(D,J)=>{O||(O=!0,P?.removeEventListener("abort",j),r.removeEventListener("abort",j),f.delete(z),J!==void 0?R(J):I(D))},j=()=>q(void 0,Vd()),z=()=>{g()||j()};f.add(z),P?.addEventListener("abort",j,{once:!0}),r.addEventListener("abort",j,{once:!0}),x.then(()=>{!g()||P?.aborted?j():q(v())},()=>q(void 0,Vd())),(!g()||P?.aborted)&&j()})}function S(x={}){let P=x.signal;if(!g()||P?.aborted)return Promise.reject(Vd());if(w)return Promise.reject(A("unavailable","Notification readiness READ is occupied","notification_readiness_busy"));let I=Promise.resolve().then(async()=>{if(!g())return Qi("notifications_fenced");if(l===null&&c&&Object.hasOwn(c,"declaration"))return Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null});if(!u&&_y(l).length)return Qi("notifications_consent_required");if(!l||typeof l!="object"||!u||typeof p!="string"||!/^[A-Za-z0-9._-]{1,64}$/.test(p))return Qi("notifications_unsupported");try{let O=await u(p,{signal:r});return g()?!O||O.namespace!==p||!Array.isArray(O.timers)||O.timers.length>1e4?Qi("notifications_response"):Qi("notifications_unsupported"):Qi("notifications_fenced")}catch{return Qi(g()?"notifications_unavailable":"notifications_fenced")}});w=I,y(Qi(null,!0));let R=I.then(O=>(y(O),v()),()=>(y(Qi("notifications_unavailable")),v())).finally(()=>{w===I&&(w=null)});return k(R,P)}return Object.freeze({getSnapshot:v,subscribe(x){return m?()=>{}:(f.add(x),()=>{f.delete(x)})},start(x={}){return b?k(w??Promise.resolve(v()),x.signal):!g()||x.signal?.aborted?Promise.reject(Vd()):(b=!0,S(x))},refresh:S,close:_})}var eN,Qi,Ay,Vd,NR=C(()=>{"use strict";ne();uA();eN=n=>Object.freeze({code:n}),Qi=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:eN(n)}),Ay=Qi("notifications_fenced"),Vd=()=>A("cancelled","Notification readiness ended","notification_readiness_fenced")});function zR(n){let e=new Set,t=!1,i=()=>{if(t||!n.isCurrent())return DR;let s=n.declaration;if(!s)return fA;let r;try{r=n.grant()}catch{return tN}return r?s.required.some(a=>!r.actions.includes(a))?$R("files_access_missing"):n.scope==="collection"&&r.scope.kind!=="collection"?$R("files_scope_missing"):fA:fA},o=i();return Object.freeze({getSnapshot:()=>t||!n.isCurrent()?DR:o,subscribe(s){return t?()=>{}:(e.add(s),()=>{e.delete(s)})},async refresh(){let s=i();if(s!==o){o=s;for(let r of[...e])try{r()}catch{}}return o},close(){t=!0,e.clear()}})}var ky,fA,DR,tN,$R,BR=C(()=>{"use strict";ky=n=>Object.freeze(n),fA=ky({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),DR=ky({checking:!1,assessment:null,problem:Object.freeze({code:"files_fenced"})}),tN=ky({checking:!1,assessment:null,problem:Object.freeze({code:"files_unavailable"})}),$R=n=>ky({checking:!1,assessment:Object.freeze({status:"incompatible",problem:Object.freeze({code:n})}),problem:null})});var Sy,FR=C(()=>{"use strict";nA();CR();qR();jR();NR();uA();Kc();Km();BR();Sy=class{constructor(e,t,i,o="block",s=()=>[]){this.typeIssues=o;this.consented=s;this.compiled=e,this.signal=i,this.ui=new nc(t,i,_y(this.compiled.manifest.notifications)),i.addEventListener("abort",this.abort,{once:!0})}typeIssues;consented;ui;signal;compiled;listeners=new Set;selected=null;epoch=0;opening=null;retiring=null;closing=null;changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}connection(e){return this.ui.connection(e)}getReadiness(){return this.selected?.readiness.getSnapshot()??null}selectedId(){return this.selected?.connection.id??null}adopt(e,t,i){let o=this.epoch,s=()=>!this.signal.aborted&&!this.closing&&!this.retiring&&this.epoch===o&&i(),r=!!this.opening||!!this.selected||!!this.retiring||!!this.closing,a=this.ui.adopt(e,{caller:t,isCurrent:s});if(r)return a;let c=null,l=[],p=a.then(d=>{if(!s()||t.aborted)throw new on("application_connection_fenced");let u=this.ui.owned();if(!u)throw new on("application_connection_binding");let f=Fm(this.compiled);f&&xk(d.files,XC(f,()=>this.consented(d.id)));let h=new AbortController,m=AbortSignal.any([this.signal,h.signal]);c=h;let b=()=>s()&&d.isCurrent(),w={scope:d.scope,generation:d.generation,signal:m,isCurrent:b},g=MR({client:d.records,compiledManifest:this.compiled,journal:u.journal,...w,setupMode:u.setupMode},u.resourceSetup);l.push(()=>g.close());let y={getSnapshot:g.getSnapshot,subscribe:g.subscribe,refresh:g.assess,close:g.close},v=LR({people:d.people,...w});l.push(()=>v.close());let _=this.compiled.manifest.notifications,k=UR({notifications:{declaration:_?.criteria?.length?_:null},timers:d.timers,...w});l.push(()=>k.close());let S=this.compiled.manifest.requirements.files?.scope?.kind,x=zR({declaration:f,scope:typeof S=="string"?S:null,grant:()=>d.files.grant,isCurrent:b});l.push(()=>x.close());let P=this.compiled.nativeCapabilities?{...this.compiled.nativeCapabilities,contracts:this.compiled.manifest.requirements.contracts,typeIssues:this.typeIssues}:null,I=new vy({connection:d,nativeRequirements:P,signal:m,isCurrent:b,configuration:y,files:x,people:v,notifications:k}),R=I.subscribe(this.changed);return this.selected={connection:d,lifetime:h,readiness:I,configuration:g,unsubscribe:R},c=null,l.length=0,this.changed(),d}).catch(async d=>{c?.abort();let f=(await Promise.allSettled([this.ui.retire(),...l.map(h=>Promise.resolve().then(h))])).find(h=>h.status==="rejected");throw f?.status==="rejected"?f.reason:d}).finally(()=>{this.opening===p&&(this.opening=null)});return this.opening=p,p}assess(e={}){return!this.selected||!this.selected.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new on("application_connection_fenced")):this.selected.readiness.refresh(e)}async configure(e={}){let t=this.selected,i=this.epoch;if(!t||!t.connection.isCurrent()||this.retiring||this.closing)throw new on("application_connection_fenced");if(await t.configuration.configure(e),e.signal?.aborted||this.epoch!==i||this.selected!==t||!t.connection.isCurrent())throw new on("application_connection_fenced");return t.readiness.refresh(e)}planSetup(e={}){let t=this.selected;return!t||!t.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new on("application_connection_fenced")):t.configuration.plan(e)}async applySetup(e,t={}){let i=this.selected,o=this.epoch;if(!i||!i.connection.isCurrent()||this.retiring||this.closing)throw new on("application_connection_fenced");if(await i.configuration.apply(e,t),t.signal?.aborted||this.epoch!==o||this.selected!==i||!i.connection.isCurrent())throw new on("application_connection_fenced");return i.readiness.refresh(t)}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.selected,t=this.opening;e?.lifetime.abort(),e?.unsubscribe();let i=this.ui.retire(),o=Promise.resolve().then(async()=>{let r=(await Promise.allSettled([i,t?.catch(()=>{}),e?.readiness.close()])).find(a=>a.status==="rejected");if(r?.status==="rejected")throw r.reason;this.selected===e&&(this.selected=null)});return this.retiring=o,this.changed(),o.then(()=>{this.retiring===o&&(this.retiring=null),this.changed()},()=>{}),o}close(){return this.closing?this.closing:(this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{await this.retire(),await this.ui.close(),this.listeners.clear()}),this.closing)}}});function VR(n){return typeof n=="string"&&nN.includes(n)}var nN,KR=C(()=>{"use strict";nN=["joining","opening_store","connecting_log","syncing","loading_snapshot","replaying","waiting_for_key","verifying_read","checking_setup"]});function hA(n,e){return!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join()?sc():n}function mA(n){(typeof n!="string"||!iN.test(n)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(n))&&sc()}function WR(n){let e=hA(n,"rpc,action,value");if((!Number.isSafeInteger(e.rpc)||e.rpc<1||e.rpc>4294967295)&&sc(),e.action==="cancel")e.value!==null&&sc();else if(e.action==="prepare"){let t=hA(e.value,`requestId,accountId,appId,challenge${Object.hasOwn(e.value,"authorizationId")?",authorizationId":""}`);for(let i of["requestId","accountId","appId"])mA(t[i]);t.authorizationId!==void 0&&mA(t.authorizationId),(typeof t.challenge!="string"||!/^[0-9a-f]{64}$/.test(t.challenge))&&sc()}else if(e.action==="finish"){let t=hA(e.value,"requestId,authorizationRequestId,collectionId");for(let i of Object.keys(t))mA(t[i])}else sc();return Object.freeze({...e,value:e.value===null?null:Object.freeze({...e.value})})}var iN,sc,HR=C(()=>{"use strict";bd();iN=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,sc=()=>{throw new xe("application_worker_binding")}});function yA(n){if(!n||typeof n!="object"||Array.isArray(n))throw new xe("application_worker_binding");let e=n,t=e.unlock;if(e.status==="needs_unlock"!=(t!=null)||t!=null&&(typeof t!="object"||!["password","strict","none"].includes(t.mode)||typeof t.unlocking!="boolean"||!(t.problem===null||typeof t.problem=="string"&&/^[a-z][a-z0-9_]{0,63}$/.test(t.problem))))throw new xe("application_worker_binding");if(!["not_started","starting","signed_out","authorizing","unselected","opening","setup_required","ready","blocked","closed","needs_unlock"].includes(e.status)||!(e.openingProgress==null||typeof e.openingProgress=="string")||!Array.isArray(e.collections)||e.collections.length>1024||!(e.selectedCollectionId===null||typeof e.selectedCollectionId=="string")||!(e.problem===null||typeof e.problem=="string"&&/^[a-z0-9_-]{1,128}$/.test(e.problem))||!(e.unsynced==null||typeof e.unsynced=="object"&&e.unsynced.collectionId===e.selectedCollectionId&&typeof e.unsynced.sessionStatus=="string")||!(e.unsyncedWork==null||typeof e.unsyncedWork=="object"&&Number.isSafeInteger(e.unsyncedWork.since)&&e.unsyncedWork.since>=0))throw new xe("application_worker_binding");return Object.freeze({...e,openingProgress:VR(e.openingProgress)?e.openingProgress:null})}var ac,Py,GR=C(()=>{"use strict";KR();HR();bd();ac=class extends Error{constructor(t){super("SDK application operation unavailable");this.code=t;this.name="ApplicationWorkerReplyError"}code};Py=class{port;binding;owner;nextId=0;active=null;portal=null;fault=null;stopping=null;stopReply=null;watch=null;closedPortal=null;abandoned=!1;constructor(e,t,i){if(!aC(t))throw new xe("application_worker_binding");this.port=e,this.binding=t,this.owner=Object.freeze({...i}),e.addEventListener("message",this.message),e.addEventListener("messageerror",this.messageError),e.start()}id(){if(this.nextId===Sm)throw new xe("application_worker_stop_failed");return++this.nextId}send(e,t,i){let o=a_([oi,this.binding,e,t,i],this.binding);try{this.port.postMessage(o)}catch{throw this.quarantine("application_worker_unavailable"),this.fault}}request(e,t,i,o){if(this.fault||this.stopping||i.aborted)return Promise.reject(this.fault??new xe("application_worker_fenced"));if(this.active)return Promise.reject(new xe("application_worker_busy"));let s;try{s=this.id(),a_([oi,this.binding,s,e,t],this.binding)}catch(c){return Promise.reject(c)}if(o){if(!["authorize","renewExpiredPairing","requestFileAccess"].includes(e))return Promise.reject(new xe("application_worker_binding"));this.portal?.life.abort(),this.portal&&(this.closedPortal=this.portal.id);try{this.portal?.value.close()}catch{return this.quarantine("application_worker_stop_failed"),Promise.reject(this.fault)}this.portal={id:s,value:o,caller:i,life:new AbortController,lastRpc:0,busy:!1},this.watchPortal()}let r,a=new Promise(c=>{r=c});return new Promise((c,l)=>{let p={id:s,caller:i,done:a,finish:r,resolve:c,reject:l,fenced:!1,reply:!1,handoff:null,cancel:()=>{p.fenced=!0,l(new xe("application_worker_fenced"))}};this.active=p,i.addEventListener("abort",p.cancel,{once:!0});try{this.send(s,e,t)}catch(d){l(d)}i.aborted&&p.cancel()})}drain(){return this.fault?Promise.reject(this.fault):this.active?.done??Promise.resolve()}setForeground(e){!this.stopping&&!this.fault&&this.send(0,"foreground",e)}watchPortal(){this.watch!==null&&clearInterval(this.watch),this.watch=null;let e=this.portal;!e||!("closed"in e.value)||(this.watch=setInterval(()=>{if(this.portal!==e||this.stopping||this.fault){clearInterval(this.watch),this.watch=null;return}let t=!1;try{t=e.value.closed===!0}catch{}if(t){clearInterval(this.watch),this.watch=null,e.lastRpc===0&&(this.portal=null,this.closedPortal=e.id);try{this.send(0,"approvalClosed",!0)}catch{}}},500))}messageError=()=>this.quarantine("application_worker_unavailable");quarantine(e){if(!this.fault){this.fault=new xe(e),this.active&&(this.active.fenced=!0,this.active.reject(this.fault)),this.stopReply?.reject(this.fault);try{this.owner.failed?.(this.fault)}catch{}}}message=e=>{try{let t=e.data;if(!Array.isArray(t)||t.length!==5||t[0]!==oi||t[1]!==this.binding||!Number.isInteger(t[3])||t[3]<0||t[3]>Sm)throw new xe("application_worker_binding");if(this.fault)return;let[,,i,o,s]=t;if(i==="nativeSnapshot"){if(o!==0)throw new xe("application_worker_binding");let l=yA(s);this.stopping||this.owner.snapshot(l);return}if(i==="fatal"){if(o!==0)throw new xe("application_worker_binding");this.quarantine("application_worker_stop_failed");return}if(i==="nativeAuthorization"){let l=WR(s),p=this.portal;if(o===this.closedPortal&&p?.id!==o){l.action!=="cancel"&&this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}]);return}if(!p||p.id!==o||this.stopping||p.caller.aborted||l.rpc<=p.lastRpc)throw new xe("application_worker_fenced");if(p.lastRpc=l.rpc,l.action==="cancel")p.life.abort();else if(p.busy)throw new xe("application_worker_binding");l.action!=="cancel"&&(p.busy=!0);let d=AbortSignal.any([p.caller,p.life.signal]);Promise.resolve().then(()=>{if(!this.owner.nativeAuthorization)throw new xe("application_worker_unavailable");return this.owner.nativeAuthorization(l,p.value,d)}).then(u=>{if(d.aborted||this.portal!==p||this.stopping)throw new xe("application_worker_fenced");this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!0,value:u}])},()=>{this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}).catch(()=>{try{this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}catch{}}).finally(()=>{p.busy=!1});return}if(i==="portal"){if(!s||!["navigate","close"].includes(s.action))throw new xe("application_worker_binding");let l=this.portal;if(!l||l.id!==o)return;if(s.action==="close")l.life.abort(),l.value.close(),this.portal=null;else{if(this.stopping||typeof s.uri!="string"||s.uri.length>8192)throw new xe("application_worker_binding");l.value.navigate(s.uri)}return}if(i==="handoff"&&o===0){if(!s||s.schema!=="mdbn-app-collection/1")throw new xe("application_worker_binding");let l=[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]];if(l.some(p=>!(p instanceof MessagePort)))throw new xe("application_worker_binding");if(this.stopping||!this.owner.attached){for(let p of l)p.close();return}this.owner.attached(s);return}if(i==="handoff"){let l=this.active;if(!l||l.id!==o||l.reply||l.handoff)throw new xe("application_worker_binding");if(this.stopping){if(!s||s.schema!=="mdbn-app-collection/1")throw new xe("application_worker_binding");for(let p of[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]]){if(!(p instanceof MessagePort))throw new xe("application_worker_binding");p.close()}l.handoff=Promise.resolve();return}l.handoff=Promise.resolve().then(()=>this.owner.handoff(s,l.caller)),l.handoff.catch(()=>{});return}if(i!=="reply"||!s||typeof s.ok!="boolean"||!s.ok&&(!s.problem||typeof s.problem.code!="string"||s.problem.code.length>128))throw new xe("application_worker_binding");let r=this.stopReply;if(r&&r.id===o){if(s.ok){let l=yA(s.snapshot);if(l.status!=="closed"||l.selectedCollectionId!==null)throw new xe("application_worker_stop_failed");r.resolve()}else r.reject(new xe("application_worker_stop_failed"));return}let a=this.active;if(!a||a.id!==o||a.reply)throw new xe("application_worker_binding");a.reply=!0;let c=s.ok?yA(s.snapshot):null;this.settle(a,c,s.ok?null:Object.freeze({code:s.problem.code}))}catch{this.quarantine("application_worker_binding")}};async settle(e,t,i){try{if(await e.handoff,e.fenced||e.caller.aborted||this.stopping||this.fault)throw this.fault??new xe("application_worker_fenced");if(i)throw new ac(i.code);t&&e.resolve(t)}catch(o){e.reject(o)}finally{e.caller.removeEventListener("abort",e.cancel),this.active===e&&(this.active=null),e.finish()}}abandon(){if(this.abandoned)return;this.abandoned=!0,this.fault||(this.fault=new xe("application_worker_fenced")),this.watch!==null&&(clearInterval(this.watch),this.watch=null);let e=this.active;e&&(e.fenced=!0,e.reject(this.fault),e.finish(),this.active=null),this.stopReply?.reject(this.fault),this.stopReply=null,this.portal?.life.abort();try{this.portal?.value.close()}catch{}this.portal=null;try{this.owner.releaseWorker()}catch{}this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}close(){if(this.stopping)return this.stopping;let e=this.active;return e&&(e.fenced=!0,e.reject(new xe("application_worker_fenced"))),this.stopping=Promise.resolve().then(async()=>{if(this.fault)throw new xe("application_worker_stop_failed");this.portal?.life.abort(),this.portal?.value.close(),this.portal=null;let t=this.id();if(await new Promise((i,o)=>{this.stopReply={id:t,resolve:i,reject:o};try{this.send(t,"close",null)}catch(s){o(s)}}),await e?.done,this.fault)throw new xe("application_worker_stop_failed");this.owner.releaseWorker(),this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}).catch(t=>{throw this.quarantine("application_worker_stop_failed"),t}),this.stopping}}});var YR={};ca(YR,{ApplicationRuntime:()=>bA,ApplicationRuntimeError:()=>On});function rN(n,e){let t=()=>A("invalid_request","Pass the collection and either { password } or { recoveryKey }.","unlock_secret_invalid");if(typeof n!="string"||!e||typeof e!="object")throw t();let i=Object.hasOwn(e,"password"),o=Object.hasOwn(e,"recoveryKey");if(i===o)throw t();let s=i?e.password:e.recoveryKey;if(typeof s!="string"||!s.length)throw t();let r=new TextEncoder().encode(s);if(r.length>s_)throw r.fill(0),t();return Object.freeze([n,i?"password":"recoveryKey",r])}var On,gA,bA,JR=C(()=>{"use strict";ne();bd();UO();FR();nA();bt();Km();GR();l_();On=class extends Error{constructor(t){super("SDK application runtime unavailable");this.code=t;this.name="ApplicationRuntimeError"}code},gA=()=>{let n=Object.freeze({checking:!1,assessment:null,problem:null});return Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:n,contracts:n,configuration:n,files:n,people:n,notifications:n})})},bA=class{lifetime=new AbortController;scope;worker;cpOrigin;lab;appName;sourceAdopt=null;listeners=new Set;unsubscribe;raw=Object.freeze({status:"not_started",collections:Object.freeze([]),selectedCollectionId:null,signIn:null,problem:null,timing:null});snapshot=Object.freeze({...this.raw,readiness:gA()});pending=null;closing=null;epoch=0;loggedProblem=null;assessing=!1;retiring=!1;closed=!1;stopped=!1;stopFailed=!1;constructor(e){this.cpOrigin=e.cpOrigin,this.appName=e.declaration.name,this.lab=Pl(e.declaration.environment),this.scope=new Sy(e.compiledManifest,{name:e.declaration.name,version:"1"},this.lifetime.signal,e.typeIssues,t=>Vm(this.raw,t)),this.worker=new Py(e.port,e.binding,{snapshot:t=>{this.closed||(this.raw=t,this.followSession(),this.publish())},handoff:(t,i)=>{if(this.sourceAdopt)return this.sourceAdopt(t,i);let o=this.epoch;return this.scope.adopt(t,i,()=>!this.closed&&this.epoch===o).then(()=>{this.portsFailed=null},s=>{throw this.portsFailed=t.scope.collection,s})},attached:t=>this.attached(t),releaseWorker:e.releaseWorker,...e.nativeAuthorization?{nativeAuthorization:e.nativeAuthorization}:{},failed:t=>{this.closed||(this.raw=Object.freeze({...this.raw,status:"blocked",problem:t.code,unlock:null}),this.publish())}}),this.unsubscribe=this.scope.subscribe(()=>this.publish())}portsFailed=null;attached(e){let t=()=>{for(let o of[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]])try{o.close()}catch{}};if(this.closed){t();return}let i=this.lifetime.signal;this.queue(()=>this.action(async()=>{if(this.raw.selectedCollectionId!==e.scope.collection)return t(),this.snapshot;this.scope.selectedId()!==null&&(++this.epoch,await this.retireOwn());let o=this.epoch;return await this.scope.adopt(e,i,()=>!this.closed&&this.epoch===o).catch(s=>{throw this.portsFailed=e.scope.collection,s}),this.portsFailed=null,this.complete(this.raw,i)},i)).catch(()=>{this.closed||this.publish()})}followSession(){if(this.pending)return;let e=this.raw.status==="ready"||this.raw.status==="setup_required",t=this.raw.selectedCollectionId,i=this.scope.selectedId();if(i!==null&&(i!==t||!e&&this.raw.status!=="opening"&&this.raw.status!=="authorizing")){let o=this.lifetime.signal;this.queue(()=>this.action(async()=>(this.scope.selectedId()===i&&(++this.epoch,await this.retireOwn()),this.publish(),this.snapshot),o)).catch(()=>{})}}connection(e){return this.closed?null:this.scope.connection(e)}getSnapshot(){return this.snapshot}getNativeSnapshot(){return this.raw}async queue(e){for(;this.pending&&!this.closed;)await this.pending.catch(()=>{});return e()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(){if(this.closed)this.snapshot=Object.freeze({...this.raw,status:this.stopped?"closed":"blocked",problem:this.stopped?null:this.stopFailed?"application_stop_failed":"application_closing",selectedCollectionId:null,unlock:null,readiness:gA()});else{let e=this.scope.getReadiness()??gA(),t=this.raw.status,i=this.raw.problem,o,s=this.raw.selectedCollectionId,r=this.retiring&&e.problem?.code==="readiness_fenced",a=s!==null&&(this.scope.getReadiness()===null||r)&&this.portsFailed!==s;if((t==="ready"||t==="setup_required")&&a)t="opening";else if(t==="ready"||t==="setup_required"){let l=this.assessing&&!e.assessment&&e.problem?.code!=="readiness_fenced";if(t=e.checking||l?"opening":e.assessment?.status==="ready"?"ready":e.assessment?.status==="setup_required"?"setup_required":"blocked",t==="blocked"){let p=e.problem??e.assessment?.problem;i=p?.code??"application_readiness_unavailable",o=p?.detail}}let c=`${i}:${o??""}`;if(t==="blocked"&&i&&c!==this.loggedProblem){this.loggedProblem=c;try{o?console.error("mdbase application blocked:",i,o):console.error("mdbase application blocked:",i)}catch{}}else t!=="blocked"&&(this.loggedProblem=null);this.snapshot=Object.freeze({...this.raw,status:t,problem:i,openingProgress:t==="opening"?e.checking?"checking_setup":this.raw.openingProgress??null:null,collections:Object.freeze(this.raw.collections.map(l=>Object.freeze({...l}))),readiness:e})}for(let e of[...this.listeners])try{e()}catch{}}retireOwn(){return this.retiring=!0,this.scope.retire()}settled(){return this.assessing=!1,this.publish(),this.snapshot}signal(e){return e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal}action(e,t){if(this.closed||t.aborted)return Promise.reject(new On("application_fenced"));if(this.pending)return Promise.reject(new On("application_busy"));this.assessing=!0;let i=Promise.resolve().then(async()=>{if(this.closed||t.aborted)throw new On("application_fenced");let o=await e();if(this.closed||t.aborted)throw new On("application_fenced");return o}).finally(async()=>{(this.assessing||this.retiring)&&(this.assessing=!1,this.retiring=!1,this.publish()),await this.worker.drain(),this.pending===i&&(this.pending=null)});return this.pending=i,i}async complete(e,t){if(this.closed||t.aborted)throw new On("application_fenced");let i=!!(e.selectedCollectionId&&this.scope.connection(e.selectedCollectionId));if(this.raw=e,this.assessing=i,this.publish(),i){try{await this.scope.assess({signal:t}).catch(()=>{})}finally{this.assessing=!1}this.publish()}if(this.closed||t.aborted)throw new On("application_fenced");return this.snapshot}start(e={}){let t=this.signal(e);return this.action(async()=>this.complete(await this.worker.request("start",null,t),t),t)}authorizeReserved(e,t={},i=null){let o=this.signal(t);return this.action(async()=>this.complete(await this.worker.request("authorize",i,o,e),o),o).catch(s=>{throw e.close(),s})}authorize(e={}){let t=this.signal(e),i;try{i=Pm(xm(this.cpOrigin,t,()=>!this.closed,this.lab))}catch(o){return Promise.reject(o)}return this.authorizeReserved(i,e)}select(e,t={}){let i=this.signal(t);return this.action(async()=>{if(this.raw.selectedCollectionId===e&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(e)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,i):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||i.aborted)throw new On("application_fenced");return this.complete(await this.worker.request("select",e,i),i)},i)}unlock(e,t,i={}){let o=this.signal(i),s;try{s=rN(e,t)}catch(a){return Promise.reject(a)}let r=()=>{s[2].fill(0)};return this.action(async()=>{if(this.raw.selectedCollectionId!==e||this.raw.status!=="needs_unlock")throw A("invalid_request","This collection is not waiting to be unlocked.","unlock_not_locked");let a;try{a=this.worker.request("unlock",s,o)}finally{r()}return this.complete(await a,o)},o).finally(r)}openUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null;if(i!==null&&this.raw.selectedCollectionId===i&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(i)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,t):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||t.aborted)throw new On("application_fenced");return this.complete(await this.worker.request("openUnsynced",null,t),t)},t)}async retireUnsynced(e,t,i={}){let o=this.signal(i),s=!0;return await this.queue(()=>this.action(async()=>{try{return this.complete(await this.worker.request("retireUnsynced",[e,t],o),o)}catch(r){if(r instanceof ac&&r.code==="application_worker_busy")return s=!1,this.snapshot;throw r}},o)),s}discardUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null,o=i!==null&&this.raw.selectedCollectionId===i;if(o){++this.epoch;let s=this.retireOwn();if(this.publish(),await s,this.closed||t.aborted)throw new On("application_fenced")}try{return this.complete(await this.worker.request("discardUnsynced",null,t),t)}catch(s){throw o&&s instanceof ac&&s.code==="application_worker_busy"&&!this.closed&&!t.aborted&&this.complete(await this.worker.request("openUnsynced",null,t),t),s}},t)}async withUnsyncedSource(e,t={}){let i=this.signal(t),o=new nc({name:this.appName,version:"1"},i),s=null;try{if(await this.queue(()=>this.action(async()=>{this.sourceAdopt=(r,a)=>(s=o.adopt(r,{caller:a,isCurrent:()=>!this.closed&&!i.aborted}),s.then(()=>{}));try{await this.worker.request("attachUnsynced",null,i)}finally{this.sourceAdopt=null}return this.snapshot},i)),!s)throw new On("application_connection_unavailable");return await e(await s,i)}finally{if(await o.close().catch(()=>{}),!this.closed){let r=this.lifetime.signal;await this.queue(()=>this.action(async()=>(await this.worker.request("detachUnsynced",null,r),this.snapshot),r)).catch(()=>{})}}}assess(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.assess({signal:t}),this.settled()),t).then(i=>i.readiness)}configure(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.configure({signal:t}),this.settled()),t)}planSetup(e={}){let t=this.signal(e);return this.closed||t.aborted?Promise.reject(new On("application_fenced")):this.scope.planSetup({...e,signal:t})}applySetup(e,t={}){let i=this.signal(t);return this.action(async()=>(await this.scope.applySetup(e,{signal:i}),this.settled()),i)}clearSelection(e={}){let t=this.signal(e);return this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("clearSelection",null,t),t)),t)}forget(e,t={}){let i=this.signal(t);return this.action(async()=>(this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,i),i)),i)}refreshCollections(e={}){let t=this.signal(e);return this.action(async()=>(this.raw=await this.worker.request("refreshCollections",null,t),this.publish(),this.snapshot),t)}signOut(e={}){let t=this.signal(e),i=this.raw.selectedCollectionId,o=e.discard!==!0&&i?LO(this.scope.connection(i)):0;return o>0?Promise.reject(jO(o)):this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("signOut",null,t),t)),t)}deleteCollection(e,t,i={}){let o=this.signal(i);return this.action(async()=>(await this.worker.request("deleteCollection",[e,t],o),this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,o),o)),o)}requestFileAccess(e,t,i,o,s={}){let r=this.signal(s);return this.action(async()=>(this.raw=await this.worker.request("requestFileAccess",[t,i,o],r,e),this.publish(),this.snapshot),r).catch(a=>{throw e.close(),a})}pollFileAccess(e){let t=this.lifetime.signal;return this.action(async()=>(this.raw=await this.worker.request("pollFileAccess",e,t),this.publish(),this.snapshot),t)}setForeground(e){this.closed||this.worker.setForeground(e)}abandon(){this.closed||(this.closed=!0,this.stopped=!0,++this.epoch,this.unsubscribe(),this.listeners.clear(),this.closing=Promise.resolve(),this.worker.abandon(),this.lifetime.abort())}close(){return this.closing?this.closing:(this.closed=!0,++this.epoch,this.lifetime.abort(),this.unsubscribe(),this.closing=Promise.resolve().then(async()=>{await Promise.all([this.scope.close(),this.worker.close()]),await this.pending?.catch(()=>{}),this.stopped=!0,this.publish(),this.listeners.clear()}).catch(()=>{throw this.stopFailed=!0,this.publish(),new On("application_stop_failed")}),this.publish(),this.closing)}}});var WN={};ca(WN,{ACCOUNT_KEY_STATES:()=>yb,API_VERSIONS:()=>Uu,AppHost:()=>zA,COLLECTION_UNAVAILABLE_REASONS:()=>ew,CborError:()=>qe,Client:()=>rf,DESCRIBE_TYPING_MAX_PATHS:()=>Ec,DESCRIBE_TYPING_MAX_TYPES:()=>Rc,DEVICE_KINDS:()=>mb,ERROR_CODES:()=>eu,FilesApi:()=>wa,Float64:()=>Ct,HOLD_COMPARE_SCHEME:()=>wp,HOLD_TITLE:()=>bp,IkInitiator:()=>Oa,IkResponder:()=>If,LiveQuery:()=>Aa,MAX_CONVENIENCE_BYTES:()=>Nu,MAX_DEPTH:()=>Gy,MDBASE_NOTIFICATION_CLICK:()=>hw,MDBASE_NOTIFICATION_TYPE:()=>gp,MdbaseApplicationUnavailableError:()=>Kd,MdbaseClient:()=>pr,MdbaseConnect:()=>pc,MdbaseError:()=>pe,MdbasePeopleClient:()=>mr,NoiseError:()=>ft,PERSON_CONTRACT:()=>lw,PROBLEM_CODES:()=>i1,PresenceApi:()=>_a,READ_MANY_MAX_CONCURRENCY:()=>rb,READ_MANY_MAX_REFS:()=>ib,RecordReader:()=>zc,SESSION_LIFETIME_MS:()=>Yb,SLOW_OPENING_MS:()=>Hf,SchemaError:()=>re,Session:()=>ms,TEMPORAL_HINTS:()=>wu,TimersApi:()=>ja,WasmRuntime:()=>Da,Write:()=>ws,applicationPhase:()=>_p,approvalReadiness:()=>lS,bytesEqual:()=>Jy,clientPrologue:()=>fr,collectionUnavailableError:()=>Nn,compareVersions:()=>kw,connect:()=>Ab,controlRouteResolver:()=>MP,createMdbase:()=>QR,createViewSource:()=>Ku,decode:()=>ce,describeDiagnostic:()=>Ff,describeError:()=>Rs,describeHold:()=>HP,diffEdits:()=>Iu,duplexCarrier:()=>nw,effectiveCapabilities:()=>e2,encode:()=>se,encodeSecret:()=>qn,fileGrant:()=>nb,formatSas:()=>dS,framedPort:()=>Tu,fromHex:()=>Lr,generateKeyPair:()=>Ra,handleMdbaseNotificationClick:()=>KP,handleMdbasePush:()=>VP,holdCompareLink:()=>ww,holdNotice:()=>GP,inProcessConnector:()=>Na,indexedDbKeyStorage:()=>sw,isCollectionUnavailableReason:()=>Ta,isConfirmed:()=>EP,isErrorCode:()=>uo,isMdbaseError:()=>Q,isReadyPhase:()=>p1,isValid:()=>M2,keyPairFromSecret:()=>yP,loadOrCreateClientKey:()=>CP,localLinkConnector:()=>SP,localLinkFirstPayload:()=>rw,mdbaseError:()=>A,memoryKeyStorage:()=>ow,memoryWriteLedgerStore:()=>Xu,nextRelayConnector:()=>kP,noiseChannel:()=>Jb,noiseConnector:()=>hr,orderTargets:()=>La,parseCollectionAvailability:()=>gi,parseHoldCompareLink:()=>WP,parseMdbaseNativeNotification:()=>mw,parseMdbasePush:()=>Tf,parseVersion:()=>Fa,pipeCloseError:()=>Cs,portPair:()=>mk,problemCodeOf:()=>_w,queryPages:()=>$u,readMany:()=>Du,readMdbaseNotificationData:()=>yw,readViewSourceRecord:()=>Vu,recoveryFor:()=>L2,relayConnector:()=>vP,relayPipeCarrier:()=>qa,resolveRecordLinks:()=>Ik,revisionOf:()=>Ti,routeFromControl:()=>aw,sameIdentity:()=>Mf,showMdbaseNotification:()=>gw,staticKeyOf:()=>Pf,streamCarrier:()=>bP,structMap:()=>Yy,summarizeStatus:()=>Rf,syncStatusText:()=>YP,toHex:()=>At,toPlain:()=>ya,toValue:()=>kt,updateViewSource:()=>Wu,uuidv7:()=>pi,valueEquals:()=>bo,versionRelation:()=>Es,webSocketCarrier:()=>Ea,wire:()=>Tg});Xe();be();ne();Ut();Ut();ka();ob();pb();Kc();Kc();db();Fc();Bc();lr();be();ne();Is();Ma();up();function vP(n){let e=U(n.collection),t=n.grant?U(n.grant):null;return hr({description:`relay:${n.collection}`,staticKey:n.staticKey,target:async()=>{let i=await n.resolveRoute();if(!i)throw A("unavailable","no device of this collection is online","no_device_online");let o=fr(e,t,U(i.targetDevice));return{prologue:o,...i.prologueFirst&&!i.pipe?{preamble:o}:{},remoteStatic:i.noisePublicKey,device:i.targetDevice,openCarrier:s=>i.pipe?qa(i.url,{accessToken:i.pipe.accessToken,collection:i.pipe.collection,grant:n.grant??"",device:i.targetDevice,devicePublicKey:i.noisePublicKey},n.webSocket,s):Ea(i.url,n.webSocket,s)}}})}iw();Ma();Is();Xe();be();ne();Ut();Is();Ma();var LM=new Uint8Array(16);function rw(n,e){if(n.length!==32)throw A("invalid_request","the link token is 32 bytes");let t=Nr.dec(e);if(t.kind!=="request"||t.method!=="hello")throw A("internal","expected the hello request");return se(new Map([[0,n],[1,t.params]]))}function SP(n){let e=U(n.collection),t=n.staticKey??Ra(),i=null;return hr({description:"localhost-link",staticKey:t,firstPayload:o=>rw(i.token,o),target:async()=>{i=typeof n.link=="function"?await n.link():n.link;let o=i;if(!Number.isInteger(o.port)||o.port<=0||o.port>65535)throw A("unavailable","invalid local link port","daemon_not_running");let s=fr(e,null,n.localOnly?LM:U(o.device));return{prologue:s,preamble:s,remoteStatic:o.noisePublicKey,openCarrier:r=>Ea(`ws://127.0.0.1:${o.port}/v1/plugin`,n.webSocket,r)}}})}Af();ne();function ow(){let n=new Map;return{get:async e=>n.get(e),put:async(e,t)=>{n.set(e,t)},putIfAbsent:async(e,t)=>{let i=n.get(e);return i||(n.set(e,t),t)},delete:async e=>{n.delete(e)}}}function sw(n="mdbase-keys",e="keys"){let t=globalThis.indexedDB;if(!t)throw A("invalid_request","IndexedDB is not available here; pass another KeyStorage");let i=()=>new Promise((r,a)=>{let c=t.open(n,1);c.onupgradeneeded=()=>c.result.createObjectStore(e),c.onsuccess=()=>r(c.result),c.onerror=()=>a(c.error)}),o=async(r,a)=>{let c=await i();try{return await new Promise((l,p)=>{let d=c.transaction(e,r),u,f=!1;d.oncomplete=()=>f?l(u):p(A("unavailable","key storage transaction completed without a result","key_storage")),d.onabort=()=>p(d.error??A("unavailable","key storage transaction aborted","key_storage")),d.onerror=()=>p(d.error??A("unavailable","key storage transaction failed","key_storage"));try{a(d.objectStore(e),h=>{u=h,f=!0})}catch(h){d.abort(),p(h)}})}finally{c.close()}},s=(r,a)=>o(r,(c,l)=>{let p=a(c);p.onsuccess=()=>l(p.result)});return{get:r=>s("readonly",a=>a.get(r)),put:(r,a)=>s("readwrite",c=>c.put(a,r)).then(()=>{}),putIfAbsent:(r,a)=>o("readwrite",(c,l)=>{let p=c.get(r);p.onsuccess=()=>{if(p.result!==void 0){l(p.result);return}try{let d=c.add(a,r);d.onsuccess=()=>l(a)}catch{c.transaction.abort()}}}),delete:r=>s("readwrite",a=>a.delete(r)).then(()=>{})}}function IP(){return globalThis.crypto?.subtle}async function jM(){let n=IP();if(!n)return null;try{let e=await n.generateKey({name:"X25519"},!1,["deriveBits"]),t=new Uint8Array(await n.exportKey("raw",e.publicKey));return{kind:"webcrypto",privateKey:e.privateKey,publicKey:t}}catch{return null}}function UM(n){return n.kind==="raw"?{publicKey:n.publicKey,nonExtractable:!1,dh:e=>Ui.getSharedSecret(n.secretKey,e)}:{publicKey:n.publicKey,nonExtractable:!n.privateKey.extractable,dh:async e=>{let t=IP(),i=await t.importKey("raw",e,{name:"X25519"},!1,[]),o=await t.deriveBits({name:"X25519",public:i},n.privateKey,256);return new Uint8Array(o)}}}var NM=ow(),PP=new WeakMap;function xP(n,e){if(e&&(n.kind!=="webcrypto"||n.privateKey.extractable!==!1||n.privateKey.type!=="private"||n.privateKey.algorithm.name!=="X25519"||!n.privateKey.usages.includes("deriveBits")))throw A("invalid_request","a non-extractable X25519 key is required; explicitly reauthorize incompatible stored identities","key_storage")}async function CP(n,e={}){let t=e.storage??(globalThis.indexedDB?sw():NM),i=e.requireNonExtractable,o=PP.get(t);o||(o=new Map,PP.set(t,o));let s=o.get(n);s||(s=(async()=>{let r=await t.get(n);if(r)return r;let a=await jM();if(!a){if(i)throw A("invalid_request","this platform cannot keep a non-extractable X25519 key","key_storage");let c=Ui.utils.randomSecretKey();a={kind:"raw",secretKey:c,publicKey:Ui.getPublicKey(c)}}return xP(a,i),t.putIfAbsent?t.putIfAbsent(n,a):(await t.put(n,a),a)})(),o.set(n,s));try{let r=await s;return xP(r,i),UM(r)}finally{o.get(n)===s&&o.delete(n)}}gb();var OP={collection_not_yet_migrated:"Your collection needs an upgrade on your computer; your changes are safe",collection_migrating:"Your collection is being upgraded; changes will sync when it's done",update_required:"Update the app to keep syncing",account_suspended:"Syncing is paused: your account is suspended"},RP={offline:"You're offline",unreachable:"Can't reach the sync service",server_busy:"The sync service is busy; trying again shortly",rate_limited:"Syncing is paused for a moment",auth:"Sign in again to keep syncing"};function Rf(n,e,t,i){let o=n.mode!=="local_only"&&t&&Object.hasOwn(RP,t.kind)?t.kind:null,s={pending:n.pending,holds:n.holds,conflicts:n.unresolved,confirmedThrough:n.mode==="local_only"?null:n.confirmedThrough,health:o,live:n.mode==="local_only"||typeof i!="boolean"?null:i},r=n.pending>0?`, ${n.pending} change${n.pending===1?"":"s"} waiting`:"";if(n.mode==="local_only")return{...s,kind:"local",text:n.pending?`Saving${r}`:"Saved on this device"};if(e&&Object.hasOwn(OP,e))return{...s,kind:e,text:`${OP[e]}${r}`};if(n.installing)return{...s,kind:"installing",text:`Loading the collection (${n.installing.done}/${n.installing.total})`};if(o){let c=n.pending?`. ${n.pending} change${n.pending===1?" is":"s are"} saved on this device and will sync later`:"";return{...s,kind:o==="offline"||o==="unreachable"?"offline":n.confirmedThrough<n.headKnown?"catching_up":"synced",text:`${RP[o]}${c}`}}if(n.connection!=="online")return{...s,kind:"offline",text:`Offline; synced through ${n.confirmedThrough}${r}`};if(n.confirmedThrough<n.headKnown)return{...s,kind:"catching_up",text:`Catching up (${n.confirmedThrough}/${n.headKnown})${r}`};let a=s.live===!1?". Live updates are paused; changes from other devices appear when you come back to this app":"";return{...s,kind:"synced",text:`Synced through ${n.confirmedThrough}${r}${a}`}}function EP(n){return n.state==="confirmed"}wb();up();Cf();Xe();Po();ne();function aw(n,e){for(let t of n.targets??[]){if(!/^[0-9a-f]{64}$/i.test(t.noise_pk)||!t.url||!t.device)continue;let i={url:t.url,targetDevice:t.device,noisePublicKey:Lr(t.noise_pk)};return t.relay_collection?i.pipe={collection:t.relay_collection,accessToken:e}:t.kind==="hosted"&&(i.prologueFirst=!0),i}return null}function MP(n){let e;try{e=new URL(n.server)}catch{throw A("invalid_request","The control plane requires an HTTPS origin")}if(e.protocol!=="https:"&&!!1||e.username||e.password||e.pathname!=="/"||e.search||e.hash)throw A("invalid_request","The control plane requires an HTTPS origin without credentials, path, query or fragment");let t=`${e.origin}/v1/next/collections/${encodeURIComponent(n.collection)}/route`,i=n.fetch??globalThis.fetch.bind(globalThis);return async()=>{let o=await n.accessToken(),s;try{s=await i(t,{headers:{authorization:`Bearer ${o}`},redirect:"error"})}catch{throw A("unavailable","cannot reach the control plane","control_unreachable")}if(s.status===401)throw A("unauthenticated","the control plane refused the access token");if(s.status===409)throw A("unauthenticated","this app's key is not registered with its grant","client_key_required");if(!s.ok)throw A("unavailable",`control plane answered ${s.status}`,"control_error");let r=await s.json(),a=gi(r.availability);if(a?.state==="unavailable")throw Nn(a.reason);let c=aw(r,o);if(!c&&r.reason==="no_device_registered")throw A("unavailable","this collection has no device set up to serve it","no_device_registered");return c}}Po();fp();uw();ne();var gp="mdbase.notification",hw="mdbase.notification.click",DP=/^[\x21-\x7e]{1,256}$/,WM=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,xo=n=>A("invalid_request",n,"invalid_push_payload"),HM=()=>A("upgrade_required","The push uses an envelope version this SDK does not support.","unsupported_push_version");function zP(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{throw xo("The push payload is not JSON.")}else if(n&&typeof n=="object"&&typeof n.json=="function")try{n=n.json()}catch{throw xo("The push payload is not JSON.")}if(!n||typeof n!="object"||Array.isArray(n))throw xo("The push payload is not an object.");return n}function Ua(n,e,t){return typeof n=="string"&&n.length>=e&&n.length<=t}function BP(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let e=n;return!Ua(e.title,1,80)||e.body!==void 0&&!Ua(e.body,0,160)||e.tag!==void 0&&!Ua(e.tag,1,80)?null:Object.freeze({title:e.title,...typeof e.body=="string"&&e.body.length?{body:e.body}:{},...typeof e.tag=="string"?{tag:e.tag}:{}})}function FP(n,e,t){if(n.type!==gp)throw xo("The payload is not an mdbase notification.");if(e!==1)throw typeof e=="number"&&Number.isSafeInteger(e)&&e>1?HM():xo("The payload has no valid envelope version.");if(!Ua(n.signal_id,1,256)||!DP.test(n.signal_id)||!Ua(n.cursor,1,256)||!DP.test(n.cursor)||!Ua(n.criterion_id,1,100)||!WM.test(n.criterion_id))throw xo("The payload is not an mdbase notification.");return Object.freeze({version:1,signalId:n.signal_id,criterionId:n.criterion_id,cursor:n.cursor,presentation:t})}function Tf(n){let e=zP(n),t=FP(e,e.version,BP(e.presentation));if(!t.presentation)throw xo("The push has no valid presentation.");return t}function mw(n){if(!n||typeof n!="object"||Array.isArray(n))throw xo("The native notification data is not an object.");let e=n,t=typeof e.version=="string"&&/^[1-9][0-9]{0,8}$/.test(e.version)?Number(e.version):e.version;return FP(e,t,null)}function yw(n){try{return mw(n)}catch{return null}}function GM(n){return{type:gp,version:n.version,signal_id:n.signalId,criterion_id:n.criterionId,cursor:n.cursor}}async function gw(n,e,t={}){let i=Tf(e),o=i.presentation;return await n.showNotification(o.title,{...o.body?{body:o.body}:{},...o.tag?{tag:o.tag}:{},...t.icon?{icon:t.icon}:{},...t.badge?{badge:t.badge}:{},data:GM(i)}),i}function fw(n){return globalThis[n]}function YM(n){let e=globalThis.location;if(typeof e?.origin=="string"&&e.origin!=="null")return e.origin;try{return n?new URL(n).origin:null}catch{return null}}function $P(n,e,t){let i=()=>A("invalid_request",`The notification click ${t} must be on the app's own origin.`,"click_target_cross_origin");if(typeof n!="string")throw i();if(e===null){if(!n.startsWith("/")||n.startsWith("//")||n.startsWith("/\\"))throw i();return n}let o;try{o=new URL(n,`${e}/`)}catch{throw i()}if(o.origin!==e)throw i();return o.href}function VP(n,e={}){let t;try{t=zP(n.data?.text()??null)}catch{return!1}if(t.type!==gp)return!1;let i=e.registration??fw("registration");if(!i)throw A("invalid_request","No service worker registration to show the notification.","push_registration_missing");let o={...e.icon?{icon:e.icon}:{},...e.badge?{badge:e.badge}:{}};return n.waitUntil((async()=>{try{Tf(t)}catch(s){let r=s instanceof pe&&s.reason==="unsupported_push_version"?BP(t.presentation):null;if(!r)throw s;return await i.showNotification(r.title,{...r.body?{body:r.body}:{},...r.tag?{tag:r.tag}:{},...o}),null}return gw(i,t,o)})()),!0}function KP(n,e={}){let t=yw(n.notification.data);if(!t)return!1;n.notification.close();let i=e.clients??fw("clients"),o=fw("registration")?.scope,s=YM(o),r=e.scope===void 0?o:$P(e.scope,s,"scope"),a=e.url===void 0?r??"/":$P(e.url,s,"url");return i&&n.waitUntil((async()=>{let l=(await i.matchAll({type:"window",includeUncontrolled:!0})).find(d=>!r||d.url.startsWith(r));if(!l)return i.openWindow(a);await l.focus();let p={type:hw,notification:t};return l.postMessage(p),l})()),!0}Lf();bw();var bp="mdbase protected your edit",JM={conflict:{cause:"This file was also changed on another device while you were editing it.",detail:"Your version is kept here and is not synced until you choose what to keep."},unknown_provenance:{cause:"This file changed on disk in a way mdbase could not trace to an app or a sync.",detail:"The bytes on disk are kept here and are not synced until you confirm them."},deleted_elsewhere:{cause:"This file was deleted on another device after you edited it.",detail:"Your version is kept here; nothing is deleted until you choose."},read_only:{cause:"Changed with view access.",detail:"Edit access will not sync these changes. Submit or discard them."},editor_busy:{cause:"An editor still has this file open with unsaved changes.",detail:"mdbase waits so that it never overwrites what you are typing."},suspect_write:{cause:"The last write to this file looked incomplete, for example after a crash.",detail:"The file is kept aside and is not synced until you confirm it."}},XM={keep_mine:{label:"Keep mine",description:"Sync the version on this device.",resolution:"keep_mine",needs:"records.edit",discardsMine:!1},take_theirs:{label:"Take theirs",description:"Replace this file with the synced version.",resolution:"take_theirs",needs:"records.edit",discardsMine:!0},keep_both:{label:"Keep both",description:"Save your version as a copy next to the synced one.",resolution:"keep_both",needs:"records.edit",discardsMine:!1},delete:{label:"Delete",description:"Accept the deletion and remove this file here too.",resolution:"delete",needs:"records.delete",discardsMine:!0},use:{label:"Use merged",description:"Sync the document you merged.",resolution:"use",needs:"records.edit",discardsMine:!1},compare:{label:"Compare side by side",description:"Open both versions to merge them.",discardsMine:!1}},ZM={conflict:["keep_mine","take_theirs","compare","keep_both"],unknown_provenance:["keep_mine","take_theirs","compare","keep_both"],deleted_elsewhere:["keep_mine","delete"],read_only:["keep_mine","take_theirs","compare","keep_both"],editor_busy:["keep_mine","take_theirs","compare"],suspect_write:["keep_mine","take_theirs","compare","keep_both"]},wp="mdbase://hold/compare",jf=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ww(n,e){if(!jf.test(n)||!jf.test(e))throw new Error("holdCompareLink: collection and id are UUIDs");return`${wp}?collection=${n.toLowerCase()}&id=${e.toLowerCase()}`}function WP(n){if(typeof n!="string"||n.length>512||!n.startsWith(`${wp}?`))return null;let e=new URLSearchParams(n.slice(wp.length+1)),t=e.get("collection")??"",i=e.get("id")??"";return!jf.test(t)||!jf.test(i)?null:{collectionId:t.toLowerCase(),id:i.toLowerCase()}}function HP(n,e){let t=n.reason==="read_only",i=n.theirs!==void 0,o=(e.canCompare??!0)&&i,s=c=>!c||!e.capabilities||e.capabilities.includes(c),r=ZM[n.reason].filter(c=>c==="compare"?o:(!t||e.host===!0)&&(c!=="take_theirs"||i||t)).map(c=>{let l={action:c,...XM[c]};return t&&c==="take_theirs"&&(l.label="Discard local changes",l.description="Discard unsynced changes on this device.",l.needs="collection.read"),l}).filter(c=>s(c.needs)),a=JM[n.reason];return{id:n.id,path:n.path,reason:n.reason,title:bp,cause:a.cause,detail:a.detail,since:n.since,saves:n.saves,hasTheirs:i,actions:r,reversible:!t,reversibleNote:t?"Copy before discarding.":"You can change your mind later: resolving is an ordinary change, and the previous version stays in the collection's history. Keep both if you want your version kept as a file as well.",compareLink:o?ww(e.collectionId,n.id):null}}function GP(n){return n.length?n.length===1?`${bp}: ${n[0].path} is waiting for your choice.`:`${bp}: ${n.length} files are waiting for your choice.`:null}function YP(n){let e=(i,o)=>`${i} ${o}`,t=`, plus ${e(n.pending,"pending")}, plus ${e(n.holds,"held")}`;return n.mode==="local_only"?`Saved on this device${t}`:`Confirmed through ${n.confirmedThrough}${t}`}vp();Kf();vp();var Hf=15e3,Wf=(n,e)=>{try{return!!n&&n.id===e&&n.isCurrent()}catch{return!1}},Ms=(n,e)=>Rs(n,e?{cpOrigin:e}:{}),Hr=(n,e)=>Ms(n,e);function _p(n,e={}){let t=bq(n,e),i=wq(t,n,e);return i.kind==="opening"&&n.status==="opening"&&n.selectedCollectionId===i.collectionId&&n.openingProgress?{...i,progress:n.openingProgress}:i}function bq(n,e){let t=e.cpOrigin,i=n.selection,o=i?.requested??null;if(n.status==="closed")return{kind:"closed"};if(n.problem==="application_not_yet_available"||n.problem==="application_worker_unavailable"||n.problem==="browser_unsupported"||n.problem==="application_storage_unavailable")return{kind:"unavailable",problem:Hr(n.problem,t)};if(i?.state==="invalid")return{kind:"problem",collectionId:null,problem:Hr(i.problem??"application_selection_invalid",t)};let s=n.signIn?.state==="paired";if(i?.state==="approving"||n.status==="authorizing"){let p=i?.approval??null;return s?p?.kind==="add"?{kind:"authorizing",purpose:"add",collectionId:null}:{kind:"authorizing",purpose:"approve",collectionId:p?.collectionId??o?.collectionId??null}:{kind:"authorizing",purpose:"sign_in",collectionId:p?.collectionId??o?.collectionId??null}}let r=n.unsynced??null;if(r&&n.selectedCollectionId===r.collectionId){let p=r.collectionId;return n.status==="ready"&&Wf(e.connection,p)?{kind:"unsynced",collectionId:p,connection:e.connection,rechecking:n.readiness.checking}:n.status==="blocked"||n.status==="setup_required"&&!n.readiness.checking&&n.readiness.assessment?{kind:"problem",collectionId:p,problem:(n.status==="blocked"?Ms(n,t):Ms(n.readiness,t))??Hr("open_failed",t)}:{kind:"opening",collectionId:p,displayName:null,slow:!!e.slow}}if(n.status==="not_started"||n.status==="starting"){let p=o?.collectionId??null;return p&&n.status==="starting"?{kind:"opening",collectionId:p,displayName:o?.displayName??null,slow:!!e.slow}:{kind:"starting"}}if(n.status==="signed_out")return e.openingUnsynced&&!n.problem?{kind:"starting"}:{kind:"signed_out",notice:n.problem?Ms(n,t):null};if(n.status==="blocked"){let p=n.selectedCollectionId??o?.collectionId??null;return n.problem==="recovery_account_mismatch"?{kind:"problem",collectionId:p,problem:Rs(n,{cpOrigin:t,recoveryAccountLabel:n.recoveryAccountLabel})}:{kind:"problem",collectionId:p,problem:p&&n.removedScopeIds?.includes(p)?Hr("installation_scope_removed",t):Ms(n,t)??Hr("open_failed",t)}}if(n.status==="needs_unlock"&&n.selectedCollectionId){let p=n.selectedCollectionId,d=n.unlock??null;return d?{kind:"needs_unlock",collectionId:p,displayName:n.collections.find(u=>u.collectionId===p)?.displayName??o?.displayName??null,mode:d.mode,unlocking:d.unlocking,problem:d.problem===null?null:Ms(d.problem,t)??Hr("unlock_failed",t)}:{kind:"problem",collectionId:p,problem:Hr("open_failed",t)}}if(i?.state==="approval_required"&&o?.collectionId&&n.removedScopeIds?.includes(o.collectionId))return{kind:"problem",collectionId:o.collectionId,problem:Hr("installation_scope_removed",t)};if(i?.state==="approval_required"&&o?.collectionId)return{kind:"needs_approval",collectionId:o.collectionId,displayName:o.displayName,declined:i.problem==="application_selection_not_approved"};if(i?.state==="pending"&&o?.collectionId)return{kind:"opening",collectionId:o.collectionId,displayName:o.displayName,slow:!!e.slow};let a=i?.usable??(n.status==="ready"||n.status==="setup_required"?n.collections.find(p=>p.collectionId===n.selectedCollectionId)??null:null);if(n.status==="setup_required"&&a)return n.readiness.assessment?.status==="incompatible"?{kind:"problem",collectionId:a.collectionId,problem:Ms(n.readiness,t)??Hr("incompatible",t)}:{kind:"needs_setup",collectionId:a.collectionId,collection:a};if(n.status==="ready"&&a&&Wf(e.connection,a.collectionId))return{kind:"ready",collectionId:a.collectionId,collection:a,connection:e.connection,rechecking:n.readiness.checking,problem:null,unavailableTypes:n.readiness.assessment?.unavailableTypes??[]};let c=n.status==="opening"||n.status==="ready"||i?.state==="opening"||i?.state==="usable",l=n.selectedCollectionId??o?.collectionId??null;if(c&&l){let p=n.collections.find(d=>d.collectionId===l)?.displayName??o?.displayName??null;return{kind:"opening",collectionId:l,displayName:p,slow:!!e.slow}}return e.startPending&&s&&n.status==="unselected"&&!n.problem&&i?.state==="none"?{kind:"starting"}:{kind:"choosing",lastApproval:i?.lastApproval??null}}function wq(n,e,t){let i=t.previous;return i?.kind==="needs_setup"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&e.readiness.checking?i:i?.kind==="unsynced"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&Wf(t.connection,i.collectionId)?{...i,connection:t.connection,rechecking:!0}:!i||i.kind!=="ready"||n.kind==="ready"||!Wf(t.connection,i.collectionId)||e.selectedCollectionId!==i.collectionId?n:n.kind==="opening"&&n.collectionId===i.collectionId?{...i,connection:t.connection,rechecking:!0,problem:null}:n.kind==="problem"&&n.problem.transient?{...i,connection:t.connection,rechecking:!0,problem:n.problem}:n}function p1(n,e){return n?.kind==="ready"&&(e===void 0||n.collectionId===e)}xl();vp();Bn();nm();bt();var JT=["http","https","file","javascript","data","blob","about","capacitor","chrome-extension","moz-extension"];function _I(n,e){if(typeof n!="string"||!n||n.length>2048||n.includes("*"))return!1;let t=e&&typeof e=="object"?e.redirect_uris:void 0;if(!Array.isArray(t)||!t.includes(n))return!1;let{id:i,homepage:o}=e,s;try{s=new URL(n)}catch{return!1}if(s.username||s.password||s.hash)return!1;if(s.protocol==="https:"||s.protocol==="http:"){let a;try{a=new URL(String(o))}catch{return!1}return s.origin===a.origin&&(s.protocol==="https:"||Ye(s.origin))}let r=s.protocol.slice(0,-1);return typeof i=="string"&&r.includes(".")&&/^[a-z][a-z0-9+.-]*$/.test(r)&&!JT.includes(r)&&(r===i||r.startsWith(`${i}.`))&&s.hostname.length>0}am();Bn();ne();bt();var Ii=n=>A("unavailable","application asset unavailable",n),tL=()=>A("cancelled","application asset read fenced","application_asset_fenced");function Sr(n){if(n.aborted)throw tL()}function CI(n,e){let t=Object.freeze({...n}),i=Object.freeze({...e}),o,s;try{o=new URL(t.url),s=new URL(i.origin)}catch{throw Ii("application_asset_binding")}if(!Et(i.origin)||s.protocol!==o.protocol||!zo(i.environment)||kr(i.environment)&&!Bo(i.origin)||An(o)!==i.origin||o.username||o.password||o.search||o.hash||!/^[0-9a-f]{64}$/.test(t.sha256)||!Number.isSafeInteger(t.bytes)||t.bytes<1||!Number.isSafeInteger(t.maxBytes)||t.maxBytes<t.bytes||t.maxBytes>4*1024*1024)throw Ii("application_asset_binding");let r=i.fetch??globalThis.fetch;if(typeof r!="function")throw Ii("application_asset_unavailable");let a=new URL(o.href);return a.searchParams.set("mdbase-sdk-asset",t.sha256),async({signal:c})=>{Sr(c);let l=null,p;try{globalThis.caches&&(l=await globalThis.caches.open("mdbase.sdk.application-assets.v1"),p=await l.match(a.href))}catch{}let d=p!==void 0;if(!p){Sr(c);try{p=await r(o.href,{signal:c,credentials:"omit",cache:"force-cache",redirect:"error"})}catch{throw Sr(c),Ii("application_asset_fetch")}}let u=p.body?.getReader();if(!u)throw Sr(c),Ii("application_asset_response");let f=!1,h=null,m=()=>h??=Promise.resolve().then(async()=>{try{await u.cancel()}catch{throw Ii("application_asset_stop_failed")}}),b=()=>{m().catch(()=>{})};c.addEventListener("abort",b,{once:!0});try{if(Sr(c),!p.ok||p.redirected||p.url&&p.url!==o.href)throw Ii("application_asset_response");let w=p.headers.get("content-length");if(w!==null&&(!/^(?:0|[1-9][0-9]*)$/.test(w)||Number(w)!==t.bytes))throw Ii("application_asset_binding");let g=new Uint8Array(t.bytes),y=0;for(;;){let _=await u.read();if(Sr(c),_.done){f=!0;break}if(!(_.value instanceof Uint8Array)||_.value.byteLength>t.bytes-y)throw Ii("application_asset_binding");g.set(_.value,y),y+=_.value.byteLength}if(y!==t.bytes)throw Ii("application_asset_binding");let v=new Uint8Array(await crypto.subtle.digest("SHA-256",g));if(Sr(c),Array.from(v,_=>_.toString(16).padStart(2,"0")).join("")!==t.sha256)throw Ii("application_asset_binding");if(Sr(c),l&&!d)try{await l.put(a.href,new Response(g))}catch{}return Sr(c),g}catch(w){throw Sr(c),Q(w)?w:Ii("application_asset_response")}finally{c.removeEventListener("abort",b);try{(!f||c.aborted)&&await m()}finally{u.releaseLock()}}}}Vo();Bn();ne();im();bt();var Ds={runtime:{sha256:"8b4e96047bdaeb6df873e7f33368509de6bfa5d3427542dae7be05430f519f5a",bytes:3849226,maxBytes:3849226,source:{repository:"mdbase-dev/mdbase-connect",commit:"5ca14dd53e24941411cce2f6bc793fe1736a69a9"}},sqlite:{sha256:"2ee8f3dab694532afc8840e07703127287662d08b74e6ff50491ce63f00d5752",bytes:868907,maxBytes:11e5,initializer:{sha256:"a6d3fe46aa3f924e7686329f97b0564549ef1f787e0c19924179aef7f72bcc01",bytes:642742},asyncProxy:{sha256:"9f1970e05ee07a79332498858740b705eeb1dcee03bc150f6f690bc0fb5f0a06",bytes:32505}}};var lm={},iL=Object.freeze({sha256:Ds.runtime.sha256,bytes:Ds.runtime.bytes,maxBytes:Ds.runtime.maxBytes}),rL=Object.freeze({sha256:Ds.sqlite.sha256,bytes:Ds.sqlite.bytes,maxBytes:Ds.sqlite.maxBytes}),sd=()=>A("unavailable","SDK packaged application assets unavailable","application_packaged_assets_unavailable");function OI(n,e){if(!zo(n))throw sd();let t=Ns();xi({environment:n,appOrigin:e,release:t});let i,o;try{let a=new URL(lm.url);if(An(a)!==e||a.username||a.password||(i=new URL("../native/runtime.wasm",lm.url),o=new URL("../native/sqlite3.wasm",lm.url),An(i)!==e||An(o)!==e))throw sd()}catch{throw sd()}let s=(a,c)=>Object.freeze({url:a.href,...c}),r=async a=>{let c=globalThis.WorkerGlobalScope;if(typeof c!="function"||!(globalThis instanceof c))throw sd();let l=new URL("../native/sqlite3.js",lm.url),{default:p}=await import(l.href);return globalThis.sqlite3ApiConfig={disable:{vfs:{opfs:!0,"opfs-wl":!0}}},p(a)};return Object.freeze({release:()=>Ns(),runtime:s(i,iL),sqlite:s(o,rL),initializeSqlite:r})}var oL="mdbase:startup:",sL=new Set(["signed_out","authorizing","choosing","needs_approval","needs_setup","problem","unavailable","closed"]);function aL(){let n=globalThis.performance;return typeof n?.now=="function"&&typeof n.measure=="function"?n:null}var cm=class{clock=aL();began=this.clock?.now()??0;stage=null;since=this.began;done=this.clock===null;measure(e,t,i){try{this.clock?.measure(`${oL}${e}`,{start:t,end:i})}catch{}}async time(e,t){if(this.done)return t();let i=this.clock.now();try{return await t()}finally{this.measure(e,i,this.clock.now())}}observe(e){if(this.done)return;let t=e.kind==="opening"&&e.progress?`opening:${e.progress}`:e.kind;if(t===this.stage)return;let i=this.clock.now();this.stage!==null&&this.measure(this.stage,this.since,i),this.stage=t,this.since=i;let o=e.kind==="ready"||e.kind==="unsynced";o&&this.measure("total",this.began,i),(o||sL.has(e.kind))&&(this.done=!0)}};im();bt();Vo();Bn();var dn=class extends Error{constructor(t){super("SDK collection selection unavailable");this.code=t;this.name="ApplicationSelectionError"}code},ad=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",pn=(n,e,t=null)=>Object.freeze({requestedCollectionId:n,source:e,problem:t});function RI(n,e){return n.source!=="none"?n:e.storedId!==void 0&&e.storedId!==null?ad(e.storedId)?pn(e.storedId,"stored"):pn(null,"stored","application_selection_invalid"):e.collections.length>1024||e.collections.some(t=>!ad(t.collectionId))||new Set(e.collections.map(t=>t.collectionId)).size!==e.collections.length?pn(null,"none","application_selection_metadata"):e.preferredId!==void 0&&e.preferredId!==null?ad(e.preferredId)&&e.collections.some(t=>t.collectionId===e.preferredId)?pn(e.preferredId,"preferred"):pn(null,"preferred","application_selection_metadata"):e.collections.length===1?pn(e.collections[0].collectionId,"sole"):pn(null,"none")}var pm=class{port;origin;parameter;fallback;listeners=new Set;snapshot=pn(null,"none");stopListening=null;started=!1;closed=!1;constructor(e,t={},i=null){let o,s;try{o=new URL(e),s=new URL(t.fallbackPath??"/",o)}catch{throw new dn("application_selection_binding")}let r=t.parameter??"collection";if(!Et(e)||An(o)!==e||An(s)!==e||s.username||s.password||s.search||s.hash||typeof r!="string"||!/^[a-z][a-zA-Z0-9_.-]{0,63}$/.test(r)||["code","state","error","error_description"].includes(r))throw new dn("application_selection_binding");this.origin=e,this.parameter=r,this.fallback=s.href,this.port=i}getSnapshot(){return this.snapshot}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.snapshot:(this.started=!0,this.stopListening=this.port?.listen(()=>{this.closed||this.publish(this.read())})??null,this.publish(this.read()),this.snapshot)}check(){if(this.closed)throw new dn("application_selection_fenced")}url(){let e;try{e=new URL(this.port.href())}catch{throw new dn("application_selection_binding")}if(An(e)!==this.origin||e.username||e.password)throw new dn("application_selection_binding");return e}read(){if(!this.port)return pn(null,"none");let e;try{e=this.url().searchParams.getAll(this.parameter)}catch{return pn(null,"url","application_selection_binding")}return e.length===0?pn(null,"none"):e.length!==1?pn(null,"url","application_selection_duplicate"):e[0]===""?pn(null,"url","application_selection_empty"):ad(e[0])?pn(e[0],"url"):pn(null,"url","application_selection_invalid")}publish(e){if(!(this.snapshot.requestedCollectionId===e.requestedCollectionId&&this.snapshot.source===e.source&&this.snapshot.problem===e.problem)){this.snapshot=e;for(let t of[...this.listeners])try{t()}catch{}}}select(e,t={}){if(this.check(),e!==null&&!ad(e))throw new dn("application_selection_invalid");let i=t.history??"replace";if(i!=="push"&&i!=="replace")throw new dn("application_selection_binding");if(this.port){let o=this.url(),s=o.href;e===null?o.searchParams.delete(this.parameter):o.searchParams.set(this.parameter,e),o.href!==s&&this.port.write(o.href,i)}return this.publish(pn(e,e===null?"none":"user")),this.snapshot}returnUrl(e){this.check();try{let t=new URL(e,this.origin);if(An(t)===this.origin&&!t.username&&!t.password)return t.href}catch{}return this.fallback}close(){if(this.closed)return;this.closed=!0;let e=this.stopListening;this.stopListening=null,e?.(),this.listeners.clear()}};function EI(){if(typeof window>"u"||!window.location||!window.history)return null;let n=window;return Object.freeze({href:()=>n.location.href,write:(e,t)=>{t==="push"?n.history.pushState(n.history.state,"",e):n.history.replaceState(n.history.state,"",e)},listen:e=>(n.addEventListener("popstate",e),()=>n.removeEventListener("popstate",e))})}var lL=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",Il=n=>n.status==="ready"||n.status==="setup_required",Cl=n=>n.status==="needs_unlock",MI=n=>n.signIn?.state==="paired"&&(n.status==="unselected"||n.status==="blocked"||Il(n)||Cl(n)),cL=n=>n.status==="not_started"||n.status==="starting"||n.status==="signed_out"||n.status==="authorizing",Pr=(n,e)=>e===null?null:n.collections.find(t=>t.collectionId===e)??null,dm=class{browser;session;memory;preferredId;schedule;listeners=new Set;stops=[];value;key="";startTarget=null;startApplied=!1;startHeld=!0;failed=null;before=null;attempted=void 0;lastRequested=null;opening=null;approval=null;lastApproval=null;declined=null;remembered=void 0;queued=!1;started=!1;closed=!1;constructor(e){this.browser=e.browser,this.session=e.session,this.memory=e.memory??null,this.preferredId=e.preferredId??null,this.schedule=e.schedule??(t=>{setTimeout(t,0)}),this.value=this.derive(),this.key=this.keyOf(this.value)}startPending(){return this.startHeld}keyOf(e){return JSON.stringify(e)+(this.startHeld?"|start":"")}getSnapshot(){return this.value}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.value:(this.started=!0,this.browser.start(),this.stops.push(this.browser.subscribe(this.changed),this.session.subscribe(this.changed)),this.changed(),this.value)}select(e,t={}){this.check(),this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}),this.declined=null,this.refresh(),e===null&&this.remember(null);let i=this.session.getSnapshot();return e!==null&&i.selectedCollectionId===e&&i.status==="opening"?(this.attempted=e,Promise.resolve(this.value)):this.whenIdle(async()=>{let o=this.session.getSnapshot();this.requested().requestedCollectionId===e&&((e===null?o.selectedCollectionId===null&&o.status!=="opening":o.selectedCollectionId===e&&(Il(o)||Cl(o))||!Pr(o,e))||await this.run(e,t,!0))}).then(()=>this.value)}chooseAnother(e={}){return this.select(null,{...e,history:"push"})}approve(e,t={}){if(this.check(),e!=null&&!lL(e))return Promise.reject(new dn("application_selection_invalid"));if(this.approval&&!this.approval.settled)return Promise.reject(new dn("application_selection_busy"));e!=null&&e!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}));let i=this.session.getSnapshot().signIn,o=i?.nativeSelection?.requestId??i?.collectionSelection?.requestId??null,s,r=e===null?null:this.requested().requestedCollectionId;try{s=this.session.authorize({...t.signal?{signal:t.signal}:{},collectionHint:r})}catch(p){return Promise.reject(p)}let a=r===null?"add":"collection",c=new Set(this.session.getSnapshot().collections.map(p=>p.collectionId)),l={receipt:o,kind:a,collectionId:r,before:c,settled:!1};return this.approval=l,this.lastApproval=null,this.declined=null,this.attempted=void 0,this.refresh(),s.then(()=>(l.settled=!0,this.changed(),this.value),p=>{if(this.approval===l){this.approval=null;let d=p?.code;(d==="cancelled"||d==="aborted")&&(this.lastApproval=Object.freeze({kind:a,outcome:"closed",collectionId:r}))}throw this.changed(),p})}clearLastApproval(){this.check(),this.lastApproval=null,this.refresh()}reauthorize(e={}){this.check();let t=this.value.usable?.collectionId??this.requested().requestedCollectionId;return t===null?Promise.reject(new dn("application_selection_empty")):this.approve(t,e)}resync(){this.closed||(this.attempted=void 0,this.failed=null,this.approval=null,this.changed())}close(){if(!this.closed){this.closed=!0;for(let e of this.stops.splice(0))try{e()}catch{}this.browser.close(),this.listeners.clear()}}check(){if(this.closed)throw new dn("application_selection_fenced")}requested(){let e=this.browser.getSnapshot(),t=this.startTarget;return t&&e.source==="user"&&e.requestedCollectionId===t.requestedCollectionId?t:e}changed=()=>{this.closed||(this.refresh(),!(this.queued||!this.started)&&(this.queued=!0,this.schedule(()=>{this.queued=!1,this.reconcile()})))};refresh(){let e=this.requested().requestedCollectionId;if(e!==this.lastRequested&&(this.lastRequested=e,this.attempted=void 0,this.failed=null,this.declined!==e&&(this.declined=null)),e!==null&&this.attempted===e){let o=this.session.getSnapshot();o!==this.before&&(o.status==="blocked"?o.selectedCollectionId===e:o.status==="unselected"&&o.problem!==null)&&(this.failed=e)}let t=this.derive(),i=this.keyOf(t);if(t.state==="usable"&&this.remember(t.usable.collectionId),i!==this.key){this.key=i,this.value=Object.freeze(t);for(let o of[...this.listeners])try{o()}catch{}}}remember(e){if(!(!this.memory||this.remembered===e)){this.remembered=e;try{this.memory.write(e)}catch{}}}derive(){let e=this.session.getSnapshot(),t=this.requested(),i=t.requestedCollectionId,o=Pr(e,i),s=Il(e)?Pr(e,e.selectedCollectionId):null,r,a=null;t.problem?(r="invalid",a=t.problem):this.approval?r="approving":i===null?r="none":s?.collectionId===i?r="usable":e.selectedCollectionId===i&&(e.status==="blocked"||e.status==="opening"||Cl(e))?r=e.status==="blocked"?"blocked":"opening":MI(e)?o?r="opening":this.session.listing?.()?r="pending":(r="approval_required",this.declined===i&&(a="application_selection_not_approved")):r="pending";let c=this.approval?Object.freeze({kind:this.approval.kind,collectionId:this.approval.collectionId,reopenable:this.approval.settled}):null;return Object.freeze({state:r,problem:a,approval:c,lastApproval:this.lastApproval,usable:s?Object.freeze({...s}):null,requested:Object.freeze({collectionId:i,source:t.source,displayName:o?.displayName??null,approved:o!==null})})}async whenIdle(e){for(;this.opening;)await this.opening;this.check(),await e()}run(e,t={},i=!1){this.attempted=e,this.failed=null,this.before=this.session.getSnapshot();let o=t.signal?{signal:t.signal}:{},s=Promise.resolve().then(()=>e===null?this.session.clear(o):this.session.open(e,o)),r=s.then(()=>{},()=>{}).finally(()=>{this.opening===r&&(this.opening=null,this.changed())});return this.opening=r,i?s.then(()=>{}):r}async reconcile(){if(this.closed||this.opening)return;let e=this.session.getSnapshot();if(this.approval)if(this.approval.settled&&e.status==="signed_out"&&e.problem!==null){let o=this.approval;this.approval=null,this.attempted=void 0,this.lastApproval=Object.freeze({kind:o.kind,outcome:e.problem==="approval_window_closed"?"closed":"declined",collectionId:o.collectionId}),this.refresh()}else{if(!this.approval.settled||cL(e))return;let o=e.signIn?.nativeSelection;if(o&&o.requestId!==this.approval.receipt&&!Pr(e,o.collectionId)&&this.session.listing?.())return;this.finishApproval(e)}if(!MI(e))return;if(!this.startApplied){if(this.browser.getSnapshot().source==="none"){let o=null;try{o=this.memory?.read()??null}catch{}if(o!==null&&!Pr(e,o)&&this.session.listing?.()){this.startHeld=!1,this.refresh();return}this.startApplied=!0;let s=RI(this.browser.getSnapshot(),{storedId:o,preferredId:this.preferredId,collections:e.collections});s.requestedCollectionId!==null&&!s.problem&&(this.browser.select(s.requestedCollectionId,{history:"replace"}),this.startTarget=s)}else this.startApplied=!0;this.startHeld=!1,this.refresh()}let t=this.requested(),i=t.requestedCollectionId;if(!t.problem){if(i===null){this.attempted!==null&&e.selectedCollectionId!==null&&(Il(e)||Cl(e))&&this.run(null);return}if(e.selectedCollectionId===i&&(Il(e)||Cl(e)||e.status==="opening")){this.attempted=i,this.failed=null;return}if(e.selectedCollectionId===i&&e.status==="blocked"){this.failed=i;return}Pr(e,i)&&(this.attempted===i&&(this.failed!==i||e.status!=="unselected"||e.problem!==null)||(this.failed=null,this.run(i)))}}finishApproval(e){let t=this.approval,i=t.receipt;this.approval=null,this.attempted=void 0;let o=u=>u!==null&&Pr(e,u)?t.before.has(u)?"unchanged":"added":e.approval?.outcome==="closed"?"closed":"declined",s=e.signIn?.collectionSelection,r=e.signIn?.nativeSelection,c=(r&&r.requestId!==i&&Pr(e,r.collectionId)?r.collectionId:null)??(s&&s.requestId!==i&&Pr(e,s.selectedCollectionId)?s.selectedCollectionId:null);if(c!==null){c!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(c,{history:"replace"})),this.lastApproval=Object.freeze({kind:t.kind,outcome:o(c),collectionId:c}),this.refresh(),e.selectedCollectionId===c&&(Il(e)||Cl(e)||e.status==="opening")?this.attempted=c:this.run(c);return}let l=this.requested().requestedCollectionId;l!==null&&!Pr(e,l)&&(this.declined=l);let p=t.kind==="add"?e.collections.find(u=>!t.before.has(u.collectionId))?.collectionId??null:null,d=t.kind==="add"?p:t.collectionId??l;this.lastApproval=Object.freeze({kind:t.kind,outcome:o(d),collectionId:d}),this.refresh()}};bd();l_();ne();var Vl="unsynced",ij="current";var k_="moved.",$m=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;var S_=class extends Error{constructor(t){super(`app unsynced collection: ${t}`);this.reason=t;this.name="AppUnsyncedCollectionError"}reason},si=(n="unavailable")=>new S_(n);function rj(n){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!=="account,collection,device,installation,replica,version")throw si();let e=n,t=[e.account,e.installation,e.collection,e.replica,e.device];if(e.version!==1||t.some(i=>typeof i!="string"||!$m.test(i))||new Set(t).size!==t.length)throw si();return Object.freeze({...e})}function FC(n,e){if(e.throwIfAborted(),!globalThis.indexedDB)throw si();return new Promise((t,i)=>{let o=indexedDB.open(n,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(si("fenced"))};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(s||o.result.objectStoreNames.length)throw si();o.result.createObjectStore(Vl)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{if(r(),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(Vl)){o.result.close(),i(si());return}t(o.result)}})}async function oj(n,e,t,i,o){let s=await FC(n,o);try{return await new Promise((r,a)=>{let c=s.transaction(Vl,i?"readwrite":"readonly",{durability:"strict"}),l=null,p=null;c.onabort=c.onerror=()=>a(p??si()),c.oncomplete=()=>r(l);let d=c.objectStore(Vl),u=d.get(e);u.onsuccess=()=>{try{if(u.result!==void 0){l=t(u.result);return}if(!i)return;let f=t(i());d.add(f,e),l=f}catch(f){p=f,c.abort()}}})}finally{s.close()}}async function sj(n,e,t){let i=await FC(n,e);try{return await new Promise((o,s)=>{let r=i.transaction(Vl,"readwrite",{durability:"strict"}),a,c=null;r.onabort=r.onerror=()=>s(c??si()),r.oncomplete=()=>o(a),t(r.objectStore(Vl),l=>{a=l},l=>{c=l,r.abort()})})}finally{i.close()}}var VC=/^sha256:[0-9a-f]{64}$/;function KC(n){let e=n;if(!e||e.version!==1||!e.revisions||typeof e.revisions!="object"||Array.isArray(e.revisions))throw si();let t=new Map;for(let[i,o]of Object.entries(e.revisions)){if(!$m.test(i)||typeof o!="string"||!VC.test(o))throw si();t.set(i,o)}return t}async function WC(n,e,t){if(!$m.test(e))throw si("binding");return await oj(n,k_+e,KC,null,t)??new Map}function HC(n,e,t,i){for(let[o,s]of t)if(!$m.test(o)||!VC.test(s))return Promise.reject(si("binding"));return sj(n,i,(o,s,r)=>{let a=o.get(ij),c=o.get(k_+e);c.onsuccess=()=>{try{if(a.result===void 0||rj(a.result).collection!==e){r(si());return}let l=c.result===void 0?new Map:KC(c.result);for(let[p,d]of t)l.set(p,d);o.put({version:1,revisions:Object.fromEntries(l)},k_+e),s()}catch(l){r(l)}}})}var O7=720*60*60*1e3;ne();var P_=new WeakMap,aj=100,lj=(n,e)=>`unsynced/1\0${n}\0${e}`;async function zm(n,e,t){try{return await n.get(e,void 0,t)}catch(i){if(Q(i,"not_found"))return null;throw i}}function cj(n,e){let t=n.lastIndexOf("/"),i=n.lastIndexOf("."),o=i>t+1?i:n.length;return`${n.slice(0,o)} ${e}${n.slice(o)}`}async function pj(n,e){let t=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`unsynced/1\0copy\0${n}\0${e}`))).slice(0,16);t[6]=t[6]&15|128,t[8]=t[8]&63|128;let i=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}function dj(n){if(n.document===void 0)throw A("invalid_request","the source record has no document");return{path:n.path,document:n.document}}async function x_(n,e,t={}){let{signal:i}=t,o=t.map??dj;if(n.collection===e.collection)throw A("invalid_request","a collection cannot be transferred into itself");let s=t.ledger?await t.ledger.read(n.collection,i):new Map,r=new Map,a=await e.describe(i?{signal:i}:{}),c=new Set(a.types.map(w=>w.name.toLowerCase())),l=[],p=new Map,d=new Set,u=new Set,f=0;for await(let w of n.pages({},{body:!0,document:!0},i))for(let g of w.records){i?.throwIfAborted();let y=null;if(await zm(e,g.id,i)){let S=s.get(g.id);if(S===void 0&&r.set(g.id,g.revision),S===void 0||S===g.revision){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}if(y=await pj(g.id,g.revision),await zm(e,y,i)){r.set(g.id,g.revision),l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}}let v=await o(g);if(v===null){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"skipped"}));continue}if(!v||typeof v!="object"||v.id!==void 0&&v.id!==g.id)throw A("invalid_request","the transfer map must keep the record ID");r.set(g.id,g.revision);let _=v.path??g.path,k=_;for(let S=2;d.has(k.toLowerCase())||await zm(e,{path:k},i);S++){if(S>aj)throw A("conflict",`no free path beside ${_}`,"path_taken");k=cj(_,S)}d.add(k.toLowerCase());for(let S of v.type?[v.type]:g.types)c.has(S.toLowerCase())||u.add(S);p.set(g.id,Object.freeze({...v,id:y??g.id,path:k})),k!==_&&!y&&f++,l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:y?"changed":"create",path:k,...y?{copyId:y}:k!==_?{renamedFrom:_}:{}}))}let h=new Map;if(t.addTypes&&u.size){let w=new Map((await n.describe(i?{signal:i}:{})).types.map(g=>[g.name.toLowerCase(),g]));for(let g of[...u].sort()){let y=w.get(g.toLowerCase());if(!y?.revision)continue;let v;try{v=(await n.resources.get(y.path,i)).text}catch(_){if(Q(_,"not_found"))continue;throw _}typeof v=="string"&&(h.set(y.name,v),u.delete(g))}}let m=w=>l.filter(g=>g.outcome===w).length,b=Object.freeze({source:n.collection,destination:e.collection,items:Object.freeze(l),missingTypes:Object.freeze([...u].sort()),addTypes:Object.freeze([...h.keys()].sort()),counts:Object.freeze({create:m("create"),present:m("present"),skipped:m("skipped"),renamed:f,changed:m("changed")})});return P_.set(b,Object.freeze({inputs:p,types:h,map:t.map,ledger:t.ledger,settle:r})),b}async function GC(n,e,t,i){let o=P_.get(n);if(!o)throw A("invalid_request","plan the transfer first");if(e.collection!==n.source||t.collection!==n.destination)return!1;let s=await x_(e,t,{...o.map?{map:o.map}:{},...o.ledger?{ledger:o.ledger}:{},...i?{signal:i}:{}});return s.counts.create===0&&s.counts.changed===0}async function YC(n,e,t={}){let i=P_.get(n),{signal:o}=t;if(!i)throw A("invalid_request","plan the transfer first");let{inputs:s}=i;if(e.collection!==n.destination)throw A("invalid_request","the plan is for another collection");let r=n.items.filter(m=>m.outcome==="create"||m.outcome==="changed"),a=[],c=[],l=0,p=n.counts.present,d=0,u=()=>{try{t.onProgress?.(Object.freeze({done:d,total:r.length}))}catch{}};i.ledger&&i.settle.size&&await i.ledger.record(n.source,i.settle,o);let f=[],h=[];for(let[m,b]of i.types){o?.throwIfAborted();try{await e.createType(b,o?{signal:o}:{}),f.push(m)}catch(w){o?.throwIfAborted(),Q(w,"conflict")?f.push(m):h.push(Object.freeze({name:m,code:Q(w)?w.code:"unavailable"}))}}u();for(let m of r){o?.throwIfAborted();try{let b=await e.create(s.get(m.sourceId),{intent:lj(n.source,m.copyId??m.sourceId),...o?{signal:o}:{}});c.push(b.mutationId),l++}catch(b){o?.throwIfAborted(),await zm(e,m.copyId??m.sourceId,o).catch(()=>null)?p++:a.push(Object.freeze({sourceId:m.sourceId,code:Q(b)?b.code:"unavailable"}))}d++,u()}return Object.freeze({source:n.source,destination:n.destination,created:l,present:p,skipped:n.counts.skipped,failed:Object.freeze(a),addedTypes:Object.freeze(f),failedTypes:Object.freeze(h),mutations:Object.freeze(c),retired:!1})}Km();Nf();Ko();Yf();var tO="mdbn-app-tabs/1",I_="\0mdbn-port";var Pd=n=>typeof n=="string"&&/^[0-9a-f-]{36}$/.test(n);function mj(n){if(!n||typeof n!="object")return null;let e=n;switch(e.k){case"join":case"leave":return Pd(e.tab)?e:null;case"leader":case"bye":case"fault":case"signedOut":case"signedIn":return Pd(e.leader)?e:null;case"joined":return Pd(e.tab)&&Pd(e.leader)&&typeof e.binding=="string"?e:null;case"m":return Pd(e.tab)&&typeof e.up=="boolean"&&Number.isSafeInteger(e.s)&&e.s>=0?e:null;default:return null}}function C_(n){if(!n||typeof n!="object")return!1;let e=Object.getPrototypeOf(n);return e===Object.prototype||e===null}function O_(n,e,t=0){return n instanceof MessagePort?{[I_]:e(n)}:t>=6?n:Array.isArray(n)?n.map(i=>O_(i,e,t+1)):C_(n)?Object.fromEntries(Object.entries(n).map(([i,o])=>[i,O_(o,e,t+1)])):n}function R_(n,e,t,i=0){if(C_(n)&&Object.keys(n).length===1&&Number.isSafeInteger(n[I_])){let o=e(n[I_]);return t.push(o),o}return i>=6?n:Array.isArray(n)?n.map(o=>R_(o,e,t,i+1)):C_(n)?Object.fromEntries(Object.entries(n).map(([o,s])=>[o,R_(s,e,t,i+1)])):n}var Wm=class{constructor(e,t){this.send=e;this.up=t;this.next=t?1:2}send;up;streams=new Map;next;bridge(e,t){this.streams.set(t,e),e.onmessage=i=>{let o=i.ports.length?O_(i.data,s=>{let r=this.next;return this.next+=2,this.bridge(s,r),r}):i.data;try{this.send(t,o)}catch{}}}deliver(e,t){let i=this.streams.get(e);if(!i)return;let o=[],s=R_(t,r=>{let a=new MessageChannel;return this.bridge(a.port1,r),a.port2},o);try{i.postMessage(s,o)}catch{for(let r of o)r.close()}}close(){for(let e of this.streams.values()){e.onmessage=null;try{e.close()}catch{}}this.streams.clear()}},Hm=class{constructor(e,t,i,o=()=>{}){this.env=t;this.lost=i;this.signedInElsewhere=o;this.base=e.storageNamespace===void 0?`${tO}/${e.cpOrigin}/${e.appId}/${e.build}`:`${tO}/namespace/${JSON.stringify([e.cpOrigin,e.appId,e.build,e.storageNamespace])}`}env;lost;signedInElsewhere;tab=crypto.randomUUID();base;channel=null;presence=null;leading=null;hub=null;follower=null;signingOut=!1;announced=!1;joining=null;get leader(){return this.leading!==null}open(){if(this.channel)return this.channel;let e=new this.env.BroadcastChannel(this.base);return e.onmessage=t=>this.received(mj(t.data)),this.channel=e,e}post(e){this.channel?.postMessage(e)}hold(e,t,i){return new Promise((o,s)=>{let r=c=>{if(!c){o(null);return}return new Promise(l=>o(l))};(t?this.env.locks.request(e,{ifAvailable:!0},r):this.env.locks.request(e,{signal:i},r)).catch(s)})}async elect(e){if(e.throwIfAborted(),this.open(),this.presence??=await this.hold(`${this.base}/tab/${this.tab}`,!0),e.throwIfAborted(),this.leading||(this.leading=await this.hold(`${this.base}/leader`,!0)),this.leading)return e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};let t=new AbortController,i=()=>t.abort();e.addEventListener("abort",i,{once:!0});let o=this.hold(`${this.base}/leader`,!1,t.signal),s;try{s=await new Promise((p,d)=>{o.then(u=>{u&&p({release:u})},()=>{}),this.joining={resolve:p,reject:d},e.addEventListener("abort",()=>d(e.reason),{once:!0}),this.post({k:"join",tab:this.tab})})}catch(p){throw this.joining=null,t.abort(),p}finally{e.removeEventListener("abort",i)}if(this.joining=null,"release"in s)return this.leading=s.release,e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};e.aborted&&(t.abort(),e.throwIfAborted());let r=new MessageChannel,a=this.tab,c=new Wm((p,d)=>this.post({k:"m",tab:a,up:!0,s:p,d}),!0);c.bridge(r.port2,0);let l={leader:s.leader,tunnel:c,wait:t,port:r.port1,left:!1,signedOut:!1};return this.follower=l,o.then(p=>{if(p){if(this.follower!==l||l.left){p();return}this.leading=p,this.departed(l)}},()=>{}),{kind:"follower",port:r.port1,binding:s.binding,leave:()=>this.leave(l)}}lead(e){!this.leading||this.hub||(this.hub={followers:new Map,worker:e,faulted:!1},this.post({k:"leader",leader:this.tab}))}fault(){!this.hub||this.hub.faulted||(this.hub.faulted=!0,this.post({k:"fault",leader:this.tab}))}signedOut(){this.hub&&(this.signingOut=!0,this.post({k:"signedOut",leader:this.tab}))}signedIn(){!this.hub||this.announced||this.signingOut||(this.announced=!0,this.post({k:"signedIn",leader:this.tab}))}resign(){let e=this.hub,t=this.signingOut;this.hub=null,this.signingOut=!1,this.announced=!1,e&&this.post({k:"bye",leader:this.tab,...t?{signedOut:!0}:{}});let i=this.leading;if(this.leading=null,i?.(),e){for(let o of e.followers.values())o.watch.abort(),o.tunnel.close();e.followers.clear()}}leave(e){e.left||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower===e&&(this.follower=null,this.post({k:"leave",tab:this.tab})))}departed(e,t=!1){e.left||this.follower!==e||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower=null,this.lost(t||e.signedOut))}release(){this.joining?.reject(new DOMException("released","AbortError")),this.joining=null,this.follower&&this.leave(this.follower),this.resign();let e=this.presence;this.presence=null,e?.(),this.channel&&(this.channel.onmessage=null,this.channel.close(),this.channel=null)}received(e){if(!e)return;let t=this.hub,i=this.follower;switch(e.k){case"join":{if(!t||t.followers.has(e.tab)||e.tab===this.tab)return;let o=crypto.randomUUID(),s=new MessageChannel,r=e.tab,a=new Wm((l,p)=>this.post({k:"m",tab:r,up:!1,s:l,d:p}),!1);a.bridge(s.port1,0);let c=new AbortController;t.followers.set(r,{binding:o,tunnel:a,watch:c});try{t.worker.attach(s.port2,o)}catch{t.followers.delete(r),a.close();return}this.post({k:"joined",tab:r,binding:o,leader:this.tab}),t.faulted&&this.post({k:"fault",leader:this.tab}),this.hold(`${this.base}/tab/${r}`,!1,c.signal).then(l=>{l?.(),this.drop(t,r)},()=>{});return}case"leave":t&&this.drop(t,e.tab);return;case"joined":if(e.tab===this.tab&&this.joining){let o=this.joining;this.joining=null,o.resolve({binding:e.binding,leader:e.leader})}return;case"leader":this.joining&&this.post({k:"join",tab:this.tab});return;case"bye":i&&i.leader===e.leader&&this.departed(i,e.signedOut===!0);return;case"signedOut":i&&i.leader===e.leader&&(i.signedOut=!0);return;case"signedIn":!t&&!i&&!this.joining&&e.leader!==this.tab&&this.signedInElsewhere();return;case"fault":i&&!i.left&&i.leader===e.leader&&i.port.dispatchEvent(new MessageEvent("messageerror"));return;case"m":e.up&&t?t.followers.get(e.tab)?.tunnel.deliver(e.s,e.d):!e.up&&i&&e.tab===this.tab&&i.tunnel.deliver(e.s,e.d);return}}drop(e,t){let i=e.followers.get(t);if(i){e.followers.delete(t),i.watch.abort(),i.tunnel.close();try{e.worker.detach(i.binding)}catch{}}}};function Cr(n){try{return n()}catch{return}}function yj(){let n=Cr(()=>globalThis.crypto?.subtle),e=Cr(()=>globalThis.navigator?.storage),t=Cr(()=>typeof e?.getDirectory=="function"?()=>e.getDirectory.call(e):void 0);return{subtle:n,abortSignalAny:Cr(()=>typeof AbortSignal=="function"&&typeof AbortSignal.any=="function")===!0,randomUUID:Cr(()=>typeof globalThis.crypto?.randomUUID=="function")===!0,worker:Cr(()=>typeof Worker=="function")===!0,messageChannel:Cr(()=>typeof MessageChannel=="function")===!0,locks:Cr(()=>typeof globalThis.navigator?.locks?.request=="function")===!0,broadcastChannel:Cr(()=>typeof BroadcastChannel=="function")===!0,indexedDB:Cr(()=>typeof globalThis.indexedDB<"u")===!0,getDirectory:t}}async function nO(n=yj()){let e=[];if(n.subtle||e.push("web_crypto"),n.abortSignalAny||e.push("abort_signal_any"),n.randomUUID||e.push("random_uuid"),n.worker||e.push("worker"),n.messageChannel||e.push("message_channel"),n.locks||e.push("web_locks"),n.broadcastChannel||e.push("broadcast_channel"),n.indexedDB||e.push("indexed_db"),n.subtle)try{await n.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{e.push("x25519")}if(e.length)return{ok:!1,problem:"browser_unsupported",missing:Object.freeze(e)};if(typeof n.getDirectory!="function")return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])};try{await n.getDirectory()}catch{return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])}}return{ok:!0}}function Gm(n,e,t={pendingForMs:0,connection:"online"}){if(!Number.isSafeInteger(n)||n<0)throw new RangeError("invalid unsynced count");return n===0?{kind:"no_pending_edits",unsynced:0,warning:null}:{kind:"not_yet_synced",unsynced:n,warning:!e.persistent&&(t.pendingForMs>=3e4||t.connection==="offline")?"storage_may_be_evicted":null}}function iO(n){switch(n){case"pending":return"not_yet_synced";case"confirmed":return"saved";case"rejected":return"rejected";case"unknown":return"outcome_unknown";default:throw new RangeError("invalid receipt state")}}var rO="Some changes are only on this device. Stay online so they can sync.";async function Ym(n,e,t=!1){let i=!1;try{i=await n?.persisted()===!0,!i&&t&&(i=await n?.persist?.()===!0)}catch{}return{persistent:i,installed:e}}Xm();var aO=Object.freeze(new Set);function lO(n,e){let t=`mdbase.${n}.forgotten-collections.v1.${encodeURIComponent(e)}`,i=()=>{try{return globalThis.localStorage??null}catch{return null}},o=null,s=()=>{let a=null;try{a=i()?.getItem(t)??null}catch{}if(o&&o.raw===a)return o;let c=null,l=aO;try{let p=a?JSON.parse(a):null;p?.v===1&&typeof p.account=="string"&&p.account.length<=64&&Array.isArray(p.ids)&&p.ids.length<=1024&&p.ids.every(d=>typeof d=="string"&&d.length>0&&d.length<=64)&&(c=p.account,l=Object.freeze(new Set(p.ids)))}catch{}return o={raw:a,account:c,ids:l},o},r=(a,c)=>{try{c.size?i()?.setItem(t,JSON.stringify({v:1,account:a,ids:[...c].slice(-1024)})):i()?.removeItem(t)}catch{}o=null};return Object.freeze({read(a){let c=s();return a&&c.account===a?c.ids:aO},add(a,c){let l=s(),p=new Set(l.account===a?l.ids:[]);p.has(c)||(p.add(c),r(a,p))},remove(a,c){let l=s();if(l.account!==a||!l.ids.has(c))return!1;let p=new Set(l.ids);return p.delete(c),r(a,p),!0},clear(){try{i()?.removeItem(t)}catch{}o=null}})}var kj=new Set(["owner","editor","viewer"]),Yo=(n,e=512)=>typeof n=="string"&&n.length>0&&n.length<=e,Sj=new Set(["unselected","opening","setup_required","ready"]);function cO(n){let e=n;return!e||typeof e!="object"||!Yo(e.collectionId,64)||typeof e.displayName!="string"||e.displayName.length>512||!kj.has(e.role)?null:Object.freeze({collectionId:e.collectionId,displayName:e.displayName,role:e.role})}function pO(n){let e=n;return!e||typeof e!="object"||e.state!=="paired"||!Yo(e.requestId,64)||!Yo(e.installationId,64)||!Yo(e.deviceId,64)||!Yo(e.appId,64)||e.kind!=="app-runtime"&&e.kind!=="mobile"||!Yo(e.verificationUri,2048)||!Yo(e.accountId,64)||!Array.isArray(e.collectionIds)||e.collectionIds.length>1024||!e.collectionIds.every(t=>Yo(t,64))?null:Object.freeze({requestId:e.requestId,installationId:e.installationId,deviceId:e.deviceId,appId:e.appId,kind:e.kind,verificationUri:e.verificationUri,state:"paired",accountId:e.accountId,...typeof e.accountEmail=="string"&&e.accountEmail.length<=320?{accountEmail:e.accountEmail}:{},collectionIds:Object.freeze([...e.collectionIds]),createCollections:e.createCollections===!0,requestedCreateCollections:e.requestedCreateCollections===!0})}function dO(n,e){let t=`mdbase.${n}.session-hint.v1.${encodeURIComponent(e)}`,i=null,o=null,s=()=>{try{return globalThis.localStorage??null}catch{return null}},r=()=>{let c=null;try{c=s()?.getItem(t)??null}catch{return null}if(i&&i.raw===c)return i.value;let l=null;try{let p=c?JSON.parse(c):null,d=p?.v===1?pO(p.signIn):null,u=Array.isArray(p?.collections)&&p.collections.length<=1024?p.collections.map(cO):null;d&&u&&u.every(f=>f!==null)&&(l=Object.freeze({signIn:d,collections:Object.freeze(u)}))}catch{l=null}return i={raw:c,value:l},l},a=()=>{o=null;try{s()?.removeItem(t)}catch{}};return Object.freeze({read:r,clear:a,observe(c){if(c.status==="signed_out"&&c.signIn===null){o!==""&&(a(),o="");return}if(!Sj.has(c.status)||c.signIn?.state!=="paired")return;let l=pO(c.signIn),p=c.collections.map(cO);if(!l||!p.every(u=>u!==null))return;let d=JSON.stringify({v:1,signIn:l,collections:p});if(d!==o){o=d;try{s()?.setItem(t,d)}catch{}}}})}Qb();ne();function zj(n,e){return new Promise((t,i)=>{let o=()=>{clearTimeout(s),i(A("cancelled","The original collection closed."))};if(n.aborted){i(A("cancelled","The original collection closed."));return}let s=setTimeout(()=>{n.removeEventListener("abort",o),t()},e);n.addEventListener("abort",o,{once:!0})})}var Bj=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Hl=Object.freeze({checking:!1,assessment:null,problem:null}),Fj=Object.freeze({capabilities:Hl,contracts:Hl,configuration:Hl,files:Hl,people:Hl,notifications:Hl}),Zo=(n,e)=>{let t=e?Object.freeze({status:e,problem:e==="incompatible"?Object.freeze({code:"incompatible"}):null}):null;return Object.freeze({checking:n,assessment:t,problem:null,facets:Object.freeze({...Fj,configuration:Object.freeze({checking:n,assessment:t,problem:null})})})},ny=n=>n==="approval_required"?"device_approval_required":n,Vj=n=>n.state==="opening"||n.state==="unavailable"&&n.reason!=="sync_required"&&n.reason!=="access_removed"&&n.reason!=="collection_deleted",MO=n=>{if(Q(n)){let e=n.details instanceof Map?n.details.get("availability"):void 0;return typeof e=="string"?ny(e):n.reason??n.code}return"open_failed"},qO=n=>{if(!Q(n))return;let e=wP(n.details);return Object.freeze({name:"MdbaseError",code:n.code,...e?{relay:e}:{}})};function Kj(n){let e=n.manifest?.redirect_uris;return(Array.isArray(e)?e.filter(i=>typeof i=="string"):[]).find(i=>{try{return new URL(i).origin===n.origin}catch{return!1}})??new URL("/",n.origin).href}function TO(n,e,t){if(n.signIn?.state!=="paired"||!e.length&&!t)return n;let i=new Set(n.collections.map(c=>c.collectionId)),o=e.filter(c=>!i.has(c.collectionId)),s=o.length?Object.freeze([...n.collections,...o]):n.collections;if(!t||n.status!=="unselected"||i.has(t.collectionId))return s===n.collections?n:Object.freeze({...n,collections:s});let{problemDetail:r,...a}=n;return Object.freeze({...a,collections:s,status:t.status,selectedCollectionId:t.collectionId,problem:t.problem,transport:null,live:null,...t.problemDetail?{problemDetail:t.problemDetail}:{},..."readiness"in n?{readiness:t.readiness}:{}})}var iy=class{options;loading=null;list=Object.freeze([]);open=null;listed=null;settled=null;refreshing=null;closed=!1;bindings=null;bindingsAccount=null;native=null;revision=0;constructor(e){this.options=e}grants(){let e=this.loading??=(this.options.grants??(async()=>{let{MdbaseAppGrants:t}=await Promise.resolve().then(()=>(EO(),RO));return new t({declaration:this.options.declaration,redirectUri:Kj(this.options.declaration)})}))();return e.catch(()=>{this.loading===e&&(this.loading=null)}),e}changed(){if(!this.closed){this.revision++;try{this.options.onChange()}catch{}}}bind(e,t){let i=t.filter(o=>o.account_id===e);this.bindingsAccount===e&&JSON.stringify(i)===JSON.stringify(this.bindings)||(this.bindingsAccount=e,this.bindings=Object.freeze([...i]),this.settled=null,this.listed=null,this.setList([]))}async nativeAuthorization(e,t,i){if(e.action==="cancel")return this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,null;if(this.closed||i.aborted)throw A("cancelled","Original Native authorization fenced");if(e.action==="prepare"){if(this.native||e.value.authorizationId)throw A("unauthenticated","Original Native preparation unavailable");let a={context:e.value,portal:t,prepared:null,life:new AbortController};this.native=a;let c=AbortSignal.any([i,a.life.signal]),l=await this.grants();if(!l.prepareAuthorization)throw A("unavailable","Native authorization unavailable");let p=btoa(String.fromCharCode(...Uint8Array.from(e.value.challenge.match(/../g),u=>parseInt(u,16)))).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,""),d=await l.prepareAuthorization({authorizationNonce:p,expectedAccountId:e.value.accountId,signal:c});if(a.prepared=d,this.native!==a||c.aborted||d.applicationId!==e.value.appId)throw d.cancel(),A("unauthenticated","Original application registration mismatch");return Object.freeze({authorizationId:d.authorizationId,applicationId:d.applicationId,manifestDigest:d.manifestDigest})}let o=this.native,s=o?.prepared;if(!o||!s||o.portal!==t||o.context.requestId!==e.value.requestId||s.authorizationId!==e.value.authorizationRequestId)throw A("unauthenticated","Original Native preparation unavailable");let r=await s.finish({popup:t,collection:e.value.collectionId,signal:AbortSignal.any([i,o.life.signal])});if(this.native!==o||i.aborted||!r.nativeCompletion)throw A("unauthenticated","Original Native completion unavailable");return r.nativeCompletion}entries(){return this.list}has(e){return this.list.some(t=>t.collectionId===e)||this.open?.id===e}state(){return this.open?.state??null}connection(e){let t=this.open;return t&&t.id===e&&t.state.status==="ready"?t.connection:null}listing(e){return!this.closed&&e!==null&&this.settled!==e}ensure(e){this.settled!==e&&!this.refreshing&&this.refresh(e).catch(()=>{})}refresh(e=this.listed){if(this.closed)return Promise.resolve();if(this.refreshing)return this.refreshing;let t=(async()=>{try{let i=await this.grants(),o=this.bindings,s=[];if(o)for(let a of o)a.account_id===e&&await i.verifiedStoredNativeGrant?.(a)&&s.push(a);let r=await i.collections(o===null?{}:{bindings:s});if(this.closed||o!==this.bindings)return;this.listed=e,this.setList(r)}finally{!this.closed&&e!==null&&this.settled!==e&&(this.settled=e,this.changed())}})().finally(()=>{this.refreshing===t&&(this.refreshing=null)});return this.refreshing=t,t}setList(e){let t=Object.freeze(e.filter(i=>Bj.test(i.collectionId)).map(i=>Object.freeze({collectionId:i.collectionId,displayName:i.displayName,role:i.role??"editor",availability:i.availability,kind:"private"})));JSON.stringify(t)!==JSON.stringify(this.list)&&(this.list=t,this.changed())}setAvailability(e,t){this.list.some(i=>i.collectionId===e&&JSON.stringify(i.availability)!==JSON.stringify(t))&&(this.list=Object.freeze(this.list.map(i=>i.collectionId===e?Object.freeze({...i,availability:t}):i)),this.changed())}set(e,t){if(this.open!==e||e.life.signal.aborted)return;let{problemDetail:i,...o}=e.state,{problemDetail:s,...r}=t,a=r.problem===null?void 0:s??(r.problem===void 0?i:void 0);e.state=Object.freeze({...o,...r,...a?{problemDetail:a}:{}}),this.changed()}async openCollection(e,t){if(this.closed)throw A("cancelled","Private collections closed","application_entry_fenced");this.close(!1);let i={id:e,life:new AbortController,client:null,setup:null,connection:null,stopLink:null,state:Object.freeze({collectionId:e,status:"opening",problem:null,readiness:Zo(!0,null)})};this.open=i,this.changed();let o=i.life.signal;try{let s=await this.grants(),r=this.bindings?.find(d=>d.account_id===t.account&&d.collection_id===e),a=async()=>{if(this.bindings!==null&&(!r||this.bindingsAccount!==t.account||!this.bindings.includes(r)||!await s.verifiedStoredNativeGrant?.(r)))throw A("unauthenticated","Original account-bound Native grant unavailable");if(o.aborted)throw A("cancelled","Original Native open fenced")};await a();let c=await s.availability(e,{signal:o});if(this.setAvailability(e,c),Vj(c)&&(c.state==="unavailable"&&this.set(i,{status:"blocked",problem:ny(c.reason),readiness:Zo(!1,null)}),c=await s.waitForAvailable(e,{signal:o,timeoutMs:this.options.waitMs??10*6e4,onAvailability:d=>{this.setAvailability(e,d),d.state==="unavailable"?this.set(i,{status:"blocked",problem:ny(d.reason)}):this.set(i,{status:"opening",problem:null,readiness:Zo(!0,null)})}})),c.state!=="available"){if(c.state==="opening")throw A("unavailable","The collection is still getting ready","collection_unavailable");this.set(i,{status:"blocked",problem:ny(c.reason),readiness:Zo(!1,null)});return}this.set(i,{status:"opening",problem:null}),await a();let l=await(this.options.connect??Wj(this.options.declaration))(s,e,o);if(this.open!==i||o.aborted||l.collection!==e){if(l.close(),this.open===i&&!o.aborted)throw A("invalid_request","a different collection opened","collection_mismatch");return}i.client=l,i.setup=s.setup(l),i.connection=Object.freeze({id:e,displayName:this.list.find(d=>d.collectionId===e)?.displayName??"Collection",scope:Object.freeze({account:t.account,installation:t.installation,collection:e}),generation:crypto.randomUUID(),records:l,files:l.files,people:s.people(e,l),isCurrent:()=>this.open===i&&!o.aborted&&!this.closed}),await this.assessOpen(i);let p=0;i.stopLink=l.onLink((d,u)=>{u?this.set(i,{problem:MO(u),problemDetail:qO(u)}):d==="open"&&this.set(i,{problem:null});let f=++p;s.availability(e,{signal:o}).then(h=>{this.open===i&&!o.aborted&&f===p&&this.setAvailability(e,h)}).catch(()=>{})})}catch(s){throw this.open===i&&!o.aborted&&this.set(i,{status:"blocked",problem:MO(s),problemDetail:qO(s),readiness:Zo(!1,null)}),s}}async assessOpen(e){this.set(e,{readiness:Zo(!0,e.state.readiness.assessment?.status??null)});let t=1e3;for(;;){if(this.open!==e||e.life.signal.aborted)throw A("cancelled","The original collection closed.");let i;try{i=await e.setup.assess({signal:e.life.signal})}catch(o){if(!Q(o)||o.code!=="rate_limited")throw o;let s=o.retryAfterMs;await zj(e.life.signal,Math.min(2147483647,Math.max(t,typeof s=="number"&&Number.isFinite(s)?s:0))),t=Math.min(3e4,t*2);continue}if(this.open!==e||e.life.signal.aborted)throw A("cancelled","The original collection closed.");return this.set(e,{status:i==="ready"?"ready":"setup_required",problem:null,readiness:Zo(!1,i)}),i}}current(){let e=this.open;if(!e?.setup||e.life.signal.aborted)throw A("invalid_request","No Private collection is open","application_connection_fenced");return e}isOpen(){return this.open!==null}async assess(){let e=this.current();return await this.assessOpen(e),e.state.readiness}plan(e){return this.current().setup.plan(e)}async apply(e,t={}){let i=this.current(),o=await i.setup.apply(e,t);this.set(i,{status:o==="ready"?"ready":"setup_required",problem:null,readiness:Zo(!1,o)})}async configure(e={}){let i=await this.current().setup.plan(e.signal?{signal:e.signal}:{});await this.apply(i,e)}async add(e,t,i){let o;try{o=await this.grants()}catch(r){throw e.close(),r}let s=await o.authorize({popup:e,...t?{collection:t}:{},...i?{signal:i}:{}});return await this.refresh().catch(()=>{}),s.collectionId}async forget(e){this.open?.id===e&&this.close();let t=await this.grants(),i=this.bindings?.find(o=>o.collection_id===e&&o.account_id===this.bindingsAccount);(this.bindings===null||i&&await t.verifiedStoredNativeGrant?.(i))&&await(i?t.forget(e,{expectedNoisePublicKey:i.client_noise_public_key}):t.forget(e)),this.list.some(o=>o.collectionId===e)&&(this.list=Object.freeze(this.list.filter(o=>o.collectionId!==e)),this.changed())}async forgetAll(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close();try{await(await this.grants()).forgetAllGrants()}finally{this.list=Object.freeze([]),this.listed=null,this.settled=null,this.changed()}}close(e=!0){let t=this.open;if(t){this.open=null,t.life.abort(),t.stopLink?.();try{t.client?.close()}catch{}e&&this.changed()}}dispose(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close(!1),this.closed=!0}};function Wj(n){return async(e,t,i)=>{let{connect:o}=await Promise.resolve().then(()=>(ka(),rf));return o({connector:e.connector(t),app:{name:n.id,version:"1"},signal:i})}}var Iy={};function oN(n){let e=globalThis.document;return!e||typeof e.addEventListener!="function"||e.visibilityState!=="hidden"?Promise.resolve():new Promise((t,i)=>{let o=()=>{e.visibilityState!=="hidden"&&(e.removeEventListener("visibilitychange",o),n.removeEventListener("abort",s),t())},s=()=>{e.removeEventListener("visibilitychange",o),i(n.reason)};e.addEventListener("visibilitychange",o),n.addEventListener("abort",s,{once:!0})})}var XR=new WeakMap;function sN(n){let e=n.unsynced;if(!e)return n;let t=XR.get(n);return t||(t=Object.freeze({...n,status:e.sessionStatus,selectedCollectionId:null,unsynced:null}),XR.set(n,t)),t}var Kd=class extends Error{code="application_not_yet_available";constructor(){super("MdbaseConnect application runtime is not yet available"),this.name="MdbaseApplicationUnavailableError"}},vA=Object.freeze({code:"application_not_yet_available"}),lc=Object.freeze({checking:!1,assessment:null,problem:vA}),aN=Object.freeze({checking:!1,assessment:null,problem:vA,facets:Object.freeze({capabilities:lc,contracts:lc,configuration:lc,files:lc,people:lc,notifications:lc})}),cc=Object.freeze({checking:!1,assessment:null,problem:null}),xy=Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:cc,contracts:cc,configuration:cc,files:cc,people:cc,notifications:cc})}),wA=()=>new Kd,ZR=Object.freeze({state:"none",problem:null,usable:null,requested:Object.freeze({collectionId:null,source:"none",displayName:null,approved:!1})});function lN(){let n={status:"blocked",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:vA.code,timing:null,readiness:aN,selection:ZR},e=Object.freeze({...n,phase:_p(n),sync:null,writes:null,links:null}),t=()=>Promise.reject(wA());return Object.freeze({getSnapshot:()=>e,subscribe:()=>()=>{},start:t,authorize:t,select:t,approve:t,reauthorize:t,refreshCollectionList:t,requestAccess:t,chooseAnother:t,assess:t,configure:t,setup:Object.freeze({plan:t,apply:t}),clearSelection:t,forget:t,deleteCollection:t,unlock:t,setForeground(){throw wA()},close:t,signOut:t})}var cN=n=>typeof Worker=="function"&&typeof MessageChannel=="function"&&xt()!==null&&Et(n);function pN(n,e){if(n===void 0)return null;let t=()=>{throw A("invalid_request","Invalid sign-in opener","application_sign_in_opener")};if(!n||typeof n!="object"||typeof n.open!="function"||n.close!==void 0&&typeof n.close!="function")return t();let i=n.returnUrl;i!==void 0&&(_I(i,e.manifest)||t());let o=n.open.bind(n),s=n.close?.bind(n);return Object.freeze({open:o,...s?{close:s}:{},...i!==void 0?{returnUrl:i}:{}})}async function dN(n){let e=!0;if(n.webPush){let t=globalThis.navigator?.serviceWorker,i;t&&typeof t.getRegistration=="function"&&(e=await Promise.race([(async()=>{let o=await(await t.getRegistration())?.pushManager?.getSubscription();return o?await o.unsubscribe():!0})().catch(()=>!1),new Promise(o=>{i=setTimeout(()=>o(!1),5e3)})]).finally(()=>clearTimeout(i)))}try{n.server==="incomplete"&&console.warn("mdbase: signed out on this device, but mdbase could not be reached to end the session. This device stays listed under the account until it is removed there."),(n.local==="incomplete"||!e)&&console.warn("mdbase: signed out, but some local data on this device could not be removed.")}catch{}}function uN(n){let e=`mdbase.${n}.selected-collection.v1`;return Object.freeze({read:()=>{try{return globalThis.localStorage?.getItem(e)??null}catch{return null}},write:t=>{try{t===null?globalThis.localStorage?.removeItem(e):globalThis.localStorage?.setItem(e,t)}catch{}}})}var pc=class{app;declaration;compiled;lifetime=new AbortController;listeners=new Set;nativeListeners=new Set;selection=null;memory=null;runtime=null;initialization=null;closing=null;closed=!1;foreground=!0;incarnation=0;hidden=null;tabs=null;election=null;signingOut=!1;snapshot=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,readiness:xy});composed=null;hint=null;forgotten=null;handledApproval=null;refreshing=null;refreshedAt=0;approvalPortal=null;revision=0;links=null;cpOrigin=null;opening=null;syncing=null;storagePolicy=null;pendingSave=null;signIn;typeIssues;privates=null;unsyncedFirst;unsyncedTried=!1;unsyncedOpening=0;timing=new cm;overlaid=new WeakMap;constructor(e,t={}){this.declaration=eo(e),this.compiled=Fo(this.declaration);let i=t.readiness?.typeIssues??"block";if(i!=="block"&&i!=="degrade")throw new TypeError('readiness.typeIssues must be "block" or "degrade"');if(this.typeIssues=i,this.unsyncedFirst=t.unsynced===!0,this.signIn=pN(t.signIn,this.declaration),!cN(this.declaration.origin)){this.app=lN();return}try{let s=this.environment().cpOrigin;this.cpOrigin=s,this.hint=dO(this.declaration.storage.applicationNamespace,s),this.forgotten=lO(this.declaration.storage.applicationNamespace,s),this.links=Object.freeze({account:`${s}/account`,manageAccess:`${s}/account/applications`})}catch{}t.followVisibility!==!1&&this.followVisibility(),this.followPageLifecycle(),this.followFocus(),this.followStoragePolicy(),this.memory=uN(this.declaration.storage.applicationNamespace),t.privateCollections!==!1&&(this.privates=new iy({declaration:this.declaration,onChange:()=>{this.revision++,this.notify()}})),this.selection=new dm({browser:new pm(this.declaration.origin,{},EI()),session:this.selectionSession(),memory:this.memory}),this.selection.subscribe(()=>{this.unforgetApproved(),this.notify(!1)});let o=()=>this.getSnapshot();this.app=Object.freeze({getSnapshot:o,subscribe:s=>(this.listeners.add(s),()=>{this.listeners.delete(s)}),start:s=>this.track(()=>{let r=this.unsyncedFirst&&(!this.unsyncedTried||this.runtime===null);return r&&(this.unsyncedOpening++,this.revision++,this.notify(!1)),this.call(async a=>{let c=a.getNativeSnapshot();c.status==="blocked"&&c.signIn&&c.selectedCollectionId===null?await a.queue(()=>a.start(s)):await this.timing.time("session",()=>this.started(a,s));let l=this.choose(),p=l.getSnapshot();p.state==="blocked"&&p.requested.approved&&p.requested.collectionId!==null&&await l.select(p.requested.collectionId,s);let d=a.getNativeSnapshot();this.unsyncedFirst&&!this.unsyncedTried&&d.status==="signed_out"&&!d.unsynced&&!d.signOutResult&&l.getSnapshot().requested.collectionId===null&&(this.unsyncedTried=!0,await this.timing.time("unsynced",()=>a.queue(()=>a.openUnsynced(s))))}).catch(a=>{let c=this.runtime?.getNativeSnapshot();if(!(a?.code==="open_in_another_tab"&&c?.status==="blocked"&&c.problem==="open_in_another_tab"))throw a}).finally(()=>{r&&(this.unsyncedOpening--,this.revision++,this.notify(!1))})}),authorize:s=>this.track(()=>this.approve(void 0,s)),approve:(s,r)=>this.track(()=>this.approve(s,r)),reauthorize:s=>this.track(()=>{let r=this.choose(),a=r.getSnapshot(),c=this.privates?.state()?.collectionId??a.usable?.collectionId??a.requested.collectionId;return c?this.approve(c,s):r.reauthorize(s)}),addPrivateCollection:s=>this.track(()=>this.approve(null,s)),refreshCollectionList:s=>this.track(()=>Promise.all([this.call(r=>r.queue(()=>r.refreshCollections(s))),this.privates?.refresh(this.account()).catch(()=>{})])),requestAccess:(s,r)=>this.requestAccess(s,r),select:(s,r)=>this.track(()=>this.choose().select(s,{...r,history:"push"})),clearSelection:s=>this.track(()=>this.choose().select(null,s)),chooseAnother:s=>this.track(()=>this.choose().chooseAnother(s)),forget:(s,r)=>this.track(async()=>{let a=this.choose(),c=this.account();if(this.privates?.has(s)){await this.privates.forget(s),a.getSnapshot().requested.collectionId===s&&await a.select(null,r);return}if(c&&this.forgotten){this.forgotten.add(c,s),this.revision++,(a.getSnapshot().requested.collectionId===s||(this.runtime?.getSnapshot()??this.snapshot).selectedCollectionId===s)&&await a.select(null,r),this.notify(!1);return}await this.call(l=>l.queue(()=>l.forget(s,r))),a.getSnapshot().requested.collectionId===s&&await a.select(null,r)}),deleteCollection:(s,r)=>this.track(async()=>{let a=this.choose(),{confirmName:c,...l}=r??{};await this.call(p=>p.queue(()=>p.deleteCollection(s,c,l))),a.getSnapshot().requested.collectionId===s&&await a.select(null,l)}),unlock:(s,r,a)=>this.track(()=>this.call(c=>c.queue(()=>c.unlock(s,r,a)))),assess:s=>this.privates?.isOpen()?this.privates.assess():this.call(r=>r.queue(()=>r.assess(s))),configure:s=>this.track(()=>this.privates?.isOpen()?this.privates.configure(s):this.call(r=>r.queue(()=>r.configure(s)))),setup:Object.freeze({plan:s=>(this.privates?.isOpen()?this.privates.plan(s):this.call(r=>r.queue(()=>r.planSetup(s)))).then(r=>sO(r,this.getSnapshot().readiness)),apply:(s,r)=>this.track(()=>this.privates?.isOpen()?this.privates.apply(s,r):this.call(a=>a.queue(()=>a.applySetup(s,r))))}),setForeground:s=>this.setForeground(s),close:()=>this.close(),signOut:s=>this.signOut(s),planUnsyncedTransfer:(s={})=>this.call(r=>{let a=this.transferDestination(null);return r.withUnsyncedSource((c,l)=>x_(c.records,a.records,{...s.map?{map:s.map}:{},...s.addTypes?{addTypes:!0}:{},ledger:this.transferLedger(),signal:l}),s)}),transferUnsynced:(s,r={})=>this.call(async a=>{let c=this.transferDestination(s?.destination??null),l=await YC(s,c.records,{...r.signal?{signal:r.signal}:{},...r.onProgress?{onProgress:r.onProgress}:{}});if(l.failed.length||l.failedTypes.length)return l;let p=r.signal?{signal:r.signal}:{};return await a.withUnsyncedSource((d,u)=>GC(s,d.records,c.records,u),p)?Object.freeze({...l,retired:await a.retireUnsynced(s.source,s.destination,p)}):l}),discardUnsynced:s=>this.track(async()=>{await this.call(async r=>(await this.started(r,s),r.queue(()=>r.discardUnsynced(s))))}),openUnsynced:s=>this.track(async()=>{let r=this.choose();this.privates?.close(),r.getSnapshot().requested.collectionId!==null&&await r.select(null,{...s,history:"replace"}),await this.call(async a=>(await this.started(a,s),a.queue(()=>a.openUnsynced(s))))})})}withPrivate(e){let t=this.privates;if(!t)return e;let i=this.overlaid.get(e);if(i&&i.revision===t.revision)return i.value;let o=TO(e,t.entries(),t.state());return this.overlaid.set(e,{revision:t.revision,value:o}),o}getSnapshot(){let e=this.withPrivate(this.runtime?.getSnapshot()??this.snapshot),t=this.selection?.getSnapshot()??ZR,i=this.composed,o=e.signIn===null&&(e.status==="starting"||e.status==="blocked"&&e.problem==="open_in_another_tab")?this.hint?.read()??null:null;if(i&&i.base===e&&i.selection===t&&i.revision===this.revision&&i.hint===o)return i.value;let s=o?Object.freeze({...e,signIn:o.signIn,collections:o.collections}):e,r=this.forgotten?.read(s.signIn?.accountId)??null,a=r?.size&&s.collections.some(b=>r.has(b.collectionId)&&b.collectionId!==s.selectedCollectionId)?Object.freeze({...s,collections:Object.freeze(s.collections.filter(b=>!r.has(b.collectionId)||b.collectionId===s.selectedCollectionId))}):s,c=a.selectedCollectionId,l=c&&!this.closed?this.privates?.connection(c)??this.runtime?.connection(c)??null:null,p=this.unsyncedOpening>0&&!a.unsynced&&!a.signOutResult&&t.requested.collectionId===null,d=_p({...a,selection:t},{connection:l,previous:i?.value.phase??null,openingUnsynced:p,startPending:this.selection?.startPending()??!1,...this.cpOrigin?{cpOrigin:this.cpOrigin}:{}});d=this.trackOpening(d),this.timing.observe(d);let u=this.trackSync(d,a.problem,a.transport??null,a.live??null),f=this.syncing?.writes()??null,h=this.trackSaveWarning(),m=Object.freeze({...a,selection:t,phase:d,sync:u,writes:f,storage:this.storagePolicy,saveWarning:h,links:this.linksFor(c)});return this.composed={base:e,selection:t,revision:this.revision,hint:o,value:m},m}linksFor(e){return this.links&&e?Object.freeze({...this.links,manageAccess:`${this.cpOrigin}/access?collection=${encodeURIComponent(e)}`}):this.links}trackSaveWarning(){let e=this.syncing,t=e?.status,i=t?.pending??0;if(this.pendingSave&&(this.closed||this.hidden||!i||this.pendingSave.id!==e?.id)&&this.clearPendingSave(),this.closed||this.hidden||!e||!t||!i)return null;if(!this.pendingSave){let o={id:e.id,since:performance.now(),timer:null};o.timer=setTimeout(()=>{this.pendingSave===o&&(o.timer=null,this.revision++,this.notify(!1))},3e4),this.pendingSave=o}return Gm(i,this.storagePolicy??{persistent:!1,installed:!1},{pendingForMs:performance.now()-this.pendingSave.since,connection:t.connection}).warning}clearPendingSave(){this.pendingSave?.timer!==null&&this.pendingSave?.timer!==void 0&&clearTimeout(this.pendingSave.timer),this.pendingSave=null}trackOpening(e){let t=e.kind==="opening"?e.collectionId:null;if(this.opening&&this.opening.id!==t&&(clearTimeout(this.opening.timer),this.opening=null),t===null||this.closed)return e;if(!this.opening){let i={id:t,slow:!1,timer:setTimeout(()=>{this.opening===i&&(i.slow=!0,this.revision++,this.notify(!1))},Hf)};this.opening=i}return e.kind==="opening"&&this.opening.slow?{...e,slow:!0}:e}trackSync(e,t,i,o){let s=e.kind==="ready"?e.collectionId:null;if(this.syncing&&this.syncing.id!==s){try{this.syncing.stop()}catch{}this.syncing=null}if(e.kind!=="ready"||this.closed)return null;if(!this.syncing){let r=e.connection.records,a=null;try{a=r.status}catch{}let c={id:e.collectionId,stop:()=>{},status:a,writes:()=>null},l=()=>{this.syncing===c&&(this.revision++,this.getSnapshot(),this.notify(!1))},p=()=>{},d=()=>{};try{p=r.onStatus(u=>{c.status=u,l()})}catch{}try{let u=r.ledger;d=u.subscribe(l),c.writes=()=>{try{return u.getSnapshot()}catch{return null}}}catch{}c.stop=()=>{p(),d()},this.syncing=c}try{e.connection.records.setTransportDeferred(i!==null)}catch{}return this.syncing.status?Rf(this.syncing.status,t,i,o):null}nativeAuthorization(e,t,i){return!this.privates||this.closed||this.hidden?Promise.reject(A("unavailable","Native authorization unavailable")):this.privates.nativeAuthorization(e,t,AbortSignal.any([i,this.lifetime.signal]))}account(){return(this.runtime?.getSnapshot()??this.snapshot).signIn?.accountId??null}unforgetApproved(){let e=this.selection?.getSnapshot().lastApproval??null,t=this.account();!e||e===this.handledApproval||(this.handledApproval=e,t&&e.collectionId&&(e.outcome==="added"||e.outcome==="unchanged")&&this.forgotten?.remove(t,e.collectionId)&&this.revision++)}followFocus(){let e=typeof window>"u"?void 0:window,t=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let i=()=>{t?.visibilityState!=="hidden"&&this.refreshCollections()};e.addEventListener("focus",i,{signal:this.lifetime.signal}),t&&typeof t.addEventListener=="function"&&t.addEventListener("visibilitychange",i,{signal:this.lifetime.signal})}refreshCollections(){let e=this.runtime,t=Date.now();if(!e||this.closed||this.hidden||this.refreshing||t-this.refreshedAt<2e3)return;let i=e.getNativeSnapshot();i.signIn?.state!=="paired"||i.status!=="unselected"&&i.status!=="ready"&&i.status!=="setup_required"||(this.refreshedAt=t,this.privates?.refresh(i.signIn.accountId).catch(()=>{}),this.refreshing=e.queue(()=>e.refreshCollections()).catch(()=>{}).finally(()=>{this.refreshing=null}))}followStoragePolicy(){let e=globalThis.navigator?.storage;if(!e||typeof e.persisted!="function")return;let t=()=>{try{return globalThis.matchMedia?.("(display-mode: standalone)").matches===!0||globalThis.navigator?.standalone===!0}catch{return!1}},i=(s=!1)=>{this.closed||Ym(e,t(),s).then(r=>{this.closed||this.storagePolicy?.persistent===r.persistent&&this.storagePolicy?.installed===r.installed||(this.storagePolicy=r,this.revision++,this.notify(!1))}).catch(()=>{})},o=globalThis.document;o&&typeof o.addEventListener=="function"&&o.addEventListener("visibilitychange",()=>{o.visibilityState!=="hidden"&&i()},{signal:this.lifetime.signal}),i(!0)}notify(e=!0){let t=this.runtime?.getSnapshot(),i=t?.signIn?.state==="paired"?t.signIn.accountId:null;if(i&&!this.closed&&!this.hidden&&(this.privates?.bind(i,t?.signIn?.nativeGrants??[]),this.privates?.ensure(i)),e)for(let o of[...this.nativeListeners])try{o()}catch{}for(let o of[...this.listeners])try{o()}catch{}}choose(){this.check();let e=this.selection;return e.start(),e}async track(e){return await e(),this.getSnapshot()}selectionSession(){return Object.freeze({getSnapshot:()=>this.withPrivate(sN(this.runtime?.getNativeSnapshot()??this.snapshot)),subscribe:e=>(this.nativeListeners.add(e),()=>{this.nativeListeners.delete(e)}),open:(e,t={})=>this.call(async i=>{let o=this.privates,s=i.getNativeSnapshot().collections.some(c=>c.collectionId===e);if(!o||s||!o.has(e))return o?.close(),i.queue(()=>i.select(e,t));i.getNativeSnapshot().selectedCollectionId!==null&&await i.queue(()=>i.clearSelection(t));let r=i.getNativeSnapshot().signIn?.accountId,a=i.getNativeSnapshot().signIn?.installationId;if(!r||!a)throw A("unauthenticated","Sign in before opening a collection");o.openCollection(e,{account:r,installation:a}).catch(()=>{})}),clear:(e={})=>(this.privates?.close(),this.call(t=>t.queue(()=>t.clearSelection(e)))),authorize:(e={})=>this.authorize(e,e.collectionHint??null),listing:()=>this.privates?.listing(this.account())??!1})}check(){if(this.closed||this.hidden||this.lifetime.signal.aborted)throw A("cancelled","Application entry fenced","application_entry_fenced")}environment(){return xi({environment:this.declaration.environment,appOrigin:this.declaration.origin,release:Ns()})}initialize(){if(this.initialization)return this.initialization;let e=this.incarnation,t=Promise.resolve().then(async()=>{if(this.check(),typeof Iy.url!="string")throw wA();let i=new URL(Iy.url);if(An(i)!==this.declaration.origin||xt()!==this.declaration.origin)throw A("unavailable","Application module binding unavailable","application_worker_module_binding");let o=this.environment(),s=OI(this.declaration.environment,this.declaration.origin),r=await this.timing.time("capabilities",()=>nO());if(this.check(),!r.ok)throw A("unavailable","This browser can't run mdbase",{reason:r.problem,details:new Map([["missing",r.missing.join(",")]])});let a=()=>{if(!this.unsyncedFirst)return;let S={origin:this.declaration.origin,environment:this.declaration.environment};for(let x of[s.runtime,s.sqlite])try{CI(x,S)({signal:this.lifetime.signal}).catch(()=>{})}catch{}},c=Promise.resolve().then(()=>(JR(),YR));c.catch(()=>{});let{registered:l,ApplicationRuntime:p}=await this.timing.time("registration",async()=>({registered:await sm({declaration:this.declaration,signal:this.lifetime.signal,isCurrent:()=>!this.closed,onRequest:a}),ApplicationRuntime:(await c).ApplicationRuntime}));if(this.check(),e!==this.incarnation)throw A("cancelled","Application entry fenced","application_entry_fenced");let d=vI(this.declaration,l);l.supersededDeclaredId&&console.info(`mdbase: ${Ff("application_registration_id_superseded")}`);let u=Gf(this.declaration),f=Object.freeze({cpOrigin:o.cpOrigin,appId:d.id,...u===null?{}:{storageNamespace:u}}),h=S=>(this.runtime=S,this.unsyncedTried=!1,S.subscribe(()=>{this.hint?.observe(S.getNativeSnapshot()),this.observeSignOut(S),S.getNativeSnapshot().signIn?.state==="paired"&&this.tabs?.signedIn(),this.notify(),this.awaitOtherTab(S,f)}),S.setForeground(this.foreground),this.notify(),S),m=this.tabsFor(f),b=new AbortController;this.election?.abort(),this.election=b;let w=m?await this.timing.time("election",()=>m.elect(AbortSignal.any([this.lifetime.signal,b.signal]))):{kind:"leader"};if(this.closed||this.hidden||e!==this.incarnation||b.signal.aborted)throw w.kind==="follower"?w.leave():m?.resign(),A("cancelled","Application entry fenced","application_entry_fenced");if(w.kind==="follower")return h(new p({declaration:d,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:w.port,binding:w.binding,releaseWorker:()=>w.leave(),nativeAuthorization:(S,x,P)=>this.nativeAuthorization(S,x,P)}));let g=new MessageChannel,y=crypto.randomUUID(),v;try{v=new Worker(new URL("./worker.js",Iy.url),{type:"module"})}catch{throw m?.resign(),g.port1.close(),g.port2.close(),A("unavailable","Application Worker construction unavailable","application_worker_unavailable")}let _=S=>{S.preventDefault(),g.port1.dispatchEvent(new MessageEvent("messageerror")),m?.fault()};v.addEventListener("error",_);let k=new p({declaration:d,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:g.port1,binding:y,releaseWorker:()=>{v.removeEventListener("error",_),v.terminate(),m?.resign()},nativeAuthorization:(S,x,P)=>this.nativeAuthorization(S,x,P)});try{v.postMessage([oi,y,d,...u===null?[]:[u]],[g.port2])}catch{throw v.removeEventListener("error",_),v.terminate(),m?.resign(),g.port1.close(),g.port2.close(),A("unavailable","Application bootstrap unavailable","application_worker_binding")}return m?.lead({attach:(S,x)=>v.postMessage([oi,y,"attach",x],[S]),detach:S=>v.postMessage([oi,y,"detach",S])}),h(k)}).catch(i=>{let o=this.initialization===t;if(o&&(this.initialization=null),!this.closed&&o){let{problemDetail:s,...r}=this.snapshot,a=i instanceof pe&&i.reason==="application_registration_refused"?Os(i.details):null;this.snapshot=Object.freeze({...r,status:"blocked",problem:typeof i?.reason=="string"?i.reason:typeof i?.code=="string"?i.code:"application_entry_unavailable",...a?{problemDetail:Object.freeze({name:"MdbaseError",code:i.code,registration:a})}:{}}),this.notify()}throw i});this.initialization=t;{let{problemDetail:i,signOutResult:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null})}return this.notify(),t}async call(e){this.check();let t=await this.initialize();return this.check(),e(t)}started(e,t){this.choose();let i=e.getNativeSnapshot().status;return i==="not_started"||i==="starting"||i==="blocked"&&!e.getNativeSnapshot().signIn?e.queue(()=>e.start(t)):Promise.resolve()}reservePortal(e){this.check();let t=this.environment(),i=e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal,o=Pl(this.declaration.environment),s=()=>!this.closed,r=this.signIn?uC(t.cpOrigin,i,s,this.signIn,o):xm(t.cpOrigin,i,s,o);return{portal:Pm(r),signal:i}}requestAccess(e,t){try{this.check();let i=this.runtime,o=i?.getNativeSnapshot(),s=o?.selectedCollectionId??null,r=Fm(this.compiled),a=()=>s&&i?Vm(i.getNativeSnapshot(),s):[],c=ZC(r,e,t,a()),l=s?i.connection(s):null;if(!i||!s||!l)throw A("invalid_request","requestAccess needs an open collection","access_no_collection");let p=()=>QC(l.files,r,a());if(!c.length)return Promise.resolve(p());let{portal:d,signal:u}=this.reservePortal(t);return eO({granted:p,native:()=>i.getNativeSnapshot(),start:()=>i.queue(()=>i.requestFileAccess(d,s,c,t.reason,{signal:u})),poll:f=>i.queue(()=>i.pollFileAccess(f))},d,u)}catch(i){return Promise.reject(i)}}approve(e,t={}){let i=this.choose(),o=i.getSnapshot(),s=this.approvalPortal;if(s&&o.approval){if((e===void 0?o.requested.collectionId:e)!==o.approval.collectionId)return Promise.reject(new dn("application_selection_busy"));if(t.signal?.aborted)throw A("cancelled","Application entry fenced","application_entry_fenced");return s.closed||s.focus(),Promise.resolve()}return i.approve(e,t)}authorize(e={},t=null){let i;try{i=this.approvalPortal=this.reservePortal(e).portal}catch(o){return Promise.reject(o)}return this.call(async o=>(await this.started(o,e),o.queue(()=>o.authorizeReserved(i,e,t)))).catch(o=>{try{i.close()}catch{}throw o})}async signOut(e={}){let t=await this.call(async s=>(await this.started(s,e),s));this.signingOut=!0;try{await t.queue(()=>t.signOut(e))}finally{this.signingOut=!1}let i=t.getNativeSnapshot().signOutResult??null;await this.signedOut(t,i);let o=this.snapshot.signOutResult??i;return o&&await dN(o),this.getSnapshot()}async signedOut(e,t,i=!1){i||this.tabs?.signedOut(),this.clearPendingSave(),++this.incarnation,this.runtime===e&&(this.runtime=null),this.initialization=null,this.hint?.clear(),this.forgotten?.clear(),this.handledApproval=null;let o=null;if(this.privates)try{await this.privates.forgetAll(),o="erased"}catch{o="incomplete"}let s=t&&o?Object.freeze({...t,grants:o,...o==="incomplete"?{local:"incomplete"}:{}}):t;this.snapshot=Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:!s&&o==="incomplete"?"sign_out_failed":null,timing:null,readiness:xy,...s?{signOutResult:s}:{}});try{this.memory?.write(null)}catch{}if(this.selection&&!this.closed&&(this.selection.resync(),await this.selection.select(null,{history:"replace"}).catch(()=>{})),this.revision++,this.notify(),i){e.abandon();return}await e.close().catch(()=>{})}observeSignOut(e){let t=e.getNativeSnapshot().signOutResult;!t||this.signingOut||this.closed||this.runtime!==e||this.signedOut(e,t)}tabsFor(e){if(this.tabs)return this.tabs;let t=globalThis.navigator?.locks,i=globalThis.BroadcastChannel;return!t||typeof t.request!="function"||typeof i!="function"?null:(this.tabs=new Hm({...e,build:Iy.url},{locks:t,BroadcastChannel:i},this.leaderLost,this.signedInElsewhere),this.tabs)}leaderLost=e=>{if(this.closed||this.hidden)return;let t=this.runtime,i=t!==null||this.initialization!==null;if(this.election?.abort(),this.election=null,e&&t&&!this.signingOut?this.signedOut(t,t.getNativeSnapshot().signOutResult??null,!0):e&&i&&(++this.incarnation,this.initialization=null),!i||e){this.tabs?.resign();return}++this.incarnation,this.initialization=null,this.runtime=null,t?.abandon();let{problemDetail:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null,selectedCollectionId:null,readiness:xy}),this.notify(),this.selection?.resync(),this.app.start().catch(()=>{})};signedInElsewhere=()=>{this.closed||this.hidden||this.signingOut||this.runtime!==null||this.initialization!==null||this.snapshot.status!=="signed_out"||(this.selection?.resync(),this.app.start().catch(()=>{}))};setForeground(e){this.foreground=e,this.runtime?.setForeground(e)}followVisibility(){let e=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let t=()=>{this.closed||this.setForeground(e.visibilityState!=="hidden")},i=()=>{e.visibilityState!=="hidden"&&t()};e.addEventListener("visibilitychange",t,{signal:this.lifetime.signal});let o=typeof window>"u"?void 0:window;o&&typeof o.addEventListener=="function"&&(o.addEventListener("focus",i,{signal:this.lifetime.signal}),o.addEventListener("online",i,{signal:this.lifetime.signal})),t()}followPageLifecycle(){let e=typeof window>"u"?void 0:window;if(!e||typeof e.addEventListener!="function")return;e.addEventListener("pagehide",this.pageHidden,{signal:this.lifetime.signal}),e.addEventListener("pageshow",this.pageShown,{signal:this.lifetime.signal});let t=globalThis.document;t&&typeof t.addEventListener=="function"&&(t.addEventListener("freeze",()=>this.pageHidden(),{signal:this.lifetime.signal}),t.addEventListener("resume",()=>this.pageShown({persisted:!0}),{signal:this.lifetime.signal}))}pageHidden=()=>{if(this.closed||this.hidden)return;let e=this.runtime,t=e!==null||this.initialization!==null;++this.incarnation,this.hidden=Object.freeze({resume:t}),this.clearPendingSave(),this.initialization=null,this.runtime=null,this.election?.abort(),this.election=null,e?.abandon(),this.tabs?.release();let{problemDetail:i,...o}=this.snapshot;this.snapshot=Object.freeze({...o,status:t?"starting":this.snapshot.status,problem:null,selectedCollectionId:null,readiness:xy})};pageShown=e=>{let t=this.hidden;this.closed||!t||!e.persisted||(this.hidden=null,this.notify(),t.resume&&(this.selection?.resync(),this.app.start().catch(()=>{})))};awaitingOtherTab=!1;awaitOtherTab(e,t){let i=e.getNativeSnapshot(),o=globalThis.navigator?.locks;if(this.awaitingOtherTab||this.closed||i.status!=="blocked"||i.problem!=="open_in_another_tab"||!o)return;this.awaitingOtherTab=!0;let s=this.incarnation,r=this.lifetime.signal,a=()=>!this.closed&&!this.hidden&&s===this.incarnation&&this.runtime===e;zI(o,t,r).then(()=>oN(r)).then(()=>{this.awaitingOtherTab=!1,a()&&(this.selection?.resync(),this.app.start().catch(()=>{}))},()=>{this.awaitingOtherTab=!1})}close(){if(this.closing)return this.closing;if(this.closed=!0,this.lifetime.abort(),this.selection?.close(),this.election?.abort(),this.privates?.dispose(),this.opening&&(clearTimeout(this.opening.timer),this.opening=null),this.clearPendingSave(),this.syncing){try{this.syncing.stop()}catch{}this.syncing=null}return this.closing=Promise.resolve().then(async()=>{await this.initialization?.catch(()=>{}),await this.runtime?.close(),this.tabs?.release();{let{problemDetail:e,...t}=this.snapshot;this.snapshot=Object.freeze({...t,status:"closed",problem:null,selectedCollectionId:null})}this.runtime=null,this.notify(),this.listeners.clear(),this.nativeListeners.clear()}),this.closing}application(){return this.app}transferLedger(){let e=this.declaration.storage.unsyncedDatabaseName,t=new AbortController().signal;return Object.freeze({read:(i,o)=>WC(e,i,o??t),record:(i,o,s)=>HC(e,i,o,s??t)})}transferDestination(e){let t=this.getSnapshot().phase;if(t?.kind!=="ready")throw A("invalid_request","Open the collection to bring this work into first.","unsynced_transfer_needs_collection");if(e!==null&&t.collectionId!==e)throw A("invalid_request","This plan is for another collection. Plan the transfer again.","unsynced_transfer_plan_stale");return t.connection}connection(e){return this.closed?null:this.privates?.connection(e)??this.runtime?.connection(e)??null}};ne();var sn=n=>n;function QR(n,e={}){return fN(new pc(n,e))}function fN(n){let e=n.application(),t=()=>sn(e.getSnapshot()),i=async o=>sn(await e.approve(null,o));return Object.freeze({getSnapshot:t,subscribe:o=>e.subscribe(o),start:async o=>sn(await e.start(o)),signIn:async o=>sn(await e.authorize(o)),addCollection:i,addPrivateCollection:i,approve:async(o,s)=>sn(await e.approve(o,s)),refreshCollectionList:async o=>{if(!e.refreshCollectionList)throw A("unavailable","Refreshing the collection list isn't available here.","application_not_yet_available");return sn(await e.refreshCollectionList(o))},reauthorize:async o=>sn(await e.reauthorize(o)),configure:async o=>sn(await e.configure(o)),select:async(o,s)=>sn(await e.select(o,s)),chooseAnother:async o=>sn(await e.chooseAnother(o)),forget:async(o,s)=>sn(await e.forget(o,s)),deleteCollection:async(o,s)=>sn(await e.deleteCollection(o,s)),requestAccess:(o,s)=>e.requestAccess(o,s),unlock:async(o,s,r)=>{if(!e.unlock)throw A("unavailable","Unlocking a Private collection isn't available here.","application_not_yet_available");return sn(await e.unlock(o,s,r))},assess:o=>e.assess(o),setup:Object.freeze({plan:o=>e.setup.plan(o),async apply(o,s){try{return Object.freeze({outcome:"applied",snapshot:sn(await e.setup.apply(o,s))})}catch(r){if(Q(r,"conflict")&&r.reason==="setup_changed")return Object.freeze({outcome:"changed",snapshot:t()});if(Q(r,"outcome_unknown"))return Object.freeze({outcome:"unknown",snapshot:t()});throw r}}}),connection:o=>n.connection(o),setForeground:o=>e.setForeground(o),signOut:async o=>{if(!e.signOut)throw A("unavailable","Sign out isn't available here.","application_not_yet_available");return sn(await e.signOut(o))},close:()=>e.close(),unsynced:Object.freeze({open:async o=>{if(!e.openUnsynced)throw A("unavailable","Working before connecting isn't available here.","application_not_yet_available");return sn(await e.openUnsynced(o))},planTransfer:o=>{if(!e.planUnsyncedTransfer)throw A("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.planUnsyncedTransfer(o)},transfer:(o,s)=>{if(!e.transferUnsynced)throw A("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.transferUnsynced(o,s)},discard:async o=>{if(!e.discardUnsynced)throw A("unavailable","Discarding work isn't available here.","application_not_yet_available");return sn(await e.discardUnsynced(o))}}),application:e})}xl();nm();ne();function e2(n,e){let t=Fo(eo(n)).manifest.requirements.capabilities;if(t?.contract_version!==2)return null;if(!e.isCurrent())throw A("invalid_request","the application connection is not current","application_connection_fenced");let i=new Set(e.records.hello.grant.capabilities),o=new Set(t.required),s=Object.freeze([...new Set([...t.required,...t.optional??[]])].map(r=>Object.freeze({id:r,requirement:o.has(r)?"required":"optional",state:i.has(r)?"available":"missing"})));return Object.freeze({values:s,requiredAvailable:s.every(r=>r.requirement==="optional"||r.state==="available"),missing:Object.freeze(s.filter(r=>r.state==="missing").map(r=>r.id))})}ka();var zA={};ca(zA,{APP_BASES_PROFILE:()=>Jg,APP_COLLECTION_SETUP_LIMITS:()=>no,AppAccountKeyProofUnavailableError:()=>Go,AppAccountKeySealedBundle:()=>Ql,AppAccountKeyUnlockError:()=>st,AppCloudCopyBootstrapError:()=>Sn,AppCloudCopyHostError:()=>ss,AppCollectionControlError:()=>Ri,AppCollectionJoinError:()=>ts,AppCollectionJoinLedger:()=>Yl,AppCollectionSetupError:()=>xn,AppCollectionSetupJournal:()=>Dl,AppCpAccountKeyControl:()=>ec,AppCpAuthorityError:()=>Ci,AppCpCloudCopyBootstrap:()=>jl,AppCpDeviceRegistration:()=>dc,AppCpLogAuthority:()=>Ll,AppCpPeopleAuthority:()=>gc,AppDeviceRegistrationError:()=>oa,AppHttpLogError:()=>kn,AppHttpLogTransport:()=>Tl,AppIndexedDbDeviceKeyProtectedStore:()=>hc,AppIndexedDbDeviceKeyProvider:()=>fc,AppIndexedDbNoiseProtectedStore:()=>yc,AppInstallationSignInError:()=>et,AppLogHostError:()=>vt,AppLogPump:()=>Xs,AppProtectedInstallationSignIn:()=>Ml,AppReplicaOwnerError:()=>Qe,AppStrictDeviceApprovalError:()=>Mt,AppWasmRuntime:()=>Fl,AppWebCloudCopyHost:()=>wc,AppWebCollectionError:()=>zd,AppWebDeviceKeyCustody:()=>uc,AppWebNoiseCustody:()=>mc,AppWebSignInSession:()=>Ky,UNSYNCED_STORAGE_WARNING:()=>rO,acquireAppInstallationLease:()=>pd,acquireAppReplicaLease:()=>cd,appBrowserDirectAccess:()=>qy,appCollectionControlClient:()=>Tm,appInstallationLockName:()=>Wv,appLocalConnector:()=>jm,appLogHealth:()=>__,appModelPackPlan:()=>Ws,appModelResourcePlan:()=>$t,appMutationSaveState:()=>iO,appReplicaLockName:()=>fm,appSaveState:()=>Gm,appStoragePolicy:()=>Ym,attachAppLocalFacade:()=>Lm,createAppCollectionPeople:()=>Mm,createAppWebCollectionAdapter:()=>SR,decodeAppBasesCell:()=>hs,decodeAppBasesDiscoveryResult:()=>Mu,decodeAppBasesResult:()=>Ou,decodeAppBasesSourceResult:()=>qu,decodeAppCollectionSetupIntent:()=>Ht,encodeAppBasesDiscoveryRequest:()=>Ru,encodeAppBasesRequest:()=>Cu,encodeAppBasesSourceRequest:()=>Eu,openAppWebCollectionClient:()=>by,openOwnedAppWorker:()=>BI,probeAppStorage:()=>c2,readAccountKeyMode:()=>yy,selectAppEnvironment:()=>xi,unlockPrivateDevice:()=>gy,verifyAppHandover:()=>n2});Um();Xg();function t2(n,e){return n.seq===e.seq&&n.chain===e.chain&&n.policyGeneration===e.policyGeneration&&n.catalogGeneration===e.catalogGeneration}async function n2(n,e){let t=null;try{let{runtime:i,localPort:o,localClient:s,hostedClient:r,source:a}=n,c=r.hello,l=s.hello,p=a.collection,d=a.deviceId,u=r.authenticatedDevice;if(!(P=>typeof P=="string"&&P.replace(/-/g,"").toLowerCase()===d.replace(/-/g,"").toLowerCase())(u))return null;let h=c.status.confirmedHead,m=h?Object.freeze({...h}):void 0;if(!m||!c.headWitness||c.headWitness.length>64*1024||m.seq===0||c.collection!==p||l.collection!==p)return null;t=new Uint8Array(c.headWitness);let b=t,w=()=>{try{return!e.aborted&&n.isCurrent()===!0&&a.isCurrent()===!0&&l.collection===p&&a.collection===p&&a.deviceId===d&&s.hello===l}catch{return!1}},g=()=>{try{let P=i.observations();return!P.requiresReopen&&!P.keyringRebuilding&&!P.keyringRebuildFailed&&P.status.mode==="synced"&&P.status.confirmedHead!==void 0&&P.status.confirmedHead.seq>=m.seq}catch{return!1}},y=()=>{if(!w()||!g())return!1;let P=i.verifyHandover(o,a,b);return P!==null&&t2(P,m)},v=()=>{try{return!e.aborted&&w()&&r.hello===c&&r.authenticatedDevice===u}catch{return!1}};if(!v()||!y())return null;let _=await s.appliedPrefix(m.seq,e);if(!v()||!y()||_.seq!==m.seq||_.appliedThrough<m.seq||_.chain!==m.chain)return null;let k=Object.freeze({...m}),S=!1,x={head:k,appliedThrough:_.appliedThrough,isCurrent:()=>{if(S)return!1;try{return y()&&t2(k,m)}catch{return!1}},dispose:()=>{S=!0,b.fill(0)}};return t=null,x}catch{return null}finally{t?.fill(0)}}bt();be();var oa=class extends Error{constructor(t){super(`app device registration: ${t}`);this.reason=t;this.name="AppDeviceRegistrationError"}reason},Tt=n=>new oa(n),Cy=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),dc=class{constructor(e,t,i,o,s={}){this.runtime=e;this.session=t;this.persistence=o;try{this.scope=Object.freeze({connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,kind:t.kind});for(let a of[this.scope.connectorId,this.scope.deviceId,this.scope.installationId])if(U(a).every(c=>c===0))throw Tt("binding");if(t.kind!=="mobile"&&t.kind!=="app-runtime")throw Tt("binding");this.rawOrigin=t.cpOrigin;let r=new URL(this.rawOrigin);if(r.username||r.password||r.pathname!=="/"||r.search||r.hash||r.protocol!=="https:"&&!(s.allowLoopbackHttp===!0&&Ye(this.rawOrigin))||(this.origin=r.origin,this.now=s.now??Date.now,this.fetchImpl=s.fetch??globalThis.fetch,!(i.envelope instanceof Uint8Array)||!i.envelope.length||i.envelope.length>1024)||!e.deviceCustodyCurrent(t,i)||(this.custody=Object.freeze({signPublicKey:new Uint8Array(i.signPublicKey),kemPublicKey:new Uint8Array(i.kemPublicKey),noisePublicKey:new Uint8Array(i.noisePublicKey),envelope:new Uint8Array(i.envelope)}),!this.current()))throw Tt("binding")}catch{throw e.retireLog(),Tt("binding")}}runtime;session;persistence;attempted=!1;lifetime=new AbortController;origin;rawOrigin;scope;custody;now;fetchImpl;current(){try{return!this.lifetime.signal.aborted&&this.runtime.deviceCustodyCurrent(this.session,this.custody)&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.connectorId===this.scope.connectorId&&this.session.deviceId===this.scope.deviceId&&this.session.installationId===this.scope.installationId&&this.session.kind===this.scope.kind}catch{return!1}}check(e){if(!this.current()||e.aborted)throw this.close(),Tt("fenced")}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let c=new Uint8Array(32*1024),l=0,p=null,d=null;try{let u=this.fetchImpl;if(p=await u(`${this.origin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted||!p.ok)throw Tt("unavailable");let f=p.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>c.length)throw s.abort(),Tt("response");if(!p.body)throw Tt("response");for(d=p.body.getReader();;){let{done:m,value:b}=await d.read();try{if(this.check(o),s.signal.aborted)throw Tt("unavailable");if(m)break;if(l+b.length>c.length)throw s.abort(),Tt("response");c.set(b,l),l+=b.length}finally{b?.fill(0)}}let h=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c.subarray(0,l)));if(!h||typeof h!="object"||Array.isArray(h))throw Tt("response");return h}catch(u){throw this.check(o),u instanceof oa?u:Tt("unavailable")}finally{c.fill(0),(d?.cancel()??p?.body?.cancel())?.catch(()=>{}),d?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async register(e){let t=null,i=null;try{if(this.check(e.signal),this.attempted)throw Tt("fenced");this.attempted=!0,await this.persistence.pending(new Uint8Array(this.custody.envelope),e),this.check(e.signal);let o=await this.session.connectorBearer(e);if(this.check(e.signal),typeof o!="string"||!o||o.length>16*1024||/[^\x21-\x7e]/.test(o))throw Tt("binding");let s=await this.json("/v1/next/devices/challenge",o,void 0,e.signal);if(this.check(e.signal),typeof s.challenge!="string"||!/^[0-9a-f]{64}$/.test(s.challenge)||typeof s.expires_at!="number"||!Number.isSafeInteger(s.expires_at)||s.expires_at-this.now()<=5e3||s.expires_at-this.now()>16*6e4)throw Tt("response");t=Uint8Array.from(s.challenge.match(/../g).map(l=>parseInt(l,16)));let r=this.runtime.signCpEnrol(t);this.check(e.signal),i=r.signature;let a=await this.json("/v1/next/devices",o,JSON.stringify({device_id:this.scope.deviceId,kind:this.scope.kind,capabilities:["collection_mode_switch_v1"],challenge:s.challenge,sign_pk:Cy(r.signPublicKey),kem_pk:Cy(r.kemPublicKey),noise_pk:Cy(r.noisePublicKey),sig:Cy(i)}),e.signal);if(this.check(e.signal),a.device_id!==this.scope.deviceId)throw Tt("response");let c=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,signPublicKey:new Uint8Array(r.signPublicKey),kemPublicKey:new Uint8Array(r.kemPublicKey),noisePublicKey:new Uint8Array(r.noisePublicKey)});return await this.persistence.registered(c,e),this.check(e.signal),this.runtime.acknowledgeDeviceRegistration(c),c}catch(o){throw this.close(),o instanceof oa?o:Tt("unavailable")}finally{t?.fill(0),i?.fill(0)}}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.custody.envelope.fill(0),this.runtime.retireLog())}};Xe();be();var fn=()=>new Error("app device key custody unavailable; preserve storage and reopen"),uc=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned;let o=[this.scope.accountId,this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw fn();this.namespace=`mdbase.app-device-keys.v1:${o.map(s=>Array.from(s,r=>r.toString(16).padStart(2,"0")).join("")).join(":")}`,this.aad=se(["mdbase/v1/app-device-keys-platform",...o]),this.check(new AbortController().signal)}catch{throw fn()}}pin;key;store;scope;namespace;aad;current;owned;attempted=!1;check(e){try{if(e.aborted||this.pin.isCurrent!==this.current||this.pin.installationOwned!==this.owned||this.current.call(this.pin)!==!0||this.owned.call(this.pin)!==!0||this.pin.accountId!==this.scope.accountId||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw fn()}catch{throw fn()}}async openNativeDevice(e,t){let i=null,o=null,s=!1;try{if(this.attempted)throw fn();this.attempted=!0;let r=t.signal,a=t.mode;if(this.check(r),!["fresh","existing"].includes(a)||t.noise.mode!==a||t.noise.mode==="existing"&&!(t.noise.envelope instanceof Uint8Array))throw fn();let c=t.noise.mode==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:new Uint8Array(t.noise.envelope)};if(c.mode==="existing"&&(!c.envelope.length||c.envelope.length>1024))throw fn();let l=await this.store.read(this.namespace,{signal:r});if(this.check(r),a==="fresh"){if(l!==null)throw fn();i=globalThis.crypto.getRandomValues(new Uint8Array(64));let u=globalThis.crypto.getRandomValues(new Uint8Array(12)),f=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:u,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,i));if(this.check(r),o=se(new Map([[0,1],[1,u],[2,f]])),await this.store.create(this.namespace,o,{signal:r})!==!0)throw fn();this.check(r)}else{if(!(l instanceof Uint8Array)||l.length===0||l.length>256)throw fn();o=new Uint8Array(l);let u=ce(o);if(!(u instanceof Map))throw fn();let f=u;if(f.size!==3||f.get(0)!==1)throw fn();let h=f.get(1),m=f.get(2);if(!(h instanceof Uint8Array)||h.length!==12||!(m instanceof Uint8Array)||m.length!==80||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(h),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(m))),this.check(r),i.length!==64))throw fn()}this.check(r);let p=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,isCurrent:()=>{try{return this.check(r),!0}catch{return!1}}});s=!0;let d=e.openDeviceConsuming({pin:p,signSecretKey:i.subarray(0,32),kemSecretKey:i.subarray(32),opened:c});return this.check(r),d}catch{if(s)try{e.retireLog()}catch{}throw fn()}finally{i?.fill(0),o?.fill(0)}}};Bn();be();var Oy="device-key-kek",i2="original-device-kek",Lt=()=>new Error("app device key provider unavailable; preserve storage and reopen");function Ry(n){if(typeof globalThis.CryptoKey!="function"||!(n instanceof CryptoKey)||n.type!=="secret"||n.extractable||n.algorithm.name!=="AES-GCM"||n.algorithm.length!==256||n.usages.length!==2||!n.usages.includes("encrypt")||!n.usages.includes("decrypt"))throw Lt();return n}function hN(n){if(n===void 0)return null;if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).length!==2||!Object.hasOwn(n,"version")||!Object.hasOwn(n,"key")||n.version!==1)throw Lt();return Ry(n.key)}var fc=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;value=null;closed=!1;loaned=!1;scope;current;owned;static async open(e){let t=null;try{let{source:i,origin:o,mode:s,signal:r}=e;t=new n(i,o,r);let a=Object.values(t.scope).map(u=>{let f=U(u);if(f.every(h=>h===0))throw Lt();return Array.from(f,h=>h.toString(16).padStart(2,"0")).join("")});if(!Et(o)||!["fresh","existing"].includes(s)||!globalThis.indexedDB||!globalThis.crypto?.subtle||typeof globalThis.CryptoKey!="function")throw Lt();t.check(r);let c=crypto.subtle.generateKey.bind(crypto.subtle),l=`mdbase.app.device-key-kek.v1.${a.join(".")}`,p=await t.openDatabase(l,s);t.db=p,p.onversionchange=()=>t.close(),t.check(r);let d=await t.transaction("readonly",r,null);if(t.check(r),s==="existing"){if(d===null||typeof d=="boolean")throw Lt();t.value=d}else{if(d!==null)throw Lt();let u=Ry(await c({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]));if(t.check(r),await t.transaction("readwrite",r,u)!==!0)throw Lt();t.check(r),t.value=u}return t.check(r),t}catch{throw t?.close(),Lt()}}check(e){try{if(this.closed||this.lifetime.aborted||e.aborted||xt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.scope).some(([t,i])=>this.source[t]!==i))throw Lt()}catch{throw Lt()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,c=()=>{r=!0,o(Lt())};this.lifetime.addEventListener("abort",c,{once:!0});let l=()=>this.lifetime.removeEventListener("abort",c);s.onblocked=c,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw Lt();s.result.createObjectStore(Oy),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(Lt())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Oy))throw Lt();i(s.result)}catch{s.result.close(),o(Lt())}}})}transaction(e,t,i){return new Promise((o,s)=>{if(this.check(t),!this.db)throw Lt();let r=this.db.transaction(Oy,e,{durability:"strict"}),a=r.objectStore(Oy),c=null,l=!1,p=()=>{l=!0;try{r.abort()}catch{}};t.addEventListener("abort",p,{once:!0}),this.lifetime.addEventListener("abort",p,{once:!0});let d=()=>{t.removeEventListener("abort",p),this.lifetime.removeEventListener("abort",p)};r.onerror=r.onabort=()=>{d(),c=null,s(Lt())},r.oncomplete=()=>{d();try{if(this.check(t),l)throw Lt();o(c)}catch{c=null,s(Lt())}};let u=a.get(i2);u.onsuccess=()=>{try{this.check(t);let f=hN(u.result);e==="readonly"?c=f:(c=f===null,c===!0&&i!==null&&a.add({version:1,key:Ry(i)},i2))}catch{p()}}})}deviceCustodyKek(e){if(this.check(e.signal),this.loaned||!this.value)throw Lt();return this.loaned=!0,Ry(this.value)}close(){this.closed||(this.closed=!0,this.value=null,this.db?.close(),this.db=null)}};Bn();be();var Ey="original-device-keys",r2="custody",mN=256,Rn=()=>new Error("app device key custody store unavailable");function o2(n){if(!(n instanceof Uint8Array)||!n.length||n.length>mN)throw Rn();return new Uint8Array(n)}var hc=class n{constructor(e,t,i,o,s){this.db=e;this.source=t;this.scope=i;this.namespace=o;this.origin=s;this.current=t.isCurrent,this.owned=t.installationOwned,e.onversionchange=()=>this.close()}db;source;scope;namespace;origin;closed=!1;current;owned;static async open(e){try{return await this.openChecked(e)}catch{throw Rn()}}static async openChecked(e){let{source:t,signal:i,mode:o,origin:s}=e,r=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId}),a=t.isCurrent,c=t.installationOwned,l=()=>{try{return!i.aborted&&t.isCurrent===a&&t.installationOwned===c&&a.call(t)===!0&&c.call(t)===!0&&Object.keys(r).every(m=>t[m]===r[m])}catch{return!1}},p=[r.accountId,r.connectorId,r.deviceId,r.installationId].map(m=>{let b=U(m);if(b.every(w=>w===0))throw Rn();return Array.from(b,w=>w.toString(16).padStart(2,"0")).join("")});if(!Et(s)||xt()!==s||!["fresh","existing"].includes(o)||!l()||!globalThis.indexedDB)throw Rn();let d=`mdbase.app-device-keys.v1:${p.join(":")}`,u=`mdbase.app.device-keys.v1.${p.join(".")}`,f=await new Promise((m,b)=>{let w=indexedDB.open(u,1),g=!1,y=()=>{g=!0,b(Rn())};i.addEventListener("abort",y,{once:!0});let v=()=>i.removeEventListener("abort",y);w.onblocked=y,w.onupgradeneeded=()=>{if(g||o!=="fresh"||!l()||w.result.objectStoreNames.length!==0){w.transaction?.abort();return}w.result.createObjectStore(Ey)},w.onerror=()=>{v(),b(Rn())},w.onsuccess=()=>{if(v(),g||!l()||w.result.objectStoreNames.length!==1||!w.result.objectStoreNames.contains(Ey)){w.result.close(),b(Rn());return}m(w.result)}}),h=new n(f,t,r,d,s);try{h.check(i);let m=await h.read(d,{signal:i});try{if(o==="fresh"!=(m===null))throw Rn();return h.check(i),h}finally{m?.fill(0)}}catch{throw h.close(),Rn()}}check(e,t=this.namespace){try{if(this.closed||e.aborted||t!==this.namespace||xt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.keys(this.scope).some(i=>this.source[i]!==this.scope[i]))throw Rn()}catch{throw Rn()}}async read(e,t){let i=await this.transaction("readonly",e,t.signal,null);try{return this.check(t.signal,e),i}catch{throw i instanceof Uint8Array&&i.fill(0),Rn()}}async create(e,t,i){this.check(i.signal,e);let o=o2(t);try{let s=await this.transaction("readwrite",e,i.signal,o);return this.check(i.signal,e),s===!0}finally{o.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(i,t);let a=this.db.transaction(Ey,e,{durability:"strict"}),c=a.objectStore(Ey),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>i.removeEventListener("abort",d);i.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(Rn())},a.oncomplete=()=>{u();try{if(this.check(i,t),p)throw Rn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(Rn())}};let f=c.get(r2);f.onsuccess=()=>{let h=null;try{this.check(i,t),h=f.result===void 0?null:o2(f.result),e==="readonly"?(l=h,h=null):(l=h===null,l===!0&&o!==null&&c.add(new Uint8Array(o),r2))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};Xe();be();var Ne=()=>new Error("app Noise custody unavailable; preserve storage and reopen"),Wd=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),mc=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId});let o=[this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw Ne();this.namespace=`mdbase.app-noise.v1:${this.scope.connectorId}:${this.scope.deviceId}:${this.scope.installationId}`,this.aad=se(["mdbase/v1/app-noise-platform",...o]),this.check(new AbortController().signal)}catch{throw Ne()}}pin;key;store;scope;namespace;aad;check(e){try{if(e.aborted||this.pin.isCurrent()!==!0||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw Ne()}catch{throw Ne()}}receiptValue(e){if(e.connectorId!==this.scope.connectorId||e.deviceId!==this.scope.deviceId||e.installationId!==this.scope.installationId)throw Ne();let t=[e.signPublicKey,e.kemPublicKey,e.noisePublicKey];if(t.some(i=>!(i instanceof Uint8Array)||i.length!==32||i.every(o=>o===0)))throw Ne();return t.map(i=>new Uint8Array(i))}receipt(e){if(e===null)return null;if(!Array.isArray(e)||e.length!==3||e.some(t=>!(t instanceof Uint8Array)||t.length!==32||t.every(i=>i===0)))throw Ne();return Object.freeze({...this.scope,signPublicKey:new Uint8Array(e[0]),kemPublicKey:new Uint8Array(e[1]),noisePublicKey:new Uint8Array(e[2])})}markerValue(e){let t=U(e.collection);if(t.every(i=>i===0)||typeof e.acknowledged!="boolean"||!(e.sasCommitment instanceof Uint8Array)||e.sasCommitment.length!==32||e.sasCommitment.every(i=>i===0))throw Ne();return[t,...this.receiptValue(e),new Uint8Array(e.sasCommitment),e.acknowledged]}marker(e,t){if(e===null)return null;if(!t||!Array.isArray(e)||e.length!==6||!(e[0]instanceof Uint8Array)||e[0].length!==16||e[0].every(r=>r===0)||typeof e[5]!="boolean")throw Ne();let i=this.receipt(e.slice(1,4));for(let r of["signPublicKey","kemPublicKey","noisePublicKey"])if(!Wd(i[r],t[r]))throw Ne();let o=e[4];if(!(o instanceof Uint8Array)||o.length!==32||o.every(r=>r===0))throw Ne();let s=Array.from(e[0],r=>r.toString(16).padStart(2,"0")).join("");return Object.freeze({...i,collection:`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`,sasCommitment:new Uint8Array(o),acknowledged:e[5]})}async restore(e){let t=await this.read(e);return this.check(e.signal),t?.value??null}async read(e){let t=null,i=null;try{this.check(e.signal);let o=await this.store.read(this.namespace,e);if(this.check(e.signal),o===null)return null;if(!(o instanceof Uint8Array)||o.length===0||o.length>4096)throw Ne();t=new Uint8Array(o);let s=ce(t);if(!(s instanceof Map))throw Ne();let r=s,a=r.get(1),c=r.get(2);if(r.size!==3||r.get(0)!==1||!(a instanceof Uint8Array)||a.length!==12||!(c instanceof Uint8Array)||c.length<16||c.length>2064||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(c))),this.check(e.signal),i.length>2048))throw Ne();let l=ce(i);if(!(l instanceof Map))throw Ne();let p=l,d=p.get(1);if(!(p.get(0)===1&&p.size===3||p.get(0)===2&&p.size===4&&p.has(3))||!(d instanceof Uint8Array)||d.length===0||d.length>1024||!p.has(2))throw Ne();let u=this.receipt(p.get(2)),f=p.get(0)===2?this.marker(p.get(3),u):null;return{value:Object.freeze({envelope:new Uint8Array(d),receipt:u,privateEnrolMarker:f}),encrypted:new Uint8Array(t)}}catch{throw Ne()}finally{t?.fill(0),i?.fill(0)}}async write(e,t,i,o,s=null){let r=null,a=null;try{if(this.check(o.signal),!(e instanceof Uint8Array)||!e.length||e.length>1024)throw Ne();let c=new Map([[0,s===null?1:2],[1,new Uint8Array(e)],[2,t===null?null:this.receiptValue(t)]]);if(s!==null){let u=this.markerValue(s);this.marker(u,t),c.set(3,u)}if(r=se(c),r.length>2048)throw Ne();let l=globalThis.crypto.getRandomValues(new Uint8Array(12)),p=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:l,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(r)));this.check(o.signal),a=se(new Map([[0,1],[1,l],[2,p]]));let d=await this.store.compareAndSet(this.namespace,i,a,o);if(this.check(o.signal),d!==!0)throw Ne()}catch{throw Ne()}finally{r?.fill(0),a?.fill(0)}}async pending(e,t){let i=await this.read(t);if(this.check(t.signal),i){if(!Wd(i.value.envelope,e))throw Ne();return}await this.write(e,null,null,t),this.check(t.signal)}async privateEnrolPending(e,t){try{if(e.acknowledged!==!1)throw Ne();await this.writePrivateMarker(e,!1,t)}catch{throw Ne()}}async privateEnrolAcknowledged(e,t){try{await this.writePrivateMarker(e,!0,t)}catch{throw Ne()}}async writePrivateMarker(e,t,i){this.check(i.signal);let o=this.marker(this.markerValue(e),e),s=await this.read(i);if(this.check(i.signal),!s?.value.receipt)throw Ne();for(let a of["signPublicKey","kemPublicKey","noisePublicKey"])if(!Wd(o[a],s.value.receipt[a]))throw Ne();let r=s.value.privateEnrolMarker;if(r){if(r.collection!==o.collection||!Wd(r.sasCommitment,o.sasCommitment))throw Ne();if(r.acknowledged){if(!t)throw Ne();return}if(!t)return}else if(t)throw Ne();await this.write(s.value.envelope,s.value.receipt,s.encrypted,i,Object.freeze({...o,acknowledged:t})),this.check(i.signal)}async registered(e,t){let i=await this.read(t);if(this.check(t.signal),!i)throw Ne();if(i.value.receipt){for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(!Wd(i.value.receipt[o],e[o]))throw Ne();this.receiptValue(e);return}await this.write(i.value.envelope,e,i.encrypted,t),this.check(t.signal)}};Bn();be();var My="opaque-noise",s2="custody",yN=4096,Hn=()=>new Error("app noise custody store unavailable");function _A(n){if(!(n instanceof Uint8Array)||n.byteLength<1||n.byteLength>yN)throw Hn();return new Uint8Array(n)}function gN(n,e){return n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i])}function AA(n){if(U(n).every(t=>t===0))throw Hn();return n.toLowerCase()}function kA(n,e){try{return n.isCurrent()===!0&&n.connectorId===e[0]&&n.deviceId===e[1]&&n.installationId===e[2]}catch{return!1}}var yc=class n{constructor(e,t,i,o){this.db=e;this.source=t;this.pins=i;this.origin=o;e.onversionchange=()=>this.close()}db;source;pins;origin;closed=!1;static async open(e){try{return await this.openChecked(e)}catch{throw Hn()}}static async openChecked(e){let{source:t,signal:i}=e,o=[t.connectorId,t.deviceId,t.installationId];if(!Et(e.origin)||xt()!==e.origin||!["fresh","existing"].includes(e.mode)||i.aborted||!kA(t,o)||typeof globalThis.indexedDB>"u")throw Hn();let s=`mdbase.app.noise.v1.${AA(o[2])}.${AA(o[0])}.${AA(o[1])}`,r=await new Promise((c,l)=>{let p=indexedDB.open(s,1),d=!1,u=()=>{d=!0,l(Hn())};i.addEventListener("abort",u,{once:!0});let f=()=>i.removeEventListener("abort",u);p.onblocked=u,p.onupgradeneeded=()=>{if(d||i.aborted||e.mode!=="fresh"||!kA(t,o)||p.result.objectStoreNames.length!==0){p.transaction?.abort();return}p.result.createObjectStore(My)},p.onerror=()=>{f(),l(Hn())},p.onsuccess=()=>{if(f(),d||i.aborted||p.result.objectStoreNames.length!==1||!p.result.objectStoreNames.contains(My)){p.result.close(),l(Hn());return}c(p.result)}}),a=new n(r,t,o,e.origin);try{let c=await a.read(a.namespace,{signal:i});if(e.mode==="fresh"!=(c===null))throw Hn();return c?.fill(0),a.check(i),a}catch{throw a.close(),Hn()}}get namespace(){return`mdbase.app-noise.v1:${this.pins[0]}:${this.pins[1]}:${this.pins[2]}`}check(e,t=this.namespace){if(this.closed||e.aborted||t!==this.namespace||xt()!==this.origin||!kA(this.source,this.pins))throw Hn()}async read(e,t){this.check(t.signal,e);let i=await this.transaction("readonly",t.signal,null,null);try{return this.check(t.signal),i}catch{throw i instanceof Uint8Array&&i.fill(0),Hn()}}async compareAndSet(e,t,i,o){this.check(o.signal,e);let s=null,r=null;try{s=t===null?null:_A(t),r=_A(i);let a=await this.transaction("readwrite",o.signal,s,r);return this.check(o.signal),a===!0}finally{s?.fill(0),r?.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(t);let a=this.db.transaction(My,e,{durability:"strict"}),c=a.objectStore(My),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(Hn())},a.oncomplete=()=>{u();try{if(this.check(t),p)throw Hn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(Hn())}};let f=c.get(s2);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:_A(f.result),e==="readonly"?(l=h,h=null):(l=gN(h,i),l===!0&&o!==null&&c.put(new Uint8Array(o),s2))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};gd();yd();bt();be();ne();var er=()=>A("unavailable","people metadata is unavailable","people_response");function a2(n){if(!n||typeof n!="object"||Array.isArray(n))throw er();return n}function l2(n){if(typeof n=="number"&&!Number.isSafeInteger(n))throw er();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw er();return e}var gc=class{constructor(e,t={}){this.session=e;this.rawOrigin=e.cpOrigin;let i=new URL(this.rawOrigin);if(i.username||i.password||i.pathname!=="/"||i.search||i.hash||i.protocol!=="https:"&&!(t.allowLoopbackHttp===!0&&Ye(e.cpOrigin)))throw A("invalid_request","invalid people CP origin","people_binding");this.cpOrigin=i.origin,this.collection=e.collection,this.connector=e.connectorId,this.device=e.deviceId,this.ep=l2(e.endpoint);for(let o of[this.collection,this.connector,this.device])if(U(o).every(s=>s===0))throw A("invalid_request","nil people binding","people_binding");if(this.fetchImpl=t.fetch??globalThis.fetch,!this.isCurrent())throw A("unauthenticated","people scope is not current","people_fenced")}session;cpOrigin;rawOrigin;collection;connector;device;ep;fetchImpl;lifetime=new AbortController;isCurrent(){try{return!this.lifetime.signal.aborted&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.collection===this.collection&&this.session.connectorId===this.connector&&this.session.deviceId===this.device&&l2(this.session.endpoint)===this.ep}catch{return!1}}check(e){if(e?.throwIfAborted(),!this.isCurrent())throw A("unauthenticated","people scope changed","people_fenced")}async request(e,t={}){if(e!=="identity"&&e!=="members")throw A("invalid_request","invalid people resource");this.check(t.signal);let i=new AbortController,o=()=>i.abort();t.signal?.addEventListener("abort",o,{once:!0}),this.lifetime.signal.addEventListener("abort",o,{once:!0});let s=setTimeout(o,15e3);s.unref?.();let r=new Uint8Array(1024*1024),a=0,c,l;try{let p=await this.session.connectorBearer({signal:i.signal});if(this.check(t.signal),i.signal.aborted)throw er();if(typeof p!="string"||!/^(idev_|ct_)/.test(p)||p.length>16*1024||/[^\x21-\x7e]/.test(p))throw A("unauthenticated","invalid people credential","people_binding");let d=this.fetchImpl;if(c=await d(`${this.cpOrigin}/v1/authorities/${this.collection}/${e}?device_id=${this.device}`,{method:"GET",headers:{authorization:`Bearer ${p}`},signal:i.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(t.signal),i.signal.aborted)throw er();let u=c.headers.get("content-length");if(u!==null&&/^(0|[1-9][0-9]*)$/.test(u)&&Number(u)>r.length||!c.body)throw er();for(l=c.body.getReader();;){let{done:h,value:m}=await l.read();try{if(this.check(t.signal),i.signal.aborted)throw er();if(h)break;if(a+m.length>r.length)throw er();r.set(m,a),a+=m.length}finally{m?.fill(0)}}let f=a2(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(r.subarray(0,a))));if(this.check(t.signal),c.status===401)throw A("unauthenticated","people credential is no longer current","people_fenced");if(c.status===403){let h=a2(f.error);throw A("forbidden","people access was refused",e==="members"&&h.code==="people_permission_declined"?"people_permission_declined":"people_access")}if(c.status===404)throw A("upgrade_required","people metadata is unsupported","people_unsupported");if(!c.ok)throw er();return f}catch(p){throw this.check(t.signal),p instanceof pe?p:er()}finally{i.abort(),r.fill(0),(l?.cancel()??c?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(s),t.signal?.removeEventListener("abort",o),this.lifetime.signal.removeEventListener("abort",o)}}close(){this.lifetime.abort()}};md();Dm();A_();async function c2(n){if(!n.worker)return{supported:!1,reason:"worker_required"};if(!n.storage?.getDirectory)return{supported:!1,reason:"opfs_unavailable"};let e,t,i=!1,o,s={supported:!1,reason:"probe_failed"};try{let r=n.randomUUID();if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r))return s;t=r.toLowerCase(),e=await(await n.storage.getDirectory()).getDirectoryHandle(".mdbase-app-probes",{create:!0});let a=await e.getFileHandle(t,{create:!0});if(i=!0,!a.createSyncAccessHandle)s={supported:!1,reason:"sync_handle_unavailable"};else{o=await a.createSyncAccessHandle();let c=new Uint8Array([109,100,98,110]),l=new Uint8Array(c.length);if(o.write(c,{at:0})!==c.length)throw new Error("short probe write");if(o.flush(),o.read(l,{at:0})!==c.length||l.some((p,d)=>p!==c[d]))throw new Error("probe readback failed");s={supported:!0,backend:"opfs_sahpool_candidate",crashDurability:"unqualified",eviction:"possible"}}}catch{s={supported:!1,reason:"probe_failed"}}finally{let r=!0;try{o?.close()}catch{r=!1,s={supported:!1,reason:"cleanup_failed"}}if(i&&r&&e&&t)try{await e.removeEntry(t)}catch{s={supported:!1,reason:"cleanup_failed"}}}return s}Ko();Vo();tA();Ho();_d();Hs();m_();sy();fd();var SA=Object.freeze({status:"unsupported"}),qy=Object.freeze({snapshot(){return SA},async check(n={}){return n.signal?.throwIfAborted(),SA},async request(n={}){return n.signal?.throwIfAborted(),SA},disable(){}});Qn();fd();var xA="mdbase.app.log-token.v1",bc="tokens";function p2(){return new Promise(n=>{let e;try{e=indexedDB.open(xA,1)}catch{n(null);return}e.onupgradeneeded=()=>{try{e.result.createObjectStore(bc)}catch{}},e.onsuccess=()=>{let t=e.result;t.onversionchange=()=>t.close(),n(t.objectStoreNames.contains(bc)?t:(t.close(),null))},e.onerror=e.onblocked=()=>n(null)})}function PA(n,e){return p2().then(t=>new Promise(i=>{if(!t){i(null);return}let o=null;try{let s=t.transaction(bc,n),r=e(s.objectStore(bc));r&&(r.onsuccess=()=>{o=r.result??null}),s.oncomplete=()=>{t.close(),i(o)},s.onerror=s.onabort=()=>{t.close(),i(null)}}catch{t.close(),i(null)}}))}function d2(){return typeof indexedDB>"u"?null:Object.freeze({async read(n,e){let t=await PA("readonly",i=>i.get(n)).catch(()=>null);return!t||typeof t.value!="string"||!t.value||t.value.length>16*1024||/[^\x21-\x7e]/.test(t.value)||typeof t.expires!="number"||!Number.isSafeInteger(t.expires)||t.expires-e<6e4||t.expires-e>16*6e4?null:Object.freeze({value:t.value,expires:t.expires})},async write(n,e){await PA("readwrite",t=>t.put({value:e.value,expires:e.expires},n)).catch(()=>null)},async drop(n){await PA("readwrite",e=>e.delete(n)).catch(()=>null)}})}async function u2(n){let{cpOrigin:e,connectorId:t,deviceId:i}=n;if(!t||!i)return!0;let o=await p2();return o?new Promise(s=>{try{let r=o.transaction(bc,"readwrite"),a=r.objectStore(bc).openCursor();a.onsuccess=()=>{let c=a.result;if(c){if(typeof c.key=="string"){let l=c.key.split(" ");l.length===5&&l[0]===e&&l[2]===t&&l[3]===i&&c.delete()}c.continue()}},r.oncomplete=()=>{o.close(),s(!0)},r.onerror=r.onabort=()=>{o.close(),s(!1)}}catch{o.close(),s(!1)}}):!1}ry();Bn();be();$s();ka();ne();Lf();yd();bt();Xe();be();var bN=4401,wN=4403,vN=4410,_N=3e4,AN=1e4,kN=6e4,SN=6e4,PN=15e3,xN=4,IN=64*1024,CN=1024*1024;function ON(n,e){let t=new URL(n);if(t.protocol==="https:")return`wss://${t.host}`;if(e&&Ye(n))return`ws://${t.host}`;throw new Error("app log push: origin")}var RN=n=>[...n].map(e=>e.toString(16).padStart(2,"0")).join(""),f2=(n,e,t)=>se(new Map([[0,0],[1,n],[2,e],[3,t]]));function EN(n){let e=n.get(3);if(!(e instanceof Map))return null;let t=e.get(0),i=e.get(1);return{code:typeof t=="string"?t:"unavailable",reason:typeof i=="string"?i:""}}var Ty=class{constructor(e,t,i={}){this.source=e;this.events=t;this.base=ON(e.origin,i.allowLoopbackHttp===!0),this.collectionBytes=U(e.collection);let o=i.WebSocket??globalThis.WebSocket;if(typeof o!="function")throw new Error("app log push: no WebSocket");this.Ws=o,this.random=i.random??Math.random,this.now=i.now??Date.now}source;events;base;collectionBytes;Ws;random;now;socket=null;connecting=!1;closed=!1;finished=null;unsupported=!1;paused=!1;isLive=!1;attempts=0;liveSince=0;retry=null;ping=null;pongDue=null;opening=null;unsigned=0;life=new AbortController;token=null;get live(){return this.isLive}get available(){return!this.unsupported&&this.finished===null&&!this.closed}get suspended(){return this.paused}start(){this.connect()}nudge(){this.unsupported=!1,this.unsigned=0,!(this.paused||this.socket||this.connecting||!this.available)&&(this.attempts=0,this.clearRetry(),this.connect())}suspend(){this.paused||!this.available||(this.paused=!0,this.clearRetry(),this.drop(1e3,"hidden"))}resume(){if(!this.paused){this.nudge();return}this.paused=!1,this.nudge()}close(){this.closed||(this.closed=!0,this.life.abort(),this.clearRetry(),this.drop(1e3,"closed"))}clearRetry(){this.retry!==null&&clearTimeout(this.retry),this.retry=null}clearPing(){this.ping!==null&&clearInterval(this.ping),this.ping=null,this.pongDue!==null&&clearTimeout(this.pongDue),this.pongDue=null,this.opening!==null&&clearTimeout(this.opening),this.opening=null}setLive(e){if(this.isLive!==e){this.isLive=e,e&&(this.liveSince=this.now());try{this.events.live(e)}catch{}}}end(e){if(!(this.finished||this.closed)){this.finished=e,this.clearRetry(),this.drop(1e3,e);try{this.events.ended(e)}catch{}}}drop(e,t){this.clearPing();let i=this.socket;if(this.socket=null,i){i.onopen=i.onmessage=i.onclose=i.onerror=null;try{i.close(e,t)}catch{}}this.setLive(!1)}schedule(e=!1){if(this.paused||!this.available||this.retry!==null)return;let t=e?0:Math.floor(this.random()*Math.min(SN,1e3*2**Math.min(this.attempts,6)));this.attempts++,this.retry=setTimeout(()=>{this.retry=null,this.connect()},t)}async connect(){if(this.paused||this.socket||this.connecting||!this.available)return;if(!this.source.isCurrent()){this.close();return}this.connecting=!0;let e,t,i;try{let r=this.life.signal;if(e=await this.source.accessToken({signal:r}),t=await this.source.nonce({signal:r}),this.paused||!this.available||!this.source.isCurrent())return;if(i=this.source.signHello(t,e),!i){++this.unsigned>=xN?this.unsupported=!0:this.schedule();return}this.unsigned=0}catch{this.connecting=!1,this.schedule();return}finally{this.connecting=!1}this.token=e;let o;try{o=new this.Ws(`${this.base}/v1/ws?c=${this.source.collection}&n=${RN(t)}`)}catch{this.schedule();return}o.binaryType="arraybuffer",this.socket=o;let s=f2(1,"hello",new Map([[0,[1,0]],[1,e],[2,U(this.source.deviceId)],[3,i]]));i.fill(0),t.fill(0),o.onopen=()=>{try{o.send(s)}catch{this.lost(o,1006)}},o.onmessage=r=>this.message(o,r.data),o.onclose=r=>this.lost(o,r.code),o.onerror=()=>{},this.opening=setTimeout(()=>{this.opening=null,this.lost(o,1006)},PN)}message(e,t){if(e!==this.socket)return;if(typeof t=="string"){t==="pong"&&this.pongDue!==null&&(clearTimeout(this.pongDue),this.pongDue=null);return}if(!(t instanceof ArrayBuffer)||t.byteLength>CN){this.lost(e,1009);return}let i=new Uint8Array(t),o;try{let a=ce(i);if(!(a instanceof Map))throw new Error;o=a}catch{this.lost(e,1007);return}if(o.get(0)===2){if(!this.isLive)return;if(this.deliver(i),o.get(1)==="closed"){let a=o.get(2),c=a instanceof Map?a.get(1):null;this.end(c==="gone"?"gone":c==="revoked"?"revoked":"forbidden")}return}if(o.get(0)!==1)return;let s=o.get(1),r=EN(o);if(s===1){if(r){this.refused(e,r);return}try{e.send(f2(2,"subscribe",new Map([[0,this.collectionBytes],[1,0],[2,IN]])))}catch{this.lost(e,1006)}return}if(s===2){if(r){this.refused(e,r);return}let a=o.get(2);if(!(a instanceof Map)){this.lost(e,1007);return}let c=a.get(0),l=a.get(1);this.startPing(e),this.setLive(!0),(typeof c=="number"||typeof c=="bigint")&&l instanceof Uint8Array&&l.length===32&&this.deliver(se(new Map([[0,2],[1,"head"],[2,new Map([[0,this.collectionBytes],[1,c],[2,l]])]])))}}deliver(e){try{this.events.push(e)}catch{}}refused(e,t){if(t.code==="forbidden"&&t.reason==="credentials_revoked"){this.end("revoked");return}if(t.code==="forbidden"||t.code==="not_found"){this.end(t.code==="not_found"?"gone":"forbidden");return}if(t.code==="gone"){this.end("gone");return}t.code==="unauthenticated"&&this.token&&(this.source.invalidateToken?.(this.token),this.token=null),this.lost(e,1008)}startPing(e){this.clearPing(),this.ping=setInterval(()=>{if(!(e!==this.socket||this.pongDue!==null)){try{e.send("ping")}catch{this.lost(e,1006);return}this.pongDue=setTimeout(()=>{this.pongDue=null,this.lost(e,1006)},AN)}},_N)}lost(e,t){if(e!==this.socket)return;let i=this.isLive&&this.now()-this.liveSince>=kN;if(this.drop(1e3,"lost"),t===wN){this.end("forbidden");return}if(t===vN){this.end("gone");return}if(i&&(this.attempts=0),t===bN){this.token&&this.source.invalidateToken?.(this.token),this.token=null,this.attempts=0,this.schedule(!0);return}this.schedule()}};B_();Qn();md();function Hd(n){return n.mode==="local_only"?null:n.incidents.some(e=>e.kind==="waiting_for_key")?"waiting_for_key":n.installing?"installing":n.resyncing?"resyncing":n.connection==="offline"?"offline":n.headKnown===0?"head_unknown":n.confirmedThrough<n.headKnown?"behind":null}function IA(n){let e=n.incidents.find(r=>r.kind==="waiting_for_key");if(!e)return null;let t={through:n.confirmedThrough,head:n.headKnown},i=e.details,o=r=>i instanceof Map?i.get(r):i&&typeof i=="object"?i[r]:void 0,s=o("reason");typeof s=="string"&&/^[a-z_]{1,32}$/.test(s)&&(t.key=s);for(let r of["position","at"]){let a=o(r);(typeof a=="number"||typeof a=="bigint")&&(t[r]=Number(a))}return t}Um();gd();Xe();be();$s();var Ly=264*1024+256,CA=264*1024,We=()=>new Error("app cloud copy outcome unavailable; preserve storage and reopen"),OA=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),MN=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),jy=class{constructor(e,t,i,o,s){this.source=e;this.store=o;this.key=i;try{this.mode=s.mode,this.lifetime=s.signal,this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256});let r=e.displayName;if(this.displayName=r===void 0?void 0:ii(r),this.displayName!==void 0&&e.purpose!=="create"||r!==this.displayName)throw We();this.current=e.isCurrent,this.owned=e.installationOwned,this.io=Object.freeze({read:o.read,cas:o.compareAndSet});let a=[e.accountId,e.connectorId,e.deviceId,e.installationId,e.collection].map(U);if(a.some(c=>c.every(l=>l===0))||!["create","join"].includes(e.purpose)||!["fresh","existing"].includes(this.mode)||!/^[0-9a-f]{64}$/.test(e.assetSha256)||(this.keys=Object.freeze([t.signPublicKey,t.kemPublicKey,t.noisePublicKey].map(c=>{if(!(c instanceof Uint8Array)||c.length!==32||c.every(l=>l===0))throw We();return new Uint8Array(c)})),t.connectorId!==e.connectorId||t.deviceId!==e.deviceId||t.installationId!==e.installationId)||typeof globalThis.CryptoKey!="function"||!(i instanceof CryptoKey)||i.type!=="secret"||i.extractable||i.algorithm.name!=="AES-GCM"||i.algorithm.length!==256||i.usages.length!==2||!i.usages.includes("encrypt")||!i.usages.includes("decrypt"))throw We();this.aad=se(["mdbase/v1/app-cloud-copy-outcome-platform",...a,e.purpose,e.cpOrigin,e.logOrigin,e.assetSha256,...this.keys]),this.check(this.lifetime)}catch{throw We()}}source;store;closed=!1;key;fields;displayName;current;owned;io;keys;aad;mode;lifetime;check(e){try{if(this.closed||!this.key||e!==this.lifetime||e.aborted||this.source.displayName!==this.displayName||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||this.store.read!==this.io.read||this.store.compareAndSet!==this.io.cas||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw We()}catch{throw We()}}operation(e){if(e){if(e.displayName!==this.displayName)throw We();for(let t of Object.keys(this.fields))if(e[t]!==this.fields[t])throw We();for(let[t,i]of["signPublicKey","kemPublicKey","noisePublicKey"].entries())if(!(e[i]instanceof Uint8Array)||!OA(e[i],this.keys[t]))throw We()}return Object.freeze({...this.fields,...this.displayName===void 0?{}:{displayName:this.displayName},signPublicKey:new Uint8Array(this.keys[0]),kemPublicKey:new Uint8Array(this.keys[1]),noisePublicKey:new Uint8Array(this.keys[2])})}metadata(e){let t=this.operation(e.operation);if(!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||typeof e.expectedGenesis!="string"||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis))throw We();return Object.freeze({operation:t,genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis})}async hashChecked(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.genesisItem.length);o[0]=i.length,o.set(i,1),o.set(e.genesisItem,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));if(this.check(t),e.expectedGenesis!==`sha256:${MN(s)}`)throw We()}async read(e){let t=null;try{this.check(e);let i=await this.io.read.call(this.store,Object.freeze({signal:e}));if(this.check(e),i===null){if(this.mode!=="fresh")throw We();return null}if(!(i instanceof Uint8Array)||!i.length||i.length>Ly)throw We();let o=new Uint8Array(i),s=ce(o);if(!(s instanceof Map))throw We();let r=s;if(r.size!==3||r.get(0)!==1)throw We();let a=r.get(1),c=r.get(2);if(!(a instanceof Uint8Array)||a.length!==12||!(c instanceof Uint8Array)||c.length<16||c.length>CA+16||(t=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(c))),this.check(e),t.length>CA))throw We();let l=ce(t);if(!(l instanceof Map))throw We();let p=l,d=p.get(0)===1&&p.size===3;if(!d&&!(p.get(0)===2&&p.size===4)||(d?null:p.get(3))!==(this.displayName??null))throw We();let u=p.get(1);if(!Array.isArray(u)||u.length!==3||u.some((m,b)=>!(m instanceof Uint8Array)||!OA(m,this.keys[b])))throw We();let f=p.get(2),h=null;if(f!==null){if(!Array.isArray(f)||f.length!==2||!(f[0]instanceof Uint8Array)||typeof f[1]!="string")throw We();h=this.metadata({operation:this.operation(),genesisItem:f[0],expectedGenesis:f[1]}),await this.hashChecked(h,e)}return{encrypted:o,metadata:h}}catch{throw We()}finally{t?.fill(0)}}async write(e,t,i){let o=null,s=null;try{if(this.check(i),o=se(new Map([[0,2],[1,this.keys.map(l=>new Uint8Array(l))],[2,e===null?null:[e.genesisItem,e.expectedGenesis]],[3,this.displayName??null]])),o.length>CA)throw We();let r=crypto.getRandomValues(new Uint8Array(12)),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(o)));if(this.check(i),s=se(new Map([[0,1],[1,r],[2,a]])),s.length>Ly)throw We();let c=await this.io.cas.call(this.store,t,s,Object.freeze({signal:i}));if(this.check(i),c!==!0)throw We()}catch{throw We()}finally{o?.fill(0),s?.fill(0)}}async restore(e){let{signal:t}=e,i=await this.read(t);return this.check(t),i===null?Object.freeze({state:"none"}):i.metadata===null?Object.freeze({state:"pending",operation:this.operation()}):Object.freeze({state:"completed",metadata:this.metadata(i.metadata)})}async pending(e,t){let{signal:i}=t;this.check(i),this.operation(e);let o=await this.read(i);this.check(i),!o&&await this.write(null,null,i)}async completed(e,t){let{signal:i}=t;this.check(i);let o=this.metadata(e);await this.hashChecked(o,i);let s=await this.read(i);if(this.check(i),!s)throw We();if(s.metadata){if(!OA(s.metadata.genesisItem,o.genesisItem)||s.metadata.expectedGenesis!==o.expectedGenesis)throw We();return}await this.write(o,s.encrypted,i)}close(){this.closed=!0,this.key=null}};Bn();be();var Uy="public-outcome",RA="operation",hn=()=>new Error("app cloud copy outcome store unavailable; preserve storage and reopen"),qN=(n,e)=>n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i]);function EA(n){if(!(n instanceof Uint8Array)||!n.length||n.length>Ly)throw hn();return new Uint8Array(n)}var Ny=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;closed=!1;fields;current;owned;get fenced(){return this.closed||this.lifetime.aborted}check(e){try{if(this.fenced||e!==this.lifetime||e.aborted||xt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw hn()}catch{throw hn()}}static async open(e){let{source:t,origin:i,mode:o,signal:s}=e,r=null;try{r=new n(t,i,s);let a=[r.fields.accountId,r.fields.connectorId,r.fields.deviceId,r.fields.installationId,r.fields.collection].map(l=>{if(U(l).every(p=>p===0))throw hn();return l.toLowerCase()});if(!Et(i)||!["fresh","existing"].includes(o)||!["create","join"].includes(r.fields.purpose)||!/^[0-9a-f]{64}$/.test(r.fields.assetSha256)||!globalThis.indexedDB)throw hn();r.check(s),r.db=await r.openDatabase(`mdbase.app.cloud-copy-outcome.v1.${a.join(".")}.${r.fields.purpose}`,o),r.db.onversionchange=()=>r.close(),r.check(s);let c=await r.read(Object.freeze({signal:s}));try{if(o==="fresh"!=(c===null))throw hn();r.check(s)}finally{c?.fill(0)}return r}catch{throw r?.close(),hn()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,c=()=>{r=!0,o(hn())},l=()=>this.lifetime.removeEventListener("abort",c);this.lifetime.addEventListener("abort",c,{once:!0}),s.onblocked=c,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw hn();s.result.createObjectStore(Uy),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(hn())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Uy))throw hn();i(s.result)}catch{s.result.close(),o(hn())}}})}async read(e){let{signal:t}=e;this.check(t);let i=await this.transaction("readonly",t,null,null);return this.check(t),i}async compareAndSet(e,t,i){let{signal:o}=i;this.check(o);let s=e===null?null:EA(e),r=EA(t);try{let a=await this.transaction("readwrite",o,s,r);return this.check(o),a===!0}finally{s?.fill(0),r.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{if(this.check(t),!this.db)throw hn();let a=this.db.transaction(Uy,e,{durability:"strict"}),c=a.objectStore(Uy),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(hn())},a.oncomplete=()=>{u();try{if(this.check(t),p)throw hn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(hn())}};let f=c.get(RA);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:EA(f.result),e==="readonly"?(l=h,h=null):(l=qN(h,i),l===!0&&o!==null&&(i===null?c.add(new Uint8Array(o),RA):c.put(new Uint8Array(o),RA)))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db?.close(),this.db=null)}};bt();be();$s();var sa=class extends Error{constructor(t){super(`app private bootstrap: ${t}`);this.reason=t;this.name="AppPrivateBootstrapError"}reason},tt=n=>new sa(n),MA=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),qA=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);function TA(n,e){if(typeof n!="string"||!n.length||n.length>e*2||n.length%2||!/^[0-9a-f]+$/.test(n))throw tt("response");return Uint8Array.from(n.match(/../g).map(t=>parseInt(t,16)))}function LA(n){if(!n||typeof n!="object"||Array.isArray(n))throw tt("response");return n}var Dy=class{constructor(e,t,i,o={}){this.runtime=e;this.session=t;this.persistence=i;this.options=o;try{let s=o.displayName;if(this.displayName=s===void 0?void 0:ii(s),this.displayName!==void 0&&t.purpose!=="create")throw tt("binding");this.scope=Object.freeze({connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,collection:t.collection,purpose:t.purpose,accountId:t.accountId,cpOrigin:t.cpOrigin,logOrigin:t.logOrigin});for(let r of[this.scope.connectorId,this.scope.deviceId,this.scope.installationId,this.scope.collection,this.scope.accountId])if(U(r).every(a=>a===0))throw tt("binding");if(this.origin(this.scope.cpOrigin),this.origin(this.scope.logOrigin),!(t.rootPublicKey instanceof Uint8Array)||t.rootPublicKey.length!==32||t.rootPublicKey.every(r=>r===0)||(this.root=new Uint8Array(t.rootPublicKey),this.fetchImpl=o.fetch??globalThis.fetch,this.now=o.now??Date.now,this.marker=this.scope.purpose==="enrol"?e.privateEnrolMarker():null,!this.current()))throw tt("binding")}catch{throw e.retireLog(),tt("binding")}}runtime;session;persistence;options;attempted=!1;lifetime=new AbortController;scope;root;marker;fetchImpl;now;displayName;origin(e){let t=new URL(e);if(t.username||t.password||t.pathname!=="/"||t.search||t.hash||t.protocol!=="https:"&&!(this.options.allowLoopbackHttp===!0&&Ye(e)))throw tt("binding");return t.origin}current(){try{return!this.lifetime.signal.aborted&&this.runtime.privateCollectionCurrent(this.session)&&this.session.isCurrent()===!0&&this.session.approvalMode==="password-ak1"&&qA(this.session.rootPublicKey,this.root)&&Object.entries(this.scope).every(([e,t])=>this.session[e]===t)}catch{return!1}}markerCopy(){let e=this.marker;if(!e)throw tt("binding");return Object.freeze({...e,sasCommitment:new Uint8Array(e.sasCommitment),signPublicKey:new Uint8Array(e.signPublicKey),kemPublicKey:new Uint8Array(e.kemPublicKey),noisePublicKey:new Uint8Array(e.noisePublicKey)})}check(e){if(!this.current()||e.aborted)throw this.close(),tt("fenced")}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let c=new Uint8Array(1024*1024),l=0,p=null,d=null;try{let u=this.fetchImpl;if(d=await u(`${this.origin(this.scope.cpOrigin)}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted||!d.ok)throw tt("unavailable");let f=d.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>c.length)throw s.abort(),tt("response");if(!d.body)throw tt("response");for(p=d.body.getReader();;){let{done:h,value:m}=await p.read();try{if(this.check(o),s.signal.aborted)throw tt("unavailable");if(h)break;if(l+m.length>c.length)throw s.abort(),tt("response");c.set(m,l),l+=m.length}finally{m?.fill(0)}}return LA(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c.subarray(0,l))))}catch(u){throw this.check(o),u instanceof sa?u:tt("unavailable")}finally{c.fill(0),(p?.cancel()??d?.body?.cancel())?.catch(()=>{}),p?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}copy(e){if(e.displayName!==this.displayName||e.collection!==this.scope.collection||e.deviceId!==this.scope.deviceId||e.logOrigin!==this.scope.logOrigin||!qA(e.rootPublicKey,this.root)||!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||e.expectedGenesis.length!==71||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis)||e.approval!==(this.scope.purpose==="create"?"creator":"pending"))throw tt("response");return Object.freeze({collection:e.collection,deviceId:e.deviceId,logOrigin:e.logOrigin,expectedGenesis:e.expectedGenesis,approval:e.approval,...this.displayName===void 0?{}:{displayName:this.displayName},rootPublicKey:new Uint8Array(e.rootPublicKey),genesisItem:new Uint8Array(e.genesisItem)})}async bootstrap(e){let t=null,i=null;try{if(this.check(e.signal),this.attempted)throw tt("fenced");this.attempted=!0;let o=await this.persistence.restoredCompletion(e);if(this.check(e.signal),o){let b=this.copy(o);return this.marker&&!this.marker.acknowledged&&(await this.persistence.privateEnrolAcknowledged(this.markerCopy(),e),this.check(e.signal)),b}if(this.marker?.acknowledged)throw tt("response");this.marker?await this.persistence.privateEnrolPending(this.markerCopy(),e):await this.persistence.pendingCreate({...this.runtime.registeredDeviceReceipt(),collection:this.scope.collection,...this.displayName===void 0?{}:{displayName:this.displayName}},e),this.check(e.signal);let s=await this.session.connectorBearer(e);if(this.check(e.signal),typeof s!="string"||!s||s.length>16384||/[^\x21-\x7e]/.test(s))throw tt("binding");let r=await this.json("/v1/next/devices/challenge",s,void 0,e.signal);if(this.check(e.signal),t=TA(r.challenge,32),t.length!==32||typeof r.expires_at!="number"||!Number.isSafeInteger(r.expires_at)||r.expires_at-this.now()<=5e3||r.expires_at-this.now()>16*6e4)throw tt("response");let a=this.scope.purpose==="enrol";i=a?this.runtime.signPrivateDeviceEnrol(t).signature:this.runtime.signPrivateCreate(t),this.check(e.signal);let c=await this.json(a?`/v1/next/collections/${this.scope.collection}/private/devices`:"/v1/next/collections/private",s,JSON.stringify({device_id:this.scope.deviceId,capabilities:["collection_mode_switch_v1"],challenge:r.challenge,sig:MA(i),...a?{sas_commit:MA(this.marker.sasCommitment)}:{collection_id:this.scope.collection,...this.displayName===void 0?{}:{display_name:this.displayName}}}),e.signal);if(this.check(e.signal),c.collection_id!==this.scope.collection||this.origin(c.log_url)!==this.origin(this.scope.logOrigin))throw tt("response");if(a){if(c.approval!=="pending"||typeof c.enrolled_at!="number"||!Number.isSafeInteger(c.enrolled_at)||c.enrolled_at<1)throw tt("response")}else if(c.state!=="private"||c.owner_account!==this.scope.accountId||!qA(TA(c.root_public_key,32),this.root))throw tt("response");let l=LA(c.device);if(l.device_id!==this.scope.deviceId||typeof l.token!="string"||!l.token.length||l.token.length>16384||/[^\x21-\x7e]/.test(l.token)||typeof l.expires_at!="number"||!Number.isSafeInteger(l.expires_at)||l.expires_at-this.now()<=5e3||l.expires_at-this.now()>16*6e4)throw tt("response");let p=LA(c.genesis);if(p.seq!==1)throw tt("response");let d=TA(p.item,256*1024),u=new TextEncoder().encode("mdbase/v1/chain"),f=new Uint8Array(1+u.length+d.length);f[0]=u.length,f.set(u,1),f.set(d,1+u.length);let h=new Uint8Array(await crypto.subtle.digest("SHA-256",f));this.check(e.signal);let m=this.copy({collection:this.scope.collection,deviceId:this.scope.deviceId,logOrigin:this.scope.logOrigin,rootPublicKey:this.root,genesisItem:d,expectedGenesis:`sha256:${MA(h)}`,approval:a?"pending":"creator",...this.displayName===void 0?{}:{displayName:this.displayName}});return await this.persistence.completed(this.copy(m),e),this.check(e.signal),this.marker&&(await this.persistence.privateEnrolAcknowledged(this.markerCopy(),e),this.check(e.signal)),m}catch(o){throw this.close(),o instanceof sa?o:tt("unavailable")}finally{t?.fill(0),i?.fill(0)}}close(){this.lifetime.abort(),this.runtime.retireLog()}};bt();Xe();be();$s();var $y=264*1024,jA=$y+256,Ce=()=>new Error("app private bootstrap custody unavailable; preserve storage and reopen"),aa=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),TN=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),zy=class{constructor(e,t,i,o,s,r={}){this.source=e;this.key=i;this.store=o;this.noise=s;try{let a=r.displayName;if(this.displayName=a===void 0?void 0:ii(a),this.displayName!==void 0&&e.purpose!=="create")throw Ce();this.pins=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin});let c=[this.pins.accountId,this.pins.connectorId,this.pins.deviceId,this.pins.installationId,this.pins.collection].map(U);if(c.some(l=>l.every(p=>p===0))||!["create","enrol"].includes(this.pins.purpose))throw Ce();for(let l of[e.cpOrigin,e.logOrigin]){let p=new URL(l);if(!(r.allowLoopbackHttp===!0&&Ye(l))&&p.protocol!=="https:"||p.origin!==l||p.username||p.password)throw Ce()}if(!(e.rootPublicKey instanceof Uint8Array)||e.rootPublicKey.length!==32||e.rootPublicKey.every(l=>l===0)||(this.root=new Uint8Array(e.rootPublicKey),this.keys=[t.signPublicKey,t.kemPublicKey,t.noisePublicKey].map(l=>{if(!(l instanceof Uint8Array)||l.length!==32||l.every(p=>p===0))throw Ce();return new Uint8Array(l)}),this.checkReceipt(t),i.type!=="secret"||i.extractable||i.algorithm.name!=="AES-GCM"||i.algorithm.length!==256||!i.usages.includes("encrypt")||!i.usages.includes("decrypt")))throw Ce();this.aad=se(["mdbase/v1/app-private-bootstrap-platform",...c,this.pins.purpose,e.cpOrigin,e.logOrigin,this.root]),this.check(new AbortController().signal)}catch{throw Ce()}}source;key;store;noise;pins;root;keys;aad;displayName;check(e){try{if(e.aborted||this.source.isCurrent()!==!0||this.source.approvalMode!=="password-ak1"||!aa(this.source.rootPublicKey,this.root)||Object.entries(this.pins).some(([t,i])=>this.source[t]!==i))throw Ce()}catch{throw Ce()}}checkReceipt(e){if(e.connectorId!==this.pins.connectorId||e.deviceId!==this.pins.deviceId||e.installationId!==this.pins.installationId||[e.signPublicKey,e.kemPublicKey,e.noisePublicKey].some((i,o)=>!(i instanceof Uint8Array)||i.length!==32||i.every(s=>s===0)||!aa(i,this.keys[o])))throw Ce()}commit(e){if(this.checkReceipt(e),this.pins.purpose!=="enrol"||e.collection!==this.pins.collection||typeof e.acknowledged!="boolean"||!(e.sasCommitment instanceof Uint8Array)||e.sasCommitment.length!==32||e.sasCommitment.every(t=>t===0))throw Ce();return new Uint8Array(e.sasCommitment)}markerCopy(e,t){return Object.freeze({connectorId:this.pins.connectorId,deviceId:this.pins.deviceId,installationId:this.pins.installationId,collection:this.pins.collection,signPublicKey:new Uint8Array(this.keys[0]),kemPublicKey:new Uint8Array(this.keys[1]),noisePublicKey:new Uint8Array(this.keys[2]),sasCommitment:new Uint8Array(t),acknowledged:e.acknowledged})}copy(e){if(e.displayName!==this.displayName||e.collection!==this.pins.collection||e.deviceId!==this.pins.deviceId||e.logOrigin!==this.pins.logOrigin||!(e.rootPublicKey instanceof Uint8Array)||!aa(e.rootPublicKey,this.root)||!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis)||e.approval!==(this.pins.purpose==="create"?"creator":"pending"))throw Ce();return Object.freeze({collection:this.pins.collection,deviceId:this.pins.deviceId,logOrigin:this.pins.logOrigin,rootPublicKey:new Uint8Array(this.root),genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis,approval:e.approval,...this.displayName===void 0?{}:{displayName:this.displayName}})}async hashChecked(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.genesisItem.length);o[0]=i.length,o.set(i,1),o.set(e.genesisItem,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));if(this.check(t),e.expectedGenesis!==`sha256:${TN(s)}`)throw Ce()}async read(e){let t=null;try{this.check(e.signal);let i=await this.store.read(e);if(this.check(e.signal),i===null)return null;if(!(i instanceof Uint8Array)||!i.length||i.length>jA)throw Ce();let o=new Uint8Array(i),s=ce(o);if(!(s instanceof Map))throw Ce();let r=s;if(r.size!==3||r.get(0)!==1)throw Ce();let a=r.get(1),c=r.get(2);if(!(a instanceof Uint8Array)||a.length!==12||!(c instanceof Uint8Array)||c.length<16||c.length>$y+16||(t=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(c))),this.check(e.signal),t.length>$y))throw Ce();let l=ce(t);if(!(l instanceof Map))throw Ce();let p=l,d=p.get(0)===1&&p.size===4;if(!d&&!(p.get(0)===2&&p.size===5)||(d?null:p.get(4))!==(this.displayName??null))throw Ce();let u=p.get(1);if(!Array.isArray(u)||u.length!==3||u.some((b,w)=>!(b instanceof Uint8Array)||!aa(b,this.keys[w])))throw Ce();let f=p.get(2);if(this.pins.purpose==="create"?f!==null:!(f instanceof Uint8Array)||f.length!==32||f.every(b=>b===0))throw Ce();let h=p.get(3),m=null;if(h!==null){if(!Array.isArray(h)||h.length!==2||!(h[0]instanceof Uint8Array)||typeof h[1]!="string")throw Ce();m=this.copy({...this.pins,rootPublicKey:this.root,genesisItem:h[0],expectedGenesis:h[1],approval:this.pins.purpose==="create"?"creator":"pending",...this.displayName===void 0?{}:{displayName:this.displayName}}),await this.hashChecked(m,e.signal)}return{encrypted:o,value:{commit:f===null?null:new Uint8Array(f),metadata:m}}}catch{throw Ce()}finally{t?.fill(0)}}async write(e,t,i){let o=null,s=null;try{if(this.check(i.signal),o=se(new Map([[0,2],[1,this.keys.map(l=>new Uint8Array(l))],[2,e.commit],[3,e.metadata===null?null:[e.metadata.genesisItem,e.metadata.expectedGenesis]],[4,this.displayName??null]])),o.length>$y)throw Ce();let r=crypto.getRandomValues(new Uint8Array(12)),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(o)));this.check(i.signal),s=se(new Map([[0,1],[1,r],[2,a]]));let c=await this.store.compareAndSet(t,s,i);if(this.check(i.signal),c!==!0)throw Ce()}catch{throw Ce()}finally{o?.fill(0),s?.fill(0)}}async pendingCreate(e,t){if(this.check(t.signal),this.checkReceipt(e),this.pins.purpose!=="create"||e.collection!==this.pins.collection||e.displayName!==this.displayName)throw Ce();let i=await this.read(t);this.check(t.signal),!i&&await this.write({commit:null,metadata:null},null,t)}async privateEnrolPending(e,t){this.check(t.signal);let i=this.commit(e),o=this.markerCopy(e,i);if(o.acknowledged)throw Ce();let s=await this.read(t);if(this.check(t.signal),s&&!aa(s.value.commit,i))throw Ce();try{await this.noise.privateEnrolPending(o,t),this.check(t.signal)}catch{throw Ce()}s||await this.write({commit:i,metadata:null},null,t)}async completed(e,t){this.check(t.signal);let i=this.copy(e);await this.hashChecked(i,t.signal);let o=await this.read(t);if(this.check(t.signal),!o)throw Ce();if(o.value.metadata){if(!aa(o.value.metadata.genesisItem,i.genesisItem)||o.value.metadata.expectedGenesis!==i.expectedGenesis)throw Ce();return}await this.write({...o.value,metadata:i},o.encrypted,t)}async privateEnrolAcknowledged(e,t){this.check(t.signal);let i=this.commit(e),o=this.markerCopy(e,i),s=await this.read(t);if(this.check(t.signal),!s?.value.metadata||!aa(s.value.commit,i))throw Ce();try{await this.noise.privateEnrolAcknowledged(o,t),this.check(t.signal)}catch{throw Ce()}}async restoredCompletion(e){let t=await this.read(e);return this.check(e.signal),t?.value.metadata?this.copy(t.value.metadata):null}};Bn();be();var By="public-outcome",h2="operation",mn=()=>new Error("app private bootstrap store unavailable"),UA=(n,e)=>n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i]);function NA(n){if(!(n instanceof Uint8Array)||!n.length||n.length>jA)throw mn();return new Uint8Array(n)}var Fy=class n{constructor(e,t,i,o,s){this.db=e;this.source=t;this.pins=i;this.root=o;this.origin=s;e.onversionchange=()=>this.close()}db;source;pins;root;origin;closed=!1;static async open(e){try{return await this.openChecked(e)}catch{throw mn()}}static async openChecked(e){let{source:t,signal:i}=e,o=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,collection:t.collection,purpose:t.purpose,cpOrigin:t.cpOrigin,logOrigin:t.logOrigin}),s=[o.accountId,o.connectorId,o.deviceId,o.installationId,o.collection];for(let d of s)if(U(d).every(u=>u===0))throw mn();if(!(t.rootPublicKey instanceof Uint8Array)||t.rootPublicKey.length!==32||t.rootPublicKey.every(d=>d===0))throw mn();let r=new Uint8Array(t.rootPublicKey);if(!Et(e.origin)||xt()!==e.origin||!["fresh","existing"].includes(e.mode)||!["create","enrol"].includes(o.purpose)||!globalThis.indexedDB)throw mn();let a=()=>{try{return!i.aborted&&t.isCurrent()===!0&&t.approvalMode==="password-ak1"&&t.rootPublicKey instanceof Uint8Array&&UA(t.rootPublicKey,r)&&Object.entries(o).every(([d,u])=>t[d]===u)}catch{return!1}};if(!a())throw mn();let c=`mdbase.app.private-bootstrap.v1.${s.map(d=>d.toLowerCase()).join(".")}.${o.purpose}`,l=await new Promise((d,u)=>{let f=indexedDB.open(c,1),h=!1,m=()=>{h=!0,u(mn())},b=()=>i.removeEventListener("abort",m);i.addEventListener("abort",m,{once:!0}),f.onblocked=m,f.onupgradeneeded=()=>{if(h||!a()||e.mode!=="fresh"||f.result.objectStoreNames.length!==0){f.transaction?.abort();return}f.result.createObjectStore(By)},f.onerror=()=>{b(),u(mn())},f.onsuccess=()=>{if(b(),h||!a()||f.result.objectStoreNames.length!==1||!f.result.objectStoreNames.contains(By)){f.result.close(),u(mn());return}d(f.result)}}),p=new n(l,t,o,r,e.origin);try{let d=await p.read({signal:i});if(e.mode==="fresh"!=(d===null))throw mn();return d?.fill(0),p.check(i),p}catch{throw p.close(),mn()}}check(e){try{if(this.closed||e.aborted||xt()!==this.origin||this.source.isCurrent()!==!0||this.source.approvalMode!=="password-ak1"||!(this.source.rootPublicKey instanceof Uint8Array)||!UA(this.source.rootPublicKey,this.root)||Object.entries(this.pins).some(([t,i])=>this.source[t]!==i))throw mn()}catch{throw mn()}}async read(e){this.check(e.signal);let t=await this.transaction("readonly",e.signal,null,null);return this.check(e.signal),t}async compareAndSet(e,t,i){this.check(i.signal);let o=null,s=null;try{o=e===null?null:NA(e),s=NA(t);let r=await this.transaction("readwrite",i.signal,o,s);return this.check(i.signal),r===!0}finally{o?.fill(0),s?.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(t);let a=this.db.transaction(By,e,{durability:"strict"}),c=a.objectStore(By),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(mn())},a.oncomplete=()=>{u();try{if(this.check(t),p)throw mn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(mn())}};let f=c.get(h2);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:NA(f.result),e==="readonly"?(l=h,h=null):(l=UA(h,i),l===!0&&o!==null&&c.put(new Uint8Array(o),h2))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};$d();Dm();var ss=class extends Error{constructor(t){super(`app cloud copy host: ${t}`);this.reason=t;this.name="AppCloudCopyHostError"}reason},LN=32,jN=8,ue=n=>new ss(n),m2=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),wc=class n{constructor(e,t,i,o,s){this.source=e;this.installation=t;this.originalRelease=i;this.origin=o;this.lifetime=s;this.selected=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,kind:e.kind,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,approvalMode:e.approvalMode}),this.currentCallback=e.isCurrent,this.bearerCallback=e.connectorBearer,this.ownershipCallback=t.isCurrent;for(let r of[e.accountId,e.connectorId,e.deviceId,e.installationId])if(U(r).every(a=>a===0))throw ue("binding");if(e.kind!=="app-runtime"&&e.kind!=="mobile"||i.schema!=="mdbn-app-trust/release/1"||i.cpOrigin!==e.cpOrigin||i.logOrigin!==e.logOrigin||!/^[0-9a-f]{64}$/.test(i.assetSha256)||!i.trustedRoots.length||i.trustedRoots.length>64||!i.policyPins.length||i.policyPins.length>65536)throw ue("binding");if(this.trust=Object.freeze({...i,source:Object.freeze({...i.source}),trustedRoots:Object.freeze(i.trustedRoots.map(r=>{if(!(r instanceof Uint8Array)||r.length!==32||r.every(a=>a===0))throw ue("binding");return new Uint8Array(r)})),policyPins:new Uint8Array(i.policyPins)}),this.pin=Object.freeze({...this.selected,isCurrent:()=>this.current(),installationOwned:()=>this.current(),connectorBearer:async({signal:r})=>{this.check(r);let a=await this.bearerCallback.call(this.source,Object.freeze({signal:r}));return this.check(r),a}}),e.approvalMode==="strict")throw new Mt;this.check(s)}source;installation;originalRelease;origin;lifetime;closing=!1;closeResult=null;provider=null;keys=null;noiseStore=null;key=null;noise=null;native=null;publicReceipt=null;signIn=null;originalCustody=null;collectionAttempted=!1;collectionSignal=null;collectionCurrent=null;outcomeStore=null;outcome=null;bootstrap=null;bootstrapConfirmed=!1;collectionScope=null;collectionSession=null;restoredPrivateMarker=null;privateStore=null;privateBootstrap=null;privateMetadata=null;accountKeyPin=null;accountKeyWork=!1;accountKeySealed=new Ql;adoptedEndpoint=null;sqlAttempted=!1;sqlClose=null;collectionSql=null;logRequest=null;logLoopback=!1;logWork=null;authority=null;peopleMetadata=null;pump=null;timerPorts=new Set;readWork=null;readAbort=null;readClient=null;readVerified=!1;facades=new Map;logWorkListener=null;selected;currentCallback;bearerCallback;ownershipCallback;trust;pin;current(){try{let e=this.originalRelease,t=this.trust;return!this.closing&&!this.lifetime.aborted&&xt()===this.origin&&this.source.isCurrent===this.currentCallback&&this.source.connectorBearer===this.bearerCallback&&this.installation.isCurrent===this.ownershipCallback&&this.currentCallback.call(this.source)===!0&&this.ownershipCallback.call(this.installation)===!0&&this.installation.scope.account===this.selected.accountId&&this.installation.scope.installation===this.selected.installationId&&Object.entries(this.selected).every(([i,o])=>this.source[i]===o)&&e.schema===t.schema&&e.environment===t.environment&&e.cpOrigin===t.cpOrigin&&e.logOrigin===t.logOrigin&&e.assetSha256===t.assetSha256&&e.source.repository===t.source.repository&&e.source.commit===t.source.commit&&e.source.version===t.source.version&&e.trustedRoots.length===t.trustedRoots.length&&e.trustedRoots.every((i,o)=>m2(i,t.trustedRoots[o]))&&m2(e.policyPins,t.policyPins)}catch{return!1}}check(e){if(e.aborted||!this.current())throw ue("fenced")}operationSignal(e){let t=AbortSignal.any([this.lifetime,...this.collectionSignal?[this.collectionSignal]:[],e]);return this.check(t),t}static async openOriginalDevice(e){let{session:t,installation:i,release:o,origin:s,mode:r,signal:a,loadRuntime:c,fetch:l,allowLoopbackHttp:p}=e,d=null;try{if(!["fresh","existing"].includes(r))throw ue("binding");d=new n(t,i,o,s,a);let{custody:u,restored:f}=await d.openOwnedDevice({mode:r,signal:a,loadRuntime:c,requireReceipt:!0});if(r==="existing")d.native.acknowledgeDeviceRegistration(f.receipt),d.check(a),d.publicReceipt=d.native.registeredDeviceReceipt();else{let h=await new dc(d.native,d.pin,u,d.noise,{fetch:l,allowLoopbackHttp:p}).register(Object.freeze({signal:a}));d.check(a),d.publicReceipt=h}return d}catch(u){throw await d?.close(),u instanceof ss||u instanceof Mt?u:ue("unavailable")}}static async openInstallationDevice(e){let{signIn:t,installation:i,release:o,origin:s,signal:r,loadRuntime:a,allowLoopbackHttp:c}=e,l=null;try{let p=t.confirmedHostSession(o.logOrigin,o.environment);l=new n(p,i,o,s,r),l.signIn=t;let d=await t.prepareOriginalDevice(i);l.check(r);let{custody:u,restored:f}=await l.openOwnedDevice({mode:d.mode,signal:r,loadRuntime:a,requireReceipt:!1});if(l.originalCustody=u,f?.receipt&&t.view().state!=="paired")throw ue("recovery_required");return await l.noise.pending(new Uint8Array(u.envelope),{signal:r}),l.check(r),t.view().state==="paired"&&await l.completeInstallationSignIn(),l}catch(p){throw await l?.close(),p}}async attestInstallation(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw ue("binding");let e=await this.signIn.attest({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation});return this.check(this.lifetime),e}async completeInstallationSignIn(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw ue("binding");return await this.signIn.acknowledge({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation}),this.check(this.lifetime),this.publicReceipt=this.native.registeredDeviceReceipt(),this.registeredReceipt()}async openOwnedDevice(e){let{mode:t,signal:i,loadRuntime:o,requireReceipt:s}=e;this.check(i),this.provider=await fc.open({source:this.pin,origin:this.origin,mode:t,signal:i}),this.check(i),this.key=this.provider.deviceCustodyKek({signal:i}),this.check(i),this.keys=await hc.open({source:this.pin,origin:this.origin,mode:t,signal:i}),this.check(i),this.noiseStore=await yc.open({source:this.pin,origin:this.origin,mode:t,signal:i}),this.check(i),this.noise=new mc(this.pin,this.key,this.noiseStore);let r=await this.noise.restore({signal:i});if(this.check(i),t==="existing"?!r||s&&!r.receipt:r!==null)throw ue("recovery_required");this.restoredPrivateMarker=r?.privateEnrolMarker??null;let a=await o(Object.freeze({signal:i}));if(this.check(i),!(a instanceof Uint8Array)||!a.length)throw ue("binding");this.native=await Fl.createDevice(new Uint8Array(a)),this.check(i);let c=await new uc(this.pin,this.key,this.keys).openNativeDevice(this.native,{signal:i,mode:t,noise:t==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:r.envelope}});return this.check(i),{custody:c,restored:r}}async bootstrapCloudCopy(e){let{scope:t,collectionCurrent:i,purpose:o,outcomeMode:s,signal:r,reconcile:a,fetch:c,allowLoopbackHttp:l}=e,p=this.operationSignal(r),d=e.displayName,u=d===void 0?void 0:ii(d);if(u!==void 0&&o!=="create"||(this.check(p),this.collectionAttempted||!this.native||!this.key||!this.publicReceipt||t.account!==this.selected.accountId||t.installation!==this.selected.installationId||!["create","join"].includes(o)||!["fresh","existing"].includes(s)||U(t.collection).every(b=>b===0)))throw ue("binding");let f=Object.freeze({account:t.account,installation:t.installation,collection:t.collection}),h=()=>{try{return this.current()&&!p.aborted&&e.scope===t&&e.collectionCurrent===i&&Object.entries(f).every(([b,w])=>t[b]===w)&&i.call(e)===!0&&this.outcomeStore?.fenced!==!0}catch{return!1}};if(!h())throw ue("fenced");this.collectionAttempted=!0,this.collectionSignal=p,this.collectionCurrent=h,this.collectionScope=f;let m=Object.freeze({...this.pin,collection:f.collection,purpose:o,assetSha256:this.trust.assetSha256,...u===void 0?{}:{displayName:u},isCurrent:h});this.collectionSession=m;try{this.outcomeStore=await Ny.open({source:m,origin:this.origin,mode:s,signal:p}),this.checkCollection(p),this.outcome=new jy(m,this.publicReceipt,this.key,this.outcomeStore,{mode:s,signal:p}),this.native.prepareCloudCopyCollection(m),this.checkCollection(p),this.bootstrap=new jl(this.native,m,this.trust,this.outcome,{fetch:c,allowLoopbackHttp:l,...u===void 0?{}:{displayName:u}});let b=await this.bootstrap.bootstrap(Object.freeze({signal:p,...a?{reconcile:a}:{}}));return this.checkCollection(p),this.bootstrapConfirmed=!0,b}catch(b){throw await this.close(),b}}async bootstrapPrivateDevice(e){let{scope:t,collectionCurrent:i,signal:o,fetch:s,allowLoopbackHttp:r}=e,a=this.operationSignal(o);if(this.check(a),this.collectionAttempted||!this.native||!this.key||!this.noise||!this.publicReceipt||t.account!==this.selected.accountId||t.installation!==this.selected.installationId||U(t.collection).every(u=>u===0))throw ue("binding");let c=this.restoredPrivateMarker;if(c&&c.collection!==t.collection)throw ue("private_device_limit");let l=Object.freeze({account:t.account,installation:t.installation,collection:t.collection}),p=()=>{try{return this.current()&&!a.aborted&&e.scope===t&&e.collectionCurrent===i&&Object.entries(l).every(([u,f])=>t[u]===f)&&i.call(e)===!0}catch{return!1}};if(!p())throw ue("fenced");this.collectionAttempted=!0,this.collectionSignal=a,this.collectionCurrent=p,this.collectionScope=l;let d=Object.freeze({...this.pin,collection:l.collection,purpose:"enrol",rootPublicKey:new Uint8Array(this.trust.trustedRoots[0]),isCurrent:p});this.collectionSession=d;try{this.privateStore=await Fy.open({source:d,origin:this.origin,mode:c?"existing":"fresh",signal:a}),this.checkCollection(a);let u=new zy(d,this.publicReceipt,this.key,this.privateStore,this.noise,{allowLoopbackHttp:r});this.native.preparePrivateCollection(d,c?{mode:"existing",marker:c}:{mode:"fresh"}),this.checkCollection(a),this.privateBootstrap=new Dy(this.native,d,u,{fetch:s,allowLoopbackHttp:r}),this.privateMetadata=await this.privateBootstrap.bootstrap(Object.freeze({signal:a})),this.checkCollection(a),this.bootstrapConfirmed=!0}catch(u){throw await this.close(),u}}adoptPrivateDevice(e,t){let i=this.operationSignal(e.signal);this.checkCollection(i);let o=this.privateMetadata,s=this.publicReceipt;if(!this.native||!this.privateBootstrap||!o||!s||!this.bootstrapConfirmed||this.adoptedEndpoint!==null)throw ue("fenced");let r=o.collection;this.native.adoptDevice({replicaId:e.replicaId,endpoint:e.endpoint,opened:e.opened,sqliteVersion:e.sqliteVersion,collection:r,deviceId:o.deviceId,state:"e2e",cloudCopyOptIn:!1,trustedRoots:this.trust.trustedRoots.map(a=>new Uint8Array(a)),policyPins:new Uint8Array(this.trust.policyPins),trustedSigners:[],expectedGenesis:o.expectedGenesis},t),this.checkCollection(i),this.adoptedEndpoint=e.endpoint,this.accountKeyPin=Object.freeze({connectorId:s.connectorId,deviceId:s.deviceId,installationId:s.installationId,collection:r,approvalMode:"password-ak1",isCurrent:()=>this.collectionCurrent?.()===!0})}checkCollection(e){if(this.check(e),this.collectionCurrent?.()!==!0)throw ue("fenced")}adoptCloudCopy(e,t){let i=this.operationSignal(e.signal);if(this.checkCollection(i),!this.bootstrap||!this.bootstrapConfirmed||this.adoptedEndpoint!==null)throw ue("fenced");let o=e.endpoint;this.bootstrap.adoptCollection({...e,signal:this.collectionSignal},t),this.checkCollection(i),this.adoptedEndpoint=o}async openCollectionSql(e){let{replicaId:t,endpoint:i,openSql:o}=e,s=this.operationSignal(e.signal);if(this.checkCollection(s),!this.bootstrapConfirmed||!this.collectionScope||this.sqlAttempted||this.adoptedEndpoint!==null||U(t).every(r=>r===0)||typeof i!="bigint"&&!Number.isSafeInteger(i)||BigInt(i)<0n||BigInt(i)>(1n<<64n)-1n)throw ue("binding");this.sqlAttempted=!0;try{let r=await o.call(e,Object.freeze({scope:this.collectionScope,signal:s})),a=r.close;if(this.sqlClose=async()=>{await a.call(r)},this.collectionSql=r.sql,this.checkCollection(s),e.openSql!==o)throw ue("fenced");this.privateBootstrap?this.adoptPrivateDevice({signal:s,replicaId:t,endpoint:i,opened:r.opened,sqliteVersion:r.sqliteVersion},r.sql):this.adoptCloudCopy({signal:s,replicaId:t,endpoint:i,opened:r.opened,sqliteVersion:r.sqliteVersion,cloudCopyOptIn:!0},r.sql)}catch(r){throw await this.close(),r}}async startCollectionLog(e){let{fetch:t,allowLoopbackHttp:i}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionSession||this.adoptedEndpoint===null)throw ue("binding");let s=t??globalThis.fetch,r=i===!0;if(this.authority&&(s!==this.logRequest||r!==this.logLoopback))throw ue("fenced");if(this.pump)return;if(this.logWork){await this.logWork,this.checkCollection(o);return}this.authority||(this.logRequest=s,this.logLoopback=r,this.authority=new Ll(this.native,Object.freeze({...this.collectionSession,endpoint:this.adoptedEndpoint,directOrigins:Object.freeze([])}),{fetch:s,allowLoopbackHttp:i,tokenCache:d2()}));let a=this.authority,c=(async()=>{await a.accessToken(Object.freeze({signal:o})),this.checkCollection(o),this.pump=this.native.bindLogTransport(a.logTransport())})();this.logWork=c;try{await c}finally{this.logWork===c&&(this.logWork=null)}}peopleAuthority(){if(this.checkCollection(this.lifetime),!this.collectionSession||this.adoptedEndpoint===null||!this.logRequest||this.accountKeyPin)throw ue("binding");if(!this.peopleMetadata){let e=this.adoptedEndpoint,t=this.collectionSession,i=new gc(Object.freeze({...t,endpoint:e,directOrigins:Object.freeze([]),isCurrent:()=>this.collectionCurrent?.()===!0&&this.adoptedEndpoint===e,connectorBearer:async({signal:s})=>{s.throwIfAborted(),this.checkCollection(this.lifetime);let r=await t.connectorBearer({signal:this.lifetime});return this.checkCollection(this.lifetime),s.throwIfAborted(),r}}),{fetch:this.logRequest,allowLoopbackHttp:this.logLoopback}),o=Object.freeze({collection:i.collection,isCurrent:()=>i.isCurrent(),request:(s,r)=>i.request(s,r)});this.peopleMetadata={authority:i,view:o}}return this.peopleMetadata.view}openTimersPort(e){if(this.checkCollection(this.lifetime),!this.readVerified||!this.logRequest||!this.collectionScope||e.signal.aborted)throw ue("binding");let{scope:t,generation:i,signal:o}=e,s=this.collectionScope;if(t.account!==s.account||t.installation!==s.installation||t.collection!==s.collection||U(i).every(h=>h===0))throw ue("binding");let r=this.source.timerConsent,a=r?.call(this.source);if(!a?.approved)return null;let c=a.grants.find(h=>h.collectionId===t.collection);if(!c)return null;let l=globalThis.WorkerGlobalScope;if(typeof l!="function"||!(globalThis instanceof l)||U(c.grantId).every(h=>h===0)||!/^[0-9a-f]{64}$/.test(c.declarationDigest))throw ue("binding");let p=JSON.stringify(a),d=new MessageChannel,u=()=>{try{return!o.aborted&&e.signal===o&&e.scope===t&&e.generation===i&&this.collectionCurrent?.()===!0&&this.current()&&t.account===s.account&&t.installation===s.installation&&t.collection===s.collection&&this.source.timerConsent===r&&JSON.stringify(r?.call(this.source))===p}catch{return!1}},f=$O(d.port1,{scope:s,generation:i,grantId:c.grantId,cpOrigin:new URL(this.selected.cpOrigin).origin,signal:o,isCurrent:u,fetch:this.logRequest,...this.signIn?{journal:{read:()=>this.signIn.originalTimerChannel(c.grantId),write:h=>this.signIn.retainTimerChannel(c.grantId,h)}}:{},bearer:async()=>{if(!u())throw ue("fenced");let h=await this.bearerCallback.call(this.source,{signal:this.lifetime});if(!u())throw ue("fenced");return h}});return this.timerPorts.add(f),Object.freeze({port:d.port2,close:async()=>{await f.close(),d.port2.close(),this.timerPorts.delete(f)}})}serverProblem(){return this.pump?.serverProblem??null}transportHealth(){return this.pump?.transportHealth??null}initialSync(){try{return this.native?Hd(this.native.observations().status):"unavailable"}catch{return"unavailable"}}keyWaitDetail(){try{return this.native?IA(this.native.observations().status):null}catch{return null}}pendingWrites(){try{return this.native?.observations().status.pending??0}catch{return 0}}pushLog(e){try{return this.native?.pushLog(e)===!0}catch{return!1}}openLogPush(e){this.checkCollection(this.lifetime);let t=this.native,i=this.authority,o=this.collectionSession,s=this.logRequest;if(!t||!this.pump||!i||!o||!s)throw ue("binding");if(!t.supportsLogPush||typeof WebSocket!="function")return null;let r=this.logLoopback,a=i.origin,c=()=>{try{return this.collectionCurrent?.()===!0&&this.current()&&this.authority===i&&i.isCurrent()}catch{return!1}};return new Ty({origin:a,collection:i.collection,deviceId:o.deviceId,isCurrent:c,accessToken:l=>i.accessToken(l),invalidateToken:l=>i.invalidateToken(l),nonce:async({signal:l})=>{let p=await s(`${a}/v1/nonce`,{signal:l,cache:"no-store",credentials:"omit",redirect:"error",referrerPolicy:"no-referrer"}),d=(await p.text()).trim();if(!p.ok||!/^[0-9a-f]{64}$/.test(d))throw ue("unavailable");return Uint8Array.from(d.match(/../g).map(u=>parseInt(u,16)))},signHello:(l,p)=>c()?t.signLogHello(l,p):null},e,{allowLoopbackHttp:r})}async driveCollection(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw ue("binding");for(let i=0;i<jN;i++){let o=this.pump.callsSent;if(this.native.tick(),await this.pump.pump(),this.checkCollection(t),this.pump?.callsSent===o)break}}async wakeCollectionLog(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw ue("binding");this.native.tick(),(await this.pump.pump()).quiet&&(this.checkCollection(t),this.native.requestLogHead()&&(await this.pump.pump(),this.checkCollection(t),this.native.tick()))}waitForVerifiedRead(e){let{timeoutMs:t=15e3,cold:i=!1}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionScope||this.adoptedEndpoint===null||!Number.isSafeInteger(t)||t<1||t>15e3||typeof i!="boolean"||i&&!this.pump)throw ue("binding");if(this.readWork)return this.readWork.then(()=>{this.checkCollection(o)});let s=this.verifyRead(o,t,i,e.onProgress);return this.readWork=s,s.finally(()=>{this.readWork===s&&(this.readWork=null)}).catch(()=>{}),s}async verifyRead(e,t,i,o){let s=new AbortController,r=()=>s.abort();this.readAbort=s,e.addEventListener("abort",r,{once:!0});let a=null,c=ue(i?"sync_stalled":"unavailable"),l,p=new Promise((h,m)=>{l=()=>m(c),s.signal.addEventListener("abort",l,{once:!0})});p.catch(()=>{});let d=null,u=h=>{if(h!==d){d=h;try{o?.(h)}catch{}}},f=()=>{this.checkCollection(e);let h=i?this.pump.terminalProblem:null;if(Dn(h))throw new kn(Ot(h)??"unavailable",h);let m=this.native.observations();if(m.requiresReopen||m.keyringRebuildFailed)throw ue("recovery_required");let b=Hd(m.status);return u(b==="installing"?"loading_snapshot":b==="waiting_for_key"?"waiting_for_key":b==="behind"?"replaying":b===null?"verifying_read":"syncing"),m};this.readVerified=!1;try{if(this.pump){let m=()=>{let _=f();return[_.status.confirmedThrough,_.status.installing?.done??0,_.status.installing?.total??0,this.pump.readProgress]},b=m(),w=Date.now(),g=new Map,y=null,v=()=>{try{let _=Date.now(),k=m();k.some((I,R)=>I>b[R])&&(w=_,y=null),b=k.map((I,R)=>Math.max(I,b[R]));let S=this.pump.responseProgress(),x=new Set(S.map(I=>I.id));for(let I of g.keys())x.has(I)||g.delete(I);for(let I of S){let R=g.get(I.id);I.bytes>(R?.bytes??0)&&g.set(I.id,{bytes:I.bytes,at:_})}let P=t-(_-w);P<=0&&(y??=new Set(g.keys()),P=Math.max(0,...[...y].map(I=>{let R=g.get(I);return R?t-(_-R.at):0}))),P<=0?r():a=setTimeout(v,Math.min(250,P))}catch(_){c=_,r()}};a=setTimeout(v,Math.min(250,t))}else a=setTimeout(r,t);this.readClient=await Promise.race([pr.connect({app:{name:"app-local-read-gate",version:"1"},connector:Na(this.native,{collection:this.collectionScope.collection}),reconnect:!1,signal:s.signal}).then(m=>{if(s.signal.aborted)throw m.close(),ue("unavailable");return m}),p]),this.checkCollection(e);let h=250;for(;!s.signal.aborted;){this.native.tick(),this.pump&&await Promise.race([this.pump.pump(),p]),this.checkCollection(e);let m=f();if(i&&Hd(m.status)!==null){await Qo(h,s.signal),h=Math.min(1e3,h*2);continue}try{if(await Promise.race([this.readClient.query({limit:1},void 0,s.signal),p]),this.checkCollection(e),s.signal.aborted)throw ue("unavailable");this.readVerified=!0;return}catch(b){if(this.checkCollection(e),!(b instanceof pe)||b.code!=="unavailable"||!this.pump||s.signal.aborted)throw b}await Qo(h,s.signal),h=Math.min(1e3,h*2)}throw ue("unavailable")}catch(h){throw this.checkCollection(e),s.signal.aborted?c:h}finally{a!==null&&clearTimeout(a),e.removeEventListener("abort",r),s.signal.removeEventListener("abort",l),this.readClient?.close(),this.readClient=null,this.readAbort=null}}get privateDevice(){return this.accountKeyPin!==null}accountKeyState(){if(!this.native||!this.accountKeyPin||this.adoptedEndpoint===null)throw ue("binding");return this.native.accountKeyStatus(this.accountKeyPin)}async settlePrivateKey(e){let{timeoutMs:t=15e3}=e,i=this.operationSignal(e.signal);if(this.checkCollection(i),!this.native||!this.pump||!this.accountKeyPin||this.adoptedEndpoint===null||!Number.isSafeInteger(t)||t<1||t>15e3)throw ue("binding");let o=null,s=Date.now(),r=100,a=!1,c=async()=>a?!0:(a=!0,await this.wakeCollectionLog({signal:i}),!1);for(;;){let l=this.accountKeyState();if(l.state==="keyed")return"keyed";if(l.state==="refused"&&l.reason==="outcome_unknown")throw ue("recovery_required");await this.driveCollection({signal:i});let p=this.pump?.terminalProblem;if(Dn(p))throw new kn(Ot(p)??"unavailable",p);if(this.accountKeyState().state==="keyed")return"keyed";let d=this.native.observations();if(d.requiresReopen||d.keyringRebuildFailed)throw ue("recovery_required");let u=Hd(d.status);if(u==="offline"||this.pump?.transportHealth?.kind==="offline")throw ue("unavailable");let f=u==="waiting_for_key"?IA(d.status)?.key:void 0;if(u===null||f!==void 0&&f!=="reading"){if(await c())return"locked";continue}let h=Date.now(),m=[d.status.confirmedThrough,d.status.headKnown,this.pump.readProgress];if((o===null||m.some((b,w)=>b>o[w]))&&(s=h),o=o===null?m:m.map((b,w)=>Math.max(b,o[w])),h-s>=t)throw ue("sync_stalled");await Qo(r,i),this.checkCollection(i),r=Math.min(1e3,r*2)}}accountKeySession(e){let t=this.collectionSession;if(!t)throw ue("binding");return Object.freeze({accountId:this.selected.accountId,connectorId:e.connectorId,deviceId:e.deviceId,collection:e.collection,cpOrigin:this.selected.cpOrigin,isCurrent:()=>this.collectionCurrent?.()===!0&&this.accountKeyPin===e,connectorBearer:async({signal:i})=>{i.throwIfAborted(),this.checkCollection(this.lifetime);let o=await t.connectorBearer({signal:this.lifetime});return this.checkCollection(this.lifetime),i.throwIfAborted(),o}})}async accountKeyMode(e){let t=this.operationSignal(e.signal);this.checkCollection(t);let i=this.accountKeyPin;if(!i||!this.logRequest)throw ue("binding");return yy(this.accountKeySession(i),{signal:t,fetch:this.logRequest,allowLoopbackHttp:this.logLoopback})}async unlockAccountKey(e,t){let i=this.operationSignal(t.signal);this.checkCollection(i);let o=this.native,s=this.accountKeyPin,r=this.logRequest;if(!o||!s||!r||!this.pump||this.adoptedEndpoint===null||this.accountKeyWork)throw ue("binding");let a=Object.freeze({supportsFetchProof:()=>o.supportsAccountKeyFetchProof,signFetch:c=>o.signAccountKeyFetch(s,this.selected.accountId,c),unlockConsuming:c=>o.unlockAccountKeyConsuming(s,c),status:()=>o.accountKeyStatus(s),drive:c=>this.driveCollection({signal:c.signal}),headKnown:()=>o.observations().status.headKnown});this.accountKeyWork=!0;try{await gy(this.accountKeySession(s),a,e,{signal:i,fetch:r,allowLoopbackHttp:this.logLoopback,sealed:this.accountKeySealed,...t.onMode?{onMode:t.onMode}:{}}),this.checkCollection(i)}finally{this.accountKeyWork=!1}}onLogWork(e){this.logWorkListener=e}attachDataFacade(e){if(this.checkCollection(this.lifetime),!this.native||!this.collectionScope||!this.readVerified||this.facades.size>=LN||this.facades.has(e))throw ue("fenced");let t=Object.freeze({...this.collectionScope,isCurrent:()=>{try{return this.checkCollection(this.lifetime),!0}catch{return!1}}}),i=Lm(this.native,e,t,()=>this.logWorkListener?.());return this.facades.set(e,i),i.resourceSetup}detachDataFacade(e){let t=this.facades.get(e);t&&(this.facades.delete(e),t.close())}registeredReceipt(){this.check(this.lifetime);let e=this.publicReceipt;if(!e)throw ue("fenced");return Object.freeze({...e,signPublicKey:new Uint8Array(e.signPublicKey),kemPublicKey:new Uint8Array(e.kemPublicKey),noisePublicKey:new Uint8Array(e.noisePublicKey)})}close(){if(this.closing=!0,this.readVerified=!1,this.readAbort?.abort(),this.closeResult)return this.closeResult;let e=!1;for(let t of[()=>this.readClient?.close(),()=>{for(let i of this.facades.values())i.close();this.facades.clear()},()=>this.peopleMetadata?.authority.close(),()=>this.bootstrap?.close(),()=>this.outcome?.close(),()=>this.accountKeySealed.clear()])try{t()}catch{e=!0}return this.closeResult??=(async()=>{try{await Promise.all([...this.timerPorts].map(async i=>{try{await i.close()}catch{e=!0}})),this.timerPorts.clear();let t=await this.native?.close();if(this.collectionSql&&t!==!0&&this.collectionSql.fence(),this.authority?.close(),await this.sqlClose?.(),e)throw ue("unavailable")}finally{this.key=null,this.noise=null,this.originalCustody?.envelope.fill(0),this.originalCustody=null,this.signIn=null,this.publicReceipt=null,this.outcomeStore?.close(),this.privateStore?.close(),this.noiseStore?.close(),this.keys?.close(),this.provider?.close()}})()}};sC();ne();fd();gd();Hs();Ho();sy();yd();md();$d();Ko();Qn();var UN=new Set(["binding","fenced","busy","open_in_another_tab","account_confirmation_required","recovery_account_mismatch","outcome_unknown","response","refused","expired","recovery_required","unavailable","collection_migrating","collection_not_yet_migrated","account_suspended","update_required","private_device_limit","private_device_not_allowed"]),NN=new Set(["AbortError","ConstraintError","DataCloneError","InvalidStateError","NotAllowedError","NotFoundError","NotReadableError","OperationError","QuotaExceededError","SecurityError","TimeoutError","TransactionInactiveError","UnknownError","VersionError"]),as=(n,e,t,i)=>Object.freeze({problem:n,detail:Object.freeze({name:e,code:t,...i?{server:i}:{}})});function DA(n){try{for(let[e,t]of[[et,"AppInstallationSignInError"],[ss,"AppCloudCopyHostError"],[Sn,"AppCloudCopyBootstrapError"],[xn,"AppCollectionSetupError"],[Ri,"AppCollectionControlError"],[ts,"AppCollectionJoinError"],[Ci,"AppCpAuthorityError"],[kn,"AppHttpLogError"],[sa,"AppPrivateBootstrapError"],[st,"AppAccountKeyUnlockError"]])if(n instanceof e){let i=n.reason,o=("server"in n?Io(n.server):null)??void 0;return i==="sync_stalled"?as("unavailable",t,i,o):UN.has(i)?as(i,t,i,o):as("open_failed",t,null,o)}if(n instanceof Qe&&n.reason==="busy")return as("open_in_another_tab","AppReplicaOwnerError","busy");if(n instanceof pe){let e=uo(n.code)?n.code:null;return as(e==="outcome_unknown"?e:"open_failed","MdbaseError",e)}if(typeof DOMException<"u"&&n instanceof DOMException){let e=NN.has(n.name)?n.name:null;return as("open_failed","DOMException",e)}for(let[e,t]of[[TypeError,"TypeError"],[RangeError,"RangeError"],[SyntaxError,"SyntaxError"],[ReferenceError,"ReferenceError"],[URIError,"URIError"],[EvalError,"EvalError"],[Error,"Error"]])if(n instanceof e)return as("open_failed",t,null)}catch{}return as("open_failed","UnknownError",null)}gd();Vo();Ko();be();var DN=5e3,$N=n=>Array.from(U(n),e=>e.toString(16).padStart(2,"0")).join(""),tr=n=>(U(n),n.toLowerCase());function Vy(n,e,t=DN){let i;return Promise.race([n.catch(()=>e),new Promise(o=>{i=setTimeout(()=>o(e),t)})]).finally(()=>clearTimeout(i))}function $A(n){return Vy(new Promise(e=>{let t=indexedDB.deleteDatabase(n);t.onsuccess=()=>e(!0),t.onerror=()=>e(!1)}),!1)}function zN(n){let e=encodeURIComponent(n.cpOrigin),t=`mdbase.app.installation.v1.${e}.${n.appId}`;return[n.owner===void 0?t:`mdbase.app.installation.v2.${e}.${encodeURIComponent(n.owner)}.${n.appId}`,t]}async function BN(n,e,t){let i=new Set(n.isolated?[]:n.databases);!n.isolated&&n.storageNamespace===void 0&&i.add(t);let{accountId:o,connectorId:s,deviceId:r,installationId:a}=n;if(o&&s&&r&&a){let c=[o,s,r,a].map($N).join(".");i.add(`mdbase.app.device-key-kek.v1.${c}`),i.add(`mdbase.app.device-keys.v1.${c}`),i.add(`mdbase.app.noise.v1.${tr(a)}.${tr(s)}.${tr(r)}`);let l=[o,s,r,a].map(tr).join("."),p=[`mdbase.app.cloud-copy-outcome.v1.${l}.`,`mdbase.app.private-bootstrap.v1.${l}.`];for(let u of n.collectionIds){let f=tr(u);for(let h of["create","join"])i.add(`${p[0]}${f}.${h}`);for(let h of["create","enrol"])i.add(`${p[1]}${f}.${h}`)}let d=indexedDB.databases;if(typeof d=="function"){let u=await Vy(d.call(indexedDB),[]);for(let{name:f}of u)f&&p.some(h=>f.startsWith(h))&&i.add(f)}}return i.delete(e),[...i]}async function FN(n,e){let t=globalThis.navigator?.storage;return typeof t?.getDirectory!="function"?!0:Vy((async()=>{let i=await t.getDirectory(),o=`.mdbase-app-${tr(n)}-${tr(e)}-`,s=[];for await(let a of i.keys())a.startsWith(o)&&s.push(a);let r=!0;for(let a of s)try{await i.removeEntry(a,{recursive:!0})}catch{r=!1}return r})(),!1)}async function y2(n,e){try{if(!globalThis.indexedDB||!n.accountId||!n.connectorId||!n.deviceId||!n.installationId)return!1;let t=tr(e),i=[n.accountId,n.connectorId,n.deviceId,n.installationId].map(tr).join("."),o=["create","join"].map(a=>`mdbase.app.cloud-copy-outcome.v1.${i}.${t}.${a}`);o.push(...["create","enrol"].map(a=>`mdbase.app.private-bootstrap.v1.${i}.${t}.${a}`));let s=await Promise.all(o.map($A)),r=globalThis.navigator?.storage;if(typeof r?.getDirectory=="function"){let a=await r.getDirectory();try{await a.removeEntry(`.mdbase-app-${tr(n.accountId)}-${tr(n.installationId)}-${t}`,{recursive:!0})}catch(c){if(!(c instanceof DOMException&&c.name==="NotFoundError"))return!1}}return s.every(Boolean)}catch{return!1}}async function g2(n){if(!globalThis.indexedDB)return Object.freeze({ledger:!1,complete:!1});let[e,t]=zN(n),i=await $A(e),o=null;try{o=await BN(n,e,t)}catch{}let s=o?await Promise.all([...o,...n.isolated||n.storageNamespace!==void 0?[]:[xA]].map($A)):[!1],r=n.storageNamespace===void 0?!0:await Vy(u2(n),!1),a=n.accountId&&n.installationId?await FN(n.accountId,n.installationId).catch(()=>!1):!0;return Object.freeze({ledger:i,complete:i&&r&&a&&s.every(Boolean)})}ne();var VN=Object.freeze({status:"unselected",problem:null,transport:null,live:null}),ut=n=>new et(n),KN=new Set(["collection_not_yet_migrated","collection_migrating","account_suspended","update_required"]),Ky=class{lifetime=new AbortController;flowLifetime=new AbortController;options;environment;listeners=new Set;flow=null;host=null;installation=null;installationLease=null;slots=new Map;focus=null;openingSlot=null;abortCollections=()=>{for(let e of this.slots.values())e.lifetime?.abort()};base=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null});snapshotValue=this.base;authorizationStartedAt=null;authorizationRetryAt=0;authorizationRateLimit=null;pending=null;polling=null;timer=null;closing=null;foreground=!0;receiptRead=null;foregroundRead=null;attested=!1;acknowledged=!1;consentPending=!1;fileAccess=null;freshApproval=!1;approvalWindow=null;nativePending=null;forgotten=new Set;removedScopes=new Set;onAbort=()=>{this.close().catch(()=>{})};constructor(e){this.options=Object.freeze({...e}),this.environment=xi({environment:e.environment,appOrigin:e.origin,release:e.release}),e.signal.addEventListener("abort",this.onAbort,{once:!0}),this.lifetime.signal.addEventListener("abort",this.abortCollections,{once:!0})}getSnapshot(){return this.snapshotValue}snapshot(){return this.getSnapshot()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}viewFor(e,t={}){return t.bystander&&this.base.status==="authorizing"&&this.consentPending&&e!==null&&this.slots.has(e)?this.compose(e,!0):e===this.focus?this.snapshotValue:this.compose(e)}collectionView(e){return this.slots.get(e)?.view??null}heldCollections(){return[...this.slots.keys()]}compose(e,t=!1){let i=this.base,o=e===null?void 0:this.slots.get(e);if(!o)return i;if(i.status!=="unselected"&&!t)return Object.freeze({...i,selectedCollectionId:o.id,transport:o.view.transport,live:o.view.live});let{problemDetail:s,...r}=i,{problemDetail:a,...c}=o.view;return Object.freeze({...r,...t?{status:"unselected",problem:null,approval:null}:{},...c,selectedCollectionId:o.id,...a?{problemDetail:a}:{}})}connection(e=this.focus){let t=e===null?void 0:this.slots.get(e),i=this.base.status==="unselected"||this.base.status==="authorizing"&&this.consentPending;return!t||this.closing||this.options.signal.aborted||!t.usable||t.lifetime?.signal.aborted||!this.installation?.isCurrent()||!i||!["ready","setup_required"].includes(t.view.status)||!this.sameScope(t.scope,t.leaseScope)||t.scope?.collection!==t.id?null:t.selected?.connection??null}sameScope(e,t){return e!==null&&t!==null&&e.account===t.account&&e.installation===t.installation&&e.collection===t.collection&&e.account===this.installation?.scope.account&&e.installation===this.installation?.scope.installation}directAccess=qy;checkDirectAccess(e){return this.check(),this.directAccess.check(e)}requestDirectAccess(e){return this.check(),this.directAccess.request(e)}check(){if(this.closing||this.options.signal.aborted||this.lifetime.signal.aborted)throw ut("fenced")}publish(e){this.check(),this.setBase(e),this.changed()}setBase(e){let{problemDetail:t,...i}=this.base,o=e.problem===null?void 0:e.problemDetail??t;this.base=Object.freeze({...i,...e,selectedCollectionId:null,signIn:this.flow?.view()??null,...o?{problemDetail:o}:{}})}publishSlot(e,t){if(this.check(),this.slots.get(e.id)!==e)return;let i=this.base.timing;if(this.authorizationStartedAt!==null&&(t.status==="ready"||t.status==="setup_required")){let u=Math.max(0,performance.now()-this.authorizationStartedAt);i=Object.freeze({firstScreenMs:i?.firstScreenMs??u,readyMs:t.status==="ready"?i?.readyMs??u:i?.readyMs??null})}this.setBase({timing:i});let{problemDetail:o,unlock:s,...r}=e.view,{unlock:a,...c}=t,l=t.problem===null?void 0:t.problemDetail??o,p=(t.status??r.status)==="opening"?"openingProgress"in t?t.openingProgress??null:r.openingProgress??null:null,d=(t.status??r.status)==="needs_unlock"?a??s??null:null;e.view=Object.freeze({...r,...c,openingProgress:p,...d?{unlock:d}:{},...l?{problemDetail:l}:{}}),this.changed()}changed(){this.snapshotValue=this.compose(this.focus);for(let e of[...this.listeners])try{e()}catch{}}poll(e){this.pending||(this.operation(e).catch(()=>{}),this.polling=this.pending)}stopPolling(){this.timer!==null&&clearTimeout(this.timer),this.timer=null}operation(e,t=!1){if(this.check(),this.pending)return Promise.reject(ut("busy"));this.foregroundRead=null,this.stopPolling();let o=Promise.resolve().then(()=>(this.check(),e())).catch(async s=>{if(!t&&!this.closing&&!this.options.signal.aborted){let{problem:r,detail:a}=DA(s);if(r==="open_failed")try{console.error("mdbase web sign-in open failed",a.name,a.code)}catch{}let c=this.openingSlot;if(this.openingSlot=null,c&&this.slots.get(c.id)===c){let l=!1;try{l=s instanceof Sn&&s.reason==="unavailable"&&s.retryable===!0&&c.view.status==="opening"&&this.base.collections.some(p=>p.collectionId===c.id)&&this.flow?.view().state==="paired"&&this.installation?.isCurrent()===!0}catch{}if(l){try{await this.closeSlot(c),this.check()}catch(p){throw!this.closing&&!this.options.signal.aborted&&this.publishSlot(c,{status:"blocked",problem:"recovery_required",problemDetail:DA(p).detail}),p}this.publishSlot(c,{status:"unselected",problem:r,problemDetail:a})}else this.publishSlot(c,{status:"blocked",problem:r,problemDetail:a})}else this.publish({status:"blocked",problem:r,problemDetail:a})}throw s});return this.pending=o,o.finally(()=>{this.pending===o&&(this.pending=null),this.schedulePoll()})}start(){return this.operation(async()=>{if(this.flow&&this.base.status!=="blocked")return this.getSnapshot();this.publish({status:"starting",problem:null,signOutResult:null});let e=this.options;this.flow??=await Ml.open({...e,mode:e.storeMode??"open",signal:this.flowLifetime.signal,environmentSelection:this.environment}),this.check();let t=this.flow.view();if(t.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!t.nativeSelection)throw ut("recovery_required");await this.openDevice(!1,this.options.recoveryFor!==void 0),this.flow.collectionConsentView()?.state==="pending"?(this.consentPending=!0,this.publish({status:"authorizing"})):await this.refreshCollections()}else this.publish({status:t.state==="pending"?"signed_out":"authorizing"});return this.getSnapshot()})}authorize(e={}){if(this.check(),this.authorizationRateLimit&&Date.now()<this.authorizationRetryAt)return Promise.reject(this.authorizationRateLimit);let t=this.pending!==null&&this.pending===this.polling?this.pending:null;if(!this.flow||this.pending&&!t)return Promise.reject(ut("busy"));let i=this.options.openPortal();return t?t.catch(()=>{}).then(()=>{try{this.check()}catch(s){throw i.close(),s}if(this.pending)throw i.close(),ut("busy");let o=this.base.status;return o!=="authorizing"&&o!=="signed_out"?(i.close(),this.getSnapshot()):this.beginAuthorization(i,e)}):this.beginAuthorization(i,e)}beginAuthorization(e,t){let i={collectionHint:t.collectionHint??null},o=this.flow.view();return this.authorizationStartedAt=performance.now(),this.publish({timing:Object.freeze({firstScreenMs:null,readyMs:null}),approval:null}),this.operation(async()=>{try{if(o.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!o.nativeSelection)throw ut("recovery_required");await this.openDevice(),this.check();let s=await this.flow.startCollectionConsent(this.installation,this.options.requestedCreateCollections??this.options.freshRequestedCreateCollections??!1,i,this.options.freshRequestedPrivateDevice===!0);this.check(),this.consentPending=!0,e.navigate(s.verificationUri)}else{let s=await this.flow.start(i).catch(r=>this.renewFromGesture(r));this.check(),e.navigate(s.verificationUri)}return this.holdApprovalWindow(e),this.publish({status:"authorizing",problem:null}),await this.advance(),this.getSnapshot()}catch(s){throw s instanceof et&&s.server?.status===429&&(this.authorizationRateLimit=s,this.authorizationRetryAt=Date.now()+Math.min(Ba,Math.max(za,s.server.retryAfterMs??3e4))),e.close(),s}})}requestFileAccess(e,t,i){if(this.check(),!this.flow||this.pending)return Promise.reject(ut("busy"));let o=this.options.openPortal();return this.operation(async()=>{try{if(this.flow.view().state!=="paired"||!this.installation||!this.base.collections.some(r=>r.collectionId===e))throw ut("refused");let s=await this.flow.startFileAccess(this.installation,e,t,i);return this.check(),this.fileAccess=s,o.navigate(s.verificationUri),this.holdApprovalWindow(o),this.publish({fileAccess:Object.freeze({requestId:s.requestId,collectionId:e,actions:s.actions,state:"pending"})}),this.getSnapshot()}catch(s){throw o.close(),s}},!0)}pollFileAccess(e){let t=this.fileAccess;return!t||t.requestId!==e||this.pending||!this.flow||!this.installation?Promise.resolve(this.getSnapshot()):this.operation(async()=>{let i={state:"pending"};try{i=await this.flow.exchangeFileAccess(this.installation,t)}catch{}if(this.check(),this.fileAccess!==t||i.state==="pending"&&Date.now()<t.expiresAt)return this.getSnapshot();this.fileAccess=null,this.closeApprovalWindow();let o=i.state==="granted"?i.actions:null,s=o?Object.freeze(this.base.collections.map(r=>r.collectionId!==t.collectionId?r:Object.freeze({...r,fileActions:Object.freeze([...new Set([...r.fileActions??[],...o])])}))):this.base.collections;return this.publish({collections:s,fileAccess:Object.freeze({requestId:e,collectionId:t.collectionId,actions:o??t.actions,state:i.state==="pending"?"expired":i.state})}),this.getSnapshot()},!0)}async renewFromGesture(e){if(!(e instanceof et)||e.reason!=="expired"&&e.reason!=="refused")throw e;try{return await this.flow.renewExpiredPairing()}catch(t){throw t instanceof et&&t.reason==="recovery_required"?e:t}}renewExpiredPairing(){return this.operation(async()=>{if(!this.flow)throw ut("binding");return await this.flow.renewExpiredPairing(),this.check(),this.publish({status:"signed_out",problem:null}),this.getSnapshot()})}receiptGeneration(e){try{if(!e.isCurrent())return null;let t=e.view(),i=this.consentPending?e.collectionConsentView():null;return(this.consentPending?i?.state!=="pending":!["pending","awaiting_approval"].includes(t.state))?null:JSON.stringify([t.requestId,t.installationId,t.deviceId,t.accountId,t.state,this.consentPending,i?.requestId,i?.state])}catch{return null}}currentReceipt(e){try{return!this.closing&&!this.lifetime.signal.aborted&&!this.flowLifetime.signal.aborted&&!e.caller.aborted&&this.options.signal===e.caller&&this.flow===e.flow&&this.installation===e.installation&&(e.installation===null||e.installation.isCurrent()===!0)&&this.attested===e.attested&&this.acknowledged===e.acknowledged&&this.receiptGeneration(e.flow)===e.generation}catch{return!1}}async exchangeReceipt(e){let t=this.flow,i=this.pending,o=t?this.receiptGeneration(t):null,s=t&&i&&o!==null?Object.freeze({flow:t,operation:i,generation:o,caller:this.options.signal,installation:this.installation,attested:this.attested,acknowledged:this.acknowledged}):null;this.receiptRead=s;let r=!1;try{let a=await e();return r=a!=null,a}catch(a){if(a instanceof et&&a.reason==="outcome_unknown"&&this.flow?.isCurrent())return this.publish({status:"authorizing",problem:"outcome_unknown"}),null;throw a}finally{this.receiptRead===s&&(this.receiptRead=null),this.foregroundRead===s&&(!r||!s||!this.currentReceipt(s))&&(this.foregroundRead=null)}}async advance(){if(this.consentPending){let t;try{t=await this.exchangeReceipt(()=>this.flow.exchangeCollectionConsent(this.installation))}catch(i){if(!(i instanceof et)||i.reason!=="refused"&&i.reason!=="expired")throw i;this.check(),this.consentPending=!1,this.closeApprovalWindow(),this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"cancelled"})}),await this.refreshCollections();return}if(this.check(),!t)return;if(t.state==="scope_updated"){if(t.accountSelectionConfirmed!==!0)throw ut("account_confirmation_required");let i=this.flow.pendingNativeSelection?.();if(i?.requestId===t.requestId)await this.finishNativeChoice(i);else if(this.flow.view().collectionSelection?.requestId!==t.requestId&&!this.deviceAccessWithoutPick(t.requestedPrivateDevice===!0?t.addedCollectionIds:[]))throw ut("response");this.consentPending=!1,this.freshApproval=!0,this.closeApprovalWindow(),await this.refreshCollections()}else await this.prepareNativeChoice(),this.publish({status:"authorizing",problem:null});return}let e=await this.exchangeReceipt(()=>this.flow.exchange());if(this.check(),!!e)if(e.state==="account_selected"&&(e=await this.flow.confirmPortalSelectedAccount(),this.check()),(e.state==="account_confirmed"||e.state==="awaiting_approval")&&(await this.openDevice(),this.check(),this.attested||(await this.host.attestInstallation(),this.check(),this.attested=!0),await this.prepareNativeChoice()),e.state==="paired"){let t=this.flow.pendingNativeSelection?.();if(t?.requestId===e.requestId)await this.finishNativeChoice(t);else if(e.collectionSelection?.requestId!==e.requestId&&!this.deviceAccessWithoutPick(e.privateDeviceCollectionIds??[]))throw ut("response");this.freshApproval=!0,this.closeApprovalWindow(),await this.openDevice(),this.check(),await this.refreshCollections()}else this.publish({status:"authorizing",problem:null})}deviceAccessWithoutPick(e){let t=this.flow.view(),i=t.privateDeviceCollectionIds??[];return(t.collectionSelection??null)===null&&e.some(o=>i.includes(o))}async prepareNativeChoice(){let e=this.approvalWindow?.nativeAuthorization;if(!e||!this.installation)return;let t=this.flow.nativeAuthorizationContext(this.installation);if(!t)return;let i=this.nativePending;if(!i){if(i={context:t,port:e,life:new AbortController,prepared:null,failed:!1,attempted:!1},this.nativePending=i,t.authorizationId){i.failed=!0;return}let o=i,s=AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,i.life.signal]);e.prepare(t,s).then(r=>{this.nativePending!==o||s.aborted||(o.prepared=Object.freeze({...r}))},()=>{o.failed=!0})}if(i.context.requestId!==t.requestId||i.context.accountId!==t.accountId||i.context.challenge!==t.challenge)throw ut("fenced");if(i.prepared&&!i.attempted){i.attempted=!0;try{await this.flow.attachNativeAuthorization(this.installation,i.context,i.prepared),this.check()}catch{i.failed=!0}}}async finishNativeChoice(e){let t=this.nativePending;if(!t||!t.prepared||!t.attempted||t.context.requestId!==e.requestId||t.prepared.authorizationId!==e.authorizationRequestId)throw ut("recovery_required");await this.openDevice(),this.check();let i=await t.port.finish(e,AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,t.life.signal]));if(this.check(),this.nativePending!==t||!this.acknowledged||!this.installation)throw ut("fenced");await this.flow.completeNativeAuthorization(this.installation,i),this.check()}holdApprovalWindow(e){this.approvalWindow!==e&&this.closeApprovalWindow(),this.approvalWindow=e}closeApprovalWindow(){let e=this.approvalWindow;this.approvalWindow=null;let t=this.nativePending;this.nativePending=null,t?.life.abort();try{t?.port.cancel()}catch{}if(e)try{e.close()}catch{}}async openDevice(e=!1,t=!1){if(!this.installation){let i=this.flow.confirmedSelection(),o=Object.freeze({account:i.accountId,installation:i.installationId});this.installationLease=await pd(this.options.locks,o,this.lifetime.signal),this.check(),this.installation=Object.freeze({scope:o,isCurrent:()=>!this.closing&&!this.options.signal.aborted&&!this.lifetime.signal.aborted&&this.installationLease!==null})}t||!this.host&&!e&&this.acknowledged&&this.flow.view().state==="paired"&&[...this.slots.values()].some(i=>i.host!==null)||(this.host?!this.acknowledged&&this.flow.view().state==="paired"&&(await this.host.completeInstallationSignIn(),this.check(),this.acknowledged=!0):(this.host=await wc.openInstallationDevice({signIn:this.flow,installation:this.installation,release:this.options.release,origin:this.options.origin,signal:this.lifetime.signal,loadRuntime:this.options.loadRuntime,allowLoopbackHttp:this.environment.allowLoopbackHttp}),this.check(),this.acknowledged=this.flow.view().state==="paired"))}async refreshCollections(){let e=await this.flow.listApprovedCollections(this.installation);this.check();for(let o of this.flow.view().collectionIds)e.some(s=>s.collectionId===o)||this.removedScopes.add(o);let t=Object.freeze(e.filter(o=>!this.forgotten.has(o.collectionId)));for(let o of this.slots.values()){if(o.usable&&o.selected&&!t.some(l=>l.collectionId===o.id)){o.usable=!1,o.lifetime?.abort(),await this.closeSlot(o),this.check(),this.deleteSlot(o);continue}let s=o.usable&&o.selected!==null&&t.some(l=>l.collectionId===o.id),{problemDetail:r,unlock:a,...c}=o.view;o.view=Object.freeze({...c,...s?this.assessed(o.selected):{status:"unselected"},problem:null})}this.publish({status:"unselected",collections:t,problem:null});let i=this.flow.view().collectionSelection?.selectedCollectionId;(this.options.autoSelect??"only")==="only"&&(this.freshApproval&&i&&t.some(o=>o.collectionId===i)?await this.openSlot(i,!0):t.length===1&&await this.openSlot(t[0].collectionId,!0))}schedulePoll(){if(this.pending&&!this.closing&&!this.options.signal.aborted)return;let e=this.foregroundRead;this.foregroundRead=null;for(let i of this.closing||this.options.signal.aborted?[]:this.slots.values()){let o=this.retryAfterMs(i);o===null||i.timer!==null||i.view.status!=="blocked"||(i.timer=setTimeout(()=>{i.timer=null,!(this.slots.get(i.id)!==i||i.view.status!=="blocked"||i.view.problem!=="collection_migrating"||this.flow?.view().state!=="paired")&&this.operation(()=>this.openSlot(i.id)).catch(()=>{})},o))}if(this.closing||this.options.signal.aborted||this.timer!==null||this.base.status!=="authorizing")return;let t=this.foreground&&e&&this.currentReceipt(e)?e:null;this.timer=setTimeout(()=>{this.timer=null,this.poll(async()=>{t&&(!this.foreground||!this.currentReceipt(t))||await this.advanceApproval()})},t?0:this.foreground?this.base.problem==="outcome_unknown"?5e3:1e3:1e4)}retryAfterMs(e){let t=e.view;if(t.problem!=="collection_migrating")return null;let i=null;try{i=Io(t.problemDetail?.server)?.retryAfterMs??null}catch{i=null}return Math.min(Ba,Math.max(za,i??3e4))}setForeground(e){this.check();let t=e&&!this.foreground;this.foreground=e,this.stopPolling(),e?t&&this.receiptRead?.operation===this.pending&&(this.foregroundRead=this.receiptRead):this.foregroundRead=null,e&&this.base.status==="authorizing"&&!this.pending?this.poll(()=>this.advanceApproval()):this.schedulePoll()}approvalWindowClosed(){this.check(),!(this.pending||this.base.status!=="authorizing"||!this.approvalWindowGone())&&(this.stopPolling(),this.poll(()=>this.advanceApproval()))}approvalWindowGone(){let e=this.approvalWindow;try{return e?.closed===!0}catch{return!1}}async advanceApproval(){let e=this.approvalWindowGone()?this.approvalWindow:null;if(await this.advance(),this.check(),!(!e||this.approvalWindow!==e||this.base.status!=="authorizing")&&this.base.problem!=="outcome_unknown"){if(this.closeApprovalWindow(),this.consentPending){this.consentPending=!1,this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"closed"})}),await this.refreshCollections();return}this.publish({status:"signed_out",problem:"approval_window_closed",approval:Object.freeze({outcome:"closed"})})}}select(e){return this.operation(async()=>(await this.openSlot(e,!0),this.getSnapshot()))}openCollection(e){return this.operation(async()=>(await this.openSlot(e),this.viewFor(e)))}releaseCollection(e){return this.slots.has(e)?this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t),this.changed()),this.getSnapshot()}):Promise.resolve(this.getSnapshot())}async openSlot(e,t=!1){this.check();let i=this.base.collections.find(u=>u.collectionId===e);if(!i||this.flow?.view().state!=="paired"||!this.installation)throw ut("refused");let o=t?[...this.slots.values()].filter(u=>u.id!==e):[],s=this.slots.get(e);if(s&&s.usable&&s.selected&&!s.lifetime?.signal.aborted&&this.sameScope(s.scope,s.leaseScope)&&s.scope?.collection===e){for(let u of o)u.usable=!1,u.lifetime?.abort();this.focus=e,this.settleBase(),this.publishSlot(s,{...this.assessed(s.selected),problem:null});for(let u of o)await this.closeSlot(u),this.check(),this.deleteSlot(u),this.changed();return}for(let u of o)u.usable=!1,u.lifetime?.abort();let r=s??{id:e,host:null,lease:null,leaseScope:null,selected:null,scope:null,lifetime:null,usable:!1,stopAssessment:null,timer:null,view:VN};r.usable=!1,r.lifetime?.abort(),this.slots.set(e,r),this.focus=e,this.openingSlot=r,this.settleBase(),this.publishSlot(r,{status:"opening",problem:null,openingProgress:null});for(let u of o)await this.closeSlot(u),this.check(),this.deleteSlot(u),this.changed();(r.lease||r.selected||r.host)&&await this.closeSlot(r),this.check(),await this.openDevice(!0),this.check(),r.host=this.host,this.host=null;let a=Object.freeze({...this.installation.scope,collection:e});r.lease=await cd(this.options.locks,a,this.lifetime.signal),r.leaseScope=a,this.check(),r.lifetime=new AbortController;let c=this.freshApproval&&this.flow.view().collectionSelection?.createdCollectionIds.includes(e)===!0,l=r.lifetime,p=await this.options.openCollection({host:r.host,installation:this.installation,scope:a,collection:i,setupPolicy:c?"approved-new-collection":"explicit",signal:l.signal,onProgress:u=>{this.closing||this.slots.get(r.id)!==r||r.lifetime!==l||l.signal.aborted||r.view.status!=="opening"||r.view.openingProgress!==u&&this.publishSlot(r,{openingProgress:u})}});r.selected=p,r.scope=a,this.check();let d=this.assessed(p);r.usable=!0,this.openingSlot===r&&(this.openingSlot=null),r.stopAssessment=p.subscribe?.(()=>{if(this.closing||this.slots.get(r.id)!==r||!r.usable||r.selected!==p||r.lifetime?.signal.aborted||!this.sameScope(r.scope,r.leaseScope)||r.scope?.collection!==r.id)return;let u=null;try{u=p.ended??null}catch{u=null}if(u){this.accessEnded(r,p,u);return}let f;try{f=this.assessed(p)}catch{return}this.publishSlot(r,f.status==="needs_unlock"?{...f,problem:null,transport:null,live:null}:{...f,...this.liveProblem(r,p)})})??null,this.publishSlot(r,{...d,transport:null,live:null,openingProgress:null})}assessed(e){let t=e.state;if(t==="ready"||t==="setup_required")return{status:t};if(t!=="needs_unlock"||typeof e.unlock!="function")throw ut("response");let i=e.locked;if(!i||typeof i!="object"||!["password","strict","none"].includes(i.mode)||typeof i.unlocking!="boolean"||i.problem!==null&&(typeof i.problem!="string"||!/^[a-z][a-z0-9_]{0,63}$/.test(i.problem)))throw ut("response");return{status:t,unlock:Object.freeze({mode:i.mode,unlocking:i.unlocking,problem:i.problem})}}unlockCollection(e,t){let i=()=>{let o=this.slots.get(e);return o&&o.usable&&o.selected&&typeof o.selected.unlock=="function"&&o.view.status==="needs_unlock"&&!o.lifetime?.signal.aborted&&this.base.status==="unselected"&&this.installation?.isCurrent()===!0&&this.sameScope(o.scope,o.leaseScope)&&o.scope?.collection===e?o:null};return!this.closing&&!this.options.signal.aborted&&!this.pending&&!i()?Promise.reject(ut("refused")):this.operation(async()=>{let o=i();if(!o)throw ut("refused");let s=o.selected;this.openingSlot=o;try{await s.unlock(t),this.check()}catch(a){throw o.usable=!1,o.lifetime?.abort(),a}if(this.slots.get(o.id)!==o||o.selected!==s||!o.usable)throw ut("fenced");this.openingSlot===o&&(this.openingSlot=null);let r=this.assessed(s);return this.publishSlot(o,r.status==="needs_unlock"?{...r,problem:null}:{...r,...this.liveProblem(o,s)}),this.viewFor(e)})}settleBase(){(this.base.status==="blocked"||this.base.status==="unselected")&&this.setBase({status:"unselected",problem:null})}deleteSlot(e){e.timer!==null&&clearTimeout(e.timer),e.timer=null,this.slots.get(e.id)===e&&this.slots.delete(e.id),this.focus===e.id&&(this.focus=null),this.openingSlot===e&&(this.openingSlot=null)}accessEnded(e,t,i){if(e.selected!==t||!e.usable)return;let o=i==="gone"?"collection_deleted":i==="revoked"?"unauthenticated":"access_removed";i!=="gone"&&this.removedScopes.add(e.id),e.usable=!1,this.publishSlot(e,{status:"blocked",problem:o,transport:null,live:null});let s=()=>{if(!(this.closing||this.options.signal.aborted||e.selected!==t||this.slots.get(e.id)!==e)){if(this.pending){this.pending.catch(()=>{}).then(s);return}this.operation(async()=>{if(await this.closeSlot(e),this.publishSlot(e,{status:"blocked",problem:o}),!(!this.flow||!this.installation||this.flow.view().state!=="paired"))try{let r=await this.flow.listApprovedCollections(this.installation);this.check(),this.publish({collections:Object.freeze(r.filter(a=>!this.forgotten.has(a.collectionId)))})}catch{}}).catch(()=>{})}};s()}liveProblem(e,t){let i=null;try{i=t.problem??null}catch{i=null}let o=null;try{o=t.health??null}catch{o=null}let s=o?Object.freeze({...o}):null,r=null;try{let c=t.live;r=typeof c=="boolean"?c:null}catch{r=null}let a=Dn(i)?Ot(i):null;return a&&i?{problem:a,problemDetail:Object.freeze({name:"AppHttpLogError",code:a,server:i}),transport:s,live:r}:{...KN.has(e.view.problem??"")?{problem:null}:{},transport:s,live:r}}async closeSlot(e){e.usable=!1,e.timer!==null&&clearTimeout(e.timer),e.timer=null;let t=e.stopAssessment;e.stopAssessment=null;try{t?.()}catch{}e.lifetime?.abort(),await e.selected?.close(),e.selected=null,e.scope=null,e.lifetime=null,await e.host?.close(),e.host=null,await e.lease?.release(),e.lease=null,e.leaseScope=null}async closeSlots(){for(let t of[...this.slots.values()])await this.closeSlot(t),this.deleteSlot(t);let e=this.host;this.host=null,await e?.close()}clearSelection(){return this.operation(async()=>(await this.closeSlots(),this.focus=null,this.publish({status:"unselected",problem:null}),this.getSnapshot()))}refreshCollectionList(){return this.pending||!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||this.base.status!=="unselected"?Promise.resolve(this.getSnapshot()):this.operation(async()=>(await this.refreshCollections(),this.getSnapshot()),!0)}scopeWasRemoved(e){return this.removedScopes.has(e)}removedScopeIds(){return Object.freeze([...this.removedScopes])}canAbandonWrongAccount(){return!this.closing&&!this.options.signal.aborted&&this.pending===null&&this.flow?.canAbandonWrongAccount()===!0&&this.installation===null&&this.host===null&&this.slots.size===0&&!this.attested&&!this.acknowledged}scopeRecoveryContext(){if(!this.flow||!this.installation||this.flow.view().state!=="paired")return null;let e=this.flow.view();return Object.freeze({accountId:this.installation.scope.account,accountLabel:e.accountEmail??(e.accountLogin?`@${e.accountLogin}`:null),references:this.flow.collectionRecoveries()})}prepareScopedRecovery(e,t){return this.check(),this.pending?this.pending.catch(()=>{}).then(()=>this.prepareScopedRecovery(e,t)):this.operation(async()=>{if(!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||!this.flow.view().collectionIds.includes(e))throw ut("binding");let i=this.flow.collectionRecoveries(),o=this.slots.get(e);if(t===void 0&&!Object.hasOwn(i,e)&&!this.scopeWasRemoved(e))throw ut("binding");o&&(await this.closeSlot(o),this.check(),this.deleteSlot(o)),await this.flow.retireCollectionScope(this.installation,e,t??null),this.check();let s=this.flow.confirmedSelection(),r=this.options;if(!await y2({cpOrigin:r.cpOrigin,appId:r.appId,accountId:s.accountId,connectorId:s.connectorId,installationId:s.installationId,deviceId:s.deviceId,collectionIds:[e],databases:[]},e))throw ut("recovery_required");this.check();let a=await this.flow.freshCollectionInstallation(this.installation,e);return this.check(),Object.freeze({accountId:s.accountId,reference:a})},!0)}forget(e){return this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t)),this.forgotten.add(e),this.publish({collections:Object.freeze(this.base.collections.filter(i=>i.collectionId!==e))}),this.getSnapshot()})}deleteCollection(e,t){let i=null;return this.operation(async()=>{let o=this.base.collections.find(s=>s.collectionId===e);if(!this.flow||!this.installation||!o)i=new Gi("collection_delete_not_found");else if(o.role!=="owner")i=new Gi("collection_delete_not_owner");else{try{await this.flow.deleteApprovedCollection(this.installation,e,t)}catch(s){i=oC(s)}this.check()}return this.getSnapshot()}).then(o=>{if(i)throw i;return o})}signOut(){this.check();let e=this.pending!==null&&this.pending===this.polling?this.pending:null;return Promise.resolve(e?.catch(()=>{})).then(()=>this.operation(async()=>{let t=this.flow,i=null,o=null,s=!1;try{i=t?.view()??null}catch{i=null}try{o=t?.confirmedSelection().connectorId??null}catch{o=null}try{s=t?.hasWebPushChannel()===!0}catch{s=!1}let r=[...new Set([...i?.collectionIds??[],...this.base.collections.map(p=>p.collectionId)])];this.closeApprovalWindow(),this.fileAccess=null,this.consentPending=!1;try{await this.closeSlots()}catch(p){throw this.failSignOut(),p}this.check();let a="not_paired";if(t&&i?.state==="paired"){try{a=await t.signOutInstallation()}catch{a="incomplete"}this.check()}this.flow=null,this.installation=null;try{await t?.close()}catch{}this.flowLifetime.abort(),this.flowLifetime=new AbortController,await this.installationLease?.release(),this.installationLease=null,this.attested=!1,this.acknowledged=!1,this.freshApproval=!1,this.authorizationStartedAt=null,this.receiptRead=null,this.foregroundRead=null,this.forgotten.clear(),this.removedScopes.clear();let c=this.options,l=await g2({cpOrigin:c.cpOrigin,appId:c.appId,...c.owner===void 0?{}:{owner:c.owner},...c.storageNamespace===void 0?{}:{storageNamespace:c.storageNamespace},accountId:i?.accountId??null,connectorId:o,installationId:i?.installationId??null,deviceId:i?.deviceId??null,collectionIds:r,databases:c.localDatabases??[],...c.recoveryFor?{isolated:!0}:{}});if(this.check(),!l.ledger)throw this.failSignOut(),A("unavailable","This device couldn't remove its sign-in data.","sign_out_failed");return this.emit(Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,signOutResult:Object.freeze({server:a,local:l.complete?"erased":"incomplete",webPush:s})})),this.getSnapshot()},!0))}failSignOut(){if(this.closing||this.options.signal.aborted)return;let e=null;try{e=this.flow?.view()??null}catch{e=null}let{problemDetail:t,...i}=this.base;this.focus=null,this.emit(Object.freeze({...i,status:"blocked",signIn:e,selectedCollectionId:null,problem:"sign_out_failed"}))}emit(e){if(this.check(),this.base=e,e.status==="signed_out"){for(let t of[...this.slots.values()])this.deleteSlot(t);this.focus=null}this.changed()}close(){if(this.closing)return this.closing;let e=this.pending;return this.foregroundRead=null,this.stopPolling(),this.options.signal.removeEventListener("abort",this.onAbort),this.closing=Promise.resolve().then(async()=>{await e?.catch(()=>{}),await this.closeSlots(),this.focus=null,await this.flow?.close(),this.flowLifetime.abort(),this.flow=null,this.installation=null,await this.installationLease?.release(),this.installationLease=null,this.base=Object.freeze({status:"closed",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:this.base.timing}),this.snapshotValue=this.base;for(let t of[...this.listeners])try{t()}catch{}this.listeners.clear()}),this.lifetime.abort(),this.closing}};$d();return P2(WN);})();
|
|
130
|
+
`);return{[Qp.version]:String(Tv),[Qp.timestamp]:String(o),[Qp.nonce]:s,[Qp.signature]:In(await N_(n,new TextEncoder().encode(r)))}}async function j_(n,e){let t=await crypto.subtle.generateKey({name:e,namedCurve:"P-256"},!1,n);return{privateKey:t.privateKey,publicKey:In(new Uint8Array(await crypto.subtle.exportKey("raw",t.publicKey)))}}async function Uj(){let n;try{n=await crypto.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{throw A("unavailable","this browser cannot keep a non-extractable X25519 key","browser_unsupported")}if(n.privateKey.extractable)throw A("unavailable","the Noise key must be non-extractable","browser_unsupported");return{privateKey:n.privateKey,publicKey:new Uint8Array(await crypto.subtle.exportKey("raw",n.publicKey))}}function Nj(n){return{publicKey:n.noisePublicKey.slice(),dh:async e=>{let t=await crypto.subtle.importKey("raw",e,{name:"X25519"},!1,[]);return new Uint8Array(await crypto.subtle.deriveBits({name:"X25519",public:t},n.noisePrivateKey,256))}}}function Dj(n,e){let t=new AbortController,i=()=>t.abort(),o=setTimeout(i,e);return o.unref?.(),n?.addEventListener("abort",i,{once:!0}),n?.aborted&&t.abort(),{signal:t.signal,done:()=>{clearTimeout(o),n?.removeEventListener("abort",i)}}}async function $j(n,e){let t=globalThis.navigator?.locks;if(t)return t.request(n,{mode:"exclusive"},e);let i=ey.get(n)??Promise.resolve(),o,s=new Promise(r=>{o=r});ey.set(n,s),await i;try{return await e()}finally{o(),ey.get(n)===s&&ey.delete(n)}}var Oj,OO,Xo,Rj,PO,Mj,In,Qm,xO,IO,CO,ty,Wl,U_,Rr,ey,D_,EO=C(()=>{"use strict";ed();Vo();xl();Yf();nm();fO();am();be();Po();ne();iw();Is();Ma();Yu();up();fp();mO();wO();AO();Qg();SO();Vv();Oj=new Set(["owner","editor","viewer"]),OO="mdbase.app-grant.v1",Xo=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,Rj=15e3;PO=BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),Mj=new TextEncoder().encode("mdbase-next client noise key v1\0");In=n=>{let e="";for(let t of n)e+=String.fromCharCode(t);return btoa(e).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")},Qm=n=>crypto.getRandomValues(new Uint8Array(n)),xO=n=>{let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,n),e},IO=(...n)=>{let e=new Uint8Array(n.reduce((i,o)=>i+o.length,0)),t=0;for(let i of n)e.set(i,t),t+=i.length;return e};CO=async n=>In(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n))));ty=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),Wl=(n,e)=>!!e&&n.collection===e.collection&&n.owner===e.owner&&ty(n.noisePublicKey,e.noisePublicKey),U_=(n,e)=>Wl(n,e)&&ty(n.refresh,e.refresh),Rr=()=>A("cancelled","the stored grant changed during this operation"),ey=new Map;D_=class{constructor(e){this.options=e;this.declaration=eo(e.declaration),this.cpOrigin=xi({environment:this.declaration.environment,appOrigin:this.declaration.origin,release:uO()}).cpOrigin;try{this.redirect=new URL(e.redirectUri)}catch{throw A("invalid_request","redirectUri must be an absolute URL","redirect_uri")}if(this.redirect.origin!==this.declaration.origin||this.redirect.hash)throw A("invalid_request","redirectUri must be on the app's origin, without a fragment","redirect_uri");this.fetcher=e.fetch??globalThis.fetch.bind(globalThis),this.callbacks=e.callbacks??Tj(),this.storeValue=e.store??null}options;declaration;cpOrigin;redirect;fetcher;callbacks;storeValue;registration=null;tokens=new Map;refreshing=new Map;forgotten=new Set;epoch=0;register(){let e=this.registration??=sm({declaration:this.options.declaration,signal:new AbortController().signal,isCurrent:()=>!0,fetch:this.fetcher});return e.catch(()=>{this.registration===e&&(this.registration=null)}),e}ownerValue=null;owner(){return this.ownerValue??=d1(Fo(this.declaration).manifest.id,Gf(this.declaration))}async store(){if(this.storeValue)return this.storeValue;let e=this.owner();return this.storeValue=kO(this.cpOrigin,(await this.register()).id,{owner:e})}async identity(){let e=await this.store(),t=await e.getIdentity();if(t)return t;let i=await j_(["sign"],"ECDSA");return e.putIdentityIfAbsent({version:1,privateKey:i.privateKey,publicKey:i.publicKey})}async request(e,t,i){let o=Dj(i,Rj);try{let s;try{s=await this.fetcher(`${this.cpOrigin}${e}`,{...t,redirect:"error",signal:o.signal})}catch{throw i?.aborted?A("cancelled","request cancelled"):A("unavailable","cannot reach the control plane","control_unreachable")}let r=null;try{let a=await s.json();a&&typeof a=="object"&&!Array.isArray(a)&&(r=a)}catch{r=null}return{status:s.status,body:r}}finally{o.done()}}async authorize(e){e=Object.freeze({...e});let t=await this.prepareAuthorization(e).catch(i=>{throw e.popup.close(),i});try{e.popup.navigate(t.authorizationUri);let{collectionId:i}=await t.finish(e);return{collectionId:i}}finally{t.cancel();try{e.popup.close()}catch{}}}async prepareAuthorization(e={}){if(e=Object.freeze({...e}),e.collection!==void 0&&!Xo.test(e.collection))throw A("invalid_request","collection must be a UUID");if(e.expectedAccountId!==void 0&&(!Xo.test(e.expectedAccountId)||!e.authorizationNonce))throw A("invalid_request","original account and challenge required","authorization_binding");if(e.authorizationNonce!==void 0&&(!/^[A-Za-z0-9_-]{43}$/.test(e.authorizationNonce)||!Ej(e.authorizationNonce)))throw A("invalid_request","invalid original challenge","authorization_binding");let t=new AbortController,i=e.signal?AbortSignal.any([e.signal,t.signal]):t.signal,o=this.epoch,s=()=>{if(i.aborted)throw A("cancelled","authorization fenced","authorization_cancelled");if(o!==this.epoch)throw Rr()};s();let r=await this.register(),a=Fo(this.declaration),c=await this.identity(),l=await j_(["deriveBits"],"ECDH"),p=await j_(["sign"],"ECDSA"),d=await Uj(),u=In(Qm(32)),f=In(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(u)))),h=In(Qm(24)),m=crypto.randomUUID(),b=new Date,w={protocol_version:Qr,authorization_id:m,application_id:r.id,application_declaration_id:String(a.manifest.id),application_manifest_digest:r.manifestDigest,application_installation_id:await rI(c.publicKey),installation_signing_public_key:c.publicKey,grant_agreement_public_key:l.publicKey,grant_signing_public_key:p.publicKey,flow:"authorization_code",authorization_nonce:e.authorizationNonce??In(Qm(32)),issued_at:b.toISOString(),expires_at:new Date(b.getTime()+10*6e4).toISOString(),redirect_uri:this.redirect.href,state:h,code_challenge:f,contracts:a.contracts,requested_operations:[...a.operations],...a.files?{requested_files:a.files}:{},...e.collection?{collection_id:e.collection}:{}},g={binding:w,signature:In(await N_(c.privateKey,oI(w)))},y=IO(Mj,xO(16),U(m),xO(32),d.publicKey),v={public_key:In(d.publicKey),signature:In(await N_(p.privateKey,y))};s();let _=await this.request("/oauth/authorization_request",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:r.id,redirect_uri:this.redirect.href,code_challenge:f,code_challenge_method:"S256",state:h,operations:a.operations.join(","),...e.collection?{collection_id:e.collection}:{},application_authorization:JSON.stringify(g),client_noise_key:JSON.stringify(v)})},i);s();let k=_.body?.authorization_uri;if(_.status!==200||_.body?.authorization_id!==m||typeof k!="string"||!k.startsWith(`${this.cpOrigin}/oauth/authorize?`))throw A("unavailable",`authorization could not be started (${_.status})`,"authorization_start");let S=null,x=this.awaitCallback(h,{navigate(){},close(){},get closed(){return S?.closed===!0}},{popup:{navigate(){},close(){}},signal:i,timeoutMs:e.timeoutMs});x.catch(()=>{});let P=!1;return Object.freeze({applicationId:r.id,manifestDigest:r.manifestDigest,authorizationId:m,authorizationUri:k,cancel:()=>t.abort(),finish:async I=>{if(I=Object.freeze({...I}),P)throw A("invalid_request","original authorization already consumed","authorization_binding");P=!0,S=I.popup;let R=()=>t.abort();I.signal?.addEventListener("abort",R,{once:!0}),I.signal?.aborted&&t.abort();try{s();let O=I.collection??e.collection;if(O!==void 0&&!Xo.test(O))throw A("invalid_request","invalid approved collection","authorization_binding");if(e.collection&&O!==e.collection)throw A("forbidden","a different collection was approved","collection_mismatch");if(e.expectedAccountId&&!O)throw A("invalid_request","original Private choice required","authorization_binding");let q=await x;s();let j=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:q,client_id:r.id,redirect_uri:this.redirect.href,code_verifier:u})},i);s();let z=e.expectedAccountId?um(j.body,{accountId:e.expectedAccountId,authorizationRequestId:m,applicationId:r.id,declarationId:w.application_declaration_id,manifestDigest:r.manifestDigest,applicationInstallationId:w.application_installation_id,applicationOrigin:this.redirect.origin,collectionId:O,grantSigningPublicKey:p.publicKey,clientNoisePublicKey:In(d.publicKey)}):void 0,D=await this.saveTokens(j,{noise:d,signing:p.privateKey,collection:O,check:s});return s(),{collectionId:D,...z?{nativeCompletion:z}:{}}}finally{I.signal?.removeEventListener("abort",R),t.abort()}}})}awaitCallback(e,t,i){let o=Math.min(Math.max(i.timeoutMs??6e5,1e3),18e5);return new Promise((s,r)=>{let a=null,c=f=>{p(),clearTimeout(d),clearInterval(u),i.signal?.removeEventListener("abort",l),f()},l=()=>c(()=>r(A("cancelled","authorization cancelled","authorization_cancelled"))),p=this.callbacks.subscribe(f=>{let h;try{h=new URL(f)}catch{return}if(h.origin!==this.redirect.origin||h.pathname!==this.redirect.pathname||h.searchParams.get("state")!==e)return;if(h.searchParams.get("error"))return c(()=>r(A("forbidden","access was not approved","authorization_denied")));let b=h.searchParams.get("code");if(!b)return c(()=>r(A("unavailable","the authorization callback has no code","authorization_callback")));c(()=>s(b))}),d=setTimeout(()=>c(()=>r(A("cancelled","authorization timed out","authorization_timed_out"))),o),u=setInterval(()=>{let f=!1;try{f=t.closed===!0}catch{f=!1}if(!f){a=null;return}a??=Date.now(),Date.now()-a>=3e3&&c(()=>r(A("cancelled","the authorization window was closed","authorization_cancelled")))},500);i.signal?.addEventListener("abort",l,{once:!0}),i.signal?.aborted&&l()})}async saveTokens(e,t){let i=e.body;if(e.status!==200||!i)throw e.status===400&&i&&typeof i.error=="string"&&i.error==="invalid_grant"?A("unauthenticated","the grant is no longer valid","grant_invalid"):e.status===400?Nn("sync_required"):A("unavailable",`token request failed (${e.status})`,"token_error");let o=i.access_token,s=i.refresh_token,r=i.collection_id,a=i.expires_in,c=i.refresh_expires_in;if(typeof o!="string"||typeof s!="string"||typeof r!="string"||!Xo.test(r)||typeof a!="number"||!(a>0)||typeof c!="number"||!(c>0))throw A("unavailable","invalid token response","token_response");let l=r.toLowerCase();if(t.collection&&t.collection.toLowerCase()!==l)throw A("forbidden","a different collection was approved","collection_mismatch");if(t.previous&&t.previous.collection!==l)throw A("unavailable","the token names another collection","token_response");let p=t.previous?.refreshKey??await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]),d=Qm(12),u=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:d,additionalData:this.aad(l)},p,new TextEncoder().encode(s))),f=t.noise??{privateKey:t.previous.noisePrivateKey,publicKey:t.previous.noisePublicKey},h=t.signing??t.previous?.signingPrivateKey,m={version:1,collection:l,noisePrivateKey:f.privateKey,noisePublicKey:f.publicKey,refreshKey:p,refresh:IO(d,u),refreshExpiresAt:Date.now()+c*1e3,...h?{signingPrivateKey:h}:{},...t.previous?.owner?{owner:t.previous.owner}:{}},b=this.epoch;return await this.withLock(l,"commit",async()=>{let w=await this.store();if(b!==this.epoch||t.previous&&!U_(t.previous,await w.getGrant(l)))throw Rr();t.check?.(),await w.putGrant(m);let g=await w.getGrant(l);if(!g||!ty(m.noisePublicKey,g.noisePublicKey)||!ty(m.refresh,g.refresh))throw Rr();t.check?.(),this.tokens.set(l,{access:o,expiresAt:Date.now()+a*1e3,collection:l,owner:g.owner,noisePublicKey:g.noisePublicKey.slice()}),this.forgotten.delete(l)}),l}aad(e){return new TextEncoder().encode(`mdbase.app-grant.v2\0${this.cpOrigin}\0${this.owner()}\0${e}`)}async accessToken(e,t=!1){let i=await this.heldGrant(e),o=this.tokens.get(e);if(!t&&o&&Wl(i,o)&&o.expiresAt-Date.now()>6e4)return o.access;let s=this.refreshing.get(e);if(s&&U_(i,s.grant)){let c=await s.work;return await this.assertCurrent(i),c}let r=this.withLock(e,"refresh",async()=>{let c=await this.assertCurrent(i);return this.refresh(e,c)}),a={grant:i,work:r};this.refreshing.set(e,a);try{let c=await r;return await this.assertCurrent(i),c}finally{this.refreshing.get(e)===a&&this.refreshing.delete(e)}}withLock(e,t,i){return $j(`mdbase.app-grant.${t}:${JSON.stringify([this.cpOrigin,this.owner(),e])}`,i)}async heldGrant(e){let t=await(await this.store()).getGrant(e);if(!t)throw Nn("sync_required");return{...t,noisePublicKey:t.noisePublicKey.slice(),refresh:t.refresh.slice()}}async assertCurrent(e){let t=await(await this.store()).getGrant(e.collection);if(!Wl(e,t))throw Rr();return t}async refresh(e,t){if(t.refreshExpiresAt<=Date.now())throw Nn("sync_required");let i;try{let c=await crypto.subtle.decrypt({name:"AES-GCM",iv:t.refresh.slice(0,12),additionalData:this.aad(e)},t.refreshKey,t.refresh.slice(12));i=new TextDecoder().decode(c)}catch{throw A("unauthenticated","the stored grant could not be read","grant_storage")}let o=await this.register(),s=new URLSearchParams({grant_type:"refresh_token",refresh_token:i,client_id:o.id}),r=t.signingPrivateKey?await jj(t.signingPrivateKey,"/oauth/token",s.toString(),i):{},a=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",...r},body:s});try{await this.saveTokens(a,{previous:t})}catch(c){throw Q(c,"unauthenticated")&&c.reason==="grant_invalid"&&await this.withLock(e,"commit",async()=>{let l=await this.store();if(!U_(t,await l.getGrant(e)))throw Rr();await l.deleteGrant(e),this.forgotten.add(e);let p=this.tokens.get(e);p&&Wl(t,p)&&this.tokens.delete(e)}),c}return a.body.access_token}async route(e,t){for(let i=0;;i++){let o=await this.accessToken(e,i>0),s=await this.request(`/v1/next/collections/${encodeURIComponent(e)}/route`,{headers:{authorization:`Bearer ${o}`}},t);if(s.status===401&&i===0)continue;if(s.status===401)throw A("unauthenticated","the control plane refused the access token");if(s.status===409)throw A("unauthenticated","this app's key is not registered with its grant","client_key_required");if(s.status!==200||!s.body)throw A("unavailable",`control plane answered ${s.status}`,"control_error");let r=s.body;if(typeof r.collection!="string"||r.collection.toLowerCase()!==e||!Array.isArray(r.targets))throw A("unauthenticated","the route does not match this collection's grant","route_mismatch");let c=gi(r.availability)??(La(r,null).length?{state:"available"}:{state:"unavailable",reason:r.reason==="no_device_registered"?"no_device_registered":"device_offline"});return{token:o,route:r,availability:c}}}async verifiedStoredNativeGrant(e){let t=await this.register(),i=await(await this.store()).getGrant(e.collection_id);return!!i&&e.application_id===t.id&&e.application_origin===this.declaration.origin&&i.owner===this.owner()&&In(i.noisePublicKey)===e.client_noise_public_key}async collections(e={}){let t=await(await this.store()).listGrants(),i=[];for(let s of t)(e.bindings===void 0||e.bindings.some(r=>r.collection_id===s.collection&&r.application_origin===this.declaration.origin&&In(s.noisePublicKey)===r.client_noise_public_key))&&i.push(s);let o=new Set(i.map(s=>s.collection));for(let s of i){let r;try{r=await this.accessToken(s.collection)}catch(l){if(Q(l)&&(l.code==="unauthenticated"&&l.reason==="grant_invalid"||l.code==="forbidden"&&l.reason==="sync_required"))continue;throw l}await this.assertCurrent(s);let a=await this.request("/v1/next/apps/collections",{headers:{authorization:`Bearer ${r}`}},e.signal);if(await this.assertCurrent(s),a.status===401)throw await this.withLock(s.collection,"commit",async()=>{await this.assertCurrent(s);let l=this.tokens.get(s.collection);if(l?.access!==r||!Wl(s,l))throw Rr();this.tokens.delete(s.collection)}),A("unauthenticated","the control plane refused the collection listing token");if(a.status!==200||!Array.isArray(a.body?.collections))throw A("unavailable",`control plane answered ${a.status}`,"control_error");let c=[];for(let l of a.body.collections){let p=typeof l.collection=="string"?l.collection.toLowerCase():"";if(!Xo.test(p)||c.some(f=>f.collectionId===p))continue;let d=gi(l.availability);if(l.state!=="synced_e2e"&&!d)continue;let u=o.has(p)?d??{state:"opening"}:{state:"unavailable",reason:"sync_required"};c.push(Object.freeze({collectionId:p,displayName:typeof l.name=="string"?l.name:"Collection",operations:Object.freeze(Array.isArray(l.operations)?l.operations.filter(f=>typeof f=="string"):[]),availability:Object.freeze(u),role:Oj.has(l.role)?l.role:null}))}return c}return[]}async availability(e,t={}){let i=e.toLowerCase();try{return(await this.route(i,t.signal)).availability}catch(o){if(Q(o)&&o.details instanceof Map&&typeof o.details.get("availability")=="string")return gi({state:"unavailable",reason:o.details.get("availability")});throw o}}async waitForAvailable(e,t={}){let i=Date.now()+Math.min(Math.max(t.timeoutMs??6e4,0),6e5),o=Math.max(t.intervalMs??3e3,1e3),s=null;for(;;){if(t.signal?.aborted)throw A("cancelled","wait cancelled");let r=await this.availability(e,t.signal?{signal:t.signal}:{});if((!s||r.state!==s.state||r.state==="unavailable"&&s.state==="unavailable"&&r.reason!==s.reason)&&t.onAvailability?.(r),s=r,r.state==="available"||r.state==="unavailable"&&(r.reason==="sync_required"||r.reason==="access_removed"))return r;let a=i-Date.now();if(a<=0)return r;await new Promise(c=>{let l=setTimeout(p,Math.min(o,a));function p(){clearTimeout(l),t.signal?.removeEventListener("abort",p),c()}t.signal?.addEventListener("abort",p,{once:!0})})}}connector(e){let t=e.toLowerCase();if(!Xo.test(t))throw A("invalid_request","collection must be a UUID");let i=null,o=this.options.webSocket,s;return Gu({description:`app-grant:${t}`,open:async(r,a)=>{let c=await(s??=this.heldGrant(t));await this.assertCurrent(c);let p=await hr({description:`app-grant:${t}`,staticKey:Nj(c),target:async d=>{await this.assertCurrent(c);let{token:u,route:f,availability:h}=await this.route(t,d);if(await this.assertCurrent(c),h.state==="unavailable")throw Nn(h.reason);if(!Xo.test(f.grant))throw A("unauthenticated","the route names no grant","route_mismatch");let m=La(f,i)[0];if(!m)throw Nn("device_offline");let b=new Uint8Array(32);for(let w=0;w<32;w++)b[w]=parseInt(m.noise_pk.slice(2*w,2*w+2),16);return{prologue:fr(U(m.relay_collection),U(f.grant),U(m.device)),remoteStatic:b,device:m.device,openCarrier:async w=>{await this.assertCurrent(c);let g=await qa(m.url,{accessToken:u,collection:m.relay_collection,grant:f.grant,device:m.device,devicePublicKey:b},o,w);try{return await this.assertCurrent(c),g}catch(y){throw g.close(),y}}}}}).open(r,a);try{await this.assertCurrent(c)}catch(d){throw p.port.close(),d}return gk(p.port,c),i=p.device??null,p},get target(){return i}})}people(e,t){let i=e.toLowerCase();if(!Xo.test(i))throw A("invalid_request","collection must be a UUID");return new mr(t,hO(i,{cpOrigin:this.cpOrigin,fetch:this.fetcher,accessToken:(o,s)=>this.accessToken(o,s),holds:o=>!this.forgotten.has(o)}))}setup(e){let t=Fo(this.declaration),i,o=async()=>{let r=e.currentSession(),a=r&&wk(r);if(!a||a.collection!==e.collection||(i??=a,!Wl(i,a)))throw Rr();return i};return bO({assertCurrent:async()=>this.assertCurrent(await o()),journal:_O({store:()=>this.store(),grant:o,assertCurrent:r=>this.assertCurrent(r),aad:this.aad(e.collection)}),client:e,manifest:t.manifest,operations:t.operations})}async forget(e,t={}){let i=e.toLowerCase(),o=t.expectedNoisePublicKey;await this.withLock(i,"commit",async()=>{let s=await this.store(),r=await s.getGrant(i);if(o!==void 0&&r&&In(r.noisePublicKey)!==o)throw Rr();await s.deleteGrant(i),this.forgotten.add(i),this.tokens.delete(i)})}async forgetAllGrants(){this.epoch++;let e=await this.store(),t=[];try{t=(await e.listGrants()).map(o=>o.collection).sort()}catch{}for(let o of t)this.forgotten.add(o);let i=async(o,s)=>o.length?this.withLock(o[0],"commit",()=>i(o.slice(1),s)):s();await i(t,async()=>{if(this.tokens.clear(),typeof e.clearGrants=="function"){await e.clearGrants();return}for(let o of await e.listGrants())await e.deleteGrant(o.collection),this.forgotten.add(o.collection);if((await e.listGrants()).length)throw A("unavailable","grant storage could not be cleared","grant_storage")}),this.tokens.clear()}}});function LO(n){let e=0,t=0;try{let i=n?.records.status.pending;e=typeof i=="number"&&i>0?i:0}catch{e=0}try{t=n?.records.ledger?.getSnapshot().pending.length??0}catch{t=0}return Math.max(e,t)}function jO(n=0){let e=n===1?"1 change hasn't":n>1?`${n} changes haven't`:"Some changes haven't";return A("conflict",`${e} reached mdbase yet. Wait for them to finish, or sign out anyway and lose them on this device.`,{reason:"sign_out_pending_writes",details:n})}var UO=C(()=>{"use strict";ne()});function Qo(n,e){return new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})})}var ry=C(()=>{"use strict"});function oy(n,e){if(typeof n!="string"||!e.test(n))throw me("invalid_request","timer_input");return encodeURIComponent(n)}function es(n,e){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join())throw me("invalid_request","timer_input");return n}function NO(n){let e=es(n,"id,fire_at");if(oy(e.id,$_),typeof e.fire_at!="string"||!/^\d{4}-\d{2}-\d{2}T/.test(e.fire_at)||!Number.isFinite(Date.parse(e.fire_at)))throw me("invalid_request","timer_input");return{id:e.id,fire_at:e.fire_at}}function z_(n){if(typeof n!="string"||!n.length||n.length>100)throw me("invalid_request","timer_input")}function Gj(n,e,t){let i=`${n}/${oy(t[0],Hj)}`;if(e==="list"&&t.length===1)return{path:i,method:"GET",write:!1};if(e==="put"&&t.length===3){let o=es(t[2],"criterion_id,fire_at");return z_(o.criterion_id),NO({id:t[1],fire_at:o.fire_at}),{path:`${i}/${oy(t[1],$_)}`,method:"PUT",body:o,write:!0}}if(e==="cancel"&&t.length===3){let o=t[2];if(o!==void 0&&(!Number.isSafeInteger(o)||o<1))throw me("invalid_request","timer_input");return{path:`${i}/${oy(t[1],$_)}${o===void 0?"":`?generation=${o}`}`,method:"DELETE",write:!0}}if((e==="reconcile"||e==="reconcileWithReceipt")&&t.length===2){let o=es(t[1],`criterion_id,timers${e==="reconcileWithReceipt"?",recovery":""}`);if(z_(o.criterion_id),!Array.isArray(o.timers)||o.timers.length>1e4)throw me("invalid_request","timer_input");let s=o.timers.map(NO);if(new Set(s.map(r=>r.id)).size!==s.length)throw me("invalid_request","timer_input");if(e==="reconcileWithReceipt"){let r=es(o.recovery,"protocol_version,operation_id,expected_revision");if(r.protocol_version!==1||typeof r.operation_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(r.operation_id)||!Number.isSafeInteger(r.expected_revision)||r.expected_revision<0||r.expected_revision>=Number.MAX_SAFE_INTEGER)throw me("invalid_request","timer_input")}return{path:`${i}/reconcile`,method:"POST",body:{...o,timers:s},write:!0}}if(e==="lookupOperation"&&t.length===2&&typeof t[1]=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(t[1]))return{path:`${i}/operations/${t[1]}`,method:"GET",write:!1};throw me("invalid_request","timer_input")}function $O(n,e){let t=DO(e.scope),i=e.generation,o=`/v1/next/collections/${e.scope.collection}/background-grants/${e.grantId}/timers`,s=!1,r=0,a=null,c=null,l=()=>{if(s||e.signal.aborted||!e.isCurrent())throw me("unauthenticated","timer_fenced")},p=()=>{if(c)return c;s=!0,e.signal.removeEventListener("abort",d),a?.ctrl.abort();try{n.postMessage([1,t,i,"close"])}finally{n.removeEventListener("message",u),n.close()}return c=Promise.resolve().then(async()=>{await a?.work})},d=()=>{p()},u=f=>{let h=f.data;if(!Array.isArray(h)||h[0]!==1||h[1]!==t||h[2]!==i){p();return}if(h.length===4&&h[3]==="close"){p();return}if(h.length===5&&h[4]==="cancel"&&Number.isSafeInteger(h[3])&&h[3]>0){a&&a.id===h[3]&&a.ctrl.abort();return}if(h.length!==6||!Number.isSafeInteger(h[3])||h[3]<=r||a||typeof h[4]!="string"||!Array.isArray(h[5])){p();return}let m=h[3],b=h[4],w=h[5],g=new AbortController;r=m;let y=!1,v=b!=="list"&&b!=="lookupOperation",_=Promise.resolve().then(async()=>{let k=setTimeout(()=>g.abort(),1e4),S,x,P=new Uint8Array(Rd),I=0,R=()=>{x?.cancel().catch(()=>{})};g.signal.addEventListener("abort",R,{once:!0});try{l(),g.signal.throwIfAborted();let O=o.slice(0,-7)+"/notifications/channels",q,j,z=null;if(b==="vapid"&&w.length===0){if(!e.journal)throw me("upgrade_required","native_timer_channel_journal_unavailable");e.journal.read(),q={path:"/v1/notifications/vapid-public-key",method:"GET",write:!1}}else if(b==="registerChannel"&&w.length===1){if(!e.journal)throw me("upgrade_required","native_timer_channel_journal_unavailable");let te=w[0],ee=es(te,`kind,criteria,${te?.kind==="web_push"?"subscription":"token"}`);if(!["web_push","fcm"].includes(ee.kind)||!Array.isArray(ee.criteria)||!ee.criteria.length||ee.criteria.length>100||(ee.criteria.forEach(z_),new Set(ee.criteria).size!==ee.criteria.length))throw me("invalid_request","timer_input");let le;if(ee.kind==="fcm"){if(typeof ee.token!="string"||ee.token.length<16||ee.token.length>4096||/[\s\u0000-\u001f\u007f]/.test(ee.token))throw me("invalid_request","timer_input");le={transport:"fcm",token:ee.token}}else{let F=es(ee.subscription,"endpoint,expirationTime,keys"),Y=es(F.keys,"p256dh,auth");if(typeof F.endpoint!="string"||F.endpoint.length>2048||typeof Y.p256dh!="string"||typeof Y.auth!="string"||!/^[A-Za-z0-9_-]{87}$/.test(Y.p256dh)||!/^[A-Za-z0-9_-]{22}$/.test(Y.auth))throw me("invalid_request","timer_input");let we;try{we=new URL(F.endpoint)}catch{throw me("invalid_request","timer_input")}if(we.protocol!=="https:"||we.username||we.password||we.hash||we.href!==F.endpoint||F.expirationTime!==null&&(!Number.isFinite(F.expirationTime)||F.expirationTime<0))throw me("invalid_request","timer_input");le={subscription:F}}q={path:O,method:"POST",write:!0,body:{installation_id:e.scope.installation,criteria:[...ee.criteria].sort(),...le}};let ge=new TextEncoder().encode(JSON.stringify(q.body)),N;try{N=[...new Uint8Array(await crypto.subtle.digest("SHA-256",ge))].map(F=>F.toString(16).padStart(2,"0")).join("")}finally{ge.fill(0)}l(),g.signal.throwIfAborted();let G=e.journal.read();if(z=G,G?.pending)throw me("outcome_unknown","timer_channel_reapproval_required");j={grantId:e.grantId,kind:ee.kind,targetDigest:N,channelId:G?.channelId??null,pending:"register"}}else if(b==="unregisterChannel"&&w.length===1&&["web_push","fcm"].includes(w[0])){if(!e.journal)throw me("upgrade_required","native_timer_channel_journal_unavailable");let te=e.journal.read();if(z=te,!te){n.postMessage([1,t,i,m,!0,void 0]);return}if(te.pending==="register")throw me("outcome_unknown","timer_channel_reapproval_required");if(te.kind!==w[0]||!te.channelId)throw me("invalid_request","timer_channel_kind");j={...te,pending:"delete"},q={path:`${O}/${te.channelId}`,method:"DELETE",write:!0}}else q=Gj(o,b,w);v=q.write;let D=q.body===void 0?void 0:JSON.stringify(q.body);if(D&&new TextEncoder().encode(D).length>Rd)throw me("invalid_request","timer_input");let J=await e.bearer();if(l(),g.signal.throwIfAborted(),typeof J!="string"||!/^(idev_|ct_)[A-Za-z0-9_-]{43}$/.test(J))throw me("unauthenticated","timer_credential");j&&(await e.journal.write(j),l(),g.signal.throwIfAborted()),y=v;let X=e.fetch;if(S=await X(`${e.cpOrigin}${q.path}`,{method:q.method,body:D,headers:{authorization:`Bearer ${J}`,...D===void 0?{}:{"content-type":"application/json"}},credentials:"omit",redirect:"error",cache:q.method==="GET"?"no-store":"default",referrerPolicy:"no-referrer",signal:g.signal}),l(),g.signal.throwIfAborted(),S.redirected)throw me("unavailable","timer_response");if(b==="unregisterChannel"&&S.status===204){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(S.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json"||!S.body)throw me("unavailable","timer_response");let B=S.headers.get("content-length");if(B&&/^\d+$/.test(B)&&Number(B)>Rd)throw me("unavailable","timer_response");for(x=S.body.getReader();;){let te=await x.read();try{if(l(),g.signal.throwIfAborted(),te.done)break;if(I+te.value.length>Rd)throw me("unavailable","timer_response");P.set(te.value,I),I+=te.value.length}finally{te.value?.fill(0)}}let ae=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(P.subarray(0,I)));if(b==="unregisterChannel"&&S.status===404&&ae?.error?.code==="channel_not_found"){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(!S.ok)throw S.status>=500?me("unavailable","timer_http"):ae?.error?.operation_outcome==="unknown"?me("outcome_unknown","timer_write_unknown"):(j&&(await e.journal.write(z),l(),g.signal.throwIfAborted()),y=!1,A(S.status===401||S.status===403?"unauthenticated":S.status===409?"conflict":S.status===404?"upgrade_required":S.status===429?"rate_limited":"invalid_request","Native timer request was refused.","timer_refused"));if(l(),g.signal.throwIfAborted(),b==="registerChannel"){if(typeof ae?.channel_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(ae.channel_id))throw me("unavailable","timer_channel_response");await e.journal.write({...j,channelId:ae.channel_id,pending:null}),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,{channelId:ae.channel_id,installationId:e.scope.installation,criteria:q.body.criteria}])}else n.postMessage([1,t,i,m,!0,ae])}catch(O){let q=y?me("outcome_unknown","timer_write_unknown"):O instanceof pe?O:me(g.signal.aborted?"cancelled":"unavailable","timer_request");s||n.postMessage([1,t,i,m,!1,q.code,q.reason])}finally{clearTimeout(k),g.signal.removeEventListener("abort",R),P.fill(0),(x?.cancel()??S?.body?.cancel())?.catch(()=>{}),x?.releaseLock(),a?.id===m&&(a=null)}});a={id:m,ctrl:g,work:_}};n.addEventListener("message",u),n.start(),e.signal.addEventListener("abort",d,{once:!0});try{l()}catch(f){throw p(),f}return Object.freeze({close:p})}function zO(n,e,t){let i=DO(e.scope),o=e.generation,s=!1,r=0,a=null,c=()=>{if(s)return;s=!0,t.signal.removeEventListener("abort",c);let y=a;a=null,y?.signal?.removeEventListener("abort",y.abort),y?.reject(me(y.write?"outcome_unknown":"cancelled","timer_port_closed"));try{n.postMessage([1,i,o,"close"])}finally{n.removeEventListener("message",l),n.close(),t.onClose()}},l=y=>{let v=y.data;if(!Array.isArray(v)||v[0]!==1||v[1]!==i||v[2]!==o){c();return}if(v.length===4&&v[3]==="close"){c();return}let _=a;if(!_||v[3]!==_.id||!(v.length===6&&v[4]===!0||v.length===7&&v[4]===!1&&typeof v[5]=="string"&&uo(v[5]))){c();return}a=null,_.signal?.removeEventListener("abort",_.abort),v[4]?_.resolve(v[5]):_.reject(A(v[5],"Native timer request could not complete.",typeof v[6]=="string"?v[6]:void 0))},p=(y,v,_,k=!1)=>{if(s||t.signal.aborted||_.signal?.aborted)return Promise.reject(me("cancelled","timer_port_closed"));if(a||d&&!k)return Promise.reject(me("unavailable","timer_port_busy"));if(r>=Number.MAX_SAFE_INTEGER)return c(),Promise.reject(me("unavailable","timer_port_closed"));let S=++r,x=y!=="list"&&y!=="lookupOperation"&&y!=="vapid";return new Promise((P,I)=>{let R=()=>{try{n.postMessage([1,i,o,S,"cancel"])}catch{c()}I(me(x?"outcome_unknown":"cancelled","timer_request_cancelled"))};a={id:S,write:x,resolve:P,reject:I,abort:R,signal:_.signal},_.signal?.addEventListener("abort",R,{once:!0});try{if(new TextEncoder().encode(JSON.stringify(v)).length>Rd)throw me("invalid_request","timer_input");n.postMessage([1,i,o,S,y,v])}catch(O){a=null,_.signal?.removeEventListener("abort",R),I(O)}})},d=!1,u=()=>{if(s||t.signal.aborted)throw me("cancelled","timer_port_closed")},f=y=>{if(!y?.length||y.length>100||y.some(v=>typeof v!="string"||!v.length||v.length>100)||new Set(y).size!==y.length)throw me("invalid_request","timer_channel_criteria_required");return[...y].sort()},h=(y,v)=>{let _=es(y,"channelId,installationId,criteria");if(typeof _.channelId!="string"||_.installationId!==e.scope.installation||JSON.stringify(_.criteria)!==JSON.stringify(v))throw me("outcome_unknown","timer_channel_response");return{channelId:_.channelId,installationId:e.scope.installation,criteria:[...v]}},m=async(y,v)=>{if(u(),y.signal?.throwIfAborted(),d||a)throw me("unavailable","timer_port_busy");d=!0;try{return await v()}finally{d=!1}},b=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw me("invalid_request","timer_channel_installation");let _=y.serviceWorker;if(!_?.pushManager||typeof _.pushManager.getSubscription!="function"||typeof _.pushManager.subscribe!="function")throw me("invalid_request","timer_push_platform");let k=await p("vapid",[],y,!0);if(u(),y.signal?.throwIfAborted(),typeof k.public_key!="string"||!/^[A-Za-z0-9_-]{87}$/.test(k.public_key))throw me("unavailable","timer_vapid_response");let S=atob(k.public_key.replace(/-/g,"+").replace(/_/g,"/")),x=Uint8Array.from(S,R=>R.charCodeAt(0));if(x.length!==65||x[0]!==4||btoa(S).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")!==k.public_key)throw me("unavailable","timer_vapid_response");let P=await _.pushManager.getSubscription();if(u(),y.signal?.throwIfAborted(),P){let R=P.options.applicationServerKey;if(!R||R.byteLength!==x.length||new Uint8Array(R).some((O,q)=>O!==x[q]))throw me("invalid_request","timer_push_key_changed")}if(!P&&(P=await _.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:x}),s||t.signal.aborted||y.signal?.aborted))throw await P.unsubscribe(),me("cancelled","timer_port_closed");let I=P.toJSON();return h(await p("registerChannel",[{kind:"web_push",criteria:v,subscription:{endpoint:I.endpoint,expirationTime:I.expirationTime??null,keys:I.keys}}],y,!0),v)}),w=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw me("invalid_request","timer_channel_installation");return{...h(await p("registerChannel",[{kind:"fcm",criteria:v,token:y.token}],y,!0),v),transport:"fcm"}}),g=(y,v)=>m(v,async()=>{if(await p("unregisterChannel",["web_push"],v,!0),u(),v.signal?.throwIfAborted(),y){let _=await y.pushManager.getSubscription();u(),v.signal?.throwIfAborted(),_&&await _.unsubscribe(),u(),v.signal?.throwIfAborted()}});return n.addEventListener("message",l),n.start(),t.signal.addEventListener("abort",c,{once:!0}),t.signal.aborted&&c(),Object.freeze({list:(y,v)=>p("list",[y],v),put:(y,v,_,k)=>p("put",[y,v,_],k),cancel:(y,v,_,k)=>p("cancel",[y,v,_],k),reconcile:(y,v,_)=>p("reconcile",[y,v],_),reconcileWithReceipt:(y,v,_)=>p("reconcileWithReceipt",[y,v],_),lookupOperation:(y,v,_)=>p("lookupOperation",[y,v],_),registerWebPush:b,unregisterWebPush:g,registerFcm:w,unregisterFcm:y=>m(y,async()=>{await p("unregisterChannel",["fcm"],y,!0)}),close:c})}var Hj,$_,Rd,me,DO,B_=C(()=>{"use strict";ne();Hj=/^[A-Za-z0-9._-]{1,64}$/,$_=/^[A-Za-z0-9._:-]{1,128}$/,Rd=2*1024*1024,me=(n,e)=>A(n,"Native timer request could not complete.",e),DO=n=>JSON.stringify([n.account,n.installation,n.collection])});var Gl,Yj,Jj,ts,Cn,Yl,sy=C(()=>{"use strict";Gl="original-join",Yj=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Jj="00000000-0000-0000-0000-000000000000",ts=class extends Error{constructor(t){super(`app collection join: ${t}`);this.reason=t;this.name="AppCollectionJoinError"}reason},Cn=(n="recovery_required")=>new ts(n),Yl=class{options;key;busy=!1;constructor(e){let t=Object.freeze({account:e.scope.account,installation:e.scope.installation,collection:e.scope.collection});if(Object.values(t).some(i=>typeof i!="string"||!Yj.test(i)||i===Jj)||typeof e.databaseName!="string"||!e.databaseName.length||e.databaseName.length>256||/[\u0000-\u001f\u007f]/.test(e.databaseName)||typeof e.isCurrent!="function")throw Cn("binding");this.options=Object.freeze({databaseName:e.databaseName,scope:t,isCurrent:e.isCurrent}),this.key=JSON.stringify([t.account,t.installation,t.collection])}check(e){if(e.aborted||this.options.isCurrent()!==!0)throw Cn("fenced")}marker(e){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).sort().join()!=="account,collection,installation,phase,version")throw Cn();let t=e;if(t.version!==1||t.phase!=="attempted"&&t.phase!=="completed"||Object.entries(this.options.scope).some(([i,o])=>t[i]!==o))throw Cn();return t}open(e){if(this.check(e),!globalThis.indexedDB)throw Cn();return new Promise((t,i)=>{let o=indexedDB.open(this.options.databaseName,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(Cn())};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(this.check(e),s||o.result.objectStoreNames.length)throw Cn();o.result.createObjectStore(Gl)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{r();try{if(this.check(e),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(Gl))throw Cn();t(o.result)}catch{o.result.close(),i(Cn())}}})}async change(e,t){if(this.check(t),this.busy)throw Cn("busy");this.busy=!0;let i=null;try{return i=await this.open(t),this.check(t),await new Promise((o,s)=>{this.check(t);let r=i.transaction(Gl,"readwrite",{durability:"strict"}),a=null,c,l=()=>{try{r.abort()}catch{}},p=()=>t.removeEventListener("abort",l);t.addEventListener("abort",l,{once:!0}),r.onabort=r.onerror=()=>{p(),s(c??Cn())},r.oncomplete=()=>{p();try{if(this.check(t),!a)throw Cn();o(Object.freeze(a))}catch{s(Cn())}};let d=r.objectStore(Gl),u=d.get(this.key);u.onsuccess=()=>{try{this.check(t);let f=u.result;if(f===void 0){if(e!=="prepare")throw Cn();d.add({version:1,...this.options.scope,phase:"attempted"},this.key),a={outcomeMode:"fresh",phase:"attempted"}}else{let h=this.marker(f);e==="complete"&&h.phase!=="completed"&&d.put({...h,phase:"completed"},this.key),a={outcomeMode:"existing",phase:e==="complete"?"completed":h.phase}}}catch(f){c=f,l()}}})}catch(o){throw o instanceof ts?o:Cn()}finally{i?.close(),this.busy=!1}}prepare(e){return this.change("prepare",e.signal)}async syncedBefore(e){return await this.synced("read",e.signal)===!0}async markSynced(e){await this.synced("mark",e.signal)}async synced(e,t){let i=null;try{i=await this.open(t),this.check(t);let o=JSON.stringify([this.options.scope.account,this.options.scope.installation,this.options.scope.collection,"synced"]);return await new Promise(s=>{let r=i.transaction(Gl,e==="mark"?"readwrite":"readonly"),a=!1;r.onabort=r.onerror=()=>s(!1),r.oncomplete=()=>s(e==="mark"||a);let c=r.objectStore(Gl);if(e==="mark")c.put({version:1,synced:!0},o);else{let l=c.get(o);l.onsuccess=()=>{let p=l.result;a=!!p&&p.version===1&&p.synced===!0}}})}catch{return!1}finally{i?.close()}}async complete(e){await this.change("complete",e.signal)}}});var BO,FO=C(()=>{BO=Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9])});function ns(n,e,t,i,o,s){let r=o[s],a=o[s+1],c=K[2*n],l=K[2*n+1],p=K[2*e],d=K[2*e+1],u=K[2*t],f=K[2*t+1],h=K[2*i],m=K[2*i+1],b=Mc(c,p,r);l=qc(b,l,d,a),c=b|0;let w=m^l,g=h^c;m=M0(w,g),h=q0(w,g),{h:f,l:u}=Jn(f,u,m,h),w=d^f,g=p^u,d=rr(w,g,24),p=or(w,g,24),K[2*n]=c,K[2*n+1]=l,K[2*e]=p,K[2*e+1]=d,K[2*t]=u,K[2*t+1]=f,K[2*i]=h,K[2*i+1]=m}function is(n,e,t,i,o,s){let r=o[s],a=o[s+1],c=K[2*n],l=K[2*n+1],p=K[2*e],d=K[2*e+1],u=K[2*t],f=K[2*t+1],h=K[2*i],m=K[2*i+1],b=Mc(c,p,r);l=qc(b,l,d,a),c=b|0;let w=m^l,g=h^c;m=rr(w,g,16),h=or(w,g,16),{h:f,l:u}=Jn(f,u,m,h),w=d^f,g=p^u,d=ds(w,g,63),p=us(w,g,63),K[2*n]=c,K[2*n+1]=l,K[2*e]=p,K[2*e+1]=d,K[2*t]=u,K[2*t+1]=f,K[2*i]=h,K[2*i+1]=m}function Xj(n,e={},t,i,o){if(gn(t),n<=0||n>t)throw new Error('"dkLen" must be 1..'+t+", got "+n);let{key:s,salt:r,personalization:a}=e;if(s!==void 0&&(s.length<1||s.length>t))throw new Error('"key" expected to be undefined or of length=1..'+t);r!==void 0&&pt(r,i,"salt"),a!==void 0&&pt(a,o,"personalization")}var zt,K,F_,V_,Jl,VO=C(()=>{FO();_u();sr();zt=Uint32Array.from([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),K=new Uint32Array(32);F_=class{buffer;buffer32;finished=!1;destroyed=!1;length=0;pos=0;blockLen;outputLen;canXOF=!1;constructor(e,t){gn(e),gn(t),this.blockLen=e,this.outputLen=t,this.buffer=new Uint8Array(e),this.buffer32=ho(this.buffer)}update(e){$r(this),pt(e);let{blockLen:t,buffer:i,buffer32:o}=this,s=e.length,r=e.byteOffset,a=e.buffer;for(let c=0;c<s;){this.pos===t&&(qi(o),this.compress(o,0,!1),qi(o),this.pos=0);let l=Math.min(t-this.pos,s-c),p=r+c;if(l===t&&!(p%4)&&c+l<s){let d=new Uint32Array(a,p,Math.floor((s-c)/4));qi(d);for(let u=0;c+t<s;u+=o.length,c+=t)this.length+=t,this.compress(d,u,!1);qi(d);continue}i.set(c===0&&l===s?e:e.subarray(c,c+l),this.pos),this.pos+=l,this.length+=l,c+=l}return this}digestInto(e){if($r(this),ha(e,this),e.byteOffset&3)throw new RangeError('"output" expected 4-byte aligned byteOffset, got '+e.byteOffset);let{pos:t,buffer32:i}=this;this.finished=!0,this.buffer.fill(0,t),qi(i),this.compress(i,0,!0),qi(i);let o=this.get(),s=e===this.buffer?i:ho(e),r=Math.floor(this.outputLen/4);for(let p=0;p<r;p++)s[p]=Xt(o[p]);let a=this.outputLen%4;if(!a)return;let c=r*4,l=o[r];for(let p=0;p<a;p++)e[c+p]=l>>>8*p}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let i=e.slice(0,t);return this.destroy(),i}_cloneInto(e){let{buffer:t,length:i,finished:o,destroyed:s,outputLen:r,pos:a}=this;return e||=new this.constructor({dkLen:r}),e.set(...this.get()),e.buffer.set(t),e.destroyed=s,e.finished=o,e.length=i,e.pos=a,e.outputLen=r,e}clone(){return this._cloneInto()}},V_=class extends F_{v0l=zt[0]|0;v0h=zt[1]|0;v1l=zt[2]|0;v1h=zt[3]|0;v2l=zt[4]|0;v2h=zt[5]|0;v3l=zt[6]|0;v3h=zt[7]|0;v4l=zt[8]|0;v4h=zt[9]|0;v5l=zt[10]|0;v5h=zt[11]|0;v6l=zt[12]|0;v6h=zt[13]|0;v7l=zt[14]|0;v7h=zt[15]|0;constructor(e={}){e=jc({},e);let t=e.dkLen===void 0?64:e.dkLen;super(128,t),Xj(t,e,64,16,16);let{key:i,personalization:o,salt:s}=e,r=0;if(i!==void 0&&(pt(i,void 0,"key"),r=i.length),this.v0l^=this.outputLen|r<<8|65536|1<<24,s!==void 0){pt(s,void 0,"salt");let a=ho($g(s));this.v4l^=Xt(a[0]),this.v4h^=Xt(a[1]),this.v5l^=Xt(a[2]),this.v5h^=Xt(a[3])}if(o!==void 0){pt(o,void 0,"personalization");let a=ho($g(o));this.v6l^=Xt(a[0]),this.v6h^=Xt(a[1]),this.v7l^=Xt(a[2]),this.v7h^=Xt(a[3])}if(i!==void 0){let a=new Uint8Array(this.blockLen);a.set(i),this.update(a),it(a)}}get(){let{v0l:e,v0h:t,v1l:i,v1h:o,v2l:s,v2h:r,v3l:a,v3h:c,v4l:l,v4h:p,v5l:d,v5h:u,v6l:f,v6h:h,v7l:m,v7h:b}=this;return[e,t,i,o,s,r,a,c,l,p,d,u,f,h,m,b]}set(e,t,i,o,s,r,a,c,l,p,d,u,f,h,m,b){this.v0l=e|0,this.v0h=t|0,this.v1l=i|0,this.v1h=o|0,this.v2l=s|0,this.v2h=r|0,this.v3l=a|0,this.v3h=c|0,this.v4l=l|0,this.v4h=p|0,this.v5l=d|0,this.v5h=u|0,this.v6l=f|0,this.v6h=h|0,this.v7l=m|0,this.v7h=b|0}compress(e,t,i){let{v0l:o,v0h:s,v1l:r,v1h:a,v2l:c,v2h:l,v3l:p,v3h:d,v4l:u,v4h:f,v5l:h,v5h:m,v6l:b,v6h:w,v7l:g,v7h:y}=this;K[0]=o,K[1]=s,K[2]=r,K[3]=a,K[4]=c,K[5]=l,K[6]=p,K[7]=d,K[8]=u,K[9]=f,K[10]=h,K[11]=m,K[12]=b,K[13]=w,K[14]=g,K[15]=y,K.set(zt,16);let v=jg(this.length),_=Lg(this.length);K[24]=zt[8]^v,K[25]=zt[9]^_,i&&(K[28]=~K[28],K[29]=~K[29]);let k=0,S=BO;for(let x=0;x<12;x++)ns(0,4,8,12,e,t+2*S[k++]),is(0,4,8,12,e,t+2*S[k++]),ns(1,5,9,13,e,t+2*S[k++]),is(1,5,9,13,e,t+2*S[k++]),ns(2,6,10,14,e,t+2*S[k++]),is(2,6,10,14,e,t+2*S[k++]),ns(3,7,11,15,e,t+2*S[k++]),is(3,7,11,15,e,t+2*S[k++]),ns(0,5,10,15,e,t+2*S[k++]),is(0,5,10,15,e,t+2*S[k++]),ns(1,6,11,12,e,t+2*S[k++]),is(1,6,11,12,e,t+2*S[k++]),ns(2,7,8,13,e,t+2*S[k++]),is(2,7,8,13,e,t+2*S[k++]),ns(3,4,9,14,e,t+2*S[k++]),is(3,4,9,14,e,t+2*S[k++]);this.v0l^=K[0]^K[16],this.v0h^=K[1]^K[17],this.v1l^=K[2]^K[18],this.v1h^=K[3]^K[19],this.v2l^=K[4]^K[20],this.v2h^=K[5]^K[21],this.v3l^=K[6]^K[22],this.v3h^=K[7]^K[23],this.v4l^=K[8]^K[24],this.v4h^=K[9]^K[25],this.v5l^=K[10]^K[26],this.v5h^=K[11]^K[27],this.v6l^=K[12]^K[28],this.v6h^=K[13]^K[29],this.v7l^=K[14]^K[30],this.v7h^=K[15]^K[31],it(K)}destroy(){this.destroyed=!0,it(this.buffer32),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Jl=Uc(n=>new V_(n))});function rs(n,e,t,i){let o=qt[2*n],s=qt[2*n+1],r=qt[2*e],a=qt[2*e+1],c=qt[2*t],l=qt[2*t+1],p=qt[2*i],d=qt[2*i+1],u=0,f=0,h=0,m=0,b=0;u=Math.imul(o,r),f=((o>>>0)*(r>>>0)-(u>>>0))/4294967296+.5|0,h=(o>>>0)+(r>>>0)+(u<<1>>>0),s=s+a+(f<<1|u>>>31)+(h/4294967296|0)|0,o=h|0,m=d^s,b=p^o,d=b,p=m,u=Math.imul(c,p),f=((c>>>0)*(p>>>0)-(u>>>0))/4294967296+.5|0,h=(c>>>0)+(p>>>0)+(u<<1>>>0),l=l+d+(f<<1|u>>>31)+(h/4294967296|0)|0,c=h|0,m=a^l,b=r^c,a=m>>>24|b<<8,r=m<<8|b>>>24,u=Math.imul(o,r),f=((o>>>0)*(r>>>0)-(u>>>0))/4294967296+.5|0,h=(o>>>0)+(r>>>0)+(u<<1>>>0),s=s+a+(f<<1|u>>>31)+(h/4294967296|0)|0,o=h|0,m=d^s,b=p^o,d=m>>>16|b<<16,p=m<<16|b>>>16,u=Math.imul(c,p),f=((c>>>0)*(p>>>0)-(u>>>0))/4294967296+.5|0,h=(c>>>0)+(p>>>0)+(u<<1>>>0),l=l+d+(f<<1|u>>>31)+(h/4294967296|0)|0,c=h|0,m=a^l,b=r^c,a=m<<1|b>>>31,r=m>>>31|b<<1,qt[2*n]=o,qt[2*n+1]=s,qt[2*e]=r,qt[2*e+1]=a,qt[2*t]=c,qt[2*t+1]=l,qt[2*i]=p,qt[2*i+1]=d}function WO(n,e,t,i,o,s,r,a,c,l,p,d,u,f,h,m){rs(n,o,c,u),rs(e,s,l,f),rs(t,r,p,h),rs(i,a,d,m),rs(n,s,p,m),rs(e,r,d,u),rs(t,a,c,f),rs(i,o,l,h)}function Ed(n,e,t,i,o){if(o)for(let s=0;s<256;s++){let r=n[e+s]^n[t+s];qt[s]=r,n[i+s]^=r}else for(let s=0;s<256;s++){let r=n[e+s]^n[t+s];qt[s]=r,n[i+s]=r}for(let s=0;s<128;s+=16)WO(s,s+1,s+2,s+3,s+4,s+5,s+6,s+7,s+8,s+9,s+10,s+11,s+12,s+13,s+14,s+15);for(let s=0;s<16;s+=2)WO(s,s+1,s+16,s+17,s+32,s+33,s+48,s+49,s+64,s+65,s+80,s+81,s+96,s+97,s+112,s+113);for(let s=0;s<256;s++)n[i+s]^=qt[s];it(qt)}function K_(n,e){let t=Lc(n),i=new Uint32Array(1),o=Lc(i);if(i[0]=Xt(e),e<=64)return Jl.create({dkLen:e}).update(o).update(t).digest();let s=new Uint8Array(e),r=Jl.create({}).update(o).update(t).digest(),a=0;for(s.set(r.subarray(0,32)),a+=32;e-a>64;a+=32){let c=Jl.create({}).update(r);c.digestInto(r),c.destroy(),s.set(r.subarray(0,32),a)}return s.set(Jl(r,{dkLen:e-a}),a),it(r,i),s}function Zj(n,e,t,i,o,s,r=!1){let a;n===0?e===0?a=o-1:r?a=e*i+o-1:a=e*i+(o==0?-1:0):r?a=t-i+o-1:a=t-i+(o==0?-1:0);let c=n!==0&&e!==Md-1?(e+1)*i:0,l=Math.imul(s,s),p=((s>>>0)*(s>>>0)-(l>>>0))/4294967296+.5|0,d=Math.imul(a,p),u=((a>>>0)*(p>>>0)-(d>>>0))/4294967296+.5|0,f=a-1-u;return(c+f)%t}function os(n){return Number.isSafeInteger(n)&&n>=0&&n<Qj}function tU(n={}){n=jc({},n);let e={t:3,m:HO,p:1,version:19,dkLen:32,maxmem:eU,asyncTick:10};for(let[l,p]of Object.entries(n))p!==void 0&&(e[l]=p);let{dkLen:t,p:i,m:o,t:s,version:r,onProgress:a,asyncTick:c}=e;if(!os(t)||t<4)throw new Error('"dkLen" must be 4..');if(!os(i)||i<1||i>=Math.pow(2,24))throw new Error('"p" must be 1..2^24');if(!os(o))throw new Error('"m" must be 0..2^32');if(!os(s)||s<1)throw new Error('"t" (iterations) must be 1..2^32');if(a!==void 0&&typeof a!="function")throw new Error('"onProgress" must be a function');if(gn(c,"asyncTick"),!os(o)||o<8*i)throw new Error('"m" (memory) must be at least 8*p bytes');if(r!==16&&r!==19)throw new Error('"version" must be 0x10 or 0x13, got '+r);return e}function nU(n,e,t,i){let o=[],s=new Uint32Array(1),r=Lc(s),a,c,l=!1,p=(d,u)=>(typeof d=="string"&&o.push(u),u);try{let d=p(n,Pu(n,"password")),u=p(e,Pu(e,"salt"));if(!os(d.length))throw new Error('"password" must be less of length 1..4Gb');if(!os(u.length)||u.length<8)throw new Error('"salt" must be of length 8..4Gb');if(!Object.values(ay).includes(t))throw new Error('"type" was invalid');let{p:f,dkLen:h,m,t:b,version:w,key:g,personalization:y,maxmem:v,onProgress:_,asyncTick:k}=tU(i),S=g;g=p(S,KO(S,"key"));let x=y;y=p(x,KO(x,"personalization")),a=Jl.create();for(let P of[f,h,m,b,w,t])s[0]=Xt(P),a.update(r);for(let P of[d,u,g,y])s[0]=Xt(P.length),a.update(r).update(P);return c=new Uint32Array(18),a.digestInto(Lc(c)),l=!0,{H0:c,p:f,dkLen:h,m,t:b,version:w,maxmem:v,onProgress:_,asyncTick:k}}finally{a&&a.destroy(),it(s,...o),!l&&c&&it(c)}}function iU(n,e,t,i){let{H0:o,p:s,dkLen:r,m:a,t:c,version:l,maxmem:p,onProgress:d,asyncTick:u}=nU(n,e,t,i);try{let f=s,h=4*s*Math.floor(a/(Md*s)),m=Math.floor(h/s),b=Math.floor(m/Md),w=h*1024;if(!os(p))throw new Error('"maxmem" expected <2**32, got '+p);if(w>p)throw new Error('"maxmem" limit was hit: memUsed(mP*1024)='+w+", maxmem="+p);let g=new Uint32Array(w/4);for(let v=0;v<s;v++){let _=256*m*v;o[17]=Xt(v),o[16]=Xt(0),g.set(qi(ho(K_(o,1024))),_),o[16]=Xt(1),g.set(qi(ho(K_(o,1024))),_+256)}let y=()=>{};if(d){let v=c*Md*s*b-2*s,_=Math.max(Math.floor(v/1e4),1),k=0;y=()=>{k++,d&&(!(k%_)||k===v)&&d(k/v)}}return{type:t,mP:h,p:s,t:c,version:l,B:g,laneLen:m,lanes:f,segmentLen:b,dkLen:r,perBlock:y,asyncTick:u}}finally{it(o)}}function rU(n,e,t,i){let o=new Uint32Array(256);for(let r=0;r<e;r++)for(let a=0;a<256;a++)o[a]^=n[256*(t*r+t-1)+a];let s=K_(qi(o),i);return it(n,o),s}function*oU(n,e){let{type:t,mP:i,p:o,t:s,version:r,B:a,laneLen:c,lanes:l,segmentLen:p,perBlock:d}=n;e[262]=i,e[264]=s,e[266]=t;for(let u=0;u<s;u++){let f=u!==0&&r===19;e[256]=u;for(let h=0;h<Md;h++){e[260]=h;let m=t==ay.Argon2i||t==ay.Argon2id&&u===0&&h<2;for(let b=0;b<o;b++){e[258]=b,e[268]=0;let w=0;u===0&&h===0&&(w=2,m&&(e[268]++,Ed(e,256,2*256,0,!1),Ed(e,0,2*256,0,!1)));let g=b*c+h*p+w;for(let y=w;y<p;y++,g++){d();let v=g%c?g-1:g+c-1,_,k;if(m){let I=y%128;I===0&&(e[268]++,Ed(e,256,2*256,0,!1),Ed(e,0,2*256,0,!1)),_=e[2*I],k=e[2*I+1]}else{let I=256*v;_=a[I],k=a[I+1]}let S=u===0&&h===0?b:k%l,x=Zj(u,h,c,p,y,_,S==b),P=c*S+x;Ed(a,256*v,256*P,g*256,f),yield}}}}it(e)}async function sU(n,e,t,i){let o=iU(e,t,n,i),s=new Uint32Array(3*256),r=oU(o,s),a=()=>it(s,o.B),c=Date.now();for(;!r.next().done;){let l=Date.now()-c;l>=0&&l<o.asyncTick||(await V0(a),c=Date.now())}return rU(o.B,o.p,o.laneLen,o.dkLen)}var ay,Md,KO,qt,Qj,HO,eU,GO,YO=C(()=>{VO();sr();ay={Argon2d:0,Argon2i:1,Argon2id:2},Md=4,KO=(n,e="")=>n===void 0?Uint8Array.of():Pu(n,e),qt=new Uint32Array(256);Qj=Math.pow(2,32),HO=1024**2,eU=HO*1024;GO=(n,e,t={})=>sU(ay.Argon2id,n,e,t)});function lU(n,e,t,i=32,o){Tc(n),gn(i,"length"),pt(e,void 0,"prk");let s=n.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(i>255*s)throw new Error("Length must be <= 255*HashLen");let r=Math.ceil(i/s);if(t===void 0?t=aU:pt(t,void 0,"info"),!r)return o&&it(e),new Uint8Array;let a=o&&r===1?e:new Uint8Array(r*s),{iHash:c,oHash:l}=Ps.create(n,e),p=o?e:new Uint8Array(s),d=r>1?o?.iHash||n.create():void 0;for(let f=0;f<r-1;f++){qd[0]=f+1;let h=c._cloneInto(d);f&&h.update(p),h.update(t).update(qd).digestInto(p),l._cloneInto(d).update(p).digestInto(p),a.set(p,s*f)}if(qd[0]=r,r>1&&c.update(p),c.update(t).update(qd).digestInto(p),l.update(p).digestInto(p),a.set(p,s*(r-1)),c.destroy(),l.destroy(),d?.destroy(),p!==a&&it(p),it(qd),i===a.length)return a;let u=a.slice(0,i);return it(a),u}var qd,aU,ly,JO=C(()=>{Hb();sr();qd=Uint8Array.of(0),aU=Uint8Array.of();ly=(n,e,t,i,o)=>{Tc(n),t===void 0&&(t=new Uint8Array(n.outputLen));let s=Ps.create(n,t).update(e);return lU(n,s.digest(),i,o,s)}});function ta(n,e){let t=Xl.encode(n);if(t.length>255)throw Ue("internal","domain tag longer than 255 bytes");return Ge(G_(Uint8Array.of(t.length),t,e))}function G_(...n){let e=0;for(let o of n)e+=o.length;let t=new Uint8Array(e),i=0;for(let o of n)t.set(o,i),i+=o.length;return t}function Y_(n,e){if(n.length!==e.length)return!1;let t=0;for(let i=0;i<n.length;i++)t|=n[i]^e[i];return t===0}function mt(...n){for(let e of n)e.fill(0)}function Wn(n){if(!cU.test(n))throw Ue("internal","not a UUID");let e=n.replace(/-/g,"").toLowerCase(),t=new Uint8Array(16);for(let i=0;i<16;i++)t[i]=parseInt(e.slice(i*2,i*2+2),16);return t}function pU(n){let e="";for(let t of n)e+=t.toString(16).padStart(2,"0");return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}function ZO(n=cy){let e=n(Ji);if(e.length!==Ji)throw Ue("internal","entropy returned the wrong length");return e}function QO(n){return ta("mdbase/v1/recovery-key-check",n).subarray(0,XO)}function eR(n){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");let e=G_(n,QO(n)),t="",i=0,o=0;for(let s of e){for(i=i<<8|s,o+=8;o>=5;)t+=W_[i>>>o-5&31],o-=5;i&=(1<<o)-1}return o>0&&(t+=W_[i<<5-o&31]),mt(e),[H_,...t.match(/.{1,5}/g)].join("-")}function Ld(n){if(typeof n!="string"||n.length>4096)throw Ue("invalid_recovery_key","Not a recovery key.","wrong_length");let e=n.toUpperCase().replace(/[\s-]/g,"").replace(/O/g,"0").replace(/[IL]/g,"1");if(!e.startsWith(H_))throw Ue("invalid_recovery_key","A recovery key starts with MDB1.","wrong_prefix");if(e=e.slice(H_.length),e.length!==dU)throw Ue("invalid_recovery_key","A recovery key has 55 characters after MDB1.","wrong_length");let t=new Uint8Array(Ji+XO),i=0,o=0,s=0;for(let c of e){let l=W_.indexOf(c);if(l<0)throw Ue("invalid_recovery_key","A recovery key uses only Crockford base32 characters.","bad_character");i=i<<5|l,o+=5,o>=8&&(s<t.length&&(t[s++]=i>>>o-8&255),o-=8),i&=(1<<o)-1}if(s!==t.length||i!==0)throw Ue("invalid_recovery_key","Not a recovery key.","bad_character");let r=t.slice(0,Ji),a=Y_(QO(r),t.subarray(Ji));if(mt(t),!a)throw mt(r),Ue("invalid_recovery_key","The recovery key has a typo (check failed).","checksum");return r}function tR(n,e){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");let t=Wn(e),i=ly(Ge,n,t,Xl.encode("mdbase/v1/recovery-sign"),32),o=ly(Ge,n,t,Xl.encode("mdbase/v1/recovery-kem"),32),s=pp.getPublicKey(i),r=Ui.getPublicKey(o);return{device:pU(ta("mdbase/v1/recovery-id",G_(t,s)).subarray(0,16)),signSeed:i,signPk:s,kemSk:o,kemPk:r,noisePk:new Uint8Array(32)}}function nR(n,e){return pp.sign(e,n.signSeed)}function iR(n){mt(n.signSeed,n.kemSk)}function rR(n,e){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");let t=ly(Ge,n,Wn(e),Xl.encode("mdbase/v1/account-key-proof"),32);return{seed:t,pk:pp.getPublicKey(t)}}function uU(n,e,t){if(!Number.isSafeInteger(t)||t<0)throw Ue("internal","expected_version");return ta("mdbase/v1/account-key-rewrap",se([Wn(n),Ge(e),t]))}function oR(n,e,t,i){return pp.sign(uU(e,t,i),n.seed)}function jd(n){return ta("mdbase/v1/account-key-id",n)}function wU(n){if(!(ea(n.mKib)&&ea(n.t)&&ea(n.p)&&n.mKib>=mU&&n.mKib<=aR&&n.t>=yU&&n.t<=gU&&n.p>=1&&n.p<=bU&&n.mKib>=8*n.p&&n.salt instanceof Uint8Array&&n.salt.length===16))throw Ue("params","Unsupported key derivation parameters.")}function lR(n){return[sR,n.mKib,n.t,n.p,n.salt]}function vU(n){if(!Array.isArray(n)||n.length!==5)throw Ue("encoding","Not an account key bundle.");let[e,t,i,o,s]=n;if(!ea(e)||!ea(t)||!ea(i)||!ea(o)||!(s instanceof Uint8Array)||s.length!==16)throw Ue("encoding","Not an account key bundle.");if(e!==sR||t>4294967295||i>4294967295||o>4294967295)throw Ue("params","Unsupported key derivation parameters.");return{mKib:t,t:i,p:o,salt:s}}function X_(n){return se(Yy([[0,J_],[1,lR(n.kdf)],[2,n.nonce],[3,n.ct],[4,n.keyId]]))}function cR(n){if(!(n instanceof Uint8Array)||n.length>fU)throw Ue("encoding","Not an account key bundle.");let e;try{e=ce(n)}catch{throw Ue("encoding","Not an account key bundle.")}if(!(e instanceof Map)||e.size!==5||[...e.keys()].join()!=="0,1,2,3,4")throw Ue("encoding","Not an account key bundle.");let t=e,i=t.get(2),o=t.get(3),s=t.get(4);if(t.get(0)!==J_||!(i instanceof Uint8Array)||i.length!==24||!(o instanceof Uint8Array)||o.length!==48||!(s instanceof Uint8Array)||s.length!==32)throw Ue("encoding","Not an account key bundle.");let r={kdf:vU(t.get(1)),nonce:i,ct:o,keyId:s};if(!Jy(X_(r),n))throw Ue("encoding","Not an account key bundle.");return r}function pR(n){if(typeof n!="string")throw Ue("weak_password","The password is required.","too_short");if(Xl.encode(n).length>Td)throw Ue("weak_password","The password is too long.","too_long");let e=n.normalize("NFKC"),t=Xl.encode(e);if(t.length>Td)throw Ue("weak_password","The password is too long.","too_long");if([...e].length<Zl)throw mt(t),Ue("weak_password",`The password needs at least ${Zl} characters.`,"too_short");return t}function na(n){mt(pR(n))}async function dR(n,e,t,i){wU(e);let o=pR(n);try{let s=await t(o,e.salt,{mKib:e.mKib,t:e.t,p:e.p},i);if(!(s instanceof Uint8Array)||s.length!==32)throw Ue("internal","The KDF runner returned the wrong length.");return s}finally{mt(o)}}function uR(n,e,t){return ta("mdbase/v1/account-key-bundle",se([J_,Wn(n),e,lR(t)]))}async function dy(n,e,t,i={}){if(n.length!==Ji)throw Ue("internal","recovery secret is 32 bytes");na(e);let o=i.entropy??cy,s=i.kdf??{...hU,salt:o(16)},r=i.nonce??o(24);if(r.length!==24)throw Ue("internal","nonce is 24 bytes");let a=jd(n),c=await dR(e,s,i.argon2id??py,i.signal);try{let l=Eb(c,r,uR(t,a,s)).encrypt(n);return{kdf:s,nonce:r,ct:l,keyId:a}}finally{mt(c)}}async function fR(n,e,t,i={}){let o=await dR(e,n.kdf,i.argon2id??py,i.signal),s;try{s=Eb(o,n.nonce,uR(t,n.keyId,n.kdf)).decrypt(n.ct)}catch{throw Ue("wrong_secret","Wrong password.")}finally{mt(o)}if(s.length!==Ji||!Y_(jd(s),n.keyId))throw mt(s),Ue("wrong_secret","Wrong password.");return s}function Ud(n,e){if(n.length!==Ji||!Y_(jd(n),e.keyId))throw Ue("wrong_secret","This recovery key belongs to a different account key.")}var ze,Ue,Xl,cy,cU,W_,H_,Ji,XO,dU,J_,sR,fU,Zl,Td,hU,mU,aR,yU,gU,bU,ea,py,uy=C(()=>{"use strict";Mb();Af();YO();JO();ar();Xe();ze=class extends Error{code;reason;retryAfterMs;constructor(e,t,i={}){super(t),this.name="AccountKeyError",this.code=e,i.reason!==void 0&&(this.reason=i.reason),i.retryAfterMs!==void 0&&(this.retryAfterMs=i.retryAfterMs)}},Ue=(n,e,t)=>new ze(n,e,t===void 0?{}:{reason:t}),Xl=new TextEncoder;cy=n=>crypto.getRandomValues(new Uint8Array(n)),cU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;W_="0123456789ABCDEFGHJKMNPQRSTVWXYZ",H_="MDB1",Ji=32,XO=2,dU=55;J_=1,sR=1,fU=512,Zl=12,Td=1024,hU={mKib:19456,t:3,p:1},mU=19456,aR=24576,yU=2,gU=10,bU=4;ea=n=>typeof n=="number"&&Number.isSafeInteger(n)&&n>=0;py=async(n,e,t,i)=>{let o=()=>Ue("cancelled","Key derivation cancelled.");if(i?.aborted)throw o();try{return await GO(n,e,{t:t.t,m:t.mKib,p:t.p,dkLen:32,version:19,maxmem:aR*1024+(1<<20),asyncTick:20,onProgress:()=>{if(i?.aborted)throw o()}})}catch(s){throw s instanceof ze?s:Ue("params","Key derivation failed.")}}});function hR(n){if(n.length<3)return!1;let e=[...n].reverse().join("");return[yR,...AU].some(t=>t.includes(n)||t.includes(e))}function kU(n){for(let e=1;e<=n.length/2;e++)if(n.length%e===0&&n.slice(0,e).repeat(n.length/e)===n)return n.slice(0,e);return null}function SU(n){let e=[];for(let t of n){let i=/\p{L}/u.test(t)?"letter":/\p{Nd}/u.test(t)?"digit":t.charCodeAt(0)<128?"symbol":"other",o=e[e.length-1];o&&o.kind===i?o.text+=t:e.push({kind:i,text:t})}return e}function gR(n,e,t,i){let o=e.toLowerCase();if(t.has(o))return i.add("repeat"),1;t.add(o);let s=kU(o);if(s&&s.length<o.length)return i.add("repeat"),gR(n,s,new Set,i)+Xi(o.length/s.length);if(n==="letter"){let r=[...o].map(c=>mR[c]??c).join("");if(Nd.has(o)||Nd.has(r))return i.add("common"),Xi(Nd.size)+1;if(hR(o))return i.add("sequence"),Xi(yR.length)+Xi(o.length)+1;let a=2.5*[...o].length;return o!==e&&e.toUpperCase()!==e?a+=1+Xi([...e].length):e.toUpperCase()===e&&e.length>1&&(a+=1),a}return n==="digit"?_U.has(o)||hR(o)?(i.add("sequence"),4):/^(19|20)\d\d$/.test(o)||/^\d{6}$/.test(o)||/^\d{8}$/.test(o)?(i.add("date"),6):3.32*o.length:n==="symbol"?[...e].reduce((r,a)=>r+(a===" "?1:"!?.,*#-_".includes(a)?2:5),0):7*[...e].length}function PU(n){let e=[...n],t=e.map(r=>mR[r.toLowerCase()]??r.toLowerCase()),i=[],o="",s=0;for(;s<e.length;){let r=null;for(let a=Math.min(24,e.length-s);a>=4;a--){let c=t.slice(s,s+a).join("");if(Nd.has(c)){r=c;break}}r?(o&&i.push({word:null,text:o}),o="",i.push({word:r,text:e.slice(s,s+[...r].length).join("")}),s+=[...r].length):(o+=e[s],s++)}return o&&i.push({word:null,text:o}),i}function Dd(n){typeof n!="string"&&(n="");let e=new TextEncoder().encode(n).length,t=n.normalize("NFKC"),i=[...t].length,o=new TextEncoder().encode(t).length,s=new Set,r=new Set,a=0,c=0,l=new Set;for(let h of PU(t)){if(h.word){s.add("common"),c++,l.add("word");let m=h.text.toLowerCase();a+=r.has(h.word)?1:Xi(Nd.size)+1+(m!==h.text?1:0)+(m!==h.word?1:0),r.add(h.word);continue}for(let m of SU(h.text))c++,l.add(m.kind),a+=gR(m.kind,m.text,r,s)}a+=Math.max(0,l.size-1)+Xi(Math.max(1,c));let p=a<Xi(1e3)?0:a<Xi(1e6)?1:a<Xi(1e8)?2:a<Xi(1e10)?3:4,d=[],u=e>Td||o>Td;i<Zl&&d.push(`Use at least ${Zl} characters.`),u&&d.push("The password is too long."),s.has("common")&&d.push("Avoid common words and passwords."),s.has("sequence")&&d.push("Avoid sequences like abcd, 1234 or qwerty."),s.has("repeat")&&d.push("Avoid repeated characters or words."),s.has("date")&&d.push("Avoid years and dates."),p<3&&d.length===0&&d.push("Add another word or two; uncommon words are best.");let f=p>=3&&i>=Zl&&!u;return{score:p,acceptable:f,feedback:f?[]:d,bits:Math.round(a*10)/10}}var Nd,_U,mR,yR,AU,Xi,bR=C(()=>{"use strict";uy();Nd=new Set(["password","passwort","passw0rd","letmein","welcome","admin","administrator","login","master","monkey","dragon","football","baseball","soccer","hockey","qwerty","qwertyuiop","asdfgh","asdfghjkl","zxcvbn","zxcvbnm","azerty","iloveyou","sunshine","princess","shadow","superman","batman","michael","jennifer","jessica","charlie","thomas","trustno1","abc","abcd","abcdef","abcdefg","abcdefgh","secret","freedom","whatever","starwars","pokemon","computer","internet","hello","mustang","ginger","cheese","summer","winter","spring","autumn","flower","killer","hunter","ranger","buster","soccer","tigger","pepper","jordan","harley","robert","matthew","daniel","andrew","joshua","ashley","nicole","chelsea","amanda","orange","purple","yellow","silver","golden","cookie","chocolate","mdbase","task","note","notes","obsidian","recovery","private","encryption","unlock","account","default","changeme","temp","test","testing","guest","root","user","system","server","database","oracle","google","apple","facebook","twitter","github","linkedin","amazon","netflix","spotify","windows","android","iphone","samsung","nokia","sony","january","february","march","april","june","july","august","september","october","november","december","monday","tuesday","wednesday","thursday","friday","saturday","sunday","spider","lovely","liverpool","arsenal","chelsea","manchester","barcelona","madrid","america","london","paris","berlin","sydney","melbourne","canada"]),_U=new Set(["123","1234","12345","123456","1234567","12345678","123456789","1234567890","111111","000000","123123","654321","696969","112233","121212","131313","007","666","777","888","999","420","69"]),mR={0:"o",1:"i",3:"e",4:"a",5:"s",7:"t",8:"b","@":"a",$:"s","!":"i","+":"t"},yR="abcdefghijklmnopqrstuvwxyz0123456789",AU=["qwertyuiop","asdfghjkl","zxcvbnm","1234567890"],Xi=n=>Math.log2(Math.max(1,n))});function vR(){let n=null;return{get:async()=>n?n.slice():null,set:async e=>{n&&mt(n),n=e.slice()},clear:async()=>{n&&mt(n),n=null}}}function ia(n){if(!n||typeof n!="object"||Array.isArray(n))throw rn("not_object");return n}function wR(n){if(typeof n.complete!="boolean"||!Array.isArray(n.pending)||n.pending.length>1024)throw rn("strict_completion");let e=new Set,t=n.pending.map(i=>{let o=ia(i);if(typeof o.collection_id!="string"||typeof o.device_id!="string"||o.revoked_at!==null&&(!Number.isSafeInteger(o.revoked_at)||o.revoked_at<0))throw rn("strict_pending");Wn(o.collection_id),Wn(o.device_id);let s=`${o.collection_id.toLowerCase()}/${o.device_id.toLowerCase()}`;if(e.has(s))throw rn("strict_pending");return e.add(s),{collectionId:o.collection_id,deviceId:o.device_id,revokedAt:o.revoked_at}});if(n.complete&&t.length!==0)throw rn("strict_completion");return{complete:n.complete,pending:t}}function io(n){if(n instanceof ze)return n;let e=n&&typeof n=="object"?n:{},t=e.problem&&typeof e.problem=="object"?e.problem:{},i=typeof t.code=="string"?t.code:typeof e.code=="string"?e.code:"",o=typeof e.status=="number"?e.status:void 0,s=e.retryAfterMs??t.retryAfterMs??(typeof e.retry_after=="number"?e.retry_after*1e3:void 0),r=typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0;return i==="rate_limited"||o===429?new ze("rate_limited","Too many account key requests; try again later.",r===void 0?{}:{retryAfterMs:r}):i==="version_conflict"||i==="rotate_requires_strict"?new ze("conflict","The account key changed; fetch the current state and retry.",{reason:i}):i==="strict_mode"?new ze("strict_mode","The account is in strict mode."):i==="account_key_proof_required"?new ze("wrong_secret","The account key held here is not the one registered for this bundle.",{reason:i}):i==="no_account_key"?new ze("no_account_key","The account has no account key."):i==="cancelled"||e.name==="AbortError"?new ze("cancelled","Account key request cancelled."):IU(i||(o===void 0?"port_failure":`http_${o}`),r)}var Z_,xU,rn,IU,fy,hy,_R=C(()=>{"use strict";uy();Xe();bR();Z_=/^[0-9a-f]{64}$/,xU=/^([0-9a-f]{2}){1,512}$/,rn=n=>new ze("internal","Invalid control-plane account-key response.",{reason:n}),IU=(n,e)=>new ze("unavailable","The account key service refused or was unreachable.",e===void 0?{reason:n}:{reason:n,retryAfterMs:e});fy=n=>{if(!Number.isSafeInteger(n)||n<0)throw rn("version");return n};hy=class{lifetime=new AbortController;control;replica;secrets;argon2id;entropy;busy=Promise.resolve();last=null;constructor(e){if(this.control=e.control,this.replica=e.replica,!e.secrets)throw new ze("internal","PrivateAccount needs a secret store (the platform keychain).");this.secrets=e.secrets,this.argon2id=e.argon2id??py,this.entropy=e.entropy??cy,Wn(this.control.accountId)}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.control.close?.())}passwordStrength(e){return Dd(e)}async status(e={}){return this.serial(e,t=>this.readStatus(t))}get lastStatus(){return this.last}async setup(e,t){return this.serial({signal:t},async i=>{let o=Dd(e);if(na(e),!o.acceptable)throw new ze("weak_password","The password is too weak.",{reason:"strength"});let s=await this.fetchState(i);if(s.mode==="password")throw new ze("already_set_up","This account already has an account key; unlock it instead.");let r=ZO(this.entropy);try{let a=await dy(r,e,this.control.accountId,{entropy:this.entropy,argon2id:this.argon2id,signal:i});this.check(i),await this.putBundle(r,s.version,a,i),await this.secrets.set(r);let c=eR(r),l=await this.keyAll(r,i);return l.length?{recoveryKey:c,incomplete:l}:{recoveryKey:c}}finally{mt(r)}})}async unlock(e,t){return this.serial({signal:t},async i=>{let o="recoveryKey"in e?Ld(e.recoveryKey):null;try{let s=await this.requirePassword(i);o?Ud(o,s.bundle):o=await fR(s.bundle,e.password,this.control.accountId,{argon2id:this.argon2id,signal:i}),this.check(i),await this.secrets.set(o);let r=await this.grantAll(o,i);return r.length?{incomplete:r}:{}}finally{o&&mt(o)}})}async changePassword(e,t){return this.serial({signal:t},async i=>{let o=Dd(e);if(na(e),!o.acceptable)throw new ze("weak_password","The password is too weak.",{reason:"strength"});let s=await this.secrets.get();if(!s)throw new ze("locked","Unlock the account key on this device first.");try{let r=await this.requirePassword(i);try{Ud(s,r.bundle)}catch{throw new ze("conflict","The account key on the server is not the one unlocked here; unlock again.",{reason:"key_id_changed"})}let a=await dy(s,e,this.control.accountId,{entropy:this.entropy,argon2id:this.argon2id,signal:i});this.check(i),await this.putBundle(s,r.version,a,i)}finally{mt(s)}})}async recover(e,t,i){return this.serial({signal:i},async o=>{let s=Dd(t);if(na(t),!s.acceptable)throw new ze("weak_password","The password is too weak.",{reason:"strength"});let r=Ld(e);try{let a=await this.requirePassword(o);Ud(r,a.bundle);let c=await dy(r,t,this.control.accountId,{entropy:this.entropy,argon2id:this.argon2id,signal:o});this.check(o),await this.putBundle(r,a.version,c,o),await this.secrets.set(r);let l=await this.grantAll(r,o);return l.length?{incomplete:l}:{}}finally{mt(r)}})}async enableStrict(e){return this.serial({signal:e},async t=>{let i=await this.readStatus(t);if(i.mode==="strict"){i.strictComplete===!0&&await this.secrets.clear();let p=i.strictComplete===!0?!1:i.accountKeyKept;return this.last={...i,accountKeyKept:p},{version:i.version,complete:i.strictComplete,pending:i.pending,accountKeyKept:p,revocations:[],alreadyStrict:!0}}let o;try{o=await this.control.strict({expected_version:i.version},{signal:t})}catch(p){throw io(p)}let s=ia(o);if(s.mode!=="strict"||fy(s.version)!==i.version+1||!Array.isArray(s.revocations))throw rn("strict");let r=wR(s),a=s.revocations.map(p=>{let d=ia(p);if(typeof d.collection_id!="string"||typeof d.device_id!="string")throw rn("strict");return Wn(d.collection_id),Wn(d.device_id),{collectionId:d.collection_id,deviceId:d.device_id}});r.complete===!0&&await this.secrets.clear();let c=await this.secrets.get(),l=c!==null;return c&&mt(c),this.last={mode:"strict",version:s.version,unlocked:!1,strictComplete:r.complete,pending:r.pending,accountKeyKept:l},{version:s.version,...r,accountKeyKept:l,revocations:a,alreadyStrict:!1}})}async keyCollections(e){return this.serial({signal:e},async t=>{let i=await this.secrets.get();if(!i)throw new ze("locked","Unlock the account key on this device first.");try{let o=await this.requirePassword(t);return Ud(i,o.bundle),await this.keyAll(i,t)}finally{mt(i)}})}async lock(){await this.secrets.clear()}serial(e,t){let i=e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal,o=this.busy.then(()=>(this.check(i),t(i)),()=>(this.check(i),t(i)));return this.busy=o.catch(()=>{}),o}check(e){if(e.aborted)throw new ze("cancelled","Account key request cancelled.")}async readStatus(e){let t;try{t=await this.control.status({signal:e})}catch(l){throw io(l)}this.check(e);let i=ia(t),o=fy(i.version),s,r=null;if(i.mode==="none"&&o===0)s="none";else if(i.mode==="strict")s="strict";else if(i.mode==="password"&&typeof i.key_id=="string"&&Z_.test(i.key_id))s="password",r=i.key_id;else throw rn("status");let a=s==="strict"?wR(i):void 0,c=await this.secrets.get();try{let l=r!==null&&c!==null&&c.length===32&&At(jd(c))===r;return this.last={mode:s,unlocked:l,version:o,...a?{strictComplete:a.complete,pending:a.pending,accountKeyKept:c!==null}:{}}}finally{c&&mt(c)}}async fetchState(e){let t;try{t=await this.control.fetch({signal:e})}catch(r){throw io(r)}this.check(e);let i=ia(t),o=fy(i.version);if(i.mode==="none"){if(o!==0)throw rn("mode");return{mode:"none",version:0}}if(i.mode==="strict")return{mode:"strict",version:o};if(i.mode!=="password")throw rn("mode");if(typeof i.key_id!="string"||!Z_.test(i.key_id)||typeof i.bundle!="string"||!xU.test(i.bundle))throw rn("bundle");let s=cR(Lr(i.bundle));if(At(s.keyId)!==i.key_id)throw rn("key_id");return{mode:"password",version:o,bundle:s}}async requirePassword(e){let t=await this.fetchState(e);if(t.mode==="none")throw new ze("no_account_key","The account has no account key yet; set one up on a device that holds the keys.");if(t.mode==="strict")throw new ze("strict_mode","The account is in strict mode; approve this device from an existing device.");return t}async putBundle(e,t,i,o){let s=At(i.keyId),r=X_(i),a=rR(e,this.control.accountId),c;try{let p=At(oR(a,this.control.accountId,r,t));c=await this.control.put({expected_version:t,key_id:s,bundle:At(r),proof_pk:At(a.pk),proof_sig:p},{signal:o})}catch(p){throw io(p)}finally{mt(a.seed)}let l=ia(c);if(l.mode!=="password"||fy(l.version)!==t+1||l.key_id!==s)throw rn("put")}async collections(e){let t;try{t=await this.replica.privateCollections({signal:e})}catch(i){throw io(i)}if(this.check(e),!Array.isArray(t)||t.some(i=>typeof i!="string")||new Set(t).size!==t.length)throw rn("collections");for(let i of t)Wn(i);return t}async keyAll(e,t){let i=[];for(let o of await this.collections(t)){this.check(t);try{await this.enrol(e,o,t),await this.replica.keyAccountKeyDevice(o,e,{signal:t})}catch(s){if(s instanceof ze&&s.code==="cancelled")throw s;i.push(o)}}return i}async grantAll(e,t){let i=[];for(let o of await this.collections(t)){this.check(t);try{await this.replica.selfGrantWithAccountKey(o,e,{signal:t})}catch(s){if(s instanceof ze&&s.code==="cancelled")throw s;i.push(o)}}return i}async enrol(e,t,i){let o;try{o=await this.control.challenge({signal:i})}catch(a){throw io(a)}let s=typeof o=="string"?o.toLowerCase():typeof o?.challenge=="string"?o.challenge.toLowerCase():"";if(!Z_.test(s))throw rn("challenge");this.check(i);let r=tR(e,t);try{let a=ta("mdbase/v1/account-key-enrol",se([Lr(s),Wn(t),Wn(r.device),Wn(this.control.accountId),r.signPk,r.kemPk,r.noisePk])),c=At(nR(r,a)),l;try{l=await this.control.enrolRecoveryDevice(t,{challenge:s,recovery_device:r.device,sign_pk:At(r.signPk),kem_pk:At(r.kemPk),pop:c},{signal:i})}catch(d){throw io(d)}let p=ia(l);if(p.collection_id!==t||p.device_id!==r.device||!Number.isSafeInteger(p.enrolled_at))throw rn("enrol")}finally{iR(r)}}}});function Q_(n){if(n instanceof st)return n;if(n instanceof Mt)return new st("unlock_strict");if(n instanceof Go)return new st("unlock_unavailable");if(!(n instanceof ze))return null;switch(n.code){case"wrong_secret":return new st("wrong_secret");case"invalid_recovery_key":return new st("invalid_recovery_key",n.reason);case"no_account_key":return new st("no_account_key");case"strict_mode":return new st("unlock_strict");case"rate_limited":return new st("rate_limited",void 0,n.retryAfterMs);case"cancelled":return null;default:return n.reason==="account_key_proof_unavailable"?new st("unlock_unavailable"):new st("unavailable",n.reason??n.code,n.retryAfterMs)}}async function MU(n,e){return(await kR(n,e)).mode}async function kR(n,e){let t;try{t=await n.status({signal:e})}catch(s){throw io(s)}if(e.aborted)throw eA();let i=t&&typeof t=="object"&&!Array.isArray(t)?t:{},o=i.mode;if(o!=="password"&&o!=="strict"&&o!=="none")throw _t("response");return{mode:o,version:Number.isSafeInteger(i.version)&&i.version>=1?i.version:null,keyId:typeof i.key_id=="string"&&AR.test(i.key_id)?i.key_id:null}}async function yy(n,e){let t=new ec(n,()=>{throw _t("proof")},e);try{return await MU(t,e.signal)}catch(i){throw e.signal.aborted?i:Q_(i)??i}finally{t.close()}}async function gy(n,e,t,i){let o=i.signal,s=i.settleMs??RU,r=i.sealed,a="password"in t,c="recoveryKey"in t;if(a===c||typeof(a?t.password:t.recoveryKey)!="string"||!Number.isSafeInteger(s)||s<1)throw new st("unavailable","binding");let l=()=>{if(o.aborted)throw eA();if(n.isCurrent()!==!0)throw _t("fenced")};if(l(),e.status().state==="keyed"){r?.clear();return}if(c)try{mt(Ld(t.recoveryKey))}catch(g){throw Q_(g)??g}else try{na(t.password)}catch{throw new st("wrong_secret")}let p,d=null,u={privateCollections:async()=>[n.collection],keyAccountKeyDevice:()=>Promise.reject(my()),async selfGrantWithAccountKey(g,y,v){let _=v.signal??o;try{if(l(),g!==n.collection||!(y instanceof Uint8Array)||y.length!==32)throw _t("binding");let k=new Uint8Array(y),S;try{S=e.unlockConsuming(k)}finally{k.fill(0)}let x=Date.now()+s,P=100;for(;S.state==="pending";){if(Date.now()>=x)throw p="grant_pending",_t("grant_pending");if(await e.drive({signal:_}),l(),S=e.status(),S.state!=="pending")break;await Qo(P,_),l(),P=Math.min(1e3,P*2)}if(S.state==="refused")throw p=S.reason,_t(S.reason)}catch(k){throw p===void 0&&(d={error:k}),k}}},f=new ec(n,g=>e.signFetch(g),i),h=null,m=r?{accountId:f.accountId,status:g=>f.status(g),challenge:g=>f.challenge(g),async fetch(g){let y=r.take(n,h?.version??null,h?.keyId??null);if(y)return y;let v=await f.fetch(g);return r.keep(n,v),v},put:()=>f.put(),strict:()=>f.strict(),enrolRecoveryDevice:()=>f.enrolRecoveryDevice(),close:()=>f.close()}:f,b=vR(),w=new hy({control:m,replica:u,secrets:b,...i.argon2id?{argon2id:i.argon2id}:{}});try{h=await kR(f,o),l();let g=h.mode;try{i.onMode?.(g)}catch{}if(g==="none")throw new st("no_account_key");if(g==="strict")throw new st("unlock_strict");if(!e.supportsFetchProof())throw new st("unlock_unavailable");if(e.headKnown()<=0&&(await e.drive({signal:o}),l()),e.headKnown()<=0)throw new st("unavailable","log_head_unknown");let y=await w.unlock(t,o),v=d;if(v)throw v.error;if(l(),y.incomplete?.length)throw new st(p==="grant_pending"?"unavailable":"unlock_failed",p??"incomplete");if(e.status().state!=="keyed")throw new st("unlock_failed","not_keyed");r?.clear()}catch(g){throw(!(g instanceof ze&&g.code==="wrong_secret")||o.aborted||n.isCurrent()!==!0)&&r?.clear(),o.aborted||n.isCurrent()!==!0?g:Q_(g)??g}finally{try{await b.clear()}finally{w.close()}}}var st,Ql,CU,OU,RU,_t,eA,my,EU,AR,ec,$d=C(()=>{"use strict";bt();uy();be();_R();Qn();ry();Dm();st=class extends Error{constructor(t,i,o){super(`app account key unlock: ${t}`);this.reason=t;this.detail=i;this.retryAfterMs=o;this.name="AppAccountKeyUnlockError"}reason;detail;retryAfterMs},Ql=class{held=null;get holding(){return this.held!==null}take(e,t,i){let o=this.held;return o&&t!==null&&i!==null&&o.accountId===e.accountId&&o.connectorId===e.connectorId&&o.deviceId===e.deviceId&&o.version===t&&o.keyId===i?{mode:"password",version:o.version,key_id:o.keyId,bundle:o.bundle}:(this.held=null,null)}keep(e,t){this.held=null;let i=t&&typeof t=="object"&&!Array.isArray(t)?t:{};i.mode!=="password"||!Number.isSafeInteger(i.version)||i.version<1||typeof i.key_id!="string"||!AR.test(i.key_id)||typeof i.bundle!="string"||!/^([0-9a-f]{2}){1,512}$/.test(i.bundle)||(this.held=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,version:i.version,keyId:i.key_id,bundle:i.bundle}))}clear(){this.held=null}},CU=64*1024,OU=15e3,RU=45e3,_t=n=>new ze("unavailable","The account key service refused or was unreachable.",{reason:n}),eA=()=>new ze("cancelled","Account key request cancelled."),my=()=>_t("not_supported"),EU=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),AR=/^[0-9a-f]{64}$/,ec=class{constructor(e,t,i={}){this.session=e;this.sign=t;for(let s of[e.accountId,e.connectorId,e.deviceId,e.collection])if(U(s).every(r=>r===0))throw _t("binding");let o=new URL(e.cpOrigin);if(o.origin!==e.cpOrigin||o.username||o.password||o.protocol!=="https:"&&!(i.allowLoopbackHttp===!0&&Ye(e.cpOrigin)))throw _t("binding");if(this.accountId=e.accountId,this.deviceId=e.deviceId,this.origin=o.origin,this.fetchImpl=i.fetch??globalThis.fetch,this.now=i.now??Date.now,e.isCurrent()!==!0)throw _t("fenced")}session;sign;accountId;lifetime=new AbortController;origin;deviceId;fetchImpl;now;check(e){if(e.aborted||this.lifetime.signal.aborted)throw eA();let t=!1;try{t=this.session.isCurrent()===!0&&this.session.accountId===this.accountId&&this.session.deviceId===this.deviceId&&this.session.cpOrigin===this.origin}catch{t=!1}if(!t)throw _t("fenced")}async request(e,t,i,o){let s=o.signal??this.lifetime.signal;this.check(s);let r=await this.session.connectorBearer({signal:s});if(this.check(s),typeof r!="string"||!r||r.length>16384||/[^\x21-\x7e]/.test(r))throw _t("binding");let a=new AbortController,c=()=>a.abort(),l=setTimeout(c,OU);l.unref?.(),s.addEventListener("abort",c,{once:!0}),this.lifetime.signal.addEventListener("abort",c,{once:!0});let p=new Uint8Array(CU),d=0,u=null,f=null;try{let h=this.fetchImpl;try{u=await h(`${this.origin}${t}`,{method:e,headers:{authorization:`Bearer ${r}`,...i},signal:a.signal,redirect:"error",credentials:"omit",cache:"no-store",referrerPolicy:"no-referrer"})}catch{throw this.check(s),_t("network")}if(this.check(s),a.signal.aborted)throw _t("timeout");if(u.body)for(f=u.body.getReader();;){let b;try{b=await f.read()}catch{throw this.check(s),_t("network")}try{if(this.check(s),a.signal.aborted)throw _t("timeout");if(b.done)break;if(d+b.value.length>p.length)throw a.abort(),_t("response");p.set(b.value,d),d+=b.value.length}finally{b.value?.fill(0)}}let m=Co(p.subarray(0,d));if(!u.ok)throw wi(u.status,m,u.headers);if(!m||typeof m!="object"||Array.isArray(m))throw _t("response");return m}finally{p.fill(0),(f?.cancel()??u?.body?.cancel())?.catch(()=>{});try{f?.releaseLock()}catch{}clearTimeout(l),s.removeEventListener("abort",c),this.lifetime.signal.removeEventListener("abort",c)}}status(e){return this.request("GET","/v1/next/account-key/status",{},e)}challenge(e){return this.request("POST","/v1/next/devices/challenge",{},e)}async fetch(e){let t=null,i=null;try{let o=await this.request("POST","/v1/next/devices/challenge",{},e),s=o.challenge,r=o.expires_at;if(typeof s!="string"||!/^[0-9a-f]{64}$/.test(s)||typeof r!="number"||!Number.isSafeInteger(r)||r-this.now()<=5e3||r-this.now()>16*6e4)throw _t("response");t=Uint8Array.from(s.match(/../g).map(a=>parseInt(a,16)));try{i=this.sign(t)}catch(a){throw a instanceof Go?_t(a.reason):a instanceof Mt?new ze("strict_mode","The account is in strict mode."):_t("proof")}if(!(i instanceof Uint8Array)||i.length!==64)throw _t("proof");return await this.request("GET","/v1/next/account-key",{"x-mdbase-device-id":this.deviceId,"x-mdbase-challenge":s,"x-mdbase-signature":EU(i)},e)}finally{t?.fill(0),i?.fill(0)}}put(){return Promise.reject(my())}strict(){return Promise.reject(my())}enrolRecoveryDevice(){return Promise.reject(my())}close(){this.lifetime.abort()}}});function SR(n){let e=Object.freeze({...n,setupJournal:Object.freeze({...n.setupJournal})}),t=PC(e.sql);if(typeof e.handoff!="function")throw Zi("binding");let i=new Set;return async o=>{let s=JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection]);if(i.has(s))throw Zi("fenced");i.add(s);let{host:r,installation:a,signal:c,collection:l,setupPolicy:p}=o,d=a.isCurrent,u=l.displayName,f=l.mode==="private",h=ke=>{if(le())try{o.onProgress?.(ke)}catch{}},m=Object.freeze({account:o.scope.account,installation:o.scope.installation,collection:o.scope.collection}),b=JSON.stringify([m.account,m.installation,m.collection]),w=new AbortController,g=!1,y=!0,v=null,_=null,k=null,S=null,x=null,P=null,I=null,R=null,O="setup_required",q=null,j=!1,z=null,D=!1,J=null,X=!1,B=null,ae=new Map,te=null,ee=new Set,le=()=>{try{return!g&&!w.signal.aborted&&!c.aborted&&o.signal===c&&o.host===r&&o.installation===a&&a.isCurrent===d&&d.call(a)===!0&&o.collection===l&&o.setupPolicy===p&&a.scope.account===m.account&&a.scope.installation===m.installation&&JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection])===b&&l.collectionId===m.collection}catch{return!1}},ge=()=>{if(!le())throw Zi("fenced")},N=()=>{for(let ke of[...ee])try{ke()}catch{}},G=()=>{if(k)return k;g=!0,O="setup_required",v!==null&&clearTimeout(v),v=null,J!==null&&clearTimeout(J),J=null;try{z?.close()}catch{}z=null;try{r.onLogWork?.(null)}catch{}c.removeEventListener("abort",F);let ke=[...ae.values()];return ae.clear(),k=Promise.resolve().then(async()=>{let Me=!1;try{await x?.close()}catch{Me=!0}try{await S?.close()}catch{Me=!0}for(let nt of ke){try{await nt.timers?.close()}catch{Me=!0}try{await nt.control.close()}catch{Me=!0}try{nt.data.port1.postMessage([1,JSON.stringify([m.account,m.installation,m.collection]),"close"])}catch{Me=!0}for(let jt of[nt.data.port1,nt.data.port2,nt.command.port1,nt.command.port2])try{jt.close()}catch{Me=!0}}try{I?.port1.postMessage([1,JSON.stringify([m.account,m.installation,m.collection]),"close"])}catch{Me=!0}for(let nt of[I?.port1,I?.port2,R?.port1,R?.port2])try{nt?.close()}catch{Me=!0}await _?.catch(()=>{});try{P?.close()}catch{Me=!0}if(Me)throw Zi("unavailable");ee.clear(),i.delete(s)}),w.abort(),N(),k},F=()=>{G().catch(()=>{})},Y=null,we=0,Pe=()=>{let ke=Ot(te);if(ke!==null)return ke==="collection_migrating"?Math.min(6e5,Math.max(5e3,te?.retryAfterMs??3e4)):3e5;let Me=Math.min(6e4,1e3*2**Math.min(Math.max(we,De),6));return Y?.kind==="offline"?Je?Me:null:Y?.kind==="server_busy"||Y?.kind==="rate_limited"?Y.retryAfterMs??Me:De||Y?Me:250},ve=()=>{let ke=null;try{ke=r.serverProblem()}catch{ke=null}let Me=null;try{Me=r.transportHealth()}catch{Me=null}we=Me?we+1:0;let nt=JSON.stringify(Me)===JSON.stringify(Y);(ke!==te||!nt)&&(te=ke,Y=Me,N())},lt=Number.POSITIVE_INFINITY,De=0,Gt=0,ct=!1,Je=null,nr=ke=>{let Me=ke&&typeof ke=="object"&&typeof ke.code=="string"?ke.code:null;try{console.debug("mdbase: sync turn failed",{reason:Y?.kind??Ot(te)??Me??"unknown",failures:De})}catch{}},la=()=>{if(y||Date.now()-Gt>=TU)return!1;try{return r.pendingWrites()>0}catch{return!1}},ai=()=>{if(!j||!le())return;if(!y&&!la()&&!X){_||z?.suspend();return}if(v!==null||_)return;let ke=X?0:Pe();X=!1,ke!==null&&(v=setTimeout(()=>{if(v=null,!le())return;let Me=y&&Date.now()>=lt;Me&&(lt=Number.POSITIVE_INFINITY);let nt=_=Me?r.wakeCollectionLog({signal:w.signal}):r.driveCollection({signal:w.signal});nt.then(()=>{_===nt&&(_=null),De=0,ct=!0,le()&&ve(),Je?.(),ai()},jt=>{_===nt&&(_=null),De++,le()&&ve(),nr(jt),Je?.(),ai()})},ke))},Mr=()=>{le()&&(X=!0,v!==null&&clearTimeout(v),v=null,ai())},so=ke=>{D!==ke&&(D=ke,N())},Ei=ke=>{if(J!==null&&clearTimeout(J),J=null,ke){so(!1);return}if(!z?.available){so(B===null);return}z.suspended||(J=setTimeout(()=>{J=null,le()&&!z?.live&&so(!0)},qU))},Yt=ke=>{if(ge(),ke){(!z?.live||Y?.kind==="offline")&&(lt=0),De=0,we=0,Y?.kind==="offline"&&(X=!0);try{z?.resume(),z&&!z.live&&Ei(!1)}catch{}}else y&&(Gt=Date.now());y=ke,v!==null&&clearTimeout(v),v=null,ai()},ao=()=>new Promise((ke,Me)=>{let nt,jt=null,lo=En=>{Je=null,jt!==null&&clearTimeout(jt),w.signal.removeEventListener("abort",qr),En?Me(En):ke()},qr=()=>lo(Zi("fenced"));w.signal.addEventListener("abort",qr,{once:!0}),Je=()=>{if(!le()){lo(Zi("fenced"));return}if(B!==null){lo();return}let En="first_turn";if(ct)try{En=typeof r.initialSync=="function"?r.initialSync():null}catch{En="unavailable"}if(En===null||En==="offline"||Y?.kind==="offline"){lo();return}let co=null;if(En==="waiting_for_key"&&typeof r.keyWaitDetail=="function")try{co=r.keyWaitDetail()}catch{co=null}let vc=En+(co?JSON.stringify(co):"");if(vc!==nt){nt=vc;try{console.debug("mdbase: waiting for the first sync",{...co,reason:En})}catch{}}},jt=setTimeout(()=>lo(),LU),Je()});c.addEventListener("abort",F,{once:!0});try{ge(),P=new Dl({...e.setupJournal,scope:m,isCurrent:le});let ke=new Yl({databaseName:e.joinDatabaseName,scope:m,isCurrent:le});if(f)h("joining"),await r.bootstrapPrivateDevice({scope:m,collectionCurrent:le,signal:w.signal,fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),ge();else{let It=await ke.prepare({signal:w.signal});ge(),h("joining"),await r.bootstrapCloudCopy({scope:m,collectionCurrent:le,purpose:"join",outcomeMode:It.outcomeMode,signal:w.signal,...It.outcomeMode==="existing"?{reconcile:"explicit-unknown-outcome"}:{},fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),ge(),await ke.complete({signal:w.signal}),ge()}let Me=r.registeredReceipt();if(Me.installationId!==m.installation)throw Zi("binding");let nt=null,jt=async It=>{let at=await t(It);return nt=at.ledger??null,at};h("opening_store"),await r.openCollectionSql({signal:w.signal,replicaId:Me.deviceId,endpoint:0,openSql:jt}),ge(),h("connecting_log");let lo=Date.now()+jU;for(let It=0;;It++)try{await r.startCollectionLog({signal:w.signal,fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),ge();break}catch(at){ge();let Tr=at instanceof Ci&&at.reason==="unavailable"?at.server:null;if(!Dn(Tr)||Tr.status!==503||Tr.code!=="busy"||Ot(Tr)!==null||It+1>=UU)throw at;let _c=Tr.retryAfterMs??1e3*2**It;if(Date.now()+_c>=lo||(await Qo(_c,w.signal),ge(),Date.now()>=lo))throw at}let qr=crypto.randomUUID(),En=null,co=null;if(f){h("syncing");let It=await r.settlePrivateKey({signal:w.signal});if(ge(),It==="locked"){let at=await r.accountKeyMode({signal:w.signal});ge(),q={mode:at,unlocking:!1,problem:null}}}let vc=async()=>{let It=await ke.syncedBefore({signal:w.signal});ge(),h("syncing"),await r.waitForVerifiedRead({signal:w.signal,cold:!It,onProgress:h}),ge(),j=!0,r.onLogWork?.(Mr),ai();try{z=typeof r.openLogPush=="function"?r.openLogPush({push:Jt=>{le()&&(r.pushLog(Jt),Mr())},live:Ei,ended:Jt=>{B=Jt,Mr(),Ei(!1),Je?.(),N()}}):null}catch{z=null}z?(z.start(),Ei(!1)):D=!0,It&&(h("syncing"),await ao()),ge(),h("checking_setup"),ke.markSynced({signal:w.signal}).catch(()=>{});let at=await P.load(w.signal);ge();let Tr=at&&at.version!==1&&(at.phase==="attempted"||at.phase==="confirmed")?"reconcile-original":at===null&&p==="approved-new-collection"?"approved-new":"inspect",_c=e.people===!0&&!f,BA=_c?{people:!0}:f?{privateDevice:!0}:{},v2={owner:null},FA=(Jt,Mn,yn,ls)=>LC(Mn,{scope:m,generation:qr},{journal:P,resourceSetup:r.attachDataFacade(Jt),signal:w.signal,isCurrent:le,ledger:()=>le()?nt:null,setupTurn:v2,assess(po){ge(),O=po,N()},foreground:yn,onProtocolFailure:ls,..._c?{peopleAuthority:r.peopleAuthority()}:{}});x=r.openTimersPort({scope:m,generation:qr,signal:w.signal}),ge(),I=new MessageChannel,R=new MessageChannel,S=FA(I.port1,R.port1,Yt,F),ge();let VA=Jt=>{if(I&&R&&Jt.dataPort===I.port2){let yn={data:I,command:R,control:S,timers:x};I=null,R=null,S=null,x=null;try{r.detachDataFacade(yn.data.port1)}catch{}yn.timers?.close().catch(()=>{}),yn.control?.close().catch(()=>{});for(let ls of[yn.data.port1,yn.command.port1])try{ls.close()}catch{}return}let Mn=ae.get(Jt.dataPort);if(Mn){ae.delete(Jt.dataPort);try{r.detachDataFacade(Mn.data.port1)}catch{}Mn.timers?.close().catch(()=>{}),Mn.control.close().catch(()=>{});for(let yn of[Mn.data.port1,Mn.command.port1])try{yn.close()}catch{}}};En=()=>{if(!le()||B!==null)return null;let Jt=new MessageChannel,Mn=new MessageChannel,yn=null,ls=null;try{yn=r.openTimersPort({scope:m,generation:qr,signal:w.signal});let po=null;return ls=FA(Jt.port1,Mn.port1,()=>{},()=>{po&&VA(po)}),po=Object.freeze({schema:"mdbn-app-collection/1",scope:m,generation:qr,displayName:u,setupMode:Tr==="reconcile-original"?Tr:"inspect",dataPort:Jt.port2,controlPort:Mn.port2,...BA,...yn?{timerPort:yn.port}:{}}),ae.set(Jt.port2,{data:Jt,command:Mn,control:ls,timers:yn}),po}catch{try{r.detachDataFacade(Jt.port1)}catch{}yn?.close().catch(()=>{}),ls?.close().catch(()=>{});for(let po of[Jt.port1,Jt.port2,Mn.port1,Mn.port2])po.close();return null}},co=VA,e.handoff(Object.freeze({schema:"mdbn-app-collection/1",scope:m,generation:qr,displayName:u,setupMode:Tr,dataPort:I.port2,controlPort:R.port2,...BA,...x?{timerPort:x.port}:{}})),ge(),ai()},b2=Object.freeze({scope:m,generation:qr,isCurrent:le,setForeground:Yt,attach:()=>En?En():null,detach:It=>{co?.(It)}}),w2={get state(){return le()?q?"needs_unlock":O:"setup_required"},get locked(){return le()&&q?Object.freeze({...q}):null},get problem(){return le()?te:null},get health(){return le()?Y:null},get live(){return le()?!D:null},get ended(){return le()?B:null},connection:b2,close:G,subscribe(It){return ge(),ee.add(It),()=>{ee.delete(It)}},...f?{unlock:async It=>{if(ge(),!q||q.unlocking)throw Zi("binding");q={mode:q.mode,unlocking:!0,problem:null},N();try{await r.unlockAccountKey(It,{signal:w.signal,onMode:at=>{q&&le()&&(q={...q,mode:at})}}),ge()}catch(at){if(at instanceof st&&le()&&q){q={mode:q.mode,unlocking:!1,problem:at.reason},N();return}throw await G(),at}try{await vc(),ge()}catch(at){throw await G(),at}q=null,N()}}:{}};return q||await vc(),ge(),Object.freeze(w2)}catch(ke){throw await G(),ke}}}async function by(n,e){if(n.schema!=="mdbn-app-collection/1"||tc.has(n.dataPort)||tc.has(n.controlPort)||n.dataPort===n.controlPort||!["inspect","approved-new","reconcile-original"].includes(n.setupMode)||n.people!==void 0&&n.people!==!0||n.privateDevice!==void 0&&(n.privateDevice!==!0||n.people!==void 0)||e.signal.aborted||n.timerPort&&(tc.has(n.timerPort)||n.timerPort===n.dataPort||n.timerPort===n.controlPort))throw Zi("binding");tc.add(n.dataPort),tc.add(n.controlPort),n.timerPort&&tc.add(n.timerPort);let t=Object.freeze({...n.scope}),i=n.generation,o=n.setupMode,s=n.people===!0,r=n.dataPort,a=n.controlPort,c=e.signal,l=!1,p=null,d=null,u=null,f,h=()=>{if(!l){l=!0,c.removeEventListener("abort",h);for(let m of[()=>f?.close(),()=>d?.close(),()=>p?.close(),()=>u?.close(),()=>r.close(),()=>a.close()])try{m()}catch{}}};c.addEventListener("abort",h,{once:!0});try{if(u=jm(r,{...t,isCurrent:()=>!l&&!c.aborted}),d=Tm(a,{scope:t,generation:i},{signal:c,isCurrent:()=>!l,onClose:h,...s?{people:!0}:{}}),n.timerPort&&(f=new ja(zO(n.timerPort,{scope:t,generation:i},{signal:c,onClose:()=>{}}),{criteria:e.timerCriteria??[]})),p=await pr.connect({app:e.app,connector:u,reconnect:!1,signal:c,ledger:d.ledger}),l||c.aborted)throw p.close(),Zi("fenced");let m=s?Mm(p,d):void 0;return Object.freeze({client:p,resourceSetup:d.resourceSetup,...m?{people:m}:{},journal:d.journal,scope:t,setupMode:o,close:h,...f?{timers:f}:{},assess:(b,w)=>d.assess(b,w),setForeground:(b,w)=>d.setForeground(b,w)})}catch(m){throw h(),m}}var qU,TU,LU,jU,UU,zd,Zi,tc,tA=C(()=>{"use strict";Qn();yd();ry();ka();uw();B_();xC();sy();Hs();Ho();Um();$d();_d();qU=1e4,TU=12e4,LU=2e3,jU=15e3,UU=3,zd=class extends Error{constructor(t){super(`app web collection: ${t}`);this.reason=t;this.name="AppWebCollectionError"}reason},Zi=n=>new zd(n);tc=new WeakSet});function NU(n,e){return Object.freeze({collection:n,isCurrent:e,request:()=>Promise.reject(A("upgrade_required","People is not available for a Private collection opened by this app","people_unsupported"))})}var on,wy,DU,nc,nA=C(()=>{"use strict";tA();ne();fp();on=class extends Error{constructor(t){super("SDK application connection unavailable");this.code=t;this.name="ApplicationUiConnectionError"}code},wy=new WeakSet;DU=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,nc=class{app;signal;current=null;pending=null;opening=null;retiring=null;closing=null;epoch=0;timerCriteria;constructor(e,t,i=[]){this.app=Object.freeze({...e}),this.signal=t,this.timerCriteria=Object.freeze([...i]),t.addEventListener("abort",this.abort,{once:!0})}abort=()=>{this.close().catch(()=>{})};connection(e){let t=this.current?.public;return t?.id===e&&t.isCurrent()?t:null}owned(){return this.current?.public.isCurrent()?this.current.ui:null}adopt(e,t){let i=t.caller,o=t.isCurrent,s=[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]];if(s.some(y=>!(y instanceof MessagePort))||new Set(s).size!==s.length||s.some(y=>wy.has(y))){for(let y of new Set(s))y instanceof MessagePort&&!wy.has(y)&&(wy.add(y),y.close());return Promise.reject(new on("application_connection_binding"))}for(let y of s)wy.add(y);let r=y=>{for(let v of s)v.close();return Promise.reject(new on(y))};if(this.pending||this.current||this.retiring)return r("application_connection_busy");if(this.closing||this.signal.aborted||i.aborted||!o())return r("application_connection_fenced");let a=Object.freeze({...e.scope}),c=e.generation,l=e.displayName;if(e.schema!=="mdbn-app-collection/1"||Object.keys(a).sort().join()!=="account,collection,installation"||Object.values(a).some(y=>!DU.test(y)||y==="00000000-0000-0000-0000-000000000000")||typeof c!="string"||!c||c.length>256||typeof l!="string"||!l.trim()||new TextEncoder().encode(l).length>4096||!["inspect","approved-new","reconcile-original"].includes(e.setupMode))return r("application_connection_binding");let p=e.privateDevice===!0;if(e.privateDevice!==void 0&&(!p||e.people!==void 0))return r("application_connection_binding");if(e.people!==!0&&!p)return r("application_connection_people_unavailable");let d=Object.freeze({...e,scope:a,generation:c,displayName:l}),u=new AbortController,f=this.epoch;this.opening=u;let h=()=>u.abort();i.addEventListener("abort",h,{once:!0});let m=AbortSignal.any([this.signal,u.signal]),b=()=>!m.aborted&&!this.closing&&!this.retiring&&this.epoch===f&&o(),w=null,g=Promise.resolve().then(async()=>{if(!b()||i.aborted)throw new on("application_connection_fenced");if(w=await by(d,{app:this.app,signal:m,timerCriteria:this.timerCriteria}),!b()||i.aborted)throw new on("application_connection_fenced");if(w.client.collection!==a.collection||w.client.link!=="open")throw new on("application_connection_binding");if(p?w.people!==void 0:!w.people)throw new on(p?"application_connection_binding":"application_connection_people_unavailable");let y=w,v=w.people??new mr(y.client,NU(a.collection,()=>b()&&this.current?.ui===y&&y.client.link==="open")),_=Object.freeze({id:a.collection,scope:a,generation:c,displayName:l,records:y.client,files:y.client.files,people:v,...y.timers?{timers:y.timers}:{},isCurrent:()=>b()&&this.current?.ui===y&&y.client.link==="open"});return this.current={public:_,ui:y,lifetime:u},_}).catch(y=>{u.abort(),w?.close();for(let v of s)v.close();throw y}).finally(()=>{i.removeEventListener("abort",h),this.pending===g&&(this.pending=null,this.opening=null)});return this.pending=g,g}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.current,t=this.pending;this.opening?.abort(),e?.lifetime.abort();let i=Promise.resolve().then(async()=>{await t?.catch(()=>{}),e?.ui.close(),this.current===e&&(this.current=null)});return this.retiring=i,i.then(()=>{this.retiring===i&&(this.retiring=null)},()=>{}),i}close(){return this.closing?this.closing:(this.closing=Promise.resolve().then(()=>this.retire()),this.signal.removeEventListener("abort",this.abort),++this.epoch,this.opening?.abort(),this.current?.lifetime.abort(),this.closing)}}});function KU(n){if(n.capabilityContractVersion!==2)throw A("upgrade_required","unsupported readiness capability projection","readiness_capability_version");if(!Array.isArray(n.contracts)||n.contracts.length>128||!Array.isArray(n.requiredNativeCapabilities)||n.requiredNativeCapabilities.length>64)throw Bt("unsupported");let e=n.contracts.map(i=>{if(!i||!rc(i.id,256)||!rc(i.version,128)||!VU.test(i.digest))throw Bt("unsupported");return Object.freeze({id:i.id,version:i.version,digest:i.digest})}),t=n.requiredNativeCapabilities.map(i=>{if(!rc(i,128))throw Bt("unsupported");return i});if(new Set(e.map(i=>JSON.stringify([i.id,i.version]))).size!==e.length||new Set(t).size!==t.length||n.typeIssues!==void 0&&n.typeIssues!=="block"&&n.typeIssues!=="degrade")throw Bt("unsupported");return Object.freeze({capabilityContractVersion:2,typeIssues:n.typeIssues??"block",contracts:Object.freeze(e),requiredNativeCapabilities:Object.freeze(t)})}function WU(n){let e=n instanceof Map?n.get("path"):null;return typeof e=="string"&&e?e:null}function ic(n,e){return Object.freeze({reason:n,...n==="fenced"&&e?{detail:e}:{}})}function iA(n){if(!Q(n))return;let e=n.details instanceof Map?n.details.get("condition"):void 0,t=$U.find(i=>i===e);if(t)return t;if(n.code==="unauthenticated")return"read_unauthenticated";if(n.code==="cancelled")return"read_cancelled"}function rA(n){try{if(Q(n)){if(n.code==="unauthenticated"||n.code==="cancelled")return"fenced";if(n.code==="too_large")return"budget";if(n.code==="upgrade_required"||n.code==="forbidden")return"unsupported";if(n.reason==="readiness_changed"||n.reason==="cursor_stale"||n.reason==="cursor_expired")return"changed";if(n.reason==="readiness_busy")return"busy";if(n.reason==="readiness_catalog_response")return"catalog_response"}}catch{}return"unavailable"}function sA(n){let e=n.status;return JSON.stringify([e.mode,e.confirmedThrough,e.headKnown,e.pending,e.holds,e.unresolved,e.connection,e.installing,e.resyncing,e.incidents.map(t=>t.kind),e.confirmedHead])}function aA(n){return n.mode==="local_only"}function oc(n){return JSON.stringify(n,(e,t)=>typeof t=="bigint"?`${t}n`:t instanceof Map?[...t.entries()]:t instanceof Uint8Array?[...t]:t)}function xR(n,e,t){return new oA(n,e,t)}var $U,zU,BU,FU,PR,VU,rc,Bt,oA,lA=C(()=>{"use strict";ne();$U=["binding_invalid","binding_aborted","binding_not_current","readiness_closed","read_aborted","session_closed","session_replaced","session_collection_mismatch","read_unauthenticated","read_cancelled"],zU=4096,BU=2*1024*1024,FU=64,PR=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,VU=/^sha256:[0-9a-f]{64}$/,rc=(n,e=4096)=>typeof n=="string"&&!!n.trim()&&new TextEncoder().encode(n).length<=e,Bt=(n,e)=>A(n==="fenced"?"unauthenticated":n==="budget"?"too_large":"unavailable","collection readiness unavailable",{reason:`readiness_${n}`,...e?{details:new Map([["condition",e]])}:{}});oA=class{constructor(e,t,i){this.client=e;if(this.declared=KU(t),!PR.test(i.collection)||i.collection==="00000000-0000-0000-0000-000000000000"||!PR.test(i.generation))throw Bt("fenced","binding_invalid");this.binding=Object.freeze({collection:i.collection,generation:i.generation,signal:i.signal,isCurrent:i.isCurrent.bind(i)}),this.readSignal=AbortSignal.any([this.binding.signal,this.lifetime.signal]),this.check(),this.binding.signal.addEventListener("abort",this.abort,{once:!0})}client;declared;binding;lifetime=new AbortController;readSignal;listeners=new Set;snapshotValue=Object.freeze({checking:!1,assessment:null,problem:null});watch=null;stops=[];pending=null;epoch=0;dirty=!1;scheduled=!1;retries=0;failures=0;closed=!1;lastStatus=null;assessedSession;assessedEpoch;assessedCatalog=null;probing=null;probeAgain=!1;abort=()=>{this.close()};getSnapshot(){if(this.snapshotValue.assessment)try{this.check(void 0,this.assessedSession,this.assessedEpoch)}catch(e){let t=rA(e);t==="fenced"&&!this.closed&&!this.binding.signal.aborted&&this.binding.isCurrent()===!0&&(t="changed"),this.retryLater(t)||this.publish({checking:!1,assessment:null,problem:ic(t,iA(e))})}return this.snapshotValue}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e){this.snapshotValue=Object.freeze(e);for(let t of this.listeners)try{t()}catch{}}check(e,t,i){e?.throwIfAborted();let o=this.fenceDetail(e);if(o)throw Bt("fenced",o);if(t?.closed)throw Bt("fenced","session_closed");if(t&&t!==this.client.currentSession())throw Bt("fenced","session_replaced");if(t&&t.hello.collection!==this.binding.collection)throw Bt("fenced","session_collection_mismatch");if(i!==void 0&&(i!==this.epoch||this.watch?.state!=="active"))throw Bt("changed")}fenceDetail(e){if(this.binding.signal.aborted)return"binding_aborted";if(this.closed)return"readiness_closed";if(e?.aborted)return"read_aborted";if(this.binding.isCurrent()!==!0)return"binding_not_current"}invalidate=()=>{if(this.closed)return;if(this.pending||!this.snapshotValue.assessment||this.assessedCatalog===null||this.client.link!=="open"){this.recheck();return}if(this.probing){this.probeAgain=!0;return}let e=this.snapshotValue.assessment,t=this.assessedCatalog,i=this.client.describe(this.readSignal).then(o=>{this.closed||this.snapshotValue.assessment!==e||oc(o)!==t&&this.recheck()},()=>{this.closed||this.recheck()});this.probing=i.finally(()=>{this.probing=null,this.probeAgain&&!this.closed&&(this.probeAgain=!1,this.invalidate())})};recheck(){this.closed||(this.epoch++,this.dirty=!0,this.publish({checking:!0,assessment:null,problem:null}),this.schedule())}schedule(){if(this.closed||this.pending||this.scheduled||!this.dirty||this.watch?.state!=="active"||this.client.link!=="open")return;this.scheduled=!0;let e=()=>{this.scheduled=!1,!this.closed&&this.dirty&&!this.pending&&this.watch?.state==="active"&&this.client.link==="open"&&this.refresh(void 0,!0).catch(()=>{})};this.retries?setTimeout(e,Math.min(5e3,100*2**this.retries,this.retrySince===null?5e3:Math.max(0,15e3-(Date.now()-this.retrySince)))):queueMicrotask(e)}retrySince=null;retryLater(e,t=!1){if(this.closed)return!1;if((e==="busy"||e==="changed")&&(this.retrySince??=Date.now(),Date.now()-this.retrySince>=15e3))return this.dirty=!1,this.publish({checking:!1,assessment:null,problem:ic("busy_timeout")}),!0;if(e==="unavailable"&&t&&this.failures<5)this.failures++;else if(e!=="changed"&&e!=="busy")return!1;return this.dirty=!0,this.retries=Math.min(this.retries+1,6),this.publish({checking:!0,assessment:null,problem:null}),this.schedule(),!0}attach(){this.watch||(this.watch=this.client.watchChanges(void 0,this.invalidate),this.stops.push(this.watch.subscribe(this.invalidate),this.client.onLink(this.invalidate),this.client.onStatus(e=>{let t=sA(this.client);(t!==this.lastStatus||aA(e))&&(this.lastStatus=t,this.invalidate())})))}start(e){return this.refresh(e)}refresh(e,t=!1){try{if(this.check(e),this.pending)throw Bt("busy")}catch(a){return Promise.reject(a)}t||(this.retrySince=null);let i=AbortSignal.any([this.binding.signal,this.lifetime.signal,...e?[e]:[]]),o,s,r=Promise.resolve().then(async()=>{this.check(i),this.attach();let a=await this.client.readyForRead(i);this.check(i,a),await this.watch.ready,this.check(i,a);let c=this.epoch;this.dirty=!1,this.check(i,a,c);let l=await this.inventory(i,a,c),p=await this.client.describe(this.readSignal);this.check(i,a,c);let d=this.evaluate(p,a),u=oc(p);for(let b of d.paths){let w=l.find(y=>y.path===b);if(!w)throw Bt("changed");let g=await this.client.resources.get(b,this.readSignal);if(this.check(i,a,c),g.path!==w.path||g.revision!==w.revision||g.size!==w.size||g.state!=="confirmed")throw Bt("changed")}let f=await this.inventory(i,a,c);if(JSON.stringify(l)!==JSON.stringify(f))throw Bt("changed");this.check(i,a,c);let h=Object.freeze({collection:this.binding.collection,generation:this.binding.generation,resources:Object.freeze(f)}),m=Object.freeze({status:d.status,problem:d.reason?ic(d.reason):null,witness:h,...d.unavailable.length?{unavailableTypes:Object.freeze(d.unavailable)}:{}});return o=a,s=c,this.retries=0,this.failures=0,this.retrySince=null,this.assessedSession=a,this.assessedEpoch=c,this.assessedCatalog=u,this.publish({checking:!1,assessment:m,problem:m.problem}),this.check(i,a,c),m}).catch(a=>{let c=i.aborted||this.closed?"fenced":rA(a);throw this.retryLater(c,t)||this.publish({checking:!1,assessment:null,problem:ic(c,this.fenceDetail(i)??iA(a))}),a});return this.pending=r,this.publish({checking:!0,assessment:null,problem:null}),r.finally(()=>{this.pending===r&&(this.pending=null),this.schedule()}).catch(()=>{}),r.then(a=>{try{if(this.check(i,o,s),this.snapshotValue.assessment!==a)throw Bt("changed");return a}catch(c){let l=i.aborted?"fenced":rA(c);throw this.snapshotValue.assessment===a&&!this.retryLater(l)&&this.publish({checking:!1,assessment:null,problem:ic(l,this.fenceDetail(i)??iA(c))}),c}})}async inventory(e,t,i){let o=[],s=new Set,r,a="",c=0;for(let l=0;l<FU;l++){this.check(e,t,i);let p=await this.client.resources.list({text:!1,limit:128,...r?{cursor:r}:{},signal:this.readSignal});this.check(e,t,i);for(let d of p.resources){if(!rc(d.path)||d.path<=a||!rc(d.revision,128)||!Number.isSafeInteger(d.size)||d.size<0||d.state!=="confirmed")throw Bt("catalog_response");a=d.path;let u=Object.freeze({path:d.path,revision:d.revision,size:d.size,state:d.state});if(c+=new TextEncoder().encode(JSON.stringify(u)).length,o.length>=zU||c>BU)throw Bt("budget");o.push(u)}if(p.complete===!0&&p.cursor===void 0)return o;if(p.complete!==!1||!rc(p.cursor)||s.has(p.cursor))throw Bt("catalog_response");s.add(p.cursor),r=p.cursor}throw Bt("budget")}evaluate(e,t){let i=e.issues.filter(d=>d.severity==="error"),o=new Set;for(let d of i){let u=WU(d.details);if(!u)return{status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};o.add(u)}let s={status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};if(this.declared.requiredNativeCapabilities.some(d=>!t.hello.grant.capabilities.includes(d)))return{status:"incompatible",reason:"capability_missing",paths:[],unavailable:[]};let r=new Set,a=new Set,c=new Set;for(let d of e.contracts){let u=JSON.stringify([d.id,d.version]);if(a.has(u))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};a.add(u)}for(let d of e.types){if(c.has(d.name))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};c.add(d.name)}let l,p=[];for(let d of this.declared.contracts){let u=e.contracts.find(f=>f.id===d.id&&f.version===d.version);if(!u){l??="contract_missing";continue}if(u.digest!==d.digest)return{status:"incompatible",reason:"contract_mismatch",paths:[],unavailable:[]};if(r.add(u.path),o.has(u.path))return s;if(!u.implementedBy.length){l??="implementation_missing";continue}for(let f of u.implementedBy){let h=e.types.find(m=>m.name===f);if(!h||!h.implements.some(m=>m.contract===d.id&&m.version===d.version))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};if(r.add(h.path),o.has(h.path)){if(this.declared.typeIssues!=="degrade")return s;p.some(m=>m.name===h.name)||p.push(Object.freeze({name:h.name,path:h.path,contract:Object.freeze({id:d.id,version:d.version}),problem:Object.freeze({code:"readiness_type_invalid"})}))}}}return{status:l?"setup_required":"ready",...l?{reason:l}:{},paths:[...r].sort(),unavailable:p}}async close(){if(!this.closed){this.closed=!0,this.dirty=!1,this.lifetime.abort(),this.binding.signal.removeEventListener("abort",this.abort);for(let e of this.stops.splice(0))e();this.watch?.(),this.watch=null,this.publish({checking:!1,assessment:null,problem:ic("fenced",this.fenceDetail())})}await this.pending?.catch(()=>{})}}});function GU(n){let e=o=>o?Object.freeze({code:`readiness_${o.reason}`,...o.detail?{detail:o.detail}:{}}):null,t=e(n.problem),i=n.assessment?.unavailableTypes;return Object.freeze({checking:n.checking,assessment:n.assessment?Object.freeze({status:n.assessment.status,problem:e(n.assessment.problem),...i?.length?{unavailableTypes:i}:{}}):null,problem:t})}var IR,HU,Bd,Er,vy,CR=C(()=>{"use strict";vp();ne();lA();IR=["configuration","files"],HU=["people","notifications"],Bd=class extends Error{constructor(t,i){super("SDK application readiness unavailable");this.code=t;this.detail=i;this.name="ApplicationReadinessError"}code;detail},Er=(n,e=!1,t)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n,...t?{detail:t}:{}}):null});vy=class{connection;signal;observed;native;sources;listeners=new Set;stops=[];pending=null;closing=null;checking=!1;closed=!1;advisory=Promise.resolve();lastReady=null;constructor(e){this.connection=e.connection,this.signal=e.signal,this.observed=e.isCurrent,this.sources=Object.freeze({configuration:e.configuration,files:e.files,people:e.people,notifications:e.notifications}),this.native=e.nativeRequirements?xR(this.connection.records,e.nativeRequirements,{collection:this.connection.id,generation:this.connection.generation,signal:this.signal,isCurrent:()=>this.current()}):null,this.native&&this.stops.push(this.native.subscribe(this.changed));for(let t of Object.values(this.sources))t&&this.stops.push(t.subscribe(this.changed));this.signal.addEventListener("abort",this.abort,{once:!0})}fenceDetail(){try{return this.signal.aborted?"scope_aborted":this.closed?"scope_closed":this.observed()!==!0?"observer_not_current":this.connection.isCurrent()?this.connection.records.collection!==this.connection.id?"collection_mismatch":null:"connection_not_current"}catch{return"currentness_check_failed"}}current(){return this.fenceDetail()===null}connectionProblem(){if(!this.closed&&!this.signal.aborted&&this.connection.records.collection===this.connection.id&&this.connection.records.link==="closed"){let e=this.connection.records.linkProblem;if(Q(e)){let t=Rs(e);return t&&t.key!=="unknown"?t.key:e.code}}return"readiness_fenced"}changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getSnapshot(){let e=this.current(),t=Er(e?"readiness_unsupported":"readiness_fenced"),i=t;if(e&&this.native){let u=this.native.getSnapshot(),f=u.assessment?.witness,h=f&&f.collection!==this.connection.id?"native_witness_collection_mismatch":f&&f.generation!==this.connection.generation?"native_witness_generation_mismatch":null;i=h?Er("readiness_fenced",!1,h):GU(u)}let o=u=>{if(!e)return t;let f=this.sources[u];if(!f)return Er(`${u}_unsupported`);try{let h=f.getSnapshot();return Object.freeze({checking:h.checking,assessment:h.assessment?Object.freeze({...h.assessment,problem:h.assessment.problem?Object.freeze({...h.assessment.problem}):null}):null,problem:h.problem?Object.freeze({...h.problem}):null})}catch{return Er(`${u}_unavailable`)}},s=Object.freeze({capabilities:i,contracts:i,configuration:o("configuration"),files:o("files"),people:o("people"),notifications:o("notifications")}),r=[s.capabilities,s.contracts,s.configuration,s.files],a=e&&(this.checking||r.some(u=>u.checking)),c=null,l=null;if(!e)l=Object.freeze({code:"readiness_fenced"});else if(!a){let u=["capabilities","contracts",...IR].find(f=>s[f].problem);if(l=u?s[u].problem:null,u&&l?.code==="readiness_fenced"&&!l.detail&&(l=Object.freeze({...l,detail:`${u}_facet`})),r.every(f=>f.assessment!==null)){let f=r.find(w=>w.assessment?.status==="incompatible"),h=r.find(w=>w.assessment?.status==="setup_required"),m=f??h,b=i.assessment?.unavailableTypes;c=Object.freeze({status:f?"incompatible":h?"setup_required":"ready",problem:m?.assessment?.problem??null,...b?.length?{unavailableTypes:b}:{}})}}let p=this.fenceDetail();if(p)return this.lastReady=null,Object.freeze({checking:!1,assessment:null,problem:Object.freeze({code:this.connectionProblem(),detail:p}),facets:Object.freeze({capabilities:Er("readiness_fenced",!1,p),contracts:Er("readiness_fenced",!1,p),configuration:Er("readiness_fenced",!1,p),files:Er("readiness_fenced",!1,p),people:Er("readiness_fenced",!1,p),notifications:Er("readiness_fenced",!1,p)})});let d=!l||/_(changed|busy)$/.test(l.code);if(l===null&&c!==null&&!a)this.lastReady=Object.freeze({checking:a,assessment:c,problem:l,facets:s});else{if(this.lastReady&&d&&(a||c===null)&&(this.lastReady.assessment?.status==="ready"||!this.checking))return Object.freeze({...this.lastReady,facets:s});this.lastReady=null}return Object.freeze({checking:a,assessment:c,problem:l,facets:s})}refresh(e={}){let t=e.signal,i=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(i)return Promise.reject(new Bd("application_readiness_fenced",i));if(this.pending)return Promise.reject(new Bd("application_readiness_busy"));this.checking=!0;let o=Promise.resolve().then(async()=>{if(!this.current())return this.getSnapshot();await this.advisory,this.native&&await this.native.start();for(let s of IR){let r=this.sources[s];if(!this.current())break;r&&await r.refresh()}return await this.reassessAfterSetup(),this.getSnapshot()}).finally(()=>{if(this.pending!==o)return;this.pending=null,this.checking=!1;let s=(async()=>{for(let r of HU){let a=this.sources[r];if(!this.current())break;a&&await a.refresh().catch(()=>{})}})();this.advisory=s,this.changed()}).then(()=>this.getSnapshot());return this.pending=o,this.changed(),o.then(s=>{let r=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(r)throw new Bd("application_readiness_fenced",r);return s})}async reassessAfterSetup(){if(!this.native||!this.current())return;let e=this.native.getSnapshot(),t=null;try{t=this.sources.configuration?.getSnapshot()??null}catch{}e.checking||e.assessment?.status!=="setup_required"||t?.checking||t?.assessment?.status!=="ready"||await this.native.start().catch(i=>{if(!(Q(i)&&i.reason==="readiness_busy"))throw i})}close(){return this.closing?this.closing:(this.closed=!0,this.checking=!1,this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{for(let e of this.stops.splice(0))e();for(let e of Object.values(this.sources))await e?.close();await this.native?.close(),await this.pending?.catch(()=>{}),await this.advisory,this.listeners.clear()}),this.changed(),this.closing)}}});function YU(n){let e=new Set,t=[],i=[];for(let o of n.review?.packs??[]){if(o.status!=="conflict"&&o.status!=="downgrade")continue;let s=o.installedVersion?Es(o.installedVersion,o.version):"unknown";s==="installed_newer"&&!o.resources.some(r=>r.action==="conflict")?(e.add(o.id),i.push(Object.freeze({id:o.id,version:o.version,installedVersion:o.installedVersion}))):s==="installed_newer_major"&&t.push(o.id)}return Object.freeze({kept:Object.freeze(i),compatible:e,major:Object.freeze(t)})}function JU(n,e){let t=n,i=t.provisions?.type_packs;return!e.size||!Array.isArray(i)?n:{...t,provisions:{...t.provisions,type_packs:i.filter(o=>!(typeof o?.manifest?.id=="string"&&e.has(o.manifest.id)))}}}function RR(n){return new Proxy({},{get(e,t){let i=Reflect.get(n,t,n);return typeof i!="function"?i:async(...o)=>{let s=o.find(a=>a instanceof AbortSignal),r=Date.now()+XU;for(let a=25;;a=Math.min(a*2,500))try{return await i.apply(n,o)}catch(c){if(!(c instanceof Ri&&c.reason==="busy")||!s)throw c;if(Date.now()+a>r)throw He("busy_timeout");await ZU(a,s)}}}})}function MR(n,e){let t=Object.freeze({...n,scope:Object.freeze({...n.scope}),journal:RR(n.journal)});if(e&&(e=RR(e)),Object.values(t.scope).some(N=>!OR.test(N)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(N))||!OR.test(t.generation)||!["inspect","approved-new","reconcile-original"].includes(t.setupMode))throw He("binding");let i=JSON.stringify([t.scope.account,t.scope.installation,t.scope.collection]),o=new AbortController,s=AbortSignal.any([t.signal,o.signal]),r=new Set,a=ro(),c=null,l=null,p=!1,d,u=null,f=!1,h=!1,m=0,b=!1,w=!1,g=null,y=null,v=()=>{try{return JSON.stringify([t.client.link,sA(t.client)])}catch{return null}},_=[],k=new WeakMap;function S(N,G){if(N?.throwIfAborted(),p||s.aborted||t.isCurrent()!==!0||JSON.stringify([t.journal.scope.account,t.journal.scope.installation,t.journal.scope.collection])!==i||G&&(G.closed||t.client.currentSession()!==G||G.hello.collection!==t.scope.collection))throw He("fenced")}function x(N){a=Object.freeze(N);for(let G of r)try{G()}catch{}}function P(){if(p)return;let N=v();if(N!==null&&N===y)return;if(y=N,c||!a.assessment||u===null||t.client.link!=="open"){I();return}if(f){h=!0;return}f=!0;let G=a,F=u;t.client.describe(s).then(Y=>{!p&&a===G&&oc(Y)!==F&&I()},()=>{p||I()}).finally(()=>{f=!1,h&&!p&&(h=!1,y=null,P())})}function I(){p||(b=!0,c||x(ro(null,!0)),R())}function R(){p||c||w||!b||(w=!0,setTimeout(()=>{if(w=!1,p||c||!b)return;let N=ee(!1,{},void 0,!0);g=c,N.catch(()=>{})},m?Math.min(5e3,250*2**m):50))}function O(){if(a.assessment)try{S(void 0,d)}catch{p||s.aborted||t.isCurrent()!==!0?x(ro("configuration_fenced")):(b=!0,y=null,x(ro(null,!0)),R())}return a}async function q(N,G,F){let Y=await t.client.awaitReceipt(N.mutationId,12e4,s);if(S(G,F),Y.mutation!==N.mutationId||Y.state!=="confirmed"||Y.status!=="applied"||(Y.conflicts?.length??0)!==0||Y.published==="publishing"||Y.published==="not_published")throw He("recovery_required");return Y}async function j(N,G,F){let Y,we=0,Pe=0,ve=new Set,lt=new Set,De=new TextEncoder;for(let Gt=0;Gt<64;Gt++){S(G,F);let ct=await t.client.resources.list({text:!1,limit:128,...Y===void 0?{}:{cursor:Y},signal:s});if(S(G,F),ct.resources.length>128)throw He("recovery_required");for(let Je of ct.resources){let nr=De.encode(Je.path).length;if(we++,Pe+=nr+128,!Je.path||nr>4096||lt.has(Je.path)||Je.state!=="confirmed"||!cA.test(Je.revision)||!Number.isSafeInteger(Je.size)||Je.size<0||we>4096||Pe>2*1024*1024||N.has(Je.path))throw He("recovery_required");lt.add(Je.path)}if(ct.complete===!0&&ct.cursor===void 0)return;if(ct.complete!==!1||!ct.resources.length||typeof ct.cursor!="string"||!ct.cursor||De.encode(ct.cursor).length>4096||ve.has(ct.cursor))throw He("recovery_required");ve.add(ct.cursor),Y=ct.cursor}throw He("recovery_required")}async function z(N,G,F){let Y=N.version===2?N.plan.readback:N.plan.resourceReadback,we=new Set(Y.filter(Pe=>Pe.doc===null).map(Pe=>Pe.path));we.size&&await j(we,G,F);for(let Pe of Y){if(Pe.doc===null)continue;let ve=await t.client.resources.get(Pe.path,s);if(S(G,F),ve.path!==Pe.path||ve.text!==Pe.doc||ve.state!=="confirmed")throw He("recovery_required")}if(N.version!==2)for(let Pe of N.plan.sources){let ve=await t.client.get(Pe.id,void 0,s);if(S(G,F),ve.id!==Pe.id||ve.path!==Pe.path||ve.state.state!=="confirmed"||ve.state.hold||ve.state.unresolved)throw He("recovery_required")}}async function D(N,G,F){return await q(N,G,F),N.phase==="attempted"&&(N=N.version===2?await t.journal.recordConfirmed(N.mutationId,s):await t.journal.recordResourceConfirmed(N.mutationId,s),S(G,F)),N.phase==="verified"||(await z(N,G,F),N.phase==="confirmed"&&(N=N.version===2?await t.journal.recordVerified(N.mutationId,s):await t.journal.recordResourceVerified(N.mutationId,s),S(G,F))),N}async function J(N,G){let F=await t.journal.load(s);if(S(N,G),!F)return{journaled:!1,previous:null};if(F=Ht(F,t.scope),F.version===1||F.phase==="prepared")throw He("recovery_required");if(F.phase==="attempted"&&(F.version===3||F.version===4)&&t.journal.recordResourceRejected){let Y=await t.client.awaitReceipt(F.mutationId,12e4,s);S(N,G),Y.mutation===F.mutationId&&Y.state==="rejected"&&(F=Ht(await t.journal.recordResourceRejected(F.mutationId,s),t.scope),S(N,G))}if(F.version===1)throw He("recovery_required");return F.phase==="rejected"?{journaled:!0,previous:F.version===4?F.previous:null}:{journaled:!0,previous:await D(F,N,G)}}async function X(N,G){let F=t.compiledManifest.manifest,Y=await pA(e.assess(F,s,N),N),we=Y;Y.status==="conflict"&&!Y.review&&(we=await e.assess(F,s,Oi({})));let Pe=YU(we);if(!Pe.compatible.size)return{assessed:Y,manifest:F,newer:Pe};let ve=JU(F,Pe.compatible),lt=G?N??Oi({}):N;return Y=await pA(e.assess(ve,s,lt),lt),{assessed:Y,manifest:ve,newer:Pe}}async function B(N,G,F={}){S(G);let Y=await t.client.readyForRead(s);S(G,Y),_.length||(y=v(),_.push(t.client.onStatus(Mr=>{aA(Mr)&&(y=null),P()}),t.client.onLink(P))),b=!1;let{journaled:we,previous:Pe}=await J(G,Y);if(!e)throw He("unsupported");let ve=null;try{ve=oc(await t.client.describe(s))}catch{}S(G,Y);let lt=await X(F.decisions,!1),De=lt.assessed,Gt=lt.manifest;if(S(G,Y),!cA.test(De.assessmentDigest)||!["current","provision","conflict"].includes(De.status))throw He("response");if(F.expected!==void 0&&De.assessmentDigest!==F.expected)throw dA();let ct=!we&&t.setupMode==="approved-new";if(De.status==="provision"&&(N||ct)){if(t.setupMode==="reconcile-original")throw He("recovery_required");if(!(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack"))||!Y.hello.grant.capabilities.includes("definitions.manage"))throw He("not_authorized");let Mr=F.records??[];if(Mr.length&&!Y.hello.grant.capabilities.includes("records.create"))throw He("not_authorized");let so=$t(await pA(e.apply(Gt,De.assessmentDigest,s,F.decisions),F.decisions));if(S(G,Y),so.assessmentDigest!==De.assessmentDigest)throw He("response");if(so.sources.length)throw He("unsupported_source_provision");let Ei=Mr.length?$t({...so,sources:Mr.map(jt=>({id:crypto.randomUUID(),path:jt.path,document:jt.document}))}):so,Yt;if(Pe){if(!t.journal.prepareResourceRound)throw He("recovery_required");Yt=await t.journal.prepareResourceRound(Ei,Pe.mutationId,s)}else Yt=await t.journal.prepareResources(Ei,s);if(S(G,Y),Yt=Ht(Yt,t.scope),Yt.version!==3&&Yt.version!==4||Yt.phase!=="prepared"||JSON.stringify(Yt.plan)!==JSON.stringify(Ei))throw He("recovery_required");let ao=Ht(await t.journal.recordResourceAttempt(Yt.mutationId,s),t.scope);if(S(G,Y),ao.version!==3&&ao.version!==4||ao.mutationId!==Yt.mutationId||ao.phase!=="attempted"||JSON.stringify(ao.plan)!==JSON.stringify(Ei))throw He("recovery_required");let ke=[...Ei.resourceOps,...Ei.sources.map(jt=>({kind:"create",id:jt.id,path:jt.path,document:jt.document}))],Me=await t.client.submit(ke,{mutationId:Yt.mutationId,wait:"confirmed",signal:s});if(S(G,Y),Me.length!==1||Me[0].mutationId!==Yt.mutationId)throw He("recovery_required");let nt;try{nt=await Me[0].confirmed}catch(jt){throw S(G,Y),Me[0].receipt.state!=="rejected"||!t.journal.recordResourceRejected?jt:(await t.journal.recordResourceRejected(Yt.mutationId,s),S(G,Y),dA(Yt.mutationId,jt))}if(S(G,Y),nt.state!=="confirmed"||nt.status!=="applied"||(nt.conflicts?.length??0)!==0)throw He("recovery_required");await D(ao,G,Y),b=!1,y=v();try{ve=oc(await t.client.describe(s))}catch{ve=null}if(De=await e.assess(Gt,s),S(G,Y),De.status!=="current"||!cA.test(De.assessmentDigest))throw He("recovery_required")}let Je=De.status==="conflict"?lt.newer.major.length?"installed_newer":"configuration_conflict":null,nr=Je?Object.freeze({code:Je}):null,la=Object.freeze({status:De.status==="current"?"ready":De.status==="conflict"?"incompatible":"setup_required",problem:nr});d=Y,u=ve;let ai=Object.freeze({checking:!1,assessment:la,problem:nr});return m=0,x(b?ro(null,!0):ai),S(G,Y),ai}function ae(N={}){try{S(N.signal)}catch(Y){return Promise.reject(Y)}let G=c,F=(G?G.then(()=>{},()=>{}):Promise.resolve()).then(()=>te(N));return c=F,F.finally(()=>{c===F&&(c=null)}).catch(()=>{}),F}async function te(N){let G=Jm(N.records),F=Oi(N.adopt===void 0?{}:{adopt:N.adopt}),Y=AbortSignal.any([s,...N.signal?[N.signal]:[]]),we=await t.client.readyForRead(s);if(S(Y,we),await J(Y,we),!e)throw He("unsupported");let{assessed:Pe,newer:ve}=await X(F,!0);if(S(Y,we),!Pe.review)throw He("response");let lt=[];if(Pe.status!=="current")for(let ct of G){let Je=await t.client.find({path:ct.path},void 0,s);S(Y,we),lt.push({path:ct.path,free:Je===null})}let De=we.hello.grant.capabilities,Gt=xd(Pe,{records:lt,canManage:De.includes("definitions.manage")&&(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack")),canCreateRecords:De.includes("records.create"),newer:ve});return k.set(Gt,Object.freeze({decisions:F,records:G.filter(ct=>lt.some(Je=>Je.path===ct.path&&Je.free))})),Gt}function ee(N,G={},F,Y=!1){try{S(G.signal)}catch(ve){return Promise.reject(ve)}if(c&&c===g){let ve=c;return ve.then(()=>{},()=>{}).then(()=>c&&c!==ve?Promise.reject(He("busy")):ee(N,G,F))}if(c)return Promise.reject(He("busy"));let we=AbortSignal.any([s,...G.signal?[G.signal]:[]]),Pe=Promise.resolve().then(()=>B(N,we,F)).catch(ve=>{let lt=s.aborted||we.aborted,De=Q(ve)&&ve.reason==="configuration_busy_timeout";De&&(b=!1);let Gt=!lt&&!De&&(b||ER(ve));throw Gt&&ER(ve)&&(b=!0,m=Math.min(m+1,4)),!lt&&!De&&!b&&Y&&m<5&&!p&&t.isCurrent()===!0&&(m++,b=!0,Gt=!0),x(Gt?ro(null,!0):ro(lt?"configuration_fenced":De?"configuration_busy_timeout":"configuration_unavailable")),ve});return c=Pe,x(ro(null,!0)),Pe.finally(()=>{c===Pe&&(c=null),g===Pe&&(g=null),R()}).catch(()=>{}),Pe.then(ve=>(S(we,d),ve))}let le=()=>{if(!l){p=!0,t.signal.removeEventListener("abort",ge),o.abort();for(let G of _.splice(0))G();x(ro("configuration_fenced"));let N=c;l=Promise.resolve().then(async()=>{await N})}return l},ge=()=>{le().catch(()=>{})};return t.signal.addEventListener("abort",ge,{once:!0}),Object.freeze({getSnapshot:O,subscribe(N){return r.add(N),()=>{r.delete(N)}},assess:N=>ee(!1,N),configure:N=>ee(!0,N),plan:ae,async apply(N,G={}){let F=k.get(N);if(!F)throw new TypeError("setup.apply needs a plan returned by setup.plan");if(N.refusal)throw A(N.refusal.code==="setup_conflict"?"conflict":N.refusal.code==="installed_newer"?"upgrade_required":"forbidden",N.refusal.message,N.refusal.code);if(N.status==="current"){await ee(!1,G,{decisions:F.decisions,expected:N.digest});return}await ee(!0,G,{decisions:F.decisions,expected:N.digest,records:F.records})},close:le})}var OR,cA,He,dA,pA,XU,ZU,ER,ro,qR=C(()=>{"use strict";ne();Hs();lA();Ho();Kf();Xm();OR=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,cA=/^sha256:[0-9a-f]{64}$/,He=n=>A("unavailable","application configuration unavailable",`configuration_${n}`),dA=(n,e)=>new pe(A("conflict","This collection changed since the setup was reviewed. Review it again.","setup_changed").toProblem(),{...n?{mutationId:n}:{},...e===void 0?{}:{cause:e}}),pA=async(n,e)=>{try{return await n}catch(t){throw e?.adopt&&Object.keys(e.adopt).length&&Q(t,"unavailable")&&t.reason==="resource_setup_unavailable"?dA(void 0,t):t}};XU=15e3,ZU=(n,e)=>new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})});ER=n=>Q(n)&&n.reason==="configuration_busy",ro=(n=null,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n}):null})});function TR(n){return{issuer:n.issuer,subject:n.subject,name:n.name,...n.accountId===void 0?{}:{account_id:n.accountId}}}function LR(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.people,c=n.isCurrent.bind(n),l=typeof a?.current=="function"?a.current.bind(a):void 0,p=typeof a?.members=="function"?a.members.bind(a):void 0,d=new Set,u=ra(null),f=!1,h=!1,m=null;function b(){try{return f||r.aborted||c()!==!0?!1:!f&&!r.aborted&&n.scope===e&&n.generation===s&&n.signal===r&&n.people===a&&!!s&&s.length<=256&&[t,i,o].every(k=>typeof k=="string"&&!!k&&k.length<=128)&&e.account===t&&e.installation===i&&e.collection===o}catch{return!1}}function w(k){u=b()?k:oo;for(let S of[...d])try{S()}catch{}b()||(u=oo)}function g(){return b()||(u=oo),u}function y(){if(!f){f=!0,r.removeEventListener("abort",y),u=oo;for(let k of[...d])try{k()}catch{}d.clear()}}r.addEventListener("abort",y,{once:!0}),r.aborted&&y();function v(k,S){return!b()||S?.aborted?Promise.reject(Fd()):new Promise((x,P)=>{let I=!1,R=(j,z)=>{I||(I=!0,S?.removeEventListener("abort",O),r.removeEventListener("abort",O),d.delete(q),z!==void 0?P(z):x(j))},O=()=>R(void 0,Fd()),q=()=>{b()||O()};d.add(q),S?.addEventListener("abort",O,{once:!0}),r.addEventListener("abort",O,{once:!0}),k.then(()=>{!b()||S?.aborted?O():R(g())},()=>R(void 0,Fd())),(!b()||S?.aborted)&&O()})}function _(k={}){let S=k.signal;if(!b()||S?.aborted)return Promise.reject(Fd());if(m)return Promise.reject(A("unavailable","People readiness READ is occupied","people_readiness_busy"));let x=Promise.resolve().then(async()=>{if(!b())return oo;if(!l||!p)return ra("people_unsupported");try{let I=await l({signal:r});if(!b()||($l("identity",{...TR(I),...I.personSettingsUrl===void 0?{}:{person_settings_url:I.personSettingsUrl}}),!b()))return oo;let R=await p({signal:r});return b()?!Array.isArray(R)||R.length>1e3?ra("people_response"):($l("members",{members:Array.from(R,O=>({...TR(O),role:O.role}))}),b()?QU:oo):oo}catch{return ra(b()?"people_unavailable":"people_fenced")}});m=x,w(ra(null,!0));let P=x.then(I=>(w(I),g()),()=>(w(ra("people_unavailable")),g())).finally(()=>{m===x&&(m=null)});return v(P,S)}return Object.freeze({getSnapshot:g,subscribe(k){return f?()=>{}:(d.add(k),()=>{d.delete(k)})},start(k={}){return h?v(m??Promise.resolve(g()),k.signal):!b()||k.signal?.aborted?Promise.reject(Fd()):(h=!0,_(k))},refresh:_,close:y})}var ra,oo,QU,Fd,jR=C(()=>{"use strict";_d();ne();ra=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:Object.freeze({code:n})}),oo=ra("people_fenced"),QU=Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),Fd=()=>A("cancelled","People readiness ended","people_readiness_fenced")});function _y(n){if(!n||!Array.isArray(n.criteria))return Object.freeze([]);let e=n.criteria.filter(t=>t?.event?.id===Xh.id&&t.event.version===Xh.version&&t.event.digest===Xh.digest).map(t=>t.id);return Object.freeze([...new Set(e)])}var uA=C(()=>{"use strict";ed()});function UR(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.isCurrent.bind(n),c=n.notifications,l=c?.declaration,p=c?.timerNamespace,d=n.timers,u=typeof d?.list=="function"?d.list.bind(d):void 0,f=new Set,h=Qi(null),m=!1,b=!1,w=null;function g(){try{return m||r.aborted||a()!==!0?!1:!m&&!r.aborted&&n.signal===r&&n.scope===e&&n.generation===s&&!!s&&s.length<=256&&[t,i,o].every(x=>typeof x=="string"&&!!x&&x.length<=128)&&e.account===t&&e.installation===i&&e.collection===o&&n.notifications===c&&c?.declaration===l&&c?.timerNamespace===p&&n.timers===d}catch{return!1}}function y(x){h=g()?x:Ay;for(let P of[...f])try{P()}catch{}g()||(h=Ay)}function v(){return g()||(h=Ay),h}function _(){if(!m){m=!0,r.removeEventListener("abort",_),h=Ay;for(let x of[...f])try{x()}catch{}f.clear()}}r.addEventListener("abort",_,{once:!0}),r.aborted&&_();function k(x,P){return!g()||P?.aborted?Promise.reject(Vd()):new Promise((I,R)=>{let O=!1,q=(D,J)=>{O||(O=!0,P?.removeEventListener("abort",j),r.removeEventListener("abort",j),f.delete(z),J!==void 0?R(J):I(D))},j=()=>q(void 0,Vd()),z=()=>{g()||j()};f.add(z),P?.addEventListener("abort",j,{once:!0}),r.addEventListener("abort",j,{once:!0}),x.then(()=>{!g()||P?.aborted?j():q(v())},()=>q(void 0,Vd())),(!g()||P?.aborted)&&j()})}function S(x={}){let P=x.signal;if(!g()||P?.aborted)return Promise.reject(Vd());if(w)return Promise.reject(A("unavailable","Notification readiness READ is occupied","notification_readiness_busy"));let I=Promise.resolve().then(async()=>{if(!g())return Qi("notifications_fenced");if(l===null&&c&&Object.hasOwn(c,"declaration"))return Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null});if(!u&&_y(l).length)return Qi("notifications_consent_required");if(!l||typeof l!="object"||!u||typeof p!="string"||!/^[A-Za-z0-9._-]{1,64}$/.test(p))return Qi("notifications_unsupported");try{let O=await u(p,{signal:r});return g()?!O||O.namespace!==p||!Array.isArray(O.timers)||O.timers.length>1e4?Qi("notifications_response"):Qi("notifications_unsupported"):Qi("notifications_fenced")}catch{return Qi(g()?"notifications_unavailable":"notifications_fenced")}});w=I,y(Qi(null,!0));let R=I.then(O=>(y(O),v()),()=>(y(Qi("notifications_unavailable")),v())).finally(()=>{w===I&&(w=null)});return k(R,P)}return Object.freeze({getSnapshot:v,subscribe(x){return m?()=>{}:(f.add(x),()=>{f.delete(x)})},start(x={}){return b?k(w??Promise.resolve(v()),x.signal):!g()||x.signal?.aborted?Promise.reject(Vd()):(b=!0,S(x))},refresh:S,close:_})}var eN,Qi,Ay,Vd,NR=C(()=>{"use strict";ne();uA();eN=n=>Object.freeze({code:n}),Qi=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:eN(n)}),Ay=Qi("notifications_fenced"),Vd=()=>A("cancelled","Notification readiness ended","notification_readiness_fenced")});function zR(n){let e=new Set,t=!1,i=()=>{if(t||!n.isCurrent())return DR;let s=n.declaration;if(!s)return fA;let r;try{r=n.grant()}catch{return tN}return r?s.required.some(a=>!r.actions.includes(a))?$R("files_access_missing"):n.scope==="collection"&&r.scope.kind!=="collection"?$R("files_scope_missing"):fA:fA},o=i();return Object.freeze({getSnapshot:()=>t||!n.isCurrent()?DR:o,subscribe(s){return t?()=>{}:(e.add(s),()=>{e.delete(s)})},async refresh(){let s=i();if(s!==o){o=s;for(let r of[...e])try{r()}catch{}}return o},close(){t=!0,e.clear()}})}var ky,fA,DR,tN,$R,BR=C(()=>{"use strict";ky=n=>Object.freeze(n),fA=ky({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),DR=ky({checking:!1,assessment:null,problem:Object.freeze({code:"files_fenced"})}),tN=ky({checking:!1,assessment:null,problem:Object.freeze({code:"files_unavailable"})}),$R=n=>ky({checking:!1,assessment:Object.freeze({status:"incompatible",problem:Object.freeze({code:n})}),problem:null})});var Sy,FR=C(()=>{"use strict";nA();CR();qR();jR();NR();uA();Kc();Km();BR();Sy=class{constructor(e,t,i,o="block",s=()=>[]){this.typeIssues=o;this.consented=s;this.compiled=e,this.signal=i,this.ui=new nc(t,i,_y(this.compiled.manifest.notifications)),i.addEventListener("abort",this.abort,{once:!0})}typeIssues;consented;ui;signal;compiled;listeners=new Set;selected=null;epoch=0;opening=null;retiring=null;closing=null;changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}connection(e){return this.ui.connection(e)}getReadiness(){return this.selected?.readiness.getSnapshot()??null}selectedId(){return this.selected?.connection.id??null}adopt(e,t,i){let o=this.epoch,s=()=>!this.signal.aborted&&!this.closing&&!this.retiring&&this.epoch===o&&i(),r=!!this.opening||!!this.selected||!!this.retiring||!!this.closing,a=this.ui.adopt(e,{caller:t,isCurrent:s});if(r)return a;let c=null,l=[],p=a.then(d=>{if(!s()||t.aborted)throw new on("application_connection_fenced");let u=this.ui.owned();if(!u)throw new on("application_connection_binding");let f=Fm(this.compiled);f&&xk(d.files,XC(f,()=>this.consented(d.id)));let h=new AbortController,m=AbortSignal.any([this.signal,h.signal]);c=h;let b=()=>s()&&d.isCurrent(),w={scope:d.scope,generation:d.generation,signal:m,isCurrent:b},g=MR({client:d.records,compiledManifest:this.compiled,journal:u.journal,...w,setupMode:u.setupMode},u.resourceSetup);l.push(()=>g.close());let y={getSnapshot:g.getSnapshot,subscribe:g.subscribe,refresh:g.assess,close:g.close},v=LR({people:d.people,...w});l.push(()=>v.close());let _=this.compiled.manifest.notifications,k=UR({notifications:{declaration:_?.criteria?.length?_:null},timers:d.timers,...w});l.push(()=>k.close());let S=this.compiled.manifest.requirements.files?.scope?.kind,x=zR({declaration:f,scope:typeof S=="string"?S:null,grant:()=>d.files.grant,isCurrent:b});l.push(()=>x.close());let P=this.compiled.nativeCapabilities?{...this.compiled.nativeCapabilities,contracts:this.compiled.manifest.requirements.contracts,typeIssues:this.typeIssues}:null,I=new vy({connection:d,nativeRequirements:P,signal:m,isCurrent:b,configuration:y,files:x,people:v,notifications:k}),R=I.subscribe(this.changed);return this.selected={connection:d,lifetime:h,readiness:I,configuration:g,unsubscribe:R},c=null,l.length=0,this.changed(),d}).catch(async d=>{c?.abort();let f=(await Promise.allSettled([this.ui.retire(),...l.map(h=>Promise.resolve().then(h))])).find(h=>h.status==="rejected");throw f?.status==="rejected"?f.reason:d}).finally(()=>{this.opening===p&&(this.opening=null)});return this.opening=p,p}assess(e={}){return!this.selected||!this.selected.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new on("application_connection_fenced")):this.selected.readiness.refresh(e)}async configure(e={}){let t=this.selected,i=this.epoch;if(!t||!t.connection.isCurrent()||this.retiring||this.closing)throw new on("application_connection_fenced");if(await t.configuration.configure(e),e.signal?.aborted||this.epoch!==i||this.selected!==t||!t.connection.isCurrent())throw new on("application_connection_fenced");return t.readiness.refresh(e)}planSetup(e={}){let t=this.selected;return!t||!t.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new on("application_connection_fenced")):t.configuration.plan(e)}async applySetup(e,t={}){let i=this.selected,o=this.epoch;if(!i||!i.connection.isCurrent()||this.retiring||this.closing)throw new on("application_connection_fenced");if(await i.configuration.apply(e,t),t.signal?.aborted||this.epoch!==o||this.selected!==i||!i.connection.isCurrent())throw new on("application_connection_fenced");return i.readiness.refresh(t)}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.selected,t=this.opening;e?.lifetime.abort(),e?.unsubscribe();let i=this.ui.retire(),o=Promise.resolve().then(async()=>{let r=(await Promise.allSettled([i,t?.catch(()=>{}),e?.readiness.close()])).find(a=>a.status==="rejected");if(r?.status==="rejected")throw r.reason;this.selected===e&&(this.selected=null)});return this.retiring=o,this.changed(),o.then(()=>{this.retiring===o&&(this.retiring=null),this.changed()},()=>{}),o}close(){return this.closing?this.closing:(this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{await this.retire(),await this.ui.close(),this.listeners.clear()}),this.closing)}}});function VR(n){return typeof n=="string"&&nN.includes(n)}var nN,KR=C(()=>{"use strict";nN=["joining","opening_store","connecting_log","syncing","loading_snapshot","replaying","waiting_for_key","verifying_read","checking_setup"]});function hA(n,e){return!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join()?sc():n}function mA(n){(typeof n!="string"||!iN.test(n)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(n))&&sc()}function WR(n){let e=hA(n,"rpc,action,value");if((!Number.isSafeInteger(e.rpc)||e.rpc<1||e.rpc>4294967295)&&sc(),e.action==="cancel")e.value!==null&&sc();else if(e.action==="prepare"){let t=hA(e.value,`requestId,accountId,appId,challenge${Object.hasOwn(e.value,"authorizationId")?",authorizationId":""}`);for(let i of["requestId","accountId","appId"])mA(t[i]);t.authorizationId!==void 0&&mA(t.authorizationId),(typeof t.challenge!="string"||!/^[0-9a-f]{64}$/.test(t.challenge))&&sc()}else if(e.action==="finish"){let t=hA(e.value,"requestId,authorizationRequestId,collectionId");for(let i of Object.keys(t))mA(t[i])}else sc();return Object.freeze({...e,value:e.value===null?null:Object.freeze({...e.value})})}var iN,sc,HR=C(()=>{"use strict";bd();iN=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,sc=()=>{throw new xe("application_worker_binding")}});function yA(n){if(!n||typeof n!="object"||Array.isArray(n))throw new xe("application_worker_binding");let e=n,t=e.unlock;if(e.status==="needs_unlock"!=(t!=null)||t!=null&&(typeof t!="object"||!["password","strict","none"].includes(t.mode)||typeof t.unlocking!="boolean"||!(t.problem===null||typeof t.problem=="string"&&/^[a-z][a-z0-9_]{0,63}$/.test(t.problem))))throw new xe("application_worker_binding");if(!["not_started","starting","signed_out","authorizing","unselected","opening","setup_required","ready","blocked","closed","needs_unlock"].includes(e.status)||!(e.openingProgress==null||typeof e.openingProgress=="string")||!Array.isArray(e.collections)||e.collections.length>1024||!(e.selectedCollectionId===null||typeof e.selectedCollectionId=="string")||!(e.problem===null||typeof e.problem=="string"&&/^[a-z0-9_-]{1,128}$/.test(e.problem))||!(e.unsynced==null||typeof e.unsynced=="object"&&e.unsynced.collectionId===e.selectedCollectionId&&typeof e.unsynced.sessionStatus=="string")||!(e.unsyncedWork==null||typeof e.unsyncedWork=="object"&&Number.isSafeInteger(e.unsyncedWork.since)&&e.unsyncedWork.since>=0))throw new xe("application_worker_binding");return Object.freeze({...e,openingProgress:VR(e.openingProgress)?e.openingProgress:null})}var ac,Py,GR=C(()=>{"use strict";KR();HR();bd();ac=class extends Error{constructor(t){super("SDK application operation unavailable");this.code=t;this.name="ApplicationWorkerReplyError"}code};Py=class{port;binding;owner;nextId=0;active=null;portal=null;fault=null;stopping=null;stopReply=null;watch=null;closedPortal=null;abandoned=!1;constructor(e,t,i){if(!aC(t))throw new xe("application_worker_binding");this.port=e,this.binding=t,this.owner=Object.freeze({...i}),e.addEventListener("message",this.message),e.addEventListener("messageerror",this.messageError),e.start()}id(){if(this.nextId===Sm)throw new xe("application_worker_stop_failed");return++this.nextId}send(e,t,i){let o=a_([oi,this.binding,e,t,i],this.binding);try{this.port.postMessage(o)}catch{throw this.quarantine("application_worker_unavailable"),this.fault}}request(e,t,i,o){if(this.fault||this.stopping||i.aborted)return Promise.reject(this.fault??new xe("application_worker_fenced"));if(this.active)return Promise.reject(new xe("application_worker_busy"));let s;try{s=this.id(),a_([oi,this.binding,s,e,t],this.binding)}catch(c){return Promise.reject(c)}if(o){if(!["authorize","renewExpiredPairing","requestFileAccess"].includes(e))return Promise.reject(new xe("application_worker_binding"));this.portal?.life.abort(),this.portal&&(this.closedPortal=this.portal.id);try{this.portal?.value.close()}catch{return this.quarantine("application_worker_stop_failed"),Promise.reject(this.fault)}this.portal={id:s,value:o,caller:i,life:new AbortController,lastRpc:0,busy:!1},this.watchPortal()}let r,a=new Promise(c=>{r=c});return new Promise((c,l)=>{let p={id:s,caller:i,done:a,finish:r,resolve:c,reject:l,fenced:!1,reply:!1,handoff:null,cancel:()=>{p.fenced=!0,l(new xe("application_worker_fenced"))}};this.active=p,i.addEventListener("abort",p.cancel,{once:!0});try{this.send(s,e,t)}catch(d){l(d)}i.aborted&&p.cancel()})}drain(){return this.fault?Promise.reject(this.fault):this.active?.done??Promise.resolve()}setForeground(e){!this.stopping&&!this.fault&&this.send(0,"foreground",e)}watchPortal(){this.watch!==null&&clearInterval(this.watch),this.watch=null;let e=this.portal;!e||!("closed"in e.value)||(this.watch=setInterval(()=>{if(this.portal!==e||this.stopping||this.fault){clearInterval(this.watch),this.watch=null;return}let t=!1;try{t=e.value.closed===!0}catch{}if(t){clearInterval(this.watch),this.watch=null,e.lastRpc===0&&(this.portal=null,this.closedPortal=e.id);try{this.send(0,"approvalClosed",!0)}catch{}}},500))}messageError=()=>this.quarantine("application_worker_unavailable");quarantine(e){if(!this.fault){this.fault=new xe(e),this.active&&(this.active.fenced=!0,this.active.reject(this.fault)),this.stopReply?.reject(this.fault);try{this.owner.failed?.(this.fault)}catch{}}}message=e=>{try{let t=e.data;if(!Array.isArray(t)||t.length!==5||t[0]!==oi||t[1]!==this.binding||!Number.isInteger(t[3])||t[3]<0||t[3]>Sm)throw new xe("application_worker_binding");if(this.fault)return;let[,,i,o,s]=t;if(i==="nativeSnapshot"){if(o!==0)throw new xe("application_worker_binding");let l=yA(s);this.stopping||this.owner.snapshot(l);return}if(i==="fatal"){if(o!==0)throw new xe("application_worker_binding");this.quarantine("application_worker_stop_failed");return}if(i==="nativeAuthorization"){let l=WR(s),p=this.portal;if(o===this.closedPortal&&p?.id!==o){l.action!=="cancel"&&this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}]);return}if(!p||p.id!==o||this.stopping||p.caller.aborted||l.rpc<=p.lastRpc)throw new xe("application_worker_fenced");if(p.lastRpc=l.rpc,l.action==="cancel")p.life.abort();else if(p.busy)throw new xe("application_worker_binding");l.action!=="cancel"&&(p.busy=!0);let d=AbortSignal.any([p.caller,p.life.signal]);Promise.resolve().then(()=>{if(!this.owner.nativeAuthorization)throw new xe("application_worker_unavailable");return this.owner.nativeAuthorization(l,p.value,d)}).then(u=>{if(d.aborted||this.portal!==p||this.stopping)throw new xe("application_worker_fenced");this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!0,value:u}])},()=>{this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}).catch(()=>{try{this.port.postMessage([oi,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}catch{}}).finally(()=>{p.busy=!1});return}if(i==="portal"){if(!s||!["navigate","close"].includes(s.action))throw new xe("application_worker_binding");let l=this.portal;if(!l||l.id!==o)return;if(s.action==="close")l.life.abort(),l.value.close(),this.portal=null;else{if(this.stopping||typeof s.uri!="string"||s.uri.length>8192)throw new xe("application_worker_binding");l.value.navigate(s.uri)}return}if(i==="handoff"&&o===0){if(!s||s.schema!=="mdbn-app-collection/1")throw new xe("application_worker_binding");let l=[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]];if(l.some(p=>!(p instanceof MessagePort)))throw new xe("application_worker_binding");if(this.stopping||!this.owner.attached){for(let p of l)p.close();return}this.owner.attached(s);return}if(i==="handoff"){let l=this.active;if(!l||l.id!==o||l.reply||l.handoff)throw new xe("application_worker_binding");if(this.stopping){if(!s||s.schema!=="mdbn-app-collection/1")throw new xe("application_worker_binding");for(let p of[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]]){if(!(p instanceof MessagePort))throw new xe("application_worker_binding");p.close()}l.handoff=Promise.resolve();return}l.handoff=Promise.resolve().then(()=>this.owner.handoff(s,l.caller)),l.handoff.catch(()=>{});return}if(i!=="reply"||!s||typeof s.ok!="boolean"||!s.ok&&(!s.problem||typeof s.problem.code!="string"||s.problem.code.length>128))throw new xe("application_worker_binding");let r=this.stopReply;if(r&&r.id===o){if(s.ok){let l=yA(s.snapshot);if(l.status!=="closed"||l.selectedCollectionId!==null)throw new xe("application_worker_stop_failed");r.resolve()}else r.reject(new xe("application_worker_stop_failed"));return}let a=this.active;if(!a||a.id!==o||a.reply)throw new xe("application_worker_binding");a.reply=!0;let c=s.ok?yA(s.snapshot):null;this.settle(a,c,s.ok?null:Object.freeze({code:s.problem.code}))}catch{this.quarantine("application_worker_binding")}};async settle(e,t,i){try{if(await e.handoff,e.fenced||e.caller.aborted||this.stopping||this.fault)throw this.fault??new xe("application_worker_fenced");if(i)throw new ac(i.code);t&&e.resolve(t)}catch(o){e.reject(o)}finally{e.caller.removeEventListener("abort",e.cancel),this.active===e&&(this.active=null),e.finish()}}abandon(){if(this.abandoned)return;this.abandoned=!0,this.fault||(this.fault=new xe("application_worker_fenced")),this.watch!==null&&(clearInterval(this.watch),this.watch=null);let e=this.active;e&&(e.fenced=!0,e.reject(this.fault),e.finish(),this.active=null),this.stopReply?.reject(this.fault),this.stopReply=null,this.portal?.life.abort();try{this.portal?.value.close()}catch{}this.portal=null;try{this.owner.releaseWorker()}catch{}this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}close(){if(this.stopping)return this.stopping;let e=this.active;return e&&(e.fenced=!0,e.reject(new xe("application_worker_fenced"))),this.stopping=Promise.resolve().then(async()=>{if(this.fault)throw new xe("application_worker_stop_failed");this.portal?.life.abort(),this.portal?.value.close(),this.portal=null;let t=this.id();if(await new Promise((i,o)=>{this.stopReply={id:t,resolve:i,reject:o};try{this.send(t,"close",null)}catch(s){o(s)}}),await e?.done,this.fault)throw new xe("application_worker_stop_failed");this.owner.releaseWorker(),this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}).catch(t=>{throw this.quarantine("application_worker_stop_failed"),t}),this.stopping}}});var YR={};ca(YR,{ApplicationRuntime:()=>bA,ApplicationRuntimeError:()=>On});function rN(n,e){let t=()=>A("invalid_request","Pass the collection and either { password } or { recoveryKey }.","unlock_secret_invalid");if(typeof n!="string"||!e||typeof e!="object")throw t();let i=Object.hasOwn(e,"password"),o=Object.hasOwn(e,"recoveryKey");if(i===o)throw t();let s=i?e.password:e.recoveryKey;if(typeof s!="string"||!s.length)throw t();let r=new TextEncoder().encode(s);if(r.length>s_)throw r.fill(0),t();return Object.freeze([n,i?"password":"recoveryKey",r])}var On,gA,bA,JR=C(()=>{"use strict";ne();bd();UO();FR();nA();bt();Km();GR();l_();On=class extends Error{constructor(t){super("SDK application runtime unavailable");this.code=t;this.name="ApplicationRuntimeError"}code},gA=()=>{let n=Object.freeze({checking:!1,assessment:null,problem:null});return Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:n,contracts:n,configuration:n,files:n,people:n,notifications:n})})},bA=class{lifetime=new AbortController;scope;worker;cpOrigin;lab;appName;sourceAdopt=null;listeners=new Set;unsubscribe;raw=Object.freeze({status:"not_started",collections:Object.freeze([]),selectedCollectionId:null,signIn:null,problem:null,timing:null});snapshot=Object.freeze({...this.raw,readiness:gA()});pending=null;closing=null;epoch=0;loggedProblem=null;assessing=!1;retiring=!1;closed=!1;stopped=!1;stopFailed=!1;constructor(e){this.cpOrigin=e.cpOrigin,this.appName=e.declaration.name,this.lab=Pl(e.declaration.environment),this.scope=new Sy(e.compiledManifest,{name:e.declaration.name,version:"1"},this.lifetime.signal,e.typeIssues,t=>Vm(this.raw,t)),this.worker=new Py(e.port,e.binding,{snapshot:t=>{this.closed||(this.raw=t,this.followSession(),this.publish())},handoff:(t,i)=>{if(this.sourceAdopt)return this.sourceAdopt(t,i);let o=this.epoch;return this.scope.adopt(t,i,()=>!this.closed&&this.epoch===o).then(()=>{this.portsFailed=null},s=>{throw this.portsFailed=t.scope.collection,s})},attached:t=>this.attached(t),releaseWorker:e.releaseWorker,...e.nativeAuthorization?{nativeAuthorization:e.nativeAuthorization}:{},failed:t=>{this.closed||(this.raw=Object.freeze({...this.raw,status:"blocked",problem:t.code,unlock:null}),this.publish())}}),this.unsubscribe=this.scope.subscribe(()=>this.publish())}portsFailed=null;attached(e){let t=()=>{for(let o of[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]])try{o.close()}catch{}};if(this.closed){t();return}let i=this.lifetime.signal;this.queue(()=>this.action(async()=>{if(this.raw.selectedCollectionId!==e.scope.collection)return t(),this.snapshot;this.scope.selectedId()!==null&&(++this.epoch,await this.retireOwn());let o=this.epoch;return await this.scope.adopt(e,i,()=>!this.closed&&this.epoch===o).catch(s=>{throw this.portsFailed=e.scope.collection,s}),this.portsFailed=null,this.complete(this.raw,i)},i)).catch(()=>{this.closed||this.publish()})}followSession(){if(this.pending)return;let e=this.raw.status==="ready"||this.raw.status==="setup_required",t=this.raw.selectedCollectionId,i=this.scope.selectedId();if(i!==null&&(i!==t||!e&&this.raw.status!=="opening"&&this.raw.status!=="authorizing")){let o=this.lifetime.signal;this.queue(()=>this.action(async()=>(this.scope.selectedId()===i&&(++this.epoch,await this.retireOwn()),this.publish(),this.snapshot),o)).catch(()=>{})}}connection(e){return this.closed?null:this.scope.connection(e)}getSnapshot(){return this.snapshot}getNativeSnapshot(){return this.raw}async queue(e){for(;this.pending&&!this.closed;)await this.pending.catch(()=>{});return e()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(){if(this.closed)this.snapshot=Object.freeze({...this.raw,status:this.stopped?"closed":"blocked",problem:this.stopped?null:this.stopFailed?"application_stop_failed":"application_closing",selectedCollectionId:null,unlock:null,readiness:gA()});else{let e=this.scope.getReadiness()??gA(),t=this.raw.status,i=this.raw.problem,o,s=this.raw.selectedCollectionId,r=this.retiring&&e.problem?.code==="readiness_fenced",a=s!==null&&(this.scope.getReadiness()===null||r)&&this.portsFailed!==s;if((t==="ready"||t==="setup_required")&&a)t="opening";else if(t==="ready"||t==="setup_required"){let l=this.assessing&&!e.assessment&&e.problem?.code!=="readiness_fenced";if(t=e.checking||l?"opening":e.assessment?.status==="ready"?"ready":e.assessment?.status==="setup_required"?"setup_required":"blocked",t==="blocked"){let p=e.problem??e.assessment?.problem;i=p?.code??"application_readiness_unavailable",o=p?.detail}}let c=`${i}:${o??""}`;if(t==="blocked"&&i&&c!==this.loggedProblem){this.loggedProblem=c;try{o?console.error("mdbase application blocked:",i,o):console.error("mdbase application blocked:",i)}catch{}}else t!=="blocked"&&(this.loggedProblem=null);this.snapshot=Object.freeze({...this.raw,status:t,problem:i,openingProgress:t==="opening"?e.checking?"checking_setup":this.raw.openingProgress??null:null,collections:Object.freeze(this.raw.collections.map(l=>Object.freeze({...l}))),readiness:e})}for(let e of[...this.listeners])try{e()}catch{}}retireOwn(){return this.retiring=!0,this.scope.retire()}settled(){return this.assessing=!1,this.publish(),this.snapshot}signal(e){return e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal}action(e,t){if(this.closed||t.aborted)return Promise.reject(new On("application_fenced"));if(this.pending)return Promise.reject(new On("application_busy"));this.assessing=!0;let i=Promise.resolve().then(async()=>{if(this.closed||t.aborted)throw new On("application_fenced");let o=await e();if(this.closed||t.aborted)throw new On("application_fenced");return o}).finally(async()=>{(this.assessing||this.retiring)&&(this.assessing=!1,this.retiring=!1,this.publish()),await this.worker.drain(),this.pending===i&&(this.pending=null)});return this.pending=i,i}async complete(e,t){if(this.closed||t.aborted)throw new On("application_fenced");let i=!!(e.selectedCollectionId&&this.scope.connection(e.selectedCollectionId));if(this.raw=e,this.assessing=i,this.publish(),i){try{await this.scope.assess({signal:t}).catch(()=>{})}finally{this.assessing=!1}this.publish()}if(this.closed||t.aborted)throw new On("application_fenced");return this.snapshot}start(e={}){let t=this.signal(e);return this.action(async()=>this.complete(await this.worker.request("start",null,t),t),t)}authorizeReserved(e,t={},i=null){let o=this.signal(t);return this.action(async()=>this.complete(await this.worker.request("authorize",i,o,e),o),o).catch(s=>{throw e.close(),s})}authorize(e={}){let t=this.signal(e),i;try{i=Pm(xm(this.cpOrigin,t,()=>!this.closed,this.lab))}catch(o){return Promise.reject(o)}return this.authorizeReserved(i,e)}select(e,t={}){let i=this.signal(t);return this.action(async()=>{if(this.raw.selectedCollectionId===e&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(e)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,i):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||i.aborted)throw new On("application_fenced");return this.complete(await this.worker.request("select",e,i),i)},i)}unlock(e,t,i={}){let o=this.signal(i),s;try{s=rN(e,t)}catch(a){return Promise.reject(a)}let r=()=>{s[2].fill(0)};return this.action(async()=>{if(this.raw.selectedCollectionId!==e||this.raw.status!=="needs_unlock")throw A("invalid_request","This collection is not waiting to be unlocked.","unlock_not_locked");let a;try{a=this.worker.request("unlock",s,o)}finally{r()}return this.complete(await a,o)},o).finally(r)}openUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null;if(i!==null&&this.raw.selectedCollectionId===i&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(i)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,t):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||t.aborted)throw new On("application_fenced");return this.complete(await this.worker.request("openUnsynced",null,t),t)},t)}async retireUnsynced(e,t,i={}){let o=this.signal(i),s=!0;return await this.queue(()=>this.action(async()=>{try{return this.complete(await this.worker.request("retireUnsynced",[e,t],o),o)}catch(r){if(r instanceof ac&&r.code==="application_worker_busy")return s=!1,this.snapshot;throw r}},o)),s}discardUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null,o=i!==null&&this.raw.selectedCollectionId===i;if(o){++this.epoch;let s=this.retireOwn();if(this.publish(),await s,this.closed||t.aborted)throw new On("application_fenced")}try{return this.complete(await this.worker.request("discardUnsynced",null,t),t)}catch(s){throw o&&s instanceof ac&&s.code==="application_worker_busy"&&!this.closed&&!t.aborted&&this.complete(await this.worker.request("openUnsynced",null,t),t),s}},t)}async withUnsyncedSource(e,t={}){let i=this.signal(t),o=new nc({name:this.appName,version:"1"},i),s=null;try{if(await this.queue(()=>this.action(async()=>{this.sourceAdopt=(r,a)=>(s=o.adopt(r,{caller:a,isCurrent:()=>!this.closed&&!i.aborted}),s.then(()=>{}));try{await this.worker.request("attachUnsynced",null,i)}finally{this.sourceAdopt=null}return this.snapshot},i)),!s)throw new On("application_connection_unavailable");return await e(await s,i)}finally{if(await o.close().catch(()=>{}),!this.closed){let r=this.lifetime.signal;await this.queue(()=>this.action(async()=>(await this.worker.request("detachUnsynced",null,r),this.snapshot),r)).catch(()=>{})}}}assess(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.assess({signal:t}),this.settled()),t).then(i=>i.readiness)}configure(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.configure({signal:t}),this.settled()),t)}planSetup(e={}){let t=this.signal(e);return this.closed||t.aborted?Promise.reject(new On("application_fenced")):this.scope.planSetup({...e,signal:t})}applySetup(e,t={}){let i=this.signal(t);return this.action(async()=>(await this.scope.applySetup(e,{signal:i}),this.settled()),i)}clearSelection(e={}){let t=this.signal(e);return this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("clearSelection",null,t),t)),t)}forget(e,t={}){let i=this.signal(t);return this.action(async()=>(this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,i),i)),i)}refreshCollections(e={}){let t=this.signal(e);return this.action(async()=>(this.raw=await this.worker.request("refreshCollections",null,t),this.publish(),this.snapshot),t)}signOut(e={}){let t=this.signal(e),i=this.raw.selectedCollectionId,o=e.discard!==!0&&i?LO(this.scope.connection(i)):0;return o>0?Promise.reject(jO(o)):this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("signOut",null,t),t)),t)}deleteCollection(e,t,i={}){let o=this.signal(i);return this.action(async()=>(await this.worker.request("deleteCollection",[e,t],o),this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,o),o)),o)}requestFileAccess(e,t,i,o,s={}){let r=this.signal(s);return this.action(async()=>(this.raw=await this.worker.request("requestFileAccess",[t,i,o],r,e),this.publish(),this.snapshot),r).catch(a=>{throw e.close(),a})}pollFileAccess(e){let t=this.lifetime.signal;return this.action(async()=>(this.raw=await this.worker.request("pollFileAccess",e,t),this.publish(),this.snapshot),t)}setForeground(e){this.closed||this.worker.setForeground(e)}abandon(){this.closed||(this.closed=!0,this.stopped=!0,++this.epoch,this.unsubscribe(),this.listeners.clear(),this.closing=Promise.resolve(),this.worker.abandon(),this.lifetime.abort())}close(){return this.closing?this.closing:(this.closed=!0,++this.epoch,this.lifetime.abort(),this.unsubscribe(),this.closing=Promise.resolve().then(async()=>{await Promise.all([this.scope.close(),this.worker.close()]),await this.pending?.catch(()=>{}),this.stopped=!0,this.publish(),this.listeners.clear()}).catch(()=>{throw this.stopFailed=!0,this.publish(),new On("application_stop_failed")}),this.publish(),this.closing)}}});var WN={};ca(WN,{ACCOUNT_KEY_STATES:()=>yb,API_VERSIONS:()=>Uu,AppHost:()=>zA,COLLECTION_UNAVAILABLE_REASONS:()=>ew,CborError:()=>qe,Client:()=>rf,DESCRIBE_TYPING_MAX_PATHS:()=>Ec,DESCRIBE_TYPING_MAX_TYPES:()=>Rc,DEVICE_KINDS:()=>mb,ERROR_CODES:()=>eu,FilesApi:()=>wa,Float64:()=>Ct,HOLD_COMPARE_SCHEME:()=>wp,HOLD_TITLE:()=>bp,IkInitiator:()=>Oa,IkResponder:()=>If,LiveQuery:()=>Aa,MAX_CONVENIENCE_BYTES:()=>Nu,MAX_DEPTH:()=>Gy,MDBASE_NOTIFICATION_CLICK:()=>hw,MDBASE_NOTIFICATION_TYPE:()=>gp,MdbaseApplicationUnavailableError:()=>Kd,MdbaseClient:()=>pr,MdbaseConnect:()=>pc,MdbaseError:()=>pe,MdbasePeopleClient:()=>mr,NoiseError:()=>ft,PERSON_CONTRACT:()=>lw,PROBLEM_CODES:()=>i1,PresenceApi:()=>_a,READ_MANY_MAX_CONCURRENCY:()=>rb,READ_MANY_MAX_REFS:()=>ib,RecordReader:()=>zc,SESSION_LIFETIME_MS:()=>Yb,SLOW_OPENING_MS:()=>Hf,SchemaError:()=>re,Session:()=>ms,TEMPORAL_HINTS:()=>wu,TimersApi:()=>ja,WasmRuntime:()=>Da,Write:()=>ws,applicationPhase:()=>_p,approvalReadiness:()=>lS,bytesEqual:()=>Jy,clientPrologue:()=>fr,collectionUnavailableError:()=>Nn,compareVersions:()=>kw,connect:()=>Ab,controlRouteResolver:()=>MP,createMdbase:()=>QR,createViewSource:()=>Ku,decode:()=>ce,describeDiagnostic:()=>Ff,describeError:()=>Rs,describeHold:()=>HP,diffEdits:()=>Iu,duplexCarrier:()=>nw,effectiveCapabilities:()=>e2,encode:()=>se,encodeSecret:()=>qn,fileGrant:()=>nb,formatSas:()=>dS,framedPort:()=>Tu,fromHex:()=>Lr,generateKeyPair:()=>Ra,handleMdbaseNotificationClick:()=>KP,handleMdbasePush:()=>VP,holdCompareLink:()=>ww,holdNotice:()=>GP,inProcessConnector:()=>Na,indexedDbKeyStorage:()=>sw,isCollectionUnavailableReason:()=>Ta,isConfirmed:()=>EP,isErrorCode:()=>uo,isMdbaseError:()=>Q,isReadyPhase:()=>p1,isValid:()=>M2,keyPairFromSecret:()=>yP,loadOrCreateClientKey:()=>CP,localLinkConnector:()=>SP,localLinkFirstPayload:()=>rw,mdbaseError:()=>A,memoryKeyStorage:()=>ow,memoryWriteLedgerStore:()=>Xu,nextRelayConnector:()=>kP,noiseChannel:()=>Jb,noiseConnector:()=>hr,orderTargets:()=>La,parseCollectionAvailability:()=>gi,parseHoldCompareLink:()=>WP,parseMdbaseNativeNotification:()=>mw,parseMdbasePush:()=>Tf,parseVersion:()=>Fa,pipeCloseError:()=>Cs,portPair:()=>mk,problemCodeOf:()=>_w,queryPages:()=>$u,readMany:()=>Du,readMdbaseNotificationData:()=>yw,readViewSourceRecord:()=>Vu,recoveryFor:()=>L2,relayConnector:()=>vP,relayPipeCarrier:()=>qa,resolveRecordLinks:()=>Ik,revisionOf:()=>Ti,routeFromControl:()=>aw,sameIdentity:()=>Mf,showMdbaseNotification:()=>gw,staticKeyOf:()=>Pf,streamCarrier:()=>bP,structMap:()=>Yy,summarizeStatus:()=>Rf,syncStatusText:()=>YP,toHex:()=>At,toPlain:()=>ya,toValue:()=>kt,updateViewSource:()=>Wu,uuidv7:()=>pi,valueEquals:()=>bo,versionRelation:()=>Es,webSocketCarrier:()=>Ea,wire:()=>Tg});Xe();be();ne();Ut();Ut();ka();ob();pb();Kc();Kc();db();Fc();Bc();lr();be();ne();Is();Ma();up();function vP(n){let e=U(n.collection),t=n.grant?U(n.grant):null;return hr({description:`relay:${n.collection}`,staticKey:n.staticKey,target:async()=>{let i=await n.resolveRoute();if(!i)throw A("unavailable","no device of this collection is online","no_device_online");let o=fr(e,t,U(i.targetDevice));return{prologue:o,...i.prologueFirst&&!i.pipe?{preamble:o}:{},remoteStatic:i.noisePublicKey,device:i.targetDevice,openCarrier:s=>i.pipe?qa(i.url,{accessToken:i.pipe.accessToken,collection:i.pipe.collection,grant:n.grant??"",device:i.targetDevice,devicePublicKey:i.noisePublicKey},n.webSocket,s):Ea(i.url,n.webSocket,s)}}})}iw();Ma();Is();Xe();be();ne();Ut();Is();Ma();var LM=new Uint8Array(16);function rw(n,e){if(n.length!==32)throw A("invalid_request","the link token is 32 bytes");let t=Nr.dec(e);if(t.kind!=="request"||t.method!=="hello")throw A("internal","expected the hello request");return se(new Map([[0,n],[1,t.params]]))}function SP(n){let e=U(n.collection),t=n.staticKey??Ra(),i=null;return hr({description:"localhost-link",staticKey:t,firstPayload:o=>rw(i.token,o),target:async()=>{i=typeof n.link=="function"?await n.link():n.link;let o=i;if(!Number.isInteger(o.port)||o.port<=0||o.port>65535)throw A("unavailable","invalid local link port","daemon_not_running");let s=fr(e,null,n.localOnly?LM:U(o.device));return{prologue:s,preamble:s,remoteStatic:o.noisePublicKey,openCarrier:r=>Ea(`ws://127.0.0.1:${o.port}/v1/plugin`,n.webSocket,r)}}})}Af();ne();function ow(){let n=new Map;return{get:async e=>n.get(e),put:async(e,t)=>{n.set(e,t)},putIfAbsent:async(e,t)=>{let i=n.get(e);return i||(n.set(e,t),t)},delete:async e=>{n.delete(e)}}}function sw(n="mdbase-keys",e="keys"){let t=globalThis.indexedDB;if(!t)throw A("invalid_request","IndexedDB is not available here; pass another KeyStorage");let i=()=>new Promise((r,a)=>{let c=t.open(n,1);c.onupgradeneeded=()=>c.result.createObjectStore(e),c.onsuccess=()=>r(c.result),c.onerror=()=>a(c.error)}),o=async(r,a)=>{let c=await i();try{return await new Promise((l,p)=>{let d=c.transaction(e,r),u,f=!1;d.oncomplete=()=>f?l(u):p(A("unavailable","key storage transaction completed without a result","key_storage")),d.onabort=()=>p(d.error??A("unavailable","key storage transaction aborted","key_storage")),d.onerror=()=>p(d.error??A("unavailable","key storage transaction failed","key_storage"));try{a(d.objectStore(e),h=>{u=h,f=!0})}catch(h){d.abort(),p(h)}})}finally{c.close()}},s=(r,a)=>o(r,(c,l)=>{let p=a(c);p.onsuccess=()=>l(p.result)});return{get:r=>s("readonly",a=>a.get(r)),put:(r,a)=>s("readwrite",c=>c.put(a,r)).then(()=>{}),putIfAbsent:(r,a)=>o("readwrite",(c,l)=>{let p=c.get(r);p.onsuccess=()=>{if(p.result!==void 0){l(p.result);return}try{let d=c.add(a,r);d.onsuccess=()=>l(a)}catch{c.transaction.abort()}}}),delete:r=>s("readwrite",a=>a.delete(r)).then(()=>{})}}function IP(){return globalThis.crypto?.subtle}async function jM(){let n=IP();if(!n)return null;try{let e=await n.generateKey({name:"X25519"},!1,["deriveBits"]),t=new Uint8Array(await n.exportKey("raw",e.publicKey));return{kind:"webcrypto",privateKey:e.privateKey,publicKey:t}}catch{return null}}function UM(n){return n.kind==="raw"?{publicKey:n.publicKey,nonExtractable:!1,dh:e=>Ui.getSharedSecret(n.secretKey,e)}:{publicKey:n.publicKey,nonExtractable:!n.privateKey.extractable,dh:async e=>{let t=IP(),i=await t.importKey("raw",e,{name:"X25519"},!1,[]),o=await t.deriveBits({name:"X25519",public:i},n.privateKey,256);return new Uint8Array(o)}}}var NM=ow(),PP=new WeakMap;function xP(n,e){if(e&&(n.kind!=="webcrypto"||n.privateKey.extractable!==!1||n.privateKey.type!=="private"||n.privateKey.algorithm.name!=="X25519"||!n.privateKey.usages.includes("deriveBits")))throw A("invalid_request","a non-extractable X25519 key is required; explicitly reauthorize incompatible stored identities","key_storage")}async function CP(n,e={}){let t=e.storage??(globalThis.indexedDB?sw():NM),i=e.requireNonExtractable,o=PP.get(t);o||(o=new Map,PP.set(t,o));let s=o.get(n);s||(s=(async()=>{let r=await t.get(n);if(r)return r;let a=await jM();if(!a){if(i)throw A("invalid_request","this platform cannot keep a non-extractable X25519 key","key_storage");let c=Ui.utils.randomSecretKey();a={kind:"raw",secretKey:c,publicKey:Ui.getPublicKey(c)}}return xP(a,i),t.putIfAbsent?t.putIfAbsent(n,a):(await t.put(n,a),a)})(),o.set(n,s));try{let r=await s;return xP(r,i),UM(r)}finally{o.get(n)===s&&o.delete(n)}}gb();var OP={collection_not_yet_migrated:"Your collection needs an upgrade on your computer; your changes are safe",collection_migrating:"Your collection is being upgraded; changes will sync when it's done",update_required:"Update the app to keep syncing",account_suspended:"Syncing is paused: your account is suspended"},RP={offline:"You're offline",unreachable:"Can't reach the sync service",server_busy:"The sync service is busy; trying again shortly",rate_limited:"Syncing is paused for a moment",auth:"Sign in again to keep syncing"};function Rf(n,e,t,i){let o=n.mode!=="local_only"&&t&&Object.hasOwn(RP,t.kind)?t.kind:null,s={pending:n.pending,holds:n.holds,conflicts:n.unresolved,confirmedThrough:n.mode==="local_only"?null:n.confirmedThrough,health:o,live:n.mode==="local_only"||typeof i!="boolean"?null:i},r=n.pending>0?`, ${n.pending} change${n.pending===1?"":"s"} waiting`:"";if(n.mode==="local_only")return{...s,kind:"local",text:n.pending?`Saving${r}`:"Saved on this device"};if(e&&Object.hasOwn(OP,e))return{...s,kind:e,text:`${OP[e]}${r}`};if(n.installing)return{...s,kind:"installing",text:`Loading the collection (${n.installing.done}/${n.installing.total})`};if(o){let c=n.pending?`. ${n.pending} change${n.pending===1?" is":"s are"} saved on this device and will sync later`:"";return{...s,kind:o==="offline"||o==="unreachable"?"offline":n.confirmedThrough<n.headKnown?"catching_up":"synced",text:`${RP[o]}${c}`}}if(n.connection!=="online")return{...s,kind:"offline",text:`Offline; synced through ${n.confirmedThrough}${r}`};if(n.confirmedThrough<n.headKnown)return{...s,kind:"catching_up",text:`Catching up (${n.confirmedThrough}/${n.headKnown})${r}`};let a=s.live===!1?". Live updates are paused; changes from other devices appear when you come back to this app":"";return{...s,kind:"synced",text:`Synced through ${n.confirmedThrough}${r}${a}`}}function EP(n){return n.state==="confirmed"}wb();up();Cf();Xe();Po();ne();function aw(n,e){for(let t of n.targets??[]){if(!/^[0-9a-f]{64}$/i.test(t.noise_pk)||!t.url||!t.device)continue;let i={url:t.url,targetDevice:t.device,noisePublicKey:Lr(t.noise_pk)};return t.relay_collection?i.pipe={collection:t.relay_collection,accessToken:e}:t.kind==="hosted"&&(i.prologueFirst=!0),i}return null}function MP(n){let e;try{e=new URL(n.server)}catch{throw A("invalid_request","The control plane requires an HTTPS origin")}if(e.protocol!=="https:"&&!!1||e.username||e.password||e.pathname!=="/"||e.search||e.hash)throw A("invalid_request","The control plane requires an HTTPS origin without credentials, path, query or fragment");let t=`${e.origin}/v1/next/collections/${encodeURIComponent(n.collection)}/route`,i=n.fetch??globalThis.fetch.bind(globalThis);return async()=>{let o=await n.accessToken(),s;try{s=await i(t,{headers:{authorization:`Bearer ${o}`},redirect:"error"})}catch{throw A("unavailable","cannot reach the control plane","control_unreachable")}if(s.status===401)throw A("unauthenticated","the control plane refused the access token");if(s.status===409)throw A("unauthenticated","this app's key is not registered with its grant","client_key_required");if(!s.ok)throw A("unavailable",`control plane answered ${s.status}`,"control_error");let r=await s.json(),a=gi(r.availability);if(a?.state==="unavailable")throw Nn(a.reason);let c=aw(r,o);if(!c&&r.reason==="no_device_registered")throw A("unavailable","this collection has no device set up to serve it","no_device_registered");return c}}Po();fp();uw();ne();var gp="mdbase.notification",hw="mdbase.notification.click",DP=/^[\x21-\x7e]{1,256}$/,WM=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,xo=n=>A("invalid_request",n,"invalid_push_payload"),HM=()=>A("upgrade_required","The push uses an envelope version this SDK does not support.","unsupported_push_version");function zP(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{throw xo("The push payload is not JSON.")}else if(n&&typeof n=="object"&&typeof n.json=="function")try{n=n.json()}catch{throw xo("The push payload is not JSON.")}if(!n||typeof n!="object"||Array.isArray(n))throw xo("The push payload is not an object.");return n}function Ua(n,e,t){return typeof n=="string"&&n.length>=e&&n.length<=t}function BP(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let e=n;return!Ua(e.title,1,80)||e.body!==void 0&&!Ua(e.body,0,160)||e.tag!==void 0&&!Ua(e.tag,1,80)?null:Object.freeze({title:e.title,...typeof e.body=="string"&&e.body.length?{body:e.body}:{},...typeof e.tag=="string"?{tag:e.tag}:{}})}function FP(n,e,t){if(n.type!==gp)throw xo("The payload is not an mdbase notification.");if(e!==1)throw typeof e=="number"&&Number.isSafeInteger(e)&&e>1?HM():xo("The payload has no valid envelope version.");if(!Ua(n.signal_id,1,256)||!DP.test(n.signal_id)||!Ua(n.cursor,1,256)||!DP.test(n.cursor)||!Ua(n.criterion_id,1,100)||!WM.test(n.criterion_id))throw xo("The payload is not an mdbase notification.");return Object.freeze({version:1,signalId:n.signal_id,criterionId:n.criterion_id,cursor:n.cursor,presentation:t})}function Tf(n){let e=zP(n),t=FP(e,e.version,BP(e.presentation));if(!t.presentation)throw xo("The push has no valid presentation.");return t}function mw(n){if(!n||typeof n!="object"||Array.isArray(n))throw xo("The native notification data is not an object.");let e=n,t=typeof e.version=="string"&&/^[1-9][0-9]{0,8}$/.test(e.version)?Number(e.version):e.version;return FP(e,t,null)}function yw(n){try{return mw(n)}catch{return null}}function GM(n){return{type:gp,version:n.version,signal_id:n.signalId,criterion_id:n.criterionId,cursor:n.cursor}}async function gw(n,e,t={}){let i=Tf(e),o=i.presentation;return await n.showNotification(o.title,{...o.body?{body:o.body}:{},...o.tag?{tag:o.tag}:{},...t.icon?{icon:t.icon}:{},...t.badge?{badge:t.badge}:{},data:GM(i)}),i}function fw(n){return globalThis[n]}function YM(n){let e=globalThis.location;if(typeof e?.origin=="string"&&e.origin!=="null")return e.origin;try{return n?new URL(n).origin:null}catch{return null}}function $P(n,e,t){let i=()=>A("invalid_request",`The notification click ${t} must be on the app's own origin.`,"click_target_cross_origin");if(typeof n!="string")throw i();if(e===null){if(!n.startsWith("/")||n.startsWith("//")||n.startsWith("/\\"))throw i();return n}let o;try{o=new URL(n,`${e}/`)}catch{throw i()}if(o.origin!==e)throw i();return o.href}function VP(n,e={}){let t;try{t=zP(n.data?.text()??null)}catch{return!1}if(t.type!==gp)return!1;let i=e.registration??fw("registration");if(!i)throw A("invalid_request","No service worker registration to show the notification.","push_registration_missing");let o={...e.icon?{icon:e.icon}:{},...e.badge?{badge:e.badge}:{}};return n.waitUntil((async()=>{try{Tf(t)}catch(s){let r=s instanceof pe&&s.reason==="unsupported_push_version"?BP(t.presentation):null;if(!r)throw s;return await i.showNotification(r.title,{...r.body?{body:r.body}:{},...r.tag?{tag:r.tag}:{},...o}),null}return gw(i,t,o)})()),!0}function KP(n,e={}){let t=yw(n.notification.data);if(!t)return!1;n.notification.close();let i=e.clients??fw("clients"),o=fw("registration")?.scope,s=YM(o),r=e.scope===void 0?o:$P(e.scope,s,"scope"),a=e.url===void 0?r??"/":$P(e.url,s,"url");return i&&n.waitUntil((async()=>{let l=(await i.matchAll({type:"window",includeUncontrolled:!0})).find(d=>!r||d.url.startsWith(r));if(!l)return i.openWindow(a);await l.focus();let p={type:hw,notification:t};return l.postMessage(p),l})()),!0}Lf();bw();var bp="mdbase protected your edit",JM={conflict:{cause:"This file was also changed on another device while you were editing it.",detail:"Your version is kept here and is not synced until you choose what to keep."},unknown_provenance:{cause:"This file changed on disk in a way mdbase could not trace to an app or a sync.",detail:"The bytes on disk are kept here and are not synced until you confirm them."},deleted_elsewhere:{cause:"This file was deleted on another device after you edited it.",detail:"Your version is kept here; nothing is deleted until you choose."},read_only:{cause:"Changed with view access.",detail:"Edit access will not sync these changes. Submit or discard them."},editor_busy:{cause:"An editor still has this file open with unsaved changes.",detail:"mdbase waits so that it never overwrites what you are typing."},suspect_write:{cause:"The last write to this file looked incomplete, for example after a crash.",detail:"The file is kept aside and is not synced until you confirm it."}},XM={keep_mine:{label:"Keep mine",description:"Sync the version on this device.",resolution:"keep_mine",needs:"records.edit",discardsMine:!1},take_theirs:{label:"Take theirs",description:"Replace this file with the synced version.",resolution:"take_theirs",needs:"records.edit",discardsMine:!0},keep_both:{label:"Keep both",description:"Save your version as a copy next to the synced one.",resolution:"keep_both",needs:"records.edit",discardsMine:!1},delete:{label:"Delete",description:"Accept the deletion and remove this file here too.",resolution:"delete",needs:"records.delete",discardsMine:!0},use:{label:"Use merged",description:"Sync the document you merged.",resolution:"use",needs:"records.edit",discardsMine:!1},compare:{label:"Compare side by side",description:"Open both versions to merge them.",discardsMine:!1}},ZM={conflict:["keep_mine","take_theirs","compare","keep_both"],unknown_provenance:["keep_mine","take_theirs","compare","keep_both"],deleted_elsewhere:["keep_mine","delete"],read_only:["keep_mine","take_theirs","compare","keep_both"],editor_busy:["keep_mine","take_theirs","compare"],suspect_write:["keep_mine","take_theirs","compare","keep_both"]},wp="mdbase://hold/compare",jf=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ww(n,e){if(!jf.test(n)||!jf.test(e))throw new Error("holdCompareLink: collection and id are UUIDs");return`${wp}?collection=${n.toLowerCase()}&id=${e.toLowerCase()}`}function WP(n){if(typeof n!="string"||n.length>512||!n.startsWith(`${wp}?`))return null;let e=new URLSearchParams(n.slice(wp.length+1)),t=e.get("collection")??"",i=e.get("id")??"";return!jf.test(t)||!jf.test(i)?null:{collectionId:t.toLowerCase(),id:i.toLowerCase()}}function HP(n,e){let t=n.reason==="read_only",i=n.theirs!==void 0,o=(e.canCompare??!0)&&i,s=c=>!c||!e.capabilities||e.capabilities.includes(c),r=ZM[n.reason].filter(c=>c==="compare"?o:(!t||e.host===!0)&&(c!=="take_theirs"||i||t)).map(c=>{let l={action:c,...XM[c]};return t&&c==="take_theirs"&&(l.label="Discard local changes",l.description="Discard unsynced changes on this device.",l.needs="collection.read"),l}).filter(c=>s(c.needs)),a=JM[n.reason];return{id:n.id,path:n.path,reason:n.reason,title:bp,cause:a.cause,detail:a.detail,since:n.since,saves:n.saves,hasTheirs:i,actions:r,reversible:!t,reversibleNote:t?"Copy before discarding.":"You can change your mind later: resolving is an ordinary change, and the previous version stays in the collection's history. Keep both if you want your version kept as a file as well.",compareLink:o?ww(e.collectionId,n.id):null}}function GP(n){return n.length?n.length===1?`${bp}: ${n[0].path} is waiting for your choice.`:`${bp}: ${n.length} files are waiting for your choice.`:null}function YP(n){let e=(i,o)=>`${i} ${o}`,t=`, plus ${e(n.pending,"pending")}, plus ${e(n.holds,"held")}`;return n.mode==="local_only"?`Saved on this device${t}`:`Confirmed through ${n.confirmedThrough}${t}`}vp();Kf();vp();var Hf=15e3,Wf=(n,e)=>{try{return!!n&&n.id===e&&n.isCurrent()}catch{return!1}},Ms=(n,e)=>Rs(n,e?{cpOrigin:e}:{}),Hr=(n,e)=>Ms(n,e);function _p(n,e={}){let t=bq(n,e),i=wq(t,n,e);return i.kind==="opening"&&n.status==="opening"&&n.selectedCollectionId===i.collectionId&&n.openingProgress?{...i,progress:n.openingProgress}:i}function bq(n,e){let t=e.cpOrigin,i=n.selection,o=i?.requested??null;if(n.status==="closed")return{kind:"closed"};if(n.problem==="application_not_yet_available"||n.problem==="application_worker_unavailable"||n.problem==="browser_unsupported"||n.problem==="application_storage_unavailable")return{kind:"unavailable",problem:Hr(n.problem,t)};if(i?.state==="invalid")return{kind:"problem",collectionId:null,problem:Hr(i.problem??"application_selection_invalid",t)};let s=n.signIn?.state==="paired";if(i?.state==="approving"||n.status==="authorizing"){let p=i?.approval??null;return s?p?.kind==="add"?{kind:"authorizing",purpose:"add",collectionId:null}:{kind:"authorizing",purpose:"approve",collectionId:p?.collectionId??o?.collectionId??null}:{kind:"authorizing",purpose:"sign_in",collectionId:p?.collectionId??o?.collectionId??null}}let r=n.unsynced??null;if(r&&n.selectedCollectionId===r.collectionId){let p=r.collectionId;return n.status==="ready"&&Wf(e.connection,p)?{kind:"unsynced",collectionId:p,connection:e.connection,rechecking:n.readiness.checking}:n.status==="blocked"||n.status==="setup_required"&&!n.readiness.checking&&n.readiness.assessment?{kind:"problem",collectionId:p,problem:(n.status==="blocked"?Ms(n,t):Ms(n.readiness,t))??Hr("open_failed",t)}:{kind:"opening",collectionId:p,displayName:null,slow:!!e.slow}}if(n.status==="not_started"||n.status==="starting"){let p=o?.collectionId??null;return p&&n.status==="starting"?{kind:"opening",collectionId:p,displayName:o?.displayName??null,slow:!!e.slow}:{kind:"starting"}}if(n.status==="signed_out")return e.openingUnsynced&&!n.problem?{kind:"starting"}:{kind:"signed_out",notice:n.problem?Ms(n,t):null};if(n.status==="blocked"){let p=n.selectedCollectionId??o?.collectionId??null;return n.problem==="recovery_account_mismatch"?{kind:"problem",collectionId:p,problem:Rs(n,{cpOrigin:t,recoveryAccountLabel:n.recoveryAccountLabel})}:{kind:"problem",collectionId:p,problem:p&&n.removedScopeIds?.includes(p)?Hr("installation_scope_removed",t):Ms(n,t)??Hr("open_failed",t)}}if(n.status==="needs_unlock"&&n.selectedCollectionId){let p=n.selectedCollectionId,d=n.unlock??null;return d?{kind:"needs_unlock",collectionId:p,displayName:n.collections.find(u=>u.collectionId===p)?.displayName??o?.displayName??null,mode:d.mode,unlocking:d.unlocking,problem:d.problem===null?null:Ms(d.problem,t)??Hr("unlock_failed",t)}:{kind:"problem",collectionId:p,problem:Hr("open_failed",t)}}if(i?.state==="approval_required"&&o?.collectionId&&n.removedScopeIds?.includes(o.collectionId))return{kind:"problem",collectionId:o.collectionId,problem:Hr("installation_scope_removed",t)};if(i?.state==="approval_required"&&o?.collectionId)return{kind:"needs_approval",collectionId:o.collectionId,displayName:o.displayName,declined:i.problem==="application_selection_not_approved"};if(i?.state==="pending"&&o?.collectionId)return{kind:"opening",collectionId:o.collectionId,displayName:o.displayName,slow:!!e.slow};let a=i?.usable??(n.status==="ready"||n.status==="setup_required"?n.collections.find(p=>p.collectionId===n.selectedCollectionId)??null:null);if(n.status==="setup_required"&&a)return n.readiness.assessment?.status==="incompatible"?{kind:"problem",collectionId:a.collectionId,problem:Ms(n.readiness,t)??Hr("incompatible",t)}:{kind:"needs_setup",collectionId:a.collectionId,collection:a};if(n.status==="ready"&&a&&Wf(e.connection,a.collectionId))return{kind:"ready",collectionId:a.collectionId,collection:a,connection:e.connection,rechecking:n.readiness.checking,problem:null,unavailableTypes:n.readiness.assessment?.unavailableTypes??[]};let c=n.status==="opening"||n.status==="ready"||i?.state==="opening"||i?.state==="usable",l=n.selectedCollectionId??o?.collectionId??null;if(c&&l){let p=n.collections.find(d=>d.collectionId===l)?.displayName??o?.displayName??null;return{kind:"opening",collectionId:l,displayName:p,slow:!!e.slow}}return e.startPending&&s&&n.status==="unselected"&&!n.problem&&i?.state==="none"?{kind:"starting"}:{kind:"choosing",lastApproval:i?.lastApproval??null}}function wq(n,e,t){let i=t.previous;return i?.kind==="needs_setup"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&e.readiness.checking?i:i?.kind==="unsynced"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&Wf(t.connection,i.collectionId)?{...i,connection:t.connection,rechecking:!0}:!i||i.kind!=="ready"||n.kind==="ready"||!Wf(t.connection,i.collectionId)||e.selectedCollectionId!==i.collectionId?n:n.kind==="opening"&&n.collectionId===i.collectionId?{...i,connection:t.connection,rechecking:!0,problem:null}:n.kind==="problem"&&n.problem.transient?{...i,connection:t.connection,rechecking:!0,problem:n.problem}:n}function p1(n,e){return n?.kind==="ready"&&(e===void 0||n.collectionId===e)}xl();vp();Bn();nm();bt();var JT=["http","https","file","javascript","data","blob","about","capacitor","chrome-extension","moz-extension"];function _I(n,e){if(typeof n!="string"||!n||n.length>2048||n.includes("*"))return!1;let t=e&&typeof e=="object"?e.redirect_uris:void 0;if(!Array.isArray(t)||!t.includes(n))return!1;let{id:i,homepage:o}=e,s;try{s=new URL(n)}catch{return!1}if(s.username||s.password||s.hash)return!1;if(s.protocol==="https:"||s.protocol==="http:"){let a;try{a=new URL(String(o))}catch{return!1}return s.origin===a.origin&&(s.protocol==="https:"||Ye(s.origin))}let r=s.protocol.slice(0,-1);return typeof i=="string"&&r.includes(".")&&/^[a-z][a-z0-9+.-]*$/.test(r)&&!JT.includes(r)&&(r===i||r.startsWith(`${i}.`))&&s.hostname.length>0}am();Bn();ne();bt();var Ii=n=>A("unavailable","application asset unavailable",n),tL=()=>A("cancelled","application asset read fenced","application_asset_fenced");function Sr(n){if(n.aborted)throw tL()}function CI(n,e){let t=Object.freeze({...n}),i=Object.freeze({...e}),o,s;try{o=new URL(t.url),s=new URL(i.origin)}catch{throw Ii("application_asset_binding")}if(!Et(i.origin)||s.protocol!==o.protocol||!zo(i.environment)||kr(i.environment)&&!Bo(i.origin)||An(o)!==i.origin||o.username||o.password||o.search||o.hash||!/^[0-9a-f]{64}$/.test(t.sha256)||!Number.isSafeInteger(t.bytes)||t.bytes<1||!Number.isSafeInteger(t.maxBytes)||t.maxBytes<t.bytes||t.maxBytes>4*1024*1024)throw Ii("application_asset_binding");let r=i.fetch??globalThis.fetch;if(typeof r!="function")throw Ii("application_asset_unavailable");let a=new URL(o.href);return a.searchParams.set("mdbase-sdk-asset",t.sha256),async({signal:c})=>{Sr(c);let l=null,p;try{globalThis.caches&&(l=await globalThis.caches.open("mdbase.sdk.application-assets.v1"),p=await l.match(a.href))}catch{}let d=p!==void 0;if(!p){Sr(c);try{p=await r(o.href,{signal:c,credentials:"omit",cache:"force-cache",redirect:"error"})}catch{throw Sr(c),Ii("application_asset_fetch")}}let u=p.body?.getReader();if(!u)throw Sr(c),Ii("application_asset_response");let f=!1,h=null,m=()=>h??=Promise.resolve().then(async()=>{try{await u.cancel()}catch{throw Ii("application_asset_stop_failed")}}),b=()=>{m().catch(()=>{})};c.addEventListener("abort",b,{once:!0});try{if(Sr(c),!p.ok||p.redirected||p.url&&p.url!==o.href)throw Ii("application_asset_response");let w=p.headers.get("content-length");if(w!==null&&(!/^(?:0|[1-9][0-9]*)$/.test(w)||Number(w)!==t.bytes))throw Ii("application_asset_binding");let g=new Uint8Array(t.bytes),y=0;for(;;){let _=await u.read();if(Sr(c),_.done){f=!0;break}if(!(_.value instanceof Uint8Array)||_.value.byteLength>t.bytes-y)throw Ii("application_asset_binding");g.set(_.value,y),y+=_.value.byteLength}if(y!==t.bytes)throw Ii("application_asset_binding");let v=new Uint8Array(await crypto.subtle.digest("SHA-256",g));if(Sr(c),Array.from(v,_=>_.toString(16).padStart(2,"0")).join("")!==t.sha256)throw Ii("application_asset_binding");if(Sr(c),l&&!d)try{await l.put(a.href,new Response(g))}catch{}return Sr(c),g}catch(w){throw Sr(c),Q(w)?w:Ii("application_asset_response")}finally{c.removeEventListener("abort",b);try{(!f||c.aborted)&&await m()}finally{u.releaseLock()}}}}Vo();Bn();ne();im();bt();var Ds={runtime:{sha256:"5f296cb57d8c1da1a9710f91a893efece2340ff893583b088feb531a16ced2ef",bytes:3849226,maxBytes:3849226,source:{repository:"mdbase-dev/mdbase-connect",commit:"61dd7650312f04e942de51536b6441142c79ec48"}},sqlite:{sha256:"2ee8f3dab694532afc8840e07703127287662d08b74e6ff50491ce63f00d5752",bytes:868907,maxBytes:11e5,initializer:{sha256:"a6d3fe46aa3f924e7686329f97b0564549ef1f787e0c19924179aef7f72bcc01",bytes:642742},asyncProxy:{sha256:"9f1970e05ee07a79332498858740b705eeb1dcee03bc150f6f690bc0fb5f0a06",bytes:32505}}};var lm={},iL=Object.freeze({sha256:Ds.runtime.sha256,bytes:Ds.runtime.bytes,maxBytes:Ds.runtime.maxBytes}),rL=Object.freeze({sha256:Ds.sqlite.sha256,bytes:Ds.sqlite.bytes,maxBytes:Ds.sqlite.maxBytes}),sd=()=>A("unavailable","SDK packaged application assets unavailable","application_packaged_assets_unavailable");function OI(n,e){if(!zo(n))throw sd();let t=Ns();xi({environment:n,appOrigin:e,release:t});let i,o;try{let a=new URL(lm.url);if(An(a)!==e||a.username||a.password||(i=new URL("../native/runtime.wasm",lm.url),o=new URL("../native/sqlite3.wasm",lm.url),An(i)!==e||An(o)!==e))throw sd()}catch{throw sd()}let s=(a,c)=>Object.freeze({url:a.href,...c}),r=async a=>{let c=globalThis.WorkerGlobalScope;if(typeof c!="function"||!(globalThis instanceof c))throw sd();let l=new URL("../native/sqlite3.js",lm.url),{default:p}=await import(l.href);return globalThis.sqlite3ApiConfig={disable:{vfs:{opfs:!0,"opfs-wl":!0}}},p(a)};return Object.freeze({release:()=>Ns(),runtime:s(i,iL),sqlite:s(o,rL),initializeSqlite:r})}var oL="mdbase:startup:",sL=new Set(["signed_out","authorizing","choosing","needs_approval","needs_setup","problem","unavailable","closed"]);function aL(){let n=globalThis.performance;return typeof n?.now=="function"&&typeof n.measure=="function"?n:null}var cm=class{clock=aL();began=this.clock?.now()??0;stage=null;since=this.began;done=this.clock===null;measure(e,t,i){try{this.clock?.measure(`${oL}${e}`,{start:t,end:i})}catch{}}async time(e,t){if(this.done)return t();let i=this.clock.now();try{return await t()}finally{this.measure(e,i,this.clock.now())}}observe(e){if(this.done)return;let t=e.kind==="opening"&&e.progress?`opening:${e.progress}`:e.kind;if(t===this.stage)return;let i=this.clock.now();this.stage!==null&&this.measure(this.stage,this.since,i),this.stage=t,this.since=i;let o=e.kind==="ready"||e.kind==="unsynced";o&&this.measure("total",this.began,i),(o||sL.has(e.kind))&&(this.done=!0)}};im();bt();Vo();Bn();var dn=class extends Error{constructor(t){super("SDK collection selection unavailable");this.code=t;this.name="ApplicationSelectionError"}code},ad=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",pn=(n,e,t=null)=>Object.freeze({requestedCollectionId:n,source:e,problem:t});function RI(n,e){return n.source!=="none"?n:e.storedId!==void 0&&e.storedId!==null?ad(e.storedId)?pn(e.storedId,"stored"):pn(null,"stored","application_selection_invalid"):e.collections.length>1024||e.collections.some(t=>!ad(t.collectionId))||new Set(e.collections.map(t=>t.collectionId)).size!==e.collections.length?pn(null,"none","application_selection_metadata"):e.preferredId!==void 0&&e.preferredId!==null?ad(e.preferredId)&&e.collections.some(t=>t.collectionId===e.preferredId)?pn(e.preferredId,"preferred"):pn(null,"preferred","application_selection_metadata"):e.collections.length===1?pn(e.collections[0].collectionId,"sole"):pn(null,"none")}var pm=class{port;origin;parameter;fallback;listeners=new Set;snapshot=pn(null,"none");stopListening=null;started=!1;closed=!1;constructor(e,t={},i=null){let o,s;try{o=new URL(e),s=new URL(t.fallbackPath??"/",o)}catch{throw new dn("application_selection_binding")}let r=t.parameter??"collection";if(!Et(e)||An(o)!==e||An(s)!==e||s.username||s.password||s.search||s.hash||typeof r!="string"||!/^[a-z][a-zA-Z0-9_.-]{0,63}$/.test(r)||["code","state","error","error_description"].includes(r))throw new dn("application_selection_binding");this.origin=e,this.parameter=r,this.fallback=s.href,this.port=i}getSnapshot(){return this.snapshot}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.snapshot:(this.started=!0,this.stopListening=this.port?.listen(()=>{this.closed||this.publish(this.read())})??null,this.publish(this.read()),this.snapshot)}check(){if(this.closed)throw new dn("application_selection_fenced")}url(){let e;try{e=new URL(this.port.href())}catch{throw new dn("application_selection_binding")}if(An(e)!==this.origin||e.username||e.password)throw new dn("application_selection_binding");return e}read(){if(!this.port)return pn(null,"none");let e;try{e=this.url().searchParams.getAll(this.parameter)}catch{return pn(null,"url","application_selection_binding")}return e.length===0?pn(null,"none"):e.length!==1?pn(null,"url","application_selection_duplicate"):e[0]===""?pn(null,"url","application_selection_empty"):ad(e[0])?pn(e[0],"url"):pn(null,"url","application_selection_invalid")}publish(e){if(!(this.snapshot.requestedCollectionId===e.requestedCollectionId&&this.snapshot.source===e.source&&this.snapshot.problem===e.problem)){this.snapshot=e;for(let t of[...this.listeners])try{t()}catch{}}}select(e,t={}){if(this.check(),e!==null&&!ad(e))throw new dn("application_selection_invalid");let i=t.history??"replace";if(i!=="push"&&i!=="replace")throw new dn("application_selection_binding");if(this.port){let o=this.url(),s=o.href;e===null?o.searchParams.delete(this.parameter):o.searchParams.set(this.parameter,e),o.href!==s&&this.port.write(o.href,i)}return this.publish(pn(e,e===null?"none":"user")),this.snapshot}returnUrl(e){this.check();try{let t=new URL(e,this.origin);if(An(t)===this.origin&&!t.username&&!t.password)return t.href}catch{}return this.fallback}close(){if(this.closed)return;this.closed=!0;let e=this.stopListening;this.stopListening=null,e?.(),this.listeners.clear()}};function EI(){if(typeof window>"u"||!window.location||!window.history)return null;let n=window;return Object.freeze({href:()=>n.location.href,write:(e,t)=>{t==="push"?n.history.pushState(n.history.state,"",e):n.history.replaceState(n.history.state,"",e)},listen:e=>(n.addEventListener("popstate",e),()=>n.removeEventListener("popstate",e))})}var lL=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",Il=n=>n.status==="ready"||n.status==="setup_required",Cl=n=>n.status==="needs_unlock",MI=n=>n.signIn?.state==="paired"&&(n.status==="unselected"||n.status==="blocked"||Il(n)||Cl(n)),cL=n=>n.status==="not_started"||n.status==="starting"||n.status==="signed_out"||n.status==="authorizing",Pr=(n,e)=>e===null?null:n.collections.find(t=>t.collectionId===e)??null,dm=class{browser;session;memory;preferredId;schedule;listeners=new Set;stops=[];value;key="";startTarget=null;startApplied=!1;startHeld=!0;failed=null;before=null;attempted=void 0;lastRequested=null;opening=null;approval=null;lastApproval=null;declined=null;remembered=void 0;queued=!1;started=!1;closed=!1;constructor(e){this.browser=e.browser,this.session=e.session,this.memory=e.memory??null,this.preferredId=e.preferredId??null,this.schedule=e.schedule??(t=>{setTimeout(t,0)}),this.value=this.derive(),this.key=this.keyOf(this.value)}startPending(){return this.startHeld}keyOf(e){return JSON.stringify(e)+(this.startHeld?"|start":"")}getSnapshot(){return this.value}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.value:(this.started=!0,this.browser.start(),this.stops.push(this.browser.subscribe(this.changed),this.session.subscribe(this.changed)),this.changed(),this.value)}select(e,t={}){this.check(),this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}),this.declined=null,this.refresh(),e===null&&this.remember(null);let i=this.session.getSnapshot();return e!==null&&i.selectedCollectionId===e&&i.status==="opening"?(this.attempted=e,Promise.resolve(this.value)):this.whenIdle(async()=>{let o=this.session.getSnapshot();this.requested().requestedCollectionId===e&&((e===null?o.selectedCollectionId===null&&o.status!=="opening":o.selectedCollectionId===e&&(Il(o)||Cl(o))||!Pr(o,e))||await this.run(e,t,!0))}).then(()=>this.value)}chooseAnother(e={}){return this.select(null,{...e,history:"push"})}approve(e,t={}){if(this.check(),e!=null&&!lL(e))return Promise.reject(new dn("application_selection_invalid"));if(this.approval&&!this.approval.settled)return Promise.reject(new dn("application_selection_busy"));e!=null&&e!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}));let i=this.session.getSnapshot().signIn,o=i?.nativeSelection?.requestId??i?.collectionSelection?.requestId??null,s,r=e===null?null:this.requested().requestedCollectionId;try{s=this.session.authorize({...t.signal?{signal:t.signal}:{},collectionHint:r})}catch(p){return Promise.reject(p)}let a=r===null?"add":"collection",c=new Set(this.session.getSnapshot().collections.map(p=>p.collectionId)),l={receipt:o,kind:a,collectionId:r,before:c,settled:!1};return this.approval=l,this.lastApproval=null,this.declined=null,this.attempted=void 0,this.refresh(),s.then(()=>(l.settled=!0,this.changed(),this.value),p=>{if(this.approval===l){this.approval=null;let d=p?.code;(d==="cancelled"||d==="aborted")&&(this.lastApproval=Object.freeze({kind:a,outcome:"closed",collectionId:r}))}throw this.changed(),p})}clearLastApproval(){this.check(),this.lastApproval=null,this.refresh()}reauthorize(e={}){this.check();let t=this.value.usable?.collectionId??this.requested().requestedCollectionId;return t===null?Promise.reject(new dn("application_selection_empty")):this.approve(t,e)}resync(){this.closed||(this.attempted=void 0,this.failed=null,this.approval=null,this.changed())}close(){if(!this.closed){this.closed=!0;for(let e of this.stops.splice(0))try{e()}catch{}this.browser.close(),this.listeners.clear()}}check(){if(this.closed)throw new dn("application_selection_fenced")}requested(){let e=this.browser.getSnapshot(),t=this.startTarget;return t&&e.source==="user"&&e.requestedCollectionId===t.requestedCollectionId?t:e}changed=()=>{this.closed||(this.refresh(),!(this.queued||!this.started)&&(this.queued=!0,this.schedule(()=>{this.queued=!1,this.reconcile()})))};refresh(){let e=this.requested().requestedCollectionId;if(e!==this.lastRequested&&(this.lastRequested=e,this.attempted=void 0,this.failed=null,this.declined!==e&&(this.declined=null)),e!==null&&this.attempted===e){let o=this.session.getSnapshot();o!==this.before&&(o.status==="blocked"?o.selectedCollectionId===e:o.status==="unselected"&&o.problem!==null)&&(this.failed=e)}let t=this.derive(),i=this.keyOf(t);if(t.state==="usable"&&this.remember(t.usable.collectionId),i!==this.key){this.key=i,this.value=Object.freeze(t);for(let o of[...this.listeners])try{o()}catch{}}}remember(e){if(!(!this.memory||this.remembered===e)){this.remembered=e;try{this.memory.write(e)}catch{}}}derive(){let e=this.session.getSnapshot(),t=this.requested(),i=t.requestedCollectionId,o=Pr(e,i),s=Il(e)?Pr(e,e.selectedCollectionId):null,r,a=null;t.problem?(r="invalid",a=t.problem):this.approval?r="approving":i===null?r="none":s?.collectionId===i?r="usable":e.selectedCollectionId===i&&(e.status==="blocked"||e.status==="opening"||Cl(e))?r=e.status==="blocked"?"blocked":"opening":MI(e)?o?r="opening":this.session.listing?.()?r="pending":(r="approval_required",this.declined===i&&(a="application_selection_not_approved")):r="pending";let c=this.approval?Object.freeze({kind:this.approval.kind,collectionId:this.approval.collectionId,reopenable:this.approval.settled}):null;return Object.freeze({state:r,problem:a,approval:c,lastApproval:this.lastApproval,usable:s?Object.freeze({...s}):null,requested:Object.freeze({collectionId:i,source:t.source,displayName:o?.displayName??null,approved:o!==null})})}async whenIdle(e){for(;this.opening;)await this.opening;this.check(),await e()}run(e,t={},i=!1){this.attempted=e,this.failed=null,this.before=this.session.getSnapshot();let o=t.signal?{signal:t.signal}:{},s=Promise.resolve().then(()=>e===null?this.session.clear(o):this.session.open(e,o)),r=s.then(()=>{},()=>{}).finally(()=>{this.opening===r&&(this.opening=null,this.changed())});return this.opening=r,i?s.then(()=>{}):r}async reconcile(){if(this.closed||this.opening)return;let e=this.session.getSnapshot();if(this.approval)if(this.approval.settled&&e.status==="signed_out"&&e.problem!==null){let o=this.approval;this.approval=null,this.attempted=void 0,this.lastApproval=Object.freeze({kind:o.kind,outcome:e.problem==="approval_window_closed"?"closed":"declined",collectionId:o.collectionId}),this.refresh()}else{if(!this.approval.settled||cL(e))return;let o=e.signIn?.nativeSelection;if(o&&o.requestId!==this.approval.receipt&&!Pr(e,o.collectionId)&&this.session.listing?.())return;this.finishApproval(e)}if(!MI(e))return;if(!this.startApplied){if(this.browser.getSnapshot().source==="none"){let o=null;try{o=this.memory?.read()??null}catch{}if(o!==null&&!Pr(e,o)&&this.session.listing?.()){this.startHeld=!1,this.refresh();return}this.startApplied=!0;let s=RI(this.browser.getSnapshot(),{storedId:o,preferredId:this.preferredId,collections:e.collections});s.requestedCollectionId!==null&&!s.problem&&(this.browser.select(s.requestedCollectionId,{history:"replace"}),this.startTarget=s)}else this.startApplied=!0;this.startHeld=!1,this.refresh()}let t=this.requested(),i=t.requestedCollectionId;if(!t.problem){if(i===null){this.attempted!==null&&e.selectedCollectionId!==null&&(Il(e)||Cl(e))&&this.run(null);return}if(e.selectedCollectionId===i&&(Il(e)||Cl(e)||e.status==="opening")){this.attempted=i,this.failed=null;return}if(e.selectedCollectionId===i&&e.status==="blocked"){this.failed=i;return}Pr(e,i)&&(this.attempted===i&&(this.failed!==i||e.status!=="unselected"||e.problem!==null)||(this.failed=null,this.run(i)))}}finishApproval(e){let t=this.approval,i=t.receipt;this.approval=null,this.attempted=void 0;let o=u=>u!==null&&Pr(e,u)?t.before.has(u)?"unchanged":"added":e.approval?.outcome==="closed"?"closed":"declined",s=e.signIn?.collectionSelection,r=e.signIn?.nativeSelection,c=(r&&r.requestId!==i&&Pr(e,r.collectionId)?r.collectionId:null)??(s&&s.requestId!==i&&Pr(e,s.selectedCollectionId)?s.selectedCollectionId:null);if(c!==null){c!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(c,{history:"replace"})),this.lastApproval=Object.freeze({kind:t.kind,outcome:o(c),collectionId:c}),this.refresh(),e.selectedCollectionId===c&&(Il(e)||Cl(e)||e.status==="opening")?this.attempted=c:this.run(c);return}let l=this.requested().requestedCollectionId;l!==null&&!Pr(e,l)&&(this.declined=l);let p=t.kind==="add"?e.collections.find(u=>!t.before.has(u.collectionId))?.collectionId??null:null,d=t.kind==="add"?p:t.collectionId??l;this.lastApproval=Object.freeze({kind:t.kind,outcome:o(d),collectionId:d}),this.refresh()}};bd();l_();ne();var Vl="unsynced",ij="current";var k_="moved.",$m=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;var S_=class extends Error{constructor(t){super(`app unsynced collection: ${t}`);this.reason=t;this.name="AppUnsyncedCollectionError"}reason},si=(n="unavailable")=>new S_(n);function rj(n){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!=="account,collection,device,installation,replica,version")throw si();let e=n,t=[e.account,e.installation,e.collection,e.replica,e.device];if(e.version!==1||t.some(i=>typeof i!="string"||!$m.test(i))||new Set(t).size!==t.length)throw si();return Object.freeze({...e})}function FC(n,e){if(e.throwIfAborted(),!globalThis.indexedDB)throw si();return new Promise((t,i)=>{let o=indexedDB.open(n,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(si("fenced"))};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(s||o.result.objectStoreNames.length)throw si();o.result.createObjectStore(Vl)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{if(r(),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(Vl)){o.result.close(),i(si());return}t(o.result)}})}async function oj(n,e,t,i,o){let s=await FC(n,o);try{return await new Promise((r,a)=>{let c=s.transaction(Vl,i?"readwrite":"readonly",{durability:"strict"}),l=null,p=null;c.onabort=c.onerror=()=>a(p??si()),c.oncomplete=()=>r(l);let d=c.objectStore(Vl),u=d.get(e);u.onsuccess=()=>{try{if(u.result!==void 0){l=t(u.result);return}if(!i)return;let f=t(i());d.add(f,e),l=f}catch(f){p=f,c.abort()}}})}finally{s.close()}}async function sj(n,e,t){let i=await FC(n,e);try{return await new Promise((o,s)=>{let r=i.transaction(Vl,"readwrite",{durability:"strict"}),a,c=null;r.onabort=r.onerror=()=>s(c??si()),r.oncomplete=()=>o(a),t(r.objectStore(Vl),l=>{a=l},l=>{c=l,r.abort()})})}finally{i.close()}}var VC=/^sha256:[0-9a-f]{64}$/;function KC(n){let e=n;if(!e||e.version!==1||!e.revisions||typeof e.revisions!="object"||Array.isArray(e.revisions))throw si();let t=new Map;for(let[i,o]of Object.entries(e.revisions)){if(!$m.test(i)||typeof o!="string"||!VC.test(o))throw si();t.set(i,o)}return t}async function WC(n,e,t){if(!$m.test(e))throw si("binding");return await oj(n,k_+e,KC,null,t)??new Map}function HC(n,e,t,i){for(let[o,s]of t)if(!$m.test(o)||!VC.test(s))return Promise.reject(si("binding"));return sj(n,i,(o,s,r)=>{let a=o.get(ij),c=o.get(k_+e);c.onsuccess=()=>{try{if(a.result===void 0||rj(a.result).collection!==e){r(si());return}let l=c.result===void 0?new Map:KC(c.result);for(let[p,d]of t)l.set(p,d);o.put({version:1,revisions:Object.fromEntries(l)},k_+e),s()}catch(l){r(l)}}})}var O7=720*60*60*1e3;ne();var P_=new WeakMap,aj=100,lj=(n,e)=>`unsynced/1\0${n}\0${e}`;async function zm(n,e,t){try{return await n.get(e,void 0,t)}catch(i){if(Q(i,"not_found"))return null;throw i}}function cj(n,e){let t=n.lastIndexOf("/"),i=n.lastIndexOf("."),o=i>t+1?i:n.length;return`${n.slice(0,o)} ${e}${n.slice(o)}`}async function pj(n,e){let t=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`unsynced/1\0copy\0${n}\0${e}`))).slice(0,16);t[6]=t[6]&15|128,t[8]=t[8]&63|128;let i=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}function dj(n){if(n.document===void 0)throw A("invalid_request","the source record has no document");return{path:n.path,document:n.document}}async function x_(n,e,t={}){let{signal:i}=t,o=t.map??dj;if(n.collection===e.collection)throw A("invalid_request","a collection cannot be transferred into itself");let s=t.ledger?await t.ledger.read(n.collection,i):new Map,r=new Map,a=await e.describe(i?{signal:i}:{}),c=new Set(a.types.map(w=>w.name.toLowerCase())),l=[],p=new Map,d=new Set,u=new Set,f=0;for await(let w of n.pages({},{body:!0,document:!0},i))for(let g of w.records){i?.throwIfAborted();let y=null;if(await zm(e,g.id,i)){let S=s.get(g.id);if(S===void 0&&r.set(g.id,g.revision),S===void 0||S===g.revision){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}if(y=await pj(g.id,g.revision),await zm(e,y,i)){r.set(g.id,g.revision),l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}}let v=await o(g);if(v===null){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"skipped"}));continue}if(!v||typeof v!="object"||v.id!==void 0&&v.id!==g.id)throw A("invalid_request","the transfer map must keep the record ID");r.set(g.id,g.revision);let _=v.path??g.path,k=_;for(let S=2;d.has(k.toLowerCase())||await zm(e,{path:k},i);S++){if(S>aj)throw A("conflict",`no free path beside ${_}`,"path_taken");k=cj(_,S)}d.add(k.toLowerCase());for(let S of v.type?[v.type]:g.types)c.has(S.toLowerCase())||u.add(S);p.set(g.id,Object.freeze({...v,id:y??g.id,path:k})),k!==_&&!y&&f++,l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:y?"changed":"create",path:k,...y?{copyId:y}:k!==_?{renamedFrom:_}:{}}))}let h=new Map;if(t.addTypes&&u.size){let w=new Map((await n.describe(i?{signal:i}:{})).types.map(g=>[g.name.toLowerCase(),g]));for(let g of[...u].sort()){let y=w.get(g.toLowerCase());if(!y?.revision)continue;let v;try{v=(await n.resources.get(y.path,i)).text}catch(_){if(Q(_,"not_found"))continue;throw _}typeof v=="string"&&(h.set(y.name,v),u.delete(g))}}let m=w=>l.filter(g=>g.outcome===w).length,b=Object.freeze({source:n.collection,destination:e.collection,items:Object.freeze(l),missingTypes:Object.freeze([...u].sort()),addTypes:Object.freeze([...h.keys()].sort()),counts:Object.freeze({create:m("create"),present:m("present"),skipped:m("skipped"),renamed:f,changed:m("changed")})});return P_.set(b,Object.freeze({inputs:p,types:h,map:t.map,ledger:t.ledger,settle:r})),b}async function GC(n,e,t,i){let o=P_.get(n);if(!o)throw A("invalid_request","plan the transfer first");if(e.collection!==n.source||t.collection!==n.destination)return!1;let s=await x_(e,t,{...o.map?{map:o.map}:{},...o.ledger?{ledger:o.ledger}:{},...i?{signal:i}:{}});return s.counts.create===0&&s.counts.changed===0}async function YC(n,e,t={}){let i=P_.get(n),{signal:o}=t;if(!i)throw A("invalid_request","plan the transfer first");let{inputs:s}=i;if(e.collection!==n.destination)throw A("invalid_request","the plan is for another collection");let r=n.items.filter(m=>m.outcome==="create"||m.outcome==="changed"),a=[],c=[],l=0,p=n.counts.present,d=0,u=()=>{try{t.onProgress?.(Object.freeze({done:d,total:r.length}))}catch{}};i.ledger&&i.settle.size&&await i.ledger.record(n.source,i.settle,o);let f=[],h=[];for(let[m,b]of i.types){o?.throwIfAborted();try{await e.createType(b,o?{signal:o}:{}),f.push(m)}catch(w){o?.throwIfAborted(),Q(w,"conflict")?f.push(m):h.push(Object.freeze({name:m,code:Q(w)?w.code:"unavailable"}))}}u();for(let m of r){o?.throwIfAborted();try{let b=await e.create(s.get(m.sourceId),{intent:lj(n.source,m.copyId??m.sourceId),...o?{signal:o}:{}});c.push(b.mutationId),l++}catch(b){o?.throwIfAborted(),await zm(e,m.copyId??m.sourceId,o).catch(()=>null)?p++:a.push(Object.freeze({sourceId:m.sourceId,code:Q(b)?b.code:"unavailable"}))}d++,u()}return Object.freeze({source:n.source,destination:n.destination,created:l,present:p,skipped:n.counts.skipped,failed:Object.freeze(a),addedTypes:Object.freeze(f),failedTypes:Object.freeze(h),mutations:Object.freeze(c),retired:!1})}Km();Nf();Ko();Yf();var tO="mdbn-app-tabs/1",I_="\0mdbn-port";var Pd=n=>typeof n=="string"&&/^[0-9a-f-]{36}$/.test(n);function mj(n){if(!n||typeof n!="object")return null;let e=n;switch(e.k){case"join":case"leave":return Pd(e.tab)?e:null;case"leader":case"bye":case"fault":case"signedOut":case"signedIn":return Pd(e.leader)?e:null;case"joined":return Pd(e.tab)&&Pd(e.leader)&&typeof e.binding=="string"?e:null;case"m":return Pd(e.tab)&&typeof e.up=="boolean"&&Number.isSafeInteger(e.s)&&e.s>=0?e:null;default:return null}}function C_(n){if(!n||typeof n!="object")return!1;let e=Object.getPrototypeOf(n);return e===Object.prototype||e===null}function O_(n,e,t=0){return n instanceof MessagePort?{[I_]:e(n)}:t>=6?n:Array.isArray(n)?n.map(i=>O_(i,e,t+1)):C_(n)?Object.fromEntries(Object.entries(n).map(([i,o])=>[i,O_(o,e,t+1)])):n}function R_(n,e,t,i=0){if(C_(n)&&Object.keys(n).length===1&&Number.isSafeInteger(n[I_])){let o=e(n[I_]);return t.push(o),o}return i>=6?n:Array.isArray(n)?n.map(o=>R_(o,e,t,i+1)):C_(n)?Object.fromEntries(Object.entries(n).map(([o,s])=>[o,R_(s,e,t,i+1)])):n}var Wm=class{constructor(e,t){this.send=e;this.up=t;this.next=t?1:2}send;up;streams=new Map;next;bridge(e,t){this.streams.set(t,e),e.onmessage=i=>{let o=i.ports.length?O_(i.data,s=>{let r=this.next;return this.next+=2,this.bridge(s,r),r}):i.data;try{this.send(t,o)}catch{}}}deliver(e,t){let i=this.streams.get(e);if(!i)return;let o=[],s=R_(t,r=>{let a=new MessageChannel;return this.bridge(a.port1,r),a.port2},o);try{i.postMessage(s,o)}catch{for(let r of o)r.close()}}close(){for(let e of this.streams.values()){e.onmessage=null;try{e.close()}catch{}}this.streams.clear()}},Hm=class{constructor(e,t,i,o=()=>{}){this.env=t;this.lost=i;this.signedInElsewhere=o;this.base=e.storageNamespace===void 0?`${tO}/${e.cpOrigin}/${e.appId}/${e.build}`:`${tO}/namespace/${JSON.stringify([e.cpOrigin,e.appId,e.build,e.storageNamespace])}`}env;lost;signedInElsewhere;tab=crypto.randomUUID();base;channel=null;presence=null;leading=null;hub=null;follower=null;signingOut=!1;announced=!1;joining=null;get leader(){return this.leading!==null}open(){if(this.channel)return this.channel;let e=new this.env.BroadcastChannel(this.base);return e.onmessage=t=>this.received(mj(t.data)),this.channel=e,e}post(e){this.channel?.postMessage(e)}hold(e,t,i){return new Promise((o,s)=>{let r=c=>{if(!c){o(null);return}return new Promise(l=>o(l))};(t?this.env.locks.request(e,{ifAvailable:!0},r):this.env.locks.request(e,{signal:i},r)).catch(s)})}async elect(e){if(e.throwIfAborted(),this.open(),this.presence??=await this.hold(`${this.base}/tab/${this.tab}`,!0),e.throwIfAborted(),this.leading||(this.leading=await this.hold(`${this.base}/leader`,!0)),this.leading)return e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};let t=new AbortController,i=()=>t.abort();e.addEventListener("abort",i,{once:!0});let o=this.hold(`${this.base}/leader`,!1,t.signal),s;try{s=await new Promise((p,d)=>{o.then(u=>{u&&p({release:u})},()=>{}),this.joining={resolve:p,reject:d},e.addEventListener("abort",()=>d(e.reason),{once:!0}),this.post({k:"join",tab:this.tab})})}catch(p){throw this.joining=null,t.abort(),p}finally{e.removeEventListener("abort",i)}if(this.joining=null,"release"in s)return this.leading=s.release,e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};e.aborted&&(t.abort(),e.throwIfAborted());let r=new MessageChannel,a=this.tab,c=new Wm((p,d)=>this.post({k:"m",tab:a,up:!0,s:p,d}),!0);c.bridge(r.port2,0);let l={leader:s.leader,tunnel:c,wait:t,port:r.port1,left:!1,signedOut:!1};return this.follower=l,o.then(p=>{if(p){if(this.follower!==l||l.left){p();return}this.leading=p,this.departed(l)}},()=>{}),{kind:"follower",port:r.port1,binding:s.binding,leave:()=>this.leave(l)}}lead(e){!this.leading||this.hub||(this.hub={followers:new Map,worker:e,faulted:!1},this.post({k:"leader",leader:this.tab}))}fault(){!this.hub||this.hub.faulted||(this.hub.faulted=!0,this.post({k:"fault",leader:this.tab}))}signedOut(){this.hub&&(this.signingOut=!0,this.post({k:"signedOut",leader:this.tab}))}signedIn(){!this.hub||this.announced||this.signingOut||(this.announced=!0,this.post({k:"signedIn",leader:this.tab}))}resign(){let e=this.hub,t=this.signingOut;this.hub=null,this.signingOut=!1,this.announced=!1,e&&this.post({k:"bye",leader:this.tab,...t?{signedOut:!0}:{}});let i=this.leading;if(this.leading=null,i?.(),e){for(let o of e.followers.values())o.watch.abort(),o.tunnel.close();e.followers.clear()}}leave(e){e.left||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower===e&&(this.follower=null,this.post({k:"leave",tab:this.tab})))}departed(e,t=!1){e.left||this.follower!==e||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower=null,this.lost(t||e.signedOut))}release(){this.joining?.reject(new DOMException("released","AbortError")),this.joining=null,this.follower&&this.leave(this.follower),this.resign();let e=this.presence;this.presence=null,e?.(),this.channel&&(this.channel.onmessage=null,this.channel.close(),this.channel=null)}received(e){if(!e)return;let t=this.hub,i=this.follower;switch(e.k){case"join":{if(!t||t.followers.has(e.tab)||e.tab===this.tab)return;let o=crypto.randomUUID(),s=new MessageChannel,r=e.tab,a=new Wm((l,p)=>this.post({k:"m",tab:r,up:!1,s:l,d:p}),!1);a.bridge(s.port1,0);let c=new AbortController;t.followers.set(r,{binding:o,tunnel:a,watch:c});try{t.worker.attach(s.port2,o)}catch{t.followers.delete(r),a.close();return}this.post({k:"joined",tab:r,binding:o,leader:this.tab}),t.faulted&&this.post({k:"fault",leader:this.tab}),this.hold(`${this.base}/tab/${r}`,!1,c.signal).then(l=>{l?.(),this.drop(t,r)},()=>{});return}case"leave":t&&this.drop(t,e.tab);return;case"joined":if(e.tab===this.tab&&this.joining){let o=this.joining;this.joining=null,o.resolve({binding:e.binding,leader:e.leader})}return;case"leader":this.joining&&this.post({k:"join",tab:this.tab});return;case"bye":i&&i.leader===e.leader&&this.departed(i,e.signedOut===!0);return;case"signedOut":i&&i.leader===e.leader&&(i.signedOut=!0);return;case"signedIn":!t&&!i&&!this.joining&&e.leader!==this.tab&&this.signedInElsewhere();return;case"fault":i&&!i.left&&i.leader===e.leader&&i.port.dispatchEvent(new MessageEvent("messageerror"));return;case"m":e.up&&t?t.followers.get(e.tab)?.tunnel.deliver(e.s,e.d):!e.up&&i&&e.tab===this.tab&&i.tunnel.deliver(e.s,e.d);return}}drop(e,t){let i=e.followers.get(t);if(i){e.followers.delete(t),i.watch.abort(),i.tunnel.close();try{e.worker.detach(i.binding)}catch{}}}};function Cr(n){try{return n()}catch{return}}function yj(){let n=Cr(()=>globalThis.crypto?.subtle),e=Cr(()=>globalThis.navigator?.storage),t=Cr(()=>typeof e?.getDirectory=="function"?()=>e.getDirectory.call(e):void 0);return{subtle:n,abortSignalAny:Cr(()=>typeof AbortSignal=="function"&&typeof AbortSignal.any=="function")===!0,randomUUID:Cr(()=>typeof globalThis.crypto?.randomUUID=="function")===!0,worker:Cr(()=>typeof Worker=="function")===!0,messageChannel:Cr(()=>typeof MessageChannel=="function")===!0,locks:Cr(()=>typeof globalThis.navigator?.locks?.request=="function")===!0,broadcastChannel:Cr(()=>typeof BroadcastChannel=="function")===!0,indexedDB:Cr(()=>typeof globalThis.indexedDB<"u")===!0,getDirectory:t}}async function nO(n=yj()){let e=[];if(n.subtle||e.push("web_crypto"),n.abortSignalAny||e.push("abort_signal_any"),n.randomUUID||e.push("random_uuid"),n.worker||e.push("worker"),n.messageChannel||e.push("message_channel"),n.locks||e.push("web_locks"),n.broadcastChannel||e.push("broadcast_channel"),n.indexedDB||e.push("indexed_db"),n.subtle)try{await n.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{e.push("x25519")}if(e.length)return{ok:!1,problem:"browser_unsupported",missing:Object.freeze(e)};if(typeof n.getDirectory!="function")return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])};try{await n.getDirectory()}catch{return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])}}return{ok:!0}}function Gm(n,e,t={pendingForMs:0,connection:"online"}){if(!Number.isSafeInteger(n)||n<0)throw new RangeError("invalid unsynced count");return n===0?{kind:"no_pending_edits",unsynced:0,warning:null}:{kind:"not_yet_synced",unsynced:n,warning:!e.persistent&&(t.pendingForMs>=3e4||t.connection==="offline")?"storage_may_be_evicted":null}}function iO(n){switch(n){case"pending":return"not_yet_synced";case"confirmed":return"saved";case"rejected":return"rejected";case"unknown":return"outcome_unknown";default:throw new RangeError("invalid receipt state")}}var rO="Some changes are only on this device. Stay online so they can sync.";async function Ym(n,e,t=!1){let i=!1;try{i=await n?.persisted()===!0,!i&&t&&(i=await n?.persist?.()===!0)}catch{}return{persistent:i,installed:e}}Xm();var aO=Object.freeze(new Set);function lO(n,e){let t=`mdbase.${n}.forgotten-collections.v1.${encodeURIComponent(e)}`,i=()=>{try{return globalThis.localStorage??null}catch{return null}},o=null,s=()=>{let a=null;try{a=i()?.getItem(t)??null}catch{}if(o&&o.raw===a)return o;let c=null,l=aO;try{let p=a?JSON.parse(a):null;p?.v===1&&typeof p.account=="string"&&p.account.length<=64&&Array.isArray(p.ids)&&p.ids.length<=1024&&p.ids.every(d=>typeof d=="string"&&d.length>0&&d.length<=64)&&(c=p.account,l=Object.freeze(new Set(p.ids)))}catch{}return o={raw:a,account:c,ids:l},o},r=(a,c)=>{try{c.size?i()?.setItem(t,JSON.stringify({v:1,account:a,ids:[...c].slice(-1024)})):i()?.removeItem(t)}catch{}o=null};return Object.freeze({read(a){let c=s();return a&&c.account===a?c.ids:aO},add(a,c){let l=s(),p=new Set(l.account===a?l.ids:[]);p.has(c)||(p.add(c),r(a,p))},remove(a,c){let l=s();if(l.account!==a||!l.ids.has(c))return!1;let p=new Set(l.ids);return p.delete(c),r(a,p),!0},clear(){try{i()?.removeItem(t)}catch{}o=null}})}var kj=new Set(["owner","editor","viewer"]),Yo=(n,e=512)=>typeof n=="string"&&n.length>0&&n.length<=e,Sj=new Set(["unselected","opening","setup_required","ready"]);function cO(n){let e=n;return!e||typeof e!="object"||!Yo(e.collectionId,64)||typeof e.displayName!="string"||e.displayName.length>512||!kj.has(e.role)?null:Object.freeze({collectionId:e.collectionId,displayName:e.displayName,role:e.role})}function pO(n){let e=n;return!e||typeof e!="object"||e.state!=="paired"||!Yo(e.requestId,64)||!Yo(e.installationId,64)||!Yo(e.deviceId,64)||!Yo(e.appId,64)||e.kind!=="app-runtime"&&e.kind!=="mobile"||!Yo(e.verificationUri,2048)||!Yo(e.accountId,64)||!Array.isArray(e.collectionIds)||e.collectionIds.length>1024||!e.collectionIds.every(t=>Yo(t,64))?null:Object.freeze({requestId:e.requestId,installationId:e.installationId,deviceId:e.deviceId,appId:e.appId,kind:e.kind,verificationUri:e.verificationUri,state:"paired",accountId:e.accountId,...typeof e.accountEmail=="string"&&e.accountEmail.length<=320?{accountEmail:e.accountEmail}:{},collectionIds:Object.freeze([...e.collectionIds]),createCollections:e.createCollections===!0,requestedCreateCollections:e.requestedCreateCollections===!0})}function dO(n,e){let t=`mdbase.${n}.session-hint.v1.${encodeURIComponent(e)}`,i=null,o=null,s=()=>{try{return globalThis.localStorage??null}catch{return null}},r=()=>{let c=null;try{c=s()?.getItem(t)??null}catch{return null}if(i&&i.raw===c)return i.value;let l=null;try{let p=c?JSON.parse(c):null,d=p?.v===1?pO(p.signIn):null,u=Array.isArray(p?.collections)&&p.collections.length<=1024?p.collections.map(cO):null;d&&u&&u.every(f=>f!==null)&&(l=Object.freeze({signIn:d,collections:Object.freeze(u)}))}catch{l=null}return i={raw:c,value:l},l},a=()=>{o=null;try{s()?.removeItem(t)}catch{}};return Object.freeze({read:r,clear:a,observe(c){if(c.status==="signed_out"&&c.signIn===null){o!==""&&(a(),o="");return}if(!Sj.has(c.status)||c.signIn?.state!=="paired")return;let l=pO(c.signIn),p=c.collections.map(cO);if(!l||!p.every(u=>u!==null))return;let d=JSON.stringify({v:1,signIn:l,collections:p});if(d!==o){o=d;try{s()?.setItem(t,d)}catch{}}}})}Qb();ne();function zj(n,e){return new Promise((t,i)=>{let o=()=>{clearTimeout(s),i(A("cancelled","The original collection closed."))};if(n.aborted){i(A("cancelled","The original collection closed."));return}let s=setTimeout(()=>{n.removeEventListener("abort",o),t()},e);n.addEventListener("abort",o,{once:!0})})}var Bj=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Hl=Object.freeze({checking:!1,assessment:null,problem:null}),Fj=Object.freeze({capabilities:Hl,contracts:Hl,configuration:Hl,files:Hl,people:Hl,notifications:Hl}),Zo=(n,e)=>{let t=e?Object.freeze({status:e,problem:e==="incompatible"?Object.freeze({code:"incompatible"}):null}):null;return Object.freeze({checking:n,assessment:t,problem:null,facets:Object.freeze({...Fj,configuration:Object.freeze({checking:n,assessment:t,problem:null})})})},ny=n=>n==="approval_required"?"device_approval_required":n,Vj=n=>n.state==="opening"||n.state==="unavailable"&&n.reason!=="sync_required"&&n.reason!=="access_removed"&&n.reason!=="collection_deleted",MO=n=>{if(Q(n)){let e=n.details instanceof Map?n.details.get("availability"):void 0;return typeof e=="string"?ny(e):n.reason??n.code}return"open_failed"},qO=n=>{if(!Q(n))return;let e=wP(n.details);return Object.freeze({name:"MdbaseError",code:n.code,...e?{relay:e}:{}})};function Kj(n){let e=n.manifest?.redirect_uris;return(Array.isArray(e)?e.filter(i=>typeof i=="string"):[]).find(i=>{try{return new URL(i).origin===n.origin}catch{return!1}})??new URL("/",n.origin).href}function TO(n,e,t){if(n.signIn?.state!=="paired"||!e.length&&!t)return n;let i=new Set(n.collections.map(c=>c.collectionId)),o=e.filter(c=>!i.has(c.collectionId)),s=o.length?Object.freeze([...n.collections,...o]):n.collections;if(!t||n.status!=="unselected"||i.has(t.collectionId))return s===n.collections?n:Object.freeze({...n,collections:s});let{problemDetail:r,...a}=n;return Object.freeze({...a,collections:s,status:t.status,selectedCollectionId:t.collectionId,problem:t.problem,transport:null,live:null,...t.problemDetail?{problemDetail:t.problemDetail}:{},..."readiness"in n?{readiness:t.readiness}:{}})}var iy=class{options;loading=null;list=Object.freeze([]);open=null;listed=null;settled=null;refreshing=null;closed=!1;bindings=null;bindingsAccount=null;native=null;revision=0;constructor(e){this.options=e}grants(){let e=this.loading??=(this.options.grants??(async()=>{let{MdbaseAppGrants:t}=await Promise.resolve().then(()=>(EO(),RO));return new t({declaration:this.options.declaration,redirectUri:Kj(this.options.declaration)})}))();return e.catch(()=>{this.loading===e&&(this.loading=null)}),e}changed(){if(!this.closed){this.revision++;try{this.options.onChange()}catch{}}}bind(e,t){let i=t.filter(o=>o.account_id===e);this.bindingsAccount===e&&JSON.stringify(i)===JSON.stringify(this.bindings)||(this.bindingsAccount=e,this.bindings=Object.freeze([...i]),this.settled=null,this.listed=null,this.setList([]))}async nativeAuthorization(e,t,i){if(e.action==="cancel")return this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,null;if(this.closed||i.aborted)throw A("cancelled","Original Native authorization fenced");if(e.action==="prepare"){if(this.native||e.value.authorizationId)throw A("unauthenticated","Original Native preparation unavailable");let a={context:e.value,portal:t,prepared:null,life:new AbortController};this.native=a;let c=AbortSignal.any([i,a.life.signal]),l=await this.grants();if(!l.prepareAuthorization)throw A("unavailable","Native authorization unavailable");let p=btoa(String.fromCharCode(...Uint8Array.from(e.value.challenge.match(/../g),u=>parseInt(u,16)))).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,""),d=await l.prepareAuthorization({authorizationNonce:p,expectedAccountId:e.value.accountId,signal:c});if(a.prepared=d,this.native!==a||c.aborted||d.applicationId!==e.value.appId)throw d.cancel(),A("unauthenticated","Original application registration mismatch");return Object.freeze({authorizationId:d.authorizationId,applicationId:d.applicationId,manifestDigest:d.manifestDigest})}let o=this.native,s=o?.prepared;if(!o||!s||o.portal!==t||o.context.requestId!==e.value.requestId||s.authorizationId!==e.value.authorizationRequestId)throw A("unauthenticated","Original Native preparation unavailable");let r=await s.finish({popup:t,collection:e.value.collectionId,signal:AbortSignal.any([i,o.life.signal])});if(this.native!==o||i.aborted||!r.nativeCompletion)throw A("unauthenticated","Original Native completion unavailable");return r.nativeCompletion}entries(){return this.list}has(e){return this.list.some(t=>t.collectionId===e)||this.open?.id===e}state(){return this.open?.state??null}connection(e){let t=this.open;return t&&t.id===e&&t.state.status==="ready"?t.connection:null}listing(e){return!this.closed&&e!==null&&this.settled!==e}ensure(e){this.settled!==e&&!this.refreshing&&this.refresh(e).catch(()=>{})}refresh(e=this.listed){if(this.closed)return Promise.resolve();if(this.refreshing)return this.refreshing;let t=(async()=>{try{let i=await this.grants(),o=this.bindings,s=[];if(o)for(let a of o)a.account_id===e&&await i.verifiedStoredNativeGrant?.(a)&&s.push(a);let r=await i.collections(o===null?{}:{bindings:s});if(this.closed||o!==this.bindings)return;this.listed=e,this.setList(r)}finally{!this.closed&&e!==null&&this.settled!==e&&(this.settled=e,this.changed())}})().finally(()=>{this.refreshing===t&&(this.refreshing=null)});return this.refreshing=t,t}setList(e){let t=Object.freeze(e.filter(i=>Bj.test(i.collectionId)).map(i=>Object.freeze({collectionId:i.collectionId,displayName:i.displayName,role:i.role??"editor",availability:i.availability,kind:"private"})));JSON.stringify(t)!==JSON.stringify(this.list)&&(this.list=t,this.changed())}setAvailability(e,t){this.list.some(i=>i.collectionId===e&&JSON.stringify(i.availability)!==JSON.stringify(t))&&(this.list=Object.freeze(this.list.map(i=>i.collectionId===e?Object.freeze({...i,availability:t}):i)),this.changed())}set(e,t){if(this.open!==e||e.life.signal.aborted)return;let{problemDetail:i,...o}=e.state,{problemDetail:s,...r}=t,a=r.problem===null?void 0:s??(r.problem===void 0?i:void 0);e.state=Object.freeze({...o,...r,...a?{problemDetail:a}:{}}),this.changed()}async openCollection(e,t){if(this.closed)throw A("cancelled","Private collections closed","application_entry_fenced");this.close(!1);let i={id:e,life:new AbortController,client:null,setup:null,connection:null,stopLink:null,state:Object.freeze({collectionId:e,status:"opening",problem:null,readiness:Zo(!0,null)})};this.open=i,this.changed();let o=i.life.signal;try{let s=await this.grants(),r=this.bindings?.find(d=>d.account_id===t.account&&d.collection_id===e),a=async()=>{if(this.bindings!==null&&(!r||this.bindingsAccount!==t.account||!this.bindings.includes(r)||!await s.verifiedStoredNativeGrant?.(r)))throw A("unauthenticated","Original account-bound Native grant unavailable");if(o.aborted)throw A("cancelled","Original Native open fenced")};await a();let c=await s.availability(e,{signal:o});if(this.setAvailability(e,c),Vj(c)&&(c.state==="unavailable"&&this.set(i,{status:"blocked",problem:ny(c.reason),readiness:Zo(!1,null)}),c=await s.waitForAvailable(e,{signal:o,timeoutMs:this.options.waitMs??10*6e4,onAvailability:d=>{this.setAvailability(e,d),d.state==="unavailable"?this.set(i,{status:"blocked",problem:ny(d.reason)}):this.set(i,{status:"opening",problem:null,readiness:Zo(!0,null)})}})),c.state!=="available"){if(c.state==="opening")throw A("unavailable","The collection is still getting ready","collection_unavailable");this.set(i,{status:"blocked",problem:ny(c.reason),readiness:Zo(!1,null)});return}this.set(i,{status:"opening",problem:null}),await a();let l=await(this.options.connect??Wj(this.options.declaration))(s,e,o);if(this.open!==i||o.aborted||l.collection!==e){if(l.close(),this.open===i&&!o.aborted)throw A("invalid_request","a different collection opened","collection_mismatch");return}i.client=l,i.setup=s.setup(l),i.connection=Object.freeze({id:e,displayName:this.list.find(d=>d.collectionId===e)?.displayName??"Collection",scope:Object.freeze({account:t.account,installation:t.installation,collection:e}),generation:crypto.randomUUID(),records:l,files:l.files,people:s.people(e,l),isCurrent:()=>this.open===i&&!o.aborted&&!this.closed}),await this.assessOpen(i);let p=0;i.stopLink=l.onLink((d,u)=>{u?this.set(i,{problem:MO(u),problemDetail:qO(u)}):d==="open"&&this.set(i,{problem:null});let f=++p;s.availability(e,{signal:o}).then(h=>{this.open===i&&!o.aborted&&f===p&&this.setAvailability(e,h)}).catch(()=>{})})}catch(s){throw this.open===i&&!o.aborted&&this.set(i,{status:"blocked",problem:MO(s),problemDetail:qO(s),readiness:Zo(!1,null)}),s}}async assessOpen(e){this.set(e,{readiness:Zo(!0,e.state.readiness.assessment?.status??null)});let t=1e3;for(;;){if(this.open!==e||e.life.signal.aborted)throw A("cancelled","The original collection closed.");let i;try{i=await e.setup.assess({signal:e.life.signal})}catch(o){if(!Q(o)||o.code!=="rate_limited")throw o;let s=o.retryAfterMs;await zj(e.life.signal,Math.min(2147483647,Math.max(t,typeof s=="number"&&Number.isFinite(s)?s:0))),t=Math.min(3e4,t*2);continue}if(this.open!==e||e.life.signal.aborted)throw A("cancelled","The original collection closed.");return this.set(e,{status:i==="ready"?"ready":"setup_required",problem:null,readiness:Zo(!1,i)}),i}}current(){let e=this.open;if(!e?.setup||e.life.signal.aborted)throw A("invalid_request","No Private collection is open","application_connection_fenced");return e}isOpen(){return this.open!==null}async assess(){let e=this.current();return await this.assessOpen(e),e.state.readiness}plan(e){return this.current().setup.plan(e)}async apply(e,t={}){let i=this.current(),o=await i.setup.apply(e,t);this.set(i,{status:o==="ready"?"ready":"setup_required",problem:null,readiness:Zo(!1,o)})}async configure(e={}){let i=await this.current().setup.plan(e.signal?{signal:e.signal}:{});await this.apply(i,e)}async add(e,t,i){let o;try{o=await this.grants()}catch(r){throw e.close(),r}let s=await o.authorize({popup:e,...t?{collection:t}:{},...i?{signal:i}:{}});return await this.refresh().catch(()=>{}),s.collectionId}async forget(e){this.open?.id===e&&this.close();let t=await this.grants(),i=this.bindings?.find(o=>o.collection_id===e&&o.account_id===this.bindingsAccount);(this.bindings===null||i&&await t.verifiedStoredNativeGrant?.(i))&&await(i?t.forget(e,{expectedNoisePublicKey:i.client_noise_public_key}):t.forget(e)),this.list.some(o=>o.collectionId===e)&&(this.list=Object.freeze(this.list.filter(o=>o.collectionId!==e)),this.changed())}async forgetAll(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close();try{await(await this.grants()).forgetAllGrants()}finally{this.list=Object.freeze([]),this.listed=null,this.settled=null,this.changed()}}close(e=!0){let t=this.open;if(t){this.open=null,t.life.abort(),t.stopLink?.();try{t.client?.close()}catch{}e&&this.changed()}}dispose(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close(!1),this.closed=!0}};function Wj(n){return async(e,t,i)=>{let{connect:o}=await Promise.resolve().then(()=>(ka(),rf));return o({connector:e.connector(t),app:{name:n.id,version:"1"},signal:i})}}var Iy={};function oN(n){let e=globalThis.document;return!e||typeof e.addEventListener!="function"||e.visibilityState!=="hidden"?Promise.resolve():new Promise((t,i)=>{let o=()=>{e.visibilityState!=="hidden"&&(e.removeEventListener("visibilitychange",o),n.removeEventListener("abort",s),t())},s=()=>{e.removeEventListener("visibilitychange",o),i(n.reason)};e.addEventListener("visibilitychange",o),n.addEventListener("abort",s,{once:!0})})}var XR=new WeakMap;function sN(n){let e=n.unsynced;if(!e)return n;let t=XR.get(n);return t||(t=Object.freeze({...n,status:e.sessionStatus,selectedCollectionId:null,unsynced:null}),XR.set(n,t)),t}var Kd=class extends Error{code="application_not_yet_available";constructor(){super("MdbaseConnect application runtime is not yet available"),this.name="MdbaseApplicationUnavailableError"}},vA=Object.freeze({code:"application_not_yet_available"}),lc=Object.freeze({checking:!1,assessment:null,problem:vA}),aN=Object.freeze({checking:!1,assessment:null,problem:vA,facets:Object.freeze({capabilities:lc,contracts:lc,configuration:lc,files:lc,people:lc,notifications:lc})}),cc=Object.freeze({checking:!1,assessment:null,problem:null}),xy=Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:cc,contracts:cc,configuration:cc,files:cc,people:cc,notifications:cc})}),wA=()=>new Kd,ZR=Object.freeze({state:"none",problem:null,usable:null,requested:Object.freeze({collectionId:null,source:"none",displayName:null,approved:!1})});function lN(){let n={status:"blocked",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:vA.code,timing:null,readiness:aN,selection:ZR},e=Object.freeze({...n,phase:_p(n),sync:null,writes:null,links:null}),t=()=>Promise.reject(wA());return Object.freeze({getSnapshot:()=>e,subscribe:()=>()=>{},start:t,authorize:t,select:t,approve:t,reauthorize:t,refreshCollectionList:t,requestAccess:t,chooseAnother:t,assess:t,configure:t,setup:Object.freeze({plan:t,apply:t}),clearSelection:t,forget:t,deleteCollection:t,unlock:t,setForeground(){throw wA()},close:t,signOut:t})}var cN=n=>typeof Worker=="function"&&typeof MessageChannel=="function"&&xt()!==null&&Et(n);function pN(n,e){if(n===void 0)return null;let t=()=>{throw A("invalid_request","Invalid sign-in opener","application_sign_in_opener")};if(!n||typeof n!="object"||typeof n.open!="function"||n.close!==void 0&&typeof n.close!="function")return t();let i=n.returnUrl;i!==void 0&&(_I(i,e.manifest)||t());let o=n.open.bind(n),s=n.close?.bind(n);return Object.freeze({open:o,...s?{close:s}:{},...i!==void 0?{returnUrl:i}:{}})}async function dN(n){let e=!0;if(n.webPush){let t=globalThis.navigator?.serviceWorker,i;t&&typeof t.getRegistration=="function"&&(e=await Promise.race([(async()=>{let o=await(await t.getRegistration())?.pushManager?.getSubscription();return o?await o.unsubscribe():!0})().catch(()=>!1),new Promise(o=>{i=setTimeout(()=>o(!1),5e3)})]).finally(()=>clearTimeout(i)))}try{n.server==="incomplete"&&console.warn("mdbase: signed out on this device, but mdbase could not be reached to end the session. This device stays listed under the account until it is removed there."),(n.local==="incomplete"||!e)&&console.warn("mdbase: signed out, but some local data on this device could not be removed.")}catch{}}function uN(n){let e=`mdbase.${n}.selected-collection.v1`;return Object.freeze({read:()=>{try{return globalThis.localStorage?.getItem(e)??null}catch{return null}},write:t=>{try{t===null?globalThis.localStorage?.removeItem(e):globalThis.localStorage?.setItem(e,t)}catch{}}})}var pc=class{app;declaration;compiled;lifetime=new AbortController;listeners=new Set;nativeListeners=new Set;selection=null;memory=null;runtime=null;initialization=null;closing=null;closed=!1;foreground=!0;incarnation=0;hidden=null;tabs=null;election=null;signingOut=!1;snapshot=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,readiness:xy});composed=null;hint=null;forgotten=null;handledApproval=null;refreshing=null;refreshedAt=0;approvalPortal=null;revision=0;links=null;cpOrigin=null;opening=null;syncing=null;storagePolicy=null;pendingSave=null;signIn;typeIssues;privates=null;unsyncedFirst;unsyncedTried=!1;unsyncedOpening=0;timing=new cm;overlaid=new WeakMap;constructor(e,t={}){this.declaration=eo(e),this.compiled=Fo(this.declaration);let i=t.readiness?.typeIssues??"block";if(i!=="block"&&i!=="degrade")throw new TypeError('readiness.typeIssues must be "block" or "degrade"');if(this.typeIssues=i,this.unsyncedFirst=t.unsynced===!0,this.signIn=pN(t.signIn,this.declaration),!cN(this.declaration.origin)){this.app=lN();return}try{let s=this.environment().cpOrigin;this.cpOrigin=s,this.hint=dO(this.declaration.storage.applicationNamespace,s),this.forgotten=lO(this.declaration.storage.applicationNamespace,s),this.links=Object.freeze({account:`${s}/account`,manageAccess:`${s}/account/applications`})}catch{}t.followVisibility!==!1&&this.followVisibility(),this.followPageLifecycle(),this.followFocus(),this.followStoragePolicy(),this.memory=uN(this.declaration.storage.applicationNamespace),t.privateCollections!==!1&&(this.privates=new iy({declaration:this.declaration,onChange:()=>{this.revision++,this.notify()}})),this.selection=new dm({browser:new pm(this.declaration.origin,{},EI()),session:this.selectionSession(),memory:this.memory}),this.selection.subscribe(()=>{this.unforgetApproved(),this.notify(!1)});let o=()=>this.getSnapshot();this.app=Object.freeze({getSnapshot:o,subscribe:s=>(this.listeners.add(s),()=>{this.listeners.delete(s)}),start:s=>this.track(()=>{let r=this.unsyncedFirst&&(!this.unsyncedTried||this.runtime===null);return r&&(this.unsyncedOpening++,this.revision++,this.notify(!1)),this.call(async a=>{let c=a.getNativeSnapshot();c.status==="blocked"&&c.signIn&&c.selectedCollectionId===null?await a.queue(()=>a.start(s)):await this.timing.time("session",()=>this.started(a,s));let l=this.choose(),p=l.getSnapshot();p.state==="blocked"&&p.requested.approved&&p.requested.collectionId!==null&&await l.select(p.requested.collectionId,s);let d=a.getNativeSnapshot();this.unsyncedFirst&&!this.unsyncedTried&&d.status==="signed_out"&&!d.unsynced&&!d.signOutResult&&l.getSnapshot().requested.collectionId===null&&(this.unsyncedTried=!0,await this.timing.time("unsynced",()=>a.queue(()=>a.openUnsynced(s))))}).catch(a=>{let c=this.runtime?.getNativeSnapshot();if(!(a?.code==="open_in_another_tab"&&c?.status==="blocked"&&c.problem==="open_in_another_tab"))throw a}).finally(()=>{r&&(this.unsyncedOpening--,this.revision++,this.notify(!1))})}),authorize:s=>this.track(()=>this.approve(void 0,s)),approve:(s,r)=>this.track(()=>this.approve(s,r)),reauthorize:s=>this.track(()=>{let r=this.choose(),a=r.getSnapshot(),c=this.privates?.state()?.collectionId??a.usable?.collectionId??a.requested.collectionId;return c?this.approve(c,s):r.reauthorize(s)}),addPrivateCollection:s=>this.track(()=>this.approve(null,s)),refreshCollectionList:s=>this.track(()=>Promise.all([this.call(r=>r.queue(()=>r.refreshCollections(s))),this.privates?.refresh(this.account()).catch(()=>{})])),requestAccess:(s,r)=>this.requestAccess(s,r),select:(s,r)=>this.track(()=>this.choose().select(s,{...r,history:"push"})),clearSelection:s=>this.track(()=>this.choose().select(null,s)),chooseAnother:s=>this.track(()=>this.choose().chooseAnother(s)),forget:(s,r)=>this.track(async()=>{let a=this.choose(),c=this.account();if(this.privates?.has(s)){await this.privates.forget(s),a.getSnapshot().requested.collectionId===s&&await a.select(null,r);return}if(c&&this.forgotten){this.forgotten.add(c,s),this.revision++,(a.getSnapshot().requested.collectionId===s||(this.runtime?.getSnapshot()??this.snapshot).selectedCollectionId===s)&&await a.select(null,r),this.notify(!1);return}await this.call(l=>l.queue(()=>l.forget(s,r))),a.getSnapshot().requested.collectionId===s&&await a.select(null,r)}),deleteCollection:(s,r)=>this.track(async()=>{let a=this.choose(),{confirmName:c,...l}=r??{};await this.call(p=>p.queue(()=>p.deleteCollection(s,c,l))),a.getSnapshot().requested.collectionId===s&&await a.select(null,l)}),unlock:(s,r,a)=>this.track(()=>this.call(c=>c.queue(()=>c.unlock(s,r,a)))),assess:s=>this.privates?.isOpen()?this.privates.assess():this.call(r=>r.queue(()=>r.assess(s))),configure:s=>this.track(()=>this.privates?.isOpen()?this.privates.configure(s):this.call(r=>r.queue(()=>r.configure(s)))),setup:Object.freeze({plan:s=>(this.privates?.isOpen()?this.privates.plan(s):this.call(r=>r.queue(()=>r.planSetup(s)))).then(r=>sO(r,this.getSnapshot().readiness)),apply:(s,r)=>this.track(()=>this.privates?.isOpen()?this.privates.apply(s,r):this.call(a=>a.queue(()=>a.applySetup(s,r))))}),setForeground:s=>this.setForeground(s),close:()=>this.close(),signOut:s=>this.signOut(s),planUnsyncedTransfer:(s={})=>this.call(r=>{let a=this.transferDestination(null);return r.withUnsyncedSource((c,l)=>x_(c.records,a.records,{...s.map?{map:s.map}:{},...s.addTypes?{addTypes:!0}:{},ledger:this.transferLedger(),signal:l}),s)}),transferUnsynced:(s,r={})=>this.call(async a=>{let c=this.transferDestination(s?.destination??null),l=await YC(s,c.records,{...r.signal?{signal:r.signal}:{},...r.onProgress?{onProgress:r.onProgress}:{}});if(l.failed.length||l.failedTypes.length)return l;let p=r.signal?{signal:r.signal}:{};return await a.withUnsyncedSource((d,u)=>GC(s,d.records,c.records,u),p)?Object.freeze({...l,retired:await a.retireUnsynced(s.source,s.destination,p)}):l}),discardUnsynced:s=>this.track(async()=>{await this.call(async r=>(await this.started(r,s),r.queue(()=>r.discardUnsynced(s))))}),openUnsynced:s=>this.track(async()=>{let r=this.choose();this.privates?.close(),r.getSnapshot().requested.collectionId!==null&&await r.select(null,{...s,history:"replace"}),await this.call(async a=>(await this.started(a,s),a.queue(()=>a.openUnsynced(s))))})})}withPrivate(e){let t=this.privates;if(!t)return e;let i=this.overlaid.get(e);if(i&&i.revision===t.revision)return i.value;let o=TO(e,t.entries(),t.state());return this.overlaid.set(e,{revision:t.revision,value:o}),o}getSnapshot(){let e=this.withPrivate(this.runtime?.getSnapshot()??this.snapshot),t=this.selection?.getSnapshot()??ZR,i=this.composed,o=e.signIn===null&&(e.status==="starting"||e.status==="blocked"&&e.problem==="open_in_another_tab")?this.hint?.read()??null:null;if(i&&i.base===e&&i.selection===t&&i.revision===this.revision&&i.hint===o)return i.value;let s=o?Object.freeze({...e,signIn:o.signIn,collections:o.collections}):e,r=this.forgotten?.read(s.signIn?.accountId)??null,a=r?.size&&s.collections.some(b=>r.has(b.collectionId)&&b.collectionId!==s.selectedCollectionId)?Object.freeze({...s,collections:Object.freeze(s.collections.filter(b=>!r.has(b.collectionId)||b.collectionId===s.selectedCollectionId))}):s,c=a.selectedCollectionId,l=c&&!this.closed?this.privates?.connection(c)??this.runtime?.connection(c)??null:null,p=this.unsyncedOpening>0&&!a.unsynced&&!a.signOutResult&&t.requested.collectionId===null,d=_p({...a,selection:t},{connection:l,previous:i?.value.phase??null,openingUnsynced:p,startPending:this.selection?.startPending()??!1,...this.cpOrigin?{cpOrigin:this.cpOrigin}:{}});d=this.trackOpening(d),this.timing.observe(d);let u=this.trackSync(d,a.problem,a.transport??null,a.live??null),f=this.syncing?.writes()??null,h=this.trackSaveWarning(),m=Object.freeze({...a,selection:t,phase:d,sync:u,writes:f,storage:this.storagePolicy,saveWarning:h,links:this.linksFor(c)});return this.composed={base:e,selection:t,revision:this.revision,hint:o,value:m},m}linksFor(e){return this.links&&e?Object.freeze({...this.links,manageAccess:`${this.cpOrigin}/access?collection=${encodeURIComponent(e)}`}):this.links}trackSaveWarning(){let e=this.syncing,t=e?.status,i=t?.pending??0;if(this.pendingSave&&(this.closed||this.hidden||!i||this.pendingSave.id!==e?.id)&&this.clearPendingSave(),this.closed||this.hidden||!e||!t||!i)return null;if(!this.pendingSave){let o={id:e.id,since:performance.now(),timer:null};o.timer=setTimeout(()=>{this.pendingSave===o&&(o.timer=null,this.revision++,this.notify(!1))},3e4),this.pendingSave=o}return Gm(i,this.storagePolicy??{persistent:!1,installed:!1},{pendingForMs:performance.now()-this.pendingSave.since,connection:t.connection}).warning}clearPendingSave(){this.pendingSave?.timer!==null&&this.pendingSave?.timer!==void 0&&clearTimeout(this.pendingSave.timer),this.pendingSave=null}trackOpening(e){let t=e.kind==="opening"?e.collectionId:null;if(this.opening&&this.opening.id!==t&&(clearTimeout(this.opening.timer),this.opening=null),t===null||this.closed)return e;if(!this.opening){let i={id:t,slow:!1,timer:setTimeout(()=>{this.opening===i&&(i.slow=!0,this.revision++,this.notify(!1))},Hf)};this.opening=i}return e.kind==="opening"&&this.opening.slow?{...e,slow:!0}:e}trackSync(e,t,i,o){let s=e.kind==="ready"?e.collectionId:null;if(this.syncing&&this.syncing.id!==s){try{this.syncing.stop()}catch{}this.syncing=null}if(e.kind!=="ready"||this.closed)return null;if(!this.syncing){let r=e.connection.records,a=null;try{a=r.status}catch{}let c={id:e.collectionId,stop:()=>{},status:a,writes:()=>null},l=()=>{this.syncing===c&&(this.revision++,this.getSnapshot(),this.notify(!1))},p=()=>{},d=()=>{};try{p=r.onStatus(u=>{c.status=u,l()})}catch{}try{let u=r.ledger;d=u.subscribe(l),c.writes=()=>{try{return u.getSnapshot()}catch{return null}}}catch{}c.stop=()=>{p(),d()},this.syncing=c}try{e.connection.records.setTransportDeferred(i!==null)}catch{}return this.syncing.status?Rf(this.syncing.status,t,i,o):null}nativeAuthorization(e,t,i){return!this.privates||this.closed||this.hidden?Promise.reject(A("unavailable","Native authorization unavailable")):this.privates.nativeAuthorization(e,t,AbortSignal.any([i,this.lifetime.signal]))}account(){return(this.runtime?.getSnapshot()??this.snapshot).signIn?.accountId??null}unforgetApproved(){let e=this.selection?.getSnapshot().lastApproval??null,t=this.account();!e||e===this.handledApproval||(this.handledApproval=e,t&&e.collectionId&&(e.outcome==="added"||e.outcome==="unchanged")&&this.forgotten?.remove(t,e.collectionId)&&this.revision++)}followFocus(){let e=typeof window>"u"?void 0:window,t=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let i=()=>{t?.visibilityState!=="hidden"&&this.refreshCollections()};e.addEventListener("focus",i,{signal:this.lifetime.signal}),t&&typeof t.addEventListener=="function"&&t.addEventListener("visibilitychange",i,{signal:this.lifetime.signal})}refreshCollections(){let e=this.runtime,t=Date.now();if(!e||this.closed||this.hidden||this.refreshing||t-this.refreshedAt<2e3)return;let i=e.getNativeSnapshot();i.signIn?.state!=="paired"||i.status!=="unselected"&&i.status!=="ready"&&i.status!=="setup_required"||(this.refreshedAt=t,this.privates?.refresh(i.signIn.accountId).catch(()=>{}),this.refreshing=e.queue(()=>e.refreshCollections()).catch(()=>{}).finally(()=>{this.refreshing=null}))}followStoragePolicy(){let e=globalThis.navigator?.storage;if(!e||typeof e.persisted!="function")return;let t=()=>{try{return globalThis.matchMedia?.("(display-mode: standalone)").matches===!0||globalThis.navigator?.standalone===!0}catch{return!1}},i=(s=!1)=>{this.closed||Ym(e,t(),s).then(r=>{this.closed||this.storagePolicy?.persistent===r.persistent&&this.storagePolicy?.installed===r.installed||(this.storagePolicy=r,this.revision++,this.notify(!1))}).catch(()=>{})},o=globalThis.document;o&&typeof o.addEventListener=="function"&&o.addEventListener("visibilitychange",()=>{o.visibilityState!=="hidden"&&i()},{signal:this.lifetime.signal}),i(!0)}notify(e=!0){let t=this.runtime?.getSnapshot(),i=t?.signIn?.state==="paired"?t.signIn.accountId:null;if(i&&!this.closed&&!this.hidden&&(this.privates?.bind(i,t?.signIn?.nativeGrants??[]),this.privates?.ensure(i)),e)for(let o of[...this.nativeListeners])try{o()}catch{}for(let o of[...this.listeners])try{o()}catch{}}choose(){this.check();let e=this.selection;return e.start(),e}async track(e){return await e(),this.getSnapshot()}selectionSession(){return Object.freeze({getSnapshot:()=>this.withPrivate(sN(this.runtime?.getNativeSnapshot()??this.snapshot)),subscribe:e=>(this.nativeListeners.add(e),()=>{this.nativeListeners.delete(e)}),open:(e,t={})=>this.call(async i=>{let o=this.privates,s=i.getNativeSnapshot().collections.some(c=>c.collectionId===e);if(!o||s||!o.has(e))return o?.close(),i.queue(()=>i.select(e,t));i.getNativeSnapshot().selectedCollectionId!==null&&await i.queue(()=>i.clearSelection(t));let r=i.getNativeSnapshot().signIn?.accountId,a=i.getNativeSnapshot().signIn?.installationId;if(!r||!a)throw A("unauthenticated","Sign in before opening a collection");o.openCollection(e,{account:r,installation:a}).catch(()=>{})}),clear:(e={})=>(this.privates?.close(),this.call(t=>t.queue(()=>t.clearSelection(e)))),authorize:(e={})=>this.authorize(e,e.collectionHint??null),listing:()=>this.privates?.listing(this.account())??!1})}check(){if(this.closed||this.hidden||this.lifetime.signal.aborted)throw A("cancelled","Application entry fenced","application_entry_fenced")}environment(){return xi({environment:this.declaration.environment,appOrigin:this.declaration.origin,release:Ns()})}initialize(){if(this.initialization)return this.initialization;let e=this.incarnation,t=Promise.resolve().then(async()=>{if(this.check(),typeof Iy.url!="string")throw wA();let i=new URL(Iy.url);if(An(i)!==this.declaration.origin||xt()!==this.declaration.origin)throw A("unavailable","Application module binding unavailable","application_worker_module_binding");let o=this.environment(),s=OI(this.declaration.environment,this.declaration.origin),r=await this.timing.time("capabilities",()=>nO());if(this.check(),!r.ok)throw A("unavailable","This browser can't run mdbase",{reason:r.problem,details:new Map([["missing",r.missing.join(",")]])});let a=()=>{if(!this.unsyncedFirst)return;let S={origin:this.declaration.origin,environment:this.declaration.environment};for(let x of[s.runtime,s.sqlite])try{CI(x,S)({signal:this.lifetime.signal}).catch(()=>{})}catch{}},c=Promise.resolve().then(()=>(JR(),YR));c.catch(()=>{});let{registered:l,ApplicationRuntime:p}=await this.timing.time("registration",async()=>({registered:await sm({declaration:this.declaration,signal:this.lifetime.signal,isCurrent:()=>!this.closed,onRequest:a}),ApplicationRuntime:(await c).ApplicationRuntime}));if(this.check(),e!==this.incarnation)throw A("cancelled","Application entry fenced","application_entry_fenced");let d=vI(this.declaration,l);l.supersededDeclaredId&&console.info(`mdbase: ${Ff("application_registration_id_superseded")}`);let u=Gf(this.declaration),f=Object.freeze({cpOrigin:o.cpOrigin,appId:d.id,...u===null?{}:{storageNamespace:u}}),h=S=>(this.runtime=S,this.unsyncedTried=!1,S.subscribe(()=>{this.hint?.observe(S.getNativeSnapshot()),this.observeSignOut(S),S.getNativeSnapshot().signIn?.state==="paired"&&this.tabs?.signedIn(),this.notify(),this.awaitOtherTab(S,f)}),S.setForeground(this.foreground),this.notify(),S),m=this.tabsFor(f),b=new AbortController;this.election?.abort(),this.election=b;let w=m?await this.timing.time("election",()=>m.elect(AbortSignal.any([this.lifetime.signal,b.signal]))):{kind:"leader"};if(this.closed||this.hidden||e!==this.incarnation||b.signal.aborted)throw w.kind==="follower"?w.leave():m?.resign(),A("cancelled","Application entry fenced","application_entry_fenced");if(w.kind==="follower")return h(new p({declaration:d,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:w.port,binding:w.binding,releaseWorker:()=>w.leave(),nativeAuthorization:(S,x,P)=>this.nativeAuthorization(S,x,P)}));let g=new MessageChannel,y=crypto.randomUUID(),v;try{v=new Worker(new URL("./worker.js",Iy.url),{type:"module"})}catch{throw m?.resign(),g.port1.close(),g.port2.close(),A("unavailable","Application Worker construction unavailable","application_worker_unavailable")}let _=S=>{S.preventDefault(),g.port1.dispatchEvent(new MessageEvent("messageerror")),m?.fault()};v.addEventListener("error",_);let k=new p({declaration:d,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:g.port1,binding:y,releaseWorker:()=>{v.removeEventListener("error",_),v.terminate(),m?.resign()},nativeAuthorization:(S,x,P)=>this.nativeAuthorization(S,x,P)});try{v.postMessage([oi,y,d,...u===null?[]:[u]],[g.port2])}catch{throw v.removeEventListener("error",_),v.terminate(),m?.resign(),g.port1.close(),g.port2.close(),A("unavailable","Application bootstrap unavailable","application_worker_binding")}return m?.lead({attach:(S,x)=>v.postMessage([oi,y,"attach",x],[S]),detach:S=>v.postMessage([oi,y,"detach",S])}),h(k)}).catch(i=>{let o=this.initialization===t;if(o&&(this.initialization=null),!this.closed&&o){let{problemDetail:s,...r}=this.snapshot,a=i instanceof pe&&i.reason==="application_registration_refused"?Os(i.details):null;this.snapshot=Object.freeze({...r,status:"blocked",problem:typeof i?.reason=="string"?i.reason:typeof i?.code=="string"?i.code:"application_entry_unavailable",...a?{problemDetail:Object.freeze({name:"MdbaseError",code:i.code,registration:a})}:{}}),this.notify()}throw i});this.initialization=t;{let{problemDetail:i,signOutResult:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null})}return this.notify(),t}async call(e){this.check();let t=await this.initialize();return this.check(),e(t)}started(e,t){this.choose();let i=e.getNativeSnapshot().status;return i==="not_started"||i==="starting"||i==="blocked"&&!e.getNativeSnapshot().signIn?e.queue(()=>e.start(t)):Promise.resolve()}reservePortal(e){this.check();let t=this.environment(),i=e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal,o=Pl(this.declaration.environment),s=()=>!this.closed,r=this.signIn?uC(t.cpOrigin,i,s,this.signIn,o):xm(t.cpOrigin,i,s,o);return{portal:Pm(r),signal:i}}requestAccess(e,t){try{this.check();let i=this.runtime,o=i?.getNativeSnapshot(),s=o?.selectedCollectionId??null,r=Fm(this.compiled),a=()=>s&&i?Vm(i.getNativeSnapshot(),s):[],c=ZC(r,e,t,a()),l=s?i.connection(s):null;if(!i||!s||!l)throw A("invalid_request","requestAccess needs an open collection","access_no_collection");let p=()=>QC(l.files,r,a());if(!c.length)return Promise.resolve(p());let{portal:d,signal:u}=this.reservePortal(t);return eO({granted:p,native:()=>i.getNativeSnapshot(),start:()=>i.queue(()=>i.requestFileAccess(d,s,c,t.reason,{signal:u})),poll:f=>i.queue(()=>i.pollFileAccess(f))},d,u)}catch(i){return Promise.reject(i)}}approve(e,t={}){let i=this.choose(),o=i.getSnapshot(),s=this.approvalPortal;if(s&&o.approval){if((e===void 0?o.requested.collectionId:e)!==o.approval.collectionId)return Promise.reject(new dn("application_selection_busy"));if(t.signal?.aborted)throw A("cancelled","Application entry fenced","application_entry_fenced");return s.closed||s.focus(),Promise.resolve()}return i.approve(e,t)}authorize(e={},t=null){let i;try{i=this.approvalPortal=this.reservePortal(e).portal}catch(o){return Promise.reject(o)}return this.call(async o=>(await this.started(o,e),o.queue(()=>o.authorizeReserved(i,e,t)))).catch(o=>{try{i.close()}catch{}throw o})}async signOut(e={}){let t=await this.call(async s=>(await this.started(s,e),s));this.signingOut=!0;try{await t.queue(()=>t.signOut(e))}finally{this.signingOut=!1}let i=t.getNativeSnapshot().signOutResult??null;await this.signedOut(t,i);let o=this.snapshot.signOutResult??i;return o&&await dN(o),this.getSnapshot()}async signedOut(e,t,i=!1){i||this.tabs?.signedOut(),this.clearPendingSave(),++this.incarnation,this.runtime===e&&(this.runtime=null),this.initialization=null,this.hint?.clear(),this.forgotten?.clear(),this.handledApproval=null;let o=null;if(this.privates)try{await this.privates.forgetAll(),o="erased"}catch{o="incomplete"}let s=t&&o?Object.freeze({...t,grants:o,...o==="incomplete"?{local:"incomplete"}:{}}):t;this.snapshot=Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:!s&&o==="incomplete"?"sign_out_failed":null,timing:null,readiness:xy,...s?{signOutResult:s}:{}});try{this.memory?.write(null)}catch{}if(this.selection&&!this.closed&&(this.selection.resync(),await this.selection.select(null,{history:"replace"}).catch(()=>{})),this.revision++,this.notify(),i){e.abandon();return}await e.close().catch(()=>{})}observeSignOut(e){let t=e.getNativeSnapshot().signOutResult;!t||this.signingOut||this.closed||this.runtime!==e||this.signedOut(e,t)}tabsFor(e){if(this.tabs)return this.tabs;let t=globalThis.navigator?.locks,i=globalThis.BroadcastChannel;return!t||typeof t.request!="function"||typeof i!="function"?null:(this.tabs=new Hm({...e,build:Iy.url},{locks:t,BroadcastChannel:i},this.leaderLost,this.signedInElsewhere),this.tabs)}leaderLost=e=>{if(this.closed||this.hidden)return;let t=this.runtime,i=t!==null||this.initialization!==null;if(this.election?.abort(),this.election=null,e&&t&&!this.signingOut?this.signedOut(t,t.getNativeSnapshot().signOutResult??null,!0):e&&i&&(++this.incarnation,this.initialization=null),!i||e){this.tabs?.resign();return}++this.incarnation,this.initialization=null,this.runtime=null,t?.abandon();let{problemDetail:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null,selectedCollectionId:null,readiness:xy}),this.notify(),this.selection?.resync(),this.app.start().catch(()=>{})};signedInElsewhere=()=>{this.closed||this.hidden||this.signingOut||this.runtime!==null||this.initialization!==null||this.snapshot.status!=="signed_out"||(this.selection?.resync(),this.app.start().catch(()=>{}))};setForeground(e){this.foreground=e,this.runtime?.setForeground(e)}followVisibility(){let e=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let t=()=>{this.closed||this.setForeground(e.visibilityState!=="hidden")},i=()=>{e.visibilityState!=="hidden"&&t()};e.addEventListener("visibilitychange",t,{signal:this.lifetime.signal});let o=typeof window>"u"?void 0:window;o&&typeof o.addEventListener=="function"&&(o.addEventListener("focus",i,{signal:this.lifetime.signal}),o.addEventListener("online",i,{signal:this.lifetime.signal})),t()}followPageLifecycle(){let e=typeof window>"u"?void 0:window;if(!e||typeof e.addEventListener!="function")return;e.addEventListener("pagehide",this.pageHidden,{signal:this.lifetime.signal}),e.addEventListener("pageshow",this.pageShown,{signal:this.lifetime.signal});let t=globalThis.document;t&&typeof t.addEventListener=="function"&&(t.addEventListener("freeze",()=>this.pageHidden(),{signal:this.lifetime.signal}),t.addEventListener("resume",()=>this.pageShown({persisted:!0}),{signal:this.lifetime.signal}))}pageHidden=()=>{if(this.closed||this.hidden)return;let e=this.runtime,t=e!==null||this.initialization!==null;++this.incarnation,this.hidden=Object.freeze({resume:t}),this.clearPendingSave(),this.initialization=null,this.runtime=null,this.election?.abort(),this.election=null,e?.abandon(),this.tabs?.release();let{problemDetail:i,...o}=this.snapshot;this.snapshot=Object.freeze({...o,status:t?"starting":this.snapshot.status,problem:null,selectedCollectionId:null,readiness:xy})};pageShown=e=>{let t=this.hidden;this.closed||!t||!e.persisted||(this.hidden=null,this.notify(),t.resume&&(this.selection?.resync(),this.app.start().catch(()=>{})))};awaitingOtherTab=!1;awaitOtherTab(e,t){let i=e.getNativeSnapshot(),o=globalThis.navigator?.locks;if(this.awaitingOtherTab||this.closed||i.status!=="blocked"||i.problem!=="open_in_another_tab"||!o)return;this.awaitingOtherTab=!0;let s=this.incarnation,r=this.lifetime.signal,a=()=>!this.closed&&!this.hidden&&s===this.incarnation&&this.runtime===e;zI(o,t,r).then(()=>oN(r)).then(()=>{this.awaitingOtherTab=!1,a()&&(this.selection?.resync(),this.app.start().catch(()=>{}))},()=>{this.awaitingOtherTab=!1})}close(){if(this.closing)return this.closing;if(this.closed=!0,this.lifetime.abort(),this.selection?.close(),this.election?.abort(),this.privates?.dispose(),this.opening&&(clearTimeout(this.opening.timer),this.opening=null),this.clearPendingSave(),this.syncing){try{this.syncing.stop()}catch{}this.syncing=null}return this.closing=Promise.resolve().then(async()=>{await this.initialization?.catch(()=>{}),await this.runtime?.close(),this.tabs?.release();{let{problemDetail:e,...t}=this.snapshot;this.snapshot=Object.freeze({...t,status:"closed",problem:null,selectedCollectionId:null})}this.runtime=null,this.notify(),this.listeners.clear(),this.nativeListeners.clear()}),this.closing}application(){return this.app}transferLedger(){let e=this.declaration.storage.unsyncedDatabaseName,t=new AbortController().signal;return Object.freeze({read:(i,o)=>WC(e,i,o??t),record:(i,o,s)=>HC(e,i,o,s??t)})}transferDestination(e){let t=this.getSnapshot().phase;if(t?.kind!=="ready")throw A("invalid_request","Open the collection to bring this work into first.","unsynced_transfer_needs_collection");if(e!==null&&t.collectionId!==e)throw A("invalid_request","This plan is for another collection. Plan the transfer again.","unsynced_transfer_plan_stale");return t.connection}connection(e){return this.closed?null:this.privates?.connection(e)??this.runtime?.connection(e)??null}};ne();var sn=n=>n;function QR(n,e={}){return fN(new pc(n,e))}function fN(n){let e=n.application(),t=()=>sn(e.getSnapshot()),i=async o=>sn(await e.approve(null,o));return Object.freeze({getSnapshot:t,subscribe:o=>e.subscribe(o),start:async o=>sn(await e.start(o)),signIn:async o=>sn(await e.authorize(o)),addCollection:i,addPrivateCollection:i,approve:async(o,s)=>sn(await e.approve(o,s)),refreshCollectionList:async o=>{if(!e.refreshCollectionList)throw A("unavailable","Refreshing the collection list isn't available here.","application_not_yet_available");return sn(await e.refreshCollectionList(o))},reauthorize:async o=>sn(await e.reauthorize(o)),configure:async o=>sn(await e.configure(o)),select:async(o,s)=>sn(await e.select(o,s)),chooseAnother:async o=>sn(await e.chooseAnother(o)),forget:async(o,s)=>sn(await e.forget(o,s)),deleteCollection:async(o,s)=>sn(await e.deleteCollection(o,s)),requestAccess:(o,s)=>e.requestAccess(o,s),unlock:async(o,s,r)=>{if(!e.unlock)throw A("unavailable","Unlocking a Private collection isn't available here.","application_not_yet_available");return sn(await e.unlock(o,s,r))},assess:o=>e.assess(o),setup:Object.freeze({plan:o=>e.setup.plan(o),async apply(o,s){try{return Object.freeze({outcome:"applied",snapshot:sn(await e.setup.apply(o,s))})}catch(r){if(Q(r,"conflict")&&r.reason==="setup_changed")return Object.freeze({outcome:"changed",snapshot:t()});if(Q(r,"outcome_unknown"))return Object.freeze({outcome:"unknown",snapshot:t()});throw r}}}),connection:o=>n.connection(o),setForeground:o=>e.setForeground(o),signOut:async o=>{if(!e.signOut)throw A("unavailable","Sign out isn't available here.","application_not_yet_available");return sn(await e.signOut(o))},close:()=>e.close(),unsynced:Object.freeze({open:async o=>{if(!e.openUnsynced)throw A("unavailable","Working before connecting isn't available here.","application_not_yet_available");return sn(await e.openUnsynced(o))},planTransfer:o=>{if(!e.planUnsyncedTransfer)throw A("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.planUnsyncedTransfer(o)},transfer:(o,s)=>{if(!e.transferUnsynced)throw A("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.transferUnsynced(o,s)},discard:async o=>{if(!e.discardUnsynced)throw A("unavailable","Discarding work isn't available here.","application_not_yet_available");return sn(await e.discardUnsynced(o))}}),application:e})}xl();nm();ne();function e2(n,e){let t=Fo(eo(n)).manifest.requirements.capabilities;if(t?.contract_version!==2)return null;if(!e.isCurrent())throw A("invalid_request","the application connection is not current","application_connection_fenced");let i=new Set(e.records.hello.grant.capabilities),o=new Set(t.required),s=Object.freeze([...new Set([...t.required,...t.optional??[]])].map(r=>Object.freeze({id:r,requirement:o.has(r)?"required":"optional",state:i.has(r)?"available":"missing"})));return Object.freeze({values:s,requiredAvailable:s.every(r=>r.requirement==="optional"||r.state==="available"),missing:Object.freeze(s.filter(r=>r.state==="missing").map(r=>r.id))})}ka();var zA={};ca(zA,{APP_BASES_PROFILE:()=>Jg,APP_COLLECTION_SETUP_LIMITS:()=>no,AppAccountKeyProofUnavailableError:()=>Go,AppAccountKeySealedBundle:()=>Ql,AppAccountKeyUnlockError:()=>st,AppCloudCopyBootstrapError:()=>Sn,AppCloudCopyHostError:()=>ss,AppCollectionControlError:()=>Ri,AppCollectionJoinError:()=>ts,AppCollectionJoinLedger:()=>Yl,AppCollectionSetupError:()=>xn,AppCollectionSetupJournal:()=>Dl,AppCpAccountKeyControl:()=>ec,AppCpAuthorityError:()=>Ci,AppCpCloudCopyBootstrap:()=>jl,AppCpDeviceRegistration:()=>dc,AppCpLogAuthority:()=>Ll,AppCpPeopleAuthority:()=>gc,AppDeviceRegistrationError:()=>oa,AppHttpLogError:()=>kn,AppHttpLogTransport:()=>Tl,AppIndexedDbDeviceKeyProtectedStore:()=>hc,AppIndexedDbDeviceKeyProvider:()=>fc,AppIndexedDbNoiseProtectedStore:()=>yc,AppInstallationSignInError:()=>et,AppLogHostError:()=>vt,AppLogPump:()=>Xs,AppProtectedInstallationSignIn:()=>Ml,AppReplicaOwnerError:()=>Qe,AppStrictDeviceApprovalError:()=>Mt,AppWasmRuntime:()=>Fl,AppWebCloudCopyHost:()=>wc,AppWebCollectionError:()=>zd,AppWebDeviceKeyCustody:()=>uc,AppWebNoiseCustody:()=>mc,AppWebSignInSession:()=>Ky,UNSYNCED_STORAGE_WARNING:()=>rO,acquireAppInstallationLease:()=>pd,acquireAppReplicaLease:()=>cd,appBrowserDirectAccess:()=>qy,appCollectionControlClient:()=>Tm,appInstallationLockName:()=>Wv,appLocalConnector:()=>jm,appLogHealth:()=>__,appModelPackPlan:()=>Ws,appModelResourcePlan:()=>$t,appMutationSaveState:()=>iO,appReplicaLockName:()=>fm,appSaveState:()=>Gm,appStoragePolicy:()=>Ym,attachAppLocalFacade:()=>Lm,createAppCollectionPeople:()=>Mm,createAppWebCollectionAdapter:()=>SR,decodeAppBasesCell:()=>hs,decodeAppBasesDiscoveryResult:()=>Mu,decodeAppBasesResult:()=>Ou,decodeAppBasesSourceResult:()=>qu,decodeAppCollectionSetupIntent:()=>Ht,encodeAppBasesDiscoveryRequest:()=>Ru,encodeAppBasesRequest:()=>Cu,encodeAppBasesSourceRequest:()=>Eu,openAppWebCollectionClient:()=>by,openOwnedAppWorker:()=>BI,probeAppStorage:()=>c2,readAccountKeyMode:()=>yy,selectAppEnvironment:()=>xi,unlockPrivateDevice:()=>gy,verifyAppHandover:()=>n2});Um();Xg();function t2(n,e){return n.seq===e.seq&&n.chain===e.chain&&n.policyGeneration===e.policyGeneration&&n.catalogGeneration===e.catalogGeneration}async function n2(n,e){let t=null;try{let{runtime:i,localPort:o,localClient:s,hostedClient:r,source:a}=n,c=r.hello,l=s.hello,p=a.collection,d=a.deviceId,u=r.authenticatedDevice;if(!(P=>typeof P=="string"&&P.replace(/-/g,"").toLowerCase()===d.replace(/-/g,"").toLowerCase())(u))return null;let h=c.status.confirmedHead,m=h?Object.freeze({...h}):void 0;if(!m||!c.headWitness||c.headWitness.length>64*1024||m.seq===0||c.collection!==p||l.collection!==p)return null;t=new Uint8Array(c.headWitness);let b=t,w=()=>{try{return!e.aborted&&n.isCurrent()===!0&&a.isCurrent()===!0&&l.collection===p&&a.collection===p&&a.deviceId===d&&s.hello===l}catch{return!1}},g=()=>{try{let P=i.observations();return!P.requiresReopen&&!P.keyringRebuilding&&!P.keyringRebuildFailed&&P.status.mode==="synced"&&P.status.confirmedHead!==void 0&&P.status.confirmedHead.seq>=m.seq}catch{return!1}},y=()=>{if(!w()||!g())return!1;let P=i.verifyHandover(o,a,b);return P!==null&&t2(P,m)},v=()=>{try{return!e.aborted&&w()&&r.hello===c&&r.authenticatedDevice===u}catch{return!1}};if(!v()||!y())return null;let _=await s.appliedPrefix(m.seq,e);if(!v()||!y()||_.seq!==m.seq||_.appliedThrough<m.seq||_.chain!==m.chain)return null;let k=Object.freeze({...m}),S=!1,x={head:k,appliedThrough:_.appliedThrough,isCurrent:()=>{if(S)return!1;try{return y()&&t2(k,m)}catch{return!1}},dispose:()=>{S=!0,b.fill(0)}};return t=null,x}catch{return null}finally{t?.fill(0)}}bt();be();var oa=class extends Error{constructor(t){super(`app device registration: ${t}`);this.reason=t;this.name="AppDeviceRegistrationError"}reason},Tt=n=>new oa(n),Cy=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),dc=class{constructor(e,t,i,o,s={}){this.runtime=e;this.session=t;this.persistence=o;try{this.scope=Object.freeze({connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,kind:t.kind});for(let a of[this.scope.connectorId,this.scope.deviceId,this.scope.installationId])if(U(a).every(c=>c===0))throw Tt("binding");if(t.kind!=="mobile"&&t.kind!=="app-runtime")throw Tt("binding");this.rawOrigin=t.cpOrigin;let r=new URL(this.rawOrigin);if(r.username||r.password||r.pathname!=="/"||r.search||r.hash||r.protocol!=="https:"&&!(s.allowLoopbackHttp===!0&&Ye(this.rawOrigin))||(this.origin=r.origin,this.now=s.now??Date.now,this.fetchImpl=s.fetch??globalThis.fetch,!(i.envelope instanceof Uint8Array)||!i.envelope.length||i.envelope.length>1024)||!e.deviceCustodyCurrent(t,i)||(this.custody=Object.freeze({signPublicKey:new Uint8Array(i.signPublicKey),kemPublicKey:new Uint8Array(i.kemPublicKey),noisePublicKey:new Uint8Array(i.noisePublicKey),envelope:new Uint8Array(i.envelope)}),!this.current()))throw Tt("binding")}catch{throw e.retireLog(),Tt("binding")}}runtime;session;persistence;attempted=!1;lifetime=new AbortController;origin;rawOrigin;scope;custody;now;fetchImpl;current(){try{return!this.lifetime.signal.aborted&&this.runtime.deviceCustodyCurrent(this.session,this.custody)&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.connectorId===this.scope.connectorId&&this.session.deviceId===this.scope.deviceId&&this.session.installationId===this.scope.installationId&&this.session.kind===this.scope.kind}catch{return!1}}check(e){if(!this.current()||e.aborted)throw this.close(),Tt("fenced")}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let c=new Uint8Array(32*1024),l=0,p=null,d=null;try{let u=this.fetchImpl;if(p=await u(`${this.origin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted||!p.ok)throw Tt("unavailable");let f=p.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>c.length)throw s.abort(),Tt("response");if(!p.body)throw Tt("response");for(d=p.body.getReader();;){let{done:m,value:b}=await d.read();try{if(this.check(o),s.signal.aborted)throw Tt("unavailable");if(m)break;if(l+b.length>c.length)throw s.abort(),Tt("response");c.set(b,l),l+=b.length}finally{b?.fill(0)}}let h=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c.subarray(0,l)));if(!h||typeof h!="object"||Array.isArray(h))throw Tt("response");return h}catch(u){throw this.check(o),u instanceof oa?u:Tt("unavailable")}finally{c.fill(0),(d?.cancel()??p?.body?.cancel())?.catch(()=>{}),d?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async register(e){let t=null,i=null;try{if(this.check(e.signal),this.attempted)throw Tt("fenced");this.attempted=!0,await this.persistence.pending(new Uint8Array(this.custody.envelope),e),this.check(e.signal);let o=await this.session.connectorBearer(e);if(this.check(e.signal),typeof o!="string"||!o||o.length>16*1024||/[^\x21-\x7e]/.test(o))throw Tt("binding");let s=await this.json("/v1/next/devices/challenge",o,void 0,e.signal);if(this.check(e.signal),typeof s.challenge!="string"||!/^[0-9a-f]{64}$/.test(s.challenge)||typeof s.expires_at!="number"||!Number.isSafeInteger(s.expires_at)||s.expires_at-this.now()<=5e3||s.expires_at-this.now()>16*6e4)throw Tt("response");t=Uint8Array.from(s.challenge.match(/../g).map(l=>parseInt(l,16)));let r=this.runtime.signCpEnrol(t);this.check(e.signal),i=r.signature;let a=await this.json("/v1/next/devices",o,JSON.stringify({device_id:this.scope.deviceId,kind:this.scope.kind,capabilities:["collection_mode_switch_v1"],challenge:s.challenge,sign_pk:Cy(r.signPublicKey),kem_pk:Cy(r.kemPublicKey),noise_pk:Cy(r.noisePublicKey),sig:Cy(i)}),e.signal);if(this.check(e.signal),a.device_id!==this.scope.deviceId)throw Tt("response");let c=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,signPublicKey:new Uint8Array(r.signPublicKey),kemPublicKey:new Uint8Array(r.kemPublicKey),noisePublicKey:new Uint8Array(r.noisePublicKey)});return await this.persistence.registered(c,e),this.check(e.signal),this.runtime.acknowledgeDeviceRegistration(c),c}catch(o){throw this.close(),o instanceof oa?o:Tt("unavailable")}finally{t?.fill(0),i?.fill(0)}}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.custody.envelope.fill(0),this.runtime.retireLog())}};Xe();be();var fn=()=>new Error("app device key custody unavailable; preserve storage and reopen"),uc=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned;let o=[this.scope.accountId,this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw fn();this.namespace=`mdbase.app-device-keys.v1:${o.map(s=>Array.from(s,r=>r.toString(16).padStart(2,"0")).join("")).join(":")}`,this.aad=se(["mdbase/v1/app-device-keys-platform",...o]),this.check(new AbortController().signal)}catch{throw fn()}}pin;key;store;scope;namespace;aad;current;owned;attempted=!1;check(e){try{if(e.aborted||this.pin.isCurrent!==this.current||this.pin.installationOwned!==this.owned||this.current.call(this.pin)!==!0||this.owned.call(this.pin)!==!0||this.pin.accountId!==this.scope.accountId||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw fn()}catch{throw fn()}}async openNativeDevice(e,t){let i=null,o=null,s=!1;try{if(this.attempted)throw fn();this.attempted=!0;let r=t.signal,a=t.mode;if(this.check(r),!["fresh","existing"].includes(a)||t.noise.mode!==a||t.noise.mode==="existing"&&!(t.noise.envelope instanceof Uint8Array))throw fn();let c=t.noise.mode==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:new Uint8Array(t.noise.envelope)};if(c.mode==="existing"&&(!c.envelope.length||c.envelope.length>1024))throw fn();let l=await this.store.read(this.namespace,{signal:r});if(this.check(r),a==="fresh"){if(l!==null)throw fn();i=globalThis.crypto.getRandomValues(new Uint8Array(64));let u=globalThis.crypto.getRandomValues(new Uint8Array(12)),f=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:u,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,i));if(this.check(r),o=se(new Map([[0,1],[1,u],[2,f]])),await this.store.create(this.namespace,o,{signal:r})!==!0)throw fn();this.check(r)}else{if(!(l instanceof Uint8Array)||l.length===0||l.length>256)throw fn();o=new Uint8Array(l);let u=ce(o);if(!(u instanceof Map))throw fn();let f=u;if(f.size!==3||f.get(0)!==1)throw fn();let h=f.get(1),m=f.get(2);if(!(h instanceof Uint8Array)||h.length!==12||!(m instanceof Uint8Array)||m.length!==80||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(h),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(m))),this.check(r),i.length!==64))throw fn()}this.check(r);let p=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,isCurrent:()=>{try{return this.check(r),!0}catch{return!1}}});s=!0;let d=e.openDeviceConsuming({pin:p,signSecretKey:i.subarray(0,32),kemSecretKey:i.subarray(32),opened:c});return this.check(r),d}catch{if(s)try{e.retireLog()}catch{}throw fn()}finally{i?.fill(0),o?.fill(0)}}};Bn();be();var Oy="device-key-kek",i2="original-device-kek",Lt=()=>new Error("app device key provider unavailable; preserve storage and reopen");function Ry(n){if(typeof globalThis.CryptoKey!="function"||!(n instanceof CryptoKey)||n.type!=="secret"||n.extractable||n.algorithm.name!=="AES-GCM"||n.algorithm.length!==256||n.usages.length!==2||!n.usages.includes("encrypt")||!n.usages.includes("decrypt"))throw Lt();return n}function hN(n){if(n===void 0)return null;if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).length!==2||!Object.hasOwn(n,"version")||!Object.hasOwn(n,"key")||n.version!==1)throw Lt();return Ry(n.key)}var fc=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;value=null;closed=!1;loaned=!1;scope;current;owned;static async open(e){let t=null;try{let{source:i,origin:o,mode:s,signal:r}=e;t=new n(i,o,r);let a=Object.values(t.scope).map(u=>{let f=U(u);if(f.every(h=>h===0))throw Lt();return Array.from(f,h=>h.toString(16).padStart(2,"0")).join("")});if(!Et(o)||!["fresh","existing"].includes(s)||!globalThis.indexedDB||!globalThis.crypto?.subtle||typeof globalThis.CryptoKey!="function")throw Lt();t.check(r);let c=crypto.subtle.generateKey.bind(crypto.subtle),l=`mdbase.app.device-key-kek.v1.${a.join(".")}`,p=await t.openDatabase(l,s);t.db=p,p.onversionchange=()=>t.close(),t.check(r);let d=await t.transaction("readonly",r,null);if(t.check(r),s==="existing"){if(d===null||typeof d=="boolean")throw Lt();t.value=d}else{if(d!==null)throw Lt();let u=Ry(await c({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]));if(t.check(r),await t.transaction("readwrite",r,u)!==!0)throw Lt();t.check(r),t.value=u}return t.check(r),t}catch{throw t?.close(),Lt()}}check(e){try{if(this.closed||this.lifetime.aborted||e.aborted||xt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.scope).some(([t,i])=>this.source[t]!==i))throw Lt()}catch{throw Lt()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,c=()=>{r=!0,o(Lt())};this.lifetime.addEventListener("abort",c,{once:!0});let l=()=>this.lifetime.removeEventListener("abort",c);s.onblocked=c,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw Lt();s.result.createObjectStore(Oy),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(Lt())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Oy))throw Lt();i(s.result)}catch{s.result.close(),o(Lt())}}})}transaction(e,t,i){return new Promise((o,s)=>{if(this.check(t),!this.db)throw Lt();let r=this.db.transaction(Oy,e,{durability:"strict"}),a=r.objectStore(Oy),c=null,l=!1,p=()=>{l=!0;try{r.abort()}catch{}};t.addEventListener("abort",p,{once:!0}),this.lifetime.addEventListener("abort",p,{once:!0});let d=()=>{t.removeEventListener("abort",p),this.lifetime.removeEventListener("abort",p)};r.onerror=r.onabort=()=>{d(),c=null,s(Lt())},r.oncomplete=()=>{d();try{if(this.check(t),l)throw Lt();o(c)}catch{c=null,s(Lt())}};let u=a.get(i2);u.onsuccess=()=>{try{this.check(t);let f=hN(u.result);e==="readonly"?c=f:(c=f===null,c===!0&&i!==null&&a.add({version:1,key:Ry(i)},i2))}catch{p()}}})}deviceCustodyKek(e){if(this.check(e.signal),this.loaned||!this.value)throw Lt();return this.loaned=!0,Ry(this.value)}close(){this.closed||(this.closed=!0,this.value=null,this.db?.close(),this.db=null)}};Bn();be();var Ey="original-device-keys",r2="custody",mN=256,Rn=()=>new Error("app device key custody store unavailable");function o2(n){if(!(n instanceof Uint8Array)||!n.length||n.length>mN)throw Rn();return new Uint8Array(n)}var hc=class n{constructor(e,t,i,o,s){this.db=e;this.source=t;this.scope=i;this.namespace=o;this.origin=s;this.current=t.isCurrent,this.owned=t.installationOwned,e.onversionchange=()=>this.close()}db;source;scope;namespace;origin;closed=!1;current;owned;static async open(e){try{return await this.openChecked(e)}catch{throw Rn()}}static async openChecked(e){let{source:t,signal:i,mode:o,origin:s}=e,r=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId}),a=t.isCurrent,c=t.installationOwned,l=()=>{try{return!i.aborted&&t.isCurrent===a&&t.installationOwned===c&&a.call(t)===!0&&c.call(t)===!0&&Object.keys(r).every(m=>t[m]===r[m])}catch{return!1}},p=[r.accountId,r.connectorId,r.deviceId,r.installationId].map(m=>{let b=U(m);if(b.every(w=>w===0))throw Rn();return Array.from(b,w=>w.toString(16).padStart(2,"0")).join("")});if(!Et(s)||xt()!==s||!["fresh","existing"].includes(o)||!l()||!globalThis.indexedDB)throw Rn();let d=`mdbase.app-device-keys.v1:${p.join(":")}`,u=`mdbase.app.device-keys.v1.${p.join(".")}`,f=await new Promise((m,b)=>{let w=indexedDB.open(u,1),g=!1,y=()=>{g=!0,b(Rn())};i.addEventListener("abort",y,{once:!0});let v=()=>i.removeEventListener("abort",y);w.onblocked=y,w.onupgradeneeded=()=>{if(g||o!=="fresh"||!l()||w.result.objectStoreNames.length!==0){w.transaction?.abort();return}w.result.createObjectStore(Ey)},w.onerror=()=>{v(),b(Rn())},w.onsuccess=()=>{if(v(),g||!l()||w.result.objectStoreNames.length!==1||!w.result.objectStoreNames.contains(Ey)){w.result.close(),b(Rn());return}m(w.result)}}),h=new n(f,t,r,d,s);try{h.check(i);let m=await h.read(d,{signal:i});try{if(o==="fresh"!=(m===null))throw Rn();return h.check(i),h}finally{m?.fill(0)}}catch{throw h.close(),Rn()}}check(e,t=this.namespace){try{if(this.closed||e.aborted||t!==this.namespace||xt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.keys(this.scope).some(i=>this.source[i]!==this.scope[i]))throw Rn()}catch{throw Rn()}}async read(e,t){let i=await this.transaction("readonly",e,t.signal,null);try{return this.check(t.signal,e),i}catch{throw i instanceof Uint8Array&&i.fill(0),Rn()}}async create(e,t,i){this.check(i.signal,e);let o=o2(t);try{let s=await this.transaction("readwrite",e,i.signal,o);return this.check(i.signal,e),s===!0}finally{o.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(i,t);let a=this.db.transaction(Ey,e,{durability:"strict"}),c=a.objectStore(Ey),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>i.removeEventListener("abort",d);i.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(Rn())},a.oncomplete=()=>{u();try{if(this.check(i,t),p)throw Rn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(Rn())}};let f=c.get(r2);f.onsuccess=()=>{let h=null;try{this.check(i,t),h=f.result===void 0?null:o2(f.result),e==="readonly"?(l=h,h=null):(l=h===null,l===!0&&o!==null&&c.add(new Uint8Array(o),r2))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};Xe();be();var Ne=()=>new Error("app Noise custody unavailable; preserve storage and reopen"),Wd=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),mc=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId});let o=[this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw Ne();this.namespace=`mdbase.app-noise.v1:${this.scope.connectorId}:${this.scope.deviceId}:${this.scope.installationId}`,this.aad=se(["mdbase/v1/app-noise-platform",...o]),this.check(new AbortController().signal)}catch{throw Ne()}}pin;key;store;scope;namespace;aad;check(e){try{if(e.aborted||this.pin.isCurrent()!==!0||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw Ne()}catch{throw Ne()}}receiptValue(e){if(e.connectorId!==this.scope.connectorId||e.deviceId!==this.scope.deviceId||e.installationId!==this.scope.installationId)throw Ne();let t=[e.signPublicKey,e.kemPublicKey,e.noisePublicKey];if(t.some(i=>!(i instanceof Uint8Array)||i.length!==32||i.every(o=>o===0)))throw Ne();return t.map(i=>new Uint8Array(i))}receipt(e){if(e===null)return null;if(!Array.isArray(e)||e.length!==3||e.some(t=>!(t instanceof Uint8Array)||t.length!==32||t.every(i=>i===0)))throw Ne();return Object.freeze({...this.scope,signPublicKey:new Uint8Array(e[0]),kemPublicKey:new Uint8Array(e[1]),noisePublicKey:new Uint8Array(e[2])})}markerValue(e){let t=U(e.collection);if(t.every(i=>i===0)||typeof e.acknowledged!="boolean"||!(e.sasCommitment instanceof Uint8Array)||e.sasCommitment.length!==32||e.sasCommitment.every(i=>i===0))throw Ne();return[t,...this.receiptValue(e),new Uint8Array(e.sasCommitment),e.acknowledged]}marker(e,t){if(e===null)return null;if(!t||!Array.isArray(e)||e.length!==6||!(e[0]instanceof Uint8Array)||e[0].length!==16||e[0].every(r=>r===0)||typeof e[5]!="boolean")throw Ne();let i=this.receipt(e.slice(1,4));for(let r of["signPublicKey","kemPublicKey","noisePublicKey"])if(!Wd(i[r],t[r]))throw Ne();let o=e[4];if(!(o instanceof Uint8Array)||o.length!==32||o.every(r=>r===0))throw Ne();let s=Array.from(e[0],r=>r.toString(16).padStart(2,"0")).join("");return Object.freeze({...i,collection:`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`,sasCommitment:new Uint8Array(o),acknowledged:e[5]})}async restore(e){let t=await this.read(e);return this.check(e.signal),t?.value??null}async read(e){let t=null,i=null;try{this.check(e.signal);let o=await this.store.read(this.namespace,e);if(this.check(e.signal),o===null)return null;if(!(o instanceof Uint8Array)||o.length===0||o.length>4096)throw Ne();t=new Uint8Array(o);let s=ce(t);if(!(s instanceof Map))throw Ne();let r=s,a=r.get(1),c=r.get(2);if(r.size!==3||r.get(0)!==1||!(a instanceof Uint8Array)||a.length!==12||!(c instanceof Uint8Array)||c.length<16||c.length>2064||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(c))),this.check(e.signal),i.length>2048))throw Ne();let l=ce(i);if(!(l instanceof Map))throw Ne();let p=l,d=p.get(1);if(!(p.get(0)===1&&p.size===3||p.get(0)===2&&p.size===4&&p.has(3))||!(d instanceof Uint8Array)||d.length===0||d.length>1024||!p.has(2))throw Ne();let u=this.receipt(p.get(2)),f=p.get(0)===2?this.marker(p.get(3),u):null;return{value:Object.freeze({envelope:new Uint8Array(d),receipt:u,privateEnrolMarker:f}),encrypted:new Uint8Array(t)}}catch{throw Ne()}finally{t?.fill(0),i?.fill(0)}}async write(e,t,i,o,s=null){let r=null,a=null;try{if(this.check(o.signal),!(e instanceof Uint8Array)||!e.length||e.length>1024)throw Ne();let c=new Map([[0,s===null?1:2],[1,new Uint8Array(e)],[2,t===null?null:this.receiptValue(t)]]);if(s!==null){let u=this.markerValue(s);this.marker(u,t),c.set(3,u)}if(r=se(c),r.length>2048)throw Ne();let l=globalThis.crypto.getRandomValues(new Uint8Array(12)),p=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:l,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(r)));this.check(o.signal),a=se(new Map([[0,1],[1,l],[2,p]]));let d=await this.store.compareAndSet(this.namespace,i,a,o);if(this.check(o.signal),d!==!0)throw Ne()}catch{throw Ne()}finally{r?.fill(0),a?.fill(0)}}async pending(e,t){let i=await this.read(t);if(this.check(t.signal),i){if(!Wd(i.value.envelope,e))throw Ne();return}await this.write(e,null,null,t),this.check(t.signal)}async privateEnrolPending(e,t){try{if(e.acknowledged!==!1)throw Ne();await this.writePrivateMarker(e,!1,t)}catch{throw Ne()}}async privateEnrolAcknowledged(e,t){try{await this.writePrivateMarker(e,!0,t)}catch{throw Ne()}}async writePrivateMarker(e,t,i){this.check(i.signal);let o=this.marker(this.markerValue(e),e),s=await this.read(i);if(this.check(i.signal),!s?.value.receipt)throw Ne();for(let a of["signPublicKey","kemPublicKey","noisePublicKey"])if(!Wd(o[a],s.value.receipt[a]))throw Ne();let r=s.value.privateEnrolMarker;if(r){if(r.collection!==o.collection||!Wd(r.sasCommitment,o.sasCommitment))throw Ne();if(r.acknowledged){if(!t)throw Ne();return}if(!t)return}else if(t)throw Ne();await this.write(s.value.envelope,s.value.receipt,s.encrypted,i,Object.freeze({...o,acknowledged:t})),this.check(i.signal)}async registered(e,t){let i=await this.read(t);if(this.check(t.signal),!i)throw Ne();if(i.value.receipt){for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(!Wd(i.value.receipt[o],e[o]))throw Ne();this.receiptValue(e);return}await this.write(i.value.envelope,e,i.encrypted,t),this.check(t.signal)}};Bn();be();var My="opaque-noise",s2="custody",yN=4096,Hn=()=>new Error("app noise custody store unavailable");function _A(n){if(!(n instanceof Uint8Array)||n.byteLength<1||n.byteLength>yN)throw Hn();return new Uint8Array(n)}function gN(n,e){return n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i])}function AA(n){if(U(n).every(t=>t===0))throw Hn();return n.toLowerCase()}function kA(n,e){try{return n.isCurrent()===!0&&n.connectorId===e[0]&&n.deviceId===e[1]&&n.installationId===e[2]}catch{return!1}}var yc=class n{constructor(e,t,i,o){this.db=e;this.source=t;this.pins=i;this.origin=o;e.onversionchange=()=>this.close()}db;source;pins;origin;closed=!1;static async open(e){try{return await this.openChecked(e)}catch{throw Hn()}}static async openChecked(e){let{source:t,signal:i}=e,o=[t.connectorId,t.deviceId,t.installationId];if(!Et(e.origin)||xt()!==e.origin||!["fresh","existing"].includes(e.mode)||i.aborted||!kA(t,o)||typeof globalThis.indexedDB>"u")throw Hn();let s=`mdbase.app.noise.v1.${AA(o[2])}.${AA(o[0])}.${AA(o[1])}`,r=await new Promise((c,l)=>{let p=indexedDB.open(s,1),d=!1,u=()=>{d=!0,l(Hn())};i.addEventListener("abort",u,{once:!0});let f=()=>i.removeEventListener("abort",u);p.onblocked=u,p.onupgradeneeded=()=>{if(d||i.aborted||e.mode!=="fresh"||!kA(t,o)||p.result.objectStoreNames.length!==0){p.transaction?.abort();return}p.result.createObjectStore(My)},p.onerror=()=>{f(),l(Hn())},p.onsuccess=()=>{if(f(),d||i.aborted||p.result.objectStoreNames.length!==1||!p.result.objectStoreNames.contains(My)){p.result.close(),l(Hn());return}c(p.result)}}),a=new n(r,t,o,e.origin);try{let c=await a.read(a.namespace,{signal:i});if(e.mode==="fresh"!=(c===null))throw Hn();return c?.fill(0),a.check(i),a}catch{throw a.close(),Hn()}}get namespace(){return`mdbase.app-noise.v1:${this.pins[0]}:${this.pins[1]}:${this.pins[2]}`}check(e,t=this.namespace){if(this.closed||e.aborted||t!==this.namespace||xt()!==this.origin||!kA(this.source,this.pins))throw Hn()}async read(e,t){this.check(t.signal,e);let i=await this.transaction("readonly",t.signal,null,null);try{return this.check(t.signal),i}catch{throw i instanceof Uint8Array&&i.fill(0),Hn()}}async compareAndSet(e,t,i,o){this.check(o.signal,e);let s=null,r=null;try{s=t===null?null:_A(t),r=_A(i);let a=await this.transaction("readwrite",o.signal,s,r);return this.check(o.signal),a===!0}finally{s?.fill(0),r?.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(t);let a=this.db.transaction(My,e,{durability:"strict"}),c=a.objectStore(My),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(Hn())},a.oncomplete=()=>{u();try{if(this.check(t),p)throw Hn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(Hn())}};let f=c.get(s2);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:_A(f.result),e==="readonly"?(l=h,h=null):(l=gN(h,i),l===!0&&o!==null&&c.put(new Uint8Array(o),s2))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};gd();yd();bt();be();ne();var er=()=>A("unavailable","people metadata is unavailable","people_response");function a2(n){if(!n||typeof n!="object"||Array.isArray(n))throw er();return n}function l2(n){if(typeof n=="number"&&!Number.isSafeInteger(n))throw er();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw er();return e}var gc=class{constructor(e,t={}){this.session=e;this.rawOrigin=e.cpOrigin;let i=new URL(this.rawOrigin);if(i.username||i.password||i.pathname!=="/"||i.search||i.hash||i.protocol!=="https:"&&!(t.allowLoopbackHttp===!0&&Ye(e.cpOrigin)))throw A("invalid_request","invalid people CP origin","people_binding");this.cpOrigin=i.origin,this.collection=e.collection,this.connector=e.connectorId,this.device=e.deviceId,this.ep=l2(e.endpoint);for(let o of[this.collection,this.connector,this.device])if(U(o).every(s=>s===0))throw A("invalid_request","nil people binding","people_binding");if(this.fetchImpl=t.fetch??globalThis.fetch,!this.isCurrent())throw A("unauthenticated","people scope is not current","people_fenced")}session;cpOrigin;rawOrigin;collection;connector;device;ep;fetchImpl;lifetime=new AbortController;isCurrent(){try{return!this.lifetime.signal.aborted&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.collection===this.collection&&this.session.connectorId===this.connector&&this.session.deviceId===this.device&&l2(this.session.endpoint)===this.ep}catch{return!1}}check(e){if(e?.throwIfAborted(),!this.isCurrent())throw A("unauthenticated","people scope changed","people_fenced")}async request(e,t={}){if(e!=="identity"&&e!=="members")throw A("invalid_request","invalid people resource");this.check(t.signal);let i=new AbortController,o=()=>i.abort();t.signal?.addEventListener("abort",o,{once:!0}),this.lifetime.signal.addEventListener("abort",o,{once:!0});let s=setTimeout(o,15e3);s.unref?.();let r=new Uint8Array(1024*1024),a=0,c,l;try{let p=await this.session.connectorBearer({signal:i.signal});if(this.check(t.signal),i.signal.aborted)throw er();if(typeof p!="string"||!/^(idev_|ct_)/.test(p)||p.length>16*1024||/[^\x21-\x7e]/.test(p))throw A("unauthenticated","invalid people credential","people_binding");let d=this.fetchImpl;if(c=await d(`${this.cpOrigin}/v1/authorities/${this.collection}/${e}?device_id=${this.device}`,{method:"GET",headers:{authorization:`Bearer ${p}`},signal:i.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(t.signal),i.signal.aborted)throw er();let u=c.headers.get("content-length");if(u!==null&&/^(0|[1-9][0-9]*)$/.test(u)&&Number(u)>r.length||!c.body)throw er();for(l=c.body.getReader();;){let{done:h,value:m}=await l.read();try{if(this.check(t.signal),i.signal.aborted)throw er();if(h)break;if(a+m.length>r.length)throw er();r.set(m,a),a+=m.length}finally{m?.fill(0)}}let f=a2(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(r.subarray(0,a))));if(this.check(t.signal),c.status===401)throw A("unauthenticated","people credential is no longer current","people_fenced");if(c.status===403){let h=a2(f.error);throw A("forbidden","people access was refused",e==="members"&&h.code==="people_permission_declined"?"people_permission_declined":"people_access")}if(c.status===404)throw A("upgrade_required","people metadata is unsupported","people_unsupported");if(!c.ok)throw er();return f}catch(p){throw this.check(t.signal),p instanceof pe?p:er()}finally{i.abort(),r.fill(0),(l?.cancel()??c?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(s),t.signal?.removeEventListener("abort",o),this.lifetime.signal.removeEventListener("abort",o)}}close(){this.lifetime.abort()}};md();Dm();A_();async function c2(n){if(!n.worker)return{supported:!1,reason:"worker_required"};if(!n.storage?.getDirectory)return{supported:!1,reason:"opfs_unavailable"};let e,t,i=!1,o,s={supported:!1,reason:"probe_failed"};try{let r=n.randomUUID();if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r))return s;t=r.toLowerCase(),e=await(await n.storage.getDirectory()).getDirectoryHandle(".mdbase-app-probes",{create:!0});let a=await e.getFileHandle(t,{create:!0});if(i=!0,!a.createSyncAccessHandle)s={supported:!1,reason:"sync_handle_unavailable"};else{o=await a.createSyncAccessHandle();let c=new Uint8Array([109,100,98,110]),l=new Uint8Array(c.length);if(o.write(c,{at:0})!==c.length)throw new Error("short probe write");if(o.flush(),o.read(l,{at:0})!==c.length||l.some((p,d)=>p!==c[d]))throw new Error("probe readback failed");s={supported:!0,backend:"opfs_sahpool_candidate",crashDurability:"unqualified",eviction:"possible"}}}catch{s={supported:!1,reason:"probe_failed"}}finally{let r=!0;try{o?.close()}catch{r=!1,s={supported:!1,reason:"cleanup_failed"}}if(i&&r&&e&&t)try{await e.removeEntry(t)}catch{s={supported:!1,reason:"cleanup_failed"}}}return s}Ko();Vo();tA();Ho();_d();Hs();m_();sy();fd();var SA=Object.freeze({status:"unsupported"}),qy=Object.freeze({snapshot(){return SA},async check(n={}){return n.signal?.throwIfAborted(),SA},async request(n={}){return n.signal?.throwIfAborted(),SA},disable(){}});Qn();fd();var xA="mdbase.app.log-token.v1",bc="tokens";function p2(){return new Promise(n=>{let e;try{e=indexedDB.open(xA,1)}catch{n(null);return}e.onupgradeneeded=()=>{try{e.result.createObjectStore(bc)}catch{}},e.onsuccess=()=>{let t=e.result;t.onversionchange=()=>t.close(),n(t.objectStoreNames.contains(bc)?t:(t.close(),null))},e.onerror=e.onblocked=()=>n(null)})}function PA(n,e){return p2().then(t=>new Promise(i=>{if(!t){i(null);return}let o=null;try{let s=t.transaction(bc,n),r=e(s.objectStore(bc));r&&(r.onsuccess=()=>{o=r.result??null}),s.oncomplete=()=>{t.close(),i(o)},s.onerror=s.onabort=()=>{t.close(),i(null)}}catch{t.close(),i(null)}}))}function d2(){return typeof indexedDB>"u"?null:Object.freeze({async read(n,e){let t=await PA("readonly",i=>i.get(n)).catch(()=>null);return!t||typeof t.value!="string"||!t.value||t.value.length>16*1024||/[^\x21-\x7e]/.test(t.value)||typeof t.expires!="number"||!Number.isSafeInteger(t.expires)||t.expires-e<6e4||t.expires-e>16*6e4?null:Object.freeze({value:t.value,expires:t.expires})},async write(n,e){await PA("readwrite",t=>t.put({value:e.value,expires:e.expires},n)).catch(()=>null)},async drop(n){await PA("readwrite",e=>e.delete(n)).catch(()=>null)}})}async function u2(n){let{cpOrigin:e,connectorId:t,deviceId:i}=n;if(!t||!i)return!0;let o=await p2();return o?new Promise(s=>{try{let r=o.transaction(bc,"readwrite"),a=r.objectStore(bc).openCursor();a.onsuccess=()=>{let c=a.result;if(c){if(typeof c.key=="string"){let l=c.key.split(" ");l.length===5&&l[0]===e&&l[2]===t&&l[3]===i&&c.delete()}c.continue()}},r.oncomplete=()=>{o.close(),s(!0)},r.onerror=r.onabort=()=>{o.close(),s(!1)}}catch{o.close(),s(!1)}}):!1}ry();Bn();be();$s();ka();ne();Lf();yd();bt();Xe();be();var bN=4401,wN=4403,vN=4410,_N=3e4,AN=1e4,kN=6e4,SN=6e4,PN=15e3,xN=4,IN=64*1024,CN=1024*1024;function ON(n,e){let t=new URL(n);if(t.protocol==="https:")return`wss://${t.host}`;if(e&&Ye(n))return`ws://${t.host}`;throw new Error("app log push: origin")}var RN=n=>[...n].map(e=>e.toString(16).padStart(2,"0")).join(""),f2=(n,e,t)=>se(new Map([[0,0],[1,n],[2,e],[3,t]]));function EN(n){let e=n.get(3);if(!(e instanceof Map))return null;let t=e.get(0),i=e.get(1);return{code:typeof t=="string"?t:"unavailable",reason:typeof i=="string"?i:""}}var Ty=class{constructor(e,t,i={}){this.source=e;this.events=t;this.base=ON(e.origin,i.allowLoopbackHttp===!0),this.collectionBytes=U(e.collection);let o=i.WebSocket??globalThis.WebSocket;if(typeof o!="function")throw new Error("app log push: no WebSocket");this.Ws=o,this.random=i.random??Math.random,this.now=i.now??Date.now}source;events;base;collectionBytes;Ws;random;now;socket=null;connecting=!1;closed=!1;finished=null;unsupported=!1;paused=!1;isLive=!1;attempts=0;liveSince=0;retry=null;ping=null;pongDue=null;opening=null;unsigned=0;life=new AbortController;token=null;get live(){return this.isLive}get available(){return!this.unsupported&&this.finished===null&&!this.closed}get suspended(){return this.paused}start(){this.connect()}nudge(){this.unsupported=!1,this.unsigned=0,!(this.paused||this.socket||this.connecting||!this.available)&&(this.attempts=0,this.clearRetry(),this.connect())}suspend(){this.paused||!this.available||(this.paused=!0,this.clearRetry(),this.drop(1e3,"hidden"))}resume(){if(!this.paused){this.nudge();return}this.paused=!1,this.nudge()}close(){this.closed||(this.closed=!0,this.life.abort(),this.clearRetry(),this.drop(1e3,"closed"))}clearRetry(){this.retry!==null&&clearTimeout(this.retry),this.retry=null}clearPing(){this.ping!==null&&clearInterval(this.ping),this.ping=null,this.pongDue!==null&&clearTimeout(this.pongDue),this.pongDue=null,this.opening!==null&&clearTimeout(this.opening),this.opening=null}setLive(e){if(this.isLive!==e){this.isLive=e,e&&(this.liveSince=this.now());try{this.events.live(e)}catch{}}}end(e){if(!(this.finished||this.closed)){this.finished=e,this.clearRetry(),this.drop(1e3,e);try{this.events.ended(e)}catch{}}}drop(e,t){this.clearPing();let i=this.socket;if(this.socket=null,i){i.onopen=i.onmessage=i.onclose=i.onerror=null;try{i.close(e,t)}catch{}}this.setLive(!1)}schedule(e=!1){if(this.paused||!this.available||this.retry!==null)return;let t=e?0:Math.floor(this.random()*Math.min(SN,1e3*2**Math.min(this.attempts,6)));this.attempts++,this.retry=setTimeout(()=>{this.retry=null,this.connect()},t)}async connect(){if(this.paused||this.socket||this.connecting||!this.available)return;if(!this.source.isCurrent()){this.close();return}this.connecting=!0;let e,t,i;try{let r=this.life.signal;if(e=await this.source.accessToken({signal:r}),t=await this.source.nonce({signal:r}),this.paused||!this.available||!this.source.isCurrent())return;if(i=this.source.signHello(t,e),!i){++this.unsigned>=xN?this.unsupported=!0:this.schedule();return}this.unsigned=0}catch{this.connecting=!1,this.schedule();return}finally{this.connecting=!1}this.token=e;let o;try{o=new this.Ws(`${this.base}/v1/ws?c=${this.source.collection}&n=${RN(t)}`)}catch{this.schedule();return}o.binaryType="arraybuffer",this.socket=o;let s=f2(1,"hello",new Map([[0,[1,0]],[1,e],[2,U(this.source.deviceId)],[3,i]]));i.fill(0),t.fill(0),o.onopen=()=>{try{o.send(s)}catch{this.lost(o,1006)}},o.onmessage=r=>this.message(o,r.data),o.onclose=r=>this.lost(o,r.code),o.onerror=()=>{},this.opening=setTimeout(()=>{this.opening=null,this.lost(o,1006)},PN)}message(e,t){if(e!==this.socket)return;if(typeof t=="string"){t==="pong"&&this.pongDue!==null&&(clearTimeout(this.pongDue),this.pongDue=null);return}if(!(t instanceof ArrayBuffer)||t.byteLength>CN){this.lost(e,1009);return}let i=new Uint8Array(t),o;try{let a=ce(i);if(!(a instanceof Map))throw new Error;o=a}catch{this.lost(e,1007);return}if(o.get(0)===2){if(!this.isLive)return;if(this.deliver(i),o.get(1)==="closed"){let a=o.get(2),c=a instanceof Map?a.get(1):null;this.end(c==="gone"?"gone":c==="revoked"?"revoked":"forbidden")}return}if(o.get(0)!==1)return;let s=o.get(1),r=EN(o);if(s===1){if(r){this.refused(e,r);return}try{e.send(f2(2,"subscribe",new Map([[0,this.collectionBytes],[1,0],[2,IN]])))}catch{this.lost(e,1006)}return}if(s===2){if(r){this.refused(e,r);return}let a=o.get(2);if(!(a instanceof Map)){this.lost(e,1007);return}let c=a.get(0),l=a.get(1);this.startPing(e),this.setLive(!0),(typeof c=="number"||typeof c=="bigint")&&l instanceof Uint8Array&&l.length===32&&this.deliver(se(new Map([[0,2],[1,"head"],[2,new Map([[0,this.collectionBytes],[1,c],[2,l]])]])))}}deliver(e){try{this.events.push(e)}catch{}}refused(e,t){if(t.code==="forbidden"&&t.reason==="credentials_revoked"){this.end("revoked");return}if(t.code==="forbidden"||t.code==="not_found"){this.end(t.code==="not_found"?"gone":"forbidden");return}if(t.code==="gone"){this.end("gone");return}t.code==="unauthenticated"&&this.token&&(this.source.invalidateToken?.(this.token),this.token=null),this.lost(e,1008)}startPing(e){this.clearPing(),this.ping=setInterval(()=>{if(!(e!==this.socket||this.pongDue!==null)){try{e.send("ping")}catch{this.lost(e,1006);return}this.pongDue=setTimeout(()=>{this.pongDue=null,this.lost(e,1006)},AN)}},_N)}lost(e,t){if(e!==this.socket)return;let i=this.isLive&&this.now()-this.liveSince>=kN;if(this.drop(1e3,"lost"),t===wN){this.end("forbidden");return}if(t===vN){this.end("gone");return}if(i&&(this.attempts=0),t===bN){this.token&&this.source.invalidateToken?.(this.token),this.token=null,this.attempts=0,this.schedule(!0);return}this.schedule()}};B_();Qn();md();function Hd(n){return n.mode==="local_only"?null:n.incidents.some(e=>e.kind==="waiting_for_key")?"waiting_for_key":n.installing?"installing":n.resyncing?"resyncing":n.connection==="offline"?"offline":n.headKnown===0?"head_unknown":n.confirmedThrough<n.headKnown?"behind":null}function IA(n){let e=n.incidents.find(r=>r.kind==="waiting_for_key");if(!e)return null;let t={through:n.confirmedThrough,head:n.headKnown},i=e.details,o=r=>i instanceof Map?i.get(r):i&&typeof i=="object"?i[r]:void 0,s=o("reason");typeof s=="string"&&/^[a-z_]{1,32}$/.test(s)&&(t.key=s);for(let r of["position","at"]){let a=o(r);(typeof a=="number"||typeof a=="bigint")&&(t[r]=Number(a))}return t}Um();gd();Xe();be();$s();var Ly=264*1024+256,CA=264*1024,We=()=>new Error("app cloud copy outcome unavailable; preserve storage and reopen"),OA=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),MN=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),jy=class{constructor(e,t,i,o,s){this.source=e;this.store=o;this.key=i;try{this.mode=s.mode,this.lifetime=s.signal,this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256});let r=e.displayName;if(this.displayName=r===void 0?void 0:ii(r),this.displayName!==void 0&&e.purpose!=="create"||r!==this.displayName)throw We();this.current=e.isCurrent,this.owned=e.installationOwned,this.io=Object.freeze({read:o.read,cas:o.compareAndSet});let a=[e.accountId,e.connectorId,e.deviceId,e.installationId,e.collection].map(U);if(a.some(c=>c.every(l=>l===0))||!["create","join"].includes(e.purpose)||!["fresh","existing"].includes(this.mode)||!/^[0-9a-f]{64}$/.test(e.assetSha256)||(this.keys=Object.freeze([t.signPublicKey,t.kemPublicKey,t.noisePublicKey].map(c=>{if(!(c instanceof Uint8Array)||c.length!==32||c.every(l=>l===0))throw We();return new Uint8Array(c)})),t.connectorId!==e.connectorId||t.deviceId!==e.deviceId||t.installationId!==e.installationId)||typeof globalThis.CryptoKey!="function"||!(i instanceof CryptoKey)||i.type!=="secret"||i.extractable||i.algorithm.name!=="AES-GCM"||i.algorithm.length!==256||i.usages.length!==2||!i.usages.includes("encrypt")||!i.usages.includes("decrypt"))throw We();this.aad=se(["mdbase/v1/app-cloud-copy-outcome-platform",...a,e.purpose,e.cpOrigin,e.logOrigin,e.assetSha256,...this.keys]),this.check(this.lifetime)}catch{throw We()}}source;store;closed=!1;key;fields;displayName;current;owned;io;keys;aad;mode;lifetime;check(e){try{if(this.closed||!this.key||e!==this.lifetime||e.aborted||this.source.displayName!==this.displayName||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||this.store.read!==this.io.read||this.store.compareAndSet!==this.io.cas||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw We()}catch{throw We()}}operation(e){if(e){if(e.displayName!==this.displayName)throw We();for(let t of Object.keys(this.fields))if(e[t]!==this.fields[t])throw We();for(let[t,i]of["signPublicKey","kemPublicKey","noisePublicKey"].entries())if(!(e[i]instanceof Uint8Array)||!OA(e[i],this.keys[t]))throw We()}return Object.freeze({...this.fields,...this.displayName===void 0?{}:{displayName:this.displayName},signPublicKey:new Uint8Array(this.keys[0]),kemPublicKey:new Uint8Array(this.keys[1]),noisePublicKey:new Uint8Array(this.keys[2])})}metadata(e){let t=this.operation(e.operation);if(!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||typeof e.expectedGenesis!="string"||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis))throw We();return Object.freeze({operation:t,genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis})}async hashChecked(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.genesisItem.length);o[0]=i.length,o.set(i,1),o.set(e.genesisItem,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));if(this.check(t),e.expectedGenesis!==`sha256:${MN(s)}`)throw We()}async read(e){let t=null;try{this.check(e);let i=await this.io.read.call(this.store,Object.freeze({signal:e}));if(this.check(e),i===null){if(this.mode!=="fresh")throw We();return null}if(!(i instanceof Uint8Array)||!i.length||i.length>Ly)throw We();let o=new Uint8Array(i),s=ce(o);if(!(s instanceof Map))throw We();let r=s;if(r.size!==3||r.get(0)!==1)throw We();let a=r.get(1),c=r.get(2);if(!(a instanceof Uint8Array)||a.length!==12||!(c instanceof Uint8Array)||c.length<16||c.length>CA+16||(t=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(c))),this.check(e),t.length>CA))throw We();let l=ce(t);if(!(l instanceof Map))throw We();let p=l,d=p.get(0)===1&&p.size===3;if(!d&&!(p.get(0)===2&&p.size===4)||(d?null:p.get(3))!==(this.displayName??null))throw We();let u=p.get(1);if(!Array.isArray(u)||u.length!==3||u.some((m,b)=>!(m instanceof Uint8Array)||!OA(m,this.keys[b])))throw We();let f=p.get(2),h=null;if(f!==null){if(!Array.isArray(f)||f.length!==2||!(f[0]instanceof Uint8Array)||typeof f[1]!="string")throw We();h=this.metadata({operation:this.operation(),genesisItem:f[0],expectedGenesis:f[1]}),await this.hashChecked(h,e)}return{encrypted:o,metadata:h}}catch{throw We()}finally{t?.fill(0)}}async write(e,t,i){let o=null,s=null;try{if(this.check(i),o=se(new Map([[0,2],[1,this.keys.map(l=>new Uint8Array(l))],[2,e===null?null:[e.genesisItem,e.expectedGenesis]],[3,this.displayName??null]])),o.length>CA)throw We();let r=crypto.getRandomValues(new Uint8Array(12)),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(o)));if(this.check(i),s=se(new Map([[0,1],[1,r],[2,a]])),s.length>Ly)throw We();let c=await this.io.cas.call(this.store,t,s,Object.freeze({signal:i}));if(this.check(i),c!==!0)throw We()}catch{throw We()}finally{o?.fill(0),s?.fill(0)}}async restore(e){let{signal:t}=e,i=await this.read(t);return this.check(t),i===null?Object.freeze({state:"none"}):i.metadata===null?Object.freeze({state:"pending",operation:this.operation()}):Object.freeze({state:"completed",metadata:this.metadata(i.metadata)})}async pending(e,t){let{signal:i}=t;this.check(i),this.operation(e);let o=await this.read(i);this.check(i),!o&&await this.write(null,null,i)}async completed(e,t){let{signal:i}=t;this.check(i);let o=this.metadata(e);await this.hashChecked(o,i);let s=await this.read(i);if(this.check(i),!s)throw We();if(s.metadata){if(!OA(s.metadata.genesisItem,o.genesisItem)||s.metadata.expectedGenesis!==o.expectedGenesis)throw We();return}await this.write(o,s.encrypted,i)}close(){this.closed=!0,this.key=null}};Bn();be();var Uy="public-outcome",RA="operation",hn=()=>new Error("app cloud copy outcome store unavailable; preserve storage and reopen"),qN=(n,e)=>n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i]);function EA(n){if(!(n instanceof Uint8Array)||!n.length||n.length>Ly)throw hn();return new Uint8Array(n)}var Ny=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;closed=!1;fields;current;owned;get fenced(){return this.closed||this.lifetime.aborted}check(e){try{if(this.fenced||e!==this.lifetime||e.aborted||xt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw hn()}catch{throw hn()}}static async open(e){let{source:t,origin:i,mode:o,signal:s}=e,r=null;try{r=new n(t,i,s);let a=[r.fields.accountId,r.fields.connectorId,r.fields.deviceId,r.fields.installationId,r.fields.collection].map(l=>{if(U(l).every(p=>p===0))throw hn();return l.toLowerCase()});if(!Et(i)||!["fresh","existing"].includes(o)||!["create","join"].includes(r.fields.purpose)||!/^[0-9a-f]{64}$/.test(r.fields.assetSha256)||!globalThis.indexedDB)throw hn();r.check(s),r.db=await r.openDatabase(`mdbase.app.cloud-copy-outcome.v1.${a.join(".")}.${r.fields.purpose}`,o),r.db.onversionchange=()=>r.close(),r.check(s);let c=await r.read(Object.freeze({signal:s}));try{if(o==="fresh"!=(c===null))throw hn();r.check(s)}finally{c?.fill(0)}return r}catch{throw r?.close(),hn()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,c=()=>{r=!0,o(hn())},l=()=>this.lifetime.removeEventListener("abort",c);this.lifetime.addEventListener("abort",c,{once:!0}),s.onblocked=c,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw hn();s.result.createObjectStore(Uy),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(hn())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Uy))throw hn();i(s.result)}catch{s.result.close(),o(hn())}}})}async read(e){let{signal:t}=e;this.check(t);let i=await this.transaction("readonly",t,null,null);return this.check(t),i}async compareAndSet(e,t,i){let{signal:o}=i;this.check(o);let s=e===null?null:EA(e),r=EA(t);try{let a=await this.transaction("readwrite",o,s,r);return this.check(o),a===!0}finally{s?.fill(0),r.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{if(this.check(t),!this.db)throw hn();let a=this.db.transaction(Uy,e,{durability:"strict"}),c=a.objectStore(Uy),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(hn())},a.oncomplete=()=>{u();try{if(this.check(t),p)throw hn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(hn())}};let f=c.get(RA);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:EA(f.result),e==="readonly"?(l=h,h=null):(l=qN(h,i),l===!0&&o!==null&&(i===null?c.add(new Uint8Array(o),RA):c.put(new Uint8Array(o),RA)))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db?.close(),this.db=null)}};bt();be();$s();var sa=class extends Error{constructor(t){super(`app private bootstrap: ${t}`);this.reason=t;this.name="AppPrivateBootstrapError"}reason},tt=n=>new sa(n),MA=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),qA=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);function TA(n,e){if(typeof n!="string"||!n.length||n.length>e*2||n.length%2||!/^[0-9a-f]+$/.test(n))throw tt("response");return Uint8Array.from(n.match(/../g).map(t=>parseInt(t,16)))}function LA(n){if(!n||typeof n!="object"||Array.isArray(n))throw tt("response");return n}var Dy=class{constructor(e,t,i,o={}){this.runtime=e;this.session=t;this.persistence=i;this.options=o;try{let s=o.displayName;if(this.displayName=s===void 0?void 0:ii(s),this.displayName!==void 0&&t.purpose!=="create")throw tt("binding");this.scope=Object.freeze({connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,collection:t.collection,purpose:t.purpose,accountId:t.accountId,cpOrigin:t.cpOrigin,logOrigin:t.logOrigin});for(let r of[this.scope.connectorId,this.scope.deviceId,this.scope.installationId,this.scope.collection,this.scope.accountId])if(U(r).every(a=>a===0))throw tt("binding");if(this.origin(this.scope.cpOrigin),this.origin(this.scope.logOrigin),!(t.rootPublicKey instanceof Uint8Array)||t.rootPublicKey.length!==32||t.rootPublicKey.every(r=>r===0)||(this.root=new Uint8Array(t.rootPublicKey),this.fetchImpl=o.fetch??globalThis.fetch,this.now=o.now??Date.now,this.marker=this.scope.purpose==="enrol"?e.privateEnrolMarker():null,!this.current()))throw tt("binding")}catch{throw e.retireLog(),tt("binding")}}runtime;session;persistence;options;attempted=!1;lifetime=new AbortController;scope;root;marker;fetchImpl;now;displayName;origin(e){let t=new URL(e);if(t.username||t.password||t.pathname!=="/"||t.search||t.hash||t.protocol!=="https:"&&!(this.options.allowLoopbackHttp===!0&&Ye(e)))throw tt("binding");return t.origin}current(){try{return!this.lifetime.signal.aborted&&this.runtime.privateCollectionCurrent(this.session)&&this.session.isCurrent()===!0&&this.session.approvalMode==="password-ak1"&&qA(this.session.rootPublicKey,this.root)&&Object.entries(this.scope).every(([e,t])=>this.session[e]===t)}catch{return!1}}markerCopy(){let e=this.marker;if(!e)throw tt("binding");return Object.freeze({...e,sasCommitment:new Uint8Array(e.sasCommitment),signPublicKey:new Uint8Array(e.signPublicKey),kemPublicKey:new Uint8Array(e.kemPublicKey),noisePublicKey:new Uint8Array(e.noisePublicKey)})}check(e){if(!this.current()||e.aborted)throw this.close(),tt("fenced")}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let c=new Uint8Array(1024*1024),l=0,p=null,d=null;try{let u=this.fetchImpl;if(d=await u(`${this.origin(this.scope.cpOrigin)}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted||!d.ok)throw tt("unavailable");let f=d.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>c.length)throw s.abort(),tt("response");if(!d.body)throw tt("response");for(p=d.body.getReader();;){let{done:h,value:m}=await p.read();try{if(this.check(o),s.signal.aborted)throw tt("unavailable");if(h)break;if(l+m.length>c.length)throw s.abort(),tt("response");c.set(m,l),l+=m.length}finally{m?.fill(0)}}return LA(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c.subarray(0,l))))}catch(u){throw this.check(o),u instanceof sa?u:tt("unavailable")}finally{c.fill(0),(p?.cancel()??d?.body?.cancel())?.catch(()=>{}),p?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}copy(e){if(e.displayName!==this.displayName||e.collection!==this.scope.collection||e.deviceId!==this.scope.deviceId||e.logOrigin!==this.scope.logOrigin||!qA(e.rootPublicKey,this.root)||!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||e.expectedGenesis.length!==71||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis)||e.approval!==(this.scope.purpose==="create"?"creator":"pending"))throw tt("response");return Object.freeze({collection:e.collection,deviceId:e.deviceId,logOrigin:e.logOrigin,expectedGenesis:e.expectedGenesis,approval:e.approval,...this.displayName===void 0?{}:{displayName:this.displayName},rootPublicKey:new Uint8Array(e.rootPublicKey),genesisItem:new Uint8Array(e.genesisItem)})}async bootstrap(e){let t=null,i=null;try{if(this.check(e.signal),this.attempted)throw tt("fenced");this.attempted=!0;let o=await this.persistence.restoredCompletion(e);if(this.check(e.signal),o){let b=this.copy(o);return this.marker&&!this.marker.acknowledged&&(await this.persistence.privateEnrolAcknowledged(this.markerCopy(),e),this.check(e.signal)),b}if(this.marker?.acknowledged)throw tt("response");this.marker?await this.persistence.privateEnrolPending(this.markerCopy(),e):await this.persistence.pendingCreate({...this.runtime.registeredDeviceReceipt(),collection:this.scope.collection,...this.displayName===void 0?{}:{displayName:this.displayName}},e),this.check(e.signal);let s=await this.session.connectorBearer(e);if(this.check(e.signal),typeof s!="string"||!s||s.length>16384||/[^\x21-\x7e]/.test(s))throw tt("binding");let r=await this.json("/v1/next/devices/challenge",s,void 0,e.signal);if(this.check(e.signal),t=TA(r.challenge,32),t.length!==32||typeof r.expires_at!="number"||!Number.isSafeInteger(r.expires_at)||r.expires_at-this.now()<=5e3||r.expires_at-this.now()>16*6e4)throw tt("response");let a=this.scope.purpose==="enrol";i=a?this.runtime.signPrivateDeviceEnrol(t).signature:this.runtime.signPrivateCreate(t),this.check(e.signal);let c=await this.json(a?`/v1/next/collections/${this.scope.collection}/private/devices`:"/v1/next/collections/private",s,JSON.stringify({device_id:this.scope.deviceId,capabilities:["collection_mode_switch_v1"],challenge:r.challenge,sig:MA(i),...a?{sas_commit:MA(this.marker.sasCommitment)}:{collection_id:this.scope.collection,...this.displayName===void 0?{}:{display_name:this.displayName}}}),e.signal);if(this.check(e.signal),c.collection_id!==this.scope.collection||this.origin(c.log_url)!==this.origin(this.scope.logOrigin))throw tt("response");if(a){if(c.approval!=="pending"||typeof c.enrolled_at!="number"||!Number.isSafeInteger(c.enrolled_at)||c.enrolled_at<1)throw tt("response")}else if(c.state!=="private"||c.owner_account!==this.scope.accountId||!qA(TA(c.root_public_key,32),this.root))throw tt("response");let l=LA(c.device);if(l.device_id!==this.scope.deviceId||typeof l.token!="string"||!l.token.length||l.token.length>16384||/[^\x21-\x7e]/.test(l.token)||typeof l.expires_at!="number"||!Number.isSafeInteger(l.expires_at)||l.expires_at-this.now()<=5e3||l.expires_at-this.now()>16*6e4)throw tt("response");let p=LA(c.genesis);if(p.seq!==1)throw tt("response");let d=TA(p.item,256*1024),u=new TextEncoder().encode("mdbase/v1/chain"),f=new Uint8Array(1+u.length+d.length);f[0]=u.length,f.set(u,1),f.set(d,1+u.length);let h=new Uint8Array(await crypto.subtle.digest("SHA-256",f));this.check(e.signal);let m=this.copy({collection:this.scope.collection,deviceId:this.scope.deviceId,logOrigin:this.scope.logOrigin,rootPublicKey:this.root,genesisItem:d,expectedGenesis:`sha256:${MA(h)}`,approval:a?"pending":"creator",...this.displayName===void 0?{}:{displayName:this.displayName}});return await this.persistence.completed(this.copy(m),e),this.check(e.signal),this.marker&&(await this.persistence.privateEnrolAcknowledged(this.markerCopy(),e),this.check(e.signal)),m}catch(o){throw this.close(),o instanceof sa?o:tt("unavailable")}finally{t?.fill(0),i?.fill(0)}}close(){this.lifetime.abort(),this.runtime.retireLog()}};bt();Xe();be();$s();var $y=264*1024,jA=$y+256,Ce=()=>new Error("app private bootstrap custody unavailable; preserve storage and reopen"),aa=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),TN=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),zy=class{constructor(e,t,i,o,s,r={}){this.source=e;this.key=i;this.store=o;this.noise=s;try{let a=r.displayName;if(this.displayName=a===void 0?void 0:ii(a),this.displayName!==void 0&&e.purpose!=="create")throw Ce();this.pins=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin});let c=[this.pins.accountId,this.pins.connectorId,this.pins.deviceId,this.pins.installationId,this.pins.collection].map(U);if(c.some(l=>l.every(p=>p===0))||!["create","enrol"].includes(this.pins.purpose))throw Ce();for(let l of[e.cpOrigin,e.logOrigin]){let p=new URL(l);if(!(r.allowLoopbackHttp===!0&&Ye(l))&&p.protocol!=="https:"||p.origin!==l||p.username||p.password)throw Ce()}if(!(e.rootPublicKey instanceof Uint8Array)||e.rootPublicKey.length!==32||e.rootPublicKey.every(l=>l===0)||(this.root=new Uint8Array(e.rootPublicKey),this.keys=[t.signPublicKey,t.kemPublicKey,t.noisePublicKey].map(l=>{if(!(l instanceof Uint8Array)||l.length!==32||l.every(p=>p===0))throw Ce();return new Uint8Array(l)}),this.checkReceipt(t),i.type!=="secret"||i.extractable||i.algorithm.name!=="AES-GCM"||i.algorithm.length!==256||!i.usages.includes("encrypt")||!i.usages.includes("decrypt")))throw Ce();this.aad=se(["mdbase/v1/app-private-bootstrap-platform",...c,this.pins.purpose,e.cpOrigin,e.logOrigin,this.root]),this.check(new AbortController().signal)}catch{throw Ce()}}source;key;store;noise;pins;root;keys;aad;displayName;check(e){try{if(e.aborted||this.source.isCurrent()!==!0||this.source.approvalMode!=="password-ak1"||!aa(this.source.rootPublicKey,this.root)||Object.entries(this.pins).some(([t,i])=>this.source[t]!==i))throw Ce()}catch{throw Ce()}}checkReceipt(e){if(e.connectorId!==this.pins.connectorId||e.deviceId!==this.pins.deviceId||e.installationId!==this.pins.installationId||[e.signPublicKey,e.kemPublicKey,e.noisePublicKey].some((i,o)=>!(i instanceof Uint8Array)||i.length!==32||i.every(s=>s===0)||!aa(i,this.keys[o])))throw Ce()}commit(e){if(this.checkReceipt(e),this.pins.purpose!=="enrol"||e.collection!==this.pins.collection||typeof e.acknowledged!="boolean"||!(e.sasCommitment instanceof Uint8Array)||e.sasCommitment.length!==32||e.sasCommitment.every(t=>t===0))throw Ce();return new Uint8Array(e.sasCommitment)}markerCopy(e,t){return Object.freeze({connectorId:this.pins.connectorId,deviceId:this.pins.deviceId,installationId:this.pins.installationId,collection:this.pins.collection,signPublicKey:new Uint8Array(this.keys[0]),kemPublicKey:new Uint8Array(this.keys[1]),noisePublicKey:new Uint8Array(this.keys[2]),sasCommitment:new Uint8Array(t),acknowledged:e.acknowledged})}copy(e){if(e.displayName!==this.displayName||e.collection!==this.pins.collection||e.deviceId!==this.pins.deviceId||e.logOrigin!==this.pins.logOrigin||!(e.rootPublicKey instanceof Uint8Array)||!aa(e.rootPublicKey,this.root)||!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis)||e.approval!==(this.pins.purpose==="create"?"creator":"pending"))throw Ce();return Object.freeze({collection:this.pins.collection,deviceId:this.pins.deviceId,logOrigin:this.pins.logOrigin,rootPublicKey:new Uint8Array(this.root),genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis,approval:e.approval,...this.displayName===void 0?{}:{displayName:this.displayName}})}async hashChecked(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.genesisItem.length);o[0]=i.length,o.set(i,1),o.set(e.genesisItem,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));if(this.check(t),e.expectedGenesis!==`sha256:${TN(s)}`)throw Ce()}async read(e){let t=null;try{this.check(e.signal);let i=await this.store.read(e);if(this.check(e.signal),i===null)return null;if(!(i instanceof Uint8Array)||!i.length||i.length>jA)throw Ce();let o=new Uint8Array(i),s=ce(o);if(!(s instanceof Map))throw Ce();let r=s;if(r.size!==3||r.get(0)!==1)throw Ce();let a=r.get(1),c=r.get(2);if(!(a instanceof Uint8Array)||a.length!==12||!(c instanceof Uint8Array)||c.length<16||c.length>$y+16||(t=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(c))),this.check(e.signal),t.length>$y))throw Ce();let l=ce(t);if(!(l instanceof Map))throw Ce();let p=l,d=p.get(0)===1&&p.size===4;if(!d&&!(p.get(0)===2&&p.size===5)||(d?null:p.get(4))!==(this.displayName??null))throw Ce();let u=p.get(1);if(!Array.isArray(u)||u.length!==3||u.some((b,w)=>!(b instanceof Uint8Array)||!aa(b,this.keys[w])))throw Ce();let f=p.get(2);if(this.pins.purpose==="create"?f!==null:!(f instanceof Uint8Array)||f.length!==32||f.every(b=>b===0))throw Ce();let h=p.get(3),m=null;if(h!==null){if(!Array.isArray(h)||h.length!==2||!(h[0]instanceof Uint8Array)||typeof h[1]!="string")throw Ce();m=this.copy({...this.pins,rootPublicKey:this.root,genesisItem:h[0],expectedGenesis:h[1],approval:this.pins.purpose==="create"?"creator":"pending",...this.displayName===void 0?{}:{displayName:this.displayName}}),await this.hashChecked(m,e.signal)}return{encrypted:o,value:{commit:f===null?null:new Uint8Array(f),metadata:m}}}catch{throw Ce()}finally{t?.fill(0)}}async write(e,t,i){let o=null,s=null;try{if(this.check(i.signal),o=se(new Map([[0,2],[1,this.keys.map(l=>new Uint8Array(l))],[2,e.commit],[3,e.metadata===null?null:[e.metadata.genesisItem,e.metadata.expectedGenesis]],[4,this.displayName??null]])),o.length>$y)throw Ce();let r=crypto.getRandomValues(new Uint8Array(12)),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(o)));this.check(i.signal),s=se(new Map([[0,1],[1,r],[2,a]]));let c=await this.store.compareAndSet(t,s,i);if(this.check(i.signal),c!==!0)throw Ce()}catch{throw Ce()}finally{o?.fill(0),s?.fill(0)}}async pendingCreate(e,t){if(this.check(t.signal),this.checkReceipt(e),this.pins.purpose!=="create"||e.collection!==this.pins.collection||e.displayName!==this.displayName)throw Ce();let i=await this.read(t);this.check(t.signal),!i&&await this.write({commit:null,metadata:null},null,t)}async privateEnrolPending(e,t){this.check(t.signal);let i=this.commit(e),o=this.markerCopy(e,i);if(o.acknowledged)throw Ce();let s=await this.read(t);if(this.check(t.signal),s&&!aa(s.value.commit,i))throw Ce();try{await this.noise.privateEnrolPending(o,t),this.check(t.signal)}catch{throw Ce()}s||await this.write({commit:i,metadata:null},null,t)}async completed(e,t){this.check(t.signal);let i=this.copy(e);await this.hashChecked(i,t.signal);let o=await this.read(t);if(this.check(t.signal),!o)throw Ce();if(o.value.metadata){if(!aa(o.value.metadata.genesisItem,i.genesisItem)||o.value.metadata.expectedGenesis!==i.expectedGenesis)throw Ce();return}await this.write({...o.value,metadata:i},o.encrypted,t)}async privateEnrolAcknowledged(e,t){this.check(t.signal);let i=this.commit(e),o=this.markerCopy(e,i),s=await this.read(t);if(this.check(t.signal),!s?.value.metadata||!aa(s.value.commit,i))throw Ce();try{await this.noise.privateEnrolAcknowledged(o,t),this.check(t.signal)}catch{throw Ce()}}async restoredCompletion(e){let t=await this.read(e);return this.check(e.signal),t?.value.metadata?this.copy(t.value.metadata):null}};Bn();be();var By="public-outcome",h2="operation",mn=()=>new Error("app private bootstrap store unavailable"),UA=(n,e)=>n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i]);function NA(n){if(!(n instanceof Uint8Array)||!n.length||n.length>jA)throw mn();return new Uint8Array(n)}var Fy=class n{constructor(e,t,i,o,s){this.db=e;this.source=t;this.pins=i;this.root=o;this.origin=s;e.onversionchange=()=>this.close()}db;source;pins;root;origin;closed=!1;static async open(e){try{return await this.openChecked(e)}catch{throw mn()}}static async openChecked(e){let{source:t,signal:i}=e,o=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,collection:t.collection,purpose:t.purpose,cpOrigin:t.cpOrigin,logOrigin:t.logOrigin}),s=[o.accountId,o.connectorId,o.deviceId,o.installationId,o.collection];for(let d of s)if(U(d).every(u=>u===0))throw mn();if(!(t.rootPublicKey instanceof Uint8Array)||t.rootPublicKey.length!==32||t.rootPublicKey.every(d=>d===0))throw mn();let r=new Uint8Array(t.rootPublicKey);if(!Et(e.origin)||xt()!==e.origin||!["fresh","existing"].includes(e.mode)||!["create","enrol"].includes(o.purpose)||!globalThis.indexedDB)throw mn();let a=()=>{try{return!i.aborted&&t.isCurrent()===!0&&t.approvalMode==="password-ak1"&&t.rootPublicKey instanceof Uint8Array&&UA(t.rootPublicKey,r)&&Object.entries(o).every(([d,u])=>t[d]===u)}catch{return!1}};if(!a())throw mn();let c=`mdbase.app.private-bootstrap.v1.${s.map(d=>d.toLowerCase()).join(".")}.${o.purpose}`,l=await new Promise((d,u)=>{let f=indexedDB.open(c,1),h=!1,m=()=>{h=!0,u(mn())},b=()=>i.removeEventListener("abort",m);i.addEventListener("abort",m,{once:!0}),f.onblocked=m,f.onupgradeneeded=()=>{if(h||!a()||e.mode!=="fresh"||f.result.objectStoreNames.length!==0){f.transaction?.abort();return}f.result.createObjectStore(By)},f.onerror=()=>{b(),u(mn())},f.onsuccess=()=>{if(b(),h||!a()||f.result.objectStoreNames.length!==1||!f.result.objectStoreNames.contains(By)){f.result.close(),u(mn());return}d(f.result)}}),p=new n(l,t,o,r,e.origin);try{let d=await p.read({signal:i});if(e.mode==="fresh"!=(d===null))throw mn();return d?.fill(0),p.check(i),p}catch{throw p.close(),mn()}}check(e){try{if(this.closed||e.aborted||xt()!==this.origin||this.source.isCurrent()!==!0||this.source.approvalMode!=="password-ak1"||!(this.source.rootPublicKey instanceof Uint8Array)||!UA(this.source.rootPublicKey,this.root)||Object.entries(this.pins).some(([t,i])=>this.source[t]!==i))throw mn()}catch{throw mn()}}async read(e){this.check(e.signal);let t=await this.transaction("readonly",e.signal,null,null);return this.check(e.signal),t}async compareAndSet(e,t,i){this.check(i.signal);let o=null,s=null;try{o=e===null?null:NA(e),s=NA(t);let r=await this.transaction("readwrite",i.signal,o,s);return this.check(i.signal),r===!0}finally{o?.fill(0),s?.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(t);let a=this.db.transaction(By,e,{durability:"strict"}),c=a.objectStore(By),l=null,p=!1,d=()=>{p=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(mn())},a.oncomplete=()=>{u();try{if(this.check(t),p)throw mn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(mn())}};let f=c.get(h2);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:NA(f.result),e==="readonly"?(l=h,h=null):(l=UA(h,i),l===!0&&o!==null&&c.put(new Uint8Array(o),h2))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};$d();Dm();var ss=class extends Error{constructor(t){super(`app cloud copy host: ${t}`);this.reason=t;this.name="AppCloudCopyHostError"}reason},LN=32,jN=8,ue=n=>new ss(n),m2=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),wc=class n{constructor(e,t,i,o,s){this.source=e;this.installation=t;this.originalRelease=i;this.origin=o;this.lifetime=s;this.selected=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,kind:e.kind,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,approvalMode:e.approvalMode}),this.currentCallback=e.isCurrent,this.bearerCallback=e.connectorBearer,this.ownershipCallback=t.isCurrent;for(let r of[e.accountId,e.connectorId,e.deviceId,e.installationId])if(U(r).every(a=>a===0))throw ue("binding");if(e.kind!=="app-runtime"&&e.kind!=="mobile"||i.schema!=="mdbn-app-trust/release/1"||i.cpOrigin!==e.cpOrigin||i.logOrigin!==e.logOrigin||!/^[0-9a-f]{64}$/.test(i.assetSha256)||!i.trustedRoots.length||i.trustedRoots.length>64||!i.policyPins.length||i.policyPins.length>65536)throw ue("binding");if(this.trust=Object.freeze({...i,source:Object.freeze({...i.source}),trustedRoots:Object.freeze(i.trustedRoots.map(r=>{if(!(r instanceof Uint8Array)||r.length!==32||r.every(a=>a===0))throw ue("binding");return new Uint8Array(r)})),policyPins:new Uint8Array(i.policyPins)}),this.pin=Object.freeze({...this.selected,isCurrent:()=>this.current(),installationOwned:()=>this.current(),connectorBearer:async({signal:r})=>{this.check(r);let a=await this.bearerCallback.call(this.source,Object.freeze({signal:r}));return this.check(r),a}}),e.approvalMode==="strict")throw new Mt;this.check(s)}source;installation;originalRelease;origin;lifetime;closing=!1;closeResult=null;provider=null;keys=null;noiseStore=null;key=null;noise=null;native=null;publicReceipt=null;signIn=null;originalCustody=null;collectionAttempted=!1;collectionSignal=null;collectionCurrent=null;outcomeStore=null;outcome=null;bootstrap=null;bootstrapConfirmed=!1;collectionScope=null;collectionSession=null;restoredPrivateMarker=null;privateStore=null;privateBootstrap=null;privateMetadata=null;accountKeyPin=null;accountKeyWork=!1;accountKeySealed=new Ql;adoptedEndpoint=null;sqlAttempted=!1;sqlClose=null;collectionSql=null;logRequest=null;logLoopback=!1;logWork=null;authority=null;peopleMetadata=null;pump=null;timerPorts=new Set;readWork=null;readAbort=null;readClient=null;readVerified=!1;facades=new Map;logWorkListener=null;selected;currentCallback;bearerCallback;ownershipCallback;trust;pin;current(){try{let e=this.originalRelease,t=this.trust;return!this.closing&&!this.lifetime.aborted&&xt()===this.origin&&this.source.isCurrent===this.currentCallback&&this.source.connectorBearer===this.bearerCallback&&this.installation.isCurrent===this.ownershipCallback&&this.currentCallback.call(this.source)===!0&&this.ownershipCallback.call(this.installation)===!0&&this.installation.scope.account===this.selected.accountId&&this.installation.scope.installation===this.selected.installationId&&Object.entries(this.selected).every(([i,o])=>this.source[i]===o)&&e.schema===t.schema&&e.environment===t.environment&&e.cpOrigin===t.cpOrigin&&e.logOrigin===t.logOrigin&&e.assetSha256===t.assetSha256&&e.source.repository===t.source.repository&&e.source.commit===t.source.commit&&e.source.version===t.source.version&&e.trustedRoots.length===t.trustedRoots.length&&e.trustedRoots.every((i,o)=>m2(i,t.trustedRoots[o]))&&m2(e.policyPins,t.policyPins)}catch{return!1}}check(e){if(e.aborted||!this.current())throw ue("fenced")}operationSignal(e){let t=AbortSignal.any([this.lifetime,...this.collectionSignal?[this.collectionSignal]:[],e]);return this.check(t),t}static async openOriginalDevice(e){let{session:t,installation:i,release:o,origin:s,mode:r,signal:a,loadRuntime:c,fetch:l,allowLoopbackHttp:p}=e,d=null;try{if(!["fresh","existing"].includes(r))throw ue("binding");d=new n(t,i,o,s,a);let{custody:u,restored:f}=await d.openOwnedDevice({mode:r,signal:a,loadRuntime:c,requireReceipt:!0});if(r==="existing")d.native.acknowledgeDeviceRegistration(f.receipt),d.check(a),d.publicReceipt=d.native.registeredDeviceReceipt();else{let h=await new dc(d.native,d.pin,u,d.noise,{fetch:l,allowLoopbackHttp:p}).register(Object.freeze({signal:a}));d.check(a),d.publicReceipt=h}return d}catch(u){throw await d?.close(),u instanceof ss||u instanceof Mt?u:ue("unavailable")}}static async openInstallationDevice(e){let{signIn:t,installation:i,release:o,origin:s,signal:r,loadRuntime:a,allowLoopbackHttp:c}=e,l=null;try{let p=t.confirmedHostSession(o.logOrigin,o.environment);l=new n(p,i,o,s,r),l.signIn=t;let d=await t.prepareOriginalDevice(i);l.check(r);let{custody:u,restored:f}=await l.openOwnedDevice({mode:d.mode,signal:r,loadRuntime:a,requireReceipt:!1});if(l.originalCustody=u,f?.receipt&&t.view().state!=="paired")throw ue("recovery_required");return await l.noise.pending(new Uint8Array(u.envelope),{signal:r}),l.check(r),t.view().state==="paired"&&await l.completeInstallationSignIn(),l}catch(p){throw await l?.close(),p}}async attestInstallation(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw ue("binding");let e=await this.signIn.attest({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation});return this.check(this.lifetime),e}async completeInstallationSignIn(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw ue("binding");return await this.signIn.acknowledge({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation}),this.check(this.lifetime),this.publicReceipt=this.native.registeredDeviceReceipt(),this.registeredReceipt()}async openOwnedDevice(e){let{mode:t,signal:i,loadRuntime:o,requireReceipt:s}=e;this.check(i),this.provider=await fc.open({source:this.pin,origin:this.origin,mode:t,signal:i}),this.check(i),this.key=this.provider.deviceCustodyKek({signal:i}),this.check(i),this.keys=await hc.open({source:this.pin,origin:this.origin,mode:t,signal:i}),this.check(i),this.noiseStore=await yc.open({source:this.pin,origin:this.origin,mode:t,signal:i}),this.check(i),this.noise=new mc(this.pin,this.key,this.noiseStore);let r=await this.noise.restore({signal:i});if(this.check(i),t==="existing"?!r||s&&!r.receipt:r!==null)throw ue("recovery_required");this.restoredPrivateMarker=r?.privateEnrolMarker??null;let a=await o(Object.freeze({signal:i}));if(this.check(i),!(a instanceof Uint8Array)||!a.length)throw ue("binding");this.native=await Fl.createDevice(new Uint8Array(a)),this.check(i);let c=await new uc(this.pin,this.key,this.keys).openNativeDevice(this.native,{signal:i,mode:t,noise:t==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:r.envelope}});return this.check(i),{custody:c,restored:r}}async bootstrapCloudCopy(e){let{scope:t,collectionCurrent:i,purpose:o,outcomeMode:s,signal:r,reconcile:a,fetch:c,allowLoopbackHttp:l}=e,p=this.operationSignal(r),d=e.displayName,u=d===void 0?void 0:ii(d);if(u!==void 0&&o!=="create"||(this.check(p),this.collectionAttempted||!this.native||!this.key||!this.publicReceipt||t.account!==this.selected.accountId||t.installation!==this.selected.installationId||!["create","join"].includes(o)||!["fresh","existing"].includes(s)||U(t.collection).every(b=>b===0)))throw ue("binding");let f=Object.freeze({account:t.account,installation:t.installation,collection:t.collection}),h=()=>{try{return this.current()&&!p.aborted&&e.scope===t&&e.collectionCurrent===i&&Object.entries(f).every(([b,w])=>t[b]===w)&&i.call(e)===!0&&this.outcomeStore?.fenced!==!0}catch{return!1}};if(!h())throw ue("fenced");this.collectionAttempted=!0,this.collectionSignal=p,this.collectionCurrent=h,this.collectionScope=f;let m=Object.freeze({...this.pin,collection:f.collection,purpose:o,assetSha256:this.trust.assetSha256,...u===void 0?{}:{displayName:u},isCurrent:h});this.collectionSession=m;try{this.outcomeStore=await Ny.open({source:m,origin:this.origin,mode:s,signal:p}),this.checkCollection(p),this.outcome=new jy(m,this.publicReceipt,this.key,this.outcomeStore,{mode:s,signal:p}),this.native.prepareCloudCopyCollection(m),this.checkCollection(p),this.bootstrap=new jl(this.native,m,this.trust,this.outcome,{fetch:c,allowLoopbackHttp:l,...u===void 0?{}:{displayName:u}});let b=await this.bootstrap.bootstrap(Object.freeze({signal:p,...a?{reconcile:a}:{}}));return this.checkCollection(p),this.bootstrapConfirmed=!0,b}catch(b){throw await this.close(),b}}async bootstrapPrivateDevice(e){let{scope:t,collectionCurrent:i,signal:o,fetch:s,allowLoopbackHttp:r}=e,a=this.operationSignal(o);if(this.check(a),this.collectionAttempted||!this.native||!this.key||!this.noise||!this.publicReceipt||t.account!==this.selected.accountId||t.installation!==this.selected.installationId||U(t.collection).every(u=>u===0))throw ue("binding");let c=this.restoredPrivateMarker;if(c&&c.collection!==t.collection)throw ue("private_device_limit");let l=Object.freeze({account:t.account,installation:t.installation,collection:t.collection}),p=()=>{try{return this.current()&&!a.aborted&&e.scope===t&&e.collectionCurrent===i&&Object.entries(l).every(([u,f])=>t[u]===f)&&i.call(e)===!0}catch{return!1}};if(!p())throw ue("fenced");this.collectionAttempted=!0,this.collectionSignal=a,this.collectionCurrent=p,this.collectionScope=l;let d=Object.freeze({...this.pin,collection:l.collection,purpose:"enrol",rootPublicKey:new Uint8Array(this.trust.trustedRoots[0]),isCurrent:p});this.collectionSession=d;try{this.privateStore=await Fy.open({source:d,origin:this.origin,mode:c?"existing":"fresh",signal:a}),this.checkCollection(a);let u=new zy(d,this.publicReceipt,this.key,this.privateStore,this.noise,{allowLoopbackHttp:r});this.native.preparePrivateCollection(d,c?{mode:"existing",marker:c}:{mode:"fresh"}),this.checkCollection(a),this.privateBootstrap=new Dy(this.native,d,u,{fetch:s,allowLoopbackHttp:r}),this.privateMetadata=await this.privateBootstrap.bootstrap(Object.freeze({signal:a})),this.checkCollection(a),this.bootstrapConfirmed=!0}catch(u){throw await this.close(),u}}adoptPrivateDevice(e,t){let i=this.operationSignal(e.signal);this.checkCollection(i);let o=this.privateMetadata,s=this.publicReceipt;if(!this.native||!this.privateBootstrap||!o||!s||!this.bootstrapConfirmed||this.adoptedEndpoint!==null)throw ue("fenced");let r=o.collection;this.native.adoptDevice({replicaId:e.replicaId,endpoint:e.endpoint,opened:e.opened,sqliteVersion:e.sqliteVersion,collection:r,deviceId:o.deviceId,state:"e2e",cloudCopyOptIn:!1,trustedRoots:this.trust.trustedRoots.map(a=>new Uint8Array(a)),policyPins:new Uint8Array(this.trust.policyPins),trustedSigners:[],expectedGenesis:o.expectedGenesis},t),this.checkCollection(i),this.adoptedEndpoint=e.endpoint,this.accountKeyPin=Object.freeze({connectorId:s.connectorId,deviceId:s.deviceId,installationId:s.installationId,collection:r,approvalMode:"password-ak1",isCurrent:()=>this.collectionCurrent?.()===!0})}checkCollection(e){if(this.check(e),this.collectionCurrent?.()!==!0)throw ue("fenced")}adoptCloudCopy(e,t){let i=this.operationSignal(e.signal);if(this.checkCollection(i),!this.bootstrap||!this.bootstrapConfirmed||this.adoptedEndpoint!==null)throw ue("fenced");let o=e.endpoint;this.bootstrap.adoptCollection({...e,signal:this.collectionSignal},t),this.checkCollection(i),this.adoptedEndpoint=o}async openCollectionSql(e){let{replicaId:t,endpoint:i,openSql:o}=e,s=this.operationSignal(e.signal);if(this.checkCollection(s),!this.bootstrapConfirmed||!this.collectionScope||this.sqlAttempted||this.adoptedEndpoint!==null||U(t).every(r=>r===0)||typeof i!="bigint"&&!Number.isSafeInteger(i)||BigInt(i)<0n||BigInt(i)>(1n<<64n)-1n)throw ue("binding");this.sqlAttempted=!0;try{let r=await o.call(e,Object.freeze({scope:this.collectionScope,signal:s})),a=r.close;if(this.sqlClose=async()=>{await a.call(r)},this.collectionSql=r.sql,this.checkCollection(s),e.openSql!==o)throw ue("fenced");this.privateBootstrap?this.adoptPrivateDevice({signal:s,replicaId:t,endpoint:i,opened:r.opened,sqliteVersion:r.sqliteVersion},r.sql):this.adoptCloudCopy({signal:s,replicaId:t,endpoint:i,opened:r.opened,sqliteVersion:r.sqliteVersion,cloudCopyOptIn:!0},r.sql)}catch(r){throw await this.close(),r}}async startCollectionLog(e){let{fetch:t,allowLoopbackHttp:i}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionSession||this.adoptedEndpoint===null)throw ue("binding");let s=t??globalThis.fetch,r=i===!0;if(this.authority&&(s!==this.logRequest||r!==this.logLoopback))throw ue("fenced");if(this.pump)return;if(this.logWork){await this.logWork,this.checkCollection(o);return}this.authority||(this.logRequest=s,this.logLoopback=r,this.authority=new Ll(this.native,Object.freeze({...this.collectionSession,endpoint:this.adoptedEndpoint,directOrigins:Object.freeze([])}),{fetch:s,allowLoopbackHttp:i,tokenCache:d2()}));let a=this.authority,c=(async()=>{await a.accessToken(Object.freeze({signal:o})),this.checkCollection(o),this.pump=this.native.bindLogTransport(a.logTransport())})();this.logWork=c;try{await c}finally{this.logWork===c&&(this.logWork=null)}}peopleAuthority(){if(this.checkCollection(this.lifetime),!this.collectionSession||this.adoptedEndpoint===null||!this.logRequest||this.accountKeyPin)throw ue("binding");if(!this.peopleMetadata){let e=this.adoptedEndpoint,t=this.collectionSession,i=new gc(Object.freeze({...t,endpoint:e,directOrigins:Object.freeze([]),isCurrent:()=>this.collectionCurrent?.()===!0&&this.adoptedEndpoint===e,connectorBearer:async({signal:s})=>{s.throwIfAborted(),this.checkCollection(this.lifetime);let r=await t.connectorBearer({signal:this.lifetime});return this.checkCollection(this.lifetime),s.throwIfAborted(),r}}),{fetch:this.logRequest,allowLoopbackHttp:this.logLoopback}),o=Object.freeze({collection:i.collection,isCurrent:()=>i.isCurrent(),request:(s,r)=>i.request(s,r)});this.peopleMetadata={authority:i,view:o}}return this.peopleMetadata.view}openTimersPort(e){if(this.checkCollection(this.lifetime),!this.readVerified||!this.logRequest||!this.collectionScope||e.signal.aborted)throw ue("binding");let{scope:t,generation:i,signal:o}=e,s=this.collectionScope;if(t.account!==s.account||t.installation!==s.installation||t.collection!==s.collection||U(i).every(h=>h===0))throw ue("binding");let r=this.source.timerConsent,a=r?.call(this.source);if(!a?.approved)return null;let c=a.grants.find(h=>h.collectionId===t.collection);if(!c)return null;let l=globalThis.WorkerGlobalScope;if(typeof l!="function"||!(globalThis instanceof l)||U(c.grantId).every(h=>h===0)||!/^[0-9a-f]{64}$/.test(c.declarationDigest))throw ue("binding");let p=JSON.stringify(a),d=new MessageChannel,u=()=>{try{return!o.aborted&&e.signal===o&&e.scope===t&&e.generation===i&&this.collectionCurrent?.()===!0&&this.current()&&t.account===s.account&&t.installation===s.installation&&t.collection===s.collection&&this.source.timerConsent===r&&JSON.stringify(r?.call(this.source))===p}catch{return!1}},f=$O(d.port1,{scope:s,generation:i,grantId:c.grantId,cpOrigin:new URL(this.selected.cpOrigin).origin,signal:o,isCurrent:u,fetch:this.logRequest,...this.signIn?{journal:{read:()=>this.signIn.originalTimerChannel(c.grantId),write:h=>this.signIn.retainTimerChannel(c.grantId,h)}}:{},bearer:async()=>{if(!u())throw ue("fenced");let h=await this.bearerCallback.call(this.source,{signal:this.lifetime});if(!u())throw ue("fenced");return h}});return this.timerPorts.add(f),Object.freeze({port:d.port2,close:async()=>{await f.close(),d.port2.close(),this.timerPorts.delete(f)}})}serverProblem(){return this.pump?.serverProblem??null}transportHealth(){return this.pump?.transportHealth??null}initialSync(){try{return this.native?Hd(this.native.observations().status):"unavailable"}catch{return"unavailable"}}keyWaitDetail(){try{return this.native?IA(this.native.observations().status):null}catch{return null}}pendingWrites(){try{return this.native?.observations().status.pending??0}catch{return 0}}pushLog(e){try{return this.native?.pushLog(e)===!0}catch{return!1}}openLogPush(e){this.checkCollection(this.lifetime);let t=this.native,i=this.authority,o=this.collectionSession,s=this.logRequest;if(!t||!this.pump||!i||!o||!s)throw ue("binding");if(!t.supportsLogPush||typeof WebSocket!="function")return null;let r=this.logLoopback,a=i.origin,c=()=>{try{return this.collectionCurrent?.()===!0&&this.current()&&this.authority===i&&i.isCurrent()}catch{return!1}};return new Ty({origin:a,collection:i.collection,deviceId:o.deviceId,isCurrent:c,accessToken:l=>i.accessToken(l),invalidateToken:l=>i.invalidateToken(l),nonce:async({signal:l})=>{let p=await s(`${a}/v1/nonce`,{signal:l,cache:"no-store",credentials:"omit",redirect:"error",referrerPolicy:"no-referrer"}),d=(await p.text()).trim();if(!p.ok||!/^[0-9a-f]{64}$/.test(d))throw ue("unavailable");return Uint8Array.from(d.match(/../g).map(u=>parseInt(u,16)))},signHello:(l,p)=>c()?t.signLogHello(l,p):null},e,{allowLoopbackHttp:r})}async driveCollection(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw ue("binding");for(let i=0;i<jN;i++){let o=this.pump.callsSent;if(this.native.tick(),await this.pump.pump(),this.checkCollection(t),this.pump?.callsSent===o)break}}async wakeCollectionLog(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw ue("binding");this.native.tick(),(await this.pump.pump()).quiet&&(this.checkCollection(t),this.native.requestLogHead()&&(await this.pump.pump(),this.checkCollection(t),this.native.tick()))}waitForVerifiedRead(e){let{timeoutMs:t=15e3,cold:i=!1}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionScope||this.adoptedEndpoint===null||!Number.isSafeInteger(t)||t<1||t>15e3||typeof i!="boolean"||i&&!this.pump)throw ue("binding");if(this.readWork)return this.readWork.then(()=>{this.checkCollection(o)});let s=this.verifyRead(o,t,i,e.onProgress);return this.readWork=s,s.finally(()=>{this.readWork===s&&(this.readWork=null)}).catch(()=>{}),s}async verifyRead(e,t,i,o){let s=new AbortController,r=()=>s.abort();this.readAbort=s,e.addEventListener("abort",r,{once:!0});let a=null,c=ue(i?"sync_stalled":"unavailable"),l,p=new Promise((h,m)=>{l=()=>m(c),s.signal.addEventListener("abort",l,{once:!0})});p.catch(()=>{});let d=null,u=h=>{if(h!==d){d=h;try{o?.(h)}catch{}}},f=()=>{this.checkCollection(e);let h=i?this.pump.terminalProblem:null;if(Dn(h))throw new kn(Ot(h)??"unavailable",h);let m=this.native.observations();if(m.requiresReopen||m.keyringRebuildFailed)throw ue("recovery_required");let b=Hd(m.status);return u(b==="installing"?"loading_snapshot":b==="waiting_for_key"?"waiting_for_key":b==="behind"?"replaying":b===null?"verifying_read":"syncing"),m};this.readVerified=!1;try{if(this.pump){let m=()=>{let _=f();return[_.status.confirmedThrough,_.status.installing?.done??0,_.status.installing?.total??0,this.pump.readProgress]},b=m(),w=Date.now(),g=new Map,y=null,v=()=>{try{let _=Date.now(),k=m();k.some((I,R)=>I>b[R])&&(w=_,y=null),b=k.map((I,R)=>Math.max(I,b[R]));let S=this.pump.responseProgress(),x=new Set(S.map(I=>I.id));for(let I of g.keys())x.has(I)||g.delete(I);for(let I of S){let R=g.get(I.id);I.bytes>(R?.bytes??0)&&g.set(I.id,{bytes:I.bytes,at:_})}let P=t-(_-w);P<=0&&(y??=new Set(g.keys()),P=Math.max(0,...[...y].map(I=>{let R=g.get(I);return R?t-(_-R.at):0}))),P<=0?r():a=setTimeout(v,Math.min(250,P))}catch(_){c=_,r()}};a=setTimeout(v,Math.min(250,t))}else a=setTimeout(r,t);this.readClient=await Promise.race([pr.connect({app:{name:"app-local-read-gate",version:"1"},connector:Na(this.native,{collection:this.collectionScope.collection}),reconnect:!1,signal:s.signal}).then(m=>{if(s.signal.aborted)throw m.close(),ue("unavailable");return m}),p]),this.checkCollection(e);let h=250;for(;!s.signal.aborted;){this.native.tick(),this.pump&&await Promise.race([this.pump.pump(),p]),this.checkCollection(e);let m=f();if(i&&Hd(m.status)!==null){await Qo(h,s.signal),h=Math.min(1e3,h*2);continue}try{if(await Promise.race([this.readClient.query({limit:1},void 0,s.signal),p]),this.checkCollection(e),s.signal.aborted)throw ue("unavailable");this.readVerified=!0;return}catch(b){if(this.checkCollection(e),!(b instanceof pe)||b.code!=="unavailable"||!this.pump||s.signal.aborted)throw b}await Qo(h,s.signal),h=Math.min(1e3,h*2)}throw ue("unavailable")}catch(h){throw this.checkCollection(e),s.signal.aborted?c:h}finally{a!==null&&clearTimeout(a),e.removeEventListener("abort",r),s.signal.removeEventListener("abort",l),this.readClient?.close(),this.readClient=null,this.readAbort=null}}get privateDevice(){return this.accountKeyPin!==null}accountKeyState(){if(!this.native||!this.accountKeyPin||this.adoptedEndpoint===null)throw ue("binding");return this.native.accountKeyStatus(this.accountKeyPin)}async settlePrivateKey(e){let{timeoutMs:t=15e3}=e,i=this.operationSignal(e.signal);if(this.checkCollection(i),!this.native||!this.pump||!this.accountKeyPin||this.adoptedEndpoint===null||!Number.isSafeInteger(t)||t<1||t>15e3)throw ue("binding");let o=null,s=Date.now(),r=100,a=!1,c=async()=>a?!0:(a=!0,await this.wakeCollectionLog({signal:i}),!1);for(;;){let l=this.accountKeyState();if(l.state==="keyed")return"keyed";if(l.state==="refused"&&l.reason==="outcome_unknown")throw ue("recovery_required");await this.driveCollection({signal:i});let p=this.pump?.terminalProblem;if(Dn(p))throw new kn(Ot(p)??"unavailable",p);if(this.accountKeyState().state==="keyed")return"keyed";let d=this.native.observations();if(d.requiresReopen||d.keyringRebuildFailed)throw ue("recovery_required");let u=Hd(d.status);if(u==="offline"||this.pump?.transportHealth?.kind==="offline")throw ue("unavailable");let f=u==="waiting_for_key"?IA(d.status)?.key:void 0;if(u===null||f!==void 0&&f!=="reading"){if(await c())return"locked";continue}let h=Date.now(),m=[d.status.confirmedThrough,d.status.headKnown,this.pump.readProgress];if((o===null||m.some((b,w)=>b>o[w]))&&(s=h),o=o===null?m:m.map((b,w)=>Math.max(b,o[w])),h-s>=t)throw ue("sync_stalled");await Qo(r,i),this.checkCollection(i),r=Math.min(1e3,r*2)}}accountKeySession(e){let t=this.collectionSession;if(!t)throw ue("binding");return Object.freeze({accountId:this.selected.accountId,connectorId:e.connectorId,deviceId:e.deviceId,collection:e.collection,cpOrigin:this.selected.cpOrigin,isCurrent:()=>this.collectionCurrent?.()===!0&&this.accountKeyPin===e,connectorBearer:async({signal:i})=>{i.throwIfAborted(),this.checkCollection(this.lifetime);let o=await t.connectorBearer({signal:this.lifetime});return this.checkCollection(this.lifetime),i.throwIfAborted(),o}})}async accountKeyMode(e){let t=this.operationSignal(e.signal);this.checkCollection(t);let i=this.accountKeyPin;if(!i||!this.logRequest)throw ue("binding");return yy(this.accountKeySession(i),{signal:t,fetch:this.logRequest,allowLoopbackHttp:this.logLoopback})}async unlockAccountKey(e,t){let i=this.operationSignal(t.signal);this.checkCollection(i);let o=this.native,s=this.accountKeyPin,r=this.logRequest;if(!o||!s||!r||!this.pump||this.adoptedEndpoint===null||this.accountKeyWork)throw ue("binding");let a=Object.freeze({supportsFetchProof:()=>o.supportsAccountKeyFetchProof,signFetch:c=>o.signAccountKeyFetch(s,this.selected.accountId,c),unlockConsuming:c=>o.unlockAccountKeyConsuming(s,c),status:()=>o.accountKeyStatus(s),drive:c=>this.driveCollection({signal:c.signal}),headKnown:()=>o.observations().status.headKnown});this.accountKeyWork=!0;try{await gy(this.accountKeySession(s),a,e,{signal:i,fetch:r,allowLoopbackHttp:this.logLoopback,sealed:this.accountKeySealed,...t.onMode?{onMode:t.onMode}:{}}),this.checkCollection(i)}finally{this.accountKeyWork=!1}}onLogWork(e){this.logWorkListener=e}attachDataFacade(e){if(this.checkCollection(this.lifetime),!this.native||!this.collectionScope||!this.readVerified||this.facades.size>=LN||this.facades.has(e))throw ue("fenced");let t=Object.freeze({...this.collectionScope,isCurrent:()=>{try{return this.checkCollection(this.lifetime),!0}catch{return!1}}}),i=Lm(this.native,e,t,()=>this.logWorkListener?.());return this.facades.set(e,i),i.resourceSetup}detachDataFacade(e){let t=this.facades.get(e);t&&(this.facades.delete(e),t.close())}registeredReceipt(){this.check(this.lifetime);let e=this.publicReceipt;if(!e)throw ue("fenced");return Object.freeze({...e,signPublicKey:new Uint8Array(e.signPublicKey),kemPublicKey:new Uint8Array(e.kemPublicKey),noisePublicKey:new Uint8Array(e.noisePublicKey)})}close(){if(this.closing=!0,this.readVerified=!1,this.readAbort?.abort(),this.closeResult)return this.closeResult;let e=!1;for(let t of[()=>this.readClient?.close(),()=>{for(let i of this.facades.values())i.close();this.facades.clear()},()=>this.peopleMetadata?.authority.close(),()=>this.bootstrap?.close(),()=>this.outcome?.close(),()=>this.accountKeySealed.clear()])try{t()}catch{e=!0}return this.closeResult??=(async()=>{try{await Promise.all([...this.timerPorts].map(async i=>{try{await i.close()}catch{e=!0}})),this.timerPorts.clear();let t=await this.native?.close();if(this.collectionSql&&t!==!0&&this.collectionSql.fence(),this.authority?.close(),await this.sqlClose?.(),e)throw ue("unavailable")}finally{this.key=null,this.noise=null,this.originalCustody?.envelope.fill(0),this.originalCustody=null,this.signIn=null,this.publicReceipt=null,this.outcomeStore?.close(),this.privateStore?.close(),this.noiseStore?.close(),this.keys?.close(),this.provider?.close()}})()}};sC();ne();fd();gd();Hs();Ho();sy();yd();md();$d();Ko();Qn();var UN=new Set(["binding","fenced","busy","open_in_another_tab","account_confirmation_required","recovery_account_mismatch","outcome_unknown","response","refused","expired","recovery_required","unavailable","collection_migrating","collection_not_yet_migrated","account_suspended","update_required","private_device_limit","private_device_not_allowed"]),NN=new Set(["AbortError","ConstraintError","DataCloneError","InvalidStateError","NotAllowedError","NotFoundError","NotReadableError","OperationError","QuotaExceededError","SecurityError","TimeoutError","TransactionInactiveError","UnknownError","VersionError"]),as=(n,e,t,i)=>Object.freeze({problem:n,detail:Object.freeze({name:e,code:t,...i?{server:i}:{}})});function DA(n){try{for(let[e,t]of[[et,"AppInstallationSignInError"],[ss,"AppCloudCopyHostError"],[Sn,"AppCloudCopyBootstrapError"],[xn,"AppCollectionSetupError"],[Ri,"AppCollectionControlError"],[ts,"AppCollectionJoinError"],[Ci,"AppCpAuthorityError"],[kn,"AppHttpLogError"],[sa,"AppPrivateBootstrapError"],[st,"AppAccountKeyUnlockError"]])if(n instanceof e){let i=n.reason,o=("server"in n?Io(n.server):null)??void 0;return i==="sync_stalled"?as("unavailable",t,i,o):UN.has(i)?as(i,t,i,o):as("open_failed",t,null,o)}if(n instanceof Qe&&n.reason==="busy")return as("open_in_another_tab","AppReplicaOwnerError","busy");if(n instanceof pe){let e=uo(n.code)?n.code:null;return as(e==="outcome_unknown"?e:"open_failed","MdbaseError",e)}if(typeof DOMException<"u"&&n instanceof DOMException){let e=NN.has(n.name)?n.name:null;return as("open_failed","DOMException",e)}for(let[e,t]of[[TypeError,"TypeError"],[RangeError,"RangeError"],[SyntaxError,"SyntaxError"],[ReferenceError,"ReferenceError"],[URIError,"URIError"],[EvalError,"EvalError"],[Error,"Error"]])if(n instanceof e)return as("open_failed",t,null)}catch{}return as("open_failed","UnknownError",null)}gd();Vo();Ko();be();var DN=5e3,$N=n=>Array.from(U(n),e=>e.toString(16).padStart(2,"0")).join(""),tr=n=>(U(n),n.toLowerCase());function Vy(n,e,t=DN){let i;return Promise.race([n.catch(()=>e),new Promise(o=>{i=setTimeout(()=>o(e),t)})]).finally(()=>clearTimeout(i))}function $A(n){return Vy(new Promise(e=>{let t=indexedDB.deleteDatabase(n);t.onsuccess=()=>e(!0),t.onerror=()=>e(!1)}),!1)}function zN(n){let e=encodeURIComponent(n.cpOrigin),t=`mdbase.app.installation.v1.${e}.${n.appId}`;return[n.owner===void 0?t:`mdbase.app.installation.v2.${e}.${encodeURIComponent(n.owner)}.${n.appId}`,t]}async function BN(n,e,t){let i=new Set(n.isolated?[]:n.databases);!n.isolated&&n.storageNamespace===void 0&&i.add(t);let{accountId:o,connectorId:s,deviceId:r,installationId:a}=n;if(o&&s&&r&&a){let c=[o,s,r,a].map($N).join(".");i.add(`mdbase.app.device-key-kek.v1.${c}`),i.add(`mdbase.app.device-keys.v1.${c}`),i.add(`mdbase.app.noise.v1.${tr(a)}.${tr(s)}.${tr(r)}`);let l=[o,s,r,a].map(tr).join("."),p=[`mdbase.app.cloud-copy-outcome.v1.${l}.`,`mdbase.app.private-bootstrap.v1.${l}.`];for(let u of n.collectionIds){let f=tr(u);for(let h of["create","join"])i.add(`${p[0]}${f}.${h}`);for(let h of["create","enrol"])i.add(`${p[1]}${f}.${h}`)}let d=indexedDB.databases;if(typeof d=="function"){let u=await Vy(d.call(indexedDB),[]);for(let{name:f}of u)f&&p.some(h=>f.startsWith(h))&&i.add(f)}}return i.delete(e),[...i]}async function FN(n,e){let t=globalThis.navigator?.storage;return typeof t?.getDirectory!="function"?!0:Vy((async()=>{let i=await t.getDirectory(),o=`.mdbase-app-${tr(n)}-${tr(e)}-`,s=[];for await(let a of i.keys())a.startsWith(o)&&s.push(a);let r=!0;for(let a of s)try{await i.removeEntry(a,{recursive:!0})}catch{r=!1}return r})(),!1)}async function y2(n,e){try{if(!globalThis.indexedDB||!n.accountId||!n.connectorId||!n.deviceId||!n.installationId)return!1;let t=tr(e),i=[n.accountId,n.connectorId,n.deviceId,n.installationId].map(tr).join("."),o=["create","join"].map(a=>`mdbase.app.cloud-copy-outcome.v1.${i}.${t}.${a}`);o.push(...["create","enrol"].map(a=>`mdbase.app.private-bootstrap.v1.${i}.${t}.${a}`));let s=await Promise.all(o.map($A)),r=globalThis.navigator?.storage;if(typeof r?.getDirectory=="function"){let a=await r.getDirectory();try{await a.removeEntry(`.mdbase-app-${tr(n.accountId)}-${tr(n.installationId)}-${t}`,{recursive:!0})}catch(c){if(!(c instanceof DOMException&&c.name==="NotFoundError"))return!1}}return s.every(Boolean)}catch{return!1}}async function g2(n){if(!globalThis.indexedDB)return Object.freeze({ledger:!1,complete:!1});let[e,t]=zN(n),i=await $A(e),o=null;try{o=await BN(n,e,t)}catch{}let s=o?await Promise.all([...o,...n.isolated||n.storageNamespace!==void 0?[]:[xA]].map($A)):[!1],r=n.storageNamespace===void 0?!0:await Vy(u2(n),!1),a=n.accountId&&n.installationId?await FN(n.accountId,n.installationId).catch(()=>!1):!0;return Object.freeze({ledger:i,complete:i&&r&&a&&s.every(Boolean)})}ne();var VN=Object.freeze({status:"unselected",problem:null,transport:null,live:null}),ut=n=>new et(n),KN=new Set(["collection_not_yet_migrated","collection_migrating","account_suspended","update_required"]),Ky=class{lifetime=new AbortController;flowLifetime=new AbortController;options;environment;listeners=new Set;flow=null;host=null;installation=null;installationLease=null;slots=new Map;focus=null;openingSlot=null;abortCollections=()=>{for(let e of this.slots.values())e.lifetime?.abort()};base=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null});snapshotValue=this.base;authorizationStartedAt=null;authorizationRetryAt=0;authorizationRateLimit=null;pending=null;polling=null;timer=null;closing=null;foreground=!0;receiptRead=null;foregroundRead=null;attested=!1;acknowledged=!1;consentPending=!1;fileAccess=null;freshApproval=!1;approvalWindow=null;nativePending=null;forgotten=new Set;removedScopes=new Set;onAbort=()=>{this.close().catch(()=>{})};constructor(e){this.options=Object.freeze({...e}),this.environment=xi({environment:e.environment,appOrigin:e.origin,release:e.release}),e.signal.addEventListener("abort",this.onAbort,{once:!0}),this.lifetime.signal.addEventListener("abort",this.abortCollections,{once:!0})}getSnapshot(){return this.snapshotValue}snapshot(){return this.getSnapshot()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}viewFor(e,t={}){return t.bystander&&this.base.status==="authorizing"&&this.consentPending&&e!==null&&this.slots.has(e)?this.compose(e,!0):e===this.focus?this.snapshotValue:this.compose(e)}collectionView(e){return this.slots.get(e)?.view??null}heldCollections(){return[...this.slots.keys()]}compose(e,t=!1){let i=this.base,o=e===null?void 0:this.slots.get(e);if(!o)return i;if(i.status!=="unselected"&&!t)return Object.freeze({...i,selectedCollectionId:o.id,transport:o.view.transport,live:o.view.live});let{problemDetail:s,...r}=i,{problemDetail:a,...c}=o.view;return Object.freeze({...r,...t?{status:"unselected",problem:null,approval:null}:{},...c,selectedCollectionId:o.id,...a?{problemDetail:a}:{}})}connection(e=this.focus){let t=e===null?void 0:this.slots.get(e),i=this.base.status==="unselected"||this.base.status==="authorizing"&&this.consentPending;return!t||this.closing||this.options.signal.aborted||!t.usable||t.lifetime?.signal.aborted||!this.installation?.isCurrent()||!i||!["ready","setup_required"].includes(t.view.status)||!this.sameScope(t.scope,t.leaseScope)||t.scope?.collection!==t.id?null:t.selected?.connection??null}sameScope(e,t){return e!==null&&t!==null&&e.account===t.account&&e.installation===t.installation&&e.collection===t.collection&&e.account===this.installation?.scope.account&&e.installation===this.installation?.scope.installation}directAccess=qy;checkDirectAccess(e){return this.check(),this.directAccess.check(e)}requestDirectAccess(e){return this.check(),this.directAccess.request(e)}check(){if(this.closing||this.options.signal.aborted||this.lifetime.signal.aborted)throw ut("fenced")}publish(e){this.check(),this.setBase(e),this.changed()}setBase(e){let{problemDetail:t,...i}=this.base,o=e.problem===null?void 0:e.problemDetail??t;this.base=Object.freeze({...i,...e,selectedCollectionId:null,signIn:this.flow?.view()??null,...o?{problemDetail:o}:{}})}publishSlot(e,t){if(this.check(),this.slots.get(e.id)!==e)return;let i=this.base.timing;if(this.authorizationStartedAt!==null&&(t.status==="ready"||t.status==="setup_required")){let u=Math.max(0,performance.now()-this.authorizationStartedAt);i=Object.freeze({firstScreenMs:i?.firstScreenMs??u,readyMs:t.status==="ready"?i?.readyMs??u:i?.readyMs??null})}this.setBase({timing:i});let{problemDetail:o,unlock:s,...r}=e.view,{unlock:a,...c}=t,l=t.problem===null?void 0:t.problemDetail??o,p=(t.status??r.status)==="opening"?"openingProgress"in t?t.openingProgress??null:r.openingProgress??null:null,d=(t.status??r.status)==="needs_unlock"?a??s??null:null;e.view=Object.freeze({...r,...c,openingProgress:p,...d?{unlock:d}:{},...l?{problemDetail:l}:{}}),this.changed()}changed(){this.snapshotValue=this.compose(this.focus);for(let e of[...this.listeners])try{e()}catch{}}poll(e){this.pending||(this.operation(e).catch(()=>{}),this.polling=this.pending)}stopPolling(){this.timer!==null&&clearTimeout(this.timer),this.timer=null}operation(e,t=!1){if(this.check(),this.pending)return Promise.reject(ut("busy"));this.foregroundRead=null,this.stopPolling();let o=Promise.resolve().then(()=>(this.check(),e())).catch(async s=>{if(!t&&!this.closing&&!this.options.signal.aborted){let{problem:r,detail:a}=DA(s);if(r==="open_failed")try{console.error("mdbase web sign-in open failed",a.name,a.code)}catch{}let c=this.openingSlot;if(this.openingSlot=null,c&&this.slots.get(c.id)===c){let l=!1;try{l=s instanceof Sn&&s.reason==="unavailable"&&s.retryable===!0&&c.view.status==="opening"&&this.base.collections.some(p=>p.collectionId===c.id)&&this.flow?.view().state==="paired"&&this.installation?.isCurrent()===!0}catch{}if(l){try{await this.closeSlot(c),this.check()}catch(p){throw!this.closing&&!this.options.signal.aborted&&this.publishSlot(c,{status:"blocked",problem:"recovery_required",problemDetail:DA(p).detail}),p}this.publishSlot(c,{status:"unselected",problem:r,problemDetail:a})}else this.publishSlot(c,{status:"blocked",problem:r,problemDetail:a})}else this.publish({status:"blocked",problem:r,problemDetail:a})}throw s});return this.pending=o,o.finally(()=>{this.pending===o&&(this.pending=null),this.schedulePoll()})}start(){return this.operation(async()=>{if(this.flow&&this.base.status!=="blocked")return this.getSnapshot();this.publish({status:"starting",problem:null,signOutResult:null});let e=this.options;this.flow??=await Ml.open({...e,mode:e.storeMode??"open",signal:this.flowLifetime.signal,environmentSelection:this.environment}),this.check();let t=this.flow.view();if(t.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!t.nativeSelection)throw ut("recovery_required");await this.openDevice(!1,this.options.recoveryFor!==void 0),this.flow.collectionConsentView()?.state==="pending"?(this.consentPending=!0,this.publish({status:"authorizing"})):await this.refreshCollections()}else this.publish({status:t.state==="pending"?"signed_out":"authorizing"});return this.getSnapshot()})}authorize(e={}){if(this.check(),this.authorizationRateLimit&&Date.now()<this.authorizationRetryAt)return Promise.reject(this.authorizationRateLimit);let t=this.pending!==null&&this.pending===this.polling?this.pending:null;if(!this.flow||this.pending&&!t)return Promise.reject(ut("busy"));let i=this.options.openPortal();return t?t.catch(()=>{}).then(()=>{try{this.check()}catch(s){throw i.close(),s}if(this.pending)throw i.close(),ut("busy");let o=this.base.status;return o!=="authorizing"&&o!=="signed_out"?(i.close(),this.getSnapshot()):this.beginAuthorization(i,e)}):this.beginAuthorization(i,e)}beginAuthorization(e,t){let i={collectionHint:t.collectionHint??null},o=this.flow.view();return this.authorizationStartedAt=performance.now(),this.publish({timing:Object.freeze({firstScreenMs:null,readyMs:null}),approval:null}),this.operation(async()=>{try{if(o.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!o.nativeSelection)throw ut("recovery_required");await this.openDevice(),this.check();let s=await this.flow.startCollectionConsent(this.installation,this.options.requestedCreateCollections??this.options.freshRequestedCreateCollections??!1,i,this.options.freshRequestedPrivateDevice===!0);this.check(),this.consentPending=!0,e.navigate(s.verificationUri)}else{let s=await this.flow.start(i).catch(r=>this.renewFromGesture(r));this.check(),e.navigate(s.verificationUri)}return this.holdApprovalWindow(e),this.publish({status:"authorizing",problem:null}),await this.advance(),this.getSnapshot()}catch(s){throw s instanceof et&&s.server?.status===429&&(this.authorizationRateLimit=s,this.authorizationRetryAt=Date.now()+Math.min(Ba,Math.max(za,s.server.retryAfterMs??3e4))),e.close(),s}})}requestFileAccess(e,t,i){if(this.check(),!this.flow||this.pending)return Promise.reject(ut("busy"));let o=this.options.openPortal();return this.operation(async()=>{try{if(this.flow.view().state!=="paired"||!this.installation||!this.base.collections.some(r=>r.collectionId===e))throw ut("refused");let s=await this.flow.startFileAccess(this.installation,e,t,i);return this.check(),this.fileAccess=s,o.navigate(s.verificationUri),this.holdApprovalWindow(o),this.publish({fileAccess:Object.freeze({requestId:s.requestId,collectionId:e,actions:s.actions,state:"pending"})}),this.getSnapshot()}catch(s){throw o.close(),s}},!0)}pollFileAccess(e){let t=this.fileAccess;return!t||t.requestId!==e||this.pending||!this.flow||!this.installation?Promise.resolve(this.getSnapshot()):this.operation(async()=>{let i={state:"pending"};try{i=await this.flow.exchangeFileAccess(this.installation,t)}catch{}if(this.check(),this.fileAccess!==t||i.state==="pending"&&Date.now()<t.expiresAt)return this.getSnapshot();this.fileAccess=null,this.closeApprovalWindow();let o=i.state==="granted"?i.actions:null,s=o?Object.freeze(this.base.collections.map(r=>r.collectionId!==t.collectionId?r:Object.freeze({...r,fileActions:Object.freeze([...new Set([...r.fileActions??[],...o])])}))):this.base.collections;return this.publish({collections:s,fileAccess:Object.freeze({requestId:e,collectionId:t.collectionId,actions:o??t.actions,state:i.state==="pending"?"expired":i.state})}),this.getSnapshot()},!0)}async renewFromGesture(e){if(!(e instanceof et)||e.reason!=="expired"&&e.reason!=="refused")throw e;try{return await this.flow.renewExpiredPairing()}catch(t){throw t instanceof et&&t.reason==="recovery_required"?e:t}}renewExpiredPairing(){return this.operation(async()=>{if(!this.flow)throw ut("binding");return await this.flow.renewExpiredPairing(),this.check(),this.publish({status:"signed_out",problem:null}),this.getSnapshot()})}receiptGeneration(e){try{if(!e.isCurrent())return null;let t=e.view(),i=this.consentPending?e.collectionConsentView():null;return(this.consentPending?i?.state!=="pending":!["pending","awaiting_approval"].includes(t.state))?null:JSON.stringify([t.requestId,t.installationId,t.deviceId,t.accountId,t.state,this.consentPending,i?.requestId,i?.state])}catch{return null}}currentReceipt(e){try{return!this.closing&&!this.lifetime.signal.aborted&&!this.flowLifetime.signal.aborted&&!e.caller.aborted&&this.options.signal===e.caller&&this.flow===e.flow&&this.installation===e.installation&&(e.installation===null||e.installation.isCurrent()===!0)&&this.attested===e.attested&&this.acknowledged===e.acknowledged&&this.receiptGeneration(e.flow)===e.generation}catch{return!1}}async exchangeReceipt(e){let t=this.flow,i=this.pending,o=t?this.receiptGeneration(t):null,s=t&&i&&o!==null?Object.freeze({flow:t,operation:i,generation:o,caller:this.options.signal,installation:this.installation,attested:this.attested,acknowledged:this.acknowledged}):null;this.receiptRead=s;let r=!1;try{let a=await e();return r=a!=null,a}catch(a){if(a instanceof et&&a.reason==="outcome_unknown"&&this.flow?.isCurrent())return this.publish({status:"authorizing",problem:"outcome_unknown"}),null;throw a}finally{this.receiptRead===s&&(this.receiptRead=null),this.foregroundRead===s&&(!r||!s||!this.currentReceipt(s))&&(this.foregroundRead=null)}}async advance(){if(this.consentPending){let t;try{t=await this.exchangeReceipt(()=>this.flow.exchangeCollectionConsent(this.installation))}catch(i){if(!(i instanceof et)||i.reason!=="refused"&&i.reason!=="expired")throw i;this.check(),this.consentPending=!1,this.closeApprovalWindow(),this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"cancelled"})}),await this.refreshCollections();return}if(this.check(),!t)return;if(t.state==="scope_updated"){if(t.accountSelectionConfirmed!==!0)throw ut("account_confirmation_required");let i=this.flow.pendingNativeSelection?.();if(i?.requestId===t.requestId)await this.finishNativeChoice(i);else if(this.flow.view().collectionSelection?.requestId!==t.requestId&&!this.deviceAccessWithoutPick(t.requestedPrivateDevice===!0?t.addedCollectionIds:[]))throw ut("response");this.consentPending=!1,this.freshApproval=!0,this.closeApprovalWindow(),await this.refreshCollections()}else await this.prepareNativeChoice(),this.publish({status:"authorizing",problem:null});return}let e=await this.exchangeReceipt(()=>this.flow.exchange());if(this.check(),!!e)if(e.state==="account_selected"&&(e=await this.flow.confirmPortalSelectedAccount(),this.check()),(e.state==="account_confirmed"||e.state==="awaiting_approval")&&(await this.openDevice(),this.check(),this.attested||(await this.host.attestInstallation(),this.check(),this.attested=!0),await this.prepareNativeChoice()),e.state==="paired"){let t=this.flow.pendingNativeSelection?.();if(t?.requestId===e.requestId)await this.finishNativeChoice(t);else if(e.collectionSelection?.requestId!==e.requestId&&!this.deviceAccessWithoutPick(e.privateDeviceCollectionIds??[]))throw ut("response");this.freshApproval=!0,this.closeApprovalWindow(),await this.openDevice(),this.check(),await this.refreshCollections()}else this.publish({status:"authorizing",problem:null})}deviceAccessWithoutPick(e){let t=this.flow.view(),i=t.privateDeviceCollectionIds??[];return(t.collectionSelection??null)===null&&e.some(o=>i.includes(o))}async prepareNativeChoice(){let e=this.approvalWindow?.nativeAuthorization;if(!e||!this.installation)return;let t=this.flow.nativeAuthorizationContext(this.installation);if(!t)return;let i=this.nativePending;if(!i){if(i={context:t,port:e,life:new AbortController,prepared:null,failed:!1,attempted:!1},this.nativePending=i,t.authorizationId){i.failed=!0;return}let o=i,s=AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,i.life.signal]);e.prepare(t,s).then(r=>{this.nativePending!==o||s.aborted||(o.prepared=Object.freeze({...r}))},()=>{o.failed=!0})}if(i.context.requestId!==t.requestId||i.context.accountId!==t.accountId||i.context.challenge!==t.challenge)throw ut("fenced");if(i.prepared&&!i.attempted){i.attempted=!0;try{await this.flow.attachNativeAuthorization(this.installation,i.context,i.prepared),this.check()}catch{i.failed=!0}}}async finishNativeChoice(e){let t=this.nativePending;if(!t||!t.prepared||!t.attempted||t.context.requestId!==e.requestId||t.prepared.authorizationId!==e.authorizationRequestId)throw ut("recovery_required");await this.openDevice(),this.check();let i=await t.port.finish(e,AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,t.life.signal]));if(this.check(),this.nativePending!==t||!this.acknowledged||!this.installation)throw ut("fenced");await this.flow.completeNativeAuthorization(this.installation,i),this.check()}holdApprovalWindow(e){this.approvalWindow!==e&&this.closeApprovalWindow(),this.approvalWindow=e}closeApprovalWindow(){let e=this.approvalWindow;this.approvalWindow=null;let t=this.nativePending;this.nativePending=null,t?.life.abort();try{t?.port.cancel()}catch{}if(e)try{e.close()}catch{}}async openDevice(e=!1,t=!1){if(!this.installation){let i=this.flow.confirmedSelection(),o=Object.freeze({account:i.accountId,installation:i.installationId});this.installationLease=await pd(this.options.locks,o,this.lifetime.signal),this.check(),this.installation=Object.freeze({scope:o,isCurrent:()=>!this.closing&&!this.options.signal.aborted&&!this.lifetime.signal.aborted&&this.installationLease!==null})}t||!this.host&&!e&&this.acknowledged&&this.flow.view().state==="paired"&&[...this.slots.values()].some(i=>i.host!==null)||(this.host?!this.acknowledged&&this.flow.view().state==="paired"&&(await this.host.completeInstallationSignIn(),this.check(),this.acknowledged=!0):(this.host=await wc.openInstallationDevice({signIn:this.flow,installation:this.installation,release:this.options.release,origin:this.options.origin,signal:this.lifetime.signal,loadRuntime:this.options.loadRuntime,allowLoopbackHttp:this.environment.allowLoopbackHttp}),this.check(),this.acknowledged=this.flow.view().state==="paired"))}async refreshCollections(){let e=await this.flow.listApprovedCollections(this.installation);this.check();for(let o of this.flow.view().collectionIds)e.some(s=>s.collectionId===o)||this.removedScopes.add(o);let t=Object.freeze(e.filter(o=>!this.forgotten.has(o.collectionId)));for(let o of this.slots.values()){if(o.usable&&o.selected&&!t.some(l=>l.collectionId===o.id)){o.usable=!1,o.lifetime?.abort(),await this.closeSlot(o),this.check(),this.deleteSlot(o);continue}let s=o.usable&&o.selected!==null&&t.some(l=>l.collectionId===o.id),{problemDetail:r,unlock:a,...c}=o.view;o.view=Object.freeze({...c,...s?this.assessed(o.selected):{status:"unselected"},problem:null})}this.publish({status:"unselected",collections:t,problem:null});let i=this.flow.view().collectionSelection?.selectedCollectionId;(this.options.autoSelect??"only")==="only"&&(this.freshApproval&&i&&t.some(o=>o.collectionId===i)?await this.openSlot(i,!0):t.length===1&&await this.openSlot(t[0].collectionId,!0))}schedulePoll(){if(this.pending&&!this.closing&&!this.options.signal.aborted)return;let e=this.foregroundRead;this.foregroundRead=null;for(let i of this.closing||this.options.signal.aborted?[]:this.slots.values()){let o=this.retryAfterMs(i);o===null||i.timer!==null||i.view.status!=="blocked"||(i.timer=setTimeout(()=>{i.timer=null,!(this.slots.get(i.id)!==i||i.view.status!=="blocked"||i.view.problem!=="collection_migrating"||this.flow?.view().state!=="paired")&&this.operation(()=>this.openSlot(i.id)).catch(()=>{})},o))}if(this.closing||this.options.signal.aborted||this.timer!==null||this.base.status!=="authorizing")return;let t=this.foreground&&e&&this.currentReceipt(e)?e:null;this.timer=setTimeout(()=>{this.timer=null,this.poll(async()=>{t&&(!this.foreground||!this.currentReceipt(t))||await this.advanceApproval()})},t?0:this.foreground?this.base.problem==="outcome_unknown"?5e3:1e3:1e4)}retryAfterMs(e){let t=e.view;if(t.problem!=="collection_migrating")return null;let i=null;try{i=Io(t.problemDetail?.server)?.retryAfterMs??null}catch{i=null}return Math.min(Ba,Math.max(za,i??3e4))}setForeground(e){this.check();let t=e&&!this.foreground;this.foreground=e,this.stopPolling(),e?t&&this.receiptRead?.operation===this.pending&&(this.foregroundRead=this.receiptRead):this.foregroundRead=null,e&&this.base.status==="authorizing"&&!this.pending?this.poll(()=>this.advanceApproval()):this.schedulePoll()}approvalWindowClosed(){this.check(),!(this.pending||this.base.status!=="authorizing"||!this.approvalWindowGone())&&(this.stopPolling(),this.poll(()=>this.advanceApproval()))}approvalWindowGone(){let e=this.approvalWindow;try{return e?.closed===!0}catch{return!1}}async advanceApproval(){let e=this.approvalWindowGone()?this.approvalWindow:null;if(await this.advance(),this.check(),!(!e||this.approvalWindow!==e||this.base.status!=="authorizing")&&this.base.problem!=="outcome_unknown"){if(this.closeApprovalWindow(),this.consentPending){this.consentPending=!1,this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"closed"})}),await this.refreshCollections();return}this.publish({status:"signed_out",problem:"approval_window_closed",approval:Object.freeze({outcome:"closed"})})}}select(e){return this.operation(async()=>(await this.openSlot(e,!0),this.getSnapshot()))}openCollection(e){return this.operation(async()=>(await this.openSlot(e),this.viewFor(e)))}releaseCollection(e){return this.slots.has(e)?this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t),this.changed()),this.getSnapshot()}):Promise.resolve(this.getSnapshot())}async openSlot(e,t=!1){this.check();let i=this.base.collections.find(u=>u.collectionId===e);if(!i||this.flow?.view().state!=="paired"||!this.installation)throw ut("refused");let o=t?[...this.slots.values()].filter(u=>u.id!==e):[],s=this.slots.get(e);if(s&&s.usable&&s.selected&&!s.lifetime?.signal.aborted&&this.sameScope(s.scope,s.leaseScope)&&s.scope?.collection===e){for(let u of o)u.usable=!1,u.lifetime?.abort();this.focus=e,this.settleBase(),this.publishSlot(s,{...this.assessed(s.selected),problem:null});for(let u of o)await this.closeSlot(u),this.check(),this.deleteSlot(u),this.changed();return}for(let u of o)u.usable=!1,u.lifetime?.abort();let r=s??{id:e,host:null,lease:null,leaseScope:null,selected:null,scope:null,lifetime:null,usable:!1,stopAssessment:null,timer:null,view:VN};r.usable=!1,r.lifetime?.abort(),this.slots.set(e,r),this.focus=e,this.openingSlot=r,this.settleBase(),this.publishSlot(r,{status:"opening",problem:null,openingProgress:null});for(let u of o)await this.closeSlot(u),this.check(),this.deleteSlot(u),this.changed();(r.lease||r.selected||r.host)&&await this.closeSlot(r),this.check(),await this.openDevice(!0),this.check(),r.host=this.host,this.host=null;let a=Object.freeze({...this.installation.scope,collection:e});r.lease=await cd(this.options.locks,a,this.lifetime.signal),r.leaseScope=a,this.check(),r.lifetime=new AbortController;let c=this.freshApproval&&this.flow.view().collectionSelection?.createdCollectionIds.includes(e)===!0,l=r.lifetime,p=await this.options.openCollection({host:r.host,installation:this.installation,scope:a,collection:i,setupPolicy:c?"approved-new-collection":"explicit",signal:l.signal,onProgress:u=>{this.closing||this.slots.get(r.id)!==r||r.lifetime!==l||l.signal.aborted||r.view.status!=="opening"||r.view.openingProgress!==u&&this.publishSlot(r,{openingProgress:u})}});r.selected=p,r.scope=a,this.check();let d=this.assessed(p);r.usable=!0,this.openingSlot===r&&(this.openingSlot=null),r.stopAssessment=p.subscribe?.(()=>{if(this.closing||this.slots.get(r.id)!==r||!r.usable||r.selected!==p||r.lifetime?.signal.aborted||!this.sameScope(r.scope,r.leaseScope)||r.scope?.collection!==r.id)return;let u=null;try{u=p.ended??null}catch{u=null}if(u){this.accessEnded(r,p,u);return}let f;try{f=this.assessed(p)}catch{return}this.publishSlot(r,f.status==="needs_unlock"?{...f,problem:null,transport:null,live:null}:{...f,...this.liveProblem(r,p)})})??null,this.publishSlot(r,{...d,transport:null,live:null,openingProgress:null})}assessed(e){let t=e.state;if(t==="ready"||t==="setup_required")return{status:t};if(t!=="needs_unlock"||typeof e.unlock!="function")throw ut("response");let i=e.locked;if(!i||typeof i!="object"||!["password","strict","none"].includes(i.mode)||typeof i.unlocking!="boolean"||i.problem!==null&&(typeof i.problem!="string"||!/^[a-z][a-z0-9_]{0,63}$/.test(i.problem)))throw ut("response");return{status:t,unlock:Object.freeze({mode:i.mode,unlocking:i.unlocking,problem:i.problem})}}unlockCollection(e,t){let i=()=>{let o=this.slots.get(e);return o&&o.usable&&o.selected&&typeof o.selected.unlock=="function"&&o.view.status==="needs_unlock"&&!o.lifetime?.signal.aborted&&this.base.status==="unselected"&&this.installation?.isCurrent()===!0&&this.sameScope(o.scope,o.leaseScope)&&o.scope?.collection===e?o:null};return!this.closing&&!this.options.signal.aborted&&!this.pending&&!i()?Promise.reject(ut("refused")):this.operation(async()=>{let o=i();if(!o)throw ut("refused");let s=o.selected;this.openingSlot=o;try{await s.unlock(t),this.check()}catch(a){throw o.usable=!1,o.lifetime?.abort(),a}if(this.slots.get(o.id)!==o||o.selected!==s||!o.usable)throw ut("fenced");this.openingSlot===o&&(this.openingSlot=null);let r=this.assessed(s);return this.publishSlot(o,r.status==="needs_unlock"?{...r,problem:null}:{...r,...this.liveProblem(o,s)}),this.viewFor(e)})}settleBase(){(this.base.status==="blocked"||this.base.status==="unselected")&&this.setBase({status:"unselected",problem:null})}deleteSlot(e){e.timer!==null&&clearTimeout(e.timer),e.timer=null,this.slots.get(e.id)===e&&this.slots.delete(e.id),this.focus===e.id&&(this.focus=null),this.openingSlot===e&&(this.openingSlot=null)}accessEnded(e,t,i){if(e.selected!==t||!e.usable)return;let o=i==="gone"?"collection_deleted":i==="revoked"?"unauthenticated":"access_removed";i!=="gone"&&this.removedScopes.add(e.id),e.usable=!1,this.publishSlot(e,{status:"blocked",problem:o,transport:null,live:null});let s=()=>{if(!(this.closing||this.options.signal.aborted||e.selected!==t||this.slots.get(e.id)!==e)){if(this.pending){this.pending.catch(()=>{}).then(s);return}this.operation(async()=>{if(await this.closeSlot(e),this.publishSlot(e,{status:"blocked",problem:o}),!(!this.flow||!this.installation||this.flow.view().state!=="paired"))try{let r=await this.flow.listApprovedCollections(this.installation);this.check(),this.publish({collections:Object.freeze(r.filter(a=>!this.forgotten.has(a.collectionId)))})}catch{}}).catch(()=>{})}};s()}liveProblem(e,t){let i=null;try{i=t.problem??null}catch{i=null}let o=null;try{o=t.health??null}catch{o=null}let s=o?Object.freeze({...o}):null,r=null;try{let c=t.live;r=typeof c=="boolean"?c:null}catch{r=null}let a=Dn(i)?Ot(i):null;return a&&i?{problem:a,problemDetail:Object.freeze({name:"AppHttpLogError",code:a,server:i}),transport:s,live:r}:{...KN.has(e.view.problem??"")?{problem:null}:{},transport:s,live:r}}async closeSlot(e){e.usable=!1,e.timer!==null&&clearTimeout(e.timer),e.timer=null;let t=e.stopAssessment;e.stopAssessment=null;try{t?.()}catch{}e.lifetime?.abort(),await e.selected?.close(),e.selected=null,e.scope=null,e.lifetime=null,await e.host?.close(),e.host=null,await e.lease?.release(),e.lease=null,e.leaseScope=null}async closeSlots(){for(let t of[...this.slots.values()])await this.closeSlot(t),this.deleteSlot(t);let e=this.host;this.host=null,await e?.close()}clearSelection(){return this.operation(async()=>(await this.closeSlots(),this.focus=null,this.publish({status:"unselected",problem:null}),this.getSnapshot()))}refreshCollectionList(){return this.pending||!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||this.base.status!=="unselected"?Promise.resolve(this.getSnapshot()):this.operation(async()=>(await this.refreshCollections(),this.getSnapshot()),!0)}scopeWasRemoved(e){return this.removedScopes.has(e)}removedScopeIds(){return Object.freeze([...this.removedScopes])}canAbandonWrongAccount(){return!this.closing&&!this.options.signal.aborted&&this.pending===null&&this.flow?.canAbandonWrongAccount()===!0&&this.installation===null&&this.host===null&&this.slots.size===0&&!this.attested&&!this.acknowledged}scopeRecoveryContext(){if(!this.flow||!this.installation||this.flow.view().state!=="paired")return null;let e=this.flow.view();return Object.freeze({accountId:this.installation.scope.account,accountLabel:e.accountEmail??(e.accountLogin?`@${e.accountLogin}`:null),references:this.flow.collectionRecoveries()})}prepareScopedRecovery(e,t){return this.check(),this.pending?this.pending.catch(()=>{}).then(()=>this.prepareScopedRecovery(e,t)):this.operation(async()=>{if(!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||!this.flow.view().collectionIds.includes(e))throw ut("binding");let i=this.flow.collectionRecoveries(),o=this.slots.get(e);if(t===void 0&&!Object.hasOwn(i,e)&&!this.scopeWasRemoved(e))throw ut("binding");o&&(await this.closeSlot(o),this.check(),this.deleteSlot(o)),await this.flow.retireCollectionScope(this.installation,e,t??null),this.check();let s=this.flow.confirmedSelection(),r=this.options;if(!await y2({cpOrigin:r.cpOrigin,appId:r.appId,accountId:s.accountId,connectorId:s.connectorId,installationId:s.installationId,deviceId:s.deviceId,collectionIds:[e],databases:[]},e))throw ut("recovery_required");this.check();let a=await this.flow.freshCollectionInstallation(this.installation,e);return this.check(),Object.freeze({accountId:s.accountId,reference:a})},!0)}forget(e){return this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t)),this.forgotten.add(e),this.publish({collections:Object.freeze(this.base.collections.filter(i=>i.collectionId!==e))}),this.getSnapshot()})}deleteCollection(e,t){let i=null;return this.operation(async()=>{let o=this.base.collections.find(s=>s.collectionId===e);if(!this.flow||!this.installation||!o)i=new Gi("collection_delete_not_found");else if(o.role!=="owner")i=new Gi("collection_delete_not_owner");else{try{await this.flow.deleteApprovedCollection(this.installation,e,t)}catch(s){i=oC(s)}this.check()}return this.getSnapshot()}).then(o=>{if(i)throw i;return o})}signOut(){this.check();let e=this.pending!==null&&this.pending===this.polling?this.pending:null;return Promise.resolve(e?.catch(()=>{})).then(()=>this.operation(async()=>{let t=this.flow,i=null,o=null,s=!1;try{i=t?.view()??null}catch{i=null}try{o=t?.confirmedSelection().connectorId??null}catch{o=null}try{s=t?.hasWebPushChannel()===!0}catch{s=!1}let r=[...new Set([...i?.collectionIds??[],...this.base.collections.map(p=>p.collectionId)])];this.closeApprovalWindow(),this.fileAccess=null,this.consentPending=!1;try{await this.closeSlots()}catch(p){throw this.failSignOut(),p}this.check();let a="not_paired";if(t&&i?.state==="paired"){try{a=await t.signOutInstallation()}catch{a="incomplete"}this.check()}this.flow=null,this.installation=null;try{await t?.close()}catch{}this.flowLifetime.abort(),this.flowLifetime=new AbortController,await this.installationLease?.release(),this.installationLease=null,this.attested=!1,this.acknowledged=!1,this.freshApproval=!1,this.authorizationStartedAt=null,this.receiptRead=null,this.foregroundRead=null,this.forgotten.clear(),this.removedScopes.clear();let c=this.options,l=await g2({cpOrigin:c.cpOrigin,appId:c.appId,...c.owner===void 0?{}:{owner:c.owner},...c.storageNamespace===void 0?{}:{storageNamespace:c.storageNamespace},accountId:i?.accountId??null,connectorId:o,installationId:i?.installationId??null,deviceId:i?.deviceId??null,collectionIds:r,databases:c.localDatabases??[],...c.recoveryFor?{isolated:!0}:{}});if(this.check(),!l.ledger)throw this.failSignOut(),A("unavailable","This device couldn't remove its sign-in data.","sign_out_failed");return this.emit(Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,signOutResult:Object.freeze({server:a,local:l.complete?"erased":"incomplete",webPush:s})})),this.getSnapshot()},!0))}failSignOut(){if(this.closing||this.options.signal.aborted)return;let e=null;try{e=this.flow?.view()??null}catch{e=null}let{problemDetail:t,...i}=this.base;this.focus=null,this.emit(Object.freeze({...i,status:"blocked",signIn:e,selectedCollectionId:null,problem:"sign_out_failed"}))}emit(e){if(this.check(),this.base=e,e.status==="signed_out"){for(let t of[...this.slots.values()])this.deleteSlot(t);this.focus=null}this.changed()}close(){if(this.closing)return this.closing;let e=this.pending;return this.foregroundRead=null,this.stopPolling(),this.options.signal.removeEventListener("abort",this.onAbort),this.closing=Promise.resolve().then(async()=>{await e?.catch(()=>{}),await this.closeSlots(),this.focus=null,await this.flow?.close(),this.flowLifetime.abort(),this.flow=null,this.installation=null,await this.installationLease?.release(),this.installationLease=null,this.base=Object.freeze({status:"closed",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:this.base.timing}),this.snapshotValue=this.base;for(let t of[...this.listeners])try{t()}catch{}this.listeners.clear()}),this.lifetime.abort(),this.closing}};$d();return P2(WN);})();
|