-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathworker.js
More file actions
23 lines (23 loc) · 132 KB
/
Copy pathworker.js
File metadata and controls
23 lines (23 loc) · 132 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(function(){
/*!
* ONNX Runtime Web v1.27.0
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error(`Dynamic require of "`+e+`" is not supported`)}),a=(e,t)=>()=>(e&&(t=e(e=0)),t),o=(t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})},s=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(let c of n(a))!r.call(i,c)&&c!==o&&e(i,c,{get:()=>a[c],enumerable:!(s=t(a,c))||s.enumerable});return i},c=t=>s(e({},`__esModule`,{value:!0}),t),l,u,d,f,p,m=a(()=>{"use strict";l=new Map,u=[],d=(e,t,n)=>{if(t&&typeof t.init==`function`&&typeof t.createInferenceSessionHandler==`function`){let r=l.get(e);if(r===void 0)l.set(e,{backend:t,priority:n});else{if(r.priority>n)return;if(r.priority===n&&r.backend!==t)throw Error(`cannot register backend "${e}" using priority ${n}`)}if(n>=0){let t=u.indexOf(e);t!==-1&&u.splice(t,1);for(let t=0;t<u.length;t++)if(l.get(u[t]).priority<=n){u.splice(t,0,e);return}u.push(e)}return}throw TypeError(`not a valid backend`)},f=async e=>{let t=l.get(e);if(!t)return`backend not found.`;if(t.initialized)return t.backend;if(t.aborted)return t.error;{let n=!!t.initPromise;try{return n||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(e){return n||(t.error=`${e}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},p=async e=>{let t=e.executionProviders||[],n=t.map(e=>typeof e==`string`?e:e.name),r=n.length===0?u:n,i,a=[],o=new Set;for(let e of r){let t=await f(e);typeof t==`string`?a.push({name:e,err:t}):(i||=t,i===t&&o.add(e))}if(!i)throw Error(`no available backend found. ERR: ${a.map(e=>`[${e.name}] ${e.err}`).join(`, `)}`);for(let{name:e,err:t}of a)n.includes(e)&&console.warn(`removing requested execution provider "${e}" from session options because it is not available: ${t}`);let s=t.filter(e=>o.has(typeof e==`string`?e:e.name));return[i,new Proxy(e,{get:(e,t)=>t===`executionProviders`?s:Reflect.get(e,t)})]}}),h=a(()=>{"use strict";m()}),g,_=a(()=>{"use strict";g=`1.27.0`}),v,y,b=a(()=>{"use strict";_(),v=`warning`,y={wasm:{},webgl:{},webgpu:{},versions:{common:g},set logLevel(e){if(e!==void 0){if(typeof e!=`string`||[`verbose`,`info`,`warning`,`error`,`fatal`].indexOf(e)===-1)throw Error(`Unsupported logging level: ${e}`);v=e}},get logLevel(){return v}},Object.defineProperty(y,"logLevel",{enumerable:!0})}),x,S=a(()=>{"use strict";b(),x=y}),C,w,T=a(()=>{"use strict";C=(e,t)=>{let n=typeof document<`u`?document.createElement(`canvas`):new OffscreenCanvas(1,1);n.width=e.dims[3],n.height=e.dims[2];let r=n.getContext(`2d`);if(r!=null){let i,a;t?.tensorLayout!==void 0&&t.tensorLayout===`NHWC`?(i=e.dims[2],a=e.dims[3]):(i=e.dims[3],a=e.dims[2]);let o=t?.format===void 0?`RGB`:t.format,s=t?.norm,c,l;s===void 0||s.mean===void 0?c=[255,255,255,255]:typeof s.mean==`number`?c=[s.mean,s.mean,s.mean,s.mean]:(c=[s.mean[0],s.mean[1],s.mean[2],0],s.mean[3]!==void 0&&(c[3]=s.mean[3])),s===void 0||s.bias===void 0?l=[0,0,0,0]:typeof s.bias==`number`?l=[s.bias,s.bias,s.bias,s.bias]:(l=[s.bias[0],s.bias[1],s.bias[2],0],s.bias[3]!==void 0&&(l[3]=s.bias[3]));let u=a*i,d=0,f=u,p=u*2,m=-1;o===`RGBA`?(d=0,f=u,p=u*2,m=u*3):o===`RGB`?(d=0,f=u,p=u*2):o===`RBG`&&(d=0,p=u,f=u*2);for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=(e.data[d++]-l[0])*c[0],a=(e.data[f++]-l[1])*c[1],o=(e.data[p++]-l[2])*c[2],s=m===-1?255:(e.data[m++]-l[3])*c[3];r.fillStyle=`rgba(`+i+`,`+a+`,`+o+`,`+s+`)`,r.fillRect(n,t,1,1)}if(`toDataURL`in n)return n.toDataURL();throw Error(`toDataURL is not supported`)}else throw Error(`Can not access image data`)},w=(e,t)=>{let n=typeof document<`u`?document.createElement(`canvas`).getContext(`2d`):new OffscreenCanvas(1,1).getContext(`2d`),r;if(n!=null){let i,a,o;t?.tensorLayout!==void 0&&t.tensorLayout===`NHWC`?(i=e.dims[2],a=e.dims[1],o=e.dims[3]):(i=e.dims[3],a=e.dims[2],o=e.dims[1]);let s=t!==void 0&&t.format!==void 0?t.format:`RGB`,c=t?.norm,l,u;c===void 0||c.mean===void 0?l=[255,255,255,255]:typeof c.mean==`number`?l=[c.mean,c.mean,c.mean,c.mean]:(l=[c.mean[0],c.mean[1],c.mean[2],255],c.mean[3]!==void 0&&(l[3]=c.mean[3])),c===void 0||c.bias===void 0?u=[0,0,0,0]:typeof c.bias==`number`?u=[c.bias,c.bias,c.bias,c.bias]:(u=[c.bias[0],c.bias[1],c.bias[2],0],c.bias[3]!==void 0&&(u[3]=c.bias[3]));let d=a*i;if(t!==void 0&&(t.format!==void 0&&o===4&&t.format!==`RGBA`||o===3&&t.format!==`RGB`&&t.format!==`BGR`))throw Error(`Tensor format doesn't match input tensor dims`);let f=0,p=1,m=2,h=3,g=0,_=d,v=d*2,y=-1;s===`RGBA`?(g=0,_=d,v=d*2,y=d*3):s===`RGB`?(g=0,_=d,v=d*2):s===`RBG`&&(g=0,v=d,_=d*2),r=n.createImageData(i,a);for(let t=0;t<a*i;f+=4,p+=4,m+=4,h+=4,t++)r.data[f]=(e.data[g++]-u[0])*l[0],r.data[p]=(e.data[_++]-u[1])*l[1],r.data[m]=(e.data[v++]-u[2])*l[2],r.data[h]=y===-1?255:(e.data[y++]-u[3])*l[3]}else throw Error(`Can not access image data`);return r}}),E,D,O,k,A,j,M=a(()=>{"use strict";ee(),E=(e,t)=>{if(e===void 0)throw Error(`Image buffer must be defined`);if(t.height===void 0||t.width===void 0)throw Error(`Image height and width must be defined`);if(t.tensorLayout===`NHWC`)throw Error(`NHWC Tensor layout is not supported yet`);let{height:n,width:r}=t,i=t.norm??{mean:255,bias:0},a,o;a=typeof i.mean==`number`?[i.mean,i.mean,i.mean,i.mean]:[i.mean[0],i.mean[1],i.mean[2],i.mean[3]??255],o=typeof i.bias==`number`?[i.bias,i.bias,i.bias,i.bias]:[i.bias[0],i.bias[1],i.bias[2],i.bias[3]??0];let s=t.format===void 0?`RGBA`:t.format,c=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:`RGB`,l=n*r,u=c===`RGBA`?new Float32Array(l*4):new Float32Array(l*3),d=4,f=0,p=1,m=2,h=3,g=0,_=l,v=l*2,y=-1;s===`RGB`&&(d=3,f=0,p=1,m=2,h=-1),c===`RGBA`?y=l*3:c===`RBG`?(g=0,v=l,_=l*2):c===`BGR`&&(v=0,_=l,g=l*2);for(let t=0;t<l;t++,f+=d,m+=d,p+=d,h+=d)u[g++]=(e[f]+o[0])/a[0],u[_++]=(e[p]+o[1])/a[1],u[v++]=(e[m]+o[2])/a[2],y!==-1&&h!==-1&&(u[y++]=(e[h]+o[3])/a[3]);return c===`RGBA`?new V(`float32`,u,[1,4,n,r]):new V(`float32`,u,[1,3,n,r])},D=async(e,t)=>{let n=typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement,r=typeof ImageData<`u`&&e instanceof ImageData,i=typeof ImageBitmap<`u`&&e instanceof ImageBitmap,a=typeof e==`string`,o,s=t??{},c=()=>{if(typeof document<`u`)return document.createElement(`canvas`);if(typeof OffscreenCanvas<`u`)return new OffscreenCanvas(1,1);throw Error(`Canvas is not supported`)},l=e=>typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas?e.getContext(`2d`):null;if(n){let n=c();n.width=e.width,n.height=e.height;let r=l(n);if(r!=null){let n=e.height,i=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(n=t.resizedHeight,i=t.resizedWidth),t!==void 0){if(s=t,t.tensorFormat!==void 0)throw Error(`Image input config format must be RGBA for HTMLImageElement`);s.tensorFormat=`RGBA`,s.height=n,s.width=i}else s.tensorFormat=`RGBA`,s.height=n,s.width=i;r.drawImage(e,0,0),o=r.getImageData(0,0,i,n).data}else throw Error(`Can not access image data`)}else if(r){let n,r;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(n=t.resizedHeight,r=t.resizedWidth):(n=e.height,r=e.width),t!==void 0&&(s=t),s.format=`RGBA`,s.height=n,s.width=r,t!==void 0){let t=c();t.width=r,t.height=n;let i=l(t);if(i!=null)i.putImageData(e,0,0),o=i.getImageData(0,0,r,n).data;else throw Error(`Can not access image data`)}else o=e.data}else if(i){if(t===void 0)throw Error(`Please provide image config with format for Imagebitmap`);let n=c();n.width=e.width,n.height=e.height;let r=l(n);if(r!=null){let t=e.height,n=e.width;return r.drawImage(e,0,0,n,t),o=r.getImageData(0,0,n,t).data,s.height=t,s.width=n,E(o,s)}else throw Error(`Can not access image data`)}else{if(a)return new Promise((t,n)=>{let r=c(),i=l(r);if(!e||!i)return n();let a=new Image;a.crossOrigin=`Anonymous`,a.src=e,a.onload=()=>{r.width=a.width,r.height=a.height,i.drawImage(a,0,0,r.width,r.height);let e=i.getImageData(0,0,r.width,r.height);s.height=r.height,s.width=r.width,t(E(e.data,s))}});throw Error(`Input data provided is not supported - aborted tensor creation`)}if(o!==void 0)return E(o,s);throw Error(`Input data provided is not supported - aborted tensor creation`)},O=(e,t)=>{let{width:n,height:r,download:i,dispose:a}=t;return new V({location:`texture`,type:`float32`,texture:e,dims:[1,r,n,4],download:i,dispose:a})},k=(e,t)=>{let{dataType:n,dims:r,download:i,dispose:a}=t;return new V({location:`gpu-buffer`,type:n??`float32`,gpuBuffer:e,dims:r,download:i,dispose:a})},A=(e,t)=>{let{dataType:n,dims:r,download:i,dispose:a}=t;return new V({location:`ml-tensor`,type:n??`float32`,mlTensor:e,dims:r,download:i,dispose:a})},j=(e,t,n)=>new V({location:`cpu-pinned`,type:e,data:t,dims:n??[t.length]})}),N,P,F,I,L=a(()=>{"use strict";N=new Map([[`float32`,Float32Array],[`uint8`,Uint8Array],[`int8`,Int8Array],[`uint16`,Uint16Array],[`int16`,Int16Array],[`int32`,Int32Array],[`bool`,Uint8Array],[`float64`,Float64Array],[`uint32`,Uint32Array],[`int4`,Uint8Array],[`uint4`,Uint8Array]]),P=new Map([[Float32Array,`float32`],[Uint8Array,`uint8`],[Int8Array,`int8`],[Uint16Array,`uint16`],[Int16Array,`int16`],[Int32Array,`int32`],[Float64Array,`float64`],[Uint32Array,`uint32`]]),F=!1,I=()=>{if(!F){F=!0;let e=typeof BigInt64Array<`u`&&BigInt64Array.from,t=typeof BigUint64Array<`u`&&BigUint64Array.from,n=globalThis.Float16Array,r=typeof n<`u`&&n.from;e&&(N.set(`int64`,BigInt64Array),P.set(BigInt64Array,`int64`)),t&&(N.set(`uint64`,BigUint64Array),P.set(BigUint64Array,`uint64`)),r?(N.set(`float16`,n),P.set(n,`float16`)):N.set(`float16`,Uint16Array)}}}),R,z,B=a(()=>{"use strict";ee(),R=e=>{let t=1;for(let n=0;n<e.length;n++){let r=e[n];if(typeof r!=`number`||!Number.isSafeInteger(r))throw TypeError(`dims[${n}] must be an integer, got: ${r}`);if(r<0)throw RangeError(`dims[${n}] must be a non-negative integer, got: ${r}`);t*=r}return t},z=(e,t)=>{switch(e.location){case`cpu`:return new V(e.type,e.data,t);case`cpu-pinned`:return new V({location:`cpu-pinned`,data:e.data,type:e.type,dims:t});case`texture`:return new V({location:`texture`,texture:e.texture,type:e.type,dims:t});case`gpu-buffer`:return new V({location:`gpu-buffer`,gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case`ml-tensor`:return new V({location:`ml-tensor`,mlTensor:e.mlTensor,type:e.type,dims:t});default:throw Error(`tensorReshape: tensor location ${e.location} is not supported`)}}}),V,ee=a(()=>{"use strict";T(),M(),L(),B(),V=class{constructor(e,t,n){I();let r,i;if(typeof e==`object`&&`location`in e)switch(this.dataLocation=e.location,r=e.type,i=e.dims,e.location){case`cpu-pinned`:{let t=N.get(r);if(!t)throw TypeError(`unsupported type "${r}" to create tensor from pinned buffer`);if(!(e.data instanceof t))throw TypeError(`buffer should be of type ${t.name}`);this.cpuData=e.data;break}case`texture`:if(r!==`float32`)throw TypeError(`unsupported type "${r}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break;case`gpu-buffer`:if(r!==`float32`&&r!==`float16`&&r!==`int32`&&r!==`int64`&&r!==`uint32`&&r!==`uint8`&&r!==`bool`&&r!==`uint4`&&r!==`int4`)throw TypeError(`unsupported type "${r}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break;case`ml-tensor`:if(r!==`float32`&&r!==`float16`&&r!==`int32`&&r!==`int64`&&r!==`uint32`&&r!==`uint64`&&r!==`int8`&&r!==`uint8`&&r!==`bool`&&r!==`uint4`&&r!==`int4`)throw TypeError(`unsupported type "${r}" to create tensor from MLTensor`);this.mlTensorData=e.mlTensor,this.downloader=e.download,this.disposer=e.dispose;break;default:throw Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let a,o;if(typeof e==`string`)if(r=e,o=n,e===`string`){if(!Array.isArray(t))throw TypeError(`A string tensor's data must be a string array.`);a=t}else{let n=N.get(e);if(n===void 0)throw TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if(e===`float16`&&n===Uint16Array||e===`uint4`||e===`int4`)throw TypeError(`Creating a ${e} tensor from number array is not supported. Please use ${n.name} as data.`);a=e===`uint64`||e===`int64`?n.from(t,BigInt):n.from(t)}else if(t instanceof n)a=t;else if(t instanceof Uint8ClampedArray)if(e===`uint8`)a=Uint8Array.from(t);else throw TypeError(`A Uint8ClampedArray tensor's data must be type of uint8`);else if(e===`float16`&&t instanceof Uint16Array&&n!==Uint16Array)a=new globalThis.Float16Array(t.buffer,t.byteOffset,t.length);else throw TypeError(`A ${r} tensor's data must be type of ${n}`)}else if(o=t,Array.isArray(e)){if(e.length===0)throw TypeError(`Tensor type cannot be inferred from an empty array.`);let t=typeof e[0];if(t===`string`)r=`string`,a=e;else if(t===`boolean`)r=`bool`,a=Uint8Array.from(e);else throw TypeError(`Invalid element type of data array: ${t}.`)}else if(e instanceof Uint8ClampedArray)r=`uint8`,a=Uint8Array.from(e);else{let t=P.get(e.constructor);if(t===void 0)throw TypeError(`Unsupported type for tensor data: ${e.constructor}.`);r=t,a=e}if(o===void 0)o=[a.length];else if(!Array.isArray(o))throw TypeError(`A tensor's dims must be a number array`);i=o,this.cpuData=a,this.dataLocation=`cpu`}let a=R(i);if(this.cpuData&&a!==this.cpuData.length&&!((r===`uint4`||r===`int4`)&&Math.ceil(a/2)===this.cpuData.length))throw Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=i,this.size=a}static async fromImage(e,t){return D(e,t)}static fromTexture(e,t){return O(e,t)}static fromGpuBuffer(e,t){return k(e,t)}static fromMLTensor(e,t){return A(e,t)}static fromPinnedBuffer(e,t,n){return j(e,t,n)}toDataURL(e){return C(this,e)}toImageData(e){return w(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw Error(`The data is not stored as a WebGL texture.`);return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw Error(`The data is not stored as a WebGPU buffer.`);return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw Error(`The data is not stored as a WebNN MLTensor.`);return this.mlTensorData}async getData(e){switch(this.ensureValid(),this.dataLocation){case`cpu`:case`cpu-pinned`:return this.data;case`texture`:case`gpu-buffer`:case`ml-tensor`:if(!this.downloader)throw Error(`The current tensor is not created with a specified data downloader.`);if(this.isDownloading)throw Error(`The current tensor is being downloaded.`);try{this.isDownloading=!0;let t=await this.downloader();return this.downloader=void 0,this.dataLocation=`cpu`,this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}finally{this.isDownloading=!1}default:throw Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw Error(`The current tensor is being downloaded.`);this.disposer&&=(this.disposer(),void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation=`none`}ensureValid(){if(this.dataLocation===`none`)throw Error(`The tensor is disposed.`)}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw Error(`Cannot reshape a tensor that owns GPU resource.`);return z(this,e)}}}),te,ne=a(()=>{"use strict";ee(),te=V}),re,ie,ae,H,U,oe,se=a(()=>{"use strict";b(),re=(e,t)=>{(typeof y.trace>`u`?!y.wasm.trace:!y.trace)||console.timeStamp(`${e}::ORT::${t}`)},ie=(e,t)=>{let n=Error().stack?.split(/\r\n|\r|\n/g)||[],r=!1;for(let i=0;i<n.length;i++){if(r&&!n[i].includes(`TRACE_FUNC`)){let r=`FUNC_${e}::${n[i].trim().split(` `)[1]}`;t&&(r+=`::${t}`),re(`CPU`,r);return}n[i].includes(`TRACE_FUNC`)&&(r=!0)}},ae=e=>{(typeof y.trace>`u`?!y.wasm.trace:!y.trace)||ie(`BEGIN`,e)},H=e=>{(typeof y.trace>`u`?!y.wasm.trace:!y.trace)||ie(`END`,e)},U=e=>{(typeof y.trace>`u`?!y.wasm.trace:!y.trace)||console.time(`ORT::${e}`)},oe=e=>{(typeof y.trace>`u`?!y.wasm.trace:!y.trace)||console.timeEnd(`ORT::${e}`)}}),ce,le=a(()=>{"use strict";m(),ne(),se(),ce=class e{constructor(e){this.handler=e}async run(e,t,n){ae(),U(`InferenceSession.run`);let r={},i={};if(typeof e!=`object`||!e||e instanceof te||Array.isArray(e))throw TypeError(`'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.`);let a=!0;if(typeof t==`object`){if(t===null)throw TypeError(`Unexpected argument[1]: cannot be null.`);if(t instanceof te)throw TypeError(`'fetches' cannot be a Tensor`);if(Array.isArray(t)){if(t.length===0)throw TypeError(`'fetches' cannot be an empty array.`);a=!1;for(let e of t){if(typeof e!=`string`)throw TypeError(`'fetches' must be a string array or an object.`);if(this.outputNames.indexOf(e)===-1)throw RangeError(`'fetches' contains invalid output name: ${e}.`);r[e]=null}if(typeof n==`object`&&n)i=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else{let e=!1,o=Object.getOwnPropertyNames(t);for(let n of this.outputNames)if(o.indexOf(n)!==-1){let i=t[n];(i===null||i instanceof te)&&(e=!0,a=!1,r[n]=i)}if(e){if(typeof n==`object`&&n)i=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else i=t}}else if(typeof t<`u`)throw TypeError(`Unexpected argument[1]: must be 'fetches' or 'options'.`);for(let t of this.inputNames)if(typeof e[t]>`u`)throw Error(`input '${t}' is missing in 'feeds'.`);if(a)for(let e of this.outputNames)r[e]=null;let o=await this.handler.run(e,r,i),s={};for(let e in o)if(Object.hasOwnProperty.call(o,e)){let t=o[e];t instanceof te?s[e]=t:s[e]=new te(t.type,t.data,t.dims)}return oe(`InferenceSession.run`),H(),s}async release(){return this.handler.dispose()}static async create(t,n,r,i){ae(),U(`InferenceSession.create`);let a,o={};if(typeof t==`string`){if(a=t,typeof n==`object`&&n)o=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else if(t instanceof Uint8Array){if(a=t,typeof n==`object`&&n)o=n;else if(typeof n<`u`)throw TypeError(`'options' must be an object.`)}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&t instanceof SharedArrayBuffer){let e=t,s=0,c=t.byteLength;if(typeof n==`object`&&n)o=n;else if(typeof n==`number`){if(s=n,!Number.isSafeInteger(s))throw RangeError(`'byteOffset' must be an integer.`);if(s<0||s>=e.byteLength)throw RangeError(`'byteOffset' is out of range [0, ${e.byteLength}).`);if(c=t.byteLength-s,typeof r==`number`){if(c=r,!Number.isSafeInteger(c))throw RangeError(`'byteLength' must be an integer.`);if(c<=0||s+c>e.byteLength)throw RangeError(`'byteLength' is out of range (0, ${e.byteLength-s}].`);if(typeof i==`object`&&i)o=i;else if(typeof i<`u`)throw TypeError(`'options' must be an object.`)}else if(typeof r<`u`)throw TypeError(`'byteLength' must be a number.`)}else if(typeof n<`u`)throw TypeError(`'options' must be an object.`);a=new Uint8Array(e,s,c)}else throw TypeError(`Unexpected argument[0]: must be 'path' or 'buffer'.`);let[s,c]=await p(o),l=await s.createInferenceSessionHandler(a,c);return oe(`InferenceSession.create`),H(),new e(l)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),ue,de=a(()=>{"use strict";le(),ue=ce}),fe=a(()=>{"use strict";}),pe=a(()=>{"use strict";}),me=a(()=>{"use strict";}),he=a(()=>{"use strict";});o({},{InferenceSession:()=>ue,TRACE:()=>re,TRACE_EVENT_BEGIN:()=>U,TRACE_EVENT_END:()=>oe,TRACE_FUNC_BEGIN:()=>ae,TRACE_FUNC_END:()=>H,Tensor:()=>te,env:()=>x,registerBackend:()=>d});var ge=a(()=>{"use strict";h(),S(),de(),ne(),fe(),pe(),se(),me(),he()}),_e=a(()=>{"use strict";}),ve={};o(ve,{default:()=>W});var ye,be,W,xe=a(()=>{"use strict";on(),Xe(),Ve(),ye=`ort-wasm-proxy-worker`,be=globalThis.self?.name===ye,be&&(self.onmessage=e=>{let{type:t,in:n}=e.data;try{switch(t){case`init-wasm`:Ye(n.wasm).then(()=>{qt(n).then(()=>{postMessage({type:t})},e=>{postMessage({type:t,err:e})})},e=>{postMessage({type:t,err:e})});break;case`init-ep`:{let{epName:e,env:r}=n;Jt(r,e).then(()=>{postMessage({type:t})},e=>{postMessage({type:t,err:e})});break}case`copy-from`:{let{buffer:e}=n,r=Qt(e);postMessage({type:t,out:r});break}case`create`:{let{model:e,options:r}=n;$t(e,r).then(e=>{postMessage({type:t,out:e})},e=>{postMessage({type:t,err:e})});break}case`release`:en(n),postMessage({type:t});break;case`run`:{let{sessionId:e,inputIndices:r,inputs:i,outputIndices:a,options:o}=n;nn(e,r,i,a,Array(a.length).fill(null),o).then(e=>{e.some(e=>e[3]!==`cpu`)?postMessage({type:t,err:`Proxy does not support non-cpu tensor location.`}):postMessage({type:t,out:e},an([...i,...e]))},e=>{postMessage({type:t,err:e})});break}case`end-profiling`:rn(n),postMessage({type:t});break;default:}}catch(e){postMessage({type:t,err:e})}}),W=be?null:e=>new Worker(e??Ae,{type:`module`,name:ye})}),Se={};o(Se,{default:()=>we});async function Ce(e={}){var t=e,n=!!globalThis.window,r=!!globalThis.WorkerGlobalScope,i=r&&self.name?.startsWith(`em-pthread`);t.mountExternalData=(e,n)=>{e.startsWith(`./`)&&(e=e.substring(2)),(t.Vc||=new Map).set(e,n)},t.unmountExternalData=()=>{delete t.Vc},globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,shared:!0}).buffer.constructor;let a=()=>{let e=e=>(...t)=>{let n=Wt;return t=e(...t),Wt==n?t:new Promise((e,t)=>{Zt={resolve:e,reject:t}})};(()=>{for(let n of[`_OrtAppendExecutionProvider`,`_OrtCreateSession`,`_OrtRun`,`_OrtRunWithBinding`,`_OrtBindInput`])t[n]=e(t[n])})(),typeof jsepRunAsync<`u`&&(t._OrtRun=jsepRunAsync(t._OrtRun),t._OrtRunWithBinding=jsepRunAsync(t._OrtRunWithBinding)),a=void 0};t.asyncInit=()=>{a?.()};var o,s,c=(e,t)=>{throw t},l=self.location.href,u=``;if(n||r){try{u=new URL(`.`,l).href}catch{}r&&(s=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),o=async e=>{if(S(e))return new Promise((t,n)=>{var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{r.status==200||r.status==0&&r.response?t(r.response):n(r.status)},r.onerror=n,r.send(null)});var t=await fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)}}var d,f,p,m,h,g,_=console.log.bind(console),v=console.error.bind(console),y=_,b=v,x=!1,S=e=>e.startsWith(`file://`);function C(){_e.buffer!=T.buffer&&L()}if(i){let e=function(n){try{var r=n.data,i=r.Pc;if(i===`load`){let n=[];self.onmessage=e=>n.push(e),g=()=>{postMessage({Pc:`loaded`});for(let t of n)e(t);self.onmessage=e};for(let e of r.ee)t[e]&&!t[e].proxy||(t[e]=(...t)=>{postMessage({Pc:`callHandler`,de:e,args:t})},e==`print`&&(y=t[e]),e==`printErr`&&(b=t[e]));_e=r.ke,L(),f=r.le,V(),Co()}else if(i===`run`){(function(e){var t=(C(),A)[e+52>>>2>>>0];e=(C(),A)[e+56>>>2>>>0],Ui(t,t-e),Q(t)})(r.Oc),Pi(r.Oc,0,0,1,0,0),me(),Nt(r.Oc),w||=(di(),!0);try{ve(r.ie,r.Xc)}catch(e){if(e!=`unwind`)throw e}}else r.target!==`setimmediate`&&(i===`checkMailbox`?w&&Pt():i&&(b(`worker: received unknown command ${i}`),b(r)))}catch(e){throw Fi(),e}};var w=!1;self.onunhandledrejection=e=>{throw e.reason||e},self.onmessage=e}var T,E,D,O,k,A,j,M,N,P,F,I=!1;function L(){var e=_e.buffer;t.HEAP8=T=new Int8Array(e),D=new Int16Array(e),t.HEAPU8=E=new Uint8Array(e),O=new Uint16Array(e),t.HEAP32=k=new Int32Array(e),t.HEAPU32=A=new Uint32Array(e),j=new Float32Array(e),M=new Float64Array(e),N=new BigInt64Array(e),P=new BigUint64Array(e)}function R(){I=!0,i?g():Ia.$b()}function z(e){throw b(e=`Aborted(`+e+`)`),x=!0,e=new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`),h?.(e),e}function B(){return{a:{f:xe,J:Ce,k:Oe,p:ke,l:Ae,sa:je,b:Me,ca:Ne,Ja:Fe,q:Ie,da:Ve,Za:He,Fa:Ue,Ha:We,_a:Ge,Xa:Ke,Qa:qe,Wa:Je,oa:Ye,Ga:G,Yb:Xe,Ya:Ze,Zb:Qe,db:K,Da:ot,Tb:st,Rb:mt,Ca:gt,M:_t,I:vt,Sb:xt,ja:kt,Ub:At,Ta:jt,Wb:Ft,Ka:Lt,Pb:Rt,ka:zt,Sa:Nt,ab:Bt,U:en,n:cn,c:ut,rb:ln,w:un,L:dn,z:fn,j:pn,o:mn,sb:hn,G:gn,T:_n,h:vn,u:yn,m:bn,i:xn,Na:Sn,Oa:En,Pa:Dn,La:On,Ma:kn,Qb:Mn,eb:Nn,cb:In,Y:zn,qb:Bn,la:Vn,bb:Pn,fb:Hn,$a:Un,Xb:Wn,N:jn,gb:Gn,X:Kn,Vb:qn,nb:pr,C:mr,ra:hr,qa:gr,pb:_r,W:vr,v:yr,mb:br,lb:xr,kb:Sr,ob:Cr,jb:wr,ib:Tr,hb:Er,Ua:Ar,Va:jr,Ia:ce,V:Mr,na:Nr,Ra:Pr,ma:Ir,Cb:xo,xa:ho,Db:bo,ya:mo,F:no,e:Ha,s:Ba,x:za,B:Qa,Fb:uo,ba:lo,D:Ga,za:fo,$:go,ga:co,Gb:so,Hb:oo,Ba:ro,Aa:ao,Ib:io,wa:yo,aa:po,d:Va,A:Wa,r:Ua,Bb:So,t:qa,y:eo,H:Ka,E:Ja,K:to,R:_o,ia:Za,_:vo,Kb:Xa,Lb:Ya,Jb:$a,g:Lr,a:_e,Ob:oe,Eb:Rr,ha:zr,O:Br,pa:Vr,Mb:Hr,ta:Ur,Q:Wr,yb:Gr,zb:Kr,ua:qr,ea:Jr,P:Yr,Ea:Xr,va:Zr,Z:Qr,wb:$r,_b:ei,S:ti,Ab:ni,tb:ri,ub:ai,vb:oi,fa:si,xb:ci,Nb:li}}}async function V(){function e(e,n){var r=Ia=e.exports;e={};for(let[t,n]of Object.entries(r))typeof n==`function`?(r=Ht(n),e[t]=r):e[t]=n;return Ia=e,Ia=(function(){var e=Ia,t=e=>t=>e(t)>>>0,n=e=>()=>e()>>>0;return(e=Object.assign({},e)).ac=t(e.ac),e.Dc=n(e.Dc),e.Fc=t(e.Fc),e.sd=(e=>(t,n)=>e(t,n)>>>0)(e.sd),e.xd=t(e.xd),e.yd=n(e.yd),e.Cd=t(e.Cd),e})(),de.push(Ia.jd),ui=(e=Ia).ac,di=e.bc,t._OrtInit=e.cc,t._OrtGetLastError=e.dc,t._OrtCreateSessionOptions=e.ec,t._OrtAppendExecutionProvider=e.fc,t._OrtAddFreeDimensionOverride=e.gc,t._OrtAddSessionConfigEntry=e.hc,t._OrtReleaseSessionOptions=e.ic,t._OrtCreateSession=e.jc,t._OrtReleaseSession=e.kc,t._OrtGetInputOutputCount=e.lc,t._OrtGetInputOutputMetadata=e.mc,t._OrtFree=e.nc,t._OrtCreateTensor=e.oc,t._OrtGetTensorData=e.pc,t._OrtReleaseTensor=e.qc,t._OrtCreateRunOptions=e.rc,t._OrtAddRunConfigEntry=e.sc,t._OrtReleaseRunOptions=e.tc,t._OrtCreateBinding=e.uc,t._OrtBindInput=e.vc,t._OrtBindOutput=e.wc,t._OrtClearBoundOutputs=e.xc,t._OrtReleaseBinding=e.yc,t._OrtRunWithBinding=e.zc,t._OrtRun=e.Ac,t._OrtEndProfiling=e.Bc,fi=t._OrtGetWebGpuDevice=e.Cc,pi=e.Dc,mi=t._free=e.Ec,hi=t._malloc=e.Fc,gi=t._wgpuBufferRelease=e.Gc,_i=t._wgpuCreateInstance=e.Hc,vi=e.Ic,yi=e.Jc,bi=e.Kc,xi=e.Lc,Si=e.Mc,Ci=e.Qc,wi=e._c,Ti=e.$c,Ei=e.ad,Di=e.cd,Oi=e.dd,ki=e.ed,Ai=e.fd,ji=e.gd,Mi=e.hd,Ni=e.id,Pi=e.ld,Fi=e.md,Ii=e.nd,Li=e.od,Ri=e.pd,zi=e.qd,Bi=e.rd,Vi=e.sd,Z=e.td,Hi=e.ud,Ui=e.vd,Q=e.wd,Wi=e.xd,$=e.yd,Gi=e.zd,Ki=e.Ad,qi=e.Bd,Ji=e.Cd,Yi=e.Dd,Xi=e.Ed,Zi=e.Fd,Qi=e.Gd,$i=e.Hd,ea=e.Id,ta=e.Jd,na=e.Kd,ra=e.Ld,ia=e.Md,aa=e.Nd,oa=e.Od,sa=e.Pd,ca=e.Qd,la=e.Rd,ua=e.Sd,da=e.Ud,fa=e.Vd,pa=e.Wd,ma=e.Xd,ha=e.Zd,ga=e._d,_a=e.$d,va=e.ae,ya=e.be,ba=e.ce,xa=e.qe,Sa=e.re,Ca=e.se,wa=e.te,Ta=e.ue,Ea=e.ve,Da=e.we,Oa=e.xe,ka=e.ye,Aa=e.ze,ja=e.Ae,Ma=e.$e,Na=e.af,Pa=e.bf,Fa=e.cf,f=n,Ia}var n,r=B();return t.instantiateWasm?new Promise(n=>{t.instantiateWasm(r,(t,r)=>{n(e(t,r))})}):i?e(new WebAssembly.Instance(f,B()),f):(F??=t.locateFile?t.locateFile?t.locateFile(`ort-wasm-simd-threaded.asyncify.wasm`,u):u+`ort-wasm-simd-threaded.asyncify.wasm`:new URL(`/assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm`,``+self.location.href).href,n=await(async function(e){var t=F;if(!d&&!S(t))try{var n=fetch(t,{credentials:`same-origin`});return await WebAssembly.instantiateStreaming(n,e)}catch(e){b(`wasm streaming compile failed: ${e}`),b(`falling back to ArrayBuffer instantiation`)}return(async function(e,t){try{var n=await(async function(e){if(!d)try{var t=await o(e);return new Uint8Array(t)}catch{}if(e==F&&d)e=new Uint8Array(d);else{if(!s)throw`both async and sync fetching of the wasm failed`;e=s(e)}return e})(e);return await WebAssembly.instantiate(n,t)}catch(e){b(`failed to asynchronously prepare wasm: ${e}`),z(e)}})(t,e)})(r),e(n.instance,n.module))}class ee{name=`ExitStatus`;constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var te=e=>{e.terminate(),e.onmessage=()=>{}},ne=[],re=0,ie=null,ae=e=>{le.length==0&&(ge(),he(le[0]));var t=le.pop();if(!t)return 6;ue.push(t),fe[e.Oc]=t,t.Oc=e.Oc;var n={Pc:`run`,ie:e.he,Xc:e.Xc,Oc:e.Oc};return t.postMessage(n,e.Zc),0},H=0,U=(e,t,...n)=>{var r,i=16*n.length,a=$(),o=Wi(i),s=o>>>3;for(r of n)typeof r==`bigint`?((C(),N)[s++>>>0]=1n,(C(),N)[s++>>>0]=r):((C(),N)[s++>>>0]=0n,(C(),M)[s++>>>0]=r);return e=Ii(e,0,i,o,t),Q(a),e};function oe(e){if(i)return U(0,1,e);if(p=e,!(0<H)){for(var t of ue)te(t);for(t of le)te(t);le=[],ue=[],fe={},x=!0}c(0,new ee(e))}function se(e){if(i)return U(1,0,e);ce(e)}var ce=e=>{if(p=e,i)throw se(e),`unwind`;oe(e)},le=[],ue=[],de=[],fe={},pe=e=>{var t=e.Oc;delete fe[t],le.push(e),ue.splice(ue.indexOf(e),1),e.Oc=0,Li(t)};function me(){de.forEach(e=>e())}var he=e=>new Promise(n=>{e.onmessage=r=>{var i=r.data;if(r=i.Pc,i.Wc&&i.Wc!=pi()){var a=fe[i.Wc];a?a.postMessage(i,i.Zc):b(`Internal error! Worker sent a message "${r}" to target pthread ${i.Wc}, but that thread no longer exists!`)}else r===`checkMailbox`?Pt():r===`spawnThread`?ae(i):r===`cleanupThread`?J(()=>{pe(fe[i.je])}):r===`loaded`?(e.loaded=!0,n(e)):i.target===`setimmediate`?e.postMessage(i):r===`uncaughtException`?e.onerror(i.error):r===`callHandler`?t[i.de](...i.args):r&&b(`worker sent an unknown command ${r}`)},e.onerror=e=>{throw b(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e};var r,i=[];for(r of[])t.propertyIsEnumerable(r)&&i.push(r);e.postMessage({Pc:`load`,ee:i,ke:_e,le:f})});function ge(){var e=new Worker((()=>{let e=URL;return self.location.href>`file:`&&self.location.href<`file;`?new e(`ort.webgpu.bundle.min.mjs`,self.location.href):new URL(self.location.href)})(),{type:`module`,workerData:`em-pthread`,name:`em-pthread`});le.push(e)}var _e,ve=(e,t)=>{H=0,e=Xi(e,t),0<H?p=e:Ri(e)},ye=[],be=0,W=e=>-9007199254740992>e||9007199254740992<e?NaN:Number(e);function xe(e){var t=new Ee(e>>>=0);return(C(),T)[t.Rc+12>>>0]==0&&(we(t,!0),be--),Te(t,!1),ye.push(t),Ji(e)}var Se=0,Ce=()=>{Z(0,0);var e=ye.pop();Gi(e.Yc),Se=0};function we(e,t){t=+!!t,(C(),T)[e.Rc+12>>>0]=t}function Te(e,t){t=+!!t,(C(),T)[e.Rc+13>>>0]=t}class Ee{constructor(e){this.Yc=e,this.Rc=e-24}}var De=e=>{var t=Se;if(!t)return Hi(0),0;var n=new Ee(t);(C(),A)[n.Rc+16>>>2>>>0]=t;var r=(C(),A)[n.Rc+4>>>2>>>0];if(!r)return Hi(0),t;for(var i of e){if(i===0||i===r)break;if(qi(i,r,n.Rc+16))return Hi(i),t}return Hi(r),t};function Oe(){return De([])}function ke(e){return De([e>>>0])}function Ae(e,t,n,r){return De([e>>>0,t>>>0,n>>>0,r>>>0])}var je=()=>{var e=ye.pop();e||z(`no exception to throw`);var t=e.Yc;throw(C(),T)[e.Rc+13>>>0]==0&&(ye.push(e),Te(e,!0),we(e,!1),be++),Ki(t),Se=t};function Me(e,t,n){var r=new Ee(e>>>=0);throw t>>>=0,n>>>=0,(C(),A)[r.Rc+16>>>2>>>0]=0,(C(),A)[r.Rc+4>>>2>>>0]=t,(C(),A)[r.Rc+8>>>2>>>0]=n,Ki(e),be++,Se=e}var Ne=()=>be;function Pe(e,t,n,r){return i?U(2,1,e,t,n,r):Fe(e,t,n,r)}function Fe(e,t,n,r){if(e>>>=0,t>>>=0,n>>>=0,r>>>=0,!globalThis.SharedArrayBuffer)return 6;var a=[];return i&&a.length===0?Pe(e,t,n,r):(e={he:n,Oc:e,Xc:r,Zc:a},i?(e.Pc=`spawnThread`,postMessage(e,a),0):ae(e))}function Ie(e){throw Se||=e>>>0,Se}var Le=globalThis.TextDecoder&&new TextDecoder,Re=(e,t,n,r)=>{if(n=t+n,r)return n;for(;e[t]&&!(t>=n);)++t;return t},ze=(e,t=0,n,r)=>{if(16<(n=Re(e,t>>>=0,n,r))-t&&e.buffer&&Le)return Le.decode(e.buffer instanceof ArrayBuffer?e.subarray(t,n):e.slice(t,n));for(r=``;t<n;){var i=e[t++];if(128&i){var a=63&e[t++];if((224&i)==192)r+=String.fromCharCode((31&i)<<6|a);else{var o=63&e[t++];65536>(i=(240&i)==224?(15&i)<<12|a<<6|o:(7&i)<<18|a<<12|o<<6|63&e[t++])?r+=String.fromCharCode(i):(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|1023&i))}}else r+=String.fromCharCode(i)}return r},Be=(e,t,n)=>(e>>>=0)?ze((C(),E),e,t,n):``;function Ve(e,t,n){return i?U(3,1,e,t,n):0}function He(e,t){if(i)return U(4,1,e,t)}function Ue(e,t){if(i)return U(5,1,e,t)}function We(e,t,n){if(i)return U(6,1,e,t,n)}function Ge(e,t,n){return i?U(7,1,e,t,n):0}function Ke(e,t){if(i)return U(8,1,e,t)}function qe(e,t,n){if(i)return U(9,1,e,t,n)}function Je(e,t,n,r){if(i)return U(10,1,e,t,n,r)}function Ye(e,t,n,r){if(i)return U(11,1,e,t,n,r)}function G(e,t,n,r){if(i)return U(12,1,e,t,n,r)}function Xe(e){if(i)return U(13,1,e)}function Ze(e,t){if(i)return U(14,1,e,t)}function Qe(e,t,n){if(i)return U(15,1,e,t,n)}var K=()=>z(``),$e=e=>{e>>>=0;for(var t=``;;){var n=(C(),E)[e++>>>0];if(!n)return t;t+=String.fromCharCode(n)}},et={},tt={},nt={},rt=class extends Error{constructor(e){super(e),this.name=`BindingError`}};function it(e,t,n={}){return(function(e,t,n={}){var r=t.name;if(!e)throw new rt(`type "${r}" must have a positive integer typeid pointer`);if(tt.hasOwnProperty(e)){if(n.fe)return;throw new rt(`Cannot register type '${r}' twice`)}tt[e]=t,delete nt[e],et.hasOwnProperty(e)&&(t=et[e],delete et[e],t.forEach(e=>e()))})(e,t,n)}var at=(e,t,n)=>{switch(t){case 1:return n?e=>(C(),T)[e>>>0]:e=>(C(),E)[e>>>0];case 2:return n?e=>(C(),D)[e>>>1>>>0]:e=>(C(),O)[e>>>1>>>0];case 4:return n?e=>(C(),k)[e>>>2>>>0]:e=>(C(),A)[e>>>2>>>0];case 8:return n?e=>(C(),N)[e>>>3>>>0]:e=>(C(),P)[e>>>3>>>0];default:throw TypeError(`invalid integer width (${t}): ${e}`)}};function ot(e,t,n,r,i){e>>>=0,n>>>=0,t=$e(t>>>0);let a=e=>e;if(r=r===0n){let e=8*n;a=t=>BigInt.asUintN(e,t),i=a(i)}it(e,{name:t,Nc:a,Tc:(e,t)=>(typeof t==`number`&&(t=BigInt(t)),t),Sc:at(t,n,!r),Uc:null})}function st(e,t,n,r){it(e>>>=0,{name:t=$e(t>>>0),Nc:function(e){return!!e},Tc:function(e,t){return t?n:r},Sc:function(e){return this.Nc((C(),E)[e>>>0])},Uc:null})}var ct=[],lt=[0,1,,1,null,1,!0,1,!1,1];function ut(e){9<(e>>>=0)&&--lt[e+1]===0&&(lt[e]=void 0,ct.push(e))}var dt=e=>{if(!e)throw new rt(`Cannot use deleted val. handle = ${e}`);return lt[e]},q=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let t=ct.pop()||lt.length;return lt[t]=e,lt[t+1]=1,t}};function ft(e){return this.Nc((C(),A)[e>>>2>>>0])}var pt={name:`emscripten::val`,Nc:e=>{var t=dt(e);return ut(e),t},Tc:(e,t)=>q(t),Sc:ft,Uc:null};function mt(e){return it(e>>>0,pt)}var ht=(e,t)=>{switch(t){case 4:return function(e){return this.Nc((C(),j)[e>>>2>>>0])};case 8:return function(e){return this.Nc((C(),M)[e>>>3>>>0])};default:throw TypeError(`invalid float width (${t}): ${e}`)}};function gt(e,t,n){n>>>=0,it(e>>>=0,{name:t=$e(t>>>0),Nc:e=>e,Tc:(e,t)=>t,Sc:ht(t,n),Uc:null})}function _t(e,t,n,r,i){e>>>=0,n>>>=0,t=$e(t>>>0);let a=e=>e;if(r===0){var o=32-8*n;a=e=>e<<o>>>o,i=a(i)}it(e,{name:t,Nc:a,Tc:(e,t)=>t,Sc:at(t,n,r!==0),Uc:null})}function vt(e,t,n){function r(e){var t=(C(),A)[e>>>2>>>0];return e=(C(),A)[e+4>>>2>>>0],new i((C(),T).buffer,e,t)}var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][t];it(e>>>=0,{name:n=$e(n>>>0),Nc:r,Sc:r},{fe:!0})}var yt=(e,t,n)=>{var r=(C(),E);if(t>>>=0,0<n){var i=t;n=t+n-1;for(var a=0;a<e.length;++a){var o=e.codePointAt(a);if(127>=o){if(t>=n)break;r[t++>>>0]=o}else if(2047>=o){if(t+1>=n)break;r[t++>>>0]=192|o>>6,r[t++>>>0]=128|63&o}else if(65535>=o){if(t+2>=n)break;r[t++>>>0]=224|o>>12,r[t++>>>0]=128|o>>6&63,r[t++>>>0]=128|63&o}else{if(t+3>=n)break;r[t++>>>0]=240|o>>18,r[t++>>>0]=128|o>>12&63,r[t++>>>0]=128|o>>6&63,r[t++>>>0]=128|63&o,a++}}r[t>>>0]=0,e=t-i}else e=0;return e},bt=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);127>=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t};function xt(e,t){it(e>>>=0,{name:t=$e(t>>>0),Nc(e){var t=(C(),A)[e>>>2>>>0];return t=Be(e+4,t,!0),mi(e),t},Tc(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var n=typeof t==`string`;if(!(n||ArrayBuffer.isView(t)&&t.BYTES_PER_ELEMENT==1))throw new rt(`Cannot pass non-string to std::string`);var r=n?bt(t):t.length,i=hi(4+r+1),a=i+4;return(C(),A)[i>>>2>>>0]=r,n?yt(t,a,r+1):(C(),E).set(t,a>>>0),e!==null&&e.push(mi,i),i},Sc:ft,Uc(e){mi(e)}})}var St=globalThis.TextDecoder?new TextDecoder(`utf-16le`):void 0,Ct=(e,t,n)=>{if(e>>>=1,16<(t=Re((C(),O),e,t/2,n))-e&&St)return St.decode((C(),O).slice(e,t));for(n=``;e<t;++e){var r=(C(),O)[e>>>0];n+=String.fromCharCode(r)}return n},wt=(e,t,n)=>{if(n??=2147483647,2>n)return 0;var r=t;n=(n-=2)<2*e.length?n/2:e.length;for(var i=0;i<n;++i){var a=e.charCodeAt(i);(C(),D)[t>>>1>>>0]=a,t+=2}return(C(),D)[t>>>1>>>0]=0,t-r},Tt=e=>2*e.length,Et=(e,t,n)=>{var r=``;e>>>=2;for(var i=0;!(i>=t/4);i++){var a=(C(),A)[e+i>>>0];if(!a&&!n)break;r+=String.fromCodePoint(a)}return r},Dt=(e,t,n)=>{if(t>>>=0,n??=2147483647,4>n)return 0;var r=t;n=r+n-4;for(var i=0;i<e.length;++i){var a=e.codePointAt(i);if(65535<a&&i++,(C(),k)[t>>>2>>>0]=a,(t+=4)+4>n)break}return(C(),k)[t>>>2>>>0]=0,t-r},Ot=e=>{for(var t=0,n=0;n<e.length;++n)65535<e.codePointAt(n)&&n++,t+=4;return t};function kt(e,t,n){if(e>>>=0,t>>>=0,n=$e(n>>>=0),t===2)var r=Ct,i=wt,a=Tt;else r=Et,i=Dt,a=Ot;it(e,{name:n,Nc:e=>{var n=(C(),A)[e>>>2>>>0];return n=r(e+4,n*t,!0),mi(e),n},Tc:(e,r)=>{if(typeof r!=`string`)throw new rt(`Cannot pass non-string to C++ string type ${n}`);var o=a(r),s=hi(4+o+t);return(C(),A)[s>>>2>>>0]=o/t,i(r,s+4,o+t),e!==null&&e.push(mi,s),s},Sc:ft,Uc(e){mi(e)}})}function At(e,t){it(e>>>=0,{ge:!0,name:t=$e(t>>>0),Nc:()=>{},Tc:()=>{}})}function jt(e){Pi(e>>>0,!r,1,!n,131072,!1),me()}var J=e=>{if(!x)try{if(e(),!(0<H))try{i?pi()&&Ri(p):ce(p)}catch(e){e instanceof ee||e==`unwind`||c(0,e)}}catch(e){e instanceof ee||e==`unwind`||c(0,e)}},Mt=!Atomics.waitAsync||globalThis.navigator?.userAgent&&91>Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2]);function Nt(e){e>>>=0,Mt||(Atomics.waitAsync((C(),k),e>>>2,e).value.then(Pt),e+=128,Atomics.store((C(),k),e>>>2,1))}var Pt=()=>J(()=>{var e=pi();e&&(Nt(e),Bi())});function Ft(e,t){(e>>>=0)==t>>>0?setTimeout(Pt):i?postMessage({Wc:e,Pc:`checkMailbox`}):(e=fe[e])&&e.postMessage({Pc:`checkMailbox`})}var It=[];function Lt(e,t,n,r,i){for(t>>>=0,i>>>=0,It.length=0,n=i>>>3,r=i+r>>>3;n<r;){var a=(C(),N)[n++>>>0]?(C(),N)[n++>>>0]:(C(),M)[n++>>>0];It.push(a)}return(t?Ra[t]:La[e])(...It)}var Rt=()=>{H=0};function zt(e){e>>>=0,i?postMessage({Pc:`cleanupThread`,je:e}):pe(fe[e])}function Bt(e){}var Vt=e=>{try{e()}catch(e){z(e)}};function Ht(e){var t=(...t)=>{Kt.push(e);try{return e(...t)}finally{x||(Kt.pop(),Wt&&Ut===1&&Kt.length===0&&(Ut=0,H+=1,Vt(Na),typeof Fibers<`u`&&Fibers.De()))}};return Yt.set(e,t),t}var Ut=0,Wt=null,Gt=0,Kt=[],qt=new Map,Jt=new Map,Yt=new Map,Xt=0,Zt=null,Qt=[],$t=e=>(function(e){if(!x){if(Ut===0){var t=!1,n=!1;e((e=0)=>{if(!x&&(Gt=e,t=!0,n)){Ut=2,Vt(()=>Pa(Wt)),typeof MainLoop<`u`&&MainLoop.Yd&&MainLoop.resume(),e=!1;try{var r=(function(){var e=(C(),k)[Wt+8>>>2>>>0];return e=Jt.get(e),e=Yt.get(e),--H,e()})()}catch(t){r=t,e=!0}var i=!1;if(!Wt){var a=Zt;a&&(Zt=null,(e?a.reject:a.resolve)(r),i=!0)}if(e&&!i)throw r}}),n=!0,t||(Ut=1,Wt=(function(){var e=hi(65548),t=e+12;if((C(),A)[e>>>2>>>0]=t,(C(),A)[e+4>>>2>>>0]=t+65536,t=Kt[0],!qt.has(t)){var n=Xt++;qt.set(t,n),Jt.set(n,t)}return t=qt.get(t),(C(),k)[e+8>>>2>>>0]=t,e})(),typeof MainLoop<`u`&&MainLoop.Yd&&MainLoop.pause(),Vt(()=>Ma(Wt)))}else Ut===2?(Ut=0,Vt(Fa),mi(Wt),Wt=null,Qt.forEach(J)):z(`invalid state: ${Ut}`);return Gt}})(t=>{e().then(t)});function en(e){return e>>>=0,$t(async()=>q(await dt(e)))}var tn=[],nn=e=>{var t=tn.length;return tn.push(e),t},rn=(e,t)=>{for(var n=Array(e),r=0;r<e;++r){var i=r,a=(C(),A)[t+4*r>>>2>>>0],o=tt[a];if(o===void 0)throw e=`parameter ${r}`,a=ui(a),t=$e(a),mi(a),new rt(`${e} has unknown type ${t}`);n[i]=o}return n},an=(e,t,n)=>{var r=[];return e=e(r,n),r.length&&((C(),A)[t>>>2>>>0]=q(r)),e},on={},sn=e=>{var t=on[e];return t===void 0?$e(e):t};function cn(e,t,n){var[r,...i]=rn(e,t>>>0);t=r.Tc.bind(r);var a=i.map(e=>e.Sc.bind(e));e--;var o={toValue:dt};switch(e=a.map((e,t)=>{var n=`argFromPtr${t}`;return o[n]=e,`${n}(args${t?`+`+8*t:``})`}),n){case 0:var s=`toValue(handle)`;break;case 2:s=`new (toValue(handle))`;break;case 3:s=``;break;case 1:o.getStringOrSymbol=sn,s=`toValue(handle)[getStringOrSymbol(methodName)]`}return s+=`(${e})`,r.ge||(o.toReturnWire=t,o.emval_returnValue=an,s=`return emval_returnValue(toReturnWire, destructorsRef, ${s})`),s=`return function (handle, methodName, destructorsRef, args) {
${s}
}`,n=Function(Object.keys(o),s)(...Object.values(o)),s=`methodCaller<(${i.map(e=>e.name)}) => ${r.name}>`,nn(Object.defineProperty(n,"name",{value:s}))}function ln(e,t){return t>>>=0,(e=dt(e>>>0))==dt(t)}function un(e){return(e>>>=0)?(e=sn(e),q(globalThis[e])):q(globalThis)}function dn(e){return e=sn(e>>>0),q(t[e])}function fn(e,t){return t>>>=0,e=dt(e>>>0),t=dt(t),q(e[t])}function pn(e){9<(e>>>=0)&&(lt[e+1]+=1)}function mn(e,t,n,r,i){return tn[e>>>0](t>>>0,n>>>0,r>>>0,i>>>0)}function hn(e,t,n,r,i){return mn(e>>>0,t>>>0,n>>>0,r>>>0,i>>>0)}function gn(){return q([])}function _n(e){e=dt(e>>>0);for(var t=Array(e.length),n=0;n<e.length;n++)t[n]=e[n];return q(t)}function vn(e){return q(sn(e>>>0))}function yn(){return q({})}function bn(e){for(var t=dt(e>>>=0);t.length;){var n=t.pop();t.pop()(n)}ut(e)}function xn(e,t,n){t>>>=0,n>>>=0,e=dt(e>>>0),t=dt(t),n=dt(n),e[t]=n}function Sn(e,t){e=W(e),t>>>=0,e=new Date(1e3*e),(C(),k)[t>>>2>>>0]=e.getUTCSeconds(),(C(),k)[t+4>>>2>>>0]=e.getUTCMinutes(),(C(),k)[t+8>>>2>>>0]=e.getUTCHours(),(C(),k)[t+12>>>2>>>0]=e.getUTCDate(),(C(),k)[t+16>>>2>>>0]=e.getUTCMonth(),(C(),k)[t+20>>>2>>>0]=e.getUTCFullYear()-1900,(C(),k)[t+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,(C(),k)[t+28>>>2>>>0]=e}var Cn=e=>e%4==0&&(e%100!=0||e%400==0),wn=[0,31,60,91,121,152,182,213,244,274,305,335],Tn=[0,31,59,90,120,151,181,212,243,273,304,334];function En(e,t){e=W(e),t>>>=0,e=new Date(1e3*e),(C(),k)[t>>>2>>>0]=e.getSeconds(),(C(),k)[t+4>>>2>>>0]=e.getMinutes(),(C(),k)[t+8>>>2>>>0]=e.getHours(),(C(),k)[t+12>>>2>>>0]=e.getDate(),(C(),k)[t+16>>>2>>>0]=e.getMonth(),(C(),k)[t+20>>>2>>>0]=e.getFullYear()-1900,(C(),k)[t+24>>>2>>>0]=e.getDay();var n=(Cn(e.getFullYear())?wn:Tn)[e.getMonth()]+e.getDate()-1|0;(C(),k)[t+28>>>2>>>0]=n,(C(),k)[t+36>>>2>>>0]=-60*e.getTimezoneOffset(),n=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=0|(n!=r&&e.getTimezoneOffset()==Math.min(r,n)),(C(),k)[t+32>>>2>>>0]=e}function Dn(e){e>>>=0;var t=new Date((C(),k)[e+20>>>2>>>0]+1900,(C(),k)[e+16>>>2>>>0],(C(),k)[e+12>>>2>>>0],(C(),k)[e+8>>>2>>>0],(C(),k)[e+4>>>2>>>0],(C(),k)[e>>>2>>>0],0),n=(C(),k)[e+32>>>2>>>0],r=t.getTimezoneOffset(),i=new Date(t.getFullYear(),6,1).getTimezoneOffset(),a=new Date(t.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(a,i);return 0>n?(C(),k)[e+32>>>2>>>0]=+(i!=a&&o==r):0<n!=(o==r)&&(i=Math.max(a,i),t.setTime(t.getTime()+6e4*((0<n?o:i)-r))),(C(),k)[e+24>>>2>>>0]=t.getDay(),n=(Cn(t.getFullYear())?wn:Tn)[t.getMonth()]+t.getDate()-1|0,(C(),k)[e+28>>>2>>>0]=n,(C(),k)[e>>>2>>>0]=t.getSeconds(),(C(),k)[e+4>>>2>>>0]=t.getMinutes(),(C(),k)[e+8>>>2>>>0]=t.getHours(),(C(),k)[e+12>>>2>>>0]=t.getDate(),(C(),k)[e+16>>>2>>>0]=t.getMonth(),(C(),k)[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),BigInt(isNaN(e)?-1:e/1e3)}function On(e,t,n,r,a,o,s){return i?U(16,1,e,t,n,r,a,o,s):-52}function kn(e,t,n,r,a,o){if(i)return U(17,1,e,t,n,r,a,o)}var An={},jn=()=>performance.timeOrigin+performance.now();function Mn(e,t){return i?U(18,1,e,t):(An[e]&&(clearTimeout(An[e].id),delete An[e]),t&&(An[e]={id:setTimeout(()=>{delete An[e],J(()=>zi(e,performance.timeOrigin+performance.now()))},t),Ce:t}),0)}function Nn(e,t,n,r){e>>>=0,t>>>=0,n>>>=0,r>>>=0;var i=new Date().getFullYear(),a=new Date(i,0,1).getTimezoneOffset();i=new Date(i,6,1).getTimezoneOffset();var o=Math.max(a,i);(C(),A)[e>>>2>>>0]=60*o,(C(),k)[t>>>2>>>0]=+(a!=i),e=(t=e=>{var t=Math.abs(e);return`UTC${0<=e?`-`:`+`}${String(Math.floor(t/60)).padStart(2,`0`)}${String(t%60).padStart(2,`0`)}`})(a),t=t(i),i<a?(yt(e,n,17),yt(t,r,17)):(yt(e,r,17),yt(t,n,17))}var Pn=()=>Date.now(),Fn=1;function In(e,t,n){if(n>>>=0,!(0<=e&&3>=e))return 28;if(e===0)e=Date.now();else{if(!Fn)return 52;e=performance.timeOrigin+performance.now()}return e=Math.round(1e6*e),(C(),N)[n>>>3>>>0]=BigInt(e),0}var Ln=[],Rn=(e,t)=>{Ln.length=0;for(var n;n=(C(),E)[e++>>>0];){var r=n!=105;t+=(r&=n!=112)&&t%8?4:0,Ln.push(n==112?(C(),A)[t>>>2>>>0]:n==106?(C(),N)[t>>>3>>>0]:n==105?(C(),k)[t>>>2>>>0]:(C(),M)[t>>>3>>>0]),t+=r?8:4}return Ln};function zn(e,t,n){return e>>>=0,t=Rn(t>>>0,n>>>0),Ra[e](...t)}function Bn(e,t,n){return e>>>=0,t=Rn(t>>>0,n>>>0),Ra[e](...t)}var Vn=()=>{};function Hn(e,t){return b(Be(e>>>0,t>>>0))}var Un=()=>{throw H+=1,`unwind`};function Wn(){return 4294901760}var Gn=()=>1,Kn=()=>navigator.hardwareConcurrency;function qn(e){e>>>=0;var t=(C(),E).length;if(e<=t||4294901760<e)return!1;for(var n=1;4>=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);e:{r=(Math.min(4294901760,65536*Math.ceil(Math.max(e,r)/65536))-_e.buffer.byteLength+65535)/65536|0;try{_e.grow(r),L();var i=1;break e}catch{}i=void 0}if(i)return!0}return!1}var Jn=e=>{var t=bt(e)+1,n=Wi(t);return yt(e,n,t),n},Yn=(e,t)=>{(C(),A)[e>>>2>>>0]=t;var n=(C(),A)[e>>>2>>>0];(C(),A)[e+4>>>2>>>0]=(t-n)/4294967296},Xn=e=>(C(),A)[e>>>2>>>0]+4294967296*(C(),k)[e+4>>>2>>>0],Y=[],Zn=(e,t)=>{Y[e>>>0]=t},Qn=[],$n=[],er=(e,t)=>{$n[e]=new Promise(n=>t.finally(()=>n(e)))},X=e=>{if(e)return Y[e>>>0]},tr=(e,t)=>{for(e=(C(),A)[e>>>2>>>0];e;e=(C(),A)[e>>>2>>>0])t[(C(),k)[e+4>>>2>>>0]](e)},nr=(e,t,n)=>{(C(),A)[e>>>2>>>0]=t,(C(),A)[e+4>>>2>>>0]=n},rr=e=>{var t=(C(),A)[e>>>2>>>0];return e=(C(),A)[e+4>>>2>>>0],Be(t,e)},ir=e=>{var t=(C(),A)[e>>>2>>>0];return e=(C(),A)[e+4>>>2>>>0],t?Be(t,e):e===0?``:void 0},ar=e=>{var t=ir(e+4),n=(n=(C(),A)[e+12>>>2>>>0])?X(n):`auto`;if(e+=16){var r=X((C(),A)[e+4>>>2>>>0]),i=(C(),A)[e+16>>>2>>>0],a=(C(),A)[e+20>>>2>>>0];if(i){for(var o={},s=0;s<i;++s){var c=a+24*s;o[rr(c+4)]=(C(),M)[c+16>>>3>>>0]}i=o}else i=void 0;e={module:r,constants:i,entryPoint:ir(e+8)}}else e=void 0;return{label:t,layout:n,compute:e}},or=(e,t)=>{function n(n,r){n=e[n],(C(),A)[t+r>>>2>>>0]=n}n(`maxTextureDimension1D`,4),n(`maxTextureDimension2D`,8),n(`maxTextureDimension3D`,12),n(`maxTextureArrayLayers`,16),n(`maxBindGroups`,20),n(`maxBindGroupsPlusVertexBuffers`,24),n(`maxBindingsPerBindGroup`,28),n(`maxDynamicUniformBuffersPerPipelineLayout`,32),n(`maxDynamicStorageBuffersPerPipelineLayout`,36),n(`maxSampledTexturesPerShaderStage`,40),n(`maxSamplersPerShaderStage`,44),n(`maxStorageBuffersPerShaderStage`,48),n(`maxStorageTexturesPerShaderStage`,52),n(`maxUniformBuffersPerShaderStage`,56),n(`minUniformBufferOffsetAlignment`,80),n(`minStorageBufferOffsetAlignment`,84),Yn(t+64,e.maxUniformBufferBindingSize),Yn(t+72,e.maxStorageBufferBindingSize),n(`maxVertexBuffers`,88),Yn(t+96,e.maxBufferSize),n(`maxVertexAttributes`,104),n(`maxVertexBufferArrayStride`,108),n(`maxInterStageShaderVariables`,112),n(`maxColorAttachments`,116),n(`maxColorAttachmentBytesPerSample`,120),n(`maxComputeWorkgroupStorageSize`,124),n(`maxComputeInvocationsPerWorkgroup`,128),n(`maxComputeWorkgroupSizeX`,132),n(`maxComputeWorkgroupSizeY`,136),n(`maxComputeWorkgroupSizeZ`,140),n(`maxComputeWorkgroupsPerDimension`,144),e.Be!==void 0&&n(`maxImmediateSize`,148)},sr=[,`validation`,`out-of-memory`,`internal`],cr=[,`compatibility`,`core`],lr={1:`core-features-and-limits`,2:`depth-clip-control`,3:`depth32float-stencil8`,4:`texture-compression-bc`,5:`texture-compression-bc-sliced-3d`,6:`texture-compression-etc2`,7:`texture-compression-astc`,8:`texture-compression-astc-sliced-3d`,9:`timestamp-query`,10:`indirect-first-instance`,11:`shader-f16`,12:`rg11b10ufloat-renderable`,13:`bgra8unorm-storage`,14:`float32-filterable`,15:`float32-blendable`,16:`clip-distances`,17:`dual-source-blending`,18:`subgroups`,19:`texture-formats-tier1`,20:`texture-formats-tier2`,21:`primitive-index`,22:`texture-component-swizzle`,327692:`chromium-experimental-unorm16-texture-formats`,327729:`chromium-experimental-multi-draw-indirect`},ur=[,`low-power`,`high-performance`],dr=[,`occlusion`,`timestamp`],fr={undefined:1,unknown:1,destroyed:2};function pr(e,t,n,r,i,a){t=W(t),n=W(n),r>>>=0,i>>>=0,a>>>=0;var o=X(e>>>0);if(e={},a){var s=(C(),A)[a+12>>>2>>>0];if(s){var c=(C(),A)[a+16>>>2>>>0];e.requiredFeatures=Array.from((C(),A).subarray(c>>>2>>>0,c+4*s>>>2>>>0),e=>lr[e])}var l=(C(),A)[a+20>>>2>>>0];if(l){let t=function(e,t,n=!1){t=l+t,(t=(C(),A)[t>>>2>>>0])==4294967295||n&&t==0||(u[e]=t)},n=function(e,t){t=l+t;var n=(C(),A)[t>>>2>>>0],r=(C(),A)[t+4>>>2>>>0];n==4294967295&&r==4294967295||(u[e]=Xn(t))};var u={};t(`maxTextureDimension1D`,4),t(`maxTextureDimension2D`,8),t(`maxTextureDimension3D`,12),t(`maxTextureArrayLayers`,16),t(`maxBindGroups`,20),t(`maxBindGroupsPlusVertexBuffers`,24),t(`maxDynamicUniformBuffersPerPipelineLayout`,32),t(`maxDynamicStorageBuffersPerPipelineLayout`,36),t(`maxSampledTexturesPerShaderStage`,40),t(`maxSamplersPerShaderStage`,44),t(`maxStorageBuffersPerShaderStage`,48),t(`maxStorageTexturesPerShaderStage`,52),t(`maxUniformBuffersPerShaderStage`,56),t(`minUniformBufferOffsetAlignment`,80),t(`minStorageBufferOffsetAlignment`,84),n(`maxUniformBufferBindingSize`,64),n(`maxStorageBufferBindingSize`,72),t(`maxVertexBuffers`,88),n(`maxBufferSize`,96),t(`maxVertexAttributes`,104),t(`maxVertexBufferArrayStride`,108),t(`maxInterStageShaderVariables`,112),t(`maxColorAttachments`,116),t(`maxColorAttachmentBytesPerSample`,120),t(`maxComputeWorkgroupStorageSize`,124),t(`maxComputeInvocationsPerWorkgroup`,128),t(`maxComputeWorkgroupSizeX`,132),t(`maxComputeWorkgroupSizeY`,136),t(`maxComputeWorkgroupSizeZ`,140),t(`maxComputeWorkgroupsPerDimension`,144),t(`maxImmediateSize`,148,!0),e.requiredLimits=u}(s=(C(),A)[a+24>>>2>>>0])&&(s={label:ir(s+4)},e.defaultQueue=s),e.label=ir(a+4)}H+=1,er(t,o.requestDevice(e).then(e=>{--H,J(()=>{Y[i>>>0]=e.queue,Y[r>>>0]=e,H+=1,er(n,e.lost.then(t=>{J(()=>{e.onuncapturederror=()=>{};var r=$(),i=Jn(t.message);Oi(n,fr[t.reason],i),Q(r)}),--H})),e.onuncapturederror=e=>{var t=5;e.error instanceof GPUValidationError?t=2:e.error instanceof GPUOutOfMemoryError?t=3:e.error instanceof GPUInternalError&&(t=4);var n=$();e=Jn(e.error.message),Ni(r,t,e),Q(n)},`adapterInfo`in e||(e.adapterInfo=o.info),Mi(t,1,r,0)})},e=>{--H,J(()=>{var i=$(),a=Jn(e.message);Mi(t,3,r,a),n&&Oi(n,4,a),Q(i)})}))}function mr(e){var t=X(e>>>=0),n=Qn[e];if(n){for(var r=0;r<n.length;++r)n[r]();delete Qn[e]}t.destroy()}function hr(e,t,n){n>>>=0;var r=X(e>>>=0);n==4294967295&&(n=void 0);try{var i=r.getMappedRange(t>>>0,n)}catch{return 0}var a=Vi(16,i.byteLength);return(C(),E).set(new Uint8Array(i),a>>>0),Qn[e].push(()=>mi(a)),a}function gr(e,t,n){n>>>=0;var r=X(e>>>=0);n==4294967295&&(n=void 0);try{var i=r.getMappedRange(t>>>0,n)}catch{return 0}var a=Vi(16,i.byteLength);return(C(),E).fill(0,a,i.byteLength),Qn[e].push(()=>{new Uint8Array(i).set((C(),E).subarray(a>>>0,a+i.byteLength>>>0)),mi(a)}),a}function _r(e,t,n,r,i){e>>>=0,t=W(t),n=W(n),i>>>=0;var a=X(e);Qn[e]=[],i==4294967295&&(i=void 0),H+=1,er(t,a.mapAsync(n,r>>>0,i).then(()=>{--H,J(()=>{ki(t,1,0)})},n=>{--H,J(()=>{$();var r=Jn(n.message);ki(t,n.name===`AbortError`?4:n.name===`OperationError`?3:0,r),delete Qn[e]})}))}function vr(e){var t=X(e>>>=0),n=Qn[e];if(n){for(var r=0;r<n.length;++r)n[r]();delete Qn[e],t.unmap()}}function yr(e){delete Y[e>>>0]}function br(e,t,n){e>>>=0,t>>>=0,n>>>=0;var r=!!(C(),A)[t+32>>>2>>>0];t={label:ir(t+4),usage:(C(),A)[t+16>>>2>>>0],size:Xn(t+24),mappedAtCreation:r},e=X(e);try{var i=e.createBuffer(t)}catch{return!1}return Y[n>>>0]=i,r&&(Qn[n]=[]),!0}function xr(e,t,n,r){e>>>=0,t=W(t),r>>>=0,n=ar(n>>>0),e=X(e),H+=1,er(t,e.createComputePipelineAsync(n).then(e=>{--H,J(()=>{Y[r>>>0]=e,Di(t,1,r,0)})},e=>{--H,J(()=>{var n=$(),i=Jn(e.message);Di(t,e.reason===`validation`?3:e.reason===`internal`?4:0,r,i),Q(n)})}))}function Sr(e,t,n){e>>>=0,t>>>=0,n>>>=0;var r=(C(),A)[t>>>2>>>0],i=(C(),k)[r+4>>>2>>>0];t={label:ir(t+4),code:``},i===2&&(t.code=rr(r+8)),e=X(e).createShaderModule(t),Y[n>>>0]=e}var Cr=e=>{(e=X(e)).onuncapturederror=null,e.destroy()};function wr(e,t){t=W(t),e=X(e>>>0),H+=1,er(t,e.popErrorScope().then(e=>{--H,J(()=>{var n=5;e?e instanceof GPUValidationError?n=2:e instanceof GPUOutOfMemoryError?n=3:e instanceof GPUInternalError&&(n=4):n=1;var r=$(),i=e?Jn(e.message):0;Ai(t,1,n,i),Q(r)})},e=>{--H,J(()=>{var n=$(),r=Jn(e.message);Ai(t,1,5,r),Q(n)})}))}function Tr(e,t,n,r){if(t=W(t),r>>>=0,n>>>=0){var i={featureLevel:cr[(C(),k)[n+4>>>2>>>0]],powerPreference:ur[(C(),k)[n+8>>>2>>>0]],forceFallbackAdapter:!!(C(),A)[n+12>>>2>>>0]};(e=(C(),A)[n>>>2>>>0])!==0&&(C(),i.Fe=!!(C(),A)[e+8>>>2>>>0])}`gpu`in navigator?(H+=1,er(t,navigator.gpu.requestAdapter(i).then(e=>{--H,J(()=>{if(e)Y[r>>>0]=e,ji(t,1,r,0);else{var n=$(),i=Jn(`WebGPU not available on this browser (requestAdapter returned null)`);ji(t,3,r,i),Q(n)}})},e=>{--H,J(()=>{var n=$(),i=Jn(e.message);ji(t,4,r,i),Q(n)})}))):(i=$(),e=Jn(`WebGPU not available on this browser (navigator.gpu is not available)`),ji(t,3,r,e),Q(i))}function Er(e,t,n){return e>>>=0,t>>>=0,n>>>=0,$t(async()=>{var r=[];if(n){var i=(C(),k)[n>>>2>>>0];r.length=t+1,r[t]=new Promise(e=>setTimeout(e,i,0))}else r.length=t;for(var a=0;a<t;++a){var o=Xn(e+8*a);if(!(o in $n))return o;r[a]=$n[o]}return r=await Promise.race(r),delete $n[r],r})}var Dr,Or={},kr=()=>{if(!Dr){var e,t={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(globalThis.navigator?.language??`C`).replace(`-`,`_`)+`.UTF-8`,_:`./this.program`};for(e in Or)Or[e]===void 0?delete t[e]:t[e]=Or[e];var n=[];for(e in t)n.push(`${e}=${t[e]}`);Dr=n}return Dr};function Ar(e,t){if(i)return U(19,1,e,t);e>>>=0,t>>>=0;var n,r=0,a=0;for(n of kr()){var o=t+r;(C(),A)[e+a>>>2>>>0]=o,r+=yt(n,o,1/0)+1,a+=4}return 0}function jr(e,t){if(i)return U(20,1,e,t);e>>>=0,t>>>=0;var n=kr();for(var r of((C(),A)[e>>>2>>>0]=n.length,e=0,n))e+=bt(r)+1;return(C(),A)[t>>>2>>>0]=e,0}function Mr(e){return i?U(21,1,e):52}function Nr(e,t,n,r){return i?U(22,1,e,t,n,r):52}function Pr(e,t,n,r){return i?U(23,1,e,t,n,r):70}var Fr=[null,[],[]];function Ir(e,t,n,r){if(i)return U(24,1,e,t,n,r);t>>>=0,n>>>=0,r>>>=0;for(var a=0,o=0;o<n;o++){var s=(C(),A)[t>>>2>>>0],c=(C(),A)[t+4>>>2>>>0];t+=8;for(var l=0;l<c;l++){var u=e,d=(C(),E)[s+l>>>0],f=Fr[u];d===0||d===10?((u===1?y:b)(ze(f)),f.length=0):f.push(d)}a+=c}return(C(),A)[r>>>2>>>0]=a,0}function Lr(e){return e>>>0}function Rr(e,t){return or(X(e>>>0).limits,t>>>0),1}function zr(e,t){return X(e>>>0).features.has(lr[t])}function Br(e){return BigInt(X(e>>>0).size)}function Vr(e){return BigInt(X(e>>>0).usage)}function Hr(e,t){if(e>>>=0,t>>>=0){var n=ir(t+4);n={label:n,timestampWrites:t=(t=(C(),A)[t+12>>>2>>>0])===0?void 0:{querySet:X((C(),A)[t+4>>>2>>>0]),beginningOfPassWriteIndex:(C(),A)[t+8>>>2>>>0],endOfPassWriteIndex:(C(),A)[t+12>>>2>>>0]}}}return t=X(e),e=Si(0),n=t.beginComputePass(n),Y[e>>>0]=n,e}function Ur(e,t,n,r){n=W(n),(r=W(r))==-1&&(r=void 0),(e=X(e>>>0)).clearBuffer(X(t>>>0),n,r)}function Wr(e,t,n,r,i,a){n=W(n),i=W(i),a=W(a),X(e>>>0).copyBufferToBuffer(X(t>>>0),n,X(r>>>0),i,a)}function Gr(e){var t=X(e>>>0);return e=bi(0),t=t.finish(),Y[e>>>0]=t,e}function Kr(e,t,n,r,i,a){a=W(a),X(e>>>0).resolveQuerySet(X(t>>>0),n,r,X(i>>>0),a)}function qr(e,t,n,r){X(e>>>0).dispatchWorkgroups(t,n,r)}function Jr(e,t,n){n=W(n),X(e>>>0).dispatchWorkgroupsIndirect(X(t>>>0),n)}function Yr(e){X(e>>>0).end()}function Xr(e,t,n,r,i){r>>>=0,i>>>=0,e=X(e>>>0),n=X(n>>>0),r==0?e.setBindGroup(t,n):e.setBindGroup(t,n,(C(),A),i>>>2,r)}function Zr(e,t){X(e>>>0).setPipeline(X(t>>>0))}function Qr(e,t,n){X(e>>>0).Ee(X(t>>>0),n)}function $r(e,t){var n=X(e>>>0);return e=yi(0),t=n.getBindGroupLayout(t),Y[e>>>0]=t,e}function ei(e,t){function n(e){var t=(C(),A)[e+8>>>2>>>0],n=(C(),A)[e+32>>>2>>>0],r=(C(),A)[e+36>>>2>>>0],i=0;return tr(e,{327681:e=>{i=(C(),A)[e+8>>>2>>>0]}}),t?((n=Xn(e+24))==-1&&(n=void 0),t={buffer:X(t),offset:Xn(e+16),size:n}):t=X(n||r||i),{binding:(C(),A)[e+4>>>2>>>0],resource:t}}e>>>=0,t={label:ir((t>>>=0)+4),layout:X((C(),A)[t+12>>>2>>>0]),entries:(function(e,t){for(var r=[],i=0;i<e;++i)r.push(n(t+40*i));return r})((C(),A)[t+16>>>2>>>0],(C(),A)[t+20>>>2>>>0])},e=X(e);var r=vi(0);return Zn(r,e.createBindGroup(t)),r}function ti(e,t){var n;return e>>>=0,(t>>>=0)&&(n={label:ir(t+4)}),t=X(e),e=xi(0),n=t.createCommandEncoder(n),Y[e>>>0]=n,e}function ni(e,t){e>>>=0,t>>>=0,t={type:dr[(C(),k)[t+12>>>2>>>0]],count:(C(),A)[t+16>>>2>>>0]};var n=X(e);return e=Ci(0),t=n.createQuerySet(t),Y[e>>>0]=t,e}function ri(e,t){e=X(e>>>0).adapterInfo,t>>>=0,(C(),A)[t+52>>>2>>>0]=e.subgroupMinSize,(C(),A)[t+56>>>2>>>0]=e.subgroupMaxSize;var n=e.vendor+e.architecture+e.device+e.description,r=bt(n)+1,i=hi(r);return i&&yt(n,i,r),n=i,r=bt(e.vendor),nr(t+4,n,r),n+=r,r=bt(e.architecture),nr(t+12,n,r),n+=r,r=bt(e.device),nr(t+20,n,r),nr(t+28,n+r,bt(e.description)),(C(),k)[t+36>>>2>>>0]=2,e=e.isFallbackAdapter?3:4,(C(),k)[t+40>>>2>>>0]=e,(C(),A)[t+44>>>2>>>0]=0,(C(),A)[t+48>>>2>>>0]=0,1}var ii={"core-features-and-limits":1,"depth-clip-control":2,"depth32float-stencil8":3,"texture-compression-bc":4,"texture-compression-bc-sliced-3d":5,"texture-compression-etc2":6,"texture-compression-astc":7,"texture-compression-astc-sliced-3d":8,"timestamp-query":9,"indirect-first-instance":10,"shader-f16":11,"rg11b10ufloat-renderable":12,"bgra8unorm-storage":13,"float32-filterable":14,"float32-blendable":15,"clip-distances":16,"dual-source-blending":17,subgroups:18,"texture-formats-tier1":19,"texture-formats-tier2":20,"primitive-index":21,"texture-component-swizzle":22,"chromium-experimental-unorm16-texture-formats":327692,"chromium-experimental-multi-draw-indirect":327729};function ai(e,t){t>>>=0;var n=X(e>>>0);e=hi(4*n.features.size);var r=0,i=0;for(let t of n.features)0<=(n=ii[t])&&((C(),k)[e+r>>>2>>>0]=n,r+=4,i++);(C(),A)[t+4>>>2>>>0]=e,(C(),A)[t>>>2>>>0]=i}function oi(e,t){return or(X(e>>>0).limits,t>>>0),1}function si(e,t){X(e>>>0).pushErrorScope(sr[t])}function ci(e,t,n){t>>>=0,n>>>=0,e=X(e>>>0),t=Array.from((C(),k).subarray(n>>>2>>>0,n+4*t>>>2>>>0),e=>X(e)),e.submit(t)}function li(e,t,n,r,i){n=W(n),r>>>=0,i>>>=0,e=X(e>>>0),t=X(t>>>0),r=(C(),E).subarray(r>>>0,r+i>>>0),e.writeBuffer(t,n,r,0,i)}i||(function(){for(var e=t.numThreads-1;e--;)ge();ne.push(async()=>{var e=(async function(){if(!i)return Promise.all(le.map(he))})();re++,await e,--re==0&&ie&&(e=ie,ie=null,e())})})(),i||(_e=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),L()),t.wasmBinary&&(d=t.wasmBinary),t.stackSave=()=>$(),t.stackRestore=e=>Q(e),t.stackAlloc=e=>Wi(e),t.setValue=function(e,t,n=`i8`){switch(n.endsWith(`*`)&&(n=`*`),n){case`i1`:case`i8`:(C(),T)[e>>>0]=t;break;case`i16`:(C(),D)[e>>>1>>>0]=t;break;case`i32`:(C(),k)[e>>>2>>>0]=t;break;case`i64`:(C(),N)[e>>>3>>>0]=BigInt(t);break;case`float`:(C(),j)[e>>>2>>>0]=t;break;case`double`:(C(),M)[e>>>3>>>0]=t;break;case`*`:(C(),A)[e>>>2>>>0]=t;break;default:z(`invalid type for setValue: ${n}`)}},t.getValue=function(e,t=`i8`){switch(t.endsWith(`*`)&&(t=`*`),t){case`i1`:case`i8`:return(C(),T)[e>>>0];case`i16`:return(C(),D)[e>>>1>>>0];case`i32`:return(C(),k)[e>>>2>>>0];case`i64`:return(C(),N)[e>>>3>>>0];case`float`:return(C(),j)[e>>>2>>>0];case`double`:return(C(),M)[e>>>3>>>0];case`*`:return(C(),A)[e>>>2>>>0];default:z(`invalid type for getValue: ${t}`)}},t.UTF8ToString=Be,t.stringToUTF8=yt,t.lengthBytesUTF8=bt;var ui,di,fi,pi,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii,Li,Ri,zi,Bi,Vi,Z,Hi,Ui,Q,Wi,$,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i,ea,ta,na,ra,ia,aa,oa,sa,ca,la,ua,da,fa,pa,ma,ha,ga,_a,va,ya,ba,xa,Sa,Ca,wa,Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa,Ia,La=[oe,se,Pe,Ve,He,Ue,We,Ge,Ke,qe,Je,Ye,G,Xe,Ze,Qe,On,kn,Mn,Ar,jr,Mr,Nr,Pr,Ir],Ra={1028716:(e,n,r,i,a)=>{if(t===void 0||!t.Vc)return 1;if((e=Be(Number(e>>>0))).startsWith(`./`)&&(e=e.substring(2)),!(e=t.Vc.get(e)))return 2;if(n=Number(n>>>0),r=Number(r>>>0),i=Number(i>>>0),n+r>e.byteLength)return 3;try{let o=e.subarray(n,n+r);switch(a){case 0:(C(),E).set(o,i>>>0);break;case 1:t.bd?t.bd(i,o):t.pe(i,o);break;default:return 4}return 0}catch{return 4}},1029540:(e,n,r)=>{t.Td(e,(C(),E).subarray(n>>>0,n+r>>>0))},1029604:()=>t.ne(),1029646:e=>{t.kd(e)},1029683:()=>typeof wasmOffsetConverter<`u`};function za(e,t,n,r){var i=$();try{return ia(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function Ba(e,t,n){var r=$();try{return ta(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function Va(e){var t=$();try{Zi(e)}catch(e){if(Q(t),e!==e+0)throw e;Z(1,0)}}function Ha(e,t){var n=$();try{return Xi(e,t)}catch(e){if(Q(n),e!==e+0)throw e;Z(1,0)}}function Ua(e,t,n){var r=$();try{Yi(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function Wa(e,t){var n=$();try{aa(e,t)}catch(e){if(Q(n),e!==e+0)throw e;Z(1,0)}}function Ga(e,t,n,r,i,a,o){var s=$();try{return ea(e,t,n,r,i,a,o)}catch(e){if(Q(s),e!==e+0)throw e;Z(1,0)}}function Ka(e,t,n,r,i,a){var o=$();try{Qi(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function qa(e,t,n,r){var i=$();try{ra(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function Ja(e,t,n,r,i,a,o){var s=$();try{sa(e,t,n,r,i,a,o)}catch(e){if(Q(s),e!==e+0)throw e;Z(1,0)}}function Ya(e,t,n,r,i,a,o){var s=$();try{ca(e,t,n,r,i,a,o)}catch(e){if(Q(s),e!==e+0)throw e;Z(1,0)}}function Xa(e,t,n,r,i,a,o,s){var c=$();try{_a(e,t,n,r,i,a,o,s)}catch(e){if(Q(c),e!==e+0)throw e;Z(1,0)}}function Za(e,t,n,r,i,a,o,s,c,l,u,d){var f=$();try{la(e,t,n,r,i,a,o,s,c,l,u,d)}catch(e){if(Q(f),e!==e+0)throw e;Z(1,0)}}function Qa(e,t,n,r,i){var a=$();try{return oa(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;Z(1,0)}}function $a(e,t,n,r,i,a){var o=$();try{va(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function eo(e,t,n,r,i){var a=$();try{$i(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;Z(1,0)}}function to(e,t,n,r,i,a,o,s){var c=$();try{na(e,t,n,r,i,a,o,s)}catch(e){if(Q(c),e!==e+0)throw e;Z(1,0)}}function no(e){var t=$();try{return ya(e)}catch(e){if(Q(t),e!==e+0)throw e;Z(1,0)}}function ro(e,t,n){var r=$();try{return ba(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function io(e,t){var n=$();try{return ja(e,t)}catch(e){if(Q(n),e!==e+0)throw e;return Z(1,0),0n}}function ao(e){var t=$();try{return ua(e)}catch(e){if(Q(t),e!==e+0)throw e;return Z(1,0),0n}}function oo(e,t,n,r){var i=$();try{return xa(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function so(e,t,n,r,i){var a=$();try{return Sa(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;Z(1,0)}}function co(e,t,n,r,i,a){var o=$();try{return Ca(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function lo(e,t,n,r,i,a){var o=$();try{return ha(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function uo(e,t,n,r,i,a){var o=$();try{return wa(e,t,n,r,i,a)}catch(e){if(Q(o),e!==e+0)throw e;Z(1,0)}}function fo(e,t,n,r,i,a,o,s){var c=$();try{return ga(e,t,n,r,i,a,o,s)}catch(e){if(Q(c),e!==e+0)throw e;Z(1,0)}}function po(e,t,n,r,i){var a=$();try{return Ta(e,t,n,r,i)}catch(e){if(Q(a),e!==e+0)throw e;return Z(1,0),0n}}function mo(e,t,n,r){var i=$();try{return Ea(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function ho(e,t,n,r){var i=$();try{return Da(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function go(e,t,n,r,i,a,o,s,c,l,u,d){var f=$();try{return Oa(e,t,n,r,i,a,o,s,c,l,u,d)}catch(e){if(Q(f),e!==e+0)throw e;Z(1,0)}}function _o(e,t,n,r,i,a,o,s,c,l,u){var d=$();try{ka(e,t,n,r,i,a,o,s,c,l,u)}catch(e){if(Q(d),e!==e+0)throw e;Z(1,0)}}function vo(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){var g=$();try{Aa(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)}catch(e){if(Q(g),e!==e+0)throw e;Z(1,0)}}function yo(e,t,n){var r=$();try{return fa(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;return Z(1,0),0n}}function bo(e,t,n){var r=$();try{return da(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function xo(e,t,n){var r=$();try{return pa(e,t,n)}catch(e){if(Q(r),e!==e+0)throw e;Z(1,0)}}function So(e,t,n,r){var i=$();try{ma(e,t,n,r)}catch(e){if(Q(i),e!==e+0)throw e;Z(1,0)}}function Co(){if(0<re)ie=Co;else if(i)m?.(t),R();else{for(var e=ne;0<e.length;)e.shift()(t);0<re?ie=Co:(t.calledRun=!0,x||(R(),m?.(t)))}}return i||(Ia=await V(),Co()),t.PTR_SIZE=4,t.webgpuInit=e=>{let n=new WeakMap,r,i,a=1;t.webgpuRegisterDevice=e=>{if(i!==void 0)throw Error(`another WebGPU EP inference session is being created.`);if(e){var t=n.get(e);if(!t){let r=((e,t=0)=>{var n=Ei(t);return t=Ti(t,n),Y[n>>>0]=e.queue,Y[t>>>0]=e,t})(e,t=_i(0));t=[a++,t,r],n.set(e,t)}return r=e,i=t[0],t}r=void 0,i=0};let o=new Map;t.webgpuOnCreateSession=t=>{if(i!==void 0){var n=i;if(i=void 0,t){let i=fi(n);o.set(t,i),n===0&&e(r??X(i))}r=void 0}},t.webgpuOnReleaseSession=e=>{o.delete(e)};let s=Symbol(`gpuBufferMetadata`);t.webgpuRegisterBuffer=(e,t,n)=>{if(n)return e[s]=[n,NaN],n;if(n=e[s])return n[1]++,n[0];if((t=o.get(t))===void 0)throw Error(`Invalid session handle passed to webgpuRegisterBuffer`);return t=((e,t=0)=>(e.mapState===`unmapped`||z(),t=wi(t),Y[t>>>0]=e,t))(e,t),e[s]=[t,1],t},t.webgpuUnregisterBuffer=e=>{let t=e[s];if(!t)throw Error(`Buffer is not registered`);t[1]--,t[1]===0&&(gi(t[0]),delete e[s])},t.webgpuGetBuffer=e=>X(e),t.webgpuCreateDownloader=(e,t,n)=>{if((n=o.get(n))===void 0)throw Error(`Invalid session handle passed to webgpuRegisterBuffer`);let r=X(n),i=16*Math.ceil(Number(t)/16);return async()=>{let n=r.createBuffer({size:i,usage:9});try{let a=r.createCommandEncoder();return a.copyBufferToBuffer(e,0,n,0,i),r.queue.submit([a.finish()]),await n.mapAsync(GPUMapMode.READ),n.getMappedRange().slice(0,t)}finally{n.destroy()}}},t.bd=(e,t)=>{var n=t.buffer;let a=t.byteOffset,o=t.byteLength;if(t=16*Math.ceil(Number(o)/16),e=X(e),!r){var s=fi(i);r=X(s)}let c=(s=r.createBuffer({mappedAtCreation:!0,size:t,usage:6})).getMappedRange();new Uint8Array(c).set(new Uint8Array(n,a,o)),s.unmap(),(n=r.createCommandEncoder()).copyBufferToBuffer(s,0,e,0,t),r.queue.submit([n.finish()]),s.destroy()}},t.webnnInit=e=>{let n=e[0];[t.ne,t.kd,t.webnnEnsureTensor,t.Td,t.webnnDownloadTensor,t.me,t.webnnEnableTraceEvent]=e.slice(1),t.webnnReleaseTensorId=t.kd,t.webnnUploadTensor=t.Td,t.webnnRegisterMLContext=t.me,t.webnnOnRunStart=e=>n.onRunStart(e),t.webnnOnRunEnd=n.onRunEnd.bind(n),t.webnnOnReleaseSession=e=>{n.onReleaseSession(e)},t.webnnCreateMLTensorDownloader=(e,t)=>n.createMLTensorDownloader(e,t),t.webnnRegisterMLTensor=(e,t,r,i)=>n.registerMLTensor(e,t,r,i),t.webnnCreateMLContext=e=>n.createMLContext(e),t.webnnRegisterMLConstant=(e,r,i,a,o,s)=>n.registerMLConstant(e,r,i,a,o,t.Vc,s),t.webnnRegisterGraphInput=n.registerGraphInput.bind(n),t.webnnIsGraphInput=n.isGraphInput.bind(n),t.webnnRegisterGraphOutput=n.registerGraphOutput.bind(n),t.webnnIsGraphOutput=n.isGraphOutput.bind(n),t.webnnCreateTemporaryTensor=n.createTemporaryTensor.bind(n),t.webnnIsGraphInputOutputTypeSupported=n.isGraphInputOutputTypeSupported.bind(n)},I?t:new Promise((e,t)=>{m=e,h=t})}var we,Te,Ee=a(()=>{"use strict";we=Ce,Te=globalThis.self?.name?.startsWith(`em-pthread`),Te&&Ce()}),De,Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve=a(()=>{"use strict";_e(),De=typeof location>`u`?void 0:location.origin,Oe=self.location.href>`file:`&&self.location.href<`file;`,ke=()=>Oe?new URL(new URL(`ort.webgpu.bundle.min.mjs`,self.location.href).href,De).href:self.location.href,Ae=ke(),je=()=>{if(Ae&&!Ae.startsWith(`blob:`))return Ae.substring(0,Ae.lastIndexOf(`/`)+1)},Me=(e,t)=>{try{let n=t??Ae;return(n?new URL(e,n):new URL(e)).origin===De}catch{return!1}},Ne=(e,t)=>{let n=t??Ae;try{return(n?new URL(e,n):new URL(e)).href}catch{return}},Pe=(e,t)=>`${t??`./`}${e}`,Fe=async e=>{let t=await(await fetch(e,{credentials:`same-origin`})).blob();return URL.createObjectURL(t)},Ie=async e=>(await import(e)).default,Le=(xe(),c(ve)).default,Re=async()=>{if(!Ae)throw Error(`Failed to load proxy worker: cannot determine the script source URL.`);if(Me(Ae))return[void 0,Le()];let e=await Fe(Ae);return[e,Le(e)]},ze=(Ee(),c(Se)).default,Be=async(e,t,n,r)=>{let i=ze&&!(e||t);if(i)if(Ae)i=Me(Ae)||r&&!n;else if(r&&!n)i=!0;else throw Error(`cannot determine the script source URL.`);if(i)return[void 0,ze];{let r=`ort-wasm-simd-threaded.asyncify.mjs`,i=e??Ne(r,t),a=n&&i&&!Me(i,t),o=a?await Fe(i):i??Pe(r,t);return[a?o:void 0,await Ie(o)]}}}),He,Ue,We,Ge,Ke,qe,Je,Ye,G,Xe=a(()=>{"use strict";Ve(),Ue=!1,We=!1,Ge=!1,Ke=()=>{if(typeof SharedArrayBuffer>`u`)return!1;try{return typeof MessageChannel<`u`&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},qe=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},Je=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},Ye=async e=>{if(Ue)return Promise.resolve();if(We)throw Error(`multiple calls to 'initializeWebAssembly()' detected.`);if(Ge)throw Error(`previous call to 'initializeWebAssembly()' failed.`);We=!0;let t=e.initTimeout,n=e.numThreads;if(e.simd!==!1){if(e.simd===`relaxed`){if(!Je())throw Error(`Relaxed WebAssembly SIMD is not supported in the current environment.`)}else if(!qe())throw Error(`WebAssembly SIMD is not supported in the current environment.`)}let r=Ke();n>1&&!r&&(typeof self<`u`&&!self.crossOriginIsolated&&console.warn(`env.wasm.numThreads is set to `+n+`, but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info.`),console.warn(`WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading.`),e.numThreads=n=1);let i=e.wasmPaths,a=typeof i==`string`?i:void 0,o=i?.mjs,s=o?.href??o,c=i?.wasm,l=c?.href??c,u=e.wasmBinary,[d,f]=await Be(s,a,n>1,!!u||!!l),p=!1,m=[];if(t>0&&m.push(new Promise(e=>{setTimeout(()=>{p=!0,e()},t)})),m.push(new Promise((e,t)=>{let r={numThreads:n};if(u)r.wasmBinary=u,r.locateFile=e=>e;else if(l||a)r.locateFile=e=>l??a+e;else if(s&&s.indexOf(`blob:`)!==0)r.locateFile=e=>new URL(e,s).href;else if(d){let e=je();e&&(r.locateFile=t=>e+t)}f(r).then(t=>{We=!1,Ue=!0,He=t,e(),d&&URL.revokeObjectURL(d)},e=>{We=!1,Ge=!0,t(e)})})),await Promise.race(m),p)throw Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},G=()=>{if(Ue&&He)return He;throw Error(`WebAssembly is not initialized yet.`)}}),Ze,Qe,K,$e=a(()=>{"use strict";Xe(),Ze=(e,t)=>{let n=G(),r=n.lengthBytesUTF8(e)+1,i=n._malloc(r);return n.stringToUTF8(e,i,r),t.push(i),i},Qe=(e,t,n,r)=>{if(typeof e==`object`&&e){if(n.has(e))throw Error(`Circular reference in options`);n.add(e)}Object.entries(e).forEach(([e,i])=>{let a=t?t+e:e;if(typeof i==`object`)Qe(i,a+`.`,n,r);else if(typeof i==`string`||typeof i==`number`)r(a,i.toString());else if(typeof i==`boolean`)r(a,i?`1`:`0`);else throw Error(`Can't handle extra config type: ${typeof i}`)})},K=e=>{let t=G(),n=t.stackSave();try{let n=t.PTR_SIZE,r=t.stackAlloc(2*n);t._OrtGetLastError(r,r+n);let i=Number(t.getValue(r,n===4?`i32`:`i64`)),a=t.getValue(r+n,`*`),o=a?t.UTF8ToString(a):``;throw Error(`${e} ERROR_CODE: ${i}, ERROR_MESSAGE: ${o}`)}finally{t.stackRestore(n)}}}),et,tt=a(()=>{"use strict";Xe(),$e(),et=e=>{let t=G(),n=0,r=[],i=e||{};try{if(e?.logSeverityLevel===void 0)i.logSeverityLevel=2;else if(typeof e.logSeverityLevel!=`number`||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw Error(`log severity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)i.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!=`number`||!Number.isInteger(e.logVerbosityLevel))throw Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(i.terminate=!1);let a=0;return e?.tag!==void 0&&(a=Ze(e.tag,r)),n=t._OrtCreateRunOptions(i.logSeverityLevel,i.logVerbosityLevel,!!i.terminate,a),n===0&&K(`Can't create run options.`),e?.extra!==void 0&&Qe(e.extra,``,new WeakSet,(e,i)=>{let a=Ze(e,r),o=Ze(i,r);t._OrtAddRunConfigEntry(n,a,o)!==0&&K(`Can't set a run config entry: ${e} - ${i}.`)}),[n,r]}catch(e){throw n!==0&&t._OrtReleaseRunOptions(n),r.forEach(e=>t._free(e)),e}}}),nt,rt,it,at,ot,st,ct,lt=a(()=>{"use strict";Xe(),$e(),nt=e=>{switch(e){case`disabled`:return 0;case`basic`:return 1;case`extended`:return 2;case`layout`:return 3;case`all`:return 99;default:throw Error(`unsupported graph optimization level: ${e}`)}},rt=e=>{switch(e){case`sequential`:return 0;case`parallel`:return 1;default:throw Error(`unsupported execution mode: ${e}`)}},it=e=>{e.extra||={},e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||=`1`,e.executionProviders&&e.executionProviders.some(e=>(typeof e==`string`?e:e.name)===`webgpu`)&&(e.enableMemPattern=!1)},at=(e,t,n,r)=>{let i=Ze(t,r),a=Ze(n,r);G()._OrtAddSessionConfigEntry(e,i,a)!==0&&K(`Can't set a session config entry: ${t} - ${n}.`)},ot=(e,t,n,r)=>{let i=Ze(t,r),a=Ze(n,r);e.push([i,a])},st=async(e,t,n)=>{let r=t.executionProviders;for(let i of r){let r=typeof i==`string`?i:i.name,a=[];switch(r){case`webnn`:if(r=`WEBNN`,at(e,`session.disable_quant_qdq`,`1`,n),at(e,`session.disable_qdq_constant_folding`,`1`,n),typeof i!=`string`){let t=i?.deviceType;t&&at(e,`deviceType`,t,n)}break;case`webgpu`:{r=`WebGPU`;let e;if(typeof i!=`string`){let r=i;if(r.device)if(typeof GPUDevice<`u`&&r.device instanceof GPUDevice)e=r.device;else throw Error(`Invalid GPU device set in WebGPU EP options.`);let{enableGraphCapture:o}=t;if(typeof o==`boolean`&&o&&ot(a,`enableGraphCapture`,`1`,n),typeof r.preferredLayout==`string`&&ot(a,`preferredLayout`,r.preferredLayout,n),r.forceCpuNodeNames){let e=Array.isArray(r.forceCpuNodeNames)?r.forceCpuNodeNames:[r.forceCpuNodeNames];ot(a,`forceCpuNodeNames`,e.join(`
`),n)}r.validationMode&&ot(a,`validationMode`,r.validationMode,n)}let o=G().webgpuRegisterDevice(e);if(o){let[e,t,r]=o;ot(a,`deviceId`,e.toString(),n),ot(a,`webgpuInstance`,t.toString(),n),ot(a,`webgpuDevice`,r.toString(),n)}}break;case`wasm`:case`cpu`:continue;default:throw Error(`not supported execution provider: ${r}`)}let o=Ze(r,n),s=a.length,c=0,l=0;if(s>0){c=G()._malloc(s*G().PTR_SIZE),n.push(c),l=G()._malloc(s*G().PTR_SIZE),n.push(l);for(let e=0;e<s;e++)G().setValue(c+e*G().PTR_SIZE,a[e][0],`*`),G().setValue(l+e*G().PTR_SIZE,a[e][1],`*`)}await G()._OrtAppendExecutionProvider(e,o,c,l,s)!==0&&K(`Can't append execution provider: ${r}.`)}},ct=async e=>{let t=G(),n=0,r=[],i=e||{};it(i);try{let e=nt(i.graphOptimizationLevel??`all`),a=rt(i.executionMode??`sequential`),o=typeof i.logId==`string`?Ze(i.logId,r):0,s=i.logSeverityLevel??2;if(!Number.isInteger(s)||s<0||s>4)throw Error(`log severity level is not valid: ${s}`);let c=i.logVerbosityLevel??0;if(!Number.isInteger(c)||c<0||c>4)throw Error(`log verbosity level is not valid: ${c}`);let l=typeof i.optimizedModelFilePath==`string`?Ze(i.optimizedModelFilePath,r):0;if(n=t._OrtCreateSessionOptions(e,!!i.enableCpuMemArena,!!i.enableMemPattern,a,!!i.enableProfiling,0,o,s,c,l),n===0&&K(`Can't create session options.`),i.executionProviders&&await st(n,i,r),i.enableGraphCapture!==void 0){if(typeof i.enableGraphCapture!=`boolean`)throw Error(`enableGraphCapture must be a boolean value: ${i.enableGraphCapture}`);at(n,`enableGraphCapture`,i.enableGraphCapture.toString(),r)}if(i.freeDimensionOverrides)for(let[e,a]of Object.entries(i.freeDimensionOverrides)){if(typeof e!=`string`)throw Error(`free dimension override name must be a string: ${e}`);if(typeof a!=`number`||!Number.isInteger(a)||a<0)throw Error(`free dimension override value must be a non-negative integer: ${a}`);let i=Ze(e,r);t._OrtAddFreeDimensionOverride(n,i,a)!==0&&K(`Can't set a free dimension override: ${e} - ${a}.`)}return i.extra!==void 0&&Qe(i.extra,``,new WeakSet,(e,t)=>{at(n,e,t,r)}),[n,r]}catch(e){throw n!==0&&t._OrtReleaseSessionOptions(n)!==0&&K(`Can't release session options.`),r.forEach(e=>t._free(e)),e}}}),ut,dt,q,ft,pt,mt,ht,gt,_t=a(()=>{"use strict";ut=e=>{switch(e){case`int8`:return 3;case`uint8`:return 2;case`bool`:return 9;case`int16`:return 5;case`uint16`:return 4;case`int32`:return 6;case`uint32`:return 12;case`float16`:return 10;case`float32`:return 1;case`float64`:return 11;case`string`:return 8;case`int64`:return 7;case`uint64`:return 13;case`int4`:return 22;case`uint4`:return 21;default:throw Error(`unsupported data type: ${e}`)}},dt=e=>{switch(e){case 3:return`int8`;case 2:return`uint8`;case 9:return`bool`;case 5:return`int16`;case 4:return`uint16`;case 6:return`int32`;case 12:return`uint32`;case 10:return`float16`;case 1:return`float32`;case 11:return`float64`;case 8:return`string`;case 7:return`int64`;case 13:return`uint64`;case 22:return`int4`;case 21:return`uint4`;default:throw Error(`unsupported data type: ${e}`)}},q=(e,t)=>{let n=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],r=typeof t==`number`?t:t.reduce((e,t)=>e*t,1);return n>0?Math.ceil(r*n):void 0},ft=e=>{switch(e){case`float16`:return typeof Float16Array<`u`?Float16Array:Uint16Array;case`float32`:return Float32Array;case`uint8`:return Uint8Array;case`int8`:return Int8Array;case`uint16`:return Uint16Array;case`int16`:return Int16Array;case`int32`:return Int32Array;case`bool`:return Uint8Array;case`float64`:return Float64Array;case`uint32`:return Uint32Array;case`int64`:return BigInt64Array;case`uint64`:return BigUint64Array;default:throw Error(`unsupported type: ${e}`)}},pt=e=>{switch(e){case`verbose`:return 0;case`info`:return 1;case`warning`:return 2;case`error`:return 3;case`fatal`:return 4;default:throw Error(`unsupported logging level: ${e}`)}},mt=e=>e===`float32`||e===`float16`||e===`int32`||e===`int64`||e===`uint32`||e===`uint8`||e===`bool`||e===`uint4`||e===`int4`,ht=e=>e===`float32`||e===`float16`||e===`int32`||e===`int64`||e===`uint32`||e===`uint64`||e===`int8`||e===`uint8`||e===`bool`||e===`uint4`||e===`int4`,gt=e=>{switch(e){case`none`:return 0;case`cpu`:return 1;case`cpu-pinned`:return 2;case`texture`:return 3;case`gpu-buffer`:return 4;case`ml-tensor`:return 5;default:throw Error(`unsupported data location: ${e}`)}}}),vt,yt=a(()=>{"use strict";_e(),vt=async e=>{if(typeof e==`string`){let t=await fetch(e);if(!t.ok)throw Error(`failed to load external data file: ${e}`);let n=t.headers.get(`Content-Length`),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw Error(`failed to load external data file: ${e}, no response body.`);let n=t.body.getReader(),i;try{i=new ArrayBuffer(r)}catch(e){if(e instanceof RangeError){let e=Math.ceil(r/65536);i=new WebAssembly.Memory({initial:e,maximum:e}).buffer}else throw e}let a=0;for(;;){let{done:e,value:t}=await n.read();if(e)break;let r=t.byteLength;new Uint8Array(i,a,r).set(t),a+=r}return new Uint8Array(i,0,r)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}}),bt,xt=a(()=>{"use strict";_t(),bt=(e,t)=>new(ft(t))(e)}),St,Ct,wt,Tt,Et,Dt,Ot,kt=a(()=>{"use strict";_t(),St=[`V`,`I`,`W`,`E`,`F`],Ct=(e,t)=>{console.log(`[${St[e]},${new Date().toISOString()}]${t}`)},Et=(e,t)=>{wt=e,Tt=t},Dt=(e,t)=>{let n=pt(e);n>=pt(wt)&&Ct(n,typeof t==`function`?t():t)},Ot=(...e)=>{Tt&&Dt(...e)}}),At,jt,J,Mt,Nt,Pt,Ft,It,Lt,Rt,zt,Bt=a(()=>{"use strict";_t(),kt(),At=new Map([[`float32`,32],[`float16`,16],[`int32`,32],[`uint32`,32],[`int64`,64],[`uint64`,64],[`int8`,8],[`uint8`,8],[`int4`,4],[`uint4`,4]]),jt=(e,t)=>{if(t===`int32`)return e;let n=At.get(t);if(!n)throw Error(`WebNN backend does not support data type: ${t}`);let r=n/8;if(e.byteLength%r!==0)throw Error(`Invalid Uint8Array length - must be a multiple of ${r}.`);let i=e.byteLength/r,a=new(ft(t))(e.buffer,e.byteOffset,i);switch(t){case`int64`:case`uint64`:{let e=new Int32Array(i);for(let t=0;t<i;t++){let n=a[t];if(n>2147483647n||n<-2147483648n)throw Error(`Can not convert int64 data to int32 - value out of range.`);e[t]=Number(n)}return new Uint8Array(e.buffer)}case`int8`:case`uint8`:case`uint32`:{if(t===`uint32`&&a.some(e=>e>2147483647))throw Error(`Can not convert uint32 data to int32 - value out of range.`);let e=Int32Array.from(a,Number);return new Uint8Array(e.buffer)}default:throw Error(`Unsupported data conversion from ${t} to 'int32'`)}},J=(e,t)=>{if(t===`int32`)return e;if(e.byteLength%4!=0)throw Error(`Invalid Uint8Array length - must be a multiple of 4 (int32).`);let n=e.byteLength/4,r=new Int32Array(e.buffer,e.byteOffset,n);switch(t){case`int64`:{let e=BigInt64Array.from(r,BigInt);return new Uint8Array(e.buffer)}case`uint64`:{if(r.some(e=>e<0))throw Error(`Can not convert int32 data to uin64 - negative value found.`);let e=BigUint64Array.from(r,BigInt);return new Uint8Array(e.buffer)}case`int8`:{if(r.some(e=>e<-128||e>127))throw Error(`Can not convert int32 data to int8 - value out of range.`);let e=Int8Array.from(r,Number);return new Uint8Array(e.buffer)}case`uint8`:if(r.some(e=>e<0||e>255))throw Error(`Can not convert int32 data to uint8 - value out of range.`);return Uint8Array.from(r,Number);case`uint32`:{if(r.some(e=>e<0))throw Error(`Can not convert int32 data to uint32 - negative value found.`);let e=Uint32Array.from(r,Number);return new Uint8Array(e.buffer)}default:throw Error(`Unsupported data conversion from 'int32' to ${t}`)}},Mt=1,Nt=()=>Mt++,Pt=new Map([[`int8`,`int32`],[`uint8`,`int32`],[`uint32`,`int32`],[`int64`,`int32`]]),Ft=(e,t)=>{let n=At.get(e);if(!n)throw Error(`WebNN backend does not support data type: ${e}`);return t.length>0?Math.ceil(t.reduce((e,t)=>e*t)*n/8):0},It=class{constructor(e){this.isDataConverted=!1;let{sessionId:t,context:n,tensor:r,dataType:i,shape:a,fallbackDataType:o}=e;this.sessionId=t,this.mlContext=n,this.mlTensor=r,this.dataType=i,this.tensorShape=a,this.fallbackDataType=o}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return Ft(this.dataType,this.tensorShape)}destroy(){Ot(`verbose`,()=>`[WebNN] TensorWrapper.destroy`),this.mlTensor.destroy()}write(e){this.mlContext.writeTensor(this.mlTensor,e)}async read(e){if(this.fallbackDataType){let t=await this.mlContext.readTensor(this.mlTensor),n=J(new Uint8Array(t),this.dataType);if(e){(e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).set(n);return}else return new Uint8Array(n).buffer}else return e?this.mlContext.readTensor(this.mlTensor,e):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(e,t,n){return this.mlContext===e&&this.dataType===t&&this.tensorShape.length===n.length&&this.tensorShape.every((e,t)=>e===n[t])}setIsDataConverted(e){this.isDataConverted=e}},Lt=class{constructor(e,t){this.tensorManager=e,this.wrapper=t}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(e,t,n,r){let i=this.tensorManager.getMLContext(e),a=this.tensorManager.getMLOpSupportLimits(e),o;if(!a?.input.dataTypes.includes(t)){if(o=Pt.get(t),!o||a?.input.dataTypes.includes(o))throw Error(`WebNN backend does not support data type: ${t}`);Ot(`verbose`,()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${t} to ${o}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(i,t,n))return this.wrapper.tensor;if(r){if(this.wrapper.byteLength!==Ft(t,n))throw Error(`Unable to copy data to tensor with different size.`);this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let s=typeof MLTensorUsage>`u`?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(e,t,n,s,!0,!0,o),r&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(e){let t=e;if(this.wrapper){if(this.wrapper.fallbackType)if(this.wrapper.fallbackType===`int32`)t=jt(e,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(e.byteLength===this.wrapper.byteLength){this.wrapper.write(t);return}else Ot(`verbose`,()=>`Data size does not match tensor size. Releasing tensor.`),this.releaseTensor()}this.activeUpload?this.activeUpload.set(t):this.activeUpload=new Uint8Array(t)}async download(e){if(this.activeUpload){let t=this.wrapper?.isDataConverted?J(this.activeUpload,this.wrapper?.type):this.activeUpload;if(e){e instanceof ArrayBuffer?new Uint8Array(e).set(t):new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t);return}else return t.buffer}if(!this.wrapper)throw Error(`Tensor has not been created.`);return e?this.wrapper.read(e):this.wrapper.read()}},Rt=class{constructor(e){this.backend=e,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(e){let t=this.backend.getMLContext(e);if(!t)throw Error(`MLContext not found for session.`);return t}getMLOpSupportLimits(e){return this.backend.getMLOpSupportLimits(e)}reserveTensorId(){let e=Nt();return this.tensorTrackersById.set(e,new Lt(this)),e}releaseTensorId(e){let t=this.tensorTrackersById.get(e);t&&(this.tensorTrackersById.delete(e),t.tensorWrapper&&this.releaseTensor(t.tensorWrapper))}async ensureTensor(e,t,n,r,i){Ot(`verbose`,()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${t}, dataType: ${n}, shape: ${r}, copyOld: ${i}}`);let a=this.tensorTrackersById.get(t);if(!a)throw Error(`Tensor not found.`);return a.ensureTensor(e,n,r,i)}upload(e,t){let n=this.tensorTrackersById.get(e);if(!n)throw Error(`Tensor not found.`);n.upload(t)}async download(e,t){Ot(`verbose`,()=>`[WebNN] TensorManager.download {tensorId: ${e}, dstBuffer: ${t?.byteLength}}`);let n=this.tensorTrackersById.get(e);if(!n)throw Error(`Tensor not found.`);return n.download(t)}releaseTensorsForSession(e){for(let t of this.freeTensors)t.sessionId===e&&t.destroy();this.freeTensors=this.freeTensors.filter(t=>t.sessionId!==e)}registerTensor(e,t,n,r){let i=this.getMLContext(e),a=Nt(),o=new It({sessionId:e,context:i,tensor:t,dataType:n,shape:r});return this.tensorTrackersById.set(a,new Lt(this,o)),this.externalTensors.add(o),a}async getCachedTensor(e,t,n,r,i,a,o){let s=this.getMLContext(e);for(let[r,i]of this.freeTensors.entries())if(i.canReuseTensor(s,t,n)){Ot(`verbose`,()=>`[WebNN] Reusing tensor {dataType: ${t}, ${o?`fallbackDataType: ${o},`:``} shape: ${n}`);let i=this.freeTensors.splice(r,1)[0];return i.sessionId=e,i}Ot(`verbose`,()=>`[WebNN] MLContext.createTensor {dataType: ${t}, ${o?`fallbackDataType: ${o},`:``} shape: ${n}}`);let c=await s.createTensor({dataType:o??t,shape:n,dimensions:n,usage:r,writable:i,readable:a});return new It({sessionId:e,context:s,tensor:c,dataType:t,shape:n,fallbackDataType:o})}releaseTensor(e){this.externalTensors.has(e)&&this.externalTensors.delete(e),this.freeTensors.push(e)}},zt=(...e)=>new Rt(...e)}),Vt={};o(Vt,{WebNNBackend:()=>Wt});var Ht,Ut,Wt,Gt=a(()=>{"use strict";_t(),Xe(),xt(),Bt(),kt(),Ht=new Map([[1,`float32`],[10,`float16`],[6,`int32`],[12,`uint32`],[7,`int64`],[13,`uint64`],[22,`int4`],[21,`uint4`],[3,`int8`],[2,`uint8`],[9,`uint8`]]),Ut=(e,t)=>{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((n,i)=>n===r[i]&&e[n]===t[n])},Wt=class{constructor(e){this.tensorManager=zt(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.sessionGraphOutputs=new Map,this.temporaryGraphInputs=[],this.temporaryGraphOutputs=[],this.temporarySessionTensorIds=new Map,this.mlOpSupportLimitsBySessionId=new Map,Et(e.logLevel,!!e.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw Error(`No active session`);return this.activeSessionId}onRunStart(e){Ot(`verbose`,()=>`[WebNN] onRunStart {sessionId: ${e}}`),this.activeSessionId=e}onRunEnd(e){Ot(`verbose`,()=>`[WebNN] onRunEnd {sessionId: ${e}}`);let t=this.temporarySessionTensorIds.get(e);if(t){for(let e of t)Ot(`verbose`,()=>`[WebNN] releasing temporary tensor {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e);this.temporarySessionTensorIds.delete(e),this.activeSessionId=void 0}}async createMLContext(e){if(e instanceof GPUDevice){let t=this.mlContextCache.findIndex(t=>t.gpuDevice===e);if(t!==-1)return this.mlContextCache[t].mlContext;{let t=await navigator.ml.createContext(e);return this.mlContextCache.push({gpuDevice:e,mlContext:t}),t}}else if(e===void 0){let e=this.mlContextCache.findIndex(e=>e.options===void 0&&e.gpuDevice===void 0);if(e!==-1)return this.mlContextCache[e].mlContext;{let e=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:e}),e}}let t=this.mlContextCache.findIndex(t=>Ut(t.options,e));if(t!==-1)return this.mlContextCache[t].mlContext;{let t=await navigator.ml.createContext(e);return this.mlContextCache.push({options:e,mlContext:t}),t}}registerMLContext(e,t){this.mlContextBySessionId.set(e,t);let n=this.sessionIdsByMLContext.get(t);n||(n=new Set,this.sessionIdsByMLContext.set(t,n)),n.add(e),this.mlOpSupportLimitsBySessionId.has(e)||this.mlOpSupportLimitsBySessionId.set(e,t.opSupportLimits()),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(e,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(e,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(e){this.sessionGraphInputs.delete(e),this.sessionGraphOutputs.delete(e);let t=this.mlContextBySessionId.get(e);if(!t)return;this.tensorManager.releaseTensorsForSession(e),this.mlContextBySessionId.delete(e),this.mlOpSupportLimitsBySessionId.delete(e);let n=this.sessionIdsByMLContext.get(t);if(n.delete(e),n.size===0){this.sessionIdsByMLContext.delete(t);let e=this.mlContextCache.findIndex(e=>e.mlContext===t);e!==-1&&this.mlContextCache.splice(e,1)}}getMLContext(e){return this.mlContextBySessionId.get(e)}getMLOpSupportLimits(e){return this.mlOpSupportLimitsBySessionId.get(e)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(e){Ot(`verbose`,()=>`[WebNN] releaseTensorId {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e)}async ensureTensor(e,t,n,r,i){let a=Ht.get(n);if(!a)throw Error(`Unsupported ONNX data type: ${n}`);return this.tensorManager.ensureTensor(e??this.currentSessionId,t,a,r,i)}async createTemporaryTensor(e,t,n){Ot(`verbose`,()=>`[WebNN] createTemporaryTensor {onnxDataType: ${t}, shape: ${n}}`);let r=Ht.get(t);if(!r)throw Error(`Unsupported ONNX data type: ${t}`);let i=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(e,i,r,n,!1);let a=this.temporarySessionTensorIds.get(e);return a?a.push(i):this.temporarySessionTensorIds.set(e,[i]),i}uploadTensor(e,t){if(!G().shouldTransferToMLTensor)throw Error(`Trying to upload to a MLTensor while shouldTransferToMLTensor is false`);Ot(`verbose`,()=>`[WebNN] uploadTensor {tensorId: ${e}, data: ${t.byteLength}}`),this.tensorManager.upload(e,t)}async downloadTensor(e,t){return this.tensorManager.download(e,t)}createMLTensorDownloader(e,t){return async()=>{let n=await this.tensorManager.download(e);return bt(n,t)}}registerMLTensor(e,t,n,r){let i=Ht.get(n);if(!i)throw Error(`Unsupported ONNX data type: ${n}`);let a=this.tensorManager.registerTensor(e,t,i,r);return Ot(`verbose`,()=>`[WebNN] registerMLTensor {tensor: ${t}, dataType: ${i}, dimensions: ${r}} -> {tensorId: ${a}}`),a}registerMLConstant(e,t,n,r,i,a,o=!1){if(!a)throw Error(`External mounted files are not available.`);let s=e;e.startsWith(`./`)&&(s=e.substring(2));let c=a.get(s);if(!c)throw Error(`File with name ${s} not found in preloaded files.`);if(t+n>c.byteLength)throw Error(`Out of bounds: data offset and length exceed the external file data size.`);let l=c.slice(t,t+n).buffer,u;switch(i.dataType){case`float32`:u=new Float32Array(l);break;case`float16`:u=typeof Float16Array<`u`?new Float16Array(l):new Uint16Array(l);break;case`int32`:u=new Int32Array(l);break;case`uint32`:u=new Uint32Array(l);break;case`int64`:if(o){let e=jt(new Uint8Array(l),`int64`);u=new Int32Array(e.buffer),i.dataType=`int32`}else u=new BigInt64Array(l);break;case`uint64`:u=new BigUint64Array(l);break;case`int8`:u=new Int8Array(l);break;case`int4`:case`uint4`:case`uint8`:u=new Uint8Array(l);break;default:throw Error(`Unsupported data type: ${i.dataType} in creating WebNN Constant from external data.`)}return Ot(`verbose`,()=>`[WebNN] registerMLConstant {dataType: ${i.dataType}, shape: ${i.shape}}} ${o?`(Note: it was int64 data type and registered to int32 as workaround)`:``}`),r.constant(i,u)}registerGraphInput(e){this.temporaryGraphInputs.push(e)}registerGraphOutput(e){this.temporaryGraphOutputs.push(e)}isGraphInput(e,t){let n=this.sessionGraphInputs.get(e);return n?n.includes(t):!1}isGraphOutput(e,t){let n=this.sessionGraphOutputs.get(e);return n?n.includes(t):!1}isGraphInputOutputTypeSupported(e,t,n=!0){let r=Ht.get(ut(t)),i=this.mlOpSupportLimitsBySessionId.get(e);return typeof r>`u`?!1:n?!!i?.input.dataTypes.includes(r):!!i?.output.dataTypes.includes(r)}flush(){}}}),Kt,qt,Jt,Yt,Xt,Zt,Qt,$t,en,tn,nn,rn,an,on=a(()=>{"use strict";ge(),tt(),lt(),_t(),Xe(),$e(),yt(),Kt=(e,t)=>{G()._OrtInit(e,t)!==0&&K(`Can't initialize onnxruntime.`)},qt=async e=>{Kt(e.wasm.numThreads,pt(e.logLevel))},Jt=async(e,t)=>{G().asyncInit?.();let n=e.webgpu.adapter;if(t===`webgpu`){if(typeof navigator>`u`||!navigator.gpu)throw Error(`WebGPU is not supported in current environment`);if(n){if(typeof n.limits!=`object`||typeof n.features!=`object`||typeof n.requestDevice!=`function`)throw Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let t=e.webgpu.powerPreference;if(t!==void 0&&t!==`low-power`&&t!==`high-performance`)throw Error(`Invalid powerPreference setting: "${t}"`);let r=e.webgpu.forceFallbackAdapter;if(r!==void 0&&typeof r!=`boolean`)throw Error(`Invalid forceFallbackAdapter setting: "${r}"`);if(n=await navigator.gpu.requestAdapter({powerPreference:t,forceFallbackAdapter:r}),!n)throw Error(`Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.`)}}if(t===`webnn`&&(typeof navigator>`u`||!navigator.ml))throw Error(`WebNN is not supported in current environment`);if(t===`webgpu`&&G().webgpuInit(t=>{e.webgpu.device=t}),t===`webnn`){let t=new(Gt(),c(Vt)).WebNNBackend(e);G().webnnInit([t,()=>t.reserveTensorId(),e=>t.releaseTensorId(e),async(e,n,r,i,a)=>t.ensureTensor(e,n,r,i,a),(e,n)=>{t.uploadTensor(e,n)},async(e,n)=>t.downloadTensor(e,n),(e,n)=>t.registerMLContext(e,n),!!e.trace])}},Yt=new Map,Xt=e=>{let t=G(),n=t.stackSave();try{let n=t.PTR_SIZE,r=t.stackAlloc(2*n);t._OrtGetInputOutputCount(e,r,r+n)!==0&&K(`Can't get session input/output count.`);let i=n===4?`i32`:`i64`;return[Number(t.getValue(r,i)),Number(t.getValue(r+n,i))]}finally{t.stackRestore(n)}},Zt=(e,t)=>{let n=G(),r=n.stackSave(),i=0;try{let r=n.PTR_SIZE,a=n.stackAlloc(2*r);n._OrtGetInputOutputMetadata(e,t,a,a+r)!==0&&K(`Can't get session input/output metadata.`);let o=Number(n.getValue(a,`*`));i=Number(n.getValue(a+r,`*`));let s=n.HEAP32[i/4];if(s===0)return[o,0];let c=n.HEAPU32[i/4+1],l=[];for(let e=0;e<c;e++){let t=Number(n.getValue(i+8+e*r,`*`));l.push(t===0?Number(n.getValue(i+8+(e+c)*r,`*`)):n.UTF8ToString(t))}return[o,s,l]}finally{n.stackRestore(r),i!==0&&n._OrtFree(i)}},Qt=e=>{let t=G(),n=t._malloc(e.byteLength);if(n===0)throw Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,n),[n,e.byteLength]},$t=async(e,t)=>{let n,r,i=G();Array.isArray(e)?[n,r]=e:e.buffer===i.HEAPU8.buffer?[n,r]=[e.byteOffset,e.byteLength]:[n,r]=Qt(e);let a=0,o=0,s=0,c=[],l=[],u=[];try{if([o,c]=await ct(t),t?.externalData&&i.mountExternalData){let e=[];for(let n of t.externalData){let t=typeof n==`string`?n:n.path;e.push(vt(typeof n==`string`?n:n.data).then(e=>{i.mountExternalData(t,e)}))}await Promise.all(e)}for(let e of t?.executionProviders??[])if((typeof e==`string`?e:e.name)===`webnn`){if(i.shouldTransferToMLTensor=!1,typeof e!=`string`){let t=e,n=t?.context,r=t?.gpuDevice,a=t?.deviceType,o=t?.powerPreference;n?i.currentContext=n:r?i.currentContext=await i.webnnCreateMLContext(r):i.currentContext=await i.webnnCreateMLContext({deviceType:a,powerPreference:o})}else i.currentContext=await i.webnnCreateMLContext();break}a=await i._OrtCreateSession(n,r,o),i.webgpuOnCreateSession?.(a),a===0&&K(`Can't create a session.`),i.jsepOnCreateSession?.(),i.currentContext&&(i.webnnRegisterMLContext(a,i.currentContext),i.currentContext=void 0,i.shouldTransferToMLTensor=!0);let[e,d]=Xt(a),f=!!t?.enableGraphCapture,p=[],m=[],h=[],g=[],_=[];for(let t=0;t<e;t++){let[e,n,r]=Zt(a,t);e===0&&K(`Can't get an input name.`),l.push(e);let o=i.UTF8ToString(e);p.push(o),h.push(n===0?{name:o,isTensor:!1}:{name:o,isTensor:!0,type:dt(n),shape:r})}for(let n=0;n<d;n++){let[r,o,s]=Zt(a,n+e);r===0&&K(`Can't get an output name.`),u.push(r);let c=i.UTF8ToString(r);m.push(c),g.push(o===0?{name:c,isTensor:!1}:{name:c,isTensor:!0,type:dt(o),shape:s});{if(f&&t?.preferredOutputLocation===void 0){_.push(`gpu-buffer`);continue}let e=typeof t?.preferredOutputLocation==`string`?t.preferredOutputLocation:t?.preferredOutputLocation?.[c]??`cpu`,n=i.webnnIsGraphOutput;if(e===`cpu`&&n&&n(a,c)){_.push(`ml-tensor-cpu-output`);continue}if(e!==`cpu`&&e!==`cpu-pinned`&&e!==`gpu-buffer`&&e!==`ml-tensor`)throw Error(`Not supported preferred output location: ${e}.`);if(f&&e!==`gpu-buffer`)throw Error(`Not supported preferred output location: ${e}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);_.push(e)}}let v=null;return _.some(e=>e===`gpu-buffer`||e===`ml-tensor`||e===`ml-tensor-cpu-output`)&&(s=i._OrtCreateBinding(a),s===0&&K(`Can't create IO binding.`),v={handle:s,outputPreferredLocations:_,outputPreferredLocationsEncoded:_.map(e=>e===`ml-tensor-cpu-output`?`ml-tensor`:e).map(e=>gt(e))}),Yt.set(a,[a,l,u,v,f,!1]),[a,p,m,h,g]}catch(e){throw l.forEach(e=>i._OrtFree(e)),u.forEach(e=>i._OrtFree(e)),s!==0&&i._OrtReleaseBinding(s)!==0&&K(`Can't release IO binding.`),a!==0&&i._OrtReleaseSession(a)!==0&&K(`Can't release session.`),e}finally{i._free(n),o!==0&&i._OrtReleaseSessionOptions(o)!==0&&K(`Can't release session options.`),c.forEach(e=>i._free(e)),i.unmountExternalData?.()}},en=e=>{let t=G(),n=Yt.get(e);if(!n)throw Error(`cannot release session. invalid session id: ${e}`);let[r,i,a,o,s]=n;o&&(s&&t._OrtClearBoundOutputs(o.handle)!==0&&K(`Can't clear bound outputs.`),t._OrtReleaseBinding(o.handle)!==0&&K(`Can't release IO binding.`)),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),i.forEach(e=>t._OrtFree(e)),a.forEach(e=>t._OrtFree(e)),t._OrtReleaseSession(r)!==0&&K(`Can't release session.`),Yt.delete(e)},tn=async(e,t,n,r,i,a,o=!1)=>{if(!e){t.push(0);return}let s=G(),c=s.PTR_SIZE,l=e[0],u=e[1],d=e[3],f=d,p,m;if(l===`string`&&(d===`gpu-buffer`||d===`ml-tensor`))throw Error(`String tensor is not supported on GPU.`);if(o&&d!==`gpu-buffer`)throw Error(`External buffer must be provided for input/output index ${a} when enableGraphCapture is true.`);if(d===`gpu-buffer`){let t=e[2].gpuBuffer;m=q(ut(l),u);{let e=s.webgpuRegisterBuffer;if(!e)throw Error(`Tensor location "gpu-buffer" is not supported without using WebGPU.`);p=e(t,r)}}else if(d===`ml-tensor`){let t=e[2].mlTensor;m=q(ut(l),u);let n=s.webnnRegisterMLTensor;if(!n)throw Error(`Tensor location "ml-tensor" is not supported without using WebNN.`);p=n(r,t,ut(l),u)}else{let t=e[2];if(Array.isArray(t)){m=c*t.length,p=s._malloc(m),n.push(p);for(let e=0;e<t.length;e++){if(typeof t[e]!=`string`)throw TypeError(`tensor data at index ${e} is not a string`);s.setValue(p+e*c,Ze(t[e],n),`*`)}}else{let e=s.webnnIsGraphInput,a=s.webnnIsGraphOutput;if(l!==`string`&&e&&a){let o=s.UTF8ToString(i);if(e(r,o)||a(r,o)){let e=ut(l);m=q(e,u),f=`ml-tensor`;let n=s.webnnCreateTemporaryTensor,i=s.webnnUploadTensor;if(!n||!i)throw Error(`Tensor location "ml-tensor" is not supported without using WebNN.`);let a=await n(r,e,u);i(a,new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),p=a}else m=t.byteLength,p=s._malloc(m),n.push(p),s.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,m),p)}else m=t.byteLength,p=s._malloc(m),n.push(p),s.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,m),p)}}let h=s.stackSave(),g=s.stackAlloc(4*u.length);try{u.forEach((e,t)=>s.setValue(g+t*c,e,c===4?`i32`:`i64`));let e=s._OrtCreateTensor(ut(l),p,m,g,u.length,gt(f));e===0&&K(`Can't create tensor for input/output. session=${r}, index=${a}.`),t.push(e)}finally{s.stackRestore(h)}},nn=async(e,t,n,r,i,a)=>{let o=G(),s=o.PTR_SIZE,c=Yt.get(e);if(!c)throw Error(`cannot run inference. invalid session id: ${e}`);let l=c[0],u=c[1],d=c[2],f=c[3],p=c[4],m=c[5],h=t.length,g=r.length,_=0,v=[],y=[],b=[],x=[],S=[],C=o.stackSave(),w=o.stackAlloc(h*s),T=o.stackAlloc(h*s),E=o.stackAlloc(g*s),D=o.stackAlloc(g*s);try{[_,v]=et(a),U(`wasm prepareInputOutputTensor`);for(let r=0;r<h;r++)await tn(n[r],y,x,e,u[t[r]],t[r],p);for(let t=0;t<g;t++)await tn(i[t],b,x,e,d[r[t]],h+r[t],p);oe(`wasm prepareInputOutputTensor`);for(let e=0;e<h;e++)o.setValue(w+e*s,y[e],`*`),o.setValue(T+e*s,u[t[e]],`*`);for(let e=0;e<g;e++)o.setValue(E+e*s,b[e],`*`),o.setValue(D+e*s,d[r[e]],`*`);if(f&&!m){let{handle:n,outputPreferredLocations:a,outputPreferredLocationsEncoded:s}=f;if(u.length!==h)throw Error(`input count from feeds (${h}) is expected to be always equal to model's input count (${u.length}).`);U(`wasm bindInputsOutputs`);for(let r=0;r<h;r++){let i=t[r];await o._OrtBindInput(n,u[i],y[r])!==0&&K(`Can't bind input[${r}] for session=${e}.`)}for(let t=0;t<g;t++){let c=r[t];i[t]?.[3]?(S.push(b[t]),o._OrtBindOutput(n,d[c],b[t],0)!==0&&K(`Can't bind pre-allocated output[${t}] for session=${e}.`)):o._OrtBindOutput(n,d[c],0,s[c])!==0&&K(`Can't bind output[${t}] to ${a[t]} for session=${e}.`)}oe(`wasm bindInputsOutputs`),Yt.set(e,[l,u,d,f,p,!0])}o.jsepOnRunStart?.(l),o.webnnOnRunStart?.(l);let c;c=f?await o._OrtRunWithBinding(l,f.handle,g,E,_):await o._OrtRun(l,T,w,h,D,g,E,_),c!==0&&K(`failed to call OrtRun().`);let C=[],O=[];U(`wasm ProcessOutputTensor`);for(let t=0;t<g;t++){let n=Number(o.getValue(E+t*s,`*`));if(n===b[t]||S.includes(b[t])){C.push(i[t]),n!==b[t]&&o._OrtReleaseTensor(n)!==0&&K(`Can't release tensor.`);continue}let a=o.stackSave(),c=o.stackAlloc(4*s),l=!1,u,d=0;try{o._OrtGetTensorData(n,c,c+s,c+2*s,c+3*s)!==0&&K(`Can't access output tensor data on index ${t}.`);let i=s===4?`i32`:`i64`,a=Number(o.getValue(c,i));d=o.getValue(c+s,`*`);let p=o.getValue(c+s*2,`*`),m=Number(o.getValue(c+s*3,i)),h=[];for(let e=0;e<m;e++)h.push(Number(o.getValue(p+e*s,i)));o._OrtFree(p)!==0&&K(`Can't free memory for tensor dims.`);let g=h.reduce((e,t)=>e*t,1);u=dt(a);let _=f?.outputPreferredLocations[r[t]];if(u===`string`){if(_===`gpu-buffer`||_===`ml-tensor`)throw Error(`String tensor is not supported on GPU.`);let e=[];for(let t=0;t<g;t++){let n=o.getValue(d+t*s,`*`),r=o.getValue(d+(t+1)*s,`*`),i=t===g-1?void 0:r-n;e.push(o.UTF8ToString(n,i))}C.push([u,h,e,`cpu`])}else if(_===`gpu-buffer`&&g>0){let t=o.webgpuGetBuffer;if(!t)throw Error(`preferredLocation "gpu-buffer" is not supported without using WebGPU.`);let r=t(d),i=q(a,g);if(i===void 0||!mt(u))throw Error(`Unsupported data type: ${u}`);l=!0;{o.webgpuRegisterBuffer(r,e,d);let t=o.webgpuCreateDownloader(r,i,e);C.push([u,h,{gpuBuffer:r,download:async()=>{let e=await t();return new(ft(u))(e)},dispose:()=>{o._OrtReleaseTensor(n)!==0&&K(`Can't release tensor.`)}},`gpu-buffer`])}}else if(_===`ml-tensor`&&g>0){let t=o.webnnEnsureTensor,r=o.webnnIsGraphInputOutputTypeSupported;if(!t||!r)throw Error(`preferredLocation "ml-tensor" is not supported without using WebNN.`);if(q(a,g)===void 0||!ht(u))throw Error(`Unsupported data type: ${u}`);if(!r(e,u,!1))throw Error(`preferredLocation "ml-tensor" for ${u} output is not supported by current WebNN Context.`);let i=await t(e,d,a,h,!1);l=!0,C.push([u,h,{mlTensor:i,download:o.webnnCreateMLTensorDownloader(d,u),dispose:()=>{o.webnnReleaseTensorId(d),o._OrtReleaseTensor(n)}},`ml-tensor`])}else if(_===`ml-tensor-cpu-output`&&g>0){let e=o.webnnCreateMLTensorDownloader(d,u)(),t=C.length;l=!0,O.push((async()=>{let r=[t,await e];return o.webnnReleaseTensorId(d),o._OrtReleaseTensor(n),r})()),C.push([u,h,[],`cpu`])}else{let e=new(ft(u))(g);new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(o.HEAPU8.subarray(d,d+e.byteLength)),C.push([u,h,e,`cpu`])}}finally{o.stackRestore(a),u===`string`&&d&&o._free(d),l||o._OrtReleaseTensor(n)}}f&&!p&&(o._OrtClearBoundOutputs(f.handle)!==0&&K(`Can't clear bound outputs.`),Yt.set(e,[l,u,d,f,p,!1]));for(let[e,t]of await Promise.all(O))C[e][2]=t;return oe(`wasm ProcessOutputTensor`),C}finally{o.webnnOnRunEnd?.(l),o.stackRestore(C),n.forEach(e=>{e&&e[3]===`gpu-buffer`&&o.webgpuUnregisterBuffer(e[2].gpuBuffer)}),i.forEach(e=>{e&&e[3]===`gpu-buffer`&&o.webgpuUnregisterBuffer(e[2].gpuBuffer)}),y.forEach(e=>o._OrtReleaseTensor(e)),b.forEach(e=>o._OrtReleaseTensor(e)),x.forEach(e=>o._free(e)),_!==0&&o._OrtReleaseRunOptions(_),v.forEach(e=>o._free(e))}},rn=e=>{let t=G(),n=Yt.get(e);if(!n)throw Error(`invalid session id`);let r=n[0],i=t._OrtEndProfiling(r);i===0&&K(`Can't get an profile file name.`),t._OrtFree(i)},an=e=>{let t=[];for(let n of e){let e=n[2];!Array.isArray(e)&&`buffer`in e&&t.push(e.buffer)}return t}}),sn,cn,ln,un,dn,fn,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn,wn,Tn=a(()=>{"use strict";ge(),on(),Xe(),Ve(),sn=()=>!!x.wasm.proxy&&typeof document<`u`,ln=!1,un=!1,dn=!1,mn=new Map,hn=(e,t)=>{let n=mn.get(e);n?n.push(t):mn.set(e,[t])},gn=()=>{if(ln||!un||dn||!cn)throw Error(`worker not ready`)},_n=e=>{switch(e.data.type){case`init-wasm`:ln=!1,e.data.err?(dn=!0,pn[1](e.data.err)):(un=!0,pn[0]()),fn&&=(URL.revokeObjectURL(fn),void 0);break;case`init-ep`:case`copy-from`:case`create`:case`release`:case`run`:case`end-profiling`:{let t=mn.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}default:}},vn=async()=>{if(!un){if(ln)throw Error(`multiple calls to 'initWasm()' detected.`);if(dn)throw Error(`previous call to 'initWasm()' failed.`);if(ln=!0,sn())return new Promise((e,t)=>{cn?.terminate(),Re().then(([n,r])=>{try{cn=r,cn.onerror=e=>t(e),cn.onmessage=_n,pn=[e,t];let i={type:`init-wasm`,in:x};!i.in.wasm.wasmPaths&&(n||Oe)&&(i.in.wasm.wasmPaths={wasm:new URL(`/assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm`,``+self.location.href).href}),cn.postMessage(i),fn=n}catch(e){t(e)}},t)});try{await Ye(x.wasm),await qt(x),un=!0}catch(e){throw dn=!0,e}finally{ln=!1}}},yn=async e=>{if(sn())return gn(),new Promise((t,n)=>{hn(`init-ep`,[t,n]);let r={type:`init-ep`,in:{epName:e,env:x}};cn.postMessage(r)});await Jt(x,e)},bn=async e=>sn()?(gn(),new Promise((t,n)=>{hn(`copy-from`,[t,n]);let r={type:`copy-from`,in:{buffer:e}};cn.postMessage(r,[e.buffer])})):Qt(e),xn=async(e,t)=>{if(sn()){if(t?.preferredOutputLocation)throw Error(`session option "preferredOutputLocation" is not supported for proxy.`);return gn(),new Promise((n,r)=>{hn(`create`,[n,r]);let i={type:`create`,in:{model:e,options:{...t}}},a=[];e instanceof Uint8Array&&a.push(e.buffer),cn.postMessage(i,a)})}else return $t(e,t)},Sn=async e=>{if(sn())return gn(),new Promise((t,n)=>{hn(`release`,[t,n]);let r={type:`release`,in:e};cn.postMessage(r)});en(e)},Cn=async(e,t,n,r,i,a)=>{if(sn()){if(n.some(e=>e[3]!==`cpu`))throw Error(`input tensor on GPU is not supported for proxy.`);if(i.some(e=>e))throw Error(`pre-allocated output tensor is not supported for proxy.`);return gn(),new Promise((i,o)=>{hn(`run`,[i,o]);let s=n,c={type:`run`,in:{sessionId:e,inputIndices:t,inputs:s,outputIndices:r,options:a}};cn.postMessage(c,an(s))})}else return nn(e,t,n,r,i,a)},wn=async e=>{if(sn())return gn(),new Promise((t,n)=>{hn(`end-profiling`,[t,n]);let r={type:`end-profiling`,in:e};cn.postMessage(r)});rn(e)}}),En,Dn,On,kn=a(()=>{"use strict";ge(),Tn(),_t(),_e(),yt(),En=(e,t)=>{switch(e.location){case`cpu`:return[e.type,e.dims,e.data,`cpu`];case`gpu-buffer`:return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},`gpu-buffer`];case`ml-tensor`:return[e.type,e.dims,{mlTensor:e.mlTensor},`ml-tensor`];default:throw Error(`invalid data location: ${e.location} for ${t()}`)}},Dn=e=>{switch(e[3]){case`cpu`:return new te(e[0],e[2],e[1]);case`gpu-buffer`:{let t=e[0];if(!mt(t))throw Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:i}=e[2];return te.fromGpuBuffer(n,{dataType:t,dims:e[1],download:r,dispose:i})}case`ml-tensor`:{let t=e[0];if(!ht(t))throw Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:n,download:r,dispose:i}=e[2];return te.fromMLTensor(n,{dataType:t,dims:e[1],download:r,dispose:i})}default:throw Error(`invalid data location: ${e[3]}`)}},On=class{async fetchModelAndCopyToWasmMemory(e){return bn(await vt(e))}async loadModel(e,t){ae();let n;n=typeof e==`string`?await this.fetchModelAndCopyToWasmMemory(e):e,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await xn(n,t),H()}async dispose(){return Sn(this.sessionId)}async run(e,t,n){ae();let r=[],i=[];Object.entries(e).forEach(e=>{let t=e[0],n=e[1],a=this.inputNames.indexOf(t);if(a===-1)throw Error(`invalid input '${t}'`);r.push(n),i.push(a)});let a=[],o=[];Object.entries(t).forEach(e=>{let t=e[0],n=e[1],r=this.outputNames.indexOf(t);if(r===-1)throw Error(`invalid output '${t}'`);a.push(n),o.push(r)});let s=r.map((e,t)=>En(e,()=>`input "${this.inputNames[i[t]]}"`)),c=a.map((e,t)=>e?En(e,()=>`output "${this.outputNames[o[t]]}"`):null),l=await Cn(this.sessionId,i,s,o,c,n),u={};for(let e=0;e<l.length;e++)u[this.outputNames[o[e]]]=a[e]??Dn(l[e]);return H(),u}startProfiling(){}endProfiling(){wn(this.sessionId)}}}),An={};o(An,{OnnxruntimeWebAssemblyBackend:()=>Mn,initializeFlags:()=>jn,wasmBackend:()=>Nn});var jn,Mn,Nn,Pn=a(()=>{"use strict";ge(),Tn(),kn(),jn=()=>{(typeof x.wasm.initTimeout!=`number`||x.wasm.initTimeout<0)&&(x.wasm.initTimeout=0);let e=x.wasm.simd;if(typeof e!=`boolean`&&e!==void 0&&e!==`fixed`&&e!==`relaxed`&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${e}". Reset it to \`false\` and ignore SIMD feature checking.`),x.wasm.simd=!1),typeof x.wasm.proxy!=`boolean`&&(x.wasm.proxy=!1),typeof x.wasm.trace!=`boolean`&&(x.wasm.trace=!1),typeof x.wasm.numThreads!=`number`||!Number.isInteger(x.wasm.numThreads)||x.wasm.numThreads<=0)if(typeof self<`u`&&!self.crossOriginIsolated)x.wasm.numThreads=1;else{let e=typeof navigator>`u`?i(`node:os`).cpus().length:navigator.hardwareConcurrency;x.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},Mn=class{async init(e){jn(),await vn(),await yn(e)}async createInferenceSessionHandler(e,t){let n=new On;return await n.loadModel(e,t),n}},Nn=new Mn});ge(),ge(),ge();var Fn=`1.27.0`;{let e=(Pn(),c(An)).wasmBackend;d(`webgpu`,e,5),d(`webnn`,e,5),d(`cpu`,e,10),d(`wasm`,e,10)}Object.defineProperty(x.versions,"web",{value:Fn,enumerable:!0});function In(e,t,n,r,i,a,o,s,c,l){let u=n[r]|0,d=n[r+1]|0,f=n[r+2]|0,p=n[r+3]|0,m=n[r+4]|0,h=n[r+5]|0,g=n[r+6]|0,_=n[r+7]|0,v=n[r+8]|0,y=n[r+9]|0,b=n[r+10]|0,x=n[r+11]|0,S=n[r+12]|0,C=n[r+13]|0,w=n[r+14]|0,T=n[r+15]|0,E=e[t]|0,D=e[t+1]|0,O=e[t+2]|0,k=e[t+3]|0,A=e[t+4]|0,j=e[t+5]|0,M=e[t+6]|0,N=e[t+7]|0,P=1779033703,F=3144134277,I=1013904242,L=2773480762,R=s|0,z=s/4294967296|0,B=c|0,V=l|0;E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25;{let e=u,t=d;u=f,f=p,p=b,b=S,S=y,y=x,x=h,h=e,d=g,g=m,m=_,_=C,C=w,w=T,T=v,v=t}E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25;{let e=u,t=d;u=f,f=p,p=b,b=S,S=y,y=x,x=h,h=e,d=g,g=m,m=_,_=C,C=w,w=T,T=v,v=t}E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25;{let e=u,t=d;u=f,f=p,p=b,b=S,S=y,y=x,x=h,h=e,d=g,g=m,m=_,_=C,C=w,w=T,T=v,v=t}E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25;{let e=u,t=d;u=f,f=p,p=b,b=S,S=y,y=x,x=h,h=e,d=g,g=m,m=_,_=C,C=w,w=T,T=v,v=t}E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25;{let e=u,t=d;u=f,f=p,p=b,b=S,S=y,y=x,x=h,h=e,d=g,g=m,m=_,_=C,C=w,w=T,T=v,v=t}E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25;{let e=u,t=d;u=f,f=p,p=b,b=S,S=y,y=x,x=h,h=e,d=g,g=m,m=_,_=C,C=w,w=T,T=v,v=t}E=(E+A|0)+u|0,R^=E,R=R>>>16|R<<16,P=P+R|0,A^=P,A=A>>>12|A<<20,E=(E+A|0)+d|0,R^=E,R=R>>>8|R<<24,P=P+R|0,A^=P,A=A>>>7|A<<25,D=(D+j|0)+f|0,z^=D,z=z>>>16|z<<16,F=F+z|0,j^=F,j=j>>>12|j<<20,D=(D+j|0)+p|0,z^=D,z=z>>>8|z<<24,F=F+z|0,j^=F,j=j>>>7|j<<25,O=(O+M|0)+m|0,B^=O,B=B>>>16|B<<16,I=I+B|0,M^=I,M=M>>>12|M<<20,O=(O+M|0)+h|0,B^=O,B=B>>>8|B<<24,I=I+B|0,M^=I,M=M>>>7|M<<25,k=(k+N|0)+g|0,V^=k,V=V>>>16|V<<16,L=L+V|0,N^=L,N=N>>>12|N<<20,k=(k+N|0)+_|0,V^=k,V=V>>>8|V<<24,L=L+V|0,N^=L,N=N>>>7|N<<25,E=(E+j|0)+v|0,V^=E,V=V>>>16|V<<16,I=I+V|0,j^=I,j=j>>>12|j<<20,E=(E+j|0)+y|0,V^=E,V=V>>>8|V<<24,I=I+V|0,j^=I,j=j>>>7|j<<25,D=(D+M|0)+b|0,R^=D,R=R>>>16|R<<16,L=L+R|0,M^=L,M=M>>>12|M<<20,D=(D+M|0)+x|0,R^=D,R=R>>>8|R<<24,L=L+R|0,M^=L,M=M>>>7|M<<25,O=(O+N|0)+S|0,z^=O,z=z>>>16|z<<16,P=P+z|0,N^=P,N=N>>>12|N<<20,O=(O+N|0)+C|0,z^=O,z=z>>>8|z<<24,P=P+z|0,N^=P,N=N>>>7|N<<25,k=(k+A|0)+w|0,B^=k,B=B>>>16|B<<16,F=F+B|0,A^=F,A=A>>>12|A<<20,k=(k+A|0)+T|0,B^=k,B=B>>>8|B<<24,F=F+B|0,A^=F,A=A>>>7|A<<25,o&&(i[a+8]=P^e[t],i[a+9]=F^e[t+1],i[a+10]=I^e[t+2],i[a+11]=L^e[t+3],i[a+12]=R^e[t+4],i[a+13]=z^e[t+5],i[a+14]=B^e[t+6],i[a+15]=V^e[t+7]),i[a]=E^P,i[a+1]=D^F,i[a+2]=O^I,i[a+3]=k^L,i[a+4]=A^R,i[a+5]=j^z,i[a+6]=M^B,i[a+7]=N^V}let Ln=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,2,6,3,10,7,0,4,13,1,11,12,5,9,14,15,8,3,4,10,12,13,2,7,14,6,5,9,0,11,15,8,1,10,7,12,9,14,3,13,15,4,0,11,2,5,8,1,6,12,13,9,11,15,10,14,8,7,2,5,3,0,1,6,4,9,14,11,5,8,12,15,1,13,3,0,10,2,6,4,7,11,15,5,0,1,9,8,6,14,10,2,12,3,4,7,13]);let Rn=new Uint8Array(new Uint32Array([16909060]).buffer)[0]===4;function zn(e,t,n){for(let r=0;r<16;++r,t+=4)n[r]=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Bn(e,t,n,r,i){let a=i>>>2,o=0;for(;o<a;++o,r+=4){let i=e[t+o];n[r]=i&255,n[r+1]=i>>>8&255,n[r+2]=i>>>16&255,n[r+3]=i>>>24&255}let s=i&3;if(s>0){let i=e[t+o];n[r]=i&255,s>1&&(n[r+1]=i>>>8&255),s>2&&(n[r+2]=i>>>16&255)}}function Vn(e){if(typeof TextEncoder<`u`)return new TextEncoder().encode(e);let t=[];for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r<128?t.push(r):r<2048?t.push(192|r>>6,128|r&63):r<55296||r>=57344?t.push(224|r>>12,128|r>>6&63,128|r&63):(n++,r=65536+((r&1023)<<10|e.charCodeAt(n)&1023),t.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63))}return new Uint8Array(t)}new Uint8Array([0,1,28,2,29,14,24,3,30,22,20,15,25,17,4,8,31,27,13,23,21,19,16,7,26,12,18,6,11,5,10,9]);var Hn=class{inputCv;blockWords;counter;blockLen;flags;outputBlock;outputBlockOffset;constructor(e,t,n,r,i){this.inputCv=e,this.blockWords=t,this.counter=n,this.blockLen=r,this.flags=i|8,this.outputBlock=new Uint32Array(16),this.outputBlockOffset=64}read(e){let t=new Uint8Array(e),n=0;for(;n<e;){this.outputBlockOffset>=64&&(In(this.inputCv,0,this.blockWords,0,this.outputBlock,0,!0,this.counter++,this.blockLen,this.flags),this.outputBlockOffset=0);let r=64-this.outputBlockOffset,i=Math.min(r,e-n),a=this.outputBlockOffset>>>2;if(!(this.outputBlockOffset&3)&&i>=4){let e=i>>>2;Bn(this.outputBlock,a,t,n,e<<2);let r=e<<2;n+=r,this.outputBlockOffset+=r}else{for(let e=0;e<i;e++){let r=this.outputBlockOffset+e>>>2,i=this.outputBlockOffset+e&3;t[n+e]=this.outputBlock[r]>>>(i<<3)&255}n+=i,this.outputBlockOffset+=i}}return t}},Un=class{chainingValue;chunkCounter;blockWords;blockLen;blocksCompressed;flags;constructor(e,t,n){this.chainingValue=new Uint32Array(e),this.chunkCounter=t,this.blockWords=new Uint32Array(16),this.blockLen=0,this.blocksCompressed=0,this.flags=n}resetTo(e,t,n){this.chainingValue.set(e),this.chunkCounter=t,this.blockLen=0,this.blocksCompressed=0,this.flags=n}startFlag(){return+(this.blocksCompressed===0)}update(e,t,n){let r=0;for(;n>0;){this.blockLen===64&&(In(this.chainingValue,0,this.blockWords,0,this.chainingValue,0,!1,this.chunkCounter,64,this.flags|this.startFlag()),this.blocksCompressed++,this.blockLen=0);let i=64-this.blockLen,a=Math.min(i,n);if(this.blockLen===0&&a===64)zn(e,t,this.blockWords);else for(let n=0;n<a;n++){let r=this.blockLen+n,i=r>>>2,a=r&3;a===0?this.blockWords[i]=e[t+n]:this.blockWords[i]|=e[t+n]<<(a<<3)}this.blockLen+=a,t+=a,n-=a,r+=a}return r}output(){let e=this.blockLen+3>>>2;for(let t=e;t<16;t++)this.blockWords[t]=0;return{inputCv:this.chainingValue,blockWords:this.blockWords,blockLen:this.blockLen,counter:this.chunkCounter,flags:this.flags|this.startFlag()|2}}len(){return this.blocksCompressed*64+this.blockLen}},Wn=class e{chunkState;keyWords;cvStack;cvStackLen;flags;parentBlock;parentCv;chunkCv;outWords;finalizeCv;constructor(e,t){this.keyWords=e?new Uint32Array(e):new Uint32Array(Ln),this.flags=t??0,this.chunkState=new Un(this.keyWords,0,this.flags),this.cvStack=new Uint32Array(432),this.cvStackLen=0,this.parentBlock=new Uint32Array(16),this.parentCv=new Uint32Array(8),this.chunkCv=new Uint32Array(8),this.outWords=new Uint32Array(16),this.finalizeCv=new Uint32Array(8)}reset(){return this.chunkState.resetTo(this.keyWords,0,this.flags),this.cvStackLen=0,this}static newKeyed(t){if(t.length!==32)throw Error(`Key must be 32 bytes, got ${t.length}`);let n=new Uint32Array(8);if(Rn){let e=new Uint32Array(t.buffer,t.byteOffset,8);n.set(e)}else for(let e=0;e<8;e++){let r=e*4;n[e]=t[r]|t[r+1]<<8|t[r+2]<<16|t[r+3]<<24}return new e(n,16)}static newDeriveKey(t){let n=Vn(t),r=new e(new Uint32Array(Ln),32);r.update(n);let i=new Uint32Array(8),a=r.finalizeOutput();return In(a.inputCv,0,a.blockWords,0,i,0,!1,a.counter,a.blockLen,a.flags|8),new e(i,64)}pushCv(e,t){this.cvStack.set(e.subarray(t,t+8),this.cvStackLen*8),this.cvStackLen++}popCv(e,t){this.cvStackLen--,e.set(this.cvStack.subarray(this.cvStackLen*8,(this.cvStackLen+1)*8),t)}addChunkCv(e,t,n){let r=this.parentBlock,i=this.parentCv;for(;!(n&1);)this.popCv(r,0),r.set(e.subarray(t,t+8),8),In(this.keyWords,0,r,0,i,0,!1,0,64,this.flags|4),e=i,t=0,n>>>=1;this.pushCv(e,t)}update(e){let t=0,n=e.length;for(;n>0;){if(this.chunkState.len()===1024){let e=this.chunkState.output(),t=this.chunkCv;In(e.inputCv,0,e.blockWords,0,t,0,!1,e.counter,e.blockLen,e.flags);let n=this.chunkState.chunkCounter+1;this.addChunkCv(t,0,n),this.chunkState.resetTo(this.keyWords,n,this.flags)}let r=1024-this.chunkState.len(),i=Math.min(r,n);this.chunkState.update(e,t,i),t+=i,n-=i}return this}finalizeOutput(){let e=this.chunkState.output(),t=this.parentBlock,n=this.finalizeCv;if(this.cvStackLen>0)for(In(e.inputCv,0,e.blockWords,0,n,0,!1,e.counter,e.blockLen,e.flags);this.cvStackLen>0;)if(this.cvStackLen--,t.set(this.cvStack.subarray(this.cvStackLen*8,(this.cvStackLen+1)*8),0),t.set(n,8),this.cvStackLen>0)In(this.keyWords,0,t,0,n,0,!1,0,64,this.flags|4);else return{inputCv:this.keyWords,blockWords:t,blockLen:64,counter:0,flags:this.flags|4};return e}finalize(e=32){let t=this.finalizeOutput(),n=new Uint8Array(e);if(e<=64){let r=this.outWords;if(In(t.inputCv,0,t.blockWords,0,r,0,e>32,t.counter,t.blockLen,t.flags|8),Rn){let t=new Uint8Array(r.buffer);n.set(t.subarray(0,e))}else Bn(r,0,n,0,e)}else{let t=this.finalizeXof().read(e);n.set(t)}return n}finalizeXof(){let e=this.finalizeOutput();return new Hn(new Uint32Array(e.inputCv),new Uint32Array(e.blockWords),e.counter,e.blockLen,e.flags)}};new Uint8Array([102,151,245,119,91,149,80,222,49,53,203,172,165,151,24,28,157,228,33,16,155,235,43,88,180,208,176,75,147,173,242,41]);let Gn=new Uint8Array([1,126,197,199,165,71,41,150,253,148,102,102,180,138,2,230,93,221,83,111,55,199,109,210,248,99,82,230,74,83,113,63]);Wn.newKeyed(Gn);let Kn=new Uint8Array(32),qn=new Uint8Array([127,24,87,214,206,86,237,102,18,127,249,19,231,165,195,243,164,205,38,213,181,219,73,230,65,36,152,127,40,251,148,195]);Wn.newKeyed(Kn),Wn.newKeyed(qn);async function Jn(e,t){let n=new Yn(e.url,e.status,e.headers.get(`X-Request-Id`)??t?.requestId);n.message=`Api error with status ${n.statusCode}${t?.message?`. ${t.message}`:``}`;let r=[`URL: ${n.url}`,n.requestId?`Request ID: ${n.requestId}`:void 0].filter(Boolean).join(`. `);if(e.headers.get(`Content-Type`)?.startsWith(`application/json`)){let t=await e.json();n.message=t.error||t.message||n.message,t.error_description&&(n.message=n.message?n.message+`: ${t.error_description}`:t.error_description),n.data=t}else n.data={message:await e.text()};throw n.message+=`. ${r}`,n}var Yn=class extends Error{statusCode;url;requestId;data;constructor(e,t,n,r){super(r),this.statusCode=t,this.requestId=n,this.url=e}},Xn=class extends Error{};function Y(e){if(!e.startsWith(`hf_`))throw TypeError(`Your access token must start with 'hf_'`)}function Zn(e){if(e.accessToken)return Y(e.accessToken),e.accessToken;if(e.credentials?.accessToken)return Y(e.credentials.accessToken),e.credentials.accessToken}function Qn(e){if(typeof e!=`string`)return e;if(e.startsWith(`model/`)||e.startsWith(`models/`))throw TypeError(`A repo designation for a model should not start with 'models/', directly specify the model namespace / name`);if(e.startsWith(`space/`))throw TypeError(`Spaces should start with 'spaces/', plural, not 'space/'`);if(e.startsWith(`dataset/`))throw TypeError(`Datasets should start with 'datasets/', plural, not 'dataset/'`);if(e.startsWith(`bucket/`))throw TypeError(`Buckets should start with 'buckets/', plural, not 'bucket/'`);if(e.startsWith(`kernel/`))throw TypeError(`Kernels should start with 'kernels/', plural, not 'kernel/'`);let t=e.split(`/`).length-1;if(e.startsWith(`spaces/`)){if(t!==2)throw TypeError(`Space Id must include namespace and name of the space`);return{type:`space`,name:e.slice(7)}}if(e.startsWith(`datasets/`)){if(t>2)throw TypeError(`Too many slashes in repo designation: `+e);return{type:`dataset`,name:e.slice(9)}}if(e.startsWith(`buckets/`)){if(t!==2)throw TypeError(`Bucket Id must include namespace and name of the bucket`);return{type:`bucket`,name:e.slice(8)}}if(e.startsWith(`kernels/`)){if(t!==2)throw TypeError(`Kernel Id must include namespace and name of the kernel`);return{type:`kernel`,name:e.slice(8)}}if(t>1)throw TypeError(`Too many slashes in repo designation: `+e);return{type:`model`,name:e}}typeof window<`u`&&window.document,typeof self==`object`&&self.constructor&&self.constructor.name,new Promise(e=>{});var $n=65536;X(5<<20),er();function er(){try{return new Uint32Array($n)}catch{let e=Array($n);for(let t=0;t<$n;t++)e[t]=0;return e}}function X(e){return new Uint8Array(e)}`ff`.repeat(32),new Uint8Array([72,70,82,101,112,111,77,101,116,97,68,97,116,97,0,85,105,103,69,106,123,129,87,131,165,189,217,92,205,209,74,169]);function tr(e){return Object.fromEntries([...e.matchAll(/<(https?:[/][/][^>]+)>;\s+rel="([^"]+)"/g)].map(([,e,t])=>[t,e]))}async function nr(e){let t=Zn(e),n=Qn(e.repo),r=e.hubUrl??`https://huggingface.co`,i=n.type===`bucket`?void 0:e.revision??`main`,a=`${r}/${n.type===`model`?``:`${n.type}s/`}${n.name}/${e.raw?`raw`:`resolve`}${i?`/${encodeURIComponent(i)}`:``}/${e.path}`+(e.noContentDisposition?`?noContentDisposition=1`:``),o=await(e.fetch??fetch)(a,{method:`GET`,headers:{...t&&{Authorization:`Bearer ${t}`},Range:`bytes=0-0`,Accept:`application/vnd.xet-fileinfo+json, */*`}});if(o.status===404&&o.headers.get(`X-Error-Code`)===`EntryNotFound`)return null;if(!o.ok)throw await Jn(o);let s,c;if(o.headers.get(`Content-Type`)?.includes(`application/vnd.xet-fileinfo+json`)){if(s=parseInt(o.headers.get(`X-Linked-Size`)??`invalid`),isNaN(s))throw new Xn(`Invalid file size received in X-Linked-Size header`);let e=o.headers.get(`X-Xet-Hash`),t=tr(o.headers.get(`Link`)??``),n=(()=>{try{return new URL(t[`xet-reconstruction-info`])}catch{return null}})(),r=(()=>{try{return new URL(t[`xet-auth`])}catch{return null}})();if(!e)throw new Xn(`No hash received in X-Xet-Hash header`);if(!n||!r)throw new Xn(`No xet-reconstruction-info or xet-auth link header`);c={hash:e,refreshUrl:r,reconstructionUrl:n}}if(s===void 0||isNaN(s)){let e=o.headers.get(`content-range`);if(!e)throw new Xn(`Expected size information`);let[,t]=e.split(`/`);if(s=parseInt(t),isNaN(s))throw new Xn(`Invalid file size received`)}let l=o.headers.get(`X-Linked-ETag`)??o.headers.get(`ETag`)??void 0;if(!l)throw new Xn(`Expected ETag`);return{etag:l,size:s,xet:c,url:o.url&&(new URL(o.url).origin===new URL(r).origin||o.headers.get(`X-Cache`)?.endsWith(` cloudfront`))?o.url:a}}const LOCAL_WASM_URL=new URL(`./assets/ort-wasm-simd-threaded.asyncify.wasm`,self.location.href).href;x.wasm.numThreads=1;x.wasm.proxy=false;x.wasm.wasmPaths={wasm:LOCAL_WASM_URL};let rr={name:`local/lama`,type:`model`},ir={path:`lama_fp16.onnx`,key:`obj-remover-local-fp16-v9`,label:`fp16 local`},ar={path:`lama_int8.onnx`,key:`obj-remover-local-int8-v9`,label:`int8`};function or(){return new Promise((e,t)=>{let n=indexedDB.open(`wipe-photos-cache`,1);n.onupgradeneeded=e=>e.target.result.createObjectStore(`models`),n.onsuccess=t=>e(t.target.result),n.onerror=()=>t(n.error)})}function sr(e,t){return new Promise((n,r)=>{let i=e.transaction(`models`,`readonly`).objectStore(`models`).get(t);i.onsuccess=()=>n(i.result),i.onerror=()=>r(i.error)})}function cr(e,t,n){return new Promise((r,i)=>{let a=e.transaction(`models`,`readwrite`);a.objectStore(`models`).put(n,t),a.oncomplete=r,a.onerror=()=>i(a.error)})}async function lr(e){let t=null,n=null;try{t=await or(),n=await sr(t,e.key)}catch(e){}
if(n)return self.postMessage({type:`modelProgress`,ratio:1,cached:!0,source:`local-cache`}),n;
let r=`/assets/${e.path}`;
self.postMessage({type:`modelProgress`,ratio:0,received:0,total:0,cached:!1,source:`local-file`});
let i=await fetch(r,{cache:`force-cache`});
if(!i.ok)throw Error(`Local model not found: ${r}. Put lama_fp16.onnx inside the assets folder.`);
let a=Number(i.headers.get(`Content-Length`)||0),o=i.body?.getReader?.();
if(!o){n=await i.arrayBuffer();try{t&&await cr(t,e.key,n)}catch(e){console.warn(`[worker] IDB save failed:`,e)}self.postMessage({type:`modelProgress`,ratio:1,received:n.byteLength,total:n.byteLength,cached:!1,source:`local-file`});return n}
let s=[],c=0;for(;;){let{done:e,value:t}=await o.read();if(e)break;s.push(t),c+=t.length,self.postMessage({type:`modelProgress`,ratio:a?c/a:0,received:c,total:a,cached:!1,source:`local-file`})}
let l=new Uint8Array(c),u=0;for(let e of s)l.set(e,u),u+=e.length;n=l.buffer;
if(c<50*1024*1024)throw Error(`The local lama_fp16.onnx is too small (${(c/1024/1024).toFixed(1)} MB). Please use the full model file, not a stub.`);
try{t&&await cr(t,e.key,n)}catch(e){console.warn(`[worker] IDB save failed:`,e)}
self.postMessage({type:`modelProgress`,ratio:1,received:c,total:a||c,cached:!1,source:`local-file`});
return n}let ur=null,dr=`wasm`,fr=null,pr=null;async function mr(e){let t=e?ar:ir;pr=t.label;fr=await lr(t);ur=await ue.create(fr,{executionProviders:[`wasm`]});dr=`wasm`;self.postMessage({type:`ready`,backend:dr,model:pr})}function hr(e,t){return e%t===0?e:(Math.floor(e/t)+1)*t}function gr(e,t,n,r,i=32){let a=hr(n,i),o=hr(r,i);if(a===n&&o===r)return{data:e,ph:a,pw:o};let s=new Float32Array(t*a*o);for(let i=0;i<t;i++)for(let t=0;t<a;t++){let c=t<n?t:2*n-t-2;for(let l=0;l<o;l++){let u=l<r?l:2*r-l-2;s[i*a*o+t*o+l]=e[i*n*r+c*r+u]}}return{data:s,ph:a,pw:o}}function _r(e,t,n,r,i,a=!0){let o=new OffscreenCanvas(t,n),s=e instanceof Uint8ClampedArray?e:new Uint8ClampedArray(e.buffer??e);o.getContext(`2d`).putImageData(new ImageData(s,t,n),0,0);let c=new OffscreenCanvas(r,i).getContext(`2d`);return c.imageSmoothingEnabled=a,c.imageSmoothingQuality=`high`,c.drawImage(o,0,0,r,i),c.getImageData(0,0,r,i).data}async function vr(e,t,n,r){let i=r*n,a=new Float32Array(3*i),o=new Float32Array(i);for(let n=0;n<i;n++)a[0*i+n]=e[n*4+0]/255,a[1*i+n]=e[n*4+1]/255,a[2*i+n]=e[n*4+2]/255,o[n]=+(t[n*4+3]>0);let{data:s,ph:c,pw:l}=gr(a,3,r,n),{data:u}=gr(o,1,r,n),d=c*l,f=new Float32Array(4*d);for(let e=0;e<3;e++)for(let t=0;t<d;t++)f[e*d+t]=s[e*d+t]*(1-u[t]);for(let e=0;e<d;e++)f[3*d+e]=u[e];let p=new te(`float32`,f,[1,4,c,l]),m;try{m=await ur.run({input:p})}catch(e){if(dr!==`webgpu`)throw e;console.warn(`[worker] WebGPU inference failed, retrying with WASM:`,e?.message??e),ur=await ue.create(fr,{executionProviders:[`wasm`]}),dr=`wasm`,m=await ur.run({input:p})}let{output:h}=m,g=h.data,_=new Uint8ClampedArray(r*n*4);for(let e=0;e<r;e++)for(let t=0;t<n;t++){let r=e*n+t,i=u[e*l+t];for(let n=0;n<3;n++){let a=i*g[n*c*l+e*l+t]+(1-i)*s[n*c*l+e*l+t];_[r*4+n]=Math.round(Math.min(1,Math.max(0,a))*255)}_[r*4+3]=255}return p.dispose(),h.dispose(),_}async function yr(e,t,n,r){let i=new Uint8Array(e),a=new Uint8Array(t),o=n,s=-1,c=r,l=-1;for(let e=0;e<n*r;e++)if(a[e*4+3]>0){let t=e%n,r=Math.floor(e/n);t<o&&(o=t),t>s&&(s=t),r<c&&(c=r),r>l&&(l=r)}if(s<0)throw Error(`Empty mask`);self.postMessage({type:`cropInfo`,maskW:s-o+1,maskH:l-c+1,cw:512,ch:512});let u=_r(await vr(_r(i,n,r,512,512,!0),_r(a,n,r,512,512,!1),512,512),512,512,n,r,!0),d=new Uint8ClampedArray(r*n*4);for(let e=0;e<r*n;e++){let t=a[e*4+3]>0;d[e*4+0]=t?u[e*4+0]:i[e*4+0],d[e*4+1]=t?u[e*4+1]:i[e*4+1],d[e*4+2]=t?u[e*4+2]:i[e*4+2],d[e*4+3]=255}return d}self.name?.startsWith(`em-pthread`)||(self.onmessage=async({data:e})=>{try{if(e.type===`init`&&await mr(e.isMobile),e.type===`inpaint`){if(!ur)throw Error(`Model not loaded`);let{imagePixels:t,maskPixels:n,origW:r,origH:i}=e,a=await yr(t,n,r,i);self.postMessage({type:`result`,pixels:a.buffer,origW:r,origH:i},[a.buffer])}}catch(e){console.error(`[worker] error:`,e),self.postMessage({type:`error`,message:e?.message??String(e)})}})})();