diff --git a/.gitignore b/.gitignore index 931f1ce..5a2f263 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -LibRawSource/ -lcms2/ .DS_Store -node_modules/ \ No newline at end of file +node_modules/ +dist \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..dff896b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "libraries/lcms2"] + path = libraries/lcms2 + url = https://github.com/mm2/Little-CMS.git +[submodule "libraries/LibRawSource"] + path = libraries/LibRawSource + url = https://github.com/LibRaw/LibRaw.git diff --git a/build.js b/build.js deleted file mode 100644 index e7e7680..0000000 --- a/build.js +++ /dev/null @@ -1,24 +0,0 @@ -import { build } from 'esbuild'; -import { promises as fs } from "fs"; - - -(async () => { - try { - let librawjs = (await fs.readFile('./libraw.js')).toString(); - librawjs = librawjs.replace(/var workerOptions=([^]+?);worker=new Worker\(new URL\("([^"]+)",import.meta.url\),workerOptions\);/, `worker=new Worker(new URL("$2",import.meta.url),$1);`); // Correction to make worker options static so that it works with vite - await fs.writeFile('./libraw.js', librawjs); - await build({ - entryPoints: ['index.js', 'worker.js', 'libraw.js'], // Entry point of your library - outdir: 'dist', // Output directory - bundle: true, // Bundle all files - minify: true, // Minify the output - sourcemap: true, // Generate source maps - format: 'esm', // Output format (ES Module) - }); - await fs.copyFile('./libraw.wasm', './dist/libraw.wasm'); - console.log('Build successful!'); - } catch (error) { - console.error('Build failed:', error); - process.exit(1); - } -})(); \ No newline at end of file diff --git a/compileLibraw.sh b/compileLibraw.sh deleted file mode 100755 index be2b793..0000000 --- a/compileLibraw.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env bash - -set -e - -rm -rf libs includes LibRawSource lcms2 2>/dev/null || true -mkdir libs -mkdir includes - - -#--------------------------------------------------------------------------------- -# 0) Configure and Build LCMS with Emscripten -#--------------------------------------------------------------------------------- -echo -e "\n==> Cloning LCMS from GitHub..." -git clone https://github.com/mm2/Little-CMS.git lcms2 -cd lcms2 -glibtoolize -autoreconf -fi -# 2) Configure and make with Emscripten -emconfigure ./configure --host=wasm32-unknown-emscripten \ - --disable-shared -emmake make -j8 - -cp -R src/.libs/* ../libs/ -cp -R include/* ../includes/ -cd .. - - - -#--------------------------------------------------------------------------------- -# 1) Download & Prepare LibRaw -#--------------------------------------------------------------------------------- -echo -e "\n==> Cloning LibRaw from GitHub..." -git clone https://github.com/LibRaw/LibRaw.git LibRawSource - -pushd LibRawSource - -echo -e "\n==> Generating configure script from configure.ac..." -# Generate ./configure from configure.ac -glibtoolize -autoreconf -i - -#--------------------------------------------------------------------------------- -# 2) Configure and Build LibRaw with Emscripten -#--------------------------------------------------------------------------------- -echo -e "\n==> Configuring LibRaw with Emscripten..." -emconfigure ./configure \ - --host=wasm32-unknown-emscripten \ - --enable-openmp \ - --enable-lcms \ - --disable-shared \ - --disable-examples \ - CFLAGS="-O3 -flto -ffast-math -msimd128 -DNDEBUG -DUSE_LCMS2 -I../includes" \ - CXXFLAGS="-O3 -flto -ffast-math -msimd128 -DNDEBUG -DUSE_LCMS2 -I../includes" \ - LDFLAGS="-s USE_PTHREADS=1 -lpthread -L../libs/ -llcms2" - -echo -e "\n==> Building LibRaw..." -emmake make -j8 - -# Copy artifacts out of the source folder for convenience -cp -R lib/.libs/* ../libs/ -cp -R libraw ../includes/ -popd # out of LibRawSource - -#--------------------------------------------------------------------------------- -# 3) Build the final WASM from libraw_wrapper.cpp -#--------------------------------------------------------------------------------- -echo -e "\n==> Building libraw.js + libraw.wasm..." -emcc \ - --bind \ - -I./includes \ - -s USE_LIBPNG=1 \ - -s USE_LIBJPEG=1 \ - -s USE_ZLIB=1 \ - -s MODULARIZE=1 \ - -s EXPORT_ES6=1 \ - -s DISABLE_EXCEPTION_CATCHING=0 \ - -s ALLOW_MEMORY_GROWTH=1 \ - -s INITIAL_MEMORY=256MB \ - -s USE_PTHREADS=1 \ - -s ENVIRONMENT="web,worker" \ - -msimd128 \ - -O3 -flto -pthread \ - libraw_wrapper.cpp \ - ./libs/liblcms2.a \ - ./libs/libraw.a \ - -o libraw.js - - -echo -e "\n==> Building Dist files..." - -node build.js - - -echo "" -echo "===============================================" -echo " Build complete!" -echo " You should now have libraw.js & libraw.wasm." -echo "===============================================" diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index f15fb8e..0000000 --- a/dist/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var o=class{constructor(){this.worker=new Worker(new URL("./worker.js",import.meta.url),{type:"module"}),this.waitForWorker=!1,this.worker.onmessage=({data:t})=>{if(this.waitForWorker){let{return:r,throw:a}=this.waitForWorker;this.waitForWorker=!1,t?.error?a(t.error):r(t?.out)}}}async runFn(t,...r){let a=new Promise((e,n)=>{this.waitForWorker={error:n,return:e}});return this.worker.postMessage({fn:t,args:r},r.map(e=>{if([ArrayBuffer,Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array].some(n=>e instanceof n))return e.buffer}).filter(e=>e)),await a}async open(t,r){return await this.runFn("open",t,r)}async metadata(t){let r=await this.runFn("metadata",!!t);return r?.hasOwnProperty("thumb_format")&&(r.thumb_format=["unknown","jpeg","bitmap","bitmap16","layer","rollei","h265"][r.thumb_format]||"unknown"),r?.hasOwnProperty("desc")&&(r.desc=String(r.desc).trim()),r?.hasOwnProperty("timestamp")&&(r.timestamp=new Date(r.timestamp)),r}async imageData(){return await this.runFn("imageData")}};export{o as default}; -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 73afe49..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../index.js"], - "sourcesContent": ["export default class LibRaw {\n\tconstructor() {\n\t\tthis.worker = new Worker(new URL('./worker.js', import.meta.url), {type:\"module\"});\n\t\tthis.waitForWorker = false;\n\t\tthis.worker.onmessage = ({data}) => {\n\t\t\tif(this.waitForWorker) {\n\t\t\t\tlet {\"return\": ret, \"throw\": thr} = this.waitForWorker;\n\t\t\t\tthis.waitForWorker = false;\n\t\t\t\tif(data?.error) {\n\t\t\t\t\tthr(data.error);\n\t\t\t\t} else {\n\t\t\t\t\tret(data?.out);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\t\n\tasync runFn(fn, ...args) {\n\t\tlet prom = new Promise((res, err)=>{\n\t\t\tthis.waitForWorker = {\n\t\t\t\terror: err,\n\t\t\t\treturn: res,\n\t\t\t};\n\t\t});\n\t\tthis.worker.postMessage({fn, args}, args.map(a=>{\n\t\t\tif([ArrayBuffer, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array].some(b=>a instanceof b)) { // Transfer buffer\n\t\t\t\treturn a.buffer;\n\t\t\t}\n\t\t}).filter(a=>a));\n\t\treturn await prom;\n\t}\n\t/**\n\t * Open/parse the RAW data with optional settings\n\t */\n\tasync open(buffer, settings) {\n\t\treturn await this.runFn('open', buffer, settings);\n\t}\n\n\t/**\n\t * Retrieve metadata\n\t */\n\tasync metadata(fullOutput) {\n\t\tlet metadata = await this.runFn('metadata', !!fullOutput);\n\t\t// Example: convert numeric thumb_format to a string\n\t\tif (metadata?.hasOwnProperty('thumb_format')) {\n\t\t\tmetadata.thumb_format = [\n\t\t\t\t'unknown',\n\t\t\t\t'jpeg',\n\t\t\t\t'bitmap',\n\t\t\t\t'bitmap16',\n\t\t\t\t'layer',\n\t\t\t\t'rollei',\n\t\t\t\t'h265'\n\t\t\t][metadata.thumb_format] || 'unknown';\n\t\t}\n\t\t// Trim desc if present\n\t\tif (metadata?.hasOwnProperty('desc')) {\n\t\t\tmetadata.desc = String(metadata.desc).trim();\n\t\t}\n\t\tif (metadata?.hasOwnProperty('timestamp')) {\n\t\t\tmetadata.timestamp = new Date(metadata.timestamp);\n\t\t}\n\t\treturn metadata;\n\t}\n\n\t/**\n\t * Retrieve processed image data (synchronously from the perspective of C++,\n\t * but we've already awaited the module & instance.)\n\t */\n\tasync imageData() {\n\t\treturn await this.runFn('imageData');\n\t}\n}"], - "mappings": "AAAA,IAAqBA,EAArB,KAA4B,CAC3B,aAAc,CACb,KAAK,OAAS,IAAI,OAAO,IAAI,IAAI,cAAe,YAAY,GAAG,EAAG,CAAC,KAAK,QAAQ,CAAC,EACjF,KAAK,cAAgB,GACrB,KAAK,OAAO,UAAY,CAAC,CAAC,KAAAC,CAAI,IAAM,CACnC,GAAG,KAAK,cAAe,CACtB,GAAI,CAAC,OAAUC,EAAK,MAASC,CAAG,EAAI,KAAK,cACzC,KAAK,cAAgB,GAClBF,GAAM,MACRE,EAAIF,EAAK,KAAK,EAEdC,EAAID,GAAM,GAAG,CAEf,CACD,CACD,CAEA,MAAM,MAAMG,KAAOC,EAAM,CACxB,IAAIC,EAAO,IAAI,QAAQ,CAACC,EAAKC,IAAM,CAClC,KAAK,cAAgB,CACpB,MAAOA,EACP,OAAQD,CACT,CACD,CAAC,EACD,YAAK,OAAO,YAAY,CAAC,GAAAH,EAAI,KAAAC,CAAI,EAAGA,EAAK,IAAII,GAAG,CAC/C,GAAG,CAAC,YAAa,WAAY,UAAW,YAAa,WAAY,YAAa,WAAY,aAAc,YAAY,EAAE,KAAKC,GAAGD,aAAaC,CAAC,EAC3I,OAAOD,EAAE,MAEX,CAAC,EAAE,OAAOA,GAAGA,CAAC,CAAC,EACR,MAAMH,CACd,CAIA,MAAM,KAAKK,EAAQC,EAAU,CAC5B,OAAO,MAAM,KAAK,MAAM,OAAQD,EAAQC,CAAQ,CACjD,CAKA,MAAM,SAASC,EAAY,CAC1B,IAAIC,EAAW,MAAM,KAAK,MAAM,WAAY,CAAC,CAACD,CAAU,EAExD,OAAIC,GAAU,eAAe,cAAc,IAC1CA,EAAS,aAAe,CACvB,UACA,OACA,SACA,WACA,QACA,SACA,MACD,EAAEA,EAAS,YAAY,GAAK,WAGzBA,GAAU,eAAe,MAAM,IAClCA,EAAS,KAAO,OAAOA,EAAS,IAAI,EAAE,KAAK,GAExCA,GAAU,eAAe,WAAW,IACvCA,EAAS,UAAY,IAAI,KAAKA,EAAS,SAAS,GAE1CA,CACR,CAMA,MAAM,WAAY,CACjB,OAAO,MAAM,KAAK,MAAM,WAAW,CACpC,CACD", - "names": ["LibRaw", "data", "ret", "thr", "fn", "args", "prom", "res", "err", "a", "b", "buffer", "settings", "fullOutput", "metadata"] -} diff --git a/dist/libraw.js b/dist/libraw.js deleted file mode 100644 index 2f5eed6..0000000 --- a/dist/libraw.js +++ /dev/null @@ -1,19 +0,0 @@ -var tn=(()=>{var br=import.meta.url;return async function(nn={}){var Tr,c=nn,ze,ke,an=new Promise((e,r)=>{ze=e,ke=r}),$r=typeof window=="object",ae=typeof WorkerGlobalScope<"u",Li=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer",$=ae&&self.name?.startsWith("em-pthread"),Pr=Object.assign({},c),on=[],Ar="./this.program",Fr=(e,r)=>{throw r},Y="";function sn(e){return c.locateFile?c.locateFile(e,Y):Y+e}var Ve,be;($r||ae)&&(ae?Y=self.location.href:typeof document<"u"&&document.currentScript&&(Y=document.currentScript.src),br&&(Y=br),Y.startsWith("blob:")?Y="":Y=Y.substr(0,Y.replace(/[?#].*/,"").lastIndexOf("/")+1),ae&&(be=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Ve=async e=>{var r=await fetch(e,{credentials:"same-origin"});if(r.ok)return r.arrayBuffer();throw new Error(r.status+" : "+r.url)});var Te=c.print||console.log.bind(console),M=c.printErr||console.error.bind(console);Object.assign(c,Pr),Pr=null,c.arguments&&(on=c.arguments),c.thisProgram&&(Ar=c.thisProgram);var $e=c.wasmBinary,R,Cr,Pe=!1,ie,q,Sr,Dr,Mr,Rr,Or,Wr,U,xr,Ur,un=!1,ln="data:application/octet-stream;base64,",Ir=e=>e.startsWith(ln);function O(){return R.buffer!=q.buffer&&L(),q}function I(){return R.buffer!=q.buffer&&L(),Sr}function ee(){return R.buffer!=q.buffer&&L(),Dr}function Ge(){return R.buffer!=q.buffer&&L(),Mr}function h(){return R.buffer!=q.buffer&&L(),Rr}function w(){return R.buffer!=q.buffer&&L(),Or}function fn(){return R.buffer!=q.buffer&&L(),Wr}function Ye(){return R.buffer!=q.buffer&&L(),Ur}if($){let e=function(...n){var a=n.join(" ");console.error(a)},r=function(...n){var a=n.join(" ");postMessage({cmd:"alert",text:a,threadId:Le()})},t=function(n){try{var a=n.data,o=a.cmd;if(o==="load"){let s=[];self.onmessage=u=>s.push(u),self.startWorker=u=>{postMessage({cmd:"loaded"});for(let l of s)t(l);self.onmessage=t};for(let u of a.handlers)(!c[u]||c[u].proxy)&&(c[u]=(...l)=>{postMessage({cmd:"callHandler",handler:u,args:l})},u=="print"&&(Te=c[u]),u=="printErr"&&(M=c[u]));R=a.wasmMemory,L(),jr(a.wasmModule)}else if(o==="run"){An(a.pthread_ptr),yr(a.pthread_ptr,0,0,1,0,0),y.receiveObjectTransfer(a),y.threadInitTLS(),hr(a.pthread_ptr),qe||(Bt(),qe=!0);try{Fn(a.start_routine,a.arg)}catch(s){if(s!="unwind")throw s}}else a.target==="setimmediate"||(o==="checkMailbox"?qe&&Ne():o&&(M(`worker: received unknown command ${o}`),M(a)))}catch(s){throw Ht(),s}};var jr,qe=!1;c.printErr||(M=e),self.alert=r,self.onunhandledrejection=n=>{throw n.reason||n},self.onmessage=t}function L(){var e=R.buffer;c.HEAP8=q=new Int8Array(e),c.HEAP16=Dr=new Int16Array(e),c.HEAPU8=Sr=new Uint8Array(e),c.HEAPU16=Mr=new Uint16Array(e),c.HEAP32=Rr=new Int32Array(e),c.HEAPU32=Or=new Uint32Array(e),c.HEAPF32=Wr=new Float32Array(e),c.HEAPF64=Ur=new Float64Array(e),c.HEAP64=U=new BigInt64Array(e),c.HEAPU64=xr=new BigUint64Array(e)}if(!$){if(c.wasmMemory)R=c.wasmMemory;else{var cn=c.INITIAL_MEMORY||268435456;R=new WebAssembly.Memory({initial:cn/65536,maximum:32768,shared:!0})}L()}var Nr=[],Br=[],Hr=[];function dn(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)zr(c.preRun.shift());rr(Nr)}function Lr(){if(un=!0,$)return startWorker(c);!c.noFSInit&&!i.initialized&&i.init(),i.ignorePermissions=!1,Z.init(),rr(Br)}function vn(){if(!$){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)pn(c.postRun.shift());rr(Hr)}}function zr(e){Nr.unshift(e)}function hn(e){Br.unshift(e)}function pn(e){Hr.unshift(e)}var re=0,ve=null;function zi(e){return e}function Xe(e){re++,c.monitorRunDependencies?.(re)}function Ae(e){if(re--,c.monitorRunDependencies?.(re),re==0&&ve){var r=ve;ve=null,r()}}function he(e){c.onAbort?.(e),e="Aborted("+e+")",M(e),Pe=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw ke(r),r}var Ke;function mn(){if(c.locateFile){var e="libraw.wasm";return Ir(e)?e:sn(e)}return new URL("libraw.wasm",import.meta.url).href}function _n(e){if(e==Ke&&$e)return new Uint8Array($e);if(be)return be(e);throw"both async and sync fetching of the wasm failed"}async function gn(e){if(!$e)try{var r=await Ve(e);return new Uint8Array(r)}catch{}return _n(e)}async function wn(e,r){try{var t=await gn(e),n=await WebAssembly.instantiate(t,r);return n}catch(a){M(`failed to asynchronously prepare wasm: ${a}`),he(a)}}async function yn(e,r,t){if(!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Ir(r))try{var n=fetch(r,{credentials:"same-origin"}),a=await WebAssembly.instantiateStreaming(n,t);return a}catch(o){M(`wasm streaming compile failed: ${o}`),M("falling back to ArrayBuffer instantiation")}return wn(r,t)}function Vr(){return Fi(),{a:jt}}async function En(){function e(o,s){return k=o.exports,Cn(k.Ea),Qr=k.Da,hn(k.xa),Cr=s,Ae("wasm-instantiate"),k}Xe("wasm-instantiate");function r(o){return e(o.instance,o.module)}var t=Vr();if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(o){M(`Module.instantiateWasm callback failed with error: ${o}`),ke(o)}if($)return new Promise(o=>{jr=s=>{var u=new WebAssembly.Instance(s,Vr());o(e(u,s))}});Ke??=mn();try{var n=await yn($e,Ke,t),a=r(n);return a}catch(o){return ke(o),Promise.reject(o)}}class Gr{name="ExitStatus";constructor(r){this.message=`Program terminated with exit(${r})`,this.status=r}}var Yr=e=>{e.terminate(),e.onmessage=r=>{}},qr=e=>{var r=y.pthreads[e];y.returnWorkerToPool(r)},kn=e=>{var r=y.getNewWorker();if(!r)return 6;y.runningWorkers.push(r),y.pthreads[e.pthread_ptr]=r,r.pthread_ptr=e.pthread_ptr;var t={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return r.postMessage(t,e.transferList),0},Fe=0,Qe=()=>tr||Fe>0,z=()=>Qt(),j=e=>Xt(e),bn=e=>Kt(e),Tn=9007199254740992,$n=-9007199254740992,Je=e=>e<$n||e>Tn?NaN:Number(e),x=(e,r,t,...n)=>{for(var a=n.length*2,o=z(),s=bn(a*8),u=s>>3,l=0;l{if(e instanceof Gr||e=="unwind")return ie;Fr(1,e)};function Kr(e){if($)return x(1,0,0,e);er(e)}var Pn=(e,r)=>{if(ie=e,$)throw Kr(e),"unwind";Ze(e)},er=Pn,y={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){$||y.initMainThread()},initMainThread(){zr(()=>{Xe("loading-workers"),y.loadWasmModuleToAllWorkers(()=>Ae("loading-workers"))})},terminateAllThreads:()=>{for(var e of y.runningWorkers)Yr(e);for(var e of y.unusedWorkers)Yr(e);y.unusedWorkers=[],y.runningWorkers=[],y.pthreads={}},returnWorkerToPool:e=>{var r=e.pthread_ptr;delete y.pthreads[r],y.unusedWorkers.push(e),y.runningWorkers.splice(y.runningWorkers.indexOf(e),1),e.pthread_ptr=0,zt(r)},receiveObjectTransfer(e){},threadInitTLS(){y.tlsInitFunctions.forEach(e=>e())},loadWasmModuleToWorker:e=>new Promise(r=>{e.onmessage=o=>{var s=o.data,u=s.cmd;if(s.targetThread&&s.targetThread!=Le()){var l=y.pthreads[s.targetThread];l?l.postMessage(s,s.transferList):M(`Internal error! Worker sent a message "${u}" to target pthread ${s.targetThread}, but that thread no longer exists!`);return}u==="checkMailbox"?Ne():u==="spawnThread"?kn(s):u==="cleanupThread"?qr(s.thread):u==="loaded"?(e.loaded=!0,r(e)):u==="alert"?alert(`Thread ${s.threadId}: ${s.text}`):s.target==="setimmediate"?e.postMessage(s):u==="callHandler"?c[s.handler](...s.args):u&&M(`worker sent an unknown command ${u}`)},e.onerror=o=>{var s="worker sent an error!";throw M(`${s} ${o.filename}:${o.lineno}: ${o.message}`),o};var t=[],n=["onExit","onAbort","print","printErr"];for(var a of n)c.propertyIsEnumerable(a)&&t.push(a);e.postMessage({cmd:"load",handlers:t,wasmMemory:R,wasmModule:Cr})}),loadWasmModuleToAllWorkers(e){e()},allocateUnusedWorker(){var e;e=new Worker(new URL("libraw.js",import.meta.url),{type:"module",name:"em-pthread"}),y.unusedWorkers.push(e)},getNewWorker(){return y.unusedWorkers.length==0&&(y.allocateUnusedWorker(),y.loadWasmModuleToWorker(y.unusedWorkers[0])),y.unusedWorkers.pop()}},rr=e=>{for(;e.length>0;)e.shift()(c)},An=e=>{L();var r=w()[e+52>>2],t=w()[e+56>>2],n=r-t;qt(r,n),j(r)},Ce=[],Qr,N=e=>{var r=Ce[e];return r||(e>=Ce.length&&(Ce.length=e+1),Ce[e]=r=Qr.get(e)),r},Fn=(e,r)=>{Fe=0,tr=0;var t=N(e)(r);function n(a){Qe()?ie=a:Er(a)}n(t)},tr=c.noExitRuntime||!0,Cn=e=>y.tlsInitFunctions.push(e),Jr=typeof TextDecoder<"u"?new TextDecoder:void 0,oe=(e,r=0,t=NaN)=>{for(var n=r+t,a=r;e[a]&&!(a>=n);)++a;if(a-r>16&&e.buffer&&Jr)return Jr.decode(e.buffer instanceof ArrayBuffer?e.subarray(r,a):e.slice(r,a));for(var o="";r>10,56320|f&1023)}}return o},pe=(e,r)=>e?oe(I(),e,r):"",Sn=(e,r,t,n)=>he(`Assertion failed: ${pe(e)}, at: `+[r?pe(r):"unknown filename",t,n?pe(n):"unknown function"]),Dn=[],Zr=0,Mn=e=>{var r=new nr(e);return r.get_caught()||(r.set_caught(!0),Zr--),r.set_rethrown(!1),Dn.push(r),Jt(e),en(e)},se=0;class nr{constructor(r){this.excPtr=r,this.ptr=r-24}set_type(r){w()[this.ptr+4>>2]=r}get_type(){return w()[this.ptr+4>>2]}set_destructor(r){w()[this.ptr+8>>2]=r}get_destructor(){return w()[this.ptr+8>>2]}set_caught(r){r=r?1:0,O()[this.ptr+12]=r}get_caught(){return O()[this.ptr+12]!=0}set_rethrown(r){r=r?1:0,O()[this.ptr+13]=r}get_rethrown(){return O()[this.ptr+13]!=0}init(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)}set_adjusted_ptr(r){w()[this.ptr+16>>2]=r}get_adjusted_ptr(){return w()[this.ptr+16>>2]}}var Rn=e=>{throw se||(se=e),se},Se=e=>Yt(e),et=e=>{var r=se;if(!r)return Se(0),0;var t=new nr(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return Se(0),r;for(var a of e){if(a===0||a===n)break;var o=t.ptr+16;if(Zt(a,n,o))return Se(a),r}return Se(n),r},On=()=>et([]),Wn=e=>et([e]),xn=(e,r,t)=>{var n=new nr(e);throw n.init(r,t),se=e,Zr++,se},De=()=>{var e=h()[+S.varargs>>2];return S.varargs+=4,e},ue=De,b={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return r.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var a=e[n];a==="."?e.splice(n,1):a===".."?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=b.isAbs(e),t=e.substr(-1)==="/";return e=b.normalizeArray(e.split("/").filter(n=>!!n),!r).join("/"),!e&&!r&&(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=b.splitPath(e),t=r[0],n=r[1];return!t&&!n?".":(n&&(n=n.substr(0,n.length-1)),t+n)},basename:e=>e&&e.match(/([^\/]+|\/)\/*$/)[1],join:(...e)=>b.normalize(e.join("/")),join2:(e,r)=>b.normalize(e+"/"+r)},Un=()=>e=>e.set(crypto.getRandomValues(new Uint8Array(e.byteLength))),rt=e=>{(rt=Un())(e)},le={resolve:(...e)=>{for(var r="",t=!1,n=e.length-1;n>=-1&&!t;n--){var a=n>=0?e[n]:i.cwd();if(typeof a!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!a)return"";r=a+"/"+r,t=b.isAbs(a)}return r=b.normalizeArray(r.split("/").filter(o=>!!o),!t).join("/"),(t?"/":"")+r||"."},relative:(e,r)=>{e=le.resolve(e).substr(1),r=le.resolve(r).substr(1);function t(f){for(var d=0;d=0&&f[v]==="";v--);return d>v?[]:f.slice(d,v-d+1)}for(var n=t(e.split("/")),a=t(r.split("/")),o=Math.min(n.length,a.length),s=o,u=0;u{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},or=(e,r,t,n)=>{if(!(n>0))return 0;for(var a=t,o=t+n-1,s=0;s=55296&&u<=57343){var l=e.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(t>=o)break;r[t++]=u}else if(u<=2047){if(t+1>=o)break;r[t++]=192|u>>6,r[t++]=128|u&63}else if(u<=65535){if(t+2>=o)break;r[t++]=224|u>>12,r[t++]=128|u>>6&63,r[t++]=128|u&63}else{if(t+3>=o)break;r[t++]=240|u>>18,r[t++]=128|u>>12&63,r[t++]=128|u>>6&63,r[t++]=128|u&63}}return r[t]=0,t-a};function tt(e,r,t){var n=t>0?t:ir(e)+1,a=new Array(n),o=or(e,a,0,a.length);return r&&(a.length=o),a}var In=()=>{if(!ar.length){var e=null;if(typeof window<"u"&&typeof window.prompt=="function"&&(e=window.prompt("Input: "),e!==null&&(e+=` -`)),!e)return null;ar=tt(e,!0)}return ar.shift()},Z={ttys:[],init(){},shutdown(){},register(e,r){Z.ttys[e]={input:[],output:[],ops:r},i.registerDevice(e,Z.stream_ops)},stream_ops:{open(e){var r=Z.ttys[e.node.rdev];if(!r)throw new i.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,n,a){if(!e.tty||!e.tty.ops.get_char)throw new i.ErrnoError(60);for(var o=0,s=0;s0&&(Te(oe(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){r===null||r===10?(M(oe(e.output)),e.output=[]):r!=0&&e.output.push(r)},fsync(e){e.output&&e.output.length>0&&(M(oe(e.output)),e.output=[])}}},jn=(e,r)=>Math.ceil(e/r)*r,nt=e=>{he()},g={ops_table:null,mount(e){return g.createNode(null,"/",16895,0)},createNode(e,r,t,n){if(i.isBlkdev(t)||i.isFIFO(t))throw new i.ErrnoError(63);g.ops_table||={dir:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,lookup:g.node_ops.lookup,mknod:g.node_ops.mknod,rename:g.node_ops.rename,unlink:g.node_ops.unlink,rmdir:g.node_ops.rmdir,readdir:g.node_ops.readdir,symlink:g.node_ops.symlink},stream:{llseek:g.stream_ops.llseek}},file:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:{llseek:g.stream_ops.llseek,read:g.stream_ops.read,write:g.stream_ops.write,allocate:g.stream_ops.allocate,mmap:g.stream_ops.mmap,msync:g.stream_ops.msync}},link:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,readlink:g.node_ops.readlink},stream:{}},chrdev:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:i.chrdev_stream_ops}};var a=i.createNode(e,r,t,n);return i.isDir(a.mode)?(a.node_ops=g.ops_table.dir.node,a.stream_ops=g.ops_table.dir.stream,a.contents={}):i.isFile(a.mode)?(a.node_ops=g.ops_table.file.node,a.stream_ops=g.ops_table.file.stream,a.usedBytes=0,a.contents=null):i.isLink(a.mode)?(a.node_ops=g.ops_table.link.node,a.stream_ops=g.ops_table.link.stream):i.isChrdev(a.mode)&&(a.node_ops=g.ops_table.chrdev.node,a.stream_ops=g.ops_table.chrdev.stream),a.atime=a.mtime=a.ctime=Date.now(),e&&(e.contents[r]=a,e.atime=e.mtime=e.ctime=a.atime),a},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){var n=1024*1024;r=Math.max(r,t*(t>>0),t!=0&&(r=Math.max(r,256));var a=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(a.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,r){if(e.usedBytes!=r)if(r==0)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=i.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,i.isDir(e.mode)?r.size=4096:i.isFile(e.mode)?r.size=e.usedBytes:i.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.atime),r.mtime=new Date(e.mtime),r.ctime=new Date(e.ctime),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){for(let t of["mode","atime","mtime","ctime"])r[t]!=null&&(e[t]=r[t]);r.size!==void 0&&g.resizeFileStorage(e,r.size)},lookup(e,r){throw g.doesNotExistError},mknod(e,r,t,n){return g.createNode(e,r,t,n)},rename(e,r,t){var n;try{n=i.lookupNode(r,t)}catch{}if(n){if(i.isDir(e.mode))for(var a in n.contents)throw new i.ErrnoError(55);i.hashRemoveNode(n)}delete e.parent.contents[e.name],r.contents[t]=e,e.name=t,r.ctime=r.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,r){delete e.contents[r],e.ctime=e.mtime=Date.now()},rmdir(e,r){var t=i.lookupNode(e,r);for(var n in t.contents)throw new i.ErrnoError(55);delete e.contents[r],e.ctime=e.mtime=Date.now()},readdir(e){return[".","..",...Object.keys(e.contents)]},symlink(e,r,t){var n=g.createNode(e,r,41471,0);return n.link=t,n},readlink(e){if(!i.isLink(e.mode))throw new i.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,n,a){var o=e.node.contents;if(a>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-a,n);if(s>8&&o.subarray)r.set(o.subarray(a,a+s),t);else for(var u=0;u0||t+r{var r=await Ve(e);return new Uint8Array(r)},Bn=(e,r,t,n,a,o)=>{i.createDataFile(e,r,t,n,a,o)},Hn=c.preloadPlugins||[],Ln=(e,r,t,n)=>{typeof Browser<"u"&&Browser.init();var a=!1;return Hn.forEach(o=>{a||o.canHandle(r)&&(o.handle(e,r,t,n),a=!0)}),a},zn=(e,r,t,n,a,o,s,u,l,f)=>{var d=r?le.resolve(b.join2(e,r)):e,v=`cp ${d}`;function m(p){function _(T){f?.(),u||Bn(e,r,T,n,a,l),o?.(),Ae(v)}Ln(p,d,_,()=>{s?.(),Ae(v)})||_(p)}Xe(v),typeof t=="string"?Nn(t).then(m,s):m(t)},Vn=e=>{var r={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},t=r[e];if(typeof t>"u")throw new Error(`Unknown file open mode: ${e}`);return t},sr=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},i={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{name="ErrnoError";constructor(e){this.errno=e}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.id=i.nextInode++,this.name=r,this.mode=t,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return i.isDir(this.mode)}get isDevice(){return i.isChrdev(this.mode)}},lookupPath(e,r={}){if(!e)throw new i.ErrnoError(44);r.follow_mount??=!0,b.isAbs(e)||(e=i.cwd()+"/"+e);e:for(var t=0;t<40;t++){for(var n=e.split("/").filter(f=>!!f),a=i.root,o="/",s=0;s>>0)%i.nameTable.length},hashAddNode(e){var r=i.hashName(e.parent.id,e.name);e.name_next=i.nameTable[r],i.nameTable[r]=e},hashRemoveNode(e){var r=i.hashName(e.parent.id,e.name);if(i.nameTable[r]===e)i.nameTable[r]=e.name_next;else for(var t=i.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=i.mayLookup(e);if(t)throw new i.ErrnoError(t);for(var n=i.hashName(e.id,r),a=i.nameTable[n];a;a=a.name_next){var o=a.name;if(a.parent.id===e.id&&o===r)return a}return i.lookup(e,r)},createNode(e,r,t,n){var a=new i.FSNode(e,r,t,n);return i.hashAddNode(a),a},destroyNode(e){i.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var r=["r","w","rw"][e&3];return e&512&&(r+="w"),r},nodePermissions(e,r){return i.ignorePermissions?0:r.includes("r")&&!(e.mode&292)||r.includes("w")&&!(e.mode&146)||r.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){if(!i.isDir(e.mode))return 54;var r=i.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){if(!i.isDir(e.mode))return 54;try{var t=i.lookupNode(e,r);return 20}catch{}return i.nodePermissions(e,"wx")},mayDelete(e,r,t){var n;try{n=i.lookupNode(e,r)}catch(o){return o.errno}var a=i.nodePermissions(e,"wx");if(a)return a;if(t){if(!i.isDir(n.mode))return 54;if(i.isRoot(n)||i.getPath(n)===i.cwd())return 10}else if(i.isDir(n.mode))return 31;return 0},mayOpen(e,r){return e?i.isLink(e.mode)?32:i.isDir(e.mode)&&(i.flagsToPermissionString(r)!=="r"||r&576)?31:i.nodePermissions(e,i.flagsToPermissionString(r)):44},checkOpExists(e,r){if(!e)throw new i.ErrnoError(r);return e},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=i.MAX_OPEN_FDS;e++)if(!i.streams[e])return e;throw new i.ErrnoError(33)},getStreamChecked(e){var r=i.getStream(e);if(!r)throw new i.ErrnoError(8);return r},getStream:e=>i.streams[e],createStream(e,r=-1){return e=Object.assign(new i.FSStream,e),r==-1&&(r=i.nextfd()),e.fd=r,i.streams[r]=e,e},closeStream(e){i.streams[e]=null},dupStream(e,r=-1){var t=i.createStream(e,r);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(e){var r=i.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new i.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,r)=>e<<8|r,registerDevice(e,r){i.devices[e]={stream_ops:r}},getDevice:e=>i.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push(...n.mounts)}return r},syncfs(e,r){typeof e=="function"&&(r=e,e=!1),i.syncFSRequests++,i.syncFSRequests>1&&M(`warning: ${i.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=i.getMounts(i.root.mount),n=0;function a(s){return i.syncFSRequests--,r(s)}function o(s){if(s)return o.errored?void 0:(o.errored=!0,a(s));++n>=t.length&&a(null)}t.forEach(s=>{if(!s.type.syncfs)return o(null);s.type.syncfs(s,e,o)})},mount(e,r,t){var n=t==="/",a=!t,o;if(n&&i.root)throw new i.ErrnoError(10);if(!n&&!a){var s=i.lookupPath(t,{follow_mount:!1});if(t=s.path,o=s.node,i.isMountpoint(o))throw new i.ErrnoError(10);if(!i.isDir(o.mode))throw new i.ErrnoError(54)}var u={type:e,opts:r,mountpoint:t,mounts:[]},l=e.mount(u);return l.mount=u,u.root=l,n?i.root=l:o&&(o.mounted=u,o.mount&&o.mount.mounts.push(u)),l},unmount(e){var r=i.lookupPath(e,{follow_mount:!1});if(!i.isMountpoint(r.node))throw new i.ErrnoError(28);var t=r.node,n=t.mounted,a=i.getMounts(n);Object.keys(i.nameTable).forEach(s=>{for(var u=i.nameTable[s];u;){var l=u.name_next;a.includes(u.mount)&&i.destroyNode(u),u=l}}),t.mounted=null;var o=t.mount.mounts.indexOf(n);t.mount.mounts.splice(o,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var n=i.lookupPath(e,{parent:!0}),a=n.node,o=b.basename(e);if(!o)throw new i.ErrnoError(28);if(o==="."||o==="..")throw new i.ErrnoError(20);var s=i.mayCreate(a,o);if(s)throw new i.ErrnoError(s);if(!a.node_ops.mknod)throw new i.ErrnoError(63);return a.node_ops.mknod(a,o,r,t)},statfs(e){return i.statfsNode(i.lookupPath(e,{follow:!0}).node)},statfsStream(e){return i.statfsNode(e.node)},statfsNode(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:i.nextInode,ffree:i.nextInode-1,fsid:42,flags:2,namelen:255};return e.node_ops.statfs&&Object.assign(r,e.node_ops.statfs(e.mount.opts.root)),r},create(e,r=438){return r&=4095,r|=32768,i.mknod(e,r,0)},mkdir(e,r=511){return r&=1023,r|=16384,i.mknod(e,r,0)},mkdirTree(e,r){for(var t=e.split("/"),n="",a=0;a"u"&&(t=r,r=438),r|=8192,i.mknod(e,r,t)},symlink(e,r){if(!le.resolve(e))throw new i.ErrnoError(44);var t=i.lookupPath(r,{parent:!0}),n=t.node;if(!n)throw new i.ErrnoError(44);var a=b.basename(r),o=i.mayCreate(n,a);if(o)throw new i.ErrnoError(o);if(!n.node_ops.symlink)throw new i.ErrnoError(63);return n.node_ops.symlink(n,a,e)},rename(e,r){var t=b.dirname(e),n=b.dirname(r),a=b.basename(e),o=b.basename(r),s,u,l;if(s=i.lookupPath(e,{parent:!0}),u=s.node,s=i.lookupPath(r,{parent:!0}),l=s.node,!u||!l)throw new i.ErrnoError(44);if(u.mount!==l.mount)throw new i.ErrnoError(75);var f=i.lookupNode(u,a),d=le.relative(e,n);if(d.charAt(0)!==".")throw new i.ErrnoError(28);if(d=le.relative(r,t),d.charAt(0)!==".")throw new i.ErrnoError(55);var v;try{v=i.lookupNode(l,o)}catch{}if(f!==v){var m=i.isDir(f.mode),p=i.mayDelete(u,a,m);if(p)throw new i.ErrnoError(p);if(p=v?i.mayDelete(l,o,m):i.mayCreate(l,o),p)throw new i.ErrnoError(p);if(!u.node_ops.rename)throw new i.ErrnoError(63);if(i.isMountpoint(f)||v&&i.isMountpoint(v))throw new i.ErrnoError(10);if(l!==u&&(p=i.nodePermissions(u,"w"),p))throw new i.ErrnoError(p);i.hashRemoveNode(f);try{u.node_ops.rename(f,l,o),f.parent=l}catch(_){throw _}finally{i.hashAddNode(f)}}},rmdir(e){var r=i.lookupPath(e,{parent:!0}),t=r.node,n=b.basename(e),a=i.lookupNode(t,n),o=i.mayDelete(t,n,!0);if(o)throw new i.ErrnoError(o);if(!t.node_ops.rmdir)throw new i.ErrnoError(63);if(i.isMountpoint(a))throw new i.ErrnoError(10);t.node_ops.rmdir(t,n),i.destroyNode(a)},readdir(e){var r=i.lookupPath(e,{follow:!0}),t=r.node,n=i.checkOpExists(t.node_ops.readdir,54);return n(t)},unlink(e){var r=i.lookupPath(e,{parent:!0}),t=r.node;if(!t)throw new i.ErrnoError(44);var n=b.basename(e),a=i.lookupNode(t,n),o=i.mayDelete(t,n,!1);if(o)throw new i.ErrnoError(o);if(!t.node_ops.unlink)throw new i.ErrnoError(63);if(i.isMountpoint(a))throw new i.ErrnoError(10);t.node_ops.unlink(t,n),i.destroyNode(a)},readlink(e){var r=i.lookupPath(e),t=r.node;if(!t)throw new i.ErrnoError(44);if(!t.node_ops.readlink)throw new i.ErrnoError(28);return t.node_ops.readlink(t)},stat(e,r){var t=i.lookupPath(e,{follow:!r}),n=t.node,a=i.checkOpExists(n.node_ops.getattr,63);return a(n)},lstat(e){return i.stat(e,!0)},chmod(e,r,t){var n;if(typeof e=="string"){var a=i.lookupPath(e,{follow:!t});n=a.node}else n=e;var o=i.checkOpExists(n.node_ops.setattr,63);o(n,{mode:r&4095|n.mode&-4096,ctime:Date.now(),dontFollow:t})},lchmod(e,r){i.chmod(e,r,!0)},fchmod(e,r){var t=i.getStreamChecked(e);i.chmod(t.node,r)},chown(e,r,t,n){var a;if(typeof e=="string"){var o=i.lookupPath(e,{follow:!n});a=o.node}else a=e;var s=i.checkOpExists(a.node_ops.setattr,63);s(a,{timestamp:Date.now(),dontFollow:n})},lchown(e,r,t){i.chown(e,r,t,!0)},fchown(e,r,t){var n=i.getStreamChecked(e);i.chown(n.node,r,t)},truncate(e,r){if(r<0)throw new i.ErrnoError(28);var t;if(typeof e=="string"){var n=i.lookupPath(e,{follow:!0});t=n.node}else t=e;if(i.isDir(t.mode))throw new i.ErrnoError(31);if(!i.isFile(t.mode))throw new i.ErrnoError(28);var a=i.nodePermissions(t,"w");if(a)throw new i.ErrnoError(a);var o=i.checkOpExists(t.node_ops.setattr,63);o(t,{size:r,timestamp:Date.now()})},ftruncate(e,r){var t=i.getStreamChecked(e);if(!(t.flags&2097155))throw new i.ErrnoError(28);i.truncate(t.node,r)},utime(e,r,t){var n=i.lookupPath(e,{follow:!0}),a=n.node,o=i.checkOpExists(a.node_ops.setattr,63);o(a,{atime:r,mtime:t})},open(e,r,t=438){if(e==="")throw new i.ErrnoError(44);r=typeof r=="string"?Vn(r):r,r&64?t=t&4095|32768:t=0;var n,a;if(typeof e=="object")n=e;else{a=e.endsWith("/");var o=i.lookupPath(e,{follow:!(r&131072),noent_okay:!0});n=o.node,e=o.path}var s=!1;if(r&64)if(n){if(r&128)throw new i.ErrnoError(20)}else{if(a)throw new i.ErrnoError(31);n=i.mknod(e,t|511,0),s=!0}if(!n)throw new i.ErrnoError(44);if(i.isChrdev(n.mode)&&(r&=-513),r&65536&&!i.isDir(n.mode))throw new i.ErrnoError(54);if(!s){var u=i.mayOpen(n,r);if(u)throw new i.ErrnoError(u)}r&512&&!s&&i.truncate(n,0),r&=-131713;var l=i.createStream({node:n,path:i.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return l.stream_ops.open&&l.stream_ops.open(l),s&&i.chmod(n,t&511),c.logReadFiles&&!(r&1)&&(e in i.readFiles||(i.readFiles[e]=1)),l},close(e){if(i.isClosed(e))throw new i.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(r){throw r}finally{i.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,r,t){if(i.isClosed(e))throw new i.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new i.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new i.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,n,a){if(n<0||a<0)throw new i.ErrnoError(28);if(i.isClosed(e))throw new i.ErrnoError(8);if((e.flags&2097155)===1)throw new i.ErrnoError(8);if(i.isDir(e.node.mode))throw new i.ErrnoError(31);if(!e.stream_ops.read)throw new i.ErrnoError(28);var o=typeof a<"u";if(!o)a=e.position;else if(!e.seekable)throw new i.ErrnoError(70);var s=e.stream_ops.read(e,r,t,n,a);return o||(e.position+=s),s},write(e,r,t,n,a,o){if(n<0||a<0)throw new i.ErrnoError(28);if(i.isClosed(e))throw new i.ErrnoError(8);if(!(e.flags&2097155))throw new i.ErrnoError(8);if(i.isDir(e.node.mode))throw new i.ErrnoError(31);if(!e.stream_ops.write)throw new i.ErrnoError(28);e.seekable&&e.flags&1024&&i.llseek(e,0,2);var s=typeof a<"u";if(!s)a=e.position;else if(!e.seekable)throw new i.ErrnoError(70);var u=e.stream_ops.write(e,r,t,n,a,o);return s||(e.position+=u),u},allocate(e,r,t){if(i.isClosed(e))throw new i.ErrnoError(8);if(r<0||t<=0)throw new i.ErrnoError(28);if(!(e.flags&2097155))throw new i.ErrnoError(8);if(!i.isFile(e.node.mode)&&!i.isDir(e.node.mode))throw new i.ErrnoError(43);if(!e.stream_ops.allocate)throw new i.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap(e,r,t,n,a){if(n&2&&!(a&2)&&(e.flags&2097155)!==2)throw new i.ErrnoError(2);if((e.flags&2097155)===1)throw new i.ErrnoError(2);if(!e.stream_ops.mmap)throw new i.ErrnoError(43);if(!r)throw new i.ErrnoError(28);return e.stream_ops.mmap(e,r,t,n,a)},msync(e,r,t,n,a){return e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,a):0},ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new i.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||"binary",r.encoding!=="utf8"&&r.encoding!=="binary")throw new Error(`Invalid encoding type "${r.encoding}"`);var t,n=i.open(e,r.flags),a=i.stat(e),o=a.size,s=new Uint8Array(o);return i.read(n,s,0,o,0),r.encoding==="utf8"?t=oe(s):r.encoding==="binary"&&(t=s),i.close(n),t},writeFile(e,r,t={}){t.flags=t.flags||577;var n=i.open(e,t.flags,t.mode);if(typeof r=="string"){var a=new Uint8Array(ir(r)+1),o=or(r,a,0,a.length);i.write(n,a,0,o,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))i.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw new Error("Unsupported data type");i.close(n)},cwd:()=>i.currentPath,chdir(e){var r=i.lookupPath(e,{follow:!0});if(r.node===null)throw new i.ErrnoError(44);if(!i.isDir(r.node.mode))throw new i.ErrnoError(54);var t=i.nodePermissions(r.node,"x");if(t)throw new i.ErrnoError(t);i.currentPath=r.path},createDefaultDirectories(){i.mkdir("/tmp"),i.mkdir("/home"),i.mkdir("/home/web_user")},createDefaultDevices(){i.mkdir("/dev"),i.registerDevice(i.makedev(1,3),{read:()=>0,write:(n,a,o,s,u)=>s,llseek:()=>0}),i.mkdev("/dev/null",i.makedev(1,3)),Z.register(i.makedev(5,0),Z.default_tty_ops),Z.register(i.makedev(6,0),Z.default_tty1_ops),i.mkdev("/dev/tty",i.makedev(5,0)),i.mkdev("/dev/tty1",i.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(r===0&&(rt(e),r=e.byteLength),e[--r]);i.createDevice("/dev","random",t),i.createDevice("/dev","urandom",t),i.mkdir("/dev/shm"),i.mkdir("/dev/shm/tmp")},createSpecialDirectories(){i.mkdir("/proc");var e=i.mkdir("/proc/self");i.mkdir("/proc/self/fd"),i.mount({mount(){var r=i.createNode(e,"fd",16895,73);return r.stream_ops={llseek:g.stream_ops.llseek},r.node_ops={lookup(t,n){var a=+n,o=i.getStreamChecked(a),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>o.path},id:a+1};return s.parent=s,s},readdir(){return Array.from(i.streams.entries()).filter(([t,n])=>n).map(([t,n])=>t.toString())}},r}},{},"/proc/self/fd")},createStandardStreams(e,r,t){e?i.createDevice("/dev","stdin",e):i.symlink("/dev/tty","/dev/stdin"),r?i.createDevice("/dev","stdout",null,r):i.symlink("/dev/tty","/dev/stdout"),t?i.createDevice("/dev","stderr",null,t):i.symlink("/dev/tty1","/dev/stderr");var n=i.open("/dev/stdin",0),a=i.open("/dev/stdout",1),o=i.open("/dev/stderr",1)},staticInit(){i.nameTable=new Array(4096),i.mount(g,{},"/"),i.createDefaultDirectories(),i.createDefaultDevices(),i.createSpecialDirectories(),i.filesystems={MEMFS:g}},init(e,r,t){i.initialized=!0,e??=c.stdin,r??=c.stdout,t??=c.stderr,i.createStandardStreams(e,r,t)},quit(){i.initialized=!1;for(var e=0;ethis.length-1||p<0)){var _=p%this.chunkSize,T=p/this.chunkSize|0;return this.getter(T)[_]}}setDataGetter(p){this.getter=p}cacheLength(){var p=new XMLHttpRequest;if(p.open("HEAD",t,!1),p.send(null),!(p.status>=200&&p.status<300||p.status===304))throw new Error("Couldn't load "+t+". Status: "+p.status);var _=Number(p.getResponseHeader("Content-length")),T,D=(T=p.getResponseHeader("Accept-Ranges"))&&T==="bytes",A=(T=p.getResponseHeader("Content-Encoding"))&&T==="gzip",W=1024*1024;D||(W=_);var F=(H,J)=>{if(H>J)throw new Error("invalid range ("+H+", "+J+") or no bytes requested!");if(J>_-1)throw new Error("only "+_+" bytes available! programmer error!");var C=new XMLHttpRequest;if(C.open("GET",t,!1),_!==W&&C.setRequestHeader("Range","bytes="+H+"-"+J),C.responseType="arraybuffer",C.overrideMimeType&&C.overrideMimeType("text/plain; charset=x-user-defined"),C.send(null),!(C.status>=200&&C.status<300||C.status===304))throw new Error("Couldn't load "+t+". Status: "+C.status);return C.response!==void 0?new Uint8Array(C.response||[]):tt(C.responseText||"",!0)},ne=this;ne.setDataGetter(H=>{var J=H*W,C=(H+1)*W-1;if(C=Math.min(C,_-1),typeof ne.chunks[H]>"u"&&(ne.chunks[H]=F(J,C)),typeof ne.chunks[H]>"u")throw new Error("doXHR failed!");return ne.chunks[H]}),(A||!_)&&(W=_=1,_=this.getter(0).length,W=_,Te("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=_,this._chunkSize=W,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!ae)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new o,u={isDevice:!1,contents:s}}else var u={isDevice:!1,url:t};var l=i.createFile(e,r,u,n,a);u.contents?l.contents=u.contents:u.url&&(l.contents=null,l.url=u.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var f={},d=Object.keys(l.stream_ops);d.forEach(m=>{var p=l.stream_ops[m];f[m]=(..._)=>(i.forceLoadFile(l),p(..._))});function v(m,p,_,T,D){var A=m.node.contents;if(D>=A.length)return 0;var W=Math.min(A.length-D,T);if(A.slice)for(var F=0;F(i.forceLoadFile(l),v(m,p,_,T,D)),f.mmap=(m,p,_,T,D)=>{i.forceLoadFile(l);var A=nt(p);if(!A)throw new i.ErrnoError(48);return v(m,O(),A,p,_),{ptr:A,allocated:!0}},l.stream_ops=f,l}},S={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(b.isAbs(r))return r;var n;if(e===-100)n=i.cwd();else{var a=S.getStreamFromFD(e);n=a.path}if(r.length==0){if(!t)throw new i.ErrnoError(44);return n}return n+"/"+r},writeStat(e,r){h()[e>>2]=r.dev,h()[e+4>>2]=r.mode,w()[e+8>>2]=r.nlink,h()[e+12>>2]=r.uid,h()[e+16>>2]=r.gid,h()[e+20>>2]=r.rdev,U[e+24>>3]=BigInt(r.size),h()[e+32>>2]=4096,h()[e+36>>2]=r.blocks;var t=r.atime.getTime(),n=r.mtime.getTime(),a=r.ctime.getTime();return U[e+40>>3]=BigInt(Math.floor(t/1e3)),w()[e+48>>2]=t%1e3*1e3*1e3,U[e+56>>3]=BigInt(Math.floor(n/1e3)),w()[e+64>>2]=n%1e3*1e3*1e3,U[e+72>>3]=BigInt(Math.floor(a/1e3)),w()[e+80>>2]=a%1e3*1e3*1e3,U[e+88>>3]=BigInt(r.ino),0},writeStatFs(e,r){h()[e+4>>2]=r.bsize,h()[e+40>>2]=r.bsize,h()[e+8>>2]=r.blocks,h()[e+12>>2]=r.bfree,h()[e+16>>2]=r.bavail,h()[e+20>>2]=r.files,h()[e+24>>2]=r.ffree,h()[e+28>>2]=r.fsid,h()[e+44>>2]=r.flags,h()[e+36>>2]=r.namelen},doMsync(e,r,t,n,a){if(!i.isFile(r.node.mode))throw new i.ErrnoError(43);if(n&2)return 0;var o=I().slice(e,e+t);i.msync(r,o,a,t,n)},getStreamFromFD(e){var r=i.getStreamChecked(e);return r},varargs:void 0,getStr(e){var r=pe(e);return r}};function at(e,r,t){if($)return x(2,0,1,e,r,t);S.varargs=t;try{var n=S.getStreamFromFD(e);switch(r){case 0:{var a=De();if(a<0)return-28;for(;i.streams[a];)a++;var o;return o=i.dupStream(n,a),o.fd}case 1:case 2:return 0;case 3:return n.flags;case 4:{var a=De();return n.flags|=a,0}case 12:{var a=ue(),s=0;return ee()[a+s>>1]=2,0}case 13:case 14:return 0}return-28}catch(u){if(typeof i>"u"||u.name!=="ErrnoError")throw u;return-u.errno}}function it(e,r,t){if($)return x(3,0,1,e,r,t);S.varargs=t;try{var n=S.getStreamFromFD(e);switch(r){case 21509:return n.tty?0:-59;case 21505:{if(!n.tty)return-59;if(n.tty.ops.ioctl_tcgets){var a=n.tty.ops.ioctl_tcgets(n),o=ue();h()[o>>2]=a.c_iflag||0,h()[o+4>>2]=a.c_oflag||0,h()[o+8>>2]=a.c_cflag||0,h()[o+12>>2]=a.c_lflag||0;for(var s=0;s<32;s++)O()[o+s+17]=a.c_cc[s]||0;return 0}return 0}case 21510:case 21511:case 21512:return n.tty?0:-59;case 21506:case 21507:case 21508:{if(!n.tty)return-59;if(n.tty.ops.ioctl_tcsets){for(var o=ue(),u=h()[o>>2],l=h()[o+4>>2],f=h()[o+8>>2],d=h()[o+12>>2],v=[],s=0;s<32;s++)v.push(O()[o+s+17]);return n.tty.ops.ioctl_tcsets(n.tty,r,{c_iflag:u,c_oflag:l,c_cflag:f,c_lflag:d,c_cc:v})}return 0}case 21519:{if(!n.tty)return-59;var o=ue();return h()[o>>2]=0,0}case 21520:return n.tty?-28:-59;case 21531:{var o=ue();return i.ioctl(n,r,o)}case 21523:{if(!n.tty)return-59;if(n.tty.ops.ioctl_tiocgwinsz){var m=n.tty.ops.ioctl_tiocgwinsz(n.tty),o=ue();ee()[o>>1]=m[0],ee()[o+2>>1]=m[1]}return 0}case 21524:return n.tty?0:-59;case 21515:return n.tty?0:-59;default:return-28}}catch(p){if(typeof i>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function ot(e,r,t,n){if($)return x(4,0,1,e,r,t,n);S.varargs=n;try{r=S.getStr(r),r=S.calculateAt(e,r);var a=n?De():0;return i.open(r,t,a).fd}catch(o){if(typeof i>"u"||o.name!=="ErrnoError")throw o;return-o.errno}}function st(e){if($)return x(5,0,1,e);try{return e=S.getStr(e),i.rmdir(e),0}catch(r){if(typeof i>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}function ut(e,r,t){if($)return x(6,0,1,e,r,t);try{return r=S.getStr(r),r=S.calculateAt(e,r),t===0?i.unlink(r):t===512?i.rmdir(r):he("Invalid flags passed to unlinkat"),0}catch(n){if(typeof i>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}var Gn=()=>he(""),Me=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},Yn=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);lt=e},lt,B=e=>{for(var r="",t=e;I()[t];)r+=lt[I()[t++]];return r},fe={},te={},Re={},ce,E=e=>{throw new ce(e)},ft,Oe=e=>{throw new ft(e)},me=(e,r,t)=>{e.forEach(u=>Re[u]=r);function n(u){var l=t(u);l.length!==e.length&&Oe("Mismatched type converter count");for(var f=0;f{te.hasOwnProperty(u)?a[l]=te[u]:(o.push(u),fe.hasOwnProperty(u)||(fe[u]=[]),fe[u].push(()=>{a[l]=te[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)};function qn(e,r,t={}){var n=r.name;if(e||E(`type "${n}" must have a positive integer typeid pointer`),te.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;E(`Cannot register type '${n}' twice`)}if(te[e]=r,delete Re[e],fe.hasOwnProperty(e)){var a=fe[e];delete fe[e],a.forEach(o=>o())}}function G(e,r,t={}){return qn(e,r,t)}var ct=(e,r,t)=>{switch(r){case 1:return t?n=>O()[n]:n=>I()[n];case 2:return t?n=>ee()[n>>1]:n=>Ge()[n>>1];case 4:return t?n=>h()[n>>2]:n=>w()[n>>2];case 8:return t?n=>U[n>>3]:n=>xr[n>>3];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Xn=(e,r,t,n,a)=>{r=B(r);var o=r.indexOf("u")!=-1;o&&(a=(1n<<64n)-1n),G(e,{name:r,fromWireType:s=>s,toWireType:function(s,u){if(typeof u!="bigint"&&typeof u!="number")throw new TypeError(`Cannot convert "${Me(u)}" to ${this.name}`);return typeof u=="number"&&(u=BigInt(u)),u},argPackAdvance:X,readValueFromPointer:ct(r,t,!o),destructorFunction:null})},X=8,Kn=(e,r,t,n)=>{r=B(r),G(e,{name:r,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?t:n},argPackAdvance:X,readValueFromPointer:function(a){return this.fromWireType(I()[a])},destructorFunction:null})},Qn=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),ur=e=>{function r(t){return t.$$.ptrType.registeredClass.name}E(r(e)+" instance already deleted")},lr=!1,dt=e=>{},Jn=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},vt=e=>{e.count.value-=1;var r=e.count.value===0;r&&Jn(e)},ht=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=ht(e,r,t.baseClass);return n===null?null:t.downcast(n)},pt={},Zn={},ea=(e,r)=>{for(r===void 0&&E("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},ra=(e,r)=>(r=ea(e,r),Zn[r]),We=(e,r)=>{(!r.ptrType||!r.ptr)&&Oe("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&Oe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},_e(Object.create(e,{$$:{value:r,writable:!0}}))};function ta(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=ra(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function a(){return this.isSmartPointer?We(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):We(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var o=this.registeredClass.getActualType(r),s=pt[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=ht(r,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?We(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:e}):We(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var _e=e=>typeof FinalizationRegistry>"u"?(_e=r=>r,e):(lr=new FinalizationRegistry(r=>{vt(r.$$)}),_e=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var a={$$:t};lr.register(r,a,r)}return r},dt=r=>lr.unregister(r),_e(e)),xe=[],na=()=>{for(;xe.length;){var e=xe.pop();e.$$.deleteScheduled=!1,e.delete()}},mt,aa=()=>{Object.assign(Ue.prototype,{isAliasOf(e){if(!(this instanceof Ue)||!(e instanceof Ue))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,a=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return r===n&&t===a},clone(){if(this.$$.ptr||ur(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_e(Object.create(Object.getPrototypeOf(this),{$$:{value:Qn(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||ur(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&E("Object already scheduled for deletion"),dt(this),vt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ur(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&E("Object already scheduled for deletion"),xe.push(this),xe.length===1&&mt&&mt(na),this.$$.deleteScheduled=!0,this}})};function Ue(){}var ge=(e,r)=>Object.defineProperty(r,"name",{value:e}),_t=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(...a){return e[r].overloadTable.hasOwnProperty(a.length)||E(`Function '${t}' called with an invalid number of arguments (${a.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[a.length].apply(this,a)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},ia=(e,r,t)=>{c.hasOwnProperty(e)?((t===void 0||c[e].overloadTable!==void 0&&c[e].overloadTable[t]!==void 0)&&E(`Cannot register public name '${e}' twice`),_t(c,e,e),c[e].overloadTable.hasOwnProperty(t)&&E(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),c[e].overloadTable[t]=r):(c[e]=r,c[e].argCount=t)},oa=48,sa=57,ua=e=>{e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=oa&&r<=sa?`_${e}`:e};function la(e,r,t,n,a,o,s,u){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var fr=(e,r,t)=>{for(;r!==t;)r.upcast||E(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function fa(e,r){if(r===null)return this.isReference&&E(`null is not a valid ${this.name}`),0;r.$$||E(`Cannot pass "${Me(r)}" as a ${this.name}`),r.$$.ptr||E(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=fr(r.$$.ptr,t,this.registeredClass);return n}function ca(e,r){var t;if(r===null)return this.isReference&&E(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&E(`Cannot pass "${Me(r)}" as a ${this.name}`),r.$$.ptr||E(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&E(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=fr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&E("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:E(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var a=r.clone();t=this.rawShare(t,P.toHandle(()=>a.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:E("Unsupporting sharing policy")}return t}function da(e,r){if(r===null)return this.isReference&&E(`null is not a valid ${this.name}`),0;r.$$||E(`Cannot pass "${Me(r)}" as a ${this.name}`),r.$$.ptr||E(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&E(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=fr(r.$$.ptr,t,this.registeredClass);return n}function Ie(e){return this.fromWireType(w()[e>>2])}var va=()=>{Object.assign(je.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor?.(e)},argPackAdvance:X,readValueFromPointer:Ie,fromWireType:ta})};function je(e,r,t,n,a,o,s,u,l,f,d){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=d,!a&&r.baseClass===void 0?n?(this.toWireType=fa,this.destructorFunction=null):(this.toWireType=da,this.destructorFunction=null):this.toWireType=ca}var ha=(e,r,t)=>{c.hasOwnProperty(e)||Oe("Replacing nonexistent public symbol"),c[e].overloadTable!==void 0&&t!==void 0?c[e].overloadTable[t]=r:(c[e]=r,c[e].argCount=t)},de=(e,r)=>{e=B(e);function t(){return N(r)}var n=t();return typeof n!="function"&&E(`unknown function pointer with signature ${e}: ${r}`),n},pa=(e,r)=>{var t=ge(r,function(n){this.name=r,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` -`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},gt,wt=e=>{var r=Nt(e),t=B(r);return Q(r),t},cr=(e,r)=>{var t=[],n={};function a(o){if(!n[o]&&!te[o]){if(Re[o]){Re[o].forEach(a);return}t.push(o),n[o]=!0}}throw r.forEach(a),new gt(`${e}: `+t.map(wt).join([", "]))},ma=(e,r,t,n,a,o,s,u,l,f,d,v,m)=>{d=B(d),o=de(a,o),u&&=de(s,u),f&&=de(l,f),m=de(v,m);var p=ua(d);ia(p,function(){cr(`Cannot construct ${d} due to unbound types`,[n])}),me([e,r,t],n?[n]:[],_=>{_=_[0];var T,D;n?(T=_.registeredClass,D=T.instancePrototype):D=Ue.prototype;var A=ge(d,function(...C){if(Object.getPrototypeOf(this)!==W)throw new ce("Use 'new' to construct "+d);if(F.constructor_body===void 0)throw new ce(d+" has no accessible constructor");var rn=F.constructor_body[C.length];if(rn===void 0)throw new ce(`Tried to invoke ctor of ${d} with invalid number of parameters (${C.length}) - expected (${Object.keys(F.constructor_body).toString()}) parameters instead!`);return rn.apply(this,C)}),W=Object.create(D,{constructor:{value:A}});A.prototype=W;var F=new la(d,A,W,m,T,o,u,f);F.baseClass&&(F.baseClass.__derivedClasses??=[],F.baseClass.__derivedClasses.push(F));var ne=new je(d,F,!0,!1,!1),H=new je(d+"*",F,!1,!1,!1),J=new je(d+" const*",F,!1,!0,!1);return pt[e]={pointerType:H,constPointerType:J},ha(p,A),[ne,H,J]})},yt=(e,r)=>{for(var t=[],n=0;n>2]);return t},Et=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function kt(e){for(var r=1;r{var s=yt(r,t);a=de(n,a),me([],[e],u=>{u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[r-1]!==void 0)throw new ce(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[r-1]=()=>{cr(`Cannot construct ${u.name} due to unbound types`,s)},me([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[r-1]=Tt(l,f,null,a,o),[])),[]})},wa=e=>{e=e.trim();let r=e.indexOf("(");return r!==-1?e.substr(0,r):e},ya=(e,r,t,n,a,o,s,u,l,f)=>{var d=yt(t,n);r=B(r),r=wa(r),o=de(a,o),me([],[e],v=>{v=v[0];var m=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),u&&v.registeredClass.pureVirtualFunctions.push(r);function p(){cr(`Cannot call ${m} due to unbound types`,d)}var _=v.registeredClass.instancePrototype,T=_[r];return T===void 0||T.overloadTable===void 0&&T.className!==v.name&&T.argCount===t-2?(p.argCount=t-2,p.className=v.name,_[r]=p):(_t(_,r,m),_[r].overloadTable[t-2]=p),me([],d,D=>{var A=Tt(m,D,v,o,s,l);return _[r].overloadTable===void 0?(A.argCount=t-2,_[r]=A):_[r].overloadTable[t-2]=A,[]}),[]})},dr=[],K=[],vr=e=>{e>9&&--K[e+1]===0&&(K[e]=void 0,dr.push(e))},Ea=()=>K.length/2-5-dr.length,ka=()=>{K.push(0,1,void 0,1,null,1,!0,1,!1,1),c.count_emval_handles=Ea},P={toValue:e=>(e||E("Cannot use deleted val. handle = "+e),K[e]),toHandle:e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let r=dr.pop()||K.length;return K[r]=e,K[r+1]=1,r}}}},$t={name:"emscripten::val",fromWireType:e=>{var r=P.toValue(e);return vr(e),r},toWireType:(e,r)=>P.toHandle(r),argPackAdvance:X,readValueFromPointer:Ie,destructorFunction:null},ba=e=>G(e,$t),Ta=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(fn()[t>>2])};case 8:return function(t){return this.fromWireType(Ye()[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},$a=(e,r,t)=>{r=B(r),G(e,{name:r,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:X,readValueFromPointer:Ta(r,t),destructorFunction:null})},Pa=(e,r,t,n,a)=>{r=B(r),a===-1&&(a=4294967295);var o=d=>d;if(n===0){var s=32-8*t;o=d=>d<>>s}var u=r.includes("unsigned"),l=(d,v)=>{},f;u?f=function(d,v){return l(v,this.name),v>>>0}:f=function(d,v){return l(v,this.name),v},G(e,{name:r,fromWireType:o,toWireType:f,argPackAdvance:X,readValueFromPointer:ct(r,t,n!==0),destructorFunction:null})},Aa=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],a=n[r];function o(s){var u=w()[s>>2],l=w()[s+4>>2];return new a(O().buffer,l,u)}t=B(t),G(e,{name:t,fromWireType:o,argPackAdvance:X,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Fa=Object.assign({optional:!0},$t),Ca=(e,r)=>{G(e,Fa)},we=(e,r,t)=>or(e,I(),r,t),Sa=(e,r)=>{r=B(r);var t=!0;G(e,{name:r,fromWireType(n){var a=w()[n>>2],o=n+4,s;if(t)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||I()[f]==0){var d=f-u,v=pe(u,d);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var m=new Array(a),l=0;l>2]=o,t&&s)we(a,l,o+1);else if(s)for(var f=0;f255&&(Q(u),E("String has UTF-16 code units that do not fit in 8 bits")),I()[l+f]=d}else for(var f=0;f{for(var t=e,n=t>>1,a=n+r/2;!(n>=a)&&Ge()[n];)++n;if(t=n<<1,t-e>32&&Pt)return Pt.decode(I().slice(e,t));for(var o="",s=0;!(s>=r/2);++s){var u=ee()[e+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},Ma=(e,r,t)=>{if(t??=2147483647,t<2)return 0;t-=2;for(var n=r,a=t>1]=s,r+=2}return ee()[r>>1]=0,r-n},Ra=e=>e.length*2,Oa=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var a=h()[e+t*4>>2];if(a==0)break;if(++t,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},Wa=(e,r,t)=>{if(t??=2147483647,t<4)return 0;for(var n=r,a=n+t-4,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(h()[r>>2]=s,r+=4,r+4>a)break}return h()[r>>2]=0,r-n},xa=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},Ua=(e,r,t)=>{t=B(t);var n,a,o,s;r===2?(n=Da,a=Ma,s=Ra,o=u=>Ge()[u>>1]):r===4&&(n=Oa,a=Wa,s=xa,o=u=>w()[u>>2]),G(e,{name:t,fromWireType:u=>{for(var l=w()[u>>2],f,d=u+4,v=0;v<=l;++v){var m=u+4+v*r;if(v==l||o(m)==0){var p=m-d,_=n(d,p);f===void 0?f=_:(f+="\0",f+=_),d=m+r}}return Q(u),f},toWireType:(u,l)=>{typeof l!="string"&&E(`Cannot pass non-string to C++ string type ${t}`);var f=s(l),d=wr(4+f+r);return w()[d>>2]=f/r,a(l,d+4,f+r),u!==null&&u.push(Q,d),d},argPackAdvance:X,readValueFromPointer:Ie,destructorFunction(u){Q(u)}})},Ia=(e,r)=>{r=B(r),G(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},ja=e=>{yr(e,!ae,1,!$r,65536,!1),y.threadInitTLS()},Na=()=>{if(!Qe())try{$?Er(ie):er(ie)}catch(e){Xr(e)}},At=e=>{if(!Pe)try{e(),Na()}catch(r){Xr(r)}},hr=e=>{if(typeof Atomics.waitAsync=="function"){var r=Atomics.waitAsync(h(),e>>2,e);r.value.then(Ne);var t=e+128;Atomics.store(h(),t>>2,1)}},Ne=()=>{var e=Le();e&&(hr(e),At(Gt))},Ba=(e,r)=>{if(e==r)setTimeout(Ne);else if($)postMessage({targetThread:e,cmd:"checkMailbox"});else{var t=y.pthreads[e];if(!t)return;t.postMessage({cmd:"checkMailbox"})}},Be=[],Ha=(e,r,t,n,a)=>{n/=2,Be.length=n;for(var o=a>>3,s=0;s{tr=!1,Fe=0},za=e=>{$?postMessage({cmd:"cleanupThread",thread:e}):qr(e)},Va=e=>{},pr=(e,r)=>{var t=te[e];return t===void 0&&E(`${r} has unknown type ${wt(e)}`),t},Ft=(e,r,t)=>{var n=[],a=e.toWireType(n,t);return n.length&&(w()[r>>2]=P.toHandle(n)),a},Ga=(e,r,t)=>(e=P.toValue(e),r=pr(r,"emval::as"),Ft(r,t,e)),He=[],Ya=(e,r,t,n)=>(e=He[e],r=P.toValue(r),e(null,r,t,n)),qa={},mr=e=>{var r=qa[e];return r===void 0?B(e):r},Xa=(e,r,t,n,a)=>(e=He[e],r=P.toValue(r),t=mr(t),e(r,r[t],n,a)),Ct=()=>typeof globalThis=="object"?globalThis:function(){return Function}()("return this")(),Ka=e=>e===0?P.toHandle(Ct()):(e=mr(e),P.toHandle(Ct()[e])),Qa=e=>{var r=He.length;return He.push(e),r},Ja=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},Vi=Reflect.construct,Za=(e,r,t)=>{var n=Ja(e,r),a=n.shift();e--;var o=`return function (obj, func, destructorsRef, args) { -`,s=0,u=[];t===0&&u.push("obj");for(var l=["retType"],f=[a],d=0;d_.name).join(", ")}) => ${a.name}>`;return Qa(ge(p,m))},ei=(e,r)=>(e=P.toValue(e),r=P.toValue(r),P.toHandle(e[r])),ri=e=>{e>9&&(K[e+1]+=1)},ti=()=>P.toHandle([]),ni=e=>P.toHandle(mr(e)),ai=()=>P.toHandle({}),ii=e=>{var r=P.toValue(e);Et(r),vr(e)},oi=(e,r,t)=>{e=P.toValue(e),r=P.toValue(r),t=P.toValue(t),e[r]=t},si=(e,r)=>{e=pr(e,"_emval_take_value");var t=e.readValueFromPointer(r);return P.toHandle(t)},ui=e=>(e=P.toValue(e),P.toHandle(typeof e));function li(e,r){e=Je(e);var t=new Date(e*1e3);h()[r>>2]=t.getUTCSeconds(),h()[r+4>>2]=t.getUTCMinutes(),h()[r+8>>2]=t.getUTCHours(),h()[r+12>>2]=t.getUTCDate(),h()[r+16>>2]=t.getUTCMonth(),h()[r+20>>2]=t.getUTCFullYear()-1900,h()[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),a=(t.getTime()-n)/(1e3*60*60*24)|0;h()[r+28>>2]=a}var fi=e=>e%4===0&&(e%100!==0||e%400===0),ci=[0,31,60,91,121,152,182,213,244,274,305,335],di=[0,31,59,90,120,151,181,212,243,273,304,334],St=e=>{var r=fi(e.getFullYear()),t=r?ci:di,n=t[e.getMonth()]+e.getDate()-1;return n};function vi(e,r){e=Je(e);var t=new Date(e*1e3);h()[r>>2]=t.getSeconds(),h()[r+4>>2]=t.getMinutes(),h()[r+8>>2]=t.getHours(),h()[r+12>>2]=t.getDate(),h()[r+16>>2]=t.getMonth(),h()[r+20>>2]=t.getFullYear()-1900,h()[r+24>>2]=t.getDay();var n=St(t)|0;h()[r+28>>2]=n,h()[r+36>>2]=-(t.getTimezoneOffset()*60);var a=new Date(t.getFullYear(),0,1),o=new Date(t.getFullYear(),6,1).getTimezoneOffset(),s=a.getTimezoneOffset(),u=(o!=s&&t.getTimezoneOffset()==Math.min(s,o))|0;h()[r+32>>2]=u}var hi=function(e){var r=(()=>{var t=new Date(h()[e+20>>2]+1900,h()[e+16>>2],h()[e+12>>2],h()[e+8>>2],h()[e+4>>2],h()[e>>2],0),n=h()[e+32>>2],a=t.getTimezoneOffset(),o=new Date(t.getFullYear(),0,1),s=new Date(t.getFullYear(),6,1).getTimezoneOffset(),u=o.getTimezoneOffset(),l=Math.min(u,s);if(n<0)h()[e+32>>2]=+(s!=u&&l==a);else if(n>0!=(l==a)){var f=Math.max(u,s),d=n>0?l:f;t.setTime(t.getTime()+(d-a)*6e4)}h()[e+24>>2]=t.getDay();var v=St(t)|0;h()[e+28>>2]=v,h()[e>>2]=t.getSeconds(),h()[e+4>>2]=t.getMinutes(),h()[e+8>>2]=t.getHours(),h()[e+12>>2]=t.getDate(),h()[e+16>>2]=t.getMonth(),h()[e+20>>2]=t.getYear();var m=t.getTime();return isNaN(m)?-1:m/1e3})();return BigInt(r)},ye={},Dt=()=>performance.timeOrigin+performance.now();function Mt(e,r){if($)return x(7,0,1,e,r);if(ye[e]&&(clearTimeout(ye[e].id),delete ye[e]),!r)return 0;var t=setTimeout(()=>{delete ye[e],At(()=>Vt(e,Dt()))},r);return ye[e]={id:t,timeout_ms:r},0}var pi=(e,r,t,n)=>{var a=new Date().getFullYear(),o=new Date(a,0,1),s=new Date(a,6,1),u=o.getTimezoneOffset(),l=s.getTimezoneOffset(),f=Math.max(u,l);w()[e>>2]=f*60,h()[r>>2]=+(u!=l);var d=p=>{var _=p>=0?"-":"+",T=Math.abs(p),D=String(Math.floor(T/60)).padStart(2,"0"),A=String(T%60).padStart(2,"0");return`UTC${_}${D}${A}`},v=d(u),m=d(l);lDate.now(),_r=e=>{_r.shown||={},_r.shown[e]||(_r.shown[e]=1,M(e))},_i=()=>{},gi=()=>{Fe+=1},wi=()=>{throw gi(),"unwind"},yi=()=>2147483648,Ei=e=>{var r=R.buffer,t=(e-r.byteLength+65535)/65536|0;try{return R.grow(t),L(),1}catch{}},ki=e=>{var r=I().length;if(e>>>=0,e<=r)return!1;var t=yi();if(e>t)return!1;for(var n=1;n<=4;n*=2){var a=r*(1+.2/n);a=Math.min(a,e+100663296);var o=Math.min(t,jn(Math.max(e,a),65536)),s=Ei(o);if(s)return!0}return!1},gr={},bi=()=>Ar||"./this.program",Ee=()=>{if(!Ee.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:bi()};for(var t in gr)gr[t]===void 0?delete r[t]:r[t]=gr[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);Ee.strings=n}return Ee.strings},Ti=(e,r)=>{for(var t=0;t{var o=r+t;w()[e+a*4>>2]=o,Ti(n,o),t+=n.length+1}),0},Ot=function(e,r){if($)return x(9,0,1,e,r);var t=Ee();w()[e>>2]=t.length;var n=0;return t.forEach(a=>n+=a.length+1),w()[r>>2]=n,0};function Wt(e){if($)return x(10,0,1,e);try{var r=S.getStreamFromFD(e);return i.close(r),0}catch(t){if(typeof i>"u"||t.name!=="ErrnoError")throw t;return t.errno}}var $i=(e,r,t,n)=>{for(var a=0,o=0;o>2],u=w()[r+4>>2];r+=8;var l=i.read(e,O(),s,u,n);if(l<0)return-1;if(a+=l,l>2]=o,0}catch(s){if(typeof i>"u"||s.name!=="ErrnoError")throw s;return s.errno}}function Ut(e,r,t,n){if($)return x(12,0,1,e,r,t,n);r=Je(r);try{if(isNaN(r))return 61;var a=S.getStreamFromFD(e);return i.llseek(a,r,t),U[n>>3]=BigInt(a.position),a.getdents&&r===0&&t===0&&(a.getdents=null),0}catch(o){if(typeof i>"u"||o.name!=="ErrnoError")throw o;return o.errno}}var Pi=(e,r,t,n)=>{for(var a=0,o=0;o>2],u=w()[r+4>>2];r+=8;var l=i.write(e,O(),s,u,n);if(l<0)return-1;if(a+=l,l>2]=o,0}catch(s){if(typeof i>"u"||s.name!=="ErrnoError")throw s;return s.errno}}y.init(),i.createPreloadedFile=zn,i.staticInit(),g.doesNotExistError=new i.ErrnoError(44),g.doesNotExistError.stack="",Yn(),ce=c.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},ft=c.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},aa(),va(),gt=c.UnboundTypeError=pa(Error,"UnboundTypeError"),ka();var Ai=[Ze,Kr,at,it,ot,st,ut,Mt,Rt,Ot,Wt,xt,Ut,It],jt;function Fi(){jt={f:Sn,R:Mn,c:On,m:Wn,e:xn,l:Rn,A:at,ia:it,ja:ot,V:st,W:ut,S:Gn,D:Xn,qa:Kn,E:ma,B:ga,s:ya,oa:ba,C:$a,r:Pa,p:Aa,wa:Ca,pa:Sa,w:Ua,ra:Ia,da:ja,U:Ba,Y:Ha,O:La,Q:za,ca:hr,la:Va,J:Ga,sa:Ya,F:Xa,M:vr,H:Ka,y:Za,K:ei,G:ri,ta:ti,n:ni,x:ai,va:ii,ua:oi,q:si,I:ui,Z:li,_:vi,$:hi,P:Mt,aa:pi,X:_i,ma:mi,ka:wi,t:Dt,T:ki,ea:Rt,fa:Ot,na:er,z:Wt,ha:xt,ba:Ut,ga:It,k:Oi,L:Bi,j:ji,i:Di,h:Mi,v:Ni,o:Ii,d:Wi,u:xi,g:Ui,b:Ri,a:R,N:Ze}}var k=await En(),Ci=()=>(Ci=k.xa)(),Nt=e=>(Nt=k.ya)(e),Bt=()=>(Bt=k.za)(),Le=()=>(Le=k.Aa)(),wr=e=>(wr=k.Ba)(e),Q=e=>(Q=k.Ca)(e),Si=()=>(Si=k.Ea)(),yr=(e,r,t,n,a,o)=>(yr=k.Fa)(e,r,t,n,a,o),Ht=()=>(Ht=k.Ga)(),Lt=(e,r,t,n,a)=>(Lt=k.Ha)(e,r,t,n,a),zt=e=>(zt=k.Ia)(e),Er=e=>(Er=k.Ja)(e),Vt=(e,r)=>(Vt=k.Ka)(e,r),Gt=()=>(Gt=k.La)(),V=(e,r)=>(V=k.Ma)(e,r),Yt=e=>(Yt=k.Na)(e),qt=(e,r)=>(qt=k.Oa)(e,r),Xt=e=>(Xt=k.Pa)(e),Kt=e=>(Kt=k.Qa)(e),Qt=()=>(Qt=k.Ra)(),Jt=e=>(Jt=k.Sa)(e),Zt=(e,r,t)=>(Zt=k.Ta)(e,r,t),en=e=>(en=k.Ua)(e);function Di(e,r){var t=z();try{return N(e)(r)}catch(n){if(j(t),n!==n+0)throw n;V(1,0)}}function Mi(e,r,t){var n=z();try{return N(e)(r,t)}catch(a){if(j(n),a!==a+0)throw a;V(1,0)}}function Ri(e,r,t,n,a){var o=z();try{N(e)(r,t,n,a)}catch(s){if(j(o),s!==s+0)throw s;V(1,0)}}function Oi(e,r,t,n){var a=z();try{return N(e)(r,t,n)}catch(o){if(j(a),o!==o+0)throw o;V(1,0)}}function Wi(e,r){var t=z();try{N(e)(r)}catch(n){if(j(t),n!==n+0)throw n;V(1,0)}}function xi(e,r,t){var n=z();try{N(e)(r,t)}catch(a){if(j(n),a!==a+0)throw a;V(1,0)}}function Ui(e,r,t,n){var a=z();try{N(e)(r,t,n)}catch(o){if(j(a),o!==o+0)throw o;V(1,0)}}function Ii(e){var r=z();try{N(e)()}catch(t){if(j(r),t!==t+0)throw t;V(1,0)}}function ji(e){var r=z();try{return N(e)()}catch(t){if(j(r),t!==t+0)throw t;V(1,0)}}function Ni(e,r,t,n){var a=z();try{return N(e)(r,t,n)}catch(o){if(j(a),o!==o+0)throw o;V(1,0)}}function Bi(e,r,t,n,a,o){var s=z();try{return N(e)(r,t,n,a,o)}catch(u){if(j(s),u!==u+0)throw u;V(1,0)}}function kr(){if(re>0){ve=kr;return}if($){ze(c),Lr();return}if(dn(),re>0){ve=kr;return}function e(){c.calledRun=!0,!Pe&&(Lr(),ze(c),c.onRuntimeInitialized?.(),vn())}c.setStatus?(c.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>c.setStatus(""),1),e()},1)):e()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return kr(),Tr=an,Tr}})(),qi=tn,Hi=globalThis.self?.name?.startsWith("em-pthread");Hi&&tn();export{qi as default}; -//# sourceMappingURL=libraw.js.map diff --git a/dist/libraw.js.map b/dist/libraw.js.map deleted file mode 100644 index 0b301fc..0000000 --- a/dist/libraw.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../libraw.js"], - "sourcesContent": ["var Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nasync function(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!=\"undefined\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\"&&process.type!=\"renderer\";var ENVIRONMENT_IS_PTHREAD=ENVIRONMENT_IS_WORKER&&self.name?.startsWith(\"em-pthread\");var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];var wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}if(ENVIRONMENT_IS_PTHREAD){var wasmModuleReceived;var initializedJS=false;function threadPrintErr(...args){var text=args.join(\" \");console.error(text)}if(!Module[\"printErr\"])err=threadPrintErr;function threadAlert(...args){var text=args.join(\" \");postMessage({cmd:\"alert\",text,threadId:_pthread_self()})}self.alert=threadAlert;self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{var msgData=e[\"data\"];var cmd=msgData.cmd;if(cmd===\"load\"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{postMessage({cmd:\"loaded\"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};for(const handler of msgData.handlers){if(!Module[handler]||Module[handler].proxy){Module[handler]=(...args)=>{postMessage({cmd:\"callHandler\",handler,args})};if(handler==\"print\")out=Module[handler];if(handler==\"printErr\")err=Module[handler]}}wasmMemory=msgData.wasmMemory;updateMemoryViews();wasmModuleReceived(msgData.wasmModule)}else if(cmd===\"run\"){establishStackSpace(msgData.pthread_ptr);__emscripten_thread_init(msgData.pthread_ptr,0,0,1,0,0);PThread.receiveObjectTransfer(msgData);PThread.threadInitTLS();__emscripten_thread_mailbox_await(msgData.pthread_ptr);if(!initializedJS){__embind_initialize_bindings();initializedJS=true}try{invokeEntryPoint(msgData.start_routine,msgData.arg)}catch(ex){if(ex!=\"unwind\"){throw ex}}}else if(msgData.target===\"setimmediate\"){}else if(cmd===\"checkMailbox\"){if(initializedJS){checkMailbox()}}else if(cmd){err(`worker: received unknown command ${cmd}`);err(msgData)}}catch(ex){__emscripten_thread_crashed();throw ex}}self.onmessage=handleMessage}function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b);Module[\"HEAP64\"]=HEAP64=new BigInt64Array(b);Module[\"HEAPU64\"]=HEAPU64=new BigUint64Array(b)}if(!ENVIRONMENT_IS_PTHREAD){if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||268435456;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true})}updateMemoryViews()}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return startWorker(Module);if(!Module[\"noFSInit\"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"libraw.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"libraw.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){assignWasmImports();return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;registerTLSInit(wasmExports[\"Ea\"]);wasmTable=wasmExports[\"Da\"];addOnInit(wasmExports[\"xa\"]);wasmModule=module;removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"],result[\"module\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(ENVIRONMENT_IS_PTHREAD){return new Promise(resolve=>{wasmModuleReceived=module=>{var instance=new WebAssembly.Instance(module,getWasmImports());resolve(receiveInstance(instance,module))}})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={cmd:\"run\",start_routine:threadParams.startRoutine,arg:threadParams.arg,pthread_ptr:threadParams.pthread_ptr};worker.postMessage(msg,threadParams.transferList);return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);var proxyToMainThread=(funcIndex,emAsmAddr,sync,...callArgs)=>{var serializedNumCallArgs=callArgs.length*2;var sp=stackSave();var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,0,returnCode);_exit(returnCode)}var exitJS=(status,implicit)=>{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw\"unwind\"}_proc_exit(status)};var _exit=exitJS;var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(!ENVIRONMENT_IS_PTHREAD){PThread.initMainThread()}},initMainThread(){addOnPreRun(()=>{addRunDependency(\"loading-workers\");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency(\"loading-workers\"))})},terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads={}},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e[\"data\"];var cmd=d.cmd;if(d.targetThread&&d.targetThread!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d.transferList)}else{err(`Internal error! Worker sent a message \"${cmd}\" to target pthread ${d.targetThread}, but that thread no longer exists!`)}return}if(cmd===\"checkMailbox\"){checkMailbox()}else if(cmd===\"spawnThread\"){spawnThread(d)}else if(cmd===\"cleanupThread\"){cleanupThread(d.thread)}else if(cmd===\"loaded\"){worker.loaded=true;onFinishedLoading(worker)}else if(cmd===\"alert\"){alert(`Thread ${d.threadId}: ${d.text}`)}else if(d.target===\"setimmediate\"){worker.postMessage(d)}else if(cmd===\"callHandler\"){Module[d.handler](...d.args)}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message=\"worker sent an error!\";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};var handlers=[];var knownHandlers=[\"onExit\",\"onAbort\",\"print\",\"printErr\"];for(var handler of knownHandlers){if(Module.propertyIsEnumerable(handler)){handlers.push(handler)}}worker.postMessage({cmd:\"load\",handlers,wasmMemory,wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){onMaybeReady()},allocateUnusedWorker(){var worker;worker=new Worker(new URL(\"libraw.js\",import.meta.url),{type:\"module\",name:\"em-pthread\"});PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=pthread_ptr=>{updateMemoryViews();var stackHigh=GROWABLE_HEAP_U32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_U32()[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{runtimeKeepaliveCounter=0;noExitRuntime=0;var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){EXITSTATUS=result}else{__emscripten_thread_exit(result)}}finish(result)};var noExitRuntime=Module[\"noExitRuntime\"]||true;var registerTLSInit=tlsInitFunc=>PThread.tlsInitFunctions.push(tlsInitFunc);var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof ArrayBuffer?heapOrArray.subarray(idx,endPtr):heapOrArray.slice(idx,endPtr))}var str=\"\";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\";var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"]);var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(ptr);return ___cxa_get_exception_ptr(ptr)};var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var syscallGetVarargI=()=>{var ret=GROWABLE_HEAP_I32()[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>path&&path.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>view=>view.set(crypto.getRandomValues(new Uint8Array(view.byteLength)));var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of[\"mode\",\"atime\",\"mtime\",\"ctime\"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[\".\",\"..\",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url).then(processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{name=\"ErrnoError\";constructor(errno){this.errno=errno}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+\"/\"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name===\".\"||name===\"..\"){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},\"/proc/self/fd\")},createStandardStreams(input,output,error){if(input){FS.createDevice(\"/dev\",\"stdin\",input)}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(output){FS.createDevice(\"/dev\",\"stdout\",null,output)}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(error){FS.createDevice(\"/dev\",\"stderr\",null,error)}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module[\"stdin\"];output??=Module[\"stdout\"];error??=Module[\"stderr\"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+\"/\"+path},writeStat(buf,stat){GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+8>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+12>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+16>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);GROWABLE_HEAP_I32()[buf+32>>2]=4096;GROWABLE_HEAP_I32()[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));GROWABLE_HEAP_U32()[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));GROWABLE_HEAP_U32()[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));GROWABLE_HEAP_U32()[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){GROWABLE_HEAP_I32()[buf+4>>2]=stats.bsize;GROWABLE_HEAP_I32()[buf+40>>2]=stats.bsize;GROWABLE_HEAP_I32()[buf+8>>2]=stats.blocks;GROWABLE_HEAP_I32()[buf+12>>2]=stats.bfree;GROWABLE_HEAP_I32()[buf+16>>2]=stats.bavail;GROWABLE_HEAP_I32()[buf+20>>2]=stats.files;GROWABLE_HEAP_I32()[buf+24>>2]=stats.ffree;GROWABLE_HEAP_I32()[buf+28>>2]=stats.fsid;GROWABLE_HEAP_I32()[buf+44>>2]=stats.flags;GROWABLE_HEAP_I32()[buf+36>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,0,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();GROWABLE_HEAP_I32()[argp>>2]=termios.c_iflag||0;GROWABLE_HEAP_I32()[argp+4>>2]=termios.c_oflag||0;GROWABLE_HEAP_I32()[argp+8>>2]=termios.c_cflag||0;GROWABLE_HEAP_I32()[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){GROWABLE_HEAP_I8()[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=GROWABLE_HEAP_I32()[argp>>2];var c_oflag=GROWABLE_HEAP_I32()[argp+4>>2];var c_cflag=GROWABLE_HEAP_I32()[argp+8>>2];var c_lflag=GROWABLE_HEAP_I32()[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(GROWABLE_HEAP_I8()[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();GROWABLE_HEAP_I16()[argp>>1]=winsize[0];GROWABLE_HEAP_I16()[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,0,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_rmdir(path){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,0,1,path);try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,0,1,dirfd,path,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort(\"Invalid flags passed to unlinkat\")}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var __abort_js=()=>abort(\"\");var embindRepr=v=>{if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret=\"\";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf(\"u\")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!=\"bigint\"&&typeof value!=\"number\"){throw new TypeError(`Cannot convert \"${embindRepr(value)}\" to ${this.name}`)}if(typeof value==\"number\"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}};var delayFunction;var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,\"name\",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle[\"delete\"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistent public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([\", \"]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf(\"(\");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module[\"count_emval_handles\"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:\"emscripten::val\",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(base);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value==\"string\")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync===\"function\"){var wait=Atomics.waitAsync(GROWABLE_HEAP_I32(),pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(GROWABLE_HEAP_I32(),waitingAsync>>2,1)}};var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(__emscripten_check_mailbox)}};var __emscripten_notify_mailbox_postmessage=(targetThread,currThreadId)=>{if(targetThread==currThreadId){setTimeout(checkMailbox)}else if(ENVIRONMENT_IS_PTHREAD){postMessage({targetThread,cmd:\"checkMailbox\"})}else{var worker=PThread.pthreads[targetThread];if(!worker){return}worker.postMessage({cmd:\"checkMailbox\"})}};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(funcIndex,emAsmAddr,callingThread,numCallArgs,args)=>{numCallArgs/=2;proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{noExitRuntime=false;runtimeKeepaliveCounter=0};var __emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({cmd:\"cleanupThread\",thread})};var __emscripten_thread_set_strongref=thread=>{};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType[\"toWireType\"](destructors,handle);if(destructors.length){GROWABLE_HEAP_U32()[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");return emval_returnValue(returnType,destructorsRef,handle)};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var emval_get_global=()=>{if(typeof globalThis==\"object\"){return globalThis}return function(){return Function}()(\"return this\")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],\"parameter \"+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\\n`;var offset=0;var argsList=[];if(kind===0){argsList.push(\"obj\")}var params=[\"retType\"];var args=[retType];for(var i=0;it.name).join(\", \")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_new_array=()=>Emval.toHandle([]);var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](arg);return Emval.toHandle(v)};var __emval_typeof=handle=>{handle=Emval.toValue(handle);return Emval.toHandle(typeof handle)};function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);GROWABLE_HEAP_I32()[tmPtr>>2]=date.getUTCSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getUTCMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getUTCHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getUTCDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getUTCMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getUTCFullYear()-1900;GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);GROWABLE_HEAP_I32()[tmPtr>>2]=date.getSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getFullYear()-1900;GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday;GROWABLE_HEAP_I32()[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;GROWABLE_HEAP_I32()[tmPtr+32>>2]=dst}var __mktime_js=function(tmPtr){var ret=(()=>{var date=new Date(GROWABLE_HEAP_I32()[tmPtr+20>>2]+1900,GROWABLE_HEAP_I32()[tmPtr+16>>2],GROWABLE_HEAP_I32()[tmPtr+12>>2],GROWABLE_HEAP_I32()[tmPtr+8>>2],GROWABLE_HEAP_I32()[tmPtr+4>>2],GROWABLE_HEAP_I32()[tmPtr>>2],0);var dst=GROWABLE_HEAP_I32()[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){GROWABLE_HEAP_I32()[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday;GROWABLE_HEAP_I32()[tmPtr>>2]=date.getSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getYear();var timeMs=date.getTime();if(isNaN(timeMs)){return-1}return timeMs/1e3})();return BigInt(ret)};var timers={};var _emscripten_get_now=()=>performance.timeOrigin+performance.now();function __setitimer_js(which,timeout_ms){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,0,1,which,timeout_ms);if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?\"-\":\"+\";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,\"0\");var minutes=String(absOffset%60).padStart(2,\"0\");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetDate.now();var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw\"unwind\"};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,0,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,0,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(12,0,1,fd,offset,whence,newOffset);offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}PThread.init();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=\"\";embind_init_charCodes();BindingError=Module[\"BindingError\"]=class BindingError extends Error{constructor(message){super(message);this.name=\"BindingError\"}};InternalError=Module[\"InternalError\"]=class InternalError extends Error{constructor(message){super(message);this.name=\"InternalError\"}};init_ClassHandle();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var proxiedFunctionTable=[_proc_exit,exitOnMainThread,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,___syscall_rmdir,___syscall_unlinkat,__setitimer_js,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var wasmImports;function assignWasmImports(){wasmImports={f:___assert_fail,R:___cxa_begin_catch,c:___cxa_find_matching_catch_2,m:___cxa_find_matching_catch_3,e:___cxa_throw,l:___resumeException,A:___syscall_fcntl64,ia:___syscall_ioctl,ja:___syscall_openat,V:___syscall_rmdir,W:___syscall_unlinkat,S:__abort_js,D:__embind_register_bigint,qa:__embind_register_bool,E:__embind_register_class,B:__embind_register_class_constructor,s:__embind_register_class_function,oa:__embind_register_emval,C:__embind_register_float,r:__embind_register_integer,p:__embind_register_memory_view,wa:__embind_register_optional,pa:__embind_register_std_string,w:__embind_register_std_wstring,ra:__embind_register_void,da:__emscripten_init_main_thread_js,U:__emscripten_notify_mailbox_postmessage,Y:__emscripten_receive_on_main_thread_js,O:__emscripten_runtime_keepalive_clear,Q:__emscripten_thread_cleanup,ca:__emscripten_thread_mailbox_await,la:__emscripten_thread_set_strongref,J:__emval_as,sa:__emval_call,F:__emval_call_method,M:__emval_decref,H:__emval_get_global,y:__emval_get_method_caller,K:__emval_get_property,G:__emval_incref,ta:__emval_new_array,n:__emval_new_cstring,x:__emval_new_object,va:__emval_run_destructors,ua:__emval_set_property,q:__emval_take_value,I:__emval_typeof,Z:__gmtime_js,_:__localtime_js,$:__mktime_js,P:__setitimer_js,aa:__tzset_js,X:_emscripten_check_blocking_allowed,ma:_emscripten_date_now,ka:_emscripten_exit_with_live_runtime,t:_emscripten_get_now,T:_emscripten_resize_heap,ea:_environ_get,fa:_environ_sizes_get,na:_exit,z:_fd_close,ha:_fd_read,ba:_fd_seek,ga:_fd_write,k:invoke_diii,L:invoke_diiiii,j:invoke_i,i:invoke_ii,h:invoke_iii,v:invoke_iiii,o:invoke_v,d:invoke_vi,u:invoke_vii,g:invoke_viii,b:invoke_viiii,a:wasmMemory,N:_proc_exit}}var wasmExports=await createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"xa\"])();var ___getTypeName=a0=>(___getTypeName=wasmExports[\"ya\"])(a0);var __embind_initialize_bindings=()=>(__embind_initialize_bindings=wasmExports[\"za\"])();var _pthread_self=()=>(_pthread_self=wasmExports[\"Aa\"])();var _malloc=a0=>(_malloc=wasmExports[\"Ba\"])(a0);var _free=a0=>(_free=wasmExports[\"Ca\"])(a0);var __emscripten_tls_init=()=>(__emscripten_tls_init=wasmExports[\"Ea\"])();var __emscripten_thread_init=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=wasmExports[\"Fa\"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=()=>(__emscripten_thread_crashed=wasmExports[\"Ga\"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3,a4)=>(__emscripten_run_on_main_thread_js=wasmExports[\"Ha\"])(a0,a1,a2,a3,a4);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports[\"Ia\"])(a0);var __emscripten_thread_exit=a0=>(__emscripten_thread_exit=wasmExports[\"Ja\"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports[\"Ka\"])(a0,a1);var __emscripten_check_mailbox=()=>(__emscripten_check_mailbox=wasmExports[\"La\"])();var _setThrew=(a0,a1)=>(_setThrew=wasmExports[\"Ma\"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports[\"Na\"])(a0);var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports[\"Oa\"])(a0,a1);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"Pa\"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports[\"Qa\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"Ra\"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports[\"Sa\"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports[\"Ta\"])(a0,a1,a2);var ___cxa_get_exception_ptr=a0=>(___cxa_get_exception_ptr=wasmExports[\"Ua\"])(a0);function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=>{setTimeout(()=>Module[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\nvar isPthread = globalThis.self?.name?.startsWith('em-pthread');\n// When running as a pthread, construct a new instance on startup\nisPthread && Module();\n"], - "mappings": "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", - "names": ["Module", "_scriptName", "moduleArg", "moduleRtn", "readyPromiseResolve", "readyPromiseReject", "readyPromise", "resolve", "reject", "ENVIRONMENT_IS_WEB", "ENVIRONMENT_IS_WORKER", "ENVIRONMENT_IS_NODE", "ENVIRONMENT_IS_PTHREAD", "moduleOverrides", "arguments_", "thisProgram", "quit_", "status", "toThrow", "scriptDirectory", "locateFile", "path", "readAsync", "readBinary", "url", "xhr", "response", "out", "err", "wasmBinary", "wasmMemory", "wasmModule", "ABORT", "EXITSTATUS", "HEAP8", "HEAPU8", "HEAP16", "HEAPU16", "HEAP32", "HEAPU32", "HEAPF32", "HEAP64", "HEAPU64", "HEAPF64", "runtimeInitialized", "dataURIPrefix", "isDataURI", "filename", "GROWABLE_HEAP_I8", "updateMemoryViews", "GROWABLE_HEAP_U8", "GROWABLE_HEAP_I16", "GROWABLE_HEAP_U16", "GROWABLE_HEAP_I32", "GROWABLE_HEAP_U32", "GROWABLE_HEAP_F32", "GROWABLE_HEAP_F64", "threadPrintErr", "args", "text", "threadAlert", "_pthread_self", "handleMessage", "e", "msgData", "cmd", "messageQueue", "instance", "msg", "handler", "wasmModuleReceived", "establishStackSpace", "__emscripten_thread_init", "PThread", "__emscripten_thread_mailbox_await", "initializedJS", "__embind_initialize_bindings", "invokeEntryPoint", "ex", "checkMailbox", "__emscripten_thread_crashed", "b", "INITIAL_MEMORY", "__ATPRERUN__", "__ATINIT__", "__ATPOSTRUN__", "preRun", "addOnPreRun", "callRuntimeCallbacks", "initRuntime", "FS", "TTY", "postRun", "addOnPostRun", "cb", "addOnInit", "runDependencies", "dependenciesFulfilled", "getUniqueRunDependency", "id", "addRunDependency", "removeRunDependency", "callback", "abort", "what", "wasmBinaryFile", "findWasmBinary", "f", "getBinarySync", "file", "getWasmBinary", "binaryFile", "instantiateArrayBuffer", "imports", "binary", "reason", "instantiateAsync", "instantiationResult", "getWasmImports", "assignWasmImports", "wasmImports", "createWasm", "receiveInstance", "module", "wasmExports", "registerTLSInit", "wasmTable", "receiveInstantiationResult", "result", "info", "exports", "ExitStatus", "terminateWorker", "worker", "cleanupThread", "pthread_ptr", "spawnThread", "threadParams", "runtimeKeepaliveCounter", "keepRuntimeAlive", "noExitRuntime", "stackSave", "_emscripten_stack_get_current", "stackRestore", "val", "__emscripten_stack_restore", "stackAlloc", "sz", "__emscripten_stack_alloc", "INT53_MAX", "INT53_MIN", "bigintToI53Checked", "num", "proxyToMainThread", "funcIndex", "emAsmAddr", "sync", "callArgs", "serializedNumCallArgs", "sp", "i", "arg", "rtn", "__emscripten_run_on_main_thread_js", "_proc_exit", "code", "handleException", "exitOnMainThread", "returnCode", "_exit", "exitJS", "implicit", "__emscripten_thread_free_data", "data", "onFinishedLoading", "d", "targetWorker", "message", "handlers", "knownHandlers", "onMaybeReady", "callbacks", "stackHigh", "stackSize", "stackLow", "_emscripten_stack_set_limits", "wasmTableMirror", "getWasmTableEntry", "funcPtr", "func", "ptr", "finish", "__emscripten_thread_exit", "tlsInitFunc", "UTF8Decoder", "UTF8ArrayToString", "heapOrArray", "idx", "maxBytesToRead", "endIdx", "endPtr", "str", "u0", "u1", "u2", "ch", "UTF8ToString", "___assert_fail", "condition", "line", "exceptionCaught", "uncaughtExceptionCount", "___cxa_begin_catch", "ExceptionInfo", "___cxa_increment_exception_refcount", "___cxa_get_exception_ptr", "exceptionLast", "excPtr", "type", "destructor", "caught", "rethrown", "adjustedPtr", "___resumeException", "setTempRet0", "__emscripten_tempret_set", "findMatchingCatch", "thrown", "thrownType", "caughtType", "adjusted_ptr_addr", "___cxa_can_catch", "___cxa_find_matching_catch_2", "___cxa_find_matching_catch_3", "arg0", "___cxa_throw", "syscallGetVarargI", "ret", "SYSCALLS", "syscallGetVarargP", "PATH", "splitPathRe", "parts", "allowAboveRoot", "up", "last", "isAbsolute", "trailingSlash", "p", "root", "dir", "paths", "l", "initRandomFill", "view", "randomFill", "PATH_FS", "resolvedPath", "resolvedAbsolute", "from", "to", "trim", "arr", "start", "end", "fromParts", "toParts", "length", "samePartsLength", "outputParts", "FS_stdin_getChar_buffer", "lengthBytesUTF8", "len", "c", "stringToUTF8Array", "heap", "outIdx", "maxBytesToWrite", "startIdx", "intArrayFromString", "stringy", "dontAddNull", "u8array", "numBytesWritten", "FS_stdin_getChar", "dev", "ops", "stream", "tty", "buffer", "offset", "pos", "bytesRead", "optional_actions", "alignMemory", "size", "alignment", "mmapAlloc", "MEMFS", "mount", "parent", "name", "mode", "node", "newCapacity", "prevCapacity", "CAPACITY_DOUBLING_MAX", "oldContents", "newSize", "attr", "key", "old_node", "new_dir", "new_name", "new_node", "newname", "oldpath", "position", "contents", "canOwn", "whence", "prot", "flags", "allocated", "mmapFlags", "asyncLoad", "arrayBuffer", "FS_createDataFile", "fileData", "canRead", "canWrite", "preloadPlugins", "FS_handledByPreloadPlugin", "byteArray", "fullname", "onerror", "handled", "plugin", "FS_createPreloadedFile", "onload", "dontCreateFile", "preFinish", "dep", "processData", "FS_modeStringToFlags", "flagModes", "FS_getMode", "errno", "rdev", "opts", "linkloop", "nlinks", "current", "current_path", "islast", "link", "parentid", "hash", "errCode", "nodeName", "flag", "perms", "isdir", "op", "fd", "origStream", "device", "ma", "mi", "mounts", "check", "m", "populate", "completed", "doCallback", "done", "mountpoint", "pseudo", "lookup", "mountRoot", "next", "dirs", "newpath", "old_path", "new_path", "old_dirname", "new_dirname", "old_name", "old_dir", "relative", "readdir", "dontFollow", "getattr", "setattr", "uid", "gid", "atime", "mtime", "isDirPath", "created", "seeking", "bytesWritten", "stat", "buf", "actualNumBytes", "randomBuffer", "randomLeft", "randomByte", "proc_self", "k", "v", "input", "output", "error", "stdin", "stdout", "stderr", "dontResolveLastLink", "part", "properties", "obj", "LazyUint8Array", "chunkOffset", "chunkNum", "getter", "datalength", "header", "hasByteServing", "usesGzip", "chunkSize", "doXHR", "lazyArray", "stream_ops", "keys", "fn", "writeChunks", "dirfd", "allowEmpty", "dirstream", "ctime", "stats", "addr", "___syscall_fcntl64", "varargs", "newStream", "___syscall_ioctl", "termios", "argp", "c_iflag", "c_oflag", "c_cflag", "c_lflag", "c_cc", "winsize", "___syscall_openat", "___syscall_rmdir", "___syscall_unlinkat", "__abort_js", "embindRepr", "t", "embind_init_charCodes", "codes", "embind_charCodes", "readLatin1String", "awaitingDependencies", "registeredTypes", "typeDependencies", "BindingError", "throwBindingError", "InternalError", "throwInternalError", "whenDependentTypesAreResolved", "myTypes", "dependentTypes", "getTypeConverters", "onComplete", "typeConverters", "myTypeConverters", "registerType", "unregisteredTypes", "registered", "dt", "sharedRegisterType", "rawType", "registeredInstance", "options", "integerReadValueFromPointer", "width", "signed", "pointer", "__embind_register_bigint", "primitiveType", "minRange", "maxRange", "isUnsignedType", "value", "destructors", "GenericWireTypeSize", "__embind_register_bool", "trueValue", "falseValue", "wt", "shallowCopyInternalPointer", "o", "throwInstanceAlreadyDeleted", "getInstanceTypeName", "handle", "finalizationRegistry", "detachFinalizer", "runDestructor", "$$", "releaseClassHandle", "toDelete", "downcastPointer", "ptrClass", "desiredClass", "rv", "registeredPointers", "registeredInstances", "getBasestPointer", "class_", "getInheritedInstance", "makeClassHandle", "prototype", "record", "hasSmartPtrType", "hasSmartPtr", "attachFinalizer", "RegisteredPointer_fromWireType", "rawPointer", "makeDefaultHandle", "actualType", "registeredPointerRecord", "toType", "dp", "deletionQueue", "flushPendingDeletes", "delayFunction", "init_ClassHandle", "ClassHandle", "other", "leftClass", "left", "rightClass", "right", "clone", "createNamedFunction", "body", "ensureOverloadTable", "proto", "methodName", "humanName", "prevFunc", "exposePublicSymbol", "numArguments", "char_0", "char_9", "makeLegalFunctionName", "RegisteredClass", "constructor", "instancePrototype", "rawDestructor", "baseClass", "getActualType", "upcast", "downcast", "upcastPointer", "constNoSmartPtrRawPointerToWireType", "handleClass", "genericPointerToWireType", "clonedHandle", "Emval", "nonConstNoSmartPtrRawPointerToWireType", "readPointer", "init_RegisteredPointer", "RegisteredPointer", "registeredClass", "isReference", "isConst", "isSmartPointer", "pointeeType", "sharingPolicy", "rawGetPointee", "rawConstructor", "rawShare", "replacePublicSymbol", "embind__requireFunction", "signature", "rawFunction", "makeDynCaller", "fp", "extendError", "baseErrorType", "errorName", "errorClass", "stack", "UnboundTypeError", "getTypeName", "___getTypeName", "_free", "throwUnboundTypeError", "types", "unboundTypes", "seen", "visit", "__embind_register_class", "rawPointerType", "rawConstPointerType", "baseClassRawType", "getActualTypeSignature", "upcastSignature", "downcastSignature", "destructorSignature", "legalFunctionName", "base", "basePrototype", "referenceConverter", "pointerConverter", "constPointerConverter", "heap32VectorToArray", "count", "firstElement", "array", "runDestructors", "del", "usesDestructorStack", "argTypes", "newFunc", "argumentList", "dummy", "r", "createJsInvoker", "isClassMethodFunc", "returns", "isAsync", "needsDestructorStack", "argCount", "argsList", "argsListWired", "invokerFnBody", "dtorStack", "args1", "paramName", "craftInvokerFunction", "classType", "cppInvokerFunc", "cppTargetFunc", "closureArgs", "invokerFn", "__embind_register_class_constructor", "rawClassType", "rawArgTypesAddr", "invokerSignature", "invoker", "rawArgTypes", "getFunctionName", "argsIndex", "__embind_register_class_function", "rawInvoker", "context", "isPureVirtual", "isNonnullReturn", "unboundTypesHandler", "method", "memberFunction", "emval_freelist", "emval_handles", "__emval_decref", "count_emval_handles", "init_emval", "EmValType", "__embind_register_emval", "floatReadValueFromPointer", "__embind_register_float", "__embind_register_integer", "fromWireType", "bitshift", "checkAssertions", "toTypeName", "toWireType", "__embind_register_memory_view", "dataTypeIndex", "typeMapping", "TA", "decodeMemoryView", "EmValOptionalType", "__embind_register_optional", "rawOptionalType", "stringToUTF8", "outPtr", "__embind_register_std_string", "stdStringIsUTF8", "payload", "decodeStartPtr", "currentBytePtr", "maxRead", "stringSegment", "a", "valueIsOfTypeString", "_malloc", "charCode", "UTF16Decoder", "UTF16ToString", "maxIdx", "codeUnit", "stringToUTF16", "startPtr", "numCharsToWrite", "lengthBytesUTF16", "UTF32ToString", "utf32", "stringToUTF32", "trailSurrogate", "lengthBytesUTF32", "__embind_register_std_wstring", "charSize", "decodeString", "encodeString", "readCharAt", "lengthBytesUTF", "maxReadBytes", "__embind_register_void", "__emscripten_init_main_thread_js", "tb", "maybeExit", "callUserCallback", "wait", "waitingAsync", "__emscripten_check_mailbox", "__emscripten_notify_mailbox_postmessage", "targetThread", "currThreadId", "proxiedJSCallArgs", "__emscripten_receive_on_main_thread_js", "callingThread", "numCallArgs", "proxiedFunctionTable", "__emscripten_runtime_keepalive_clear", "__emscripten_thread_cleanup", "thread", "__emscripten_thread_set_strongref", "requireRegisteredType", "impl", "emval_returnValue", "returnType", "destructorsRef", "__emval_as", "emval_methodCallers", "__emval_call", "caller", "emval_symbols", "getStringOrSymbol", "address", "symbol", "__emval_call_method", "objHandle", "emval_get_global", "__emval_get_global", "emval_addMethodCaller", "emval_lookupTypes", "reflectConstruct", "__emval_get_method_caller", "kind", "retType", "functionBody", "params", "invokerFunction", "functionName", "__emval_get_property", "__emval_incref", "__emval_new_array", "__emval_new_cstring", "__emval_new_object", "__emval_run_destructors", "__emval_set_property", "__emval_take_value", "__emval_typeof", "__gmtime_js", "time", "tmPtr", "date", "yday", "isLeapYear", "year", "MONTH_DAYS_LEAP_CUMULATIVE", "MONTH_DAYS_REGULAR_CUMULATIVE", "ydayFromDate", "leap", "monthDaysCumulative", "__localtime_js", "summerOffset", "winterOffset", "dst", "__mktime_js", "guessedOffset", "dstOffset", "nonDstOffset", "trueOffset", "timeMs", "timers", "_emscripten_get_now", "__setitimer_js", "which", "timeout_ms", "__emscripten_timeout", "__tzset_js", "timezone", "daylight", "std_name", "dst_name", "currentYear", "winter", "summer", "stdTimezoneOffset", "extractZone", "timezoneOffset", "sign", "absOffset", "hours", "minutes", "winterName", "summerName", "_emscripten_date_now", "warnOnce", "_emscripten_check_blocking_allowed", "runtimeKeepalivePush", "_emscripten_exit_with_live_runtime", "getHeapMax", "growMemory", "pages", "_emscripten_resize_heap", "requestedSize", "oldSize", "maxHeapSize", "cutDown", "overGrownHeapSize", "replacement", "ENV", "getExecutableName", "getEnvStrings", "lang", "env", "x", "strings", "stringToAscii", "_environ_get", "__environ", "environ_buf", "bufSize", "string", "_environ_sizes_get", "penviron_count", "penviron_buf_size", "_fd_close", "doReadv", "iov", "iovcnt", "curr", "_fd_read", "pnum", "_fd_seek", "newOffset", "doWritev", "_fd_write", "invoke_diii", "invoke_diiiii", "invoke_i", "invoke_ii", "invoke_iii", "invoke_iiii", "invoke_v", "invoke_vi", "invoke_vii", "invoke_viii", "invoke_viiii", "___wasm_call_ctors", "a0", "__emscripten_tls_init", "a1", "a2", "a3", "a4", "a5", "_setThrew", "index", "run", "doRun", "libraw_default", "isPthread"] -} diff --git a/dist/libraw.wasm b/dist/libraw.wasm deleted file mode 100755 index b7433f2..0000000 Binary files a/dist/libraw.wasm and /dev/null differ diff --git a/dist/worker.js b/dist/worker.js deleted file mode 100644 index d9c447b..0000000 --- a/dist/worker.js +++ /dev/null @@ -1,19 +0,0 @@ -var nn=(()=>{var pr=import.meta.url;return async function(Yr={}){var $r,c=Yr,Z,ir,ln=new Promise((r,e)=>{Z=r,ir=e}),Ae=typeof window=="object",or=typeof WorkerGlobalScope<"u",qi=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer",$=or&&self.name?.startsWith("em-pthread"),Pe=Object.assign({},c),fn=[],Fe="./this.program",Ce=(r,e)=>{throw e},Y="";function cn(r){return c.locateFile?c.locateFile(r,Y):Y+r}var qr,Ar;(Ae||or)&&(or?Y=self.location.href:typeof document<"u"&&document.currentScript&&(Y=document.currentScript.src),pr&&(Y=pr),Y.startsWith("blob:")?Y="":Y=Y.substr(0,Y.replace(/[?#].*/,"").lastIndexOf("/")+1),or&&(Ar=r=>{var e=new XMLHttpRequest;return e.open("GET",r,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),qr=async r=>{var e=await fetch(r,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+" : "+e.url)});var Pr=c.print||console.log.bind(console),R=c.printErr||console.error.bind(console);Object.assign(c,Pe),Pe=null,c.arguments&&(fn=c.arguments),c.thisProgram&&(Fe=c.thisProgram);var Fr=c.wasmBinary,M,Se,Cr=!1,sr,q,De,Re,Me,Oe,We,xe,U,Ue,Ie,dn=!1,vn="data:application/octet-stream;base64,",je=r=>r.startsWith(vn);function O(){return M.buffer!=q.buffer&&H(),q}function I(){return M.buffer!=q.buffer&&H(),De}function er(){return M.buffer!=q.buffer&&H(),Re}function Xr(){return M.buffer!=q.buffer&&H(),Me}function h(){return M.buffer!=q.buffer&&H(),Oe}function w(){return M.buffer!=q.buffer&&H(),We}function hn(){return M.buffer!=q.buffer&&H(),xe}function Kr(){return M.buffer!=q.buffer&&H(),Ie}if($){let r=function(...n){var a=n.join(" ");console.error(a)},e=function(...n){var a=n.join(" ");postMessage({cmd:"alert",text:a,threadId:Gr()})},t=function(n){try{var a=n.data,o=a.cmd;if(o==="load"){let s=[];self.onmessage=u=>s.push(u),self.startWorker=u=>{postMessage({cmd:"loaded"});for(let l of s)t(l);self.onmessage=t};for(let u of a.handlers)(!c[u]||c[u].proxy)&&(c[u]=(...l)=>{postMessage({cmd:"callHandler",handler:u,args:l})},u=="print"&&(Pr=c[u]),u=="printErr"&&(R=c[u]));M=a.wasmMemory,H(),Ne(a.wasmModule)}else if(o==="run"){Dn(a.pthread_ptr),ke(a.pthread_ptr,0,0,1,0,0),y.receiveObjectTransfer(a),y.threadInitTLS(),_e(a.pthread_ptr),Qr||(Lt(),Qr=!0);try{Rn(a.start_routine,a.arg)}catch(s){if(s!="unwind")throw s}}else a.target==="setimmediate"||(o==="checkMailbox"?Qr&&Hr():o&&(R(`worker: received unknown command ${o}`),R(a)))}catch(s){throw Ht(),s}};var Ne,Qr=!1;c.printErr||(R=r),self.alert=e,self.onunhandledrejection=n=>{throw n.reason||n},self.onmessage=t}function H(){var r=M.buffer;c.HEAP8=q=new Int8Array(r),c.HEAP16=Re=new Int16Array(r),c.HEAPU8=De=new Uint8Array(r),c.HEAPU16=Me=new Uint16Array(r),c.HEAP32=Oe=new Int32Array(r),c.HEAPU32=We=new Uint32Array(r),c.HEAPF32=xe=new Float32Array(r),c.HEAPF64=Ie=new Float64Array(r),c.HEAP64=U=new BigInt64Array(r),c.HEAPU64=Ue=new BigUint64Array(r)}if(!$){if(c.wasmMemory)M=c.wasmMemory;else{var pn=c.INITIAL_MEMORY||268435456;M=new WebAssembly.Memory({initial:pn/65536,maximum:32768,shared:!0})}H()}var Be=[],Le=[],He=[];function mn(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Ve(c.preRun.shift());ae(Be)}function ze(){if(dn=!0,$)return startWorker(c);!c.noFSInit&&!i.initialized&&i.init(),i.ignorePermissions=!1,rr.init(),ae(Le)}function _n(){if(!$){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)wn(c.postRun.shift());ae(He)}}function Ve(r){Be.unshift(r)}function gn(r){Le.unshift(r)}function wn(r){He.unshift(r)}var tr=0,mr=null;function Xi(r){return r}function Jr(r){tr++,c.monitorRunDependencies?.(tr)}function Sr(r){if(tr--,c.monitorRunDependencies?.(tr),tr==0&&mr){var e=mr;mr=null,e()}}function _r(r){c.onAbort?.(r),r="Aborted("+r+")",R(r),Cr=!0,r+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(r);throw ir(e),e}var Zr;function yn(){if(c.locateFile){var r="libraw.wasm";return je(r)?r:cn(r)}return new URL("libraw.wasm",import.meta.url).href}function En(r){if(r==Zr&&Fr)return new Uint8Array(Fr);if(Ar)return Ar(r);throw"both async and sync fetching of the wasm failed"}async function bn(r){if(!Fr)try{var e=await qr(r);return new Uint8Array(e)}catch{}return En(r)}async function kn(r,e){try{var t=await bn(r),n=await WebAssembly.instantiate(t,e);return n}catch(a){R(`failed to asynchronously prepare wasm: ${a}`),_r(a)}}async function Tn(r,e,t){if(!r&&typeof WebAssembly.instantiateStreaming=="function"&&!je(e))try{var n=fetch(e,{credentials:"same-origin"}),a=await WebAssembly.instantiateStreaming(n,t);return a}catch(o){R(`wasm streaming compile failed: ${o}`),R("falling back to ArrayBuffer instantiation")}return kn(e,t)}function Ge(){return Ri(),{a:Nt}}async function $n(){function r(o,s){return b=o.exports,Mn(b.Ea),Je=b.Da,gn(b.xa),Se=s,Sr("wasm-instantiate"),b}Jr("wasm-instantiate");function e(o){return r(o.instance,o.module)}var t=Ge();if(c.instantiateWasm)try{return c.instantiateWasm(t,r)}catch(o){R(`Module.instantiateWasm callback failed with error: ${o}`),ir(o)}if($)return new Promise(o=>{Ne=s=>{var u=new WebAssembly.Instance(s,Ge());o(r(u,s))}});Zr??=yn();try{var n=await Tn(Fr,Zr,t),a=e(n);return a}catch(o){return ir(o),Promise.reject(o)}}class Ye{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var qe=r=>{r.terminate(),r.onmessage=e=>{}},Xe=r=>{var e=y.pthreads[r];y.returnWorkerToPool(e)},An=r=>{var e=y.getNewWorker();if(!e)return 6;y.runningWorkers.push(e),y.pthreads[r.pthread_ptr]=e,e.pthread_ptr=r.pthread_ptr;var t={cmd:"run",start_routine:r.startRoutine,arg:r.arg,pthread_ptr:r.pthread_ptr};return e.postMessage(t,r.transferList),0},Dr=0,re=()=>ie||Dr>0,z=()=>Jt(),j=r=>Kt(r),Pn=r=>Qt(r),Fn=9007199254740992,Cn=-9007199254740992,ee=r=>rFn?NaN:Number(r),x=(r,e,t,...n)=>{for(var a=n.length*2,o=z(),s=Pn(a*8),u=s>>3,l=0;l{if(r instanceof Ye||r=="unwind")return sr;Ce(1,r)};function Qe(r){if($)return x(1,0,0,r);ne(r)}var Sn=(r,e)=>{if(sr=r,$)throw Qe(r),"unwind";te(r)},ne=Sn,y={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){$||y.initMainThread()},initMainThread(){Ve(()=>{Jr("loading-workers"),y.loadWasmModuleToAllWorkers(()=>Sr("loading-workers"))})},terminateAllThreads:()=>{for(var r of y.runningWorkers)qe(r);for(var r of y.unusedWorkers)qe(r);y.unusedWorkers=[],y.runningWorkers=[],y.pthreads={}},returnWorkerToPool:r=>{var e=r.pthread_ptr;delete y.pthreads[e],y.unusedWorkers.push(r),y.runningWorkers.splice(y.runningWorkers.indexOf(r),1),r.pthread_ptr=0,Vt(e)},receiveObjectTransfer(r){},threadInitTLS(){y.tlsInitFunctions.forEach(r=>r())},loadWasmModuleToWorker:r=>new Promise(e=>{r.onmessage=o=>{var s=o.data,u=s.cmd;if(s.targetThread&&s.targetThread!=Gr()){var l=y.pthreads[s.targetThread];l?l.postMessage(s,s.transferList):R(`Internal error! Worker sent a message "${u}" to target pthread ${s.targetThread}, but that thread no longer exists!`);return}u==="checkMailbox"?Hr():u==="spawnThread"?An(s):u==="cleanupThread"?Xe(s.thread):u==="loaded"?(r.loaded=!0,e(r)):u==="alert"?alert(`Thread ${s.threadId}: ${s.text}`):s.target==="setimmediate"?r.postMessage(s):u==="callHandler"?c[s.handler](...s.args):u&&R(`worker sent an unknown command ${u}`)},r.onerror=o=>{var s="worker sent an error!";throw R(`${s} ${o.filename}:${o.lineno}: ${o.message}`),o};var t=[],n=["onExit","onAbort","print","printErr"];for(var a of n)c.propertyIsEnumerable(a)&&t.push(a);r.postMessage({cmd:"load",handlers:t,wasmMemory:M,wasmModule:Se})}),loadWasmModuleToAllWorkers(r){r()},allocateUnusedWorker(){var r;r=new Worker(new URL("libraw.js",import.meta.url),{type:"module",name:"em-pthread"}),y.unusedWorkers.push(r)},getNewWorker(){return y.unusedWorkers.length==0&&(y.allocateUnusedWorker(),y.loadWasmModuleToWorker(y.unusedWorkers[0])),y.unusedWorkers.pop()}},ae=r=>{for(;r.length>0;)r.shift()(c)},Dn=r=>{H();var e=w()[r+52>>2],t=w()[r+56>>2],n=e-t;Xt(e,n),j(e)},Rr=[],Je,N=r=>{var e=Rr[r];return e||(r>=Rr.length&&(Rr.length=r+1),Rr[r]=e=Je.get(r)),e},Rn=(r,e)=>{Dr=0,ie=0;var t=N(r)(e);function n(a){re()?sr=a:Te(a)}n(t)},ie=c.noExitRuntime||!0,Mn=r=>y.tlsInitFunctions.push(r),Ze=typeof TextDecoder<"u"?new TextDecoder:void 0,ur=(r,e=0,t=NaN)=>{for(var n=e+t,a=e;r[a]&&!(a>=n);)++a;if(a-e>16&&r.buffer&&Ze)return Ze.decode(r.buffer instanceof ArrayBuffer?r.subarray(e,a):r.slice(e,a));for(var o="";e>10,56320|f&1023)}}return o},gr=(r,e)=>r?ur(I(),r,e):"",On=(r,e,t,n)=>_r(`Assertion failed: ${gr(r)}, at: `+[e?gr(e):"unknown filename",t,n?gr(n):"unknown function"]),Wn=[],rt=0,xn=r=>{var e=new oe(r);return e.get_caught()||(e.set_caught(!0),rt--),e.set_rethrown(!1),Wn.push(e),Zt(r),en(r)},lr=0;class oe{constructor(e){this.excPtr=e,this.ptr=e-24}set_type(e){w()[this.ptr+4>>2]=e}get_type(){return w()[this.ptr+4>>2]}set_destructor(e){w()[this.ptr+8>>2]=e}get_destructor(){return w()[this.ptr+8>>2]}set_caught(e){e=e?1:0,O()[this.ptr+12]=e}get_caught(){return O()[this.ptr+12]!=0}set_rethrown(e){e=e?1:0,O()[this.ptr+13]=e}get_rethrown(){return O()[this.ptr+13]!=0}init(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)}set_adjusted_ptr(e){w()[this.ptr+16>>2]=e}get_adjusted_ptr(){return w()[this.ptr+16>>2]}}var Un=r=>{throw lr||(lr=r),lr},Mr=r=>qt(r),et=r=>{var e=lr;if(!e)return Mr(0),0;var t=new oe(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return Mr(0),e;for(var a of r){if(a===0||a===n)break;var o=t.ptr+16;if(rn(a,n,o))return Mr(a),e}return Mr(n),e},In=()=>et([]),jn=r=>et([r]),Nn=(r,e,t)=>{var n=new oe(r);throw n.init(e,t),lr=r,rt++,lr},Or=()=>{var r=h()[+S.varargs>>2];return S.varargs+=4,r},fr=Or,k={isAbs:r=>r.charAt(0)==="/",splitPath:r=>{var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(r).slice(1)},normalizeArray:(r,e)=>{for(var t=0,n=r.length-1;n>=0;n--){var a=r[n];a==="."?r.splice(n,1):a===".."?(r.splice(n,1),t++):t&&(r.splice(n,1),t--)}if(e)for(;t;t--)r.unshift("..");return r},normalize:r=>{var e=k.isAbs(r),t=r.substr(-1)==="/";return r=k.normalizeArray(r.split("/").filter(n=>!!n),!e).join("/"),!r&&!e&&(r="."),r&&t&&(r+="/"),(e?"/":"")+r},dirname:r=>{var e=k.splitPath(r),t=e[0],n=e[1];return!t&&!n?".":(n&&(n=n.substr(0,n.length-1)),t+n)},basename:r=>r&&r.match(/([^\/]+|\/)\/*$/)[1],join:(...r)=>k.normalize(r.join("/")),join2:(r,e)=>k.normalize(r+"/"+e)},Bn=()=>r=>r.set(crypto.getRandomValues(new Uint8Array(r.byteLength))),tt=r=>{(tt=Bn())(r)},cr={resolve:(...r)=>{for(var e="",t=!1,n=r.length-1;n>=-1&&!t;n--){var a=n>=0?r[n]:i.cwd();if(typeof a!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!a)return"";e=a+"/"+e,t=k.isAbs(a)}return e=k.normalizeArray(e.split("/").filter(o=>!!o),!t).join("/"),(t?"/":"")+e||"."},relative:(r,e)=>{r=cr.resolve(r).substr(1),e=cr.resolve(e).substr(1);function t(f){for(var d=0;d=0&&f[v]==="";v--);return d>v?[]:f.slice(d,v-d+1)}for(var n=t(r.split("/")),a=t(e.split("/")),o=Math.min(n.length,a.length),s=o,u=0;u{for(var e=0,t=0;t=55296&&n<=57343?(e+=4,++t):e+=3}return e},le=(r,e,t,n)=>{if(!(n>0))return 0;for(var a=t,o=t+n-1,s=0;s=55296&&u<=57343){var l=r.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(t>=o)break;e[t++]=u}else if(u<=2047){if(t+1>=o)break;e[t++]=192|u>>6,e[t++]=128|u&63}else if(u<=65535){if(t+2>=o)break;e[t++]=224|u>>12,e[t++]=128|u>>6&63,e[t++]=128|u&63}else{if(t+3>=o)break;e[t++]=240|u>>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|u&63}}return e[t]=0,t-a};function nt(r,e,t){var n=t>0?t:ue(r)+1,a=new Array(n),o=le(r,a,0,a.length);return e&&(a.length=o),a}var Ln=()=>{if(!se.length){var r=null;if(typeof window<"u"&&typeof window.prompt=="function"&&(r=window.prompt("Input: "),r!==null&&(r+=` -`)),!r)return null;se=nt(r,!0)}return se.shift()},rr={ttys:[],init(){},shutdown(){},register(r,e){rr.ttys[r]={input:[],output:[],ops:e},i.registerDevice(r,rr.stream_ops)},stream_ops:{open(r){var e=rr.ttys[r.node.rdev];if(!e)throw new i.ErrnoError(43);r.tty=e,r.seekable=!1},close(r){r.tty.ops.fsync(r.tty)},fsync(r){r.tty.ops.fsync(r.tty)},read(r,e,t,n,a){if(!r.tty||!r.tty.ops.get_char)throw new i.ErrnoError(60);for(var o=0,s=0;s0&&(Pr(ur(r.output)),r.output=[])},ioctl_tcgets(r){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(r,e,t){return 0},ioctl_tiocgwinsz(r){return[24,80]}},default_tty1_ops:{put_char(r,e){e===null||e===10?(R(ur(r.output)),r.output=[]):e!=0&&r.output.push(e)},fsync(r){r.output&&r.output.length>0&&(R(ur(r.output)),r.output=[])}}},Hn=(r,e)=>Math.ceil(r/e)*e,at=r=>{_r()},g={ops_table:null,mount(r){return g.createNode(null,"/",16895,0)},createNode(r,e,t,n){if(i.isBlkdev(t)||i.isFIFO(t))throw new i.ErrnoError(63);g.ops_table||={dir:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,lookup:g.node_ops.lookup,mknod:g.node_ops.mknod,rename:g.node_ops.rename,unlink:g.node_ops.unlink,rmdir:g.node_ops.rmdir,readdir:g.node_ops.readdir,symlink:g.node_ops.symlink},stream:{llseek:g.stream_ops.llseek}},file:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:{llseek:g.stream_ops.llseek,read:g.stream_ops.read,write:g.stream_ops.write,allocate:g.stream_ops.allocate,mmap:g.stream_ops.mmap,msync:g.stream_ops.msync}},link:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr,readlink:g.node_ops.readlink},stream:{}},chrdev:{node:{getattr:g.node_ops.getattr,setattr:g.node_ops.setattr},stream:i.chrdev_stream_ops}};var a=i.createNode(r,e,t,n);return i.isDir(a.mode)?(a.node_ops=g.ops_table.dir.node,a.stream_ops=g.ops_table.dir.stream,a.contents={}):i.isFile(a.mode)?(a.node_ops=g.ops_table.file.node,a.stream_ops=g.ops_table.file.stream,a.usedBytes=0,a.contents=null):i.isLink(a.mode)?(a.node_ops=g.ops_table.link.node,a.stream_ops=g.ops_table.link.stream):i.isChrdev(a.mode)&&(a.node_ops=g.ops_table.chrdev.node,a.stream_ops=g.ops_table.chrdev.stream),a.atime=a.mtime=a.ctime=Date.now(),r&&(r.contents[e]=a,r.atime=r.mtime=r.ctime=a.atime),a},getFileDataAsTypedArray(r){return r.contents?r.contents.subarray?r.contents.subarray(0,r.usedBytes):new Uint8Array(r.contents):new Uint8Array(0)},expandFileStorage(r,e){var t=r.contents?r.contents.length:0;if(!(t>=e)){var n=1024*1024;e=Math.max(e,t*(t>>0),t!=0&&(e=Math.max(e,256));var a=r.contents;r.contents=new Uint8Array(e),r.usedBytes>0&&r.contents.set(a.subarray(0,r.usedBytes),0)}},resizeFileStorage(r,e){if(r.usedBytes!=e)if(e==0)r.contents=null,r.usedBytes=0;else{var t=r.contents;r.contents=new Uint8Array(e),t&&r.contents.set(t.subarray(0,Math.min(e,r.usedBytes))),r.usedBytes=e}},node_ops:{getattr(r){var e={};return e.dev=i.isChrdev(r.mode)?r.id:1,e.ino=r.id,e.mode=r.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=r.rdev,i.isDir(r.mode)?e.size=4096:i.isFile(r.mode)?e.size=r.usedBytes:i.isLink(r.mode)?e.size=r.link.length:e.size=0,e.atime=new Date(r.atime),e.mtime=new Date(r.mtime),e.ctime=new Date(r.ctime),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr(r,e){for(let t of["mode","atime","mtime","ctime"])e[t]!=null&&(r[t]=e[t]);e.size!==void 0&&g.resizeFileStorage(r,e.size)},lookup(r,e){throw g.doesNotExistError},mknod(r,e,t,n){return g.createNode(r,e,t,n)},rename(r,e,t){var n;try{n=i.lookupNode(e,t)}catch{}if(n){if(i.isDir(r.mode))for(var a in n.contents)throw new i.ErrnoError(55);i.hashRemoveNode(n)}delete r.parent.contents[r.name],e.contents[t]=r,r.name=t,e.ctime=e.mtime=r.parent.ctime=r.parent.mtime=Date.now()},unlink(r,e){delete r.contents[e],r.ctime=r.mtime=Date.now()},rmdir(r,e){var t=i.lookupNode(r,e);for(var n in t.contents)throw new i.ErrnoError(55);delete r.contents[e],r.ctime=r.mtime=Date.now()},readdir(r){return[".","..",...Object.keys(r.contents)]},symlink(r,e,t){var n=g.createNode(r,e,41471,0);return n.link=t,n},readlink(r){if(!i.isLink(r.mode))throw new i.ErrnoError(28);return r.link}},stream_ops:{read(r,e,t,n,a){var o=r.node.contents;if(a>=r.node.usedBytes)return 0;var s=Math.min(r.node.usedBytes-a,n);if(s>8&&o.subarray)e.set(o.subarray(a,a+s),t);else for(var u=0;u0||t+e{var e=await qr(r);return new Uint8Array(e)},Vn=(r,e,t,n,a,o)=>{i.createDataFile(r,e,t,n,a,o)},Gn=c.preloadPlugins||[],Yn=(r,e,t,n)=>{typeof Browser<"u"&&Browser.init();var a=!1;return Gn.forEach(o=>{a||o.canHandle(e)&&(o.handle(r,e,t,n),a=!0)}),a},qn=(r,e,t,n,a,o,s,u,l,f)=>{var d=e?cr.resolve(k.join2(r,e)):r,v=`cp ${d}`;function m(p){function _(T){f?.(),u||Vn(r,e,T,n,a,l),o?.(),Sr(v)}Yn(p,d,_,()=>{s?.(),Sr(v)})||_(p)}Jr(v),typeof t=="string"?zn(t).then(m,s):m(t)},Xn=r=>{var e={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},t=e[r];if(typeof t>"u")throw new Error(`Unknown file open mode: ${r}`);return t},fe=(r,e)=>{var t=0;return r&&(t|=365),e&&(t|=146),t},i={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{name="ErrnoError";constructor(r){this.errno=r}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(r){this.node=r}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(r){this.shared.flags=r}get position(){return this.shared.position}set position(r){this.shared.position=r}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(r,e,t,n){r||(r=this),this.parent=r,this.mount=r.mount,this.id=i.nextInode++,this.name=e,this.mode=t,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(r){r?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(r){r?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return i.isDir(this.mode)}get isDevice(){return i.isChrdev(this.mode)}},lookupPath(r,e={}){if(!r)throw new i.ErrnoError(44);e.follow_mount??=!0,k.isAbs(r)||(r=i.cwd()+"/"+r);r:for(var t=0;t<40;t++){for(var n=r.split("/").filter(f=>!!f),a=i.root,o="/",s=0;s>>0)%i.nameTable.length},hashAddNode(r){var e=i.hashName(r.parent.id,r.name);r.name_next=i.nameTable[e],i.nameTable[e]=r},hashRemoveNode(r){var e=i.hashName(r.parent.id,r.name);if(i.nameTable[e]===r)i.nameTable[e]=r.name_next;else for(var t=i.nameTable[e];t;){if(t.name_next===r){t.name_next=r.name_next;break}t=t.name_next}},lookupNode(r,e){var t=i.mayLookup(r);if(t)throw new i.ErrnoError(t);for(var n=i.hashName(r.id,e),a=i.nameTable[n];a;a=a.name_next){var o=a.name;if(a.parent.id===r.id&&o===e)return a}return i.lookup(r,e)},createNode(r,e,t,n){var a=new i.FSNode(r,e,t,n);return i.hashAddNode(a),a},destroyNode(r){i.hashRemoveNode(r)},isRoot(r){return r===r.parent},isMountpoint(r){return!!r.mounted},isFile(r){return(r&61440)===32768},isDir(r){return(r&61440)===16384},isLink(r){return(r&61440)===40960},isChrdev(r){return(r&61440)===8192},isBlkdev(r){return(r&61440)===24576},isFIFO(r){return(r&61440)===4096},isSocket(r){return(r&49152)===49152},flagsToPermissionString(r){var e=["r","w","rw"][r&3];return r&512&&(e+="w"),e},nodePermissions(r,e){return i.ignorePermissions?0:e.includes("r")&&!(r.mode&292)||e.includes("w")&&!(r.mode&146)||e.includes("x")&&!(r.mode&73)?2:0},mayLookup(r){if(!i.isDir(r.mode))return 54;var e=i.nodePermissions(r,"x");return e||(r.node_ops.lookup?0:2)},mayCreate(r,e){if(!i.isDir(r.mode))return 54;try{var t=i.lookupNode(r,e);return 20}catch{}return i.nodePermissions(r,"wx")},mayDelete(r,e,t){var n;try{n=i.lookupNode(r,e)}catch(o){return o.errno}var a=i.nodePermissions(r,"wx");if(a)return a;if(t){if(!i.isDir(n.mode))return 54;if(i.isRoot(n)||i.getPath(n)===i.cwd())return 10}else if(i.isDir(n.mode))return 31;return 0},mayOpen(r,e){return r?i.isLink(r.mode)?32:i.isDir(r.mode)&&(i.flagsToPermissionString(e)!=="r"||e&576)?31:i.nodePermissions(r,i.flagsToPermissionString(e)):44},checkOpExists(r,e){if(!r)throw new i.ErrnoError(e);return r},MAX_OPEN_FDS:4096,nextfd(){for(var r=0;r<=i.MAX_OPEN_FDS;r++)if(!i.streams[r])return r;throw new i.ErrnoError(33)},getStreamChecked(r){var e=i.getStream(r);if(!e)throw new i.ErrnoError(8);return e},getStream:r=>i.streams[r],createStream(r,e=-1){return r=Object.assign(new i.FSStream,r),e==-1&&(e=i.nextfd()),r.fd=e,i.streams[e]=r,r},closeStream(r){i.streams[r]=null},dupStream(r,e=-1){var t=i.createStream(r,e);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(r){var e=i.getDevice(r.node.rdev);r.stream_ops=e.stream_ops,r.stream_ops.open?.(r)},llseek(){throw new i.ErrnoError(70)}},major:r=>r>>8,minor:r=>r&255,makedev:(r,e)=>r<<8|e,registerDevice(r,e){i.devices[r]={stream_ops:e}},getDevice:r=>i.devices[r],getMounts(r){for(var e=[],t=[r];t.length;){var n=t.pop();e.push(n),t.push(...n.mounts)}return e},syncfs(r,e){typeof r=="function"&&(e=r,r=!1),i.syncFSRequests++,i.syncFSRequests>1&&R(`warning: ${i.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=i.getMounts(i.root.mount),n=0;function a(s){return i.syncFSRequests--,e(s)}function o(s){if(s)return o.errored?void 0:(o.errored=!0,a(s));++n>=t.length&&a(null)}t.forEach(s=>{if(!s.type.syncfs)return o(null);s.type.syncfs(s,r,o)})},mount(r,e,t){var n=t==="/",a=!t,o;if(n&&i.root)throw new i.ErrnoError(10);if(!n&&!a){var s=i.lookupPath(t,{follow_mount:!1});if(t=s.path,o=s.node,i.isMountpoint(o))throw new i.ErrnoError(10);if(!i.isDir(o.mode))throw new i.ErrnoError(54)}var u={type:r,opts:e,mountpoint:t,mounts:[]},l=r.mount(u);return l.mount=u,u.root=l,n?i.root=l:o&&(o.mounted=u,o.mount&&o.mount.mounts.push(u)),l},unmount(r){var e=i.lookupPath(r,{follow_mount:!1});if(!i.isMountpoint(e.node))throw new i.ErrnoError(28);var t=e.node,n=t.mounted,a=i.getMounts(n);Object.keys(i.nameTable).forEach(s=>{for(var u=i.nameTable[s];u;){var l=u.name_next;a.includes(u.mount)&&i.destroyNode(u),u=l}}),t.mounted=null;var o=t.mount.mounts.indexOf(n);t.mount.mounts.splice(o,1)},lookup(r,e){return r.node_ops.lookup(r,e)},mknod(r,e,t){var n=i.lookupPath(r,{parent:!0}),a=n.node,o=k.basename(r);if(!o)throw new i.ErrnoError(28);if(o==="."||o==="..")throw new i.ErrnoError(20);var s=i.mayCreate(a,o);if(s)throw new i.ErrnoError(s);if(!a.node_ops.mknod)throw new i.ErrnoError(63);return a.node_ops.mknod(a,o,e,t)},statfs(r){return i.statfsNode(i.lookupPath(r,{follow:!0}).node)},statfsStream(r){return i.statfsNode(r.node)},statfsNode(r){var e={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:i.nextInode,ffree:i.nextInode-1,fsid:42,flags:2,namelen:255};return r.node_ops.statfs&&Object.assign(e,r.node_ops.statfs(r.mount.opts.root)),e},create(r,e=438){return e&=4095,e|=32768,i.mknod(r,e,0)},mkdir(r,e=511){return e&=1023,e|=16384,i.mknod(r,e,0)},mkdirTree(r,e){for(var t=r.split("/"),n="",a=0;a"u"&&(t=e,e=438),e|=8192,i.mknod(r,e,t)},symlink(r,e){if(!cr.resolve(r))throw new i.ErrnoError(44);var t=i.lookupPath(e,{parent:!0}),n=t.node;if(!n)throw new i.ErrnoError(44);var a=k.basename(e),o=i.mayCreate(n,a);if(o)throw new i.ErrnoError(o);if(!n.node_ops.symlink)throw new i.ErrnoError(63);return n.node_ops.symlink(n,a,r)},rename(r,e){var t=k.dirname(r),n=k.dirname(e),a=k.basename(r),o=k.basename(e),s,u,l;if(s=i.lookupPath(r,{parent:!0}),u=s.node,s=i.lookupPath(e,{parent:!0}),l=s.node,!u||!l)throw new i.ErrnoError(44);if(u.mount!==l.mount)throw new i.ErrnoError(75);var f=i.lookupNode(u,a),d=cr.relative(r,n);if(d.charAt(0)!==".")throw new i.ErrnoError(28);if(d=cr.relative(e,t),d.charAt(0)!==".")throw new i.ErrnoError(55);var v;try{v=i.lookupNode(l,o)}catch{}if(f!==v){var m=i.isDir(f.mode),p=i.mayDelete(u,a,m);if(p)throw new i.ErrnoError(p);if(p=v?i.mayDelete(l,o,m):i.mayCreate(l,o),p)throw new i.ErrnoError(p);if(!u.node_ops.rename)throw new i.ErrnoError(63);if(i.isMountpoint(f)||v&&i.isMountpoint(v))throw new i.ErrnoError(10);if(l!==u&&(p=i.nodePermissions(u,"w"),p))throw new i.ErrnoError(p);i.hashRemoveNode(f);try{u.node_ops.rename(f,l,o),f.parent=l}catch(_){throw _}finally{i.hashAddNode(f)}}},rmdir(r){var e=i.lookupPath(r,{parent:!0}),t=e.node,n=k.basename(r),a=i.lookupNode(t,n),o=i.mayDelete(t,n,!0);if(o)throw new i.ErrnoError(o);if(!t.node_ops.rmdir)throw new i.ErrnoError(63);if(i.isMountpoint(a))throw new i.ErrnoError(10);t.node_ops.rmdir(t,n),i.destroyNode(a)},readdir(r){var e=i.lookupPath(r,{follow:!0}),t=e.node,n=i.checkOpExists(t.node_ops.readdir,54);return n(t)},unlink(r){var e=i.lookupPath(r,{parent:!0}),t=e.node;if(!t)throw new i.ErrnoError(44);var n=k.basename(r),a=i.lookupNode(t,n),o=i.mayDelete(t,n,!1);if(o)throw new i.ErrnoError(o);if(!t.node_ops.unlink)throw new i.ErrnoError(63);if(i.isMountpoint(a))throw new i.ErrnoError(10);t.node_ops.unlink(t,n),i.destroyNode(a)},readlink(r){var e=i.lookupPath(r),t=e.node;if(!t)throw new i.ErrnoError(44);if(!t.node_ops.readlink)throw new i.ErrnoError(28);return t.node_ops.readlink(t)},stat(r,e){var t=i.lookupPath(r,{follow:!e}),n=t.node,a=i.checkOpExists(n.node_ops.getattr,63);return a(n)},lstat(r){return i.stat(r,!0)},chmod(r,e,t){var n;if(typeof r=="string"){var a=i.lookupPath(r,{follow:!t});n=a.node}else n=r;var o=i.checkOpExists(n.node_ops.setattr,63);o(n,{mode:e&4095|n.mode&-4096,ctime:Date.now(),dontFollow:t})},lchmod(r,e){i.chmod(r,e,!0)},fchmod(r,e){var t=i.getStreamChecked(r);i.chmod(t.node,e)},chown(r,e,t,n){var a;if(typeof r=="string"){var o=i.lookupPath(r,{follow:!n});a=o.node}else a=r;var s=i.checkOpExists(a.node_ops.setattr,63);s(a,{timestamp:Date.now(),dontFollow:n})},lchown(r,e,t){i.chown(r,e,t,!0)},fchown(r,e,t){var n=i.getStreamChecked(r);i.chown(n.node,e,t)},truncate(r,e){if(e<0)throw new i.ErrnoError(28);var t;if(typeof r=="string"){var n=i.lookupPath(r,{follow:!0});t=n.node}else t=r;if(i.isDir(t.mode))throw new i.ErrnoError(31);if(!i.isFile(t.mode))throw new i.ErrnoError(28);var a=i.nodePermissions(t,"w");if(a)throw new i.ErrnoError(a);var o=i.checkOpExists(t.node_ops.setattr,63);o(t,{size:e,timestamp:Date.now()})},ftruncate(r,e){var t=i.getStreamChecked(r);if(!(t.flags&2097155))throw new i.ErrnoError(28);i.truncate(t.node,e)},utime(r,e,t){var n=i.lookupPath(r,{follow:!0}),a=n.node,o=i.checkOpExists(a.node_ops.setattr,63);o(a,{atime:e,mtime:t})},open(r,e,t=438){if(r==="")throw new i.ErrnoError(44);e=typeof e=="string"?Xn(e):e,e&64?t=t&4095|32768:t=0;var n,a;if(typeof r=="object")n=r;else{a=r.endsWith("/");var o=i.lookupPath(r,{follow:!(e&131072),noent_okay:!0});n=o.node,r=o.path}var s=!1;if(e&64)if(n){if(e&128)throw new i.ErrnoError(20)}else{if(a)throw new i.ErrnoError(31);n=i.mknod(r,t|511,0),s=!0}if(!n)throw new i.ErrnoError(44);if(i.isChrdev(n.mode)&&(e&=-513),e&65536&&!i.isDir(n.mode))throw new i.ErrnoError(54);if(!s){var u=i.mayOpen(n,e);if(u)throw new i.ErrnoError(u)}e&512&&!s&&i.truncate(n,0),e&=-131713;var l=i.createStream({node:n,path:i.getPath(n),flags:e,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return l.stream_ops.open&&l.stream_ops.open(l),s&&i.chmod(n,t&511),c.logReadFiles&&!(e&1)&&(r in i.readFiles||(i.readFiles[r]=1)),l},close(r){if(i.isClosed(r))throw new i.ErrnoError(8);r.getdents&&(r.getdents=null);try{r.stream_ops.close&&r.stream_ops.close(r)}catch(e){throw e}finally{i.closeStream(r.fd)}r.fd=null},isClosed(r){return r.fd===null},llseek(r,e,t){if(i.isClosed(r))throw new i.ErrnoError(8);if(!r.seekable||!r.stream_ops.llseek)throw new i.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new i.ErrnoError(28);return r.position=r.stream_ops.llseek(r,e,t),r.ungotten=[],r.position},read(r,e,t,n,a){if(n<0||a<0)throw new i.ErrnoError(28);if(i.isClosed(r))throw new i.ErrnoError(8);if((r.flags&2097155)===1)throw new i.ErrnoError(8);if(i.isDir(r.node.mode))throw new i.ErrnoError(31);if(!r.stream_ops.read)throw new i.ErrnoError(28);var o=typeof a<"u";if(!o)a=r.position;else if(!r.seekable)throw new i.ErrnoError(70);var s=r.stream_ops.read(r,e,t,n,a);return o||(r.position+=s),s},write(r,e,t,n,a,o){if(n<0||a<0)throw new i.ErrnoError(28);if(i.isClosed(r))throw new i.ErrnoError(8);if(!(r.flags&2097155))throw new i.ErrnoError(8);if(i.isDir(r.node.mode))throw new i.ErrnoError(31);if(!r.stream_ops.write)throw new i.ErrnoError(28);r.seekable&&r.flags&1024&&i.llseek(r,0,2);var s=typeof a<"u";if(!s)a=r.position;else if(!r.seekable)throw new i.ErrnoError(70);var u=r.stream_ops.write(r,e,t,n,a,o);return s||(r.position+=u),u},allocate(r,e,t){if(i.isClosed(r))throw new i.ErrnoError(8);if(e<0||t<=0)throw new i.ErrnoError(28);if(!(r.flags&2097155))throw new i.ErrnoError(8);if(!i.isFile(r.node.mode)&&!i.isDir(r.node.mode))throw new i.ErrnoError(43);if(!r.stream_ops.allocate)throw new i.ErrnoError(138);r.stream_ops.allocate(r,e,t)},mmap(r,e,t,n,a){if(n&2&&!(a&2)&&(r.flags&2097155)!==2)throw new i.ErrnoError(2);if((r.flags&2097155)===1)throw new i.ErrnoError(2);if(!r.stream_ops.mmap)throw new i.ErrnoError(43);if(!e)throw new i.ErrnoError(28);return r.stream_ops.mmap(r,e,t,n,a)},msync(r,e,t,n,a){return r.stream_ops.msync?r.stream_ops.msync(r,e,t,n,a):0},ioctl(r,e,t){if(!r.stream_ops.ioctl)throw new i.ErrnoError(59);return r.stream_ops.ioctl(r,e,t)},readFile(r,e={}){if(e.flags=e.flags||0,e.encoding=e.encoding||"binary",e.encoding!=="utf8"&&e.encoding!=="binary")throw new Error(`Invalid encoding type "${e.encoding}"`);var t,n=i.open(r,e.flags),a=i.stat(r),o=a.size,s=new Uint8Array(o);return i.read(n,s,0,o,0),e.encoding==="utf8"?t=ur(s):e.encoding==="binary"&&(t=s),i.close(n),t},writeFile(r,e,t={}){t.flags=t.flags||577;var n=i.open(r,t.flags,t.mode);if(typeof e=="string"){var a=new Uint8Array(ue(e)+1),o=le(e,a,0,a.length);i.write(n,a,0,o,void 0,t.canOwn)}else if(ArrayBuffer.isView(e))i.write(n,e,0,e.byteLength,void 0,t.canOwn);else throw new Error("Unsupported data type");i.close(n)},cwd:()=>i.currentPath,chdir(r){var e=i.lookupPath(r,{follow:!0});if(e.node===null)throw new i.ErrnoError(44);if(!i.isDir(e.node.mode))throw new i.ErrnoError(54);var t=i.nodePermissions(e.node,"x");if(t)throw new i.ErrnoError(t);i.currentPath=e.path},createDefaultDirectories(){i.mkdir("/tmp"),i.mkdir("/home"),i.mkdir("/home/web_user")},createDefaultDevices(){i.mkdir("/dev"),i.registerDevice(i.makedev(1,3),{read:()=>0,write:(n,a,o,s,u)=>s,llseek:()=>0}),i.mkdev("/dev/null",i.makedev(1,3)),rr.register(i.makedev(5,0),rr.default_tty_ops),rr.register(i.makedev(6,0),rr.default_tty1_ops),i.mkdev("/dev/tty",i.makedev(5,0)),i.mkdev("/dev/tty1",i.makedev(6,0));var r=new Uint8Array(1024),e=0,t=()=>(e===0&&(tt(r),e=r.byteLength),r[--e]);i.createDevice("/dev","random",t),i.createDevice("/dev","urandom",t),i.mkdir("/dev/shm"),i.mkdir("/dev/shm/tmp")},createSpecialDirectories(){i.mkdir("/proc");var r=i.mkdir("/proc/self");i.mkdir("/proc/self/fd"),i.mount({mount(){var e=i.createNode(r,"fd",16895,73);return e.stream_ops={llseek:g.stream_ops.llseek},e.node_ops={lookup(t,n){var a=+n,o=i.getStreamChecked(a),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>o.path},id:a+1};return s.parent=s,s},readdir(){return Array.from(i.streams.entries()).filter(([t,n])=>n).map(([t,n])=>t.toString())}},e}},{},"/proc/self/fd")},createStandardStreams(r,e,t){r?i.createDevice("/dev","stdin",r):i.symlink("/dev/tty","/dev/stdin"),e?i.createDevice("/dev","stdout",null,e):i.symlink("/dev/tty","/dev/stdout"),t?i.createDevice("/dev","stderr",null,t):i.symlink("/dev/tty1","/dev/stderr");var n=i.open("/dev/stdin",0),a=i.open("/dev/stdout",1),o=i.open("/dev/stderr",1)},staticInit(){i.nameTable=new Array(4096),i.mount(g,{},"/"),i.createDefaultDirectories(),i.createDefaultDevices(),i.createSpecialDirectories(),i.filesystems={MEMFS:g}},init(r,e,t){i.initialized=!0,r??=c.stdin,e??=c.stdout,t??=c.stderr,i.createStandardStreams(r,e,t)},quit(){i.initialized=!1;for(var r=0;rthis.length-1||p<0)){var _=p%this.chunkSize,T=p/this.chunkSize|0;return this.getter(T)[_]}}setDataGetter(p){this.getter=p}cacheLength(){var p=new XMLHttpRequest;if(p.open("HEAD",t,!1),p.send(null),!(p.status>=200&&p.status<300||p.status===304))throw new Error("Couldn't load "+t+". Status: "+p.status);var _=Number(p.getResponseHeader("Content-length")),T,D=(T=p.getResponseHeader("Accept-Ranges"))&&T==="bytes",P=(T=p.getResponseHeader("Content-Encoding"))&&T==="gzip",W=1024*1024;D||(W=_);var F=(L,J)=>{if(L>J)throw new Error("invalid range ("+L+", "+J+") or no bytes requested!");if(J>_-1)throw new Error("only "+_+" bytes available! programmer error!");var C=new XMLHttpRequest;if(C.open("GET",t,!1),_!==W&&C.setRequestHeader("Range","bytes="+L+"-"+J),C.responseType="arraybuffer",C.overrideMimeType&&C.overrideMimeType("text/plain; charset=x-user-defined"),C.send(null),!(C.status>=200&&C.status<300||C.status===304))throw new Error("Couldn't load "+t+". Status: "+C.status);return C.response!==void 0?new Uint8Array(C.response||[]):nt(C.responseText||"",!0)},ar=this;ar.setDataGetter(L=>{var J=L*W,C=(L+1)*W-1;if(C=Math.min(C,_-1),typeof ar.chunks[L]>"u"&&(ar.chunks[L]=F(J,C)),typeof ar.chunks[L]>"u")throw new Error("doXHR failed!");return ar.chunks[L]}),(P||!_)&&(W=_=1,_=this.getter(0).length,W=_,Pr("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=_,this._chunkSize=W,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!or)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new o,u={isDevice:!1,contents:s}}else var u={isDevice:!1,url:t};var l=i.createFile(r,e,u,n,a);u.contents?l.contents=u.contents:u.url&&(l.contents=null,l.url=u.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var f={},d=Object.keys(l.stream_ops);d.forEach(m=>{var p=l.stream_ops[m];f[m]=(..._)=>(i.forceLoadFile(l),p(..._))});function v(m,p,_,T,D){var P=m.node.contents;if(D>=P.length)return 0;var W=Math.min(P.length-D,T);if(P.slice)for(var F=0;F(i.forceLoadFile(l),v(m,p,_,T,D)),f.mmap=(m,p,_,T,D)=>{i.forceLoadFile(l);var P=at(p);if(!P)throw new i.ErrnoError(48);return v(m,O(),P,p,_),{ptr:P,allocated:!0}},l.stream_ops=f,l}},S={DEFAULT_POLLMASK:5,calculateAt(r,e,t){if(k.isAbs(e))return e;var n;if(r===-100)n=i.cwd();else{var a=S.getStreamFromFD(r);n=a.path}if(e.length==0){if(!t)throw new i.ErrnoError(44);return n}return n+"/"+e},writeStat(r,e){h()[r>>2]=e.dev,h()[r+4>>2]=e.mode,w()[r+8>>2]=e.nlink,h()[r+12>>2]=e.uid,h()[r+16>>2]=e.gid,h()[r+20>>2]=e.rdev,U[r+24>>3]=BigInt(e.size),h()[r+32>>2]=4096,h()[r+36>>2]=e.blocks;var t=e.atime.getTime(),n=e.mtime.getTime(),a=e.ctime.getTime();return U[r+40>>3]=BigInt(Math.floor(t/1e3)),w()[r+48>>2]=t%1e3*1e3*1e3,U[r+56>>3]=BigInt(Math.floor(n/1e3)),w()[r+64>>2]=n%1e3*1e3*1e3,U[r+72>>3]=BigInt(Math.floor(a/1e3)),w()[r+80>>2]=a%1e3*1e3*1e3,U[r+88>>3]=BigInt(e.ino),0},writeStatFs(r,e){h()[r+4>>2]=e.bsize,h()[r+40>>2]=e.bsize,h()[r+8>>2]=e.blocks,h()[r+12>>2]=e.bfree,h()[r+16>>2]=e.bavail,h()[r+20>>2]=e.files,h()[r+24>>2]=e.ffree,h()[r+28>>2]=e.fsid,h()[r+44>>2]=e.flags,h()[r+36>>2]=e.namelen},doMsync(r,e,t,n,a){if(!i.isFile(e.node.mode))throw new i.ErrnoError(43);if(n&2)return 0;var o=I().slice(r,r+t);i.msync(e,o,a,t,n)},getStreamFromFD(r){var e=i.getStreamChecked(r);return e},varargs:void 0,getStr(r){var e=gr(r);return e}};function it(r,e,t){if($)return x(2,0,1,r,e,t);S.varargs=t;try{var n=S.getStreamFromFD(r);switch(e){case 0:{var a=Or();if(a<0)return-28;for(;i.streams[a];)a++;var o;return o=i.dupStream(n,a),o.fd}case 1:case 2:return 0;case 3:return n.flags;case 4:{var a=Or();return n.flags|=a,0}case 12:{var a=fr(),s=0;return er()[a+s>>1]=2,0}case 13:case 14:return 0}return-28}catch(u){if(typeof i>"u"||u.name!=="ErrnoError")throw u;return-u.errno}}function ot(r,e,t){if($)return x(3,0,1,r,e,t);S.varargs=t;try{var n=S.getStreamFromFD(r);switch(e){case 21509:return n.tty?0:-59;case 21505:{if(!n.tty)return-59;if(n.tty.ops.ioctl_tcgets){var a=n.tty.ops.ioctl_tcgets(n),o=fr();h()[o>>2]=a.c_iflag||0,h()[o+4>>2]=a.c_oflag||0,h()[o+8>>2]=a.c_cflag||0,h()[o+12>>2]=a.c_lflag||0;for(var s=0;s<32;s++)O()[o+s+17]=a.c_cc[s]||0;return 0}return 0}case 21510:case 21511:case 21512:return n.tty?0:-59;case 21506:case 21507:case 21508:{if(!n.tty)return-59;if(n.tty.ops.ioctl_tcsets){for(var o=fr(),u=h()[o>>2],l=h()[o+4>>2],f=h()[o+8>>2],d=h()[o+12>>2],v=[],s=0;s<32;s++)v.push(O()[o+s+17]);return n.tty.ops.ioctl_tcsets(n.tty,e,{c_iflag:u,c_oflag:l,c_cflag:f,c_lflag:d,c_cc:v})}return 0}case 21519:{if(!n.tty)return-59;var o=fr();return h()[o>>2]=0,0}case 21520:return n.tty?-28:-59;case 21531:{var o=fr();return i.ioctl(n,e,o)}case 21523:{if(!n.tty)return-59;if(n.tty.ops.ioctl_tiocgwinsz){var m=n.tty.ops.ioctl_tiocgwinsz(n.tty),o=fr();er()[o>>1]=m[0],er()[o+2>>1]=m[1]}return 0}case 21524:return n.tty?0:-59;case 21515:return n.tty?0:-59;default:return-28}}catch(p){if(typeof i>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function st(r,e,t,n){if($)return x(4,0,1,r,e,t,n);S.varargs=n;try{e=S.getStr(e),e=S.calculateAt(r,e);var a=n?Or():0;return i.open(e,t,a).fd}catch(o){if(typeof i>"u"||o.name!=="ErrnoError")throw o;return-o.errno}}function ut(r){if($)return x(5,0,1,r);try{return r=S.getStr(r),i.rmdir(r),0}catch(e){if(typeof i>"u"||e.name!=="ErrnoError")throw e;return-e.errno}}function lt(r,e,t){if($)return x(6,0,1,r,e,t);try{return e=S.getStr(e),e=S.calculateAt(r,e),t===0?i.unlink(e):t===512?i.rmdir(e):_r("Invalid flags passed to unlinkat"),0}catch(n){if(typeof i>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}var Kn=()=>_r(""),Wr=r=>{if(r===null)return"null";var e=typeof r;return e==="object"||e==="array"||e==="function"?r.toString():""+r},Qn=()=>{for(var r=new Array(256),e=0;e<256;++e)r[e]=String.fromCharCode(e);ft=r},ft,B=r=>{for(var e="",t=r;I()[t];)e+=ft[I()[t++]];return e},dr={},nr={},xr={},vr,E=r=>{throw new vr(r)},ct,Ur=r=>{throw new ct(r)},wr=(r,e,t)=>{r.forEach(u=>xr[u]=e);function n(u){var l=t(u);l.length!==r.length&&Ur("Mismatched type converter count");for(var f=0;f{nr.hasOwnProperty(u)?a[l]=nr[u]:(o.push(u),dr.hasOwnProperty(u)||(dr[u]=[]),dr[u].push(()=>{a[l]=nr[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)};function Jn(r,e,t={}){var n=e.name;if(r||E(`type "${n}" must have a positive integer typeid pointer`),nr.hasOwnProperty(r)){if(t.ignoreDuplicateRegistrations)return;E(`Cannot register type '${n}' twice`)}if(nr[r]=e,delete xr[r],dr.hasOwnProperty(r)){var a=dr[r];delete dr[r],a.forEach(o=>o())}}function G(r,e,t={}){return Jn(r,e,t)}var dt=(r,e,t)=>{switch(e){case 1:return t?n=>O()[n]:n=>I()[n];case 2:return t?n=>er()[n>>1]:n=>Xr()[n>>1];case 4:return t?n=>h()[n>>2]:n=>w()[n>>2];case 8:return t?n=>U[n>>3]:n=>Ue[n>>3];default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},Zn=(r,e,t,n,a)=>{e=B(e);var o=e.indexOf("u")!=-1;o&&(a=(1n<<64n)-1n),G(r,{name:e,fromWireType:s=>s,toWireType:function(s,u){if(typeof u!="bigint"&&typeof u!="number")throw new TypeError(`Cannot convert "${Wr(u)}" to ${this.name}`);return typeof u=="number"&&(u=BigInt(u)),u},argPackAdvance:X,readValueFromPointer:dt(e,t,!o),destructorFunction:null})},X=8,ra=(r,e,t,n)=>{e=B(e),G(r,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?t:n},argPackAdvance:X,readValueFromPointer:function(a){return this.fromWireType(I()[a])},destructorFunction:null})},ea=r=>({count:r.count,deleteScheduled:r.deleteScheduled,preservePointerOnDelete:r.preservePointerOnDelete,ptr:r.ptr,ptrType:r.ptrType,smartPtr:r.smartPtr,smartPtrType:r.smartPtrType}),ce=r=>{function e(t){return t.$$.ptrType.registeredClass.name}E(e(r)+" instance already deleted")},de=!1,vt=r=>{},ta=r=>{r.smartPtr?r.smartPtrType.rawDestructor(r.smartPtr):r.ptrType.registeredClass.rawDestructor(r.ptr)},ht=r=>{r.count.value-=1;var e=r.count.value===0;e&&ta(r)},pt=(r,e,t)=>{if(e===t)return r;if(t.baseClass===void 0)return null;var n=pt(r,e,t.baseClass);return n===null?null:t.downcast(n)},mt={},na={},aa=(r,e)=>{for(e===void 0&&E("ptr should not be undefined");r.baseClass;)e=r.upcast(e),r=r.baseClass;return e},ia=(r,e)=>(e=aa(r,e),na[e]),Ir=(r,e)=>{(!e.ptrType||!e.ptr)&&Ur("makeClassHandle requires ptr and ptrType");var t=!!e.smartPtrType,n=!!e.smartPtr;return t!==n&&Ur("Both smartPtrType and smartPtr must be specified"),e.count={value:1},yr(Object.create(r,{$$:{value:e,writable:!0}}))};function oa(r){var e=this.getPointee(r);if(!e)return this.destructor(r),null;var t=ia(this.registeredClass,e);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=e,t.$$.smartPtr=r,t.clone();var n=t.clone();return this.destructor(r),n}function a(){return this.isSmartPointer?Ir(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:r}):Ir(this.registeredClass.instancePrototype,{ptrType:this,ptr:r})}var o=this.registeredClass.getActualType(e),s=mt[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=pt(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?Ir(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:r}):Ir(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var yr=r=>typeof FinalizationRegistry>"u"?(yr=e=>e,r):(de=new FinalizationRegistry(e=>{ht(e.$$)}),yr=e=>{var t=e.$$,n=!!t.smartPtr;if(n){var a={$$:t};de.register(e,a,e)}return e},vt=e=>de.unregister(e),yr(r)),jr=[],sa=()=>{for(;jr.length;){var r=jr.pop();r.$$.deleteScheduled=!1,r.delete()}},_t,ua=()=>{Object.assign(Nr.prototype,{isAliasOf(r){if(!(this instanceof Nr)||!(r instanceof Nr))return!1;var e=this.$$.ptrType.registeredClass,t=this.$$.ptr;r.$$=r.$$;for(var n=r.$$.ptrType.registeredClass,a=r.$$.ptr;e.baseClass;)t=e.upcast(t),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&t===a},clone(){if(this.$$.ptr||ce(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var r=yr(Object.create(Object.getPrototypeOf(this),{$$:{value:ea(this.$$)}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r},delete(){this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&E("Object already scheduled for deletion"),vt(this),ht(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&E("Object already scheduled for deletion"),jr.push(this),jr.length===1&&_t&&_t(sa),this.$$.deleteScheduled=!0,this}})};function Nr(){}var Er=(r,e)=>Object.defineProperty(e,"name",{value:r}),gt=(r,e,t)=>{if(r[e].overloadTable===void 0){var n=r[e];r[e]=function(...a){return r[e].overloadTable.hasOwnProperty(a.length)||E(`Function '${t}' called with an invalid number of arguments (${a.length}) - expects one of (${r[e].overloadTable})!`),r[e].overloadTable[a.length].apply(this,a)},r[e].overloadTable=[],r[e].overloadTable[n.argCount]=n}},la=(r,e,t)=>{c.hasOwnProperty(r)?((t===void 0||c[r].overloadTable!==void 0&&c[r].overloadTable[t]!==void 0)&&E(`Cannot register public name '${r}' twice`),gt(c,r,r),c[r].overloadTable.hasOwnProperty(t)&&E(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),c[r].overloadTable[t]=e):(c[r]=e,c[r].argCount=t)},fa=48,ca=57,da=r=>{r=r.replace(/[^a-zA-Z0-9_]/g,"$");var e=r.charCodeAt(0);return e>=fa&&e<=ca?`_${r}`:r};function va(r,e,t,n,a,o,s,u){this.name=r,this.constructor=e,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var ve=(r,e,t)=>{for(;e!==t;)e.upcast||E(`Expected null or instance of ${t.name}, got an instance of ${e.name}`),r=e.upcast(r),e=e.baseClass;return r};function ha(r,e){if(e===null)return this.isReference&&E(`null is not a valid ${this.name}`),0;e.$$||E(`Cannot pass "${Wr(e)}" as a ${this.name}`),e.$$.ptr||E(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=e.$$.ptrType.registeredClass,n=ve(e.$$.ptr,t,this.registeredClass);return n}function pa(r,e){var t;if(e===null)return this.isReference&&E(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),r!==null&&r.push(this.rawDestructor,t),t):0;(!e||!e.$$)&&E(`Cannot pass "${Wr(e)}" as a ${this.name}`),e.$$.ptr||E(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&E(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(t=ve(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&E("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?t=e.$$.smartPtr:E(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)t=e.$$.smartPtr;else{var a=e.clone();t=this.rawShare(t,A.toHandle(()=>a.delete())),r!==null&&r.push(this.rawDestructor,t)}break;default:E("Unsupporting sharing policy")}return t}function ma(r,e){if(e===null)return this.isReference&&E(`null is not a valid ${this.name}`),0;e.$$||E(`Cannot pass "${Wr(e)}" as a ${this.name}`),e.$$.ptr||E(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&E(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var t=e.$$.ptrType.registeredClass,n=ve(e.$$.ptr,t,this.registeredClass);return n}function Br(r){return this.fromWireType(w()[r>>2])}var _a=()=>{Object.assign(Lr.prototype,{getPointee(r){return this.rawGetPointee&&(r=this.rawGetPointee(r)),r},destructor(r){this.rawDestructor?.(r)},argPackAdvance:X,readValueFromPointer:Br,fromWireType:oa})};function Lr(r,e,t,n,a,o,s,u,l,f,d){this.name=r,this.registeredClass=e,this.isReference=t,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=d,!a&&e.baseClass===void 0?n?(this.toWireType=ha,this.destructorFunction=null):(this.toWireType=ma,this.destructorFunction=null):this.toWireType=pa}var ga=(r,e,t)=>{c.hasOwnProperty(r)||Ur("Replacing nonexistent public symbol"),c[r].overloadTable!==void 0&&t!==void 0?c[r].overloadTable[t]=e:(c[r]=e,c[r].argCount=t)},hr=(r,e)=>{r=B(r);function t(){return N(e)}var n=t();return typeof n!="function"&&E(`unknown function pointer with signature ${r}: ${e}`),n},wa=(r,e)=>{var t=Er(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` -`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(r.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},wt,yt=r=>{var e=Bt(r),t=B(e);return Q(e),t},he=(r,e)=>{var t=[],n={};function a(o){if(!n[o]&&!nr[o]){if(xr[o]){xr[o].forEach(a);return}t.push(o),n[o]=!0}}throw e.forEach(a),new wt(`${r}: `+t.map(yt).join([", "]))},ya=(r,e,t,n,a,o,s,u,l,f,d,v,m)=>{d=B(d),o=hr(a,o),u&&=hr(s,u),f&&=hr(l,f),m=hr(v,m);var p=da(d);la(p,function(){he(`Cannot construct ${d} due to unbound types`,[n])}),wr([r,e,t],n?[n]:[],_=>{_=_[0];var T,D;n?(T=_.registeredClass,D=T.instancePrototype):D=Nr.prototype;var P=Er(d,function(...C){if(Object.getPrototypeOf(this)!==W)throw new vr("Use 'new' to construct "+d);if(F.constructor_body===void 0)throw new vr(d+" has no accessible constructor");var tn=F.constructor_body[C.length];if(tn===void 0)throw new vr(`Tried to invoke ctor of ${d} with invalid number of parameters (${C.length}) - expected (${Object.keys(F.constructor_body).toString()}) parameters instead!`);return tn.apply(this,C)}),W=Object.create(D,{constructor:{value:P}});P.prototype=W;var F=new va(d,P,W,m,T,o,u,f);F.baseClass&&(F.baseClass.__derivedClasses??=[],F.baseClass.__derivedClasses.push(F));var ar=new Lr(d,F,!0,!1,!1),L=new Lr(d+"*",F,!1,!1,!1),J=new Lr(d+" const*",F,!1,!0,!1);return mt[r]={pointerType:L,constPointerType:J},ga(p,P),[ar,L,J]})},Et=(r,e)=>{for(var t=[],n=0;n>2]);return t},bt=r=>{for(;r.length;){var e=r.pop(),t=r.pop();t(e)}};function kt(r){for(var e=1;e{var s=Et(e,t);a=hr(n,a),wr([],[r],u=>{u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new vr(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{he(`Cannot construct ${u.name} due to unbound types`,s)},wr([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=$t(l,f,null,a,o),[])),[]})},ka=r=>{r=r.trim();let e=r.indexOf("(");return e!==-1?r.substr(0,e):r},Ta=(r,e,t,n,a,o,s,u,l,f)=>{var d=Et(t,n);e=B(e),e=ka(e),o=hr(a,o),wr([],[r],v=>{v=v[0];var m=`${v.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&v.registeredClass.pureVirtualFunctions.push(e);function p(){he(`Cannot call ${m} due to unbound types`,d)}var _=v.registeredClass.instancePrototype,T=_[e];return T===void 0||T.overloadTable===void 0&&T.className!==v.name&&T.argCount===t-2?(p.argCount=t-2,p.className=v.name,_[e]=p):(gt(_,e,m),_[e].overloadTable[t-2]=p),wr([],d,D=>{var P=$t(m,D,v,o,s,l);return _[e].overloadTable===void 0?(P.argCount=t-2,_[e]=P):_[e].overloadTable[t-2]=P,[]}),[]})},pe=[],K=[],me=r=>{r>9&&--K[r+1]===0&&(K[r]=void 0,pe.push(r))},$a=()=>K.length/2-5-pe.length,Aa=()=>{K.push(0,1,void 0,1,null,1,!0,1,!1,1),c.count_emval_handles=$a},A={toValue:r=>(r||E("Cannot use deleted val. handle = "+r),K[r]),toHandle:r=>{switch(r){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let e=pe.pop()||K.length;return K[e]=r,K[e+1]=1,e}}}},At={name:"emscripten::val",fromWireType:r=>{var e=A.toValue(r);return me(r),e},toWireType:(r,e)=>A.toHandle(e),argPackAdvance:X,readValueFromPointer:Br,destructorFunction:null},Pa=r=>G(r,At),Fa=(r,e)=>{switch(e){case 4:return function(t){return this.fromWireType(hn()[t>>2])};case 8:return function(t){return this.fromWireType(Kr()[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${r}`)}},Ca=(r,e,t)=>{e=B(e),G(r,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:X,readValueFromPointer:Fa(e,t),destructorFunction:null})},Sa=(r,e,t,n,a)=>{e=B(e),a===-1&&(a=4294967295);var o=d=>d;if(n===0){var s=32-8*t;o=d=>d<>>s}var u=e.includes("unsigned"),l=(d,v)=>{},f;u?f=function(d,v){return l(v,this.name),v>>>0}:f=function(d,v){return l(v,this.name),v},G(r,{name:e,fromWireType:o,toWireType:f,argPackAdvance:X,readValueFromPointer:dt(e,t,n!==0),destructorFunction:null})},Da=(r,e,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],a=n[e];function o(s){var u=w()[s>>2],l=w()[s+4>>2];return new a(O().buffer,l,u)}t=B(t),G(r,{name:t,fromWireType:o,argPackAdvance:X,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Ra=Object.assign({optional:!0},At),Ma=(r,e)=>{G(r,Ra)},br=(r,e,t)=>le(r,I(),e,t),Oa=(r,e)=>{e=B(e);var t=!0;G(r,{name:e,fromWireType(n){var a=w()[n>>2],o=n+4,s;if(t)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||I()[f]==0){var d=f-u,v=gr(u,d);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var m=new Array(a),l=0;l>2]=o,t&&s)br(a,l,o+1);else if(s)for(var f=0;f255&&(Q(u),E("String has UTF-16 code units that do not fit in 8 bits")),I()[l+f]=d}else for(var f=0;f{for(var t=r,n=t>>1,a=n+e/2;!(n>=a)&&Xr()[n];)++n;if(t=n<<1,t-r>32&&Pt)return Pt.decode(I().slice(r,t));for(var o="",s=0;!(s>=e/2);++s){var u=er()[r+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},xa=(r,e,t)=>{if(t??=2147483647,t<2)return 0;t-=2;for(var n=e,a=t>1]=s,e+=2}return er()[e>>1]=0,e-n},Ua=r=>r.length*2,Ia=(r,e)=>{for(var t=0,n="";!(t>=e/4);){var a=h()[r+t*4>>2];if(a==0)break;if(++t,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},ja=(r,e,t)=>{if(t??=2147483647,t<4)return 0;for(var n=e,a=n+t-4,o=0;o=55296&&s<=57343){var u=r.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(h()[e>>2]=s,e+=4,e+4>a)break}return h()[e>>2]=0,e-n},Na=r=>{for(var e=0,t=0;t=55296&&n<=57343&&++t,e+=4}return e},Ba=(r,e,t)=>{t=B(t);var n,a,o,s;e===2?(n=Wa,a=xa,s=Ua,o=u=>Xr()[u>>1]):e===4&&(n=Ia,a=ja,s=Na,o=u=>w()[u>>2]),G(r,{name:t,fromWireType:u=>{for(var l=w()[u>>2],f,d=u+4,v=0;v<=l;++v){var m=u+4+v*e;if(v==l||o(m)==0){var p=m-d,_=n(d,p);f===void 0?f=_:(f+="\0",f+=_),d=m+e}}return Q(u),f},toWireType:(u,l)=>{typeof l!="string"&&E(`Cannot pass non-string to C++ string type ${t}`);var f=s(l),d=be(4+f+e);return w()[d>>2]=f/e,a(l,d+4,f+e),u!==null&&u.push(Q,d),d},argPackAdvance:X,readValueFromPointer:Br,destructorFunction(u){Q(u)}})},La=(r,e)=>{e=B(e),G(r,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},Ha=r=>{ke(r,!or,1,!Ae,65536,!1),y.threadInitTLS()},za=()=>{if(!re())try{$?Te(sr):ne(sr)}catch(r){Ke(r)}},Ft=r=>{if(!Cr)try{r(),za()}catch(e){Ke(e)}},_e=r=>{if(typeof Atomics.waitAsync=="function"){var e=Atomics.waitAsync(h(),r>>2,r);e.value.then(Hr);var t=r+128;Atomics.store(h(),t>>2,1)}},Hr=()=>{var r=Gr();r&&(_e(r),Ft(Yt))},Va=(r,e)=>{if(r==e)setTimeout(Hr);else if($)postMessage({targetThread:r,cmd:"checkMailbox"});else{var t=y.pthreads[r];if(!t)return;t.postMessage({cmd:"checkMailbox"})}},zr=[],Ga=(r,e,t,n,a)=>{n/=2,zr.length=n;for(var o=a>>3,s=0;s{ie=!1,Dr=0},qa=r=>{$?postMessage({cmd:"cleanupThread",thread:r}):Xe(r)},Xa=r=>{},ge=(r,e)=>{var t=nr[r];return t===void 0&&E(`${e} has unknown type ${yt(r)}`),t},Ct=(r,e,t)=>{var n=[],a=r.toWireType(n,t);return n.length&&(w()[e>>2]=A.toHandle(n)),a},Ka=(r,e,t)=>(r=A.toValue(r),e=ge(e,"emval::as"),Ct(e,t,r)),Vr=[],Qa=(r,e,t,n)=>(r=Vr[r],e=A.toValue(e),r(null,e,t,n)),Ja={},we=r=>{var e=Ja[r];return e===void 0?B(r):e},Za=(r,e,t,n,a)=>(r=Vr[r],e=A.toValue(e),t=we(t),r(e,e[t],n,a)),St=()=>typeof globalThis=="object"?globalThis:function(){return Function}()("return this")(),ri=r=>r===0?A.toHandle(St()):(r=we(r),A.toHandle(St()[r])),ei=r=>{var e=Vr.length;return Vr.push(r),e},ti=(r,e)=>{for(var t=new Array(r),n=0;n>2],"parameter "+n);return t},Ki=Reflect.construct,ni=(r,e,t)=>{var n=ti(r,e),a=n.shift();r--;var o=`return function (obj, func, destructorsRef, args) { -`,s=0,u=[];t===0&&u.push("obj");for(var l=["retType"],f=[a],d=0;d_.name).join(", ")}) => ${a.name}>`;return ei(Er(p,m))},ai=(r,e)=>(r=A.toValue(r),e=A.toValue(e),A.toHandle(r[e])),ii=r=>{r>9&&(K[r+1]+=1)},oi=()=>A.toHandle([]),si=r=>A.toHandle(we(r)),ui=()=>A.toHandle({}),li=r=>{var e=A.toValue(r);bt(e),me(r)},fi=(r,e,t)=>{r=A.toValue(r),e=A.toValue(e),t=A.toValue(t),r[e]=t},ci=(r,e)=>{r=ge(r,"_emval_take_value");var t=r.readValueFromPointer(e);return A.toHandle(t)},di=r=>(r=A.toValue(r),A.toHandle(typeof r));function vi(r,e){r=ee(r);var t=new Date(r*1e3);h()[e>>2]=t.getUTCSeconds(),h()[e+4>>2]=t.getUTCMinutes(),h()[e+8>>2]=t.getUTCHours(),h()[e+12>>2]=t.getUTCDate(),h()[e+16>>2]=t.getUTCMonth(),h()[e+20>>2]=t.getUTCFullYear()-1900,h()[e+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),a=(t.getTime()-n)/(1e3*60*60*24)|0;h()[e+28>>2]=a}var hi=r=>r%4===0&&(r%100!==0||r%400===0),pi=[0,31,60,91,121,152,182,213,244,274,305,335],mi=[0,31,59,90,120,151,181,212,243,273,304,334],Dt=r=>{var e=hi(r.getFullYear()),t=e?pi:mi,n=t[r.getMonth()]+r.getDate()-1;return n};function _i(r,e){r=ee(r);var t=new Date(r*1e3);h()[e>>2]=t.getSeconds(),h()[e+4>>2]=t.getMinutes(),h()[e+8>>2]=t.getHours(),h()[e+12>>2]=t.getDate(),h()[e+16>>2]=t.getMonth(),h()[e+20>>2]=t.getFullYear()-1900,h()[e+24>>2]=t.getDay();var n=Dt(t)|0;h()[e+28>>2]=n,h()[e+36>>2]=-(t.getTimezoneOffset()*60);var a=new Date(t.getFullYear(),0,1),o=new Date(t.getFullYear(),6,1).getTimezoneOffset(),s=a.getTimezoneOffset(),u=(o!=s&&t.getTimezoneOffset()==Math.min(s,o))|0;h()[e+32>>2]=u}var gi=function(r){var e=(()=>{var t=new Date(h()[r+20>>2]+1900,h()[r+16>>2],h()[r+12>>2],h()[r+8>>2],h()[r+4>>2],h()[r>>2],0),n=h()[r+32>>2],a=t.getTimezoneOffset(),o=new Date(t.getFullYear(),0,1),s=new Date(t.getFullYear(),6,1).getTimezoneOffset(),u=o.getTimezoneOffset(),l=Math.min(u,s);if(n<0)h()[r+32>>2]=+(s!=u&&l==a);else if(n>0!=(l==a)){var f=Math.max(u,s),d=n>0?l:f;t.setTime(t.getTime()+(d-a)*6e4)}h()[r+24>>2]=t.getDay();var v=Dt(t)|0;h()[r+28>>2]=v,h()[r>>2]=t.getSeconds(),h()[r+4>>2]=t.getMinutes(),h()[r+8>>2]=t.getHours(),h()[r+12>>2]=t.getDate(),h()[r+16>>2]=t.getMonth(),h()[r+20>>2]=t.getYear();var m=t.getTime();return isNaN(m)?-1:m/1e3})();return BigInt(e)},kr={},Rt=()=>performance.timeOrigin+performance.now();function Mt(r,e){if($)return x(7,0,1,r,e);if(kr[r]&&(clearTimeout(kr[r].id),delete kr[r]),!e)return 0;var t=setTimeout(()=>{delete kr[r],Ft(()=>Gt(r,Rt()))},e);return kr[r]={id:t,timeout_ms:e},0}var wi=(r,e,t,n)=>{var a=new Date().getFullYear(),o=new Date(a,0,1),s=new Date(a,6,1),u=o.getTimezoneOffset(),l=s.getTimezoneOffset(),f=Math.max(u,l);w()[r>>2]=f*60,h()[e>>2]=+(u!=l);var d=p=>{var _=p>=0?"-":"+",T=Math.abs(p),D=String(Math.floor(T/60)).padStart(2,"0"),P=String(T%60).padStart(2,"0");return`UTC${_}${D}${P}`},v=d(u),m=d(l);lDate.now(),ye=r=>{ye.shown||={},ye.shown[r]||(ye.shown[r]=1,R(r))},Ei=()=>{},bi=()=>{Dr+=1},ki=()=>{throw bi(),"unwind"},Ti=()=>2147483648,$i=r=>{var e=M.buffer,t=(r-e.byteLength+65535)/65536|0;try{return M.grow(t),H(),1}catch{}},Ai=r=>{var e=I().length;if(r>>>=0,r<=e)return!1;var t=Ti();if(r>t)return!1;for(var n=1;n<=4;n*=2){var a=e*(1+.2/n);a=Math.min(a,r+100663296);var o=Math.min(t,Hn(Math.max(r,a),65536)),s=$i(o);if(s)return!0}return!1},Ee={},Pi=()=>Fe||"./this.program",Tr=()=>{if(!Tr.strings){var r=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:r,_:Pi()};for(var t in Ee)Ee[t]===void 0?delete e[t]:e[t]=Ee[t];var n=[];for(var t in e)n.push(`${t}=${e[t]}`);Tr.strings=n}return Tr.strings},Fi=(r,e)=>{for(var t=0;t{var o=e+t;w()[r+a*4>>2]=o,Fi(n,o),t+=n.length+1}),0},Wt=function(r,e){if($)return x(9,0,1,r,e);var t=Tr();w()[r>>2]=t.length;var n=0;return t.forEach(a=>n+=a.length+1),w()[e>>2]=n,0};function xt(r){if($)return x(10,0,1,r);try{var e=S.getStreamFromFD(r);return i.close(e),0}catch(t){if(typeof i>"u"||t.name!=="ErrnoError")throw t;return t.errno}}var Ci=(r,e,t,n)=>{for(var a=0,o=0;o>2],u=w()[e+4>>2];e+=8;var l=i.read(r,O(),s,u,n);if(l<0)return-1;if(a+=l,l>2]=o,0}catch(s){if(typeof i>"u"||s.name!=="ErrnoError")throw s;return s.errno}}function It(r,e,t,n){if($)return x(12,0,1,r,e,t,n);e=ee(e);try{if(isNaN(e))return 61;var a=S.getStreamFromFD(r);return i.llseek(a,e,t),U[n>>3]=BigInt(a.position),a.getdents&&e===0&&t===0&&(a.getdents=null),0}catch(o){if(typeof i>"u"||o.name!=="ErrnoError")throw o;return o.errno}}var Si=(r,e,t,n)=>{for(var a=0,o=0;o>2],u=w()[e+4>>2];e+=8;var l=i.write(r,O(),s,u,n);if(l<0)return-1;if(a+=l,l>2]=o,0}catch(s){if(typeof i>"u"||s.name!=="ErrnoError")throw s;return s.errno}}y.init(),i.createPreloadedFile=qn,i.staticInit(),g.doesNotExistError=new i.ErrnoError(44),g.doesNotExistError.stack="",Qn(),vr=c.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},ct=c.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},ua(),_a(),wt=c.UnboundTypeError=wa(Error,"UnboundTypeError"),Aa();var Di=[te,Qe,it,ot,st,ut,lt,Mt,Ot,Wt,xt,Ut,It,jt],Nt;function Ri(){Nt={f:On,R:xn,c:In,m:jn,e:Nn,l:Un,A:it,ia:ot,ja:st,V:ut,W:lt,S:Kn,D:Zn,qa:ra,E:ya,B:ba,s:Ta,oa:Pa,C:Ca,r:Sa,p:Da,wa:Ma,pa:Oa,w:Ba,ra:La,da:Ha,U:Va,Y:Ga,O:Ya,Q:qa,ca:_e,la:Xa,J:Ka,sa:Qa,F:Za,M:me,H:ri,y:ni,K:ai,G:ii,ta:oi,n:si,x:ui,va:li,ua:fi,q:ci,I:di,Z:vi,_:_i,$:gi,P:Mt,aa:wi,X:Ei,ma:yi,ka:ki,t:Rt,T:Ai,ea:Ot,fa:Wt,na:ne,z:xt,ha:Ut,ba:It,ga:jt,k:Ii,L:Vi,j:Hi,i:Wi,h:xi,v:zi,o:Li,d:ji,u:Ni,g:Bi,b:Ui,a:M,N:te}}var b=await $n(),Mi=()=>(Mi=b.xa)(),Bt=r=>(Bt=b.ya)(r),Lt=()=>(Lt=b.za)(),Gr=()=>(Gr=b.Aa)(),be=r=>(be=b.Ba)(r),Q=r=>(Q=b.Ca)(r),Oi=()=>(Oi=b.Ea)(),ke=(r,e,t,n,a,o)=>(ke=b.Fa)(r,e,t,n,a,o),Ht=()=>(Ht=b.Ga)(),zt=(r,e,t,n,a)=>(zt=b.Ha)(r,e,t,n,a),Vt=r=>(Vt=b.Ia)(r),Te=r=>(Te=b.Ja)(r),Gt=(r,e)=>(Gt=b.Ka)(r,e),Yt=()=>(Yt=b.La)(),V=(r,e)=>(V=b.Ma)(r,e),qt=r=>(qt=b.Na)(r),Xt=(r,e)=>(Xt=b.Oa)(r,e),Kt=r=>(Kt=b.Pa)(r),Qt=r=>(Qt=b.Qa)(r),Jt=()=>(Jt=b.Ra)(),Zt=r=>(Zt=b.Sa)(r),rn=(r,e,t)=>(rn=b.Ta)(r,e,t),en=r=>(en=b.Ua)(r);function Wi(r,e){var t=z();try{return N(r)(e)}catch(n){if(j(t),n!==n+0)throw n;V(1,0)}}function xi(r,e,t){var n=z();try{return N(r)(e,t)}catch(a){if(j(n),a!==a+0)throw a;V(1,0)}}function Ui(r,e,t,n,a){var o=z();try{N(r)(e,t,n,a)}catch(s){if(j(o),s!==s+0)throw s;V(1,0)}}function Ii(r,e,t,n){var a=z();try{return N(r)(e,t,n)}catch(o){if(j(a),o!==o+0)throw o;V(1,0)}}function ji(r,e){var t=z();try{N(r)(e)}catch(n){if(j(t),n!==n+0)throw n;V(1,0)}}function Ni(r,e,t){var n=z();try{N(r)(e,t)}catch(a){if(j(n),a!==a+0)throw a;V(1,0)}}function Bi(r,e,t,n){var a=z();try{N(r)(e,t,n)}catch(o){if(j(a),o!==o+0)throw o;V(1,0)}}function Li(r){var e=z();try{N(r)()}catch(t){if(j(e),t!==t+0)throw t;V(1,0)}}function Hi(r){var e=z();try{return N(r)()}catch(t){if(j(e),t!==t+0)throw t;V(1,0)}}function zi(r,e,t,n){var a=z();try{return N(r)(e,t,n)}catch(o){if(j(a),o!==o+0)throw o;V(1,0)}}function Vi(r,e,t,n,a,o){var s=z();try{return N(r)(e,t,n,a,o)}catch(u){if(j(s),u!==u+0)throw u;V(1,0)}}function $e(){if(tr>0){mr=$e;return}if($){Z(c),ze();return}if(mn(),tr>0){mr=$e;return}function r(){c.calledRun=!0,!Cr&&(ze(),Z(c),c.onRuntimeInitialized?.(),_n())}c.setStatus?(c.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>c.setStatus(""),1),r()},1)):r()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return $e(),$r=ln,$r}})(),an=nn,Gi=globalThis.self?.name?.startsWith("em-pthread");Gi&&nn();var sn,on,un;async function Yi(){sn=(async()=>{on=(await an()).LibRaw,un=new on})()}Yi();self.onmessage=async pr=>{let{fn:Yr,args:$r}=pr.data;try{await sn;let c=un[Yr](...$r);self.postMessage({out:c},(Array.isArray(c)?c:typeof c=="object"?Object.values(c):[]).map(Z=>{if([ArrayBuffer,Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array].some(ir=>Z instanceof ir))return Z.buffer}).filter(Z=>Z))}catch(c){self.postMessage({error:c.message})}}; -//# sourceMappingURL=worker.js.map diff --git a/dist/worker.js.map b/dist/worker.js.map deleted file mode 100644 index bc40774..0000000 --- a/dist/worker.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../libraw.js", "../worker.js"], - "sourcesContent": ["var Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nasync function(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!=\"undefined\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\"&&process.type!=\"renderer\";var ENVIRONMENT_IS_PTHREAD=ENVIRONMENT_IS_WORKER&&self.name?.startsWith(\"em-pthread\");var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];var wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}if(ENVIRONMENT_IS_PTHREAD){var wasmModuleReceived;var initializedJS=false;function threadPrintErr(...args){var text=args.join(\" \");console.error(text)}if(!Module[\"printErr\"])err=threadPrintErr;function threadAlert(...args){var text=args.join(\" \");postMessage({cmd:\"alert\",text,threadId:_pthread_self()})}self.alert=threadAlert;self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{var msgData=e[\"data\"];var cmd=msgData.cmd;if(cmd===\"load\"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{postMessage({cmd:\"loaded\"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};for(const handler of msgData.handlers){if(!Module[handler]||Module[handler].proxy){Module[handler]=(...args)=>{postMessage({cmd:\"callHandler\",handler,args})};if(handler==\"print\")out=Module[handler];if(handler==\"printErr\")err=Module[handler]}}wasmMemory=msgData.wasmMemory;updateMemoryViews();wasmModuleReceived(msgData.wasmModule)}else if(cmd===\"run\"){establishStackSpace(msgData.pthread_ptr);__emscripten_thread_init(msgData.pthread_ptr,0,0,1,0,0);PThread.receiveObjectTransfer(msgData);PThread.threadInitTLS();__emscripten_thread_mailbox_await(msgData.pthread_ptr);if(!initializedJS){__embind_initialize_bindings();initializedJS=true}try{invokeEntryPoint(msgData.start_routine,msgData.arg)}catch(ex){if(ex!=\"unwind\"){throw ex}}}else if(msgData.target===\"setimmediate\"){}else if(cmd===\"checkMailbox\"){if(initializedJS){checkMailbox()}}else if(cmd){err(`worker: received unknown command ${cmd}`);err(msgData)}}catch(ex){__emscripten_thread_crashed();throw ex}}self.onmessage=handleMessage}function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b);Module[\"HEAP64\"]=HEAP64=new BigInt64Array(b);Module[\"HEAPU64\"]=HEAPU64=new BigUint64Array(b)}if(!ENVIRONMENT_IS_PTHREAD){if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||268435456;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true})}updateMemoryViews()}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return startWorker(Module);if(!Module[\"noFSInit\"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"libraw.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"libraw.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){assignWasmImports();return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;registerTLSInit(wasmExports[\"Ea\"]);wasmTable=wasmExports[\"Da\"];addOnInit(wasmExports[\"xa\"]);wasmModule=module;removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"],result[\"module\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(ENVIRONMENT_IS_PTHREAD){return new Promise(resolve=>{wasmModuleReceived=module=>{var instance=new WebAssembly.Instance(module,getWasmImports());resolve(receiveInstance(instance,module))}})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={cmd:\"run\",start_routine:threadParams.startRoutine,arg:threadParams.arg,pthread_ptr:threadParams.pthread_ptr};worker.postMessage(msg,threadParams.transferList);return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);var proxyToMainThread=(funcIndex,emAsmAddr,sync,...callArgs)=>{var serializedNumCallArgs=callArgs.length*2;var sp=stackSave();var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,0,returnCode);_exit(returnCode)}var exitJS=(status,implicit)=>{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw\"unwind\"}_proc_exit(status)};var _exit=exitJS;var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(!ENVIRONMENT_IS_PTHREAD){PThread.initMainThread()}},initMainThread(){addOnPreRun(()=>{addRunDependency(\"loading-workers\");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency(\"loading-workers\"))})},terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads={}},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e[\"data\"];var cmd=d.cmd;if(d.targetThread&&d.targetThread!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d.transferList)}else{err(`Internal error! Worker sent a message \"${cmd}\" to target pthread ${d.targetThread}, but that thread no longer exists!`)}return}if(cmd===\"checkMailbox\"){checkMailbox()}else if(cmd===\"spawnThread\"){spawnThread(d)}else if(cmd===\"cleanupThread\"){cleanupThread(d.thread)}else if(cmd===\"loaded\"){worker.loaded=true;onFinishedLoading(worker)}else if(cmd===\"alert\"){alert(`Thread ${d.threadId}: ${d.text}`)}else if(d.target===\"setimmediate\"){worker.postMessage(d)}else if(cmd===\"callHandler\"){Module[d.handler](...d.args)}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message=\"worker sent an error!\";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};var handlers=[];var knownHandlers=[\"onExit\",\"onAbort\",\"print\",\"printErr\"];for(var handler of knownHandlers){if(Module.propertyIsEnumerable(handler)){handlers.push(handler)}}worker.postMessage({cmd:\"load\",handlers,wasmMemory,wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){onMaybeReady()},allocateUnusedWorker(){var worker;worker=new Worker(new URL(\"libraw.js\",import.meta.url),{type:\"module\",name:\"em-pthread\"});PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=pthread_ptr=>{updateMemoryViews();var stackHigh=GROWABLE_HEAP_U32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_U32()[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{runtimeKeepaliveCounter=0;noExitRuntime=0;var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){EXITSTATUS=result}else{__emscripten_thread_exit(result)}}finish(result)};var noExitRuntime=Module[\"noExitRuntime\"]||true;var registerTLSInit=tlsInitFunc=>PThread.tlsInitFunctions.push(tlsInitFunc);var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof ArrayBuffer?heapOrArray.subarray(idx,endPtr):heapOrArray.slice(idx,endPtr))}var str=\"\";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\";var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"]);var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(ptr);return ___cxa_get_exception_ptr(ptr)};var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var syscallGetVarargI=()=>{var ret=GROWABLE_HEAP_I32()[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>path&&path.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>view=>view.set(crypto.getRandomValues(new Uint8Array(view.byteLength)));var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of[\"mode\",\"atime\",\"mtime\",\"ctime\"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[\".\",\"..\",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url).then(processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{name=\"ErrnoError\";constructor(errno){this.errno=errno}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+\"/\"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name===\".\"||name===\"..\"){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},\"/proc/self/fd\")},createStandardStreams(input,output,error){if(input){FS.createDevice(\"/dev\",\"stdin\",input)}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(output){FS.createDevice(\"/dev\",\"stdout\",null,output)}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(error){FS.createDevice(\"/dev\",\"stderr\",null,error)}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module[\"stdin\"];output??=Module[\"stdout\"];error??=Module[\"stderr\"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+\"/\"+path},writeStat(buf,stat){GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+8>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+12>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+16>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);GROWABLE_HEAP_I32()[buf+32>>2]=4096;GROWABLE_HEAP_I32()[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));GROWABLE_HEAP_U32()[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));GROWABLE_HEAP_U32()[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));GROWABLE_HEAP_U32()[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){GROWABLE_HEAP_I32()[buf+4>>2]=stats.bsize;GROWABLE_HEAP_I32()[buf+40>>2]=stats.bsize;GROWABLE_HEAP_I32()[buf+8>>2]=stats.blocks;GROWABLE_HEAP_I32()[buf+12>>2]=stats.bfree;GROWABLE_HEAP_I32()[buf+16>>2]=stats.bavail;GROWABLE_HEAP_I32()[buf+20>>2]=stats.files;GROWABLE_HEAP_I32()[buf+24>>2]=stats.ffree;GROWABLE_HEAP_I32()[buf+28>>2]=stats.fsid;GROWABLE_HEAP_I32()[buf+44>>2]=stats.flags;GROWABLE_HEAP_I32()[buf+36>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,0,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();GROWABLE_HEAP_I32()[argp>>2]=termios.c_iflag||0;GROWABLE_HEAP_I32()[argp+4>>2]=termios.c_oflag||0;GROWABLE_HEAP_I32()[argp+8>>2]=termios.c_cflag||0;GROWABLE_HEAP_I32()[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){GROWABLE_HEAP_I8()[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=GROWABLE_HEAP_I32()[argp>>2];var c_oflag=GROWABLE_HEAP_I32()[argp+4>>2];var c_cflag=GROWABLE_HEAP_I32()[argp+8>>2];var c_lflag=GROWABLE_HEAP_I32()[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(GROWABLE_HEAP_I8()[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();GROWABLE_HEAP_I16()[argp>>1]=winsize[0];GROWABLE_HEAP_I16()[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,0,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_rmdir(path){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,0,1,path);try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,0,1,dirfd,path,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort(\"Invalid flags passed to unlinkat\")}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var __abort_js=()=>abort(\"\");var embindRepr=v=>{if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret=\"\";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf(\"u\")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!=\"bigint\"&&typeof value!=\"number\"){throw new TypeError(`Cannot convert \"${embindRepr(value)}\" to ${this.name}`)}if(typeof value==\"number\"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}};var delayFunction;var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,\"name\",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle[\"delete\"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistent public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([\", \"]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf(\"(\");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module[\"count_emval_handles\"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:\"emscripten::val\",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this[\"fromWireType\"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(base);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value==\"string\")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync===\"function\"){var wait=Atomics.waitAsync(GROWABLE_HEAP_I32(),pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(GROWABLE_HEAP_I32(),waitingAsync>>2,1)}};var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(__emscripten_check_mailbox)}};var __emscripten_notify_mailbox_postmessage=(targetThread,currThreadId)=>{if(targetThread==currThreadId){setTimeout(checkMailbox)}else if(ENVIRONMENT_IS_PTHREAD){postMessage({targetThread,cmd:\"checkMailbox\"})}else{var worker=PThread.pthreads[targetThread];if(!worker){return}worker.postMessage({cmd:\"checkMailbox\"})}};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(funcIndex,emAsmAddr,callingThread,numCallArgs,args)=>{numCallArgs/=2;proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{noExitRuntime=false;runtimeKeepaliveCounter=0};var __emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({cmd:\"cleanupThread\",thread})};var __emscripten_thread_set_strongref=thread=>{};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType[\"toWireType\"](destructors,handle);if(destructors.length){GROWABLE_HEAP_U32()[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");return emval_returnValue(returnType,destructorsRef,handle)};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var emval_get_global=()=>{if(typeof globalThis==\"object\"){return globalThis}return function(){return Function}()(\"return this\")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],\"parameter \"+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\\n`;var offset=0;var argsList=[];if(kind===0){argsList.push(\"obj\")}var params=[\"retType\"];var args=[retType];for(var i=0;it.name).join(\", \")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_new_array=()=>Emval.toHandle([]);var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](arg);return Emval.toHandle(v)};var __emval_typeof=handle=>{handle=Emval.toValue(handle);return Emval.toHandle(typeof handle)};function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);GROWABLE_HEAP_I32()[tmPtr>>2]=date.getUTCSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getUTCMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getUTCHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getUTCDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getUTCMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getUTCFullYear()-1900;GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);GROWABLE_HEAP_I32()[tmPtr>>2]=date.getSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getFullYear()-1900;GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday;GROWABLE_HEAP_I32()[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;GROWABLE_HEAP_I32()[tmPtr+32>>2]=dst}var __mktime_js=function(tmPtr){var ret=(()=>{var date=new Date(GROWABLE_HEAP_I32()[tmPtr+20>>2]+1900,GROWABLE_HEAP_I32()[tmPtr+16>>2],GROWABLE_HEAP_I32()[tmPtr+12>>2],GROWABLE_HEAP_I32()[tmPtr+8>>2],GROWABLE_HEAP_I32()[tmPtr+4>>2],GROWABLE_HEAP_I32()[tmPtr>>2],0);var dst=GROWABLE_HEAP_I32()[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){GROWABLE_HEAP_I32()[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday;GROWABLE_HEAP_I32()[tmPtr>>2]=date.getSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getYear();var timeMs=date.getTime();if(isNaN(timeMs)){return-1}return timeMs/1e3})();return BigInt(ret)};var timers={};var _emscripten_get_now=()=>performance.timeOrigin+performance.now();function __setitimer_js(which,timeout_ms){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,0,1,which,timeout_ms);if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?\"-\":\"+\";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,\"0\");var minutes=String(absOffset%60).padStart(2,\"0\");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetDate.now();var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw\"unwind\"};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,0,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,0,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(12,0,1,fd,offset,whence,newOffset);offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}PThread.init();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=\"\";embind_init_charCodes();BindingError=Module[\"BindingError\"]=class BindingError extends Error{constructor(message){super(message);this.name=\"BindingError\"}};InternalError=Module[\"InternalError\"]=class InternalError extends Error{constructor(message){super(message);this.name=\"InternalError\"}};init_ClassHandle();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var proxiedFunctionTable=[_proc_exit,exitOnMainThread,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,___syscall_rmdir,___syscall_unlinkat,__setitimer_js,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var wasmImports;function assignWasmImports(){wasmImports={f:___assert_fail,R:___cxa_begin_catch,c:___cxa_find_matching_catch_2,m:___cxa_find_matching_catch_3,e:___cxa_throw,l:___resumeException,A:___syscall_fcntl64,ia:___syscall_ioctl,ja:___syscall_openat,V:___syscall_rmdir,W:___syscall_unlinkat,S:__abort_js,D:__embind_register_bigint,qa:__embind_register_bool,E:__embind_register_class,B:__embind_register_class_constructor,s:__embind_register_class_function,oa:__embind_register_emval,C:__embind_register_float,r:__embind_register_integer,p:__embind_register_memory_view,wa:__embind_register_optional,pa:__embind_register_std_string,w:__embind_register_std_wstring,ra:__embind_register_void,da:__emscripten_init_main_thread_js,U:__emscripten_notify_mailbox_postmessage,Y:__emscripten_receive_on_main_thread_js,O:__emscripten_runtime_keepalive_clear,Q:__emscripten_thread_cleanup,ca:__emscripten_thread_mailbox_await,la:__emscripten_thread_set_strongref,J:__emval_as,sa:__emval_call,F:__emval_call_method,M:__emval_decref,H:__emval_get_global,y:__emval_get_method_caller,K:__emval_get_property,G:__emval_incref,ta:__emval_new_array,n:__emval_new_cstring,x:__emval_new_object,va:__emval_run_destructors,ua:__emval_set_property,q:__emval_take_value,I:__emval_typeof,Z:__gmtime_js,_:__localtime_js,$:__mktime_js,P:__setitimer_js,aa:__tzset_js,X:_emscripten_check_blocking_allowed,ma:_emscripten_date_now,ka:_emscripten_exit_with_live_runtime,t:_emscripten_get_now,T:_emscripten_resize_heap,ea:_environ_get,fa:_environ_sizes_get,na:_exit,z:_fd_close,ha:_fd_read,ba:_fd_seek,ga:_fd_write,k:invoke_diii,L:invoke_diiiii,j:invoke_i,i:invoke_ii,h:invoke_iii,v:invoke_iiii,o:invoke_v,d:invoke_vi,u:invoke_vii,g:invoke_viii,b:invoke_viiii,a:wasmMemory,N:_proc_exit}}var wasmExports=await createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"xa\"])();var ___getTypeName=a0=>(___getTypeName=wasmExports[\"ya\"])(a0);var __embind_initialize_bindings=()=>(__embind_initialize_bindings=wasmExports[\"za\"])();var _pthread_self=()=>(_pthread_self=wasmExports[\"Aa\"])();var _malloc=a0=>(_malloc=wasmExports[\"Ba\"])(a0);var _free=a0=>(_free=wasmExports[\"Ca\"])(a0);var __emscripten_tls_init=()=>(__emscripten_tls_init=wasmExports[\"Ea\"])();var __emscripten_thread_init=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=wasmExports[\"Fa\"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=()=>(__emscripten_thread_crashed=wasmExports[\"Ga\"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3,a4)=>(__emscripten_run_on_main_thread_js=wasmExports[\"Ha\"])(a0,a1,a2,a3,a4);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports[\"Ia\"])(a0);var __emscripten_thread_exit=a0=>(__emscripten_thread_exit=wasmExports[\"Ja\"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports[\"Ka\"])(a0,a1);var __emscripten_check_mailbox=()=>(__emscripten_check_mailbox=wasmExports[\"La\"])();var _setThrew=(a0,a1)=>(_setThrew=wasmExports[\"Ma\"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports[\"Na\"])(a0);var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports[\"Oa\"])(a0,a1);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"Pa\"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports[\"Qa\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"Ra\"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports[\"Sa\"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports[\"Ta\"])(a0,a1,a2);var ___cxa_get_exception_ptr=a0=>(___cxa_get_exception_ptr=wasmExports[\"Ua\"])(a0);function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=>{setTimeout(()=>Module[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\nvar isPthread = globalThis.self?.name?.startsWith('em-pthread');\n// When running as a pthread, construct a new instance on startup\nisPthread && Module();\n", "import LibRawModule from './libraw.js';\n\nlet ready;\nlet LibRawClass;\nlet raw;\n\nasync function initLibRaw() {\n\tready = (async ()=>{\n\t\tconst module = await LibRawModule();\n\t\tLibRawClass = module.LibRaw;\n\t\traw = new LibRawClass();\n\t})();\n}\n\ninitLibRaw();\n\nself.onmessage = async (event) => {\n const { fn, args } = event.data;\n try {\n\tawait ready;\n let out = raw[fn](...args);\n self.postMessage({out}, (Array.isArray(out)?out:(typeof out=='object'?Object.values(out):[])).map(a=>{\n\t\tif([ArrayBuffer, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array].some(b=>a instanceof b)) { // Transfer buffer\n\t\t\treturn a.buffer;\n\t\t}\n\t}).filter(a=>a));\n } catch (err) {\n self.postMessage({ error: err.message });\n }\n};"], - "mappings": "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", - "names": ["Module", "_scriptName", "moduleArg", "moduleRtn", "readyPromiseResolve", "readyPromiseReject", "readyPromise", "resolve", "reject", "ENVIRONMENT_IS_WEB", "ENVIRONMENT_IS_WORKER", "ENVIRONMENT_IS_NODE", "ENVIRONMENT_IS_PTHREAD", "moduleOverrides", "arguments_", "thisProgram", "quit_", "status", "toThrow", "scriptDirectory", "locateFile", "path", "readAsync", "readBinary", "url", "xhr", "response", "out", "err", "wasmBinary", "wasmMemory", "wasmModule", "ABORT", "EXITSTATUS", "HEAP8", "HEAPU8", "HEAP16", "HEAPU16", "HEAP32", "HEAPU32", "HEAPF32", "HEAP64", "HEAPU64", "HEAPF64", "runtimeInitialized", "dataURIPrefix", "isDataURI", "filename", "GROWABLE_HEAP_I8", "updateMemoryViews", "GROWABLE_HEAP_U8", "GROWABLE_HEAP_I16", "GROWABLE_HEAP_U16", "GROWABLE_HEAP_I32", "GROWABLE_HEAP_U32", "GROWABLE_HEAP_F32", "GROWABLE_HEAP_F64", "threadPrintErr", "args", "text", "threadAlert", "_pthread_self", "handleMessage", "e", "msgData", "cmd", "messageQueue", "instance", "msg", "handler", "wasmModuleReceived", "establishStackSpace", "__emscripten_thread_init", "PThread", "__emscripten_thread_mailbox_await", "initializedJS", "__embind_initialize_bindings", "invokeEntryPoint", "ex", "checkMailbox", "__emscripten_thread_crashed", "b", "INITIAL_MEMORY", "__ATPRERUN__", "__ATINIT__", "__ATPOSTRUN__", "preRun", "addOnPreRun", "callRuntimeCallbacks", "initRuntime", "FS", "TTY", "postRun", "addOnPostRun", "cb", "addOnInit", "runDependencies", "dependenciesFulfilled", "getUniqueRunDependency", "id", "addRunDependency", "removeRunDependency", "callback", "abort", "what", "wasmBinaryFile", "findWasmBinary", "f", "getBinarySync", "file", "getWasmBinary", "binaryFile", "instantiateArrayBuffer", "imports", "binary", "reason", "instantiateAsync", "instantiationResult", "getWasmImports", "assignWasmImports", "wasmImports", "createWasm", "receiveInstance", "module", "wasmExports", "registerTLSInit", "wasmTable", "receiveInstantiationResult", "result", "info", "exports", "ExitStatus", "terminateWorker", "worker", "cleanupThread", "pthread_ptr", "spawnThread", "threadParams", "runtimeKeepaliveCounter", "keepRuntimeAlive", "noExitRuntime", "stackSave", "_emscripten_stack_get_current", "stackRestore", "val", "__emscripten_stack_restore", "stackAlloc", "sz", "__emscripten_stack_alloc", "INT53_MAX", "INT53_MIN", "bigintToI53Checked", "num", "proxyToMainThread", "funcIndex", "emAsmAddr", "sync", "callArgs", "serializedNumCallArgs", "sp", "i", "arg", "rtn", "__emscripten_run_on_main_thread_js", "_proc_exit", "code", "handleException", "exitOnMainThread", "returnCode", "_exit", "exitJS", "implicit", "__emscripten_thread_free_data", "data", "onFinishedLoading", "d", "targetWorker", "message", "handlers", "knownHandlers", "onMaybeReady", "callbacks", "stackHigh", "stackSize", "stackLow", "_emscripten_stack_set_limits", "wasmTableMirror", "getWasmTableEntry", "funcPtr", "func", "ptr", "finish", "__emscripten_thread_exit", "tlsInitFunc", "UTF8Decoder", "UTF8ArrayToString", "heapOrArray", "idx", "maxBytesToRead", "endIdx", "endPtr", "str", "u0", "u1", "u2", "ch", "UTF8ToString", "___assert_fail", "condition", "line", "exceptionCaught", "uncaughtExceptionCount", "___cxa_begin_catch", "ExceptionInfo", "___cxa_increment_exception_refcount", "___cxa_get_exception_ptr", "exceptionLast", "excPtr", "type", "destructor", "caught", "rethrown", "adjustedPtr", "___resumeException", "setTempRet0", "__emscripten_tempret_set", "findMatchingCatch", "thrown", "thrownType", "caughtType", "adjusted_ptr_addr", "___cxa_can_catch", "___cxa_find_matching_catch_2", "___cxa_find_matching_catch_3", "arg0", "___cxa_throw", "syscallGetVarargI", "ret", "SYSCALLS", "syscallGetVarargP", "PATH", "splitPathRe", "parts", "allowAboveRoot", "up", "last", "isAbsolute", "trailingSlash", "p", "root", "dir", "paths", "l", "r", "initRandomFill", "view", "randomFill", "PATH_FS", "resolvedPath", "resolvedAbsolute", "from", "to", "trim", "arr", "start", "end", "fromParts", "toParts", "length", "samePartsLength", "outputParts", "FS_stdin_getChar_buffer", "lengthBytesUTF8", "len", "c", "stringToUTF8Array", "heap", "outIdx", "maxBytesToWrite", "startIdx", "intArrayFromString", "stringy", "dontAddNull", "u8array", "numBytesWritten", "FS_stdin_getChar", "dev", "ops", "stream", "tty", "buffer", "offset", "pos", "bytesRead", "optional_actions", "alignMemory", "size", "alignment", "mmapAlloc", "MEMFS", "mount", "parent", "name", "mode", "node", "newCapacity", "prevCapacity", "CAPACITY_DOUBLING_MAX", "oldContents", "newSize", "attr", "key", "old_node", "new_dir", "new_name", "new_node", "newname", "oldpath", "position", "contents", "canOwn", "whence", "prot", "flags", "allocated", "mmapFlags", "asyncLoad", "arrayBuffer", "FS_createDataFile", "fileData", "canRead", "canWrite", "preloadPlugins", "FS_handledByPreloadPlugin", "byteArray", "fullname", "onerror", "handled", "plugin", "FS_createPreloadedFile", "onload", "dontCreateFile", "preFinish", "dep", "processData", "FS_modeStringToFlags", "flagModes", "FS_getMode", "errno", "rdev", "opts", "linkloop", "nlinks", "current", "current_path", "islast", "link", "parentid", "hash", "errCode", "nodeName", "flag", "perms", "isdir", "op", "fd", "origStream", "device", "ma", "mi", "mounts", "check", "m", "populate", "completed", "doCallback", "done", "mountpoint", "pseudo", "lookup", "mountRoot", "next", "dirs", "newpath", "old_path", "new_path", "old_dirname", "new_dirname", "old_name", "old_dir", "relative", "readdir", "dontFollow", "getattr", "setattr", "uid", "gid", "atime", "mtime", "isDirPath", "created", "seeking", "bytesWritten", "stat", "buf", "actualNumBytes", "randomBuffer", "randomLeft", "randomByte", "proc_self", "k", "v", "input", "output", "error", "stdin", "stdout", "stderr", "dontResolveLastLink", "part", "properties", "obj", "LazyUint8Array", "chunkOffset", "chunkNum", "getter", "datalength", "header", "hasByteServing", "usesGzip", "chunkSize", "doXHR", "lazyArray", "stream_ops", "keys", "fn", "writeChunks", "dirfd", "allowEmpty", "dirstream", "ctime", "stats", "addr", "___syscall_fcntl64", "varargs", "newStream", "___syscall_ioctl", "termios", "argp", "c_iflag", "c_oflag", "c_cflag", "c_lflag", "c_cc", "winsize", "___syscall_openat", "___syscall_rmdir", "___syscall_unlinkat", "__abort_js", "embindRepr", "t", "embind_init_charCodes", "codes", "embind_charCodes", "readLatin1String", "awaitingDependencies", "registeredTypes", "typeDependencies", "BindingError", "throwBindingError", "InternalError", "throwInternalError", "whenDependentTypesAreResolved", "myTypes", "dependentTypes", "getTypeConverters", "onComplete", "typeConverters", "myTypeConverters", "registerType", "unregisteredTypes", "registered", "dt", "sharedRegisterType", "rawType", "registeredInstance", "options", "integerReadValueFromPointer", "width", "signed", "pointer", "__embind_register_bigint", "primitiveType", "minRange", "maxRange", "isUnsignedType", "value", "destructors", "GenericWireTypeSize", "__embind_register_bool", "trueValue", "falseValue", "wt", "shallowCopyInternalPointer", "o", "throwInstanceAlreadyDeleted", "getInstanceTypeName", "handle", "finalizationRegistry", "detachFinalizer", "runDestructor", "$$", "releaseClassHandle", "toDelete", "downcastPointer", "ptrClass", "desiredClass", "rv", "registeredPointers", "registeredInstances", "getBasestPointer", "class_", "getInheritedInstance", "makeClassHandle", "prototype", "record", "hasSmartPtrType", "hasSmartPtr", "attachFinalizer", "RegisteredPointer_fromWireType", "rawPointer", "makeDefaultHandle", "actualType", "registeredPointerRecord", "toType", "dp", "deletionQueue", "flushPendingDeletes", "delayFunction", "init_ClassHandle", "ClassHandle", "other", "leftClass", "left", "rightClass", "right", "clone", "createNamedFunction", "body", "ensureOverloadTable", "proto", "methodName", "humanName", "prevFunc", "exposePublicSymbol", "numArguments", "char_0", "char_9", "makeLegalFunctionName", "RegisteredClass", "constructor", "instancePrototype", "rawDestructor", "baseClass", "getActualType", "upcast", "downcast", "upcastPointer", "constNoSmartPtrRawPointerToWireType", "handleClass", "genericPointerToWireType", "clonedHandle", "Emval", "nonConstNoSmartPtrRawPointerToWireType", "readPointer", "init_RegisteredPointer", "RegisteredPointer", "registeredClass", "isReference", "isConst", "isSmartPointer", "pointeeType", "sharingPolicy", "rawGetPointee", "rawConstructor", "rawShare", "replacePublicSymbol", "embind__requireFunction", "signature", "rawFunction", "makeDynCaller", "fp", "extendError", "baseErrorType", "errorName", "errorClass", "stack", "UnboundTypeError", "getTypeName", "___getTypeName", "_free", "throwUnboundTypeError", "types", "unboundTypes", "seen", "visit", "__embind_register_class", "rawPointerType", "rawConstPointerType", "baseClassRawType", "getActualTypeSignature", "upcastSignature", "downcastSignature", "destructorSignature", "legalFunctionName", "base", "basePrototype", "referenceConverter", "pointerConverter", "constPointerConverter", "heap32VectorToArray", "count", "firstElement", "array", "runDestructors", "del", "usesDestructorStack", "argTypes", "newFunc", "argumentList", "dummy", "createJsInvoker", "isClassMethodFunc", "returns", "isAsync", "needsDestructorStack", "argCount", "argsList", "argsListWired", "invokerFnBody", "dtorStack", "args1", "paramName", "craftInvokerFunction", "classType", "cppInvokerFunc", "cppTargetFunc", "closureArgs", "invokerFn", "__embind_register_class_constructor", "rawClassType", "rawArgTypesAddr", "invokerSignature", "invoker", "rawArgTypes", "getFunctionName", "argsIndex", "__embind_register_class_function", "rawInvoker", "context", "isPureVirtual", "isNonnullReturn", "unboundTypesHandler", "method", "memberFunction", "emval_freelist", "emval_handles", "__emval_decref", "count_emval_handles", "init_emval", "EmValType", "__embind_register_emval", "floatReadValueFromPointer", "__embind_register_float", "__embind_register_integer", "fromWireType", "bitshift", "checkAssertions", "toTypeName", "toWireType", "__embind_register_memory_view", "dataTypeIndex", "typeMapping", "TA", "decodeMemoryView", "EmValOptionalType", "__embind_register_optional", "rawOptionalType", "stringToUTF8", "outPtr", "__embind_register_std_string", "stdStringIsUTF8", "payload", "decodeStartPtr", "currentBytePtr", "maxRead", "stringSegment", "a", "valueIsOfTypeString", "_malloc", "charCode", "UTF16Decoder", "UTF16ToString", "maxIdx", "codeUnit", "stringToUTF16", "startPtr", "numCharsToWrite", "lengthBytesUTF16", "UTF32ToString", "utf32", "stringToUTF32", "trailSurrogate", "lengthBytesUTF32", "__embind_register_std_wstring", "charSize", "decodeString", "encodeString", "readCharAt", "lengthBytesUTF", "maxReadBytes", "__embind_register_void", "__emscripten_init_main_thread_js", "tb", "maybeExit", "callUserCallback", "wait", "waitingAsync", "__emscripten_check_mailbox", "__emscripten_notify_mailbox_postmessage", "targetThread", "currThreadId", "proxiedJSCallArgs", "__emscripten_receive_on_main_thread_js", "callingThread", "numCallArgs", "proxiedFunctionTable", "__emscripten_runtime_keepalive_clear", "__emscripten_thread_cleanup", "thread", "__emscripten_thread_set_strongref", "requireRegisteredType", "impl", "emval_returnValue", "returnType", "destructorsRef", "__emval_as", "emval_methodCallers", "__emval_call", "caller", "emval_symbols", "getStringOrSymbol", "address", "symbol", "__emval_call_method", "objHandle", "emval_get_global", "__emval_get_global", "emval_addMethodCaller", "emval_lookupTypes", "reflectConstruct", "__emval_get_method_caller", "kind", "retType", "functionBody", "params", "invokerFunction", "functionName", "__emval_get_property", "__emval_incref", "__emval_new_array", "__emval_new_cstring", "__emval_new_object", "__emval_run_destructors", "__emval_set_property", "__emval_take_value", "__emval_typeof", "__gmtime_js", "time", "tmPtr", "date", "yday", "isLeapYear", "year", "MONTH_DAYS_LEAP_CUMULATIVE", "MONTH_DAYS_REGULAR_CUMULATIVE", "ydayFromDate", "leap", "monthDaysCumulative", "__localtime_js", "summerOffset", "winterOffset", "dst", "__mktime_js", "guessedOffset", "dstOffset", "nonDstOffset", "trueOffset", "timeMs", "timers", "_emscripten_get_now", "__setitimer_js", "which", "timeout_ms", "__emscripten_timeout", "__tzset_js", "timezone", "daylight", "std_name", "dst_name", "currentYear", "winter", "summer", "stdTimezoneOffset", "extractZone", "timezoneOffset", "sign", "absOffset", "hours", "minutes", "winterName", "summerName", "_emscripten_date_now", "warnOnce", "_emscripten_check_blocking_allowed", "runtimeKeepalivePush", "_emscripten_exit_with_live_runtime", "getHeapMax", "growMemory", "pages", "_emscripten_resize_heap", "requestedSize", "oldSize", "maxHeapSize", "cutDown", "overGrownHeapSize", "replacement", "ENV", "getExecutableName", "getEnvStrings", "lang", "env", "x", "strings", "stringToAscii", "_environ_get", "__environ", "environ_buf", "bufSize", "string", "_environ_sizes_get", "penviron_count", "penviron_buf_size", "_fd_close", "doReadv", "iov", "iovcnt", "curr", "_fd_read", "pnum", "_fd_seek", "newOffset", "doWritev", "_fd_write", "invoke_diii", "invoke_diiiii", "invoke_i", "invoke_ii", "invoke_iii", "invoke_iiii", "invoke_v", "invoke_vi", "invoke_vii", "invoke_viii", "invoke_viiii", "___wasm_call_ctors", "a0", "__emscripten_tls_init", "a1", "a2", "a3", "a4", "a5", "_setThrew", "index", "run", "doRun", "libraw_default", "isPthread", "ready", "LibRawClass", "raw", "initLibRaw", "libraw_default", "event", "fn", "args", "out", "a", "b", "err"] -} diff --git a/example.html b/example.html deleted file mode 100644 index eb59939..0000000 --- a/example.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - LibRaw Demo - - -

LibRaw WASM Demo

- - -

Select a RAW file above. Then open the browser console to see logs.

-

-
-		
-	
-
\ No newline at end of file
diff --git a/example-sony.ARW b/example/example-sony.ARW
similarity index 100%
rename from example-sony.ARW
rename to example/example-sony.ARW
diff --git a/example/index.html b/example/index.html
new file mode 100644
index 0000000..91bfd1c
--- /dev/null
+++ b/example/index.html
@@ -0,0 +1,100 @@
+
+
+
+
+	
+	LibRaw Demo
+
+
+
+	

LibRaw WASM Demo

+ + +

Select a RAW file above. Then open the browser console to see logs.

+

+
+	
+
+
+
\ No newline at end of file
diff --git a/includes/Makefile b/includes/Makefile
deleted file mode 100644
index 12ba016..0000000
--- a/includes/Makefile
+++ /dev/null
@@ -1,606 +0,0 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
-# include/Makefile.  Generated from Makefile.in by configure.
-
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-#
-# Makefile for include directory
-# Based on a work by Bob Friesenhahn
-
-
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-am__rm_f = rm -f $(am__rm_f_notfound)
-am__rm_rf = rm -rf $(am__rm_f_notfound)
-pkgdatadir = $(datadir)/lcms2
-pkgincludedir = $(includedir)/lcms2
-pkglibdir = $(libdir)/lcms2
-pkglibexecdir = $(libexecdir)/lcms2
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = aarch64-apple-darwin24.3.0
-host_triplet = wasm32-unknown-emscripten
-subdir = include
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-	$(top_srcdir)/m4/ax_append_flag.m4 \
-	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
-	$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
-	$(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/ax_require_defined.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_$(V))
-am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-  || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-       $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
-  }
-am__installdirs = "$(DESTDIR)$(includedir)"
-HEADERS = $(include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} '/Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/missing' aclocal-1.17
-AMTAR = $${TAR-tar}
-AM_DEFAULT_VERBOSITY = 1
-AR = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/emar
-AS = as
-AUTOCONF = ${SHELL} '/Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/missing' autoconf
-AUTOHEADER = ${SHELL} '/Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/missing' autoheader
-AUTOMAKE = ${SHELL} '/Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/missing' automake-1.17
-AWK = awk
-CC = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/emcc
-CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2 -fvisibility=hidden -pthread
-CPP = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/emcc -E
-CPPFLAGS = 
-CSCOPE = cscope
-CTAGS = ctags
-CXX = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/em++
-CXXCPP = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/em++ -E
-CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -g -O2 -pthread
-CYGPATH_W = echo
-DEFS = -DPACKAGE_NAME=\"lcms2\" -DPACKAGE_TARNAME=\"lcms2\" -DPACKAGE_VERSION=\"2.17\" -DPACKAGE_STRING=\"lcms2\ 2.17\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_FUNC_ATTRIBUTE_VISIBILITY=1 -DHAVE_GMTIME_R=1 -DHAVE_PTHREAD_PRIO_INHERIT=1 -DHAVE_PTHREAD=1 -DCMS_DONT_USE_SSE2=1 -DHasTHREADS=1 -DHasJPEG=1 -DHasZLIB=1
-DEPDIR = .deps
-DLLTOOL = false
-DSYMUTIL = 
-DUMPBIN = 
-ECHO_C = \c
-ECHO_N = 
-ECHO_T = 
-EGREP = /usr/bin/grep -E
-ETAGS = etags
-EXEEXT = 
-FGREP = /usr/bin/grep -F
-FILECMD = file
-GREP = /usr/bin/grep
-INSTALL = /opt/homebrew/bin/ginstall -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-JPEGICC_DEPLIBS = -ljpeg -lm -lpthread
-LCMS_LIB_DEPLIBS = -lm -lpthread
-LD = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/emcc
-LDFLAGS = 
-LIBOBJS = 
-LIBRARY_AGE = 0
-LIBRARY_CURRENT = 2
-LIBRARY_REVISION = 17
-LIBS = 
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBTOOL_DEPS = .//ltmain.sh
-LIB_JPEG = -ljpeg
-LIB_MATH = -lm
-LIB_PLUGINS = 
-LIB_THREAD = -lpthread
-LIB_TIFF = 
-LIB_ZLIB = -lz
-LIPO = 
-LN_S = ln -s
-LTLIBOBJS = 
-LT_SYS_LIBRARY_PATH = 
-MAINT = #
-MAKEINFO = ${SHELL} '/Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/missing' makeinfo
-MANIFEST_TOOL = :
-MKDIR_P = /opt/homebrew/bin/gmkdir -p
-NM = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/llvm/bin/llvm-nm
-NMEDIT = 
-OBJDUMP = objdump
-OBJEXT = o
-OTOOL = 
-OTOOL64 = 
-PACKAGE = lcms2
-PACKAGE_BUGREPORT = 
-PACKAGE_NAME = lcms2
-PACKAGE_STRING = lcms2 2.17
-PACKAGE_TARNAME = lcms2
-PACKAGE_URL = 
-PACKAGE_VERSION = 2.17
-PATH_SEPARATOR = :
-PTHREAD_CC = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/emcc
-PTHREAD_CFLAGS = -pthread
-PTHREAD_CXX = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/em++
-PTHREAD_LIBS = -lpthread
-RANLIB = /opt/homebrew/Cellar/emscripten/4.0.1/libexec/emranlib
-SED = /usr/bin/sed
-SET_MAKE = 
-SHELL = /bin/sh
-STRIP = strip
-TIFFICC_DEPLIBS = -ljpeg -lz -lm -lpthread
-VERSION = 2.17
-abs_builddir = /Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/include
-abs_srcdir = /Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/include
-abs_top_builddir = /Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2
-abs_top_srcdir = /Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2
-ac_ct_AR = 
-ac_ct_CC = 
-ac_ct_CXX = 
-ac_ct_DUMPBIN = 
-am__include = include
-am__leading_dot = .
-am__quote = 
-am__rm_f_notfound = 
-am__tar = tar --format=ustar -chf - "$$tardir"
-am__untar = tar -xf -
-am__xargs_n = xargs -n
-ax_pthread_config = 
-bindir = ${exec_prefix}/bin
-build = aarch64-apple-darwin24.3.0
-build_alias = 
-build_cpu = aarch64
-build_os = darwin24.3.0
-build_vendor = apple
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-host = wasm32-unknown-emscripten
-host_alias = wasm32-unknown-emscripten
-host_cpu = wasm32
-host_os = emscripten
-host_vendor = unknown
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-inline = 
-install_sh = ${SHELL} /Users/ybouane/Documents/Projects/SideProjects/libraw-wasm/lcms2/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = $(MKDIR_P)
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-runstatedir = ${localstatedir}/run
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias = 
-top_build_prefix = ../
-top_builddir = ..
-top_srcdir = ..
-include_HEADERS = lcms2.h lcms2_plugin.h
-EXTRA_DIST = lcms2.h lcms2_plugin.h
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign include/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: # $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool cscopelist-am ctags ctags-am distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-includeHEADERS install-info install-info-am \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-includeHEADERS
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# Tell GNU make to disable its built-in pattern rules.
-%:: %,v
-%:: RCS/%,v
-%:: RCS/%
-%:: s.%
-%:: SCCS/s.%
diff --git a/includes/Makefile.am b/includes/Makefile.am
deleted file mode 100644
index 7dbe0e4..0000000
--- a/includes/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# Makefile for include directory
-# Based on a work by Bob Friesenhahn
-
-include_HEADERS = lcms2.h lcms2_plugin.h
-
-EXTRA_DIST = lcms2.h lcms2_plugin.h
diff --git a/includes/Makefile.in b/includes/Makefile.in
deleted file mode 100644
index 08421f2..0000000
--- a/includes/Makefile.in
+++ /dev/null
@@ -1,606 +0,0 @@
-# Makefile.in generated by automake 1.17 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2024 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#
-# Makefile for include directory
-# Based on a work by Bob Friesenhahn
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-am__rm_f = rm -f $(am__rm_f_notfound)
-am__rm_rf = rm -rf $(am__rm_f_notfound)
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = include
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-	$(top_srcdir)/m4/ax_append_flag.m4 \
-	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
-	$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
-	$(top_srcdir)/m4/ax_pthread.m4 \
-	$(top_srcdir)/m4/ax_require_defined.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-  || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-       $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
-  }
-am__installdirs = "$(DESTDIR)$(includedir)"
-HEADERS = $(include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CSCOPE = @CSCOPE@
-CTAGS = @CTAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ETAGS = @ETAGS@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FILECMD = @FILECMD@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@
-LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBRARY_AGE = @LIBRARY_AGE@
-LIBRARY_CURRENT = @LIBRARY_CURRENT@
-LIBRARY_REVISION = @LIBRARY_REVISION@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_JPEG = @LIB_JPEG@
-LIB_MATH = @LIB_MATH@
-LIB_PLUGINS = @LIB_PLUGINS@
-LIB_THREAD = @LIB_THREAD@
-LIB_TIFF = @LIB_TIFF@
-LIB_ZLIB = @LIB_ZLIB@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_CXX = @PTHREAD_CXX@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__rm_f_notfound = @am__rm_f_notfound@
-am__tar = @am__tar@
-am__untar = @am__untar@
-am__xargs_n = @am__xargs_n@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-inline = @inline@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-include_HEADERS = lcms2.h lcms2_plugin.h
-EXTRA_DIST = lcms2.h lcms2_plugin.h
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign include/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool cscopelist-am ctags ctags-am distclean \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-includeHEADERS install-info install-info-am \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-includeHEADERS
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# Tell GNU make to disable its built-in pattern rules.
-%:: %,v
-%:: RCS/%,v
-%:: RCS/%
-%:: s.%
-%:: SCCS/s.%
diff --git a/includes/lcms2.h b/includes/lcms2.h
deleted file mode 100644
index 7196015..0000000
--- a/includes/lcms2.h
+++ /dev/null
@@ -1,1999 +0,0 @@
-//---------------------------------------------------------------------------------
-//
-//  Little Color Management System
-//  Copyright (c) 1998-2025 Marti Maria Saguer
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//---------------------------------------------------------------------------------
-//
-// Version 2.17
-//
-
-#ifndef _lcms2_H
-
-// ********** Configuration toggles ****************************************
-
-// Uncomment this one if you are using big endian machines
-// #define CMS_USE_BIG_ENDIAN   1
-
-// Uncomment this one if your compiler/machine does NOT support the
-// "long long" type.
-// #define CMS_DONT_USE_INT64        1
-
-// Uncomment this if your compiler doesn't work with fast floor function
-// #define CMS_DONT_USE_FAST_FLOOR 1
-
-// Uncomment this line if you want lcms to use the black point tag in profile,
-// if commented, lcms will compute the black point by its own.
-// It is safer to leave it commented out
-// #define CMS_USE_PROFILE_BLACK_POINT_TAG    1
-
-// Uncomment this line if you are compiling as C++ and want a C++ API
-// #define CMS_USE_CPP_API
-
-// Uncomment this line if you need strict CGATS syntax. Makes CGATS files to
-// require "KEYWORD" on undefined identifiers, keep it commented out unless needed
-// #define CMS_STRICT_CGATS  1
-
-// Uncomment to get rid of the tables for "half" float support
-// #define CMS_NO_HALF_SUPPORT 1
-
-// Uncomment to get rid of pthreads/windows dependency
-// #define CMS_NO_PTHREADS  1
-
-// Uncomment this for special windows mutex initialization (see lcms2_internal.h)
-// #define CMS_RELY_ON_WINDOWS_STATIC_MUTEX_INIT
-
-// Uncomment this to remove the "register" storage class
-// #define CMS_NO_REGISTER_KEYWORD 1
-
-// Uncomment this to remove visibility attribute when building shared objects
-// #define CMS_NO_VISIBILITY 1
-
-// ********** End of configuration toggles ******************************
-
-// Needed for streams
-#include 
-
-// Needed for portability (C99 per 7.1.2)
-#include 
-#include 
-#include 
-
-#ifndef CMS_USE_CPP_API
-#   ifdef __cplusplus
-#       if __cplusplus >= 201703L
-#            define CMS_NO_REGISTER_KEYWORD 1  
-#       endif
-extern "C" {
-#   endif
-#endif
-
-// Version/release
-#define LCMS_VERSION        2170
-
-// I will give the chance of redefining basic types for compilers that are not fully C99 compliant
-#ifndef CMS_BASIC_TYPES_ALREADY_DEFINED
-
-// Base types
-typedef unsigned char        cmsUInt8Number;   // That is guaranteed by the C99 spec
-typedef signed char          cmsInt8Number;    // That is guaranteed by the C99 spec
-
-#if CHAR_BIT != 8
-#  error "Unable to find 8 bit type, unsupported compiler"
-#endif
-
-// IEEE float storage numbers
-typedef float                cmsFloat32Number;
-typedef double               cmsFloat64Number;
-
-// 16-bit base types
-#if (USHRT_MAX == 65535U)
- typedef unsigned short      cmsUInt16Number;
-#elif (UINT_MAX == 65535U)
- typedef unsigned int        cmsUInt16Number;
-#else
-#  error "Unable to find 16 bits unsigned type, unsupported compiler"
-#endif
-
-#if (SHRT_MAX == 32767)
-  typedef  short             cmsInt16Number;
-#elif (INT_MAX == 32767)
-  typedef  int               cmsInt16Number;
-#else
-#  error "Unable to find 16 bits signed type, unsupported compiler"
-#endif
-
-// 32-bit base type
-#if (UINT_MAX == 4294967295U)
- typedef unsigned int        cmsUInt32Number;
-#elif (ULONG_MAX == 4294967295U)
- typedef unsigned long       cmsUInt32Number;
-#else
-#  error "Unable to find 32 bit unsigned type, unsupported compiler"
-#endif
-
-#if (INT_MAX == +2147483647)
- typedef  int                cmsInt32Number;
-#elif (LONG_MAX == +2147483647)
- typedef  long               cmsInt32Number;
-#else
-#  error "Unable to find 32 bit signed type, unsupported compiler"
-#endif
-
-// 64-bit base types
-#ifndef CMS_DONT_USE_INT64
-#  if (ULONG_MAX  == 18446744073709551615U)
-    typedef unsigned long   cmsUInt64Number;
-#  elif (ULLONG_MAX == 18446744073709551615U)
-      typedef unsigned long long   cmsUInt64Number;
-#  else
-#     define CMS_DONT_USE_INT64 1
-#  endif
-#  if (LONG_MAX == +9223372036854775807)
-      typedef  long          cmsInt64Number;
-#  elif (LLONG_MAX == +9223372036854775807)
-      typedef  long long     cmsInt64Number;
-#  else
-#     define CMS_DONT_USE_INT64 1
-#  endif
-#endif
-#endif
-
-// Handle "register" keyword
-#if defined(CMS_NO_REGISTER_KEYWORD)
-#  define CMSREGISTER
-#else
-#  define CMSREGISTER register
-#endif
-
-// In the case 64 bit numbers are not supported by the compiler
-#ifdef CMS_DONT_USE_INT64
-    typedef cmsUInt32Number      cmsUInt64Number[2];
-    typedef cmsInt32Number       cmsInt64Number[2];
-#endif
-
-// Derivative types
-typedef cmsUInt32Number      cmsSignature;
-typedef cmsUInt16Number      cmsU8Fixed8Number;
-typedef cmsInt32Number       cmsS15Fixed16Number;
-typedef cmsUInt32Number      cmsU16Fixed16Number;
-
-// Boolean type, which will be using the native integer
-typedef int                  cmsBool;
-
-// Try to detect windows
-#if defined (_WIN32) || defined(_WIN64) || defined(WIN32) || defined(_WIN32_)
-#  define CMS_IS_WINDOWS_ 1
-#endif
-
-#ifdef _MSC_VER
-#  define CMS_IS_WINDOWS_ 1
-#endif
-
-#ifdef __BORLANDC__
-#  define CMS_IS_WINDOWS_ 1
-#endif
-
-// Try to detect big endian platforms. This list can be endless, so primarily rely on the configure script
-// on Unix-like systems, and allow it to be set on the compiler command line using
-// -DCMS_USE_BIG_ENDIAN or something similar
-#ifdef CMS_USE_BIG_ENDIAN // set at compiler command line takes overall precedence
-
-#  if CMS_USE_BIG_ENDIAN == 0
-#    undef CMS_USE_BIG_ENDIAN
-#  endif
-
-#else // CMS_USE_BIG_ENDIAN
-
-#  ifdef WORDS_BIGENDIAN // set by configure (or explicitly on compiler command line)
-#    define CMS_USE_BIG_ENDIAN 1
-#  else // WORDS_BIGENDIAN
-// Fall back to platform/compiler specific tests
-#    if defined(__sgi__) || defined(__sgi) || defined(sparc)
-#      define CMS_USE_BIG_ENDIAN      1
-#    endif
-
-#    if defined(__s390__) || defined(__s390x__)
-#      define CMS_USE_BIG_ENDIAN   1
-#    endif
-
-#    ifdef macintosh
-#      ifdef __BIG_ENDIAN__
-#        define CMS_USE_BIG_ENDIAN      1
-#      endif
-#      ifdef __LITTLE_ENDIAN__
-#        undef CMS_USE_BIG_ENDIAN
-#      endif
-#    endif
-#  endif  // WORDS_BIGENDIAN
-
-#  if defined(_HOST_BIG_ENDIAN) || defined(__BIG_ENDIAN__)
-#    define CMS_USE_BIG_ENDIAN      1
-#  endif
-
-#endif  // CMS_USE_BIG_ENDIAN
-
-
-// Calling convention -- this is hardly platform and compiler dependent
-#if defined(CMS_IS_WINDOWS_) && !defined(__GNUC__)
-#  if defined(CMS_DLL) || defined(CMS_DLL_BUILD)
-#     ifdef __BORLANDC__
-#        define CMSEXPORT       __stdcall _export
-#        define CMSAPI
-#     else
-#        define CMSEXPORT      __stdcall
-#        ifdef CMS_DLL_BUILD
-#            define CMSAPI    __declspec(dllexport)
-#        else
-#           define CMSAPI     __declspec(dllimport)
-#        endif
-#     endif
-#  else
-#     define CMSEXPORT
-#     define CMSAPI
-#  endif
-#else  // not Windows
-#  if defined(HAVE_FUNC_ATTRIBUTE_VISIBILITY) && !defined(CMS_NO_VISIBILITY)
-#     define CMSEXPORT
-#     define CMSAPI    __attribute__((visibility("default")))
-#  else
-#     define CMSEXPORT
-#     define CMSAPI
-#  endif
-#endif  // CMS_IS_WINDOWS_
-
-#ifdef HasTHREADS
-# if HasTHREADS == 1
-#    undef CMS_NO_PTHREADS
-# else
-#    define CMS_NO_PTHREADS 1
-# endif
-#endif
-
-// Some common definitions
-#define cmsMAX_PATH     256
-
-#ifndef FALSE
-#       define FALSE 0
-#endif
-#ifndef TRUE
-#       define TRUE  1
-#endif
-
-// D50 XYZ normalized to Y=1.0
-#define cmsD50X  0.9642
-#define cmsD50Y  1.0
-#define cmsD50Z  0.8249
-
-// V4 perceptual black
-#define cmsPERCEPTUAL_BLACK_X  0.00336
-#define cmsPERCEPTUAL_BLACK_Y  0.0034731
-#define cmsPERCEPTUAL_BLACK_Z  0.00287
-
-// Definitions in ICC spec
-#define cmsMagicNumber  0x61637370     // 'acsp'
-#define lcmsSignature   0x6c636d73     // 'lcms'
-
-
-// Base ICC type definitions
-typedef enum {
-    cmsSigChromaticityType                  = 0x6368726D,  // 'chrm'
-    cmsSigcicpType                          = 0x63696370,  // 'cicp' 
-    cmsSigColorantOrderType                 = 0x636C726F,  // 'clro'
-    cmsSigColorantTableType                 = 0x636C7274,  // 'clrt'
-    cmsSigCrdInfoType                       = 0x63726469,  // 'crdi'
-    cmsSigCurveType                         = 0x63757276,  // 'curv'
-    cmsSigDataType                          = 0x64617461,  // 'data'
-    cmsSigDictType                          = 0x64696374,  // 'dict'
-    cmsSigDateTimeType                      = 0x6474696D,  // 'dtim'
-    cmsSigDeviceSettingsType                = 0x64657673,  // 'devs'
-    cmsSigLut16Type                         = 0x6d667432,  // 'mft2'
-    cmsSigLut8Type                          = 0x6d667431,  // 'mft1'
-    cmsSigLutAtoBType                       = 0x6d414220,  // 'mAB '
-    cmsSigLutBtoAType                       = 0x6d424120,  // 'mBA '
-    cmsSigMeasurementType                   = 0x6D656173,  // 'meas'
-    cmsSigMultiLocalizedUnicodeType         = 0x6D6C7563,  // 'mluc'
-    cmsSigMultiProcessElementType           = 0x6D706574,  // 'mpet'
-    cmsSigNamedColorType                    = 0x6E636f6C,  // 'ncol' -- DEPRECATED!
-    cmsSigNamedColor2Type                   = 0x6E636C32,  // 'ncl2'
-    cmsSigParametricCurveType               = 0x70617261,  // 'para'
-    cmsSigProfileSequenceDescType           = 0x70736571,  // 'pseq'
-    cmsSigProfileSequenceIdType             = 0x70736964,  // 'psid'
-    cmsSigResponseCurveSet16Type            = 0x72637332,  // 'rcs2'
-    cmsSigS15Fixed16ArrayType               = 0x73663332,  // 'sf32'
-    cmsSigScreeningType                     = 0x7363726E,  // 'scrn'
-    cmsSigSignatureType                     = 0x73696720,  // 'sig '
-    cmsSigTextType                          = 0x74657874,  // 'text'
-    cmsSigTextDescriptionType               = 0x64657363,  // 'desc'
-    cmsSigU16Fixed16ArrayType               = 0x75663332,  // 'uf32'
-    cmsSigUcrBgType                         = 0x62666420,  // 'bfd '
-    cmsSigUInt16ArrayType                   = 0x75693136,  // 'ui16'
-    cmsSigUInt32ArrayType                   = 0x75693332,  // 'ui32'
-    cmsSigUInt64ArrayType                   = 0x75693634,  // 'ui64'
-    cmsSigUInt8ArrayType                    = 0x75693038,  // 'ui08'
-    cmsSigVcgtType                          = 0x76636774,  // 'vcgt'
-    cmsSigViewingConditionsType             = 0x76696577,  // 'view'
-    cmsSigXYZType                           = 0x58595A20,  // 'XYZ '
-    cmsSigMHC2Type                          = 0x4D484332   // 'MHC2'
-
-
-} cmsTagTypeSignature;
-
-// Base ICC tag definitions
-typedef enum {
-    cmsSigAToB0Tag                          = 0x41324230,  // 'A2B0'
-    cmsSigAToB1Tag                          = 0x41324231,  // 'A2B1'
-    cmsSigAToB2Tag                          = 0x41324232,  // 'A2B2'
-    cmsSigBlueColorantTag                   = 0x6258595A,  // 'bXYZ'
-    cmsSigBlueMatrixColumnTag               = 0x6258595A,  // 'bXYZ'
-    cmsSigBlueTRCTag                        = 0x62545243,  // 'bTRC'
-    cmsSigBToA0Tag                          = 0x42324130,  // 'B2A0'
-    cmsSigBToA1Tag                          = 0x42324131,  // 'B2A1'
-    cmsSigBToA2Tag                          = 0x42324132,  // 'B2A2'
-    cmsSigCalibrationDateTimeTag            = 0x63616C74,  // 'calt'
-    cmsSigCharTargetTag                     = 0x74617267,  // 'targ'
-    cmsSigChromaticAdaptationTag            = 0x63686164,  // 'chad'
-    cmsSigChromaticityTag                   = 0x6368726D,  // 'chrm'
-    cmsSigColorantOrderTag                  = 0x636C726F,  // 'clro'
-    cmsSigColorantTableTag                  = 0x636C7274,  // 'clrt'
-    cmsSigColorantTableOutTag               = 0x636C6F74,  // 'clot'
-    cmsSigColorimetricIntentImageStateTag   = 0x63696973,  // 'ciis'
-    cmsSigCopyrightTag                      = 0x63707274,  // 'cprt'
-    cmsSigCrdInfoTag                        = 0x63726469,  // 'crdi'
-    cmsSigDataTag                           = 0x64617461,  // 'data'
-    cmsSigDateTimeTag                       = 0x6474696D,  // 'dtim'
-    cmsSigDeviceMfgDescTag                  = 0x646D6E64,  // 'dmnd'
-    cmsSigDeviceModelDescTag                = 0x646D6464,  // 'dmdd'
-    cmsSigDeviceSettingsTag                 = 0x64657673,  // 'devs'
-    cmsSigDToB0Tag                          = 0x44324230,  // 'D2B0'
-    cmsSigDToB1Tag                          = 0x44324231,  // 'D2B1'
-    cmsSigDToB2Tag                          = 0x44324232,  // 'D2B2'
-    cmsSigDToB3Tag                          = 0x44324233,  // 'D2B3'
-    cmsSigBToD0Tag                          = 0x42324430,  // 'B2D0'
-    cmsSigBToD1Tag                          = 0x42324431,  // 'B2D1'
-    cmsSigBToD2Tag                          = 0x42324432,  // 'B2D2'
-    cmsSigBToD3Tag                          = 0x42324433,  // 'B2D3'
-    cmsSigGamutTag                          = 0x67616D74,  // 'gamt'
-    cmsSigGrayTRCTag                        = 0x6b545243,  // 'kTRC'
-    cmsSigGreenColorantTag                  = 0x6758595A,  // 'gXYZ'
-    cmsSigGreenMatrixColumnTag              = 0x6758595A,  // 'gXYZ'
-    cmsSigGreenTRCTag                       = 0x67545243,  // 'gTRC'
-    cmsSigLuminanceTag                      = 0x6C756d69,  // 'lumi'
-    cmsSigMeasurementTag                    = 0x6D656173,  // 'meas'
-    cmsSigMediaBlackPointTag                = 0x626B7074,  // 'bkpt'
-    cmsSigMediaWhitePointTag                = 0x77747074,  // 'wtpt'
-    cmsSigNamedColorTag                     = 0x6E636f6C,  // 'ncol' // Deprecated by the ICC
-    cmsSigNamedColor2Tag                    = 0x6E636C32,  // 'ncl2'
-    cmsSigOutputResponseTag                 = 0x72657370,  // 'resp'
-    cmsSigPerceptualRenderingIntentGamutTag = 0x72696730,  // 'rig0'
-    cmsSigPreview0Tag                       = 0x70726530,  // 'pre0'
-    cmsSigPreview1Tag                       = 0x70726531,  // 'pre1'
-    cmsSigPreview2Tag                       = 0x70726532,  // 'pre2'
-    cmsSigProfileDescriptionTag             = 0x64657363,  // 'desc'
-    cmsSigProfileDescriptionMLTag           = 0x6473636d,  // 'dscm'
-    cmsSigProfileSequenceDescTag            = 0x70736571,  // 'pseq'
-    cmsSigProfileSequenceIdTag              = 0x70736964,  // 'psid'
-    cmsSigPs2CRD0Tag                        = 0x70736430,  // 'psd0'
-    cmsSigPs2CRD1Tag                        = 0x70736431,  // 'psd1'
-    cmsSigPs2CRD2Tag                        = 0x70736432,  // 'psd2'
-    cmsSigPs2CRD3Tag                        = 0x70736433,  // 'psd3'
-    cmsSigPs2CSATag                         = 0x70733273,  // 'ps2s'
-    cmsSigPs2RenderingIntentTag             = 0x70733269,  // 'ps2i'
-    cmsSigRedColorantTag                    = 0x7258595A,  // 'rXYZ'
-    cmsSigRedMatrixColumnTag                = 0x7258595A,  // 'rXYZ'
-    cmsSigRedTRCTag                         = 0x72545243,  // 'rTRC'
-    cmsSigSaturationRenderingIntentGamutTag = 0x72696732,  // 'rig2'
-    cmsSigScreeningDescTag                  = 0x73637264,  // 'scrd'
-    cmsSigScreeningTag                      = 0x7363726E,  // 'scrn'
-    cmsSigTechnologyTag                     = 0x74656368,  // 'tech'
-    cmsSigUcrBgTag                          = 0x62666420,  // 'bfd '
-    cmsSigViewingCondDescTag                = 0x76756564,  // 'vued'
-    cmsSigViewingConditionsTag              = 0x76696577,  // 'view'
-    cmsSigVcgtTag                           = 0x76636774,  // 'vcgt'
-    cmsSigMetaTag                           = 0x6D657461,  // 'meta'
-    cmsSigcicpTag                           = 0x63696370,  // 'cicp'
-    cmsSigArgyllArtsTag                     = 0x61727473,  // 'arts'
-    cmsSigMHC2Tag                           = 0x4D484332   // 'MHC2'
-
-} cmsTagSignature;
-
-
-// ICC Technology tag
-typedef enum {
-    cmsSigDigitalCamera                     = 0x6463616D,  // 'dcam'
-    cmsSigFilmScanner                       = 0x6673636E,  // 'fscn'
-    cmsSigReflectiveScanner                 = 0x7273636E,  // 'rscn'
-    cmsSigInkJetPrinter                     = 0x696A6574,  // 'ijet'
-    cmsSigThermalWaxPrinter                 = 0x74776178,  // 'twax'
-    cmsSigElectrophotographicPrinter        = 0x6570686F,  // 'epho'
-    cmsSigElectrostaticPrinter              = 0x65737461,  // 'esta'
-    cmsSigDyeSublimationPrinter             = 0x64737562,  // 'dsub'
-    cmsSigPhotographicPaperPrinter          = 0x7270686F,  // 'rpho'
-    cmsSigFilmWriter                        = 0x6670726E,  // 'fprn'
-    cmsSigVideoMonitor                      = 0x7669646D,  // 'vidm'
-    cmsSigVideoCamera                       = 0x76696463,  // 'vidc'
-    cmsSigProjectionTelevision              = 0x706A7476,  // 'pjtv'
-    cmsSigCRTDisplay                        = 0x43525420,  // 'CRT '
-    cmsSigPMDisplay                         = 0x504D4420,  // 'PMD '
-    cmsSigAMDisplay                         = 0x414D4420,  // 'AMD '
-    cmsSigPhotoCD                           = 0x4B504344,  // 'KPCD'
-    cmsSigPhotoImageSetter                  = 0x696D6773,  // 'imgs'
-    cmsSigGravure                           = 0x67726176,  // 'grav'
-    cmsSigOffsetLithography                 = 0x6F666673,  // 'offs'
-    cmsSigSilkscreen                        = 0x73696C6B,  // 'silk'
-    cmsSigFlexography                       = 0x666C6578,  // 'flex'
-    cmsSigMotionPictureFilmScanner          = 0x6D706673,  // 'mpfs'
-    cmsSigMotionPictureFilmRecorder         = 0x6D706672,  // 'mpfr'
-    cmsSigDigitalMotionPictureCamera        = 0x646D7063,  // 'dmpc'
-    cmsSigDigitalCinemaProjector            = 0x64636A70   // 'dcpj'
-
-} cmsTechnologySignature;
-
-
-// ICC Color spaces
-typedef enum {
-    cmsSigXYZData                           = 0x58595A20,  // 'XYZ '
-    cmsSigLabData                           = 0x4C616220,  // 'Lab '
-    cmsSigLuvData                           = 0x4C757620,  // 'Luv '
-    cmsSigYCbCrData                         = 0x59436272,  // 'YCbr'
-    cmsSigYxyData                           = 0x59787920,  // 'Yxy '
-    cmsSigRgbData                           = 0x52474220,  // 'RGB '
-    cmsSigGrayData                          = 0x47524159,  // 'GRAY'
-    cmsSigHsvData                           = 0x48535620,  // 'HSV '
-    cmsSigHlsData                           = 0x484C5320,  // 'HLS '
-    cmsSigCmykData                          = 0x434D594B,  // 'CMYK'
-    cmsSigCmyData                           = 0x434D5920,  // 'CMY '
-    cmsSigMCH1Data                          = 0x4D434831,  // 'MCH1'
-    cmsSigMCH2Data                          = 0x4D434832,  // 'MCH2'
-    cmsSigMCH3Data                          = 0x4D434833,  // 'MCH3'
-    cmsSigMCH4Data                          = 0x4D434834,  // 'MCH4'
-    cmsSigMCH5Data                          = 0x4D434835,  // 'MCH5'
-    cmsSigMCH6Data                          = 0x4D434836,  // 'MCH6'
-    cmsSigMCH7Data                          = 0x4D434837,  // 'MCH7'
-    cmsSigMCH8Data                          = 0x4D434838,  // 'MCH8'
-    cmsSigMCH9Data                          = 0x4D434839,  // 'MCH9'
-    cmsSigMCHAData                          = 0x4D434841,  // 'MCHA'
-    cmsSigMCHBData                          = 0x4D434842,  // 'MCHB'
-    cmsSigMCHCData                          = 0x4D434843,  // 'MCHC'
-    cmsSigMCHDData                          = 0x4D434844,  // 'MCHD'
-    cmsSigMCHEData                          = 0x4D434845,  // 'MCHE'
-    cmsSigMCHFData                          = 0x4D434846,  // 'MCHF'
-    cmsSigNamedData                         = 0x6e6d636c,  // 'nmcl'
-    cmsSig1colorData                        = 0x31434C52,  // '1CLR'
-    cmsSig2colorData                        = 0x32434C52,  // '2CLR'
-    cmsSig3colorData                        = 0x33434C52,  // '3CLR'
-    cmsSig4colorData                        = 0x34434C52,  // '4CLR'
-    cmsSig5colorData                        = 0x35434C52,  // '5CLR'
-    cmsSig6colorData                        = 0x36434C52,  // '6CLR'
-    cmsSig7colorData                        = 0x37434C52,  // '7CLR'
-    cmsSig8colorData                        = 0x38434C52,  // '8CLR'
-    cmsSig9colorData                        = 0x39434C52,  // '9CLR'
-    cmsSig10colorData                       = 0x41434C52,  // 'ACLR'
-    cmsSig11colorData                       = 0x42434C52,  // 'BCLR'
-    cmsSig12colorData                       = 0x43434C52,  // 'CCLR'
-    cmsSig13colorData                       = 0x44434C52,  // 'DCLR'
-    cmsSig14colorData                       = 0x45434C52,  // 'ECLR'
-    cmsSig15colorData                       = 0x46434C52,  // 'FCLR'
-    cmsSigLuvKData                          = 0x4C75764B   // 'LuvK'
-
-} cmsColorSpaceSignature;
-
-// ICC Profile Class
-typedef enum {
-    cmsSigInputClass                        = 0x73636E72,  // 'scnr'
-    cmsSigDisplayClass                      = 0x6D6E7472,  // 'mntr'
-    cmsSigOutputClass                       = 0x70727472,  // 'prtr'
-    cmsSigLinkClass                         = 0x6C696E6B,  // 'link'
-    cmsSigAbstractClass                     = 0x61627374,  // 'abst'
-    cmsSigColorSpaceClass                   = 0x73706163,  // 'spac'
-    cmsSigNamedColorClass                   = 0x6e6d636c   // 'nmcl'
-
-} cmsProfileClassSignature;
-
-// ICC Platforms
-typedef enum {
-    cmsSigMacintosh                         = 0x4150504C,  // 'APPL'
-    cmsSigMicrosoft                         = 0x4D534654,  // 'MSFT'
-    cmsSigSolaris                           = 0x53554E57,  // 'SUNW'
-    cmsSigSGI                               = 0x53474920,  // 'SGI '
-    cmsSigTaligent                          = 0x54474E54,  // 'TGNT'
-    cmsSigUnices                            = 0x2A6E6978   // '*nix'   // From argyll -- Not official
-
-} cmsPlatformSignature;
-
-// Reference gamut
-#define  cmsSigPerceptualReferenceMediumGamut         0x70726d67  //'prmg'
-
-// For cmsSigColorimetricIntentImageStateTag
-#define  cmsSigSceneColorimetryEstimates              0x73636F65  //'scoe'
-#define  cmsSigSceneAppearanceEstimates               0x73617065  //'sape'
-#define  cmsSigFocalPlaneColorimetryEstimates         0x66706365  //'fpce'
-#define  cmsSigReflectionHardcopyOriginalColorimetry  0x72686F63  //'rhoc'
-#define  cmsSigReflectionPrintOutputColorimetry       0x72706F63  //'rpoc'
-
-// Multi process elements types
-typedef enum {
-    cmsSigCurveSetElemType              = 0x63767374,  //'cvst'
-    cmsSigMatrixElemType                = 0x6D617466,  //'matf'
-    cmsSigCLutElemType                  = 0x636C7574,  //'clut'
-
-    cmsSigBAcsElemType                  = 0x62414353,  // 'bACS'
-    cmsSigEAcsElemType                  = 0x65414353,  // 'eACS'
-
-    // Custom from here, not in the ICC Spec
-    cmsSigXYZ2LabElemType               = 0x6C327820,  // 'l2x '
-    cmsSigLab2XYZElemType               = 0x78326C20,  // 'x2l '
-    cmsSigNamedColorElemType            = 0x6E636C20,  // 'ncl '
-    cmsSigLabV2toV4                     = 0x32203420,  // '2 4 '
-    cmsSigLabV4toV2                     = 0x34203220,  // '4 2 '
-  
-    // Identities
-    cmsSigIdentityElemType              = 0x69646E20,  // 'idn '
-
-    // Float to floatPCS
-    cmsSigLab2FloatPCS                  = 0x64326C20,  // 'd2l '
-    cmsSigFloatPCS2Lab                  = 0x6C326420,  // 'l2d '
-    cmsSigXYZ2FloatPCS                  = 0x64327820,  // 'd2x '
-    cmsSigFloatPCS2XYZ                  = 0x78326420,  // 'x2d '  
-    cmsSigClipNegativesElemType         = 0x636c7020   // 'clp '
-
-} cmsStageSignature;
-
-// Types of CurveElements
-typedef enum {
-
-    cmsSigFormulaCurveSeg               = 0x70617266, // 'parf'
-    cmsSigSampledCurveSeg               = 0x73616D66, // 'samf'
-    cmsSigSegmentedCurve                = 0x63757266  // 'curf'
-
-} cmsCurveSegSignature;
-
-// Used in ResponseCurveType
-#define  cmsSigStatusA                    0x53746141 //'StaA'
-#define  cmsSigStatusE                    0x53746145 //'StaE'
-#define  cmsSigStatusI                    0x53746149 //'StaI'
-#define  cmsSigStatusT                    0x53746154 //'StaT'
-#define  cmsSigStatusM                    0x5374614D //'StaM'
-#define  cmsSigDN                         0x444E2020 //'DN  '
-#define  cmsSigDNP                        0x444E2050 //'DN P'
-#define  cmsSigDNN                        0x444E4E20 //'DNN '
-#define  cmsSigDNNP                       0x444E4E50 //'DNNP'
-
-// Device attributes, currently defined values correspond to the low 4 bytes
-// of the 8 byte attribute quantity
-#define cmsReflective     0
-#define cmsTransparency   1
-#define cmsGlossy         0
-#define cmsMatte          2
-
-// Common structures in ICC tags
-typedef struct {
-    cmsUInt32Number len;
-    cmsUInt32Number flag;
-    cmsUInt8Number  data[1];
-
-} cmsICCData;
-
-// ICC date time
-typedef struct {
-    cmsUInt16Number      year;
-    cmsUInt16Number      month;
-    cmsUInt16Number      day;
-    cmsUInt16Number      hours;
-    cmsUInt16Number      minutes;
-    cmsUInt16Number      seconds;
-
-} cmsDateTimeNumber;
-
-// ICC XYZ
-typedef struct {
-    cmsS15Fixed16Number  X;
-    cmsS15Fixed16Number  Y;
-    cmsS15Fixed16Number  Z;
-
-} cmsEncodedXYZNumber;
-
-
-// Profile ID as computed by MD5 algorithm
-typedef union {
-    cmsUInt8Number       ID8[16];
-    cmsUInt16Number      ID16[8];
-    cmsUInt32Number      ID32[4];
-
-} cmsProfileID;
-
-
-// ----------------------------------------------------------------------------------------------
-// ICC profile internal base types. Strictly, shouldn't be declared in this header, but maybe
-// somebody want to use this info for accessing profile header directly, so here it is.
-
-// Profile header -- it is 32-bit aligned, so no issues are expected on alignment
-typedef struct {
-    cmsUInt32Number              size;           // Profile size in bytes
-    cmsSignature                 cmmId;          // CMM for this profile
-    cmsUInt32Number              version;        // Format version number
-    cmsProfileClassSignature     deviceClass;    // Type of profile
-    cmsColorSpaceSignature       colorSpace;     // Color space of data
-    cmsColorSpaceSignature       pcs;            // PCS, XYZ or Lab only
-    cmsDateTimeNumber            date;           // Date profile was created
-    cmsSignature                 magic;          // Magic Number to identify an ICC profile
-    cmsPlatformSignature         platform;       // Primary Platform
-    cmsUInt32Number              flags;          // Various bit settings
-    cmsSignature                 manufacturer;   // Device manufacturer
-    cmsUInt32Number              model;          // Device model number
-    cmsUInt64Number              attributes;     // Device attributes
-    cmsUInt32Number              renderingIntent;// Rendering intent
-    cmsEncodedXYZNumber          illuminant;     // Profile illuminant
-    cmsSignature                 creator;        // Profile creator
-    cmsProfileID                 profileID;      // Profile ID using MD5
-    cmsInt8Number                reserved[28];   // Reserved for future use
-
-} cmsICCHeader;
-
-// ICC base tag
-typedef struct {
-    cmsTagTypeSignature  sig;
-    cmsInt8Number        reserved[4];
-
-} cmsTagBase;
-
-// A tag entry in directory
-typedef struct {
-    cmsTagSignature      sig;            // The tag signature
-    cmsUInt32Number      offset;         // Start of tag
-    cmsUInt32Number      size;           // Size in bytes
-
-} cmsTagEntry;
-
-// ----------------------------------------------------------------------------------------------
-
-// Little CMS specific typedefs
-
-typedef void* cmsHANDLE ;              // Generic handle
-typedef void* cmsHPROFILE;             // Opaque typedefs to hide internals
-typedef void* cmsHTRANSFORM;
-
-#define cmsMAXCHANNELS  16                // Maximum number of channels in ICC profiles
-
-// Format of pixel is defined by one cmsUInt32Number, using bit fields as follows
-//
-//                               2                1          0
-//                        4 3 2 10987 6 5 4 3 2 1 098 7654 321
-//                        M A O TTTTT U Y F P X S EEE CCCC BBB
-//
-//            M: Premultiplied alpha (only works when extra samples is 1)
-//            A: Floating point -- With this flag we can differentiate 16 bits as float and as int
-//            O: Optimized -- previous optimization already returns the final 8-bit value
-//            T: Pixeltype
-//            F: Flavor  0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla)
-//            P: Planar? 0=Chunky, 1=Planar
-//            X: swap 16 bps endianness?
-//            S: Do swap? ie, BGR, KYMC
-//            E: Extra samples
-//            C: Channels (Samples per pixel)
-//            B: bytes per sample
-//            Y: Swap first - changes ABGR to BGRA and KCMY to CMYK
-
-#define PREMUL_SH(m)           ((m) << 23)
-#define FLOAT_SH(a)            ((a) << 22)
-#define OPTIMIZED_SH(s)        ((s) << 21)
-#define COLORSPACE_SH(s)       ((s) << 16)
-#define SWAPFIRST_SH(s)        ((s) << 14)
-#define FLAVOR_SH(s)           ((s) << 13)
-#define PLANAR_SH(p)           ((p) << 12)
-#define ENDIAN16_SH(e)         ((e) << 11)
-#define DOSWAP_SH(e)           ((e) << 10)
-#define EXTRA_SH(e)            ((e) << 7)
-#define CHANNELS_SH(c)         ((c) << 3)
-#define BYTES_SH(b)            (b)
-
-// These macros unpack format specifiers into integers
-#define T_PREMUL(m)           (((m)>>23)&1)
-#define T_FLOAT(a)            (((a)>>22)&1)
-#define T_OPTIMIZED(o)        (((o)>>21)&1)
-#define T_COLORSPACE(s)       (((s)>>16)&31)
-#define T_SWAPFIRST(s)        (((s)>>14)&1)
-#define T_FLAVOR(s)           (((s)>>13)&1)
-#define T_PLANAR(p)           (((p)>>12)&1)
-#define T_ENDIAN16(e)         (((e)>>11)&1)
-#define T_DOSWAP(e)           (((e)>>10)&1)
-#define T_EXTRA(e)            (((e)>>7)&7)
-#define T_CHANNELS(c)         (((c)>>3)&15)
-#define T_BYTES(b)            ((b)&7)
-
-
-// Pixel types
-#define PT_ANY       0    // Don't check colorspace
-                          // 1 & 2 are reserved
-#define PT_GRAY      3
-#define PT_RGB       4
-#define PT_CMY       5
-#define PT_CMYK      6
-#define PT_YCbCr     7
-#define PT_YUV       8      // Lu'v'
-#define PT_XYZ       9
-#define PT_Lab       10
-#define PT_YUVK      11     // Lu'v'K
-#define PT_HSV       12
-#define PT_HLS       13
-#define PT_Yxy       14
-#define PT_MCH1      15
-#define PT_MCH2      16
-#define PT_MCH3      17
-#define PT_MCH4      18
-#define PT_MCH5      19
-#define PT_MCH6      20
-#define PT_MCH7      21
-#define PT_MCH8      22
-#define PT_MCH9      23
-#define PT_MCH10     24
-#define PT_MCH11     25
-#define PT_MCH12     26
-#define PT_MCH13     27
-#define PT_MCH14     28
-#define PT_MCH15     29
-#define PT_LabV2     30     // Identical to PT_Lab, but using the V2 old encoding
-
-// Some (not all!) representations
-
-#ifndef TYPE_RGB_8      // TYPE_RGB_8 is a very common identifier, so don't include ours
-                        // if user has it already defined.
-
-#define TYPE_GRAY_8            (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1))
-#define TYPE_GRAY_8_REV        (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1))
-#define TYPE_GRAY_16           (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2))
-#define TYPE_GRAY_16_REV       (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1))
-#define TYPE_GRAY_16_SE        (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_GRAYA_8           (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1))
-#define TYPE_GRAYA_8_PREMUL    (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PREMUL_SH(1))
-#define TYPE_GRAYA_16          (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2))
-#define TYPE_GRAYA_16_PREMUL   (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PREMUL_SH(1))
-#define TYPE_GRAYA_16_SE       (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_GRAYA_8_PLANAR    (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_GRAYA_16_PLANAR   (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PLANAR_SH(1))
-
-#define TYPE_RGB_8             (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_RGB_8_PLANAR      (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_BGR_8             (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_BGR_8_PLANAR      (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1))
-#define TYPE_RGB_16            (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_RGB_16_PLANAR     (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_RGB_16_SE         (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_BGR_16            (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_BGR_16_PLANAR     (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1))
-#define TYPE_BGR_16_SE         (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-
-#define TYPE_RGBA_8            (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_RGBA_8_PREMUL     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PREMUL_SH(1))
-#define TYPE_RGBA_8_PLANAR     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_RGBA_16           (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_RGBA_16_PREMUL    (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PREMUL_SH(1))
-#define TYPE_RGBA_16_PLANAR    (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_RGBA_16_SE        (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-#define TYPE_ARGB_8            (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_ARGB_8_PREMUL     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1))
-#define TYPE_ARGB_8_PLANAR     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1))
-#define TYPE_ARGB_16           (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1))
-#define TYPE_ARGB_16_PREMUL    (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)|PREMUL_SH(1))
-
-#define TYPE_ABGR_8            (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_ABGR_8_PREMUL     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PREMUL_SH(1))
-#define TYPE_ABGR_8_PLANAR     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1))
-#define TYPE_ABGR_16           (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_ABGR_16_PREMUL    (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PREMUL_SH(1))
-#define TYPE_ABGR_16_PLANAR    (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1))
-#define TYPE_ABGR_16_SE        (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-
-#define TYPE_BGRA_8            (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_BGRA_8_PREMUL     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1))
-#define TYPE_BGRA_8_PLANAR     (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1))
-#define TYPE_BGRA_16           (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_BGRA_16_PREMUL    (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1))
-#define TYPE_BGRA_16_SE        (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1))
-
-#define TYPE_CMY_8             (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_CMY_8_PLANAR      (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_CMY_16            (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_CMY_16_PLANAR     (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_CMY_16_SE         (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-#define TYPE_CMYK_8            (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1))
-#define TYPE_CMYKA_8           (COLORSPACE_SH(PT_CMYK)|EXTRA_SH(1)|CHANNELS_SH(4)|BYTES_SH(1))
-#define TYPE_CMYK_8_REV        (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1))
-#define TYPE_YUVK_8            TYPE_CMYK_8_REV
-#define TYPE_CMYK_8_PLANAR     (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_CMYK_16           (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2))
-#define TYPE_CMYK_16_REV       (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1))
-#define TYPE_YUVK_16           TYPE_CMYK_16_REV
-#define TYPE_CMYK_16_PLANAR    (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_CMYK_16_SE        (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-#define TYPE_KYMC_8            (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC_16           (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC_16_SE        (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-
-#define TYPE_KCMY_8            (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_KCMY_8_REV        (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_KCMY_16           (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|SWAPFIRST_SH(1))
-#define TYPE_KCMY_16_REV       (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_KCMY_16_SE        (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)|SWAPFIRST_SH(1))
-
-#define TYPE_CMYK5_8           (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1))
-#define TYPE_CMYK5_16          (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2))
-#define TYPE_CMYK5_16_SE       (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC5_8           (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC5_16          (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC5_16_SE       (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-#define TYPE_CMYK6_8           (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1))
-#define TYPE_CMYK6_8_PLANAR    (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_CMYK6_16          (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2))
-#define TYPE_CMYK6_16_PLANAR   (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_CMYK6_16_SE       (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_CMYK7_8           (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1))
-#define TYPE_CMYK7_16          (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2))
-#define TYPE_CMYK7_16_SE       (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC7_8           (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC7_16          (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC7_16_SE       (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-#define TYPE_CMYK8_8           (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1))
-#define TYPE_CMYK8_16          (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2))
-#define TYPE_CMYK8_16_SE       (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC8_8           (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC8_16          (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC8_16_SE       (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-#define TYPE_CMYK9_8           (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1))
-#define TYPE_CMYK9_16          (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2))
-#define TYPE_CMYK9_16_SE       (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC9_8           (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC9_16          (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC9_16_SE       (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-#define TYPE_CMYK10_8          (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1))
-#define TYPE_CMYK10_16         (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2))
-#define TYPE_CMYK10_16_SE      (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC10_8          (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC10_16         (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC10_16_SE      (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-#define TYPE_CMYK11_8          (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1))
-#define TYPE_CMYK11_16         (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2))
-#define TYPE_CMYK11_16_SE      (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC11_8          (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC11_16         (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC11_16_SE      (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-#define TYPE_CMYK12_8          (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1))
-#define TYPE_CMYK12_16         (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2))
-#define TYPE_CMYK12_16_SE      (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|ENDIAN16_SH(1))
-#define TYPE_KYMC12_8          (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)|DOSWAP_SH(1))
-#define TYPE_KYMC12_16         (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_KYMC12_16_SE      (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1))
-
-// Colorimetric
-#define TYPE_XYZ_16            (COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_Lab_8             (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_LabV2_8           (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1))
-
-#define TYPE_ALab_8            (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_ALabV2_8          (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_Lab_16            (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_LabV2_16          (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_Yxy_16            (COLORSPACE_SH(PT_Yxy)|CHANNELS_SH(3)|BYTES_SH(2))
-
-// YCbCr
-#define TYPE_YCbCr_8           (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_YCbCr_8_PLANAR    (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_YCbCr_16          (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_YCbCr_16_PLANAR   (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_YCbCr_16_SE       (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-// YUV
-#define TYPE_YUV_8             (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_YUV_8_PLANAR      (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_YUV_16            (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_YUV_16_PLANAR     (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_YUV_16_SE         (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-// HLS
-#define TYPE_HLS_8             (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_HLS_8_PLANAR      (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_HLS_16            (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_HLS_16_PLANAR     (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_HLS_16_SE         (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-// HSV
-#define TYPE_HSV_8             (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1))
-#define TYPE_HSV_8_PLANAR      (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1))
-#define TYPE_HSV_16            (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_HSV_16_PLANAR     (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1))
-#define TYPE_HSV_16_SE         (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1))
-
-// Named color index. Only 16 bits is allowed (don't check colorspace)
-#define TYPE_NAMED_COLOR_INDEX (CHANNELS_SH(1)|BYTES_SH(2))
-
-// Float formatters.
-#define TYPE_XYZ_FLT          (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(4))
-#define TYPE_Lab_FLT          (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(4))
-#define TYPE_LabA_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4))
-#define TYPE_GRAY_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4))
-#define TYPE_GRAYA_FLT        (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)|EXTRA_SH(1))
-#define TYPE_GRAYA_FLT_PREMUL (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)|EXTRA_SH(1)|PREMUL_SH(1))
-#define TYPE_RGB_FLT          (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4))
-
-#define TYPE_RGBA_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4))
-#define TYPE_RGBA_FLT_PREMUL  (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|PREMUL_SH(1))
-#define TYPE_ARGB_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1))
-#define TYPE_ARGB_FLT_PREMUL  (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1)|PREMUL_SH(1))
-#define TYPE_BGR_FLT          (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1))
-#define TYPE_BGRA_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_BGRA_FLT_PREMUL  (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PREMUL_SH(1))
-#define TYPE_ABGR_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1))
-#define TYPE_ABGR_FLT_PREMUL  (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|PREMUL_SH(1))
-
-#define TYPE_CMYK_FLT         (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(4))
-
-// Floating point formatters.
-// NOTE THAT 'BYTES' FIELD IS SET TO ZERO ON DLB because 8 bytes overflows the bitfield
-#define TYPE_XYZ_DBL          (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(0))
-#define TYPE_Lab_DBL          (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(0))
-#define TYPE_GRAY_DBL         (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(0))
-#define TYPE_RGB_DBL          (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0))
-#define TYPE_BGR_DBL          (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)|DOSWAP_SH(1))
-#define TYPE_CMYK_DBL         (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(0))
-#define TYPE_OKLAB_DBL        (FLOAT_SH(1)|COLORSPACE_SH(PT_MCH3)|CHANNELS_SH(3)|BYTES_SH(0))
-
-// IEEE 754-2008 "half"
-#define TYPE_GRAY_HALF_FLT    (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2))
-#define TYPE_RGB_HALF_FLT     (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_CMYK_HALF_FLT    (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2))
-
-#define TYPE_RGBA_HALF_FLT    (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2))
-#define TYPE_ARGB_HALF_FLT    (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1))
-#define TYPE_BGR_HALF_FLT     (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1))
-#define TYPE_BGRA_HALF_FLT    (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1))
-#define TYPE_ABGR_HALF_FLT    (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1))
-
-#endif
-
-// Colorspaces
-typedef struct {
-        cmsFloat64Number X;
-        cmsFloat64Number Y;
-        cmsFloat64Number Z;
-
-    } cmsCIEXYZ;
-
-typedef struct {
-        cmsFloat64Number x;
-        cmsFloat64Number y;
-        cmsFloat64Number Y;
-
-    } cmsCIExyY;
-
-typedef struct {
-        cmsFloat64Number L;
-        cmsFloat64Number a;
-        cmsFloat64Number b;
-
-    } cmsCIELab;
-
-typedef struct {
-        cmsFloat64Number L;
-        cmsFloat64Number C;
-        cmsFloat64Number h;
-
-    } cmsCIELCh;
-
-typedef struct {
-        cmsFloat64Number J;
-        cmsFloat64Number C;
-        cmsFloat64Number h;
-
-    } cmsJCh;
-
-typedef struct {
-        cmsCIEXYZ  Red;
-        cmsCIEXYZ  Green;
-        cmsCIEXYZ  Blue;
-
-    } cmsCIEXYZTRIPLE;
-
-typedef struct {
-        cmsCIExyY  Red;
-        cmsCIExyY  Green;
-        cmsCIExyY  Blue;
-
-    } cmsCIExyYTRIPLE;
-
-// Illuminant types for structs below
-#define cmsILLUMINANT_TYPE_UNKNOWN 0x0000000
-#define cmsILLUMINANT_TYPE_D50     0x0000001
-#define cmsILLUMINANT_TYPE_D65     0x0000002
-#define cmsILLUMINANT_TYPE_D93     0x0000003
-#define cmsILLUMINANT_TYPE_F2      0x0000004
-#define cmsILLUMINANT_TYPE_D55     0x0000005
-#define cmsILLUMINANT_TYPE_A       0x0000006
-#define cmsILLUMINANT_TYPE_E       0x0000007
-#define cmsILLUMINANT_TYPE_F8      0x0000008
-
-typedef struct {
-        cmsUInt32Number  Observer;    // 0 = unknown, 1=CIE 1931, 2=CIE 1964
-        cmsCIEXYZ        Backing;     // Value of backing
-        cmsUInt32Number  Geometry;    // 0=unknown, 1=45/0, 0/45 2=0d, d/0
-        cmsFloat64Number Flare;       // 0..1.0
-        cmsUInt32Number  IlluminantType;
-
-    } cmsICCMeasurementConditions;
-
-typedef struct {
-        cmsCIEXYZ       IlluminantXYZ;   // Not the same struct as CAM02,
-        cmsCIEXYZ       SurroundXYZ;     // This is for storing the tag
-        cmsUInt32Number IlluminantType;  // viewing condition
-
-    } cmsICCViewingConditions;
-
-typedef struct {
-    cmsUInt8Number  ColourPrimaries;            // Recommendation ITU-T H.273
-    cmsUInt8Number  TransferCharacteristics;    //  (ISO/IEC 23091-2)
-    cmsUInt8Number  MatrixCoefficients;
-    cmsUInt8Number  VideoFullRangeFlag;
-
-} cmsVideoSignalType;
-
-typedef struct {
-    cmsUInt32Number   CurveEntries;
-    cmsFloat64Number* RedCurve;
-    cmsFloat64Number* GreenCurve;
-    cmsFloat64Number* BlueCurve;
-
-    cmsFloat64Number  MinLuminance;         // ST.2086 min luminance in nits
-    cmsFloat64Number  PeakLuminance;        // ST.2086 peak luminance in nits
-
-    cmsFloat64Number XYZ2XYZmatrix[3][4];
-
-} cmsMHC2Type;
-
-
-
-// Get LittleCMS version (for shared objects) -----------------------------------------------------------------------------
-
-CMSAPI int               CMSEXPORT cmsGetEncodedCMMversion(void);
-
-// Support of non-standard functions --------------------------------------------------------------------------------------
-
-CMSAPI int               CMSEXPORT cmsstrcasecmp(const char* s1, const char* s2);
-CMSAPI long int          CMSEXPORT cmsfilelength(FILE* f);
-
-
-// Context handling --------------------------------------------------------------------------------------------------------
-
-// Each context holds its owns globals and its own plug-ins. There is a global context with the id = 0 for lecacy compatibility
-// though using the global context is not recommended. Proper context handling makes lcms more thread-safe.
-
-typedef struct _cmsContext_struct* cmsContext;
-
-CMSAPI cmsContext       CMSEXPORT cmsCreateContext(void* Plugin, void* UserData);
-CMSAPI void             CMSEXPORT cmsDeleteContext(cmsContext ContextID);
-CMSAPI cmsContext       CMSEXPORT cmsDupContext(cmsContext ContextID, void* NewUserData);
-CMSAPI void*            CMSEXPORT cmsGetContextUserData(cmsContext ContextID);
-
-// Plug-In registering  --------------------------------------------------------------------------------------------------
-
-CMSAPI cmsBool           CMSEXPORT cmsPlugin(void* Plugin);
-CMSAPI cmsBool           CMSEXPORT cmsPluginTHR(cmsContext ContextID, void* Plugin);
-CMSAPI void              CMSEXPORT cmsUnregisterPlugins(void);
-CMSAPI void              CMSEXPORT cmsUnregisterPluginsTHR(cmsContext ContextID);
-
-// Error logging ----------------------------------------------------------------------------------------------------------
-
-// There is no error handling at all. When a function fails, it returns proper value.
-// For example, all create functions does return NULL on failure. Other may return FALSE.
-// It may be interesting, for the developer, to know why the function is failing.
-// for that reason, lcms2 does offer a logging function. This function will get
-// an ENGLISH string with some clues on what is going wrong. You can show this
-// info to the end user if you wish, or just create some sort of log on disk.
-// The logging function should NOT terminate the program, as this obviously can leave
-// unfreed resources. It is the programmer's responsibility to check each function
-// return code to make sure it didn't fail.
-
-#define cmsERROR_UNDEFINED                    0
-#define cmsERROR_FILE                         1
-#define cmsERROR_RANGE                        2
-#define cmsERROR_INTERNAL                     3
-#define cmsERROR_NULL                         4
-#define cmsERROR_READ                         5
-#define cmsERROR_SEEK                         6
-#define cmsERROR_WRITE                        7
-#define cmsERROR_UNKNOWN_EXTENSION            8
-#define cmsERROR_COLORSPACE_CHECK             9
-#define cmsERROR_ALREADY_DEFINED              10
-#define cmsERROR_BAD_SIGNATURE                11
-#define cmsERROR_CORRUPTION_DETECTED          12
-#define cmsERROR_NOT_SUITABLE                 13
-
-// Error logger is called with the ContextID when a message is raised. This gives the
-// chance to know which thread is responsible of the warning and any environment associated
-// with it. Non-multithreading applications may safely ignore this parameter.
-// Note that under certain special circumstances, ContextID may be NULL.
-typedef void  (* cmsLogErrorHandlerFunction)(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text);
-
-// Allows user to set any specific logger
-CMSAPI void              CMSEXPORT cmsSetLogErrorHandler(cmsLogErrorHandlerFunction Fn);
-CMSAPI void              CMSEXPORT cmsSetLogErrorHandlerTHR(cmsContext ContextID, cmsLogErrorHandlerFunction Fn);
-
-// Conversions --------------------------------------------------------------------------------------------------------------
-
-// Returns pointers to constant structs
-CMSAPI const cmsCIEXYZ*  CMSEXPORT cmsD50_XYZ(void);
-CMSAPI const cmsCIExyY*  CMSEXPORT cmsD50_xyY(void);
-
-// Colorimetric space conversions
-CMSAPI void              CMSEXPORT cmsXYZ2xyY(cmsCIExyY* Dest, const cmsCIEXYZ* Source);
-CMSAPI void              CMSEXPORT cmsxyY2XYZ(cmsCIEXYZ* Dest, const cmsCIExyY* Source);
-CMSAPI void              CMSEXPORT cmsXYZ2Lab(const cmsCIEXYZ* WhitePoint, cmsCIELab* Lab, const cmsCIEXYZ* xyz);
-CMSAPI void              CMSEXPORT cmsLab2XYZ(const cmsCIEXYZ* WhitePoint, cmsCIEXYZ* xyz, const cmsCIELab* Lab);
-CMSAPI void              CMSEXPORT cmsLab2LCh(cmsCIELCh*LCh, const cmsCIELab* Lab);
-CMSAPI void              CMSEXPORT cmsLCh2Lab(cmsCIELab* Lab, const cmsCIELCh* LCh);
-
-// Encoding /Decoding on PCS
-CMSAPI void              CMSEXPORT cmsLabEncoded2Float(cmsCIELab* Lab, const cmsUInt16Number wLab[3]);
-CMSAPI void              CMSEXPORT cmsLabEncoded2FloatV2(cmsCIELab* Lab, const cmsUInt16Number wLab[3]);
-CMSAPI void              CMSEXPORT cmsFloat2LabEncoded(cmsUInt16Number wLab[3], const cmsCIELab* Lab);
-CMSAPI void              CMSEXPORT cmsFloat2LabEncodedV2(cmsUInt16Number wLab[3], const cmsCIELab* Lab);
-CMSAPI void              CMSEXPORT cmsXYZEncoded2Float(cmsCIEXYZ* fxyz, const cmsUInt16Number XYZ[3]);
-CMSAPI void              CMSEXPORT cmsFloat2XYZEncoded(cmsUInt16Number XYZ[3], const cmsCIEXYZ* fXYZ);
-
-// DeltaE metrics
-CMSAPI cmsFloat64Number  CMSEXPORT cmsDeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2);
-CMSAPI cmsFloat64Number  CMSEXPORT cmsCIE94DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2);
-CMSAPI cmsFloat64Number  CMSEXPORT cmsBFDdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2);
-CMSAPI cmsFloat64Number  CMSEXPORT cmsCMCdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number l, cmsFloat64Number c);
-CMSAPI cmsFloat64Number  CMSEXPORT cmsCIE2000DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number Kl, cmsFloat64Number Kc, cmsFloat64Number Kh);
-
-// Temperature <-> Chromaticity (Black body)
-CMSAPI cmsBool           CMSEXPORT cmsWhitePointFromTemp(cmsCIExyY* WhitePoint, cmsFloat64Number  TempK);
-CMSAPI cmsBool           CMSEXPORT cmsTempFromWhitePoint(cmsFloat64Number* TempK, const cmsCIExyY* WhitePoint);
-
-// Chromatic adaptation
-CMSAPI cmsBool           CMSEXPORT cmsAdaptToIlluminant(cmsCIEXYZ* Result, const cmsCIEXYZ* SourceWhitePt,
-                                                                           const cmsCIEXYZ* Illuminant,
-                                                                           const cmsCIEXYZ* Value);
-
-// CIECAM02 ---------------------------------------------------------------------------------------------------
-
-// Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing
-// conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag
-// cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions.
-
-
-#define AVG_SURROUND       1
-#define DIM_SURROUND       2
-#define DARK_SURROUND      3
-#define CUTSHEET_SURROUND  4
-
-#define D_CALCULATE        (-1)
-
-typedef struct {
-    cmsCIEXYZ        whitePoint;
-    cmsFloat64Number Yb;
-    cmsFloat64Number La;
-    cmsUInt32Number  surround;
-    cmsFloat64Number D_value;
-
-    } cmsViewingConditions;
-
-CMSAPI cmsHANDLE         CMSEXPORT cmsCIECAM02Init(cmsContext ContextID, const cmsViewingConditions* pVC);
-CMSAPI void              CMSEXPORT cmsCIECAM02Done(cmsHANDLE hModel);
-CMSAPI void              CMSEXPORT cmsCIECAM02Forward(cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut);
-CMSAPI void              CMSEXPORT cmsCIECAM02Reverse(cmsHANDLE hModel, const cmsJCh* pIn,    cmsCIEXYZ* pOut);
-
-
-// Tone curves -----------------------------------------------------------------------------------------
-
-// This describes a curve segment. For a table of supported types, see the manual. User can increase the number of
-// available types by using a proper plug-in. Parametric segments allow 10 parameters at most
-
-typedef struct {
-    cmsFloat32Number   x0, x1;           // Domain; for x0 < x <= x1
-    cmsInt32Number     Type;             // Parametric type, Type == 0 means sampled segment. Negative values are reserved
-    cmsFloat64Number   Params[10];       // Parameters if Type != 0
-    cmsUInt32Number    nGridPoints;      // Number of grid points if Type == 0
-    cmsFloat32Number*  SampledPoints;    // Points to an array of floats if Type == 0
-
-} cmsCurveSegment;
-
-// The internal representation is none of your business.
-typedef struct _cms_curve_struct cmsToneCurve;
-
-CMSAPI cmsToneCurve*     CMSEXPORT cmsBuildSegmentedToneCurve(cmsContext ContextID, cmsUInt32Number nSegments, const cmsCurveSegment Segments[]);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsBuildParametricToneCurve(cmsContext ContextID, cmsInt32Number Type, const cmsFloat64Number Params[]);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsBuildGamma(cmsContext ContextID, cmsFloat64Number Gamma);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsBuildTabulatedToneCurve16(cmsContext ContextID, cmsUInt32Number nEntries, const cmsUInt16Number values[]);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsBuildTabulatedToneCurveFloat(cmsContext ContextID, cmsUInt32Number nEntries, const cmsFloat32Number values[]);
-CMSAPI void              CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve);
-CMSAPI void              CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsDupToneCurve(const cmsToneCurve* Src);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsReverseToneCurve(const cmsToneCurve* InGamma);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsReverseToneCurveEx(cmsUInt32Number nResultSamples, const cmsToneCurve* InGamma);
-CMSAPI cmsToneCurve*     CMSEXPORT cmsJoinToneCurve(cmsContext ContextID, const cmsToneCurve* X,  const cmsToneCurve* Y, cmsUInt32Number nPoints);
-CMSAPI cmsBool           CMSEXPORT cmsSmoothToneCurve(cmsToneCurve* Tab, cmsFloat64Number lambda);
-CMSAPI cmsFloat32Number  CMSEXPORT cmsEvalToneCurveFloat(const cmsToneCurve* Curve, cmsFloat32Number v);
-CMSAPI cmsUInt16Number   CMSEXPORT cmsEvalToneCurve16(const cmsToneCurve* Curve, cmsUInt16Number v);
-CMSAPI cmsBool           CMSEXPORT cmsIsToneCurveMultisegment(const cmsToneCurve* InGamma);
-CMSAPI cmsBool           CMSEXPORT cmsIsToneCurveLinear(const cmsToneCurve* Curve);
-CMSAPI cmsBool           CMSEXPORT cmsIsToneCurveMonotonic(const cmsToneCurve* t);
-CMSAPI cmsBool           CMSEXPORT cmsIsToneCurveDescending(const cmsToneCurve* t);
-CMSAPI cmsInt32Number    CMSEXPORT cmsGetToneCurveParametricType(const cmsToneCurve* t);
-CMSAPI cmsFloat64Number  CMSEXPORT cmsEstimateGamma(const cmsToneCurve* t, cmsFloat64Number Precision);
-
-CMSAPI const cmsCurveSegment* CMSEXPORT cmsGetToneCurveSegment(cmsInt32Number n, const cmsToneCurve* t);
-
-// Tone curve tabular estimation
-CMSAPI cmsUInt32Number         CMSEXPORT cmsGetToneCurveEstimatedTableEntries(const cmsToneCurve* t);
-CMSAPI const cmsUInt16Number*  CMSEXPORT cmsGetToneCurveEstimatedTable(const cmsToneCurve* t);
-
-
-// Implements pipelines of multi-processing elements -------------------------------------------------------------
-
-// Nothing to see here, move along
-typedef struct _cmsPipeline_struct cmsPipeline;
-typedef struct _cmsStage_struct cmsStage;
-
-// Those are hi-level pipelines
-CMSAPI cmsPipeline*      CMSEXPORT cmsPipelineAlloc(cmsContext ContextID, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels);
-CMSAPI void              CMSEXPORT cmsPipelineFree(cmsPipeline* lut);
-CMSAPI cmsPipeline*      CMSEXPORT cmsPipelineDup(const cmsPipeline* Orig);
-
-CMSAPI cmsContext        CMSEXPORT cmsGetPipelineContextID(const cmsPipeline* lut);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsPipelineInputChannels(const cmsPipeline* lut);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsPipelineOutputChannels(const cmsPipeline* lut);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsPipelineStageCount(const cmsPipeline* lut);
-CMSAPI cmsStage*         CMSEXPORT cmsPipelineGetPtrToFirstStage(const cmsPipeline* lut);
-CMSAPI cmsStage*         CMSEXPORT cmsPipelineGetPtrToLastStage(const cmsPipeline* lut);
-
-CMSAPI void              CMSEXPORT cmsPipelineEval16(const cmsUInt16Number In[], cmsUInt16Number Out[], const cmsPipeline* lut);
-CMSAPI void              CMSEXPORT cmsPipelineEvalFloat(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsPipeline* lut);
-CMSAPI cmsBool           CMSEXPORT cmsPipelineEvalReverseFloat(cmsFloat32Number Target[], cmsFloat32Number Result[], cmsFloat32Number Hint[], const cmsPipeline* lut);
-CMSAPI cmsBool           CMSEXPORT cmsPipelineCat(cmsPipeline* l1, const cmsPipeline* l2);
-CMSAPI cmsBool           CMSEXPORT cmsPipelineSetSaveAs8bitsFlag(cmsPipeline* lut, cmsBool On);
-
-// Where to place/locate the stages in the pipeline chain
-typedef enum { cmsAT_BEGIN, cmsAT_END } cmsStageLoc;
-
-CMSAPI cmsBool           CMSEXPORT cmsPipelineInsertStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage* mpe);
-CMSAPI void              CMSEXPORT cmsPipelineUnlinkStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage** mpe);
-
-// This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements
-// that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and
-// then a list of expected types followed with a list of double pointers to Stage elements. If
-// the function founds a match with current pipeline, it fills the pointers and returns TRUE
-// if not, returns FALSE without touching anything.
-CMSAPI cmsBool           CMSEXPORT cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, cmsUInt32Number n, ...);
-
-// Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode
-// matrices with far more precision that CLUTS
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocIdentity(cmsContext ContextID, cmsUInt32Number nChannels);
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Number nChannels, cmsToneCurve* const Curves[]);
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number Rows, cmsUInt32Number Cols, const cmsFloat64Number* Matrix, const cmsFloat64Number* Offset);
-
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table);
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table);
-
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table);
-CMSAPI cmsStage*         CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table);
-
-CMSAPI cmsStage*         CMSEXPORT cmsStageDup(cmsStage* mpe);
-CMSAPI void              CMSEXPORT cmsStageFree(cmsStage* mpe);
-CMSAPI cmsStage*         CMSEXPORT cmsStageNext(const cmsStage* mpe);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsStageInputChannels(const cmsStage* mpe);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsStageOutputChannels(const cmsStage* mpe);
-CMSAPI cmsStageSignature CMSEXPORT cmsStageType(const cmsStage* mpe);
-CMSAPI void*             CMSEXPORT cmsStageData(const cmsStage* mpe);
-CMSAPI cmsContext        CMSEXPORT cmsGetStageContextID(const cmsStage* mpe);
-
-// Sampling
-typedef cmsInt32Number (* cmsSAMPLER16)   (CMSREGISTER const cmsUInt16Number In[],
-                                           CMSREGISTER cmsUInt16Number Out[],
-                                           CMSREGISTER void * Cargo);
-
-typedef cmsInt32Number (* cmsSAMPLERFLOAT)(CMSREGISTER const cmsFloat32Number In[],
-                                           CMSREGISTER cmsFloat32Number Out[],
-                                           CMSREGISTER void * Cargo);
-
-// Use this flag to prevent changes being written to destination
-#define SAMPLER_INSPECT     0x01000000
-
-// For CLUT only
-CMSAPI cmsBool           CMSEXPORT cmsStageSampleCLut16bit(cmsStage* mpe, cmsSAMPLER16 Sampler, void* Cargo, cmsUInt32Number dwFlags);
-CMSAPI cmsBool           CMSEXPORT cmsStageSampleCLutFloat(cmsStage* mpe, cmsSAMPLERFLOAT Sampler, void* Cargo, cmsUInt32Number dwFlags);
-
-// Slicers
-CMSAPI cmsBool           CMSEXPORT cmsSliceSpace16(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[],
-                                                   cmsSAMPLER16 Sampler, void * Cargo);
-
-CMSAPI cmsBool           CMSEXPORT cmsSliceSpaceFloat(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[],
-                                                   cmsSAMPLERFLOAT Sampler, void * Cargo);
-
-// Multilocalized Unicode management ---------------------------------------------------------------------------------------
-
-typedef struct _cms_MLU_struct cmsMLU;
-
-#define  cmsNoLanguage    "\0\0"
-#define  cmsNoCountry     "\0\0"
-
-// Special language/country to retrieve unicode field for description in V2 profiles. Use with care.
-#define  cmsV2Unicode     "\xff\xff"
-
-CMSAPI cmsMLU*           CMSEXPORT cmsMLUalloc(cmsContext ContextID, cmsUInt32Number nItems);
-CMSAPI void              CMSEXPORT cmsMLUfree(cmsMLU* mlu);
-CMSAPI cmsMLU*           CMSEXPORT cmsMLUdup(const cmsMLU* mlu);
-
-CMSAPI cmsBool           CMSEXPORT cmsMLUsetASCII(cmsMLU* mlu,
-                                                  const char LanguageCode[3], const char CountryCode[3],
-                                                  const char* ASCIIString);
-CMSAPI cmsBool           CMSEXPORT cmsMLUsetWide(cmsMLU* mlu,
-                                                  const char LanguageCode[3], const char CountryCode[3],
-                                                  const wchar_t* WideString);
-CMSAPI cmsBool           CMSEXPORT cmsMLUsetUTF8(cmsMLU* mlu,
-                                                  const char LanguageCode[3], const char CountryCode[3],
-                                                  const char* UTF8String);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsMLUgetASCII(const cmsMLU* mlu,
-                                                  const char LanguageCode[3], const char CountryCode[3],
-                                                  char* Buffer,    cmsUInt32Number BufferSize);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsMLUgetWide(const cmsMLU* mlu,
-                                                 const char LanguageCode[3], const char CountryCode[3],
-                                                 wchar_t* Buffer, cmsUInt32Number BufferSize);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsMLUgetUTF8(const cmsMLU* mlu,
-                                                 const char LanguageCode[3], const char CountryCode[3],
-                                                 char* Buffer, cmsUInt32Number BufferSize);
-
-
-CMSAPI cmsBool           CMSEXPORT cmsMLUgetTranslation(const cmsMLU* mlu,
-                                                         const char LanguageCode[3], const char CountryCode[3],
-                                                         char ObtainedLanguage[3], char ObtainedCountry[3]);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsMLUtranslationsCount(const cmsMLU* mlu);
-
-CMSAPI cmsBool           CMSEXPORT cmsMLUtranslationsCodes(const cmsMLU* mlu,
-                                                             cmsUInt32Number idx,
-                                                             char LanguageCode[3],
-                                                             char CountryCode[3]);
- 
-// Undercolorremoval & black generation -------------------------------------------------------------------------------------
-
-typedef struct {
-        cmsToneCurve* Ucr;
-        cmsToneCurve* Bg;
-        cmsMLU*       Desc;
-
-} cmsUcrBg;
-
-// Screening ----------------------------------------------------------------------------------------------------------------
-
-#define cmsPRINTER_DEFAULT_SCREENS     0x0001
-#define cmsFREQUENCE_UNITS_LINES_CM    0x0000
-#define cmsFREQUENCE_UNITS_LINES_INCH  0x0002
-
-#define cmsSPOT_UNKNOWN         0
-#define cmsSPOT_PRINTER_DEFAULT 1
-#define cmsSPOT_ROUND           2
-#define cmsSPOT_DIAMOND         3
-#define cmsSPOT_ELLIPSE         4
-#define cmsSPOT_LINE            5
-#define cmsSPOT_SQUARE          6
-#define cmsSPOT_CROSS           7
-
-typedef struct {
-    cmsFloat64Number  Frequency;
-    cmsFloat64Number  ScreenAngle;
-    cmsUInt32Number   SpotShape;
-
-} cmsScreeningChannel;
-
-typedef struct {
-    cmsUInt32Number Flag;
-    cmsUInt32Number nChannels;
-    cmsScreeningChannel Channels[cmsMAXCHANNELS];
-
-} cmsScreening;
-
-
-// Named color -----------------------------------------------------------------------------------------------------------------
-
-typedef struct _cms_NAMEDCOLORLIST_struct cmsNAMEDCOLORLIST;
-
-CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsAllocNamedColorList(cmsContext ContextID,
-                                                           cmsUInt32Number n,
-                                                           cmsUInt32Number ColorantCount,
-                                                           const char* Prefix, const char* Suffix);
-
-CMSAPI void               CMSEXPORT cmsFreeNamedColorList(cmsNAMEDCOLORLIST* v);
-CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsDupNamedColorList(const cmsNAMEDCOLORLIST* v);
-CMSAPI cmsBool            CMSEXPORT cmsAppendNamedColor(cmsNAMEDCOLORLIST* v, const char* Name,
-                                                            cmsUInt16Number PCS[3],
-                                                            cmsUInt16Number Colorant[cmsMAXCHANNELS]);
-
-CMSAPI cmsUInt32Number    CMSEXPORT cmsNamedColorCount(const cmsNAMEDCOLORLIST* v);
-CMSAPI cmsInt32Number     CMSEXPORT cmsNamedColorIndex(const cmsNAMEDCOLORLIST* v, const char* Name);
-
-CMSAPI cmsBool            CMSEXPORT cmsNamedColorInfo(const cmsNAMEDCOLORLIST* NamedColorList, cmsUInt32Number nColor,
-                                                      char* Name,
-                                                      char* Prefix,
-                                                      char* Suffix,
-                                                      cmsUInt16Number* PCS,
-                                                      cmsUInt16Number* Colorant);
-
-// Retrieve named color list from transform
-CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsGetNamedColorList(cmsHTRANSFORM xform);
-
-// Profile sequence -----------------------------------------------------------------------------------------------------
-
-// Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others
-// come from Profile Sequence Identifier Tag
-typedef struct {
-
-    cmsSignature           deviceMfg;
-    cmsSignature           deviceModel;
-    cmsUInt64Number        attributes;
-    cmsTechnologySignature technology;
-    cmsProfileID           ProfileID;
-    cmsMLU*                Manufacturer;
-    cmsMLU*                Model;
-    cmsMLU*                Description;
-
-} cmsPSEQDESC;
-
-typedef struct {
-
-    cmsUInt32Number n;
-    cmsContext      ContextID;
-    cmsPSEQDESC*    seq;
-
-} cmsSEQ;
-
-CMSAPI cmsSEQ*           CMSEXPORT cmsAllocProfileSequenceDescription(cmsContext ContextID, cmsUInt32Number n);
-CMSAPI cmsSEQ*           CMSEXPORT cmsDupProfileSequenceDescription(const cmsSEQ* pseq);
-CMSAPI void              CMSEXPORT cmsFreeProfileSequenceDescription(cmsSEQ* pseq);
-
-// Dictionaries --------------------------------------------------------------------------------------------------------
-
-typedef struct _cmsDICTentry_struct {
-
-    struct _cmsDICTentry_struct* Next;
-
-    cmsMLU *DisplayName;
-    cmsMLU *DisplayValue;
-    wchar_t* Name;
-    wchar_t* Value;
-
-} cmsDICTentry;
-
-CMSAPI cmsHANDLE           CMSEXPORT cmsDictAlloc(cmsContext ContextID);
-CMSAPI void                CMSEXPORT cmsDictFree(cmsHANDLE hDict);
-CMSAPI cmsHANDLE           CMSEXPORT cmsDictDup(cmsHANDLE hDict);
-
-CMSAPI cmsBool             CMSEXPORT cmsDictAddEntry(cmsHANDLE hDict, const wchar_t* Name, const wchar_t* Value, const cmsMLU *DisplayName, const cmsMLU *DisplayValue);
-CMSAPI const cmsDICTentry* CMSEXPORT cmsDictGetEntryList(cmsHANDLE hDict);
-CMSAPI const cmsDICTentry* CMSEXPORT cmsDictNextEntry(const cmsDICTentry* e);
-
-// Access to Profile data ----------------------------------------------------------------------------------------------
-CMSAPI cmsHPROFILE       CMSEXPORT cmsCreateProfilePlaceholder(cmsContext ContextID);
-
-CMSAPI cmsContext        CMSEXPORT cmsGetProfileContextID(cmsHPROFILE hProfile);
-CMSAPI cmsInt32Number    CMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile);
-CMSAPI cmsTagSignature   CMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, cmsUInt32Number n);
-CMSAPI cmsBool           CMSEXPORT cmsIsTag(cmsHPROFILE hProfile, cmsTagSignature sig);
-
-// Read and write pre-formatted data
-CMSAPI void*             CMSEXPORT cmsReadTag(cmsHPROFILE hProfile, cmsTagSignature sig);
-CMSAPI cmsBool           CMSEXPORT cmsWriteTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data);
-CMSAPI cmsBool           CMSEXPORT cmsLinkTag(cmsHPROFILE hProfile, cmsTagSignature sig, cmsTagSignature dest);
-CMSAPI cmsTagSignature   CMSEXPORT cmsTagLinkedTo(cmsHPROFILE hProfile, cmsTagSignature sig);
-
-// Read and write raw data
-CMSAPI cmsUInt32Number   CMSEXPORT cmsReadRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, void* Buffer, cmsUInt32Number BufferSize);
-CMSAPI cmsBool           CMSEXPORT cmsWriteRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data, cmsUInt32Number Size);
-
-// Access header data
-#define cmsEmbeddedProfileFalse    0x00000000
-#define cmsEmbeddedProfileTrue     0x00000001
-#define cmsUseAnywhere             0x00000000
-#define cmsUseWithEmbeddedDataOnly 0x00000002
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetHeaderFlags(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsGetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number* Flags);
-CMSAPI void              CMSEXPORT cmsGetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID);
-CMSAPI cmsBool           CMSEXPORT cmsGetHeaderCreationDateTime(cmsHPROFILE hProfile, struct tm *Dest);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetHeaderRenderingIntent(cmsHPROFILE hProfile);
-
-CMSAPI void              CMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, cmsUInt32Number Flags);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetHeaderManufacturer(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsSetHeaderManufacturer(cmsHPROFILE hProfile, cmsUInt32Number manufacturer);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetHeaderCreator(cmsHPROFILE hProfile);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetHeaderModel(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsSetHeaderModel(cmsHPROFILE hProfile, cmsUInt32Number model);
-CMSAPI void              CMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number Flags);
-CMSAPI void              CMSEXPORT cmsSetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID);
-CMSAPI void              CMSEXPORT cmsSetHeaderRenderingIntent(cmsHPROFILE hProfile, cmsUInt32Number RenderingIntent);
-
-CMSAPI cmsColorSpaceSignature
-                         CMSEXPORT cmsGetPCS(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, cmsColorSpaceSignature pcs);
-CMSAPI cmsColorSpaceSignature
-                         CMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, cmsColorSpaceSignature sig);
-CMSAPI cmsProfileClassSignature
-                         CMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, cmsProfileClassSignature sig);
-CMSAPI void              CMSEXPORT cmsSetProfileVersion(cmsHPROFILE hProfile, cmsFloat64Number Version);
-CMSAPI cmsFloat64Number  CMSEXPORT cmsGetProfileVersion(cmsHPROFILE hProfile);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetEncodedICCversion(cmsHPROFILE hProfile);
-CMSAPI void              CMSEXPORT cmsSetEncodedICCversion(cmsHPROFILE hProfile, cmsUInt32Number Version);
-
-// How profiles may be used
-#define LCMS_USED_AS_INPUT      0
-#define LCMS_USED_AS_OUTPUT     1
-#define LCMS_USED_AS_PROOF      2
-
-CMSAPI cmsBool           CMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection);
-CMSAPI cmsBool           CMSEXPORT cmsIsMatrixShaper(cmsHPROFILE hProfile);
-CMSAPI cmsBool           CMSEXPORT cmsIsCLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection);
-
-// Translate form/to our notation to ICC
-CMSAPI cmsColorSpaceSignature   CMSEXPORT _cmsICCcolorSpace(int OurNotation);
-CMSAPI int                      CMSEXPORT _cmsLCMScolorSpace(cmsColorSpaceSignature ProfileSpace);
-
-// Deprecated, use cmsChannelsOfColorSpace instead
-CMSAPI cmsUInt32Number   CMSEXPORT cmsChannelsOf(cmsColorSpaceSignature ColorSpace);
-
-// Get number of channels of color space or -1 if color space is not listed/supported
-CMSAPI cmsInt32Number CMSEXPORT cmsChannelsOfColorSpace(cmsColorSpaceSignature ColorSpace);
-
-// Build a suitable formatter for the colorspace of this profile. nBytes=1 means 8 bits, nBytes=2 means 16 bits. 
-CMSAPI cmsUInt32Number   CMSEXPORT cmsFormatterForColorspaceOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat);
-CMSAPI cmsUInt32Number   CMSEXPORT cmsFormatterForPCSOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat);
-
-
-// Localized info
-typedef enum {
-             cmsInfoDescription  = 0,
-             cmsInfoManufacturer = 1,
-             cmsInfoModel        = 2,
-             cmsInfoCopyright    = 3
-} cmsInfoType;
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetProfileInfo(cmsHPROFILE hProfile, cmsInfoType Info,
-                                                            const char LanguageCode[3], const char CountryCode[3],
-                                                            wchar_t* Buffer, cmsUInt32Number BufferSize);
-
-CMSAPI cmsUInt32Number   CMSEXPORT cmsGetProfileInfoASCII(cmsHPROFILE hProfile, cmsInfoType Info,
-                                                            const char LanguageCode[3], const char CountryCode[3],
-                                                            char* Buffer, cmsUInt32Number BufferSize);
-
-CMSAPI cmsUInt32Number  CMSEXPORT cmsGetProfileInfoUTF8(cmsHPROFILE hProfile, cmsInfoType Info,
-                                                            const char LanguageCode[3], const char CountryCode[3],
-                                                            char* Buffer, cmsUInt32Number BufferSize);
-
-// IO handlers ----------------------------------------------------------------------------------------------------------
-
-typedef struct _cms_io_handler cmsIOHANDLER;
-
-CMSAPI cmsIOHANDLER*     CMSEXPORT cmsOpenIOhandlerFromFile(cmsContext ContextID, const char* FileName, const char* AccessMode);
-CMSAPI cmsIOHANDLER*     CMSEXPORT cmsOpenIOhandlerFromStream(cmsContext ContextID, FILE* Stream);
-CMSAPI cmsIOHANDLER*     CMSEXPORT cmsOpenIOhandlerFromMem(cmsContext ContextID, void *Buffer, cmsUInt32Number size, const char* AccessMode);
-CMSAPI cmsIOHANDLER*     CMSEXPORT cmsOpenIOhandlerFromNULL(cmsContext ContextID);
-CMSAPI cmsIOHANDLER*     CMSEXPORT cmsGetProfileIOhandler(cmsHPROFILE hProfile);
-CMSAPI cmsBool           CMSEXPORT cmsCloseIOhandler(cmsIOHANDLER* io);
-
-// MD5 message digest --------------------------------------------------------------------------------------------------
-
-CMSAPI cmsBool           CMSEXPORT cmsMD5computeID(cmsHPROFILE hProfile);
-
-// Profile high level functions ------------------------------------------------------------------------------------------
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromFileTHR(cmsContext ContextID, const char *ICCProfile, const char *sAccess);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromStreamTHR(cmsContext ContextID, FILE* ICCProfile, const char* sAccess);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromMem(const void * MemPtr, cmsUInt32Number dwSize);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromMemTHR(cmsContext ContextID, const void * MemPtr, cmsUInt32Number dwSize);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromIOhandlerTHR(cmsContext ContextID, cmsIOHANDLER* io);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsOpenProfileFromIOhandler2THR(cmsContext ContextID, cmsIOHANDLER* io, cmsBool write);
-CMSAPI cmsBool          CMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile);
-
-CMSAPI cmsBool          CMSEXPORT cmsSaveProfileToFile(cmsHPROFILE hProfile, const char* FileName);
-CMSAPI cmsBool          CMSEXPORT cmsSaveProfileToStream(cmsHPROFILE hProfile, FILE* Stream);
-CMSAPI cmsBool          CMSEXPORT cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, cmsUInt32Number* BytesNeeded);
-CMSAPI cmsUInt32Number  CMSEXPORT cmsSaveProfileToIOhandler(cmsHPROFILE hProfile, cmsIOHANDLER* io);
-
-// Predefined virtual profiles ------------------------------------------------------------------------------------------
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateRGBProfileTHR(cmsContext ContextID,
-                                                   const cmsCIExyY* WhitePoint,
-                                                   const cmsCIExyYTRIPLE* Primaries,
-                                                   cmsToneCurve* const TransferFunction[3]);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateRGBProfile(const cmsCIExyY* WhitePoint,
-                                                   const cmsCIExyYTRIPLE* Primaries,
-                                                   cmsToneCurve* const TransferFunction[3]);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateGrayProfileTHR(cmsContext ContextID,
-                                                    const cmsCIExyY* WhitePoint,
-                                                    const cmsToneCurve* TransferFunction);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateGrayProfile(const cmsCIExyY* WhitePoint,
-                                                    const cmsToneCurve* TransferFunction);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateLinearizationDeviceLinkTHR(cmsContext ContextID,
-                                                                cmsColorSpaceSignature ColorSpace,
-                                                                cmsToneCurve* const TransferFunctions[]);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateLinearizationDeviceLink(cmsColorSpaceSignature ColorSpace,
-                                                                cmsToneCurve* const TransferFunctions[]);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateInkLimitingDeviceLinkTHR(cmsContext ContextID,
-                                                              cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateInkLimitingDeviceLink(cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateDeviceLinkFromCubeFile(const char* cFileName);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateDeviceLinkFromCubeFileTHR(cmsContext ContextID, const char* cFileName);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateLab2ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateLab2Profile(const cmsCIExyY* WhitePoint);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateLab4ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateLab4Profile(const cmsCIExyY* WhitePoint);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateXYZProfileTHR(cmsContext ContextID);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateXYZProfile(void);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreate_sRGBProfileTHR(cmsContext ContextID);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreate_sRGBProfile(void);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreate_OkLabProfile(cmsContext ctx);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateBCHSWabstractProfileTHR(cmsContext ContextID,
-                                                             cmsUInt32Number nLUTPoints,
-                                                             cmsFloat64Number Bright,
-                                                             cmsFloat64Number Contrast,
-                                                             cmsFloat64Number Hue,
-                                                             cmsFloat64Number Saturation,
-                                                             cmsUInt32Number TempSrc,
-                                                             cmsUInt32Number TempDest);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateBCHSWabstractProfile(cmsUInt32Number nLUTPoints,
-                                                             cmsFloat64Number Bright,
-                                                             cmsFloat64Number Contrast,
-                                                             cmsFloat64Number Hue,
-                                                             cmsFloat64Number Saturation,
-                                                             cmsUInt32Number TempSrc,
-                                                             cmsUInt32Number TempDest);
-
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateNULLProfileTHR(cmsContext ContextID);
-CMSAPI cmsHPROFILE      CMSEXPORT cmsCreateNULLProfile(void);
-
-// Converts a transform to a devicelink profile
-CMSAPI cmsHPROFILE      CMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, cmsFloat64Number Version, cmsUInt32Number dwFlags);
-
-// Intents ----------------------------------------------------------------------------------------------
-
-// ICC Intents
-#define INTENT_PERCEPTUAL                              0
-#define INTENT_RELATIVE_COLORIMETRIC                   1
-#define INTENT_SATURATION                              2
-#define INTENT_ABSOLUTE_COLORIMETRIC                   3
-
-// Non-ICC intents
-#define INTENT_PRESERVE_K_ONLY_PERCEPTUAL             10
-#define INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC  11
-#define INTENT_PRESERVE_K_ONLY_SATURATION             12
-#define INTENT_PRESERVE_K_PLANE_PERCEPTUAL            13
-#define INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC 14
-#define INTENT_PRESERVE_K_PLANE_SATURATION            15
-
-// Call with NULL as parameters to get the intent count
-CMSAPI cmsUInt32Number  CMSEXPORT cmsGetSupportedIntents(cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions);
-CMSAPI cmsUInt32Number  CMSEXPORT cmsGetSupportedIntentsTHR(cmsContext ContextID, cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions);
-
-// Flags
-
-#define cmsFLAGS_NOCACHE                  0x0040    // Inhibit 1-pixel cache
-#define cmsFLAGS_NOOPTIMIZE               0x0100    // Inhibit optimizations
-#define cmsFLAGS_NULLTRANSFORM            0x0200    // Don't transform anyway
-
-// Proofing flags
-#define cmsFLAGS_GAMUTCHECK               0x1000    // Out of Gamut alarm
-#define cmsFLAGS_SOFTPROOFING             0x4000    // Do softproofing
-
-// Misc
-#define cmsFLAGS_BLACKPOINTCOMPENSATION   0x2000
-#define cmsFLAGS_NOWHITEONWHITEFIXUP      0x0004    // Don't fix scum dot
-#define cmsFLAGS_HIGHRESPRECALC           0x0400    // Use more memory to give better accuracy
-#define cmsFLAGS_LOWRESPRECALC            0x0800    // Use less memory to minimize resources
-
-// For devicelink creation
-#define cmsFLAGS_8BITS_DEVICELINK         0x0008   // Create 8 bits devicelinks
-#define cmsFLAGS_GUESSDEVICECLASS         0x0020   // Guess device class (for transform2devicelink)
-#define cmsFLAGS_KEEP_SEQUENCE            0x0080   // Keep profile sequence for devicelink creation
-
-// Specific to a particular optimizations
-#define cmsFLAGS_FORCE_CLUT               0x0002    // Force CLUT optimization
-#define cmsFLAGS_CLUT_POST_LINEARIZATION  0x0001    // create postlinearization tables if possible
-#define cmsFLAGS_CLUT_PRE_LINEARIZATION   0x0010    // create prelinearization tables if possible
-
-// Specific to unbounded mode
-#define cmsFLAGS_NONEGATIVES              0x8000    // Prevent negative numbers in floating point transforms
-
-// Copy alpha channels when transforming           
-#define cmsFLAGS_COPY_ALPHA               0x04000000 // Alpha channels are copied on cmsDoTransform()
-
-// Fine-tune control over number of gridpoints
-#define cmsFLAGS_GRIDPOINTS(n)           (((n) & 0xFF) << 16)
-
-// CRD special
-#define cmsFLAGS_NODEFAULTRESOURCEDEF     0x01000000
-
-// Transforms ---------------------------------------------------------------------------------------------------
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateTransformTHR(cmsContext ContextID,
-                                                  cmsHPROFILE Input,
-                                                  cmsUInt32Number InputFormat,
-                                                  cmsHPROFILE Output,
-                                                  cmsUInt32Number OutputFormat,
-                                                  cmsUInt32Number Intent,
-                                                  cmsUInt32Number dwFlags);
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateTransform(cmsHPROFILE Input,
-                                                  cmsUInt32Number InputFormat,
-                                                  cmsHPROFILE Output,
-                                                  cmsUInt32Number OutputFormat,
-                                                  cmsUInt32Number Intent,
-                                                  cmsUInt32Number dwFlags);
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateProofingTransformTHR(cmsContext ContextID,
-                                                  cmsHPROFILE Input,
-                                                  cmsUInt32Number InputFormat,
-                                                  cmsHPROFILE Output,
-                                                  cmsUInt32Number OutputFormat,
-                                                  cmsHPROFILE Proofing,
-                                                  cmsUInt32Number Intent,
-                                                  cmsUInt32Number ProofingIntent,
-                                                  cmsUInt32Number dwFlags);
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateProofingTransform(cmsHPROFILE Input,
-                                                  cmsUInt32Number InputFormat,
-                                                  cmsHPROFILE Output,
-                                                  cmsUInt32Number OutputFormat,
-                                                  cmsHPROFILE Proofing,
-                                                  cmsUInt32Number Intent,
-                                                  cmsUInt32Number ProofingIntent,
-                                                  cmsUInt32Number dwFlags);
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateMultiprofileTransformTHR(cmsContext ContextID,
-                                                  cmsHPROFILE hProfiles[],
-                                                  cmsUInt32Number nProfiles,
-                                                  cmsUInt32Number InputFormat,
-                                                  cmsUInt32Number OutputFormat,
-                                                  cmsUInt32Number Intent,
-                                                  cmsUInt32Number dwFlags);
-
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[],
-                                                  cmsUInt32Number nProfiles,
-                                                  cmsUInt32Number InputFormat,
-                                                  cmsUInt32Number OutputFormat,
-                                                  cmsUInt32Number Intent,
-                                                  cmsUInt32Number dwFlags);
-
-
-CMSAPI cmsHTRANSFORM    CMSEXPORT cmsCreateExtendedTransform(cmsContext ContextID,
-                                                   cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[],
-                                                   cmsBool  BPC[],
-                                                   cmsUInt32Number Intents[],
-                                                   cmsFloat64Number AdaptationStates[],
-                                                   cmsHPROFILE hGamutProfile,
-                                                   cmsUInt32Number nGamutPCSposition,
-                                                   cmsUInt32Number InputFormat,
-                                                   cmsUInt32Number OutputFormat,
-                                                   cmsUInt32Number dwFlags);
-
-CMSAPI void             CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform);
-
-CMSAPI void             CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform,
-                                                 const void * InputBuffer,
-                                                 void * OutputBuffer,
-                                                 cmsUInt32Number Size);
-
-CMSAPI void             CMSEXPORT cmsDoTransformStride(cmsHTRANSFORM Transform,   // Deprecated
-                                                 const void * InputBuffer,
-                                                 void * OutputBuffer,
-                                                 cmsUInt32Number Size,
-                                                 cmsUInt32Number Stride);
-
-CMSAPI void             CMSEXPORT cmsDoTransformLineStride(cmsHTRANSFORM  Transform,
-                                                 const void* InputBuffer,
-                                                 void* OutputBuffer,
-                                                 cmsUInt32Number PixelsPerLine,
-                                                 cmsUInt32Number LineCount,
-                                                 cmsUInt32Number BytesPerLineIn,
-                                                 cmsUInt32Number BytesPerLineOut,
-                                                 cmsUInt32Number BytesPerPlaneIn,
-                                                 cmsUInt32Number BytesPerPlaneOut);
-
-
-CMSAPI void             CMSEXPORT cmsSetAlarmCodes(const cmsUInt16Number NewAlarm[cmsMAXCHANNELS]);
-CMSAPI void             CMSEXPORT cmsGetAlarmCodes(cmsUInt16Number NewAlarm[cmsMAXCHANNELS]);
-
-
-CMSAPI void             CMSEXPORT cmsSetAlarmCodesTHR(cmsContext ContextID, 
-                                                          const cmsUInt16Number AlarmCodes[cmsMAXCHANNELS]);
-CMSAPI void             CMSEXPORT cmsGetAlarmCodesTHR(cmsContext ContextID, 
-                                                          cmsUInt16Number AlarmCodes[cmsMAXCHANNELS]);
-
-
-
-// Adaptation state for absolute colorimetric intent
-CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationState(cmsFloat64Number d);
-CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationStateTHR(cmsContext ContextID, cmsFloat64Number d);
-
-
-
-// Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed
-CMSAPI cmsContext       CMSEXPORT cmsGetTransformContextID(cmsHTRANSFORM hTransform);
-
-// Grab the input/output formats
-CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformInputFormat(cmsHTRANSFORM hTransform);
-CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformOutputFormat(cmsHTRANSFORM hTransform);
-
-// For backwards compatibility
-CMSAPI cmsBool          CMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform,
-                                                         cmsUInt32Number InputFormat,
-                                                         cmsUInt32Number OutputFormat);
-
-
-
-// PostScript ColorRenderingDictionary and ColorSpaceArray ----------------------------------------------------
-
-typedef enum { cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD } cmsPSResourceType;
-
-// lcms2 unified method to access postscript color resources
-CMSAPI cmsUInt32Number  CMSEXPORT cmsGetPostScriptColorResource(cmsContext ContextID,
-                                                                cmsPSResourceType Type,
-                                                                cmsHPROFILE hProfile,
-                                                                cmsUInt32Number Intent,
-                                                                cmsUInt32Number dwFlags,
-                                                                cmsIOHANDLER* io);
-
-CMSAPI cmsUInt32Number  CMSEXPORT cmsGetPostScriptCSA(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen);
-CMSAPI cmsUInt32Number  CMSEXPORT cmsGetPostScriptCRD(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen);
-
-
-// IT8.7 / CGATS.17-200x handling -----------------------------------------------------------------------------
-
-CMSAPI cmsHANDLE        CMSEXPORT cmsIT8Alloc(cmsContext ContextID);
-CMSAPI void             CMSEXPORT cmsIT8Free(cmsHANDLE hIT8);
-
-// Tables
-CMSAPI cmsUInt32Number  CMSEXPORT cmsIT8TableCount(cmsHANDLE hIT8);
-CMSAPI cmsInt32Number   CMSEXPORT cmsIT8SetTable(cmsHANDLE hIT8, cmsUInt32Number nTable);
-
-// Persistence
-CMSAPI cmsHANDLE        CMSEXPORT cmsIT8LoadFromFile(cmsContext ContextID, const char* cFileName);
-CMSAPI cmsHANDLE        CMSEXPORT cmsIT8LoadFromMem(cmsContext ContextID, const void *Ptr, cmsUInt32Number len);
-// CMSAPI cmsHANDLE        CMSEXPORT cmsIT8LoadFromIOhandler(cmsContext ContextID, cmsIOHANDLER* io);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SaveToFile(cmsHANDLE hIT8, const char* cFileName);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number* BytesNeeded);
-
-// Properties
-CMSAPI const char*      CMSEXPORT cmsIT8GetSheetType(cmsHANDLE hIT8);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetSheetType(cmsHANDLE hIT8, const char* Type);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetComment(cmsHANDLE hIT8, const char* cComment);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char* cProp, const char *Str);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetPropertyDbl(cmsHANDLE hIT8, const char* cProp, cmsFloat64Number Val);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetPropertyHex(cmsHANDLE hIT8, const char* cProp, cmsUInt32Number Val);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetPropertyUncooked(cmsHANDLE hIT8, const char* Key, const char* Buffer);
-
-
-CMSAPI const char*      CMSEXPORT cmsIT8GetProperty(cmsHANDLE hIT8, const char* cProp);
-CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetPropertyDbl(cmsHANDLE hIT8, const char* cProp);
-CMSAPI const char*      CMSEXPORT cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char *SubKey);
-CMSAPI cmsUInt32Number  CMSEXPORT cmsIT8EnumProperties(cmsHANDLE hIT8, char ***PropertyNames);
-CMSAPI cmsUInt32Number  CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames);
-
-// Datasets
-CMSAPI const char*      CMSEXPORT cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col);
-CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataRowColDbl(cmsHANDLE hIT8, int row, int col);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetDataRowCol(cmsHANDLE hIT8, int row, int col,
-                                                const char* Val);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetDataRowColDbl(cmsHANDLE hIT8, int row, int col,
-                                                cmsFloat64Number Val);
-
-CMSAPI const char*      CMSEXPORT cmsIT8GetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample);
-
-
-CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataDbl(cmsHANDLE hIT8, const char* cPatch, const char* cSample);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetData(cmsHANDLE hIT8, const char* cPatch,
-                                                const char* cSample,
-                                                const char *Val);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetDataDbl(cmsHANDLE hIT8, const char* cPatch,
-                                                const char* cSample,
-                                                cmsFloat64Number Val);
-
-CMSAPI int              CMSEXPORT cmsIT8FindDataFormat(cmsHANDLE hIT8, const char* cSample);
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetDataFormat(cmsHANDLE hIT8, int n, const char *Sample);
-CMSAPI int              CMSEXPORT cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames);
-
-CMSAPI const char*      CMSEXPORT cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char* buffer);
-CMSAPI int              CMSEXPORT cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch);
-
-// The LABEL extension
-CMSAPI int              CMSEXPORT cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType);
-
-CMSAPI cmsBool          CMSEXPORT cmsIT8SetIndexColumn(cmsHANDLE hIT8, const char* cSample);
-
-// Formatter for double
-CMSAPI void             CMSEXPORT cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char* Formatter);
-
-// Gamut boundary description routines ------------------------------------------------------------------------------
-
-CMSAPI cmsHANDLE        CMSEXPORT cmsGBDAlloc(cmsContext ContextID);
-CMSAPI void             CMSEXPORT cmsGBDFree(cmsHANDLE hGBD);
-CMSAPI cmsBool          CMSEXPORT cmsGDBAddPoint(cmsHANDLE hGBD, const cmsCIELab* Lab);
-CMSAPI cmsBool          CMSEXPORT cmsGDBCompute(cmsHANDLE  hGDB, cmsUInt32Number dwFlags);
-CMSAPI cmsBool          CMSEXPORT cmsGDBCheckPoint(cmsHANDLE hGBD, const cmsCIELab* Lab);
-
-// Feature detection  ----------------------------------------------------------------------------------------------
-
-// Estimate the black point
-CMSAPI cmsBool          CMSEXPORT cmsDetectBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags);
-CMSAPI cmsBool          CMSEXPORT cmsDetectDestinationBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags);
-
-// Estimate total area coverage
-CMSAPI cmsFloat64Number CMSEXPORT cmsDetectTAC(cmsHPROFILE hProfile);
-
-// Estimate gamma space, always positive. Returns -1 on error.
-CMSAPI cmsFloat64Number CMSEXPORT cmsDetectRGBProfileGamma(cmsHPROFILE hProfile, cmsFloat64Number threshold);
-
-// Poor man's gamut mapping
-CMSAPI cmsBool          CMSEXPORT cmsDesaturateLab(cmsCIELab* Lab,
-                                                   double amax, double amin,
-                                                   double bmax, double bmin);
-
-#ifndef CMS_USE_CPP_API
-#   ifdef __cplusplus
-    }
-#   endif
-#endif
-
-#define _lcms2_H
-#endif
diff --git a/includes/lcms2_plugin.h b/includes/lcms2_plugin.h
deleted file mode 100644
index 89b5199..0000000
--- a/includes/lcms2_plugin.h
+++ /dev/null
@@ -1,700 +0,0 @@
-//---------------------------------------------------------------------------------
-//
-//  Little Color Management System
-//  Copyright (c) 1998-2024 Marti Maria Saguer
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the Software
-// is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//---------------------------------------------------------------------------------
-//
-// This is the plug-in header file. Normal LittleCMS clients should not use it.
-// It is provided for plug-in writers that may want to access the support
-// functions to do low level operations. All plug-in related structures
-// are defined here. Including this file forces to include the standard API too.
-
-#ifndef _lcms_plugin_H
-
-// Deal with Microsoft's attempt at deprecating C standard runtime functions
-#ifdef _MSC_VER
-#    if (_MSC_VER >= 1400)
-#      ifndef _CRT_SECURE_NO_DEPRECATE
-#        define _CRT_SECURE_NO_DEPRECATE
-#      endif
-#      ifndef _CRT_SECURE_NO_WARNINGS
-#        define _CRT_SECURE_NO_WARNINGS
-#      endif
-#    endif
-#endif
-
-#ifndef _lcms2_H
-#include "lcms2.h"
-#endif
-
-// We need some standard C functions.
-#include 
-#include 
-#include 
-#include 
-#include 
-
-
-#ifndef CMS_USE_CPP_API
-#   ifdef __cplusplus
-extern "C" {
-#   endif
-#endif
-
-// Vector & Matrix operations -----------------------------------------------------------------------
-
-// Axis of the matrix/array. No specific meaning at all.
-#define VX      0
-#define VY      1
-#define VZ      2
-
-// Vectors
-typedef struct {
-    cmsFloat64Number n[3];
-
-    } cmsVEC3;
-
-// 3x3 Matrix
-typedef struct {
-    cmsVEC3 v[3];
-
-    } cmsMAT3;
-
-CMSAPI void               CMSEXPORT _cmsVEC3init(cmsVEC3* r, cmsFloat64Number x, cmsFloat64Number y, cmsFloat64Number z);
-CMSAPI void               CMSEXPORT _cmsVEC3minus(cmsVEC3* r, const cmsVEC3* a, const cmsVEC3* b);
-CMSAPI void               CMSEXPORT _cmsVEC3cross(cmsVEC3* r, const cmsVEC3* u, const cmsVEC3* v);
-CMSAPI cmsFloat64Number   CMSEXPORT _cmsVEC3dot(const cmsVEC3* u, const cmsVEC3* v);
-CMSAPI cmsFloat64Number   CMSEXPORT _cmsVEC3length(const cmsVEC3* a);
-CMSAPI cmsFloat64Number   CMSEXPORT _cmsVEC3distance(const cmsVEC3* a, const cmsVEC3* b);
-
-CMSAPI void               CMSEXPORT _cmsMAT3identity(cmsMAT3* a);
-CMSAPI cmsBool            CMSEXPORT _cmsMAT3isIdentity(const cmsMAT3* a);
-CMSAPI void               CMSEXPORT _cmsMAT3per(cmsMAT3* r, const cmsMAT3* a, const cmsMAT3* b);
-CMSAPI cmsBool            CMSEXPORT _cmsMAT3inverse(const cmsMAT3* a, cmsMAT3* b);
-CMSAPI cmsBool            CMSEXPORT _cmsMAT3solve(cmsVEC3* x, cmsMAT3* a, cmsVEC3* b);
-CMSAPI void               CMSEXPORT _cmsMAT3eval(cmsVEC3* r, const cmsMAT3* a, const cmsVEC3* v);
-
-
-// MD5 low level  -------------------------------------------------------------------------------------
-
-CMSAPI cmsHANDLE          CMSEXPORT cmsMD5alloc(cmsContext ContextID);
-CMSAPI void               CMSEXPORT cmsMD5add(cmsHANDLE Handle, const cmsUInt8Number* buf, cmsUInt32Number len);
-CMSAPI void               CMSEXPORT cmsMD5finish(cmsProfileID* ProfileID, cmsHANDLE Handle);
-
-// Error logging  -------------------------------------------------------------------------------------
-
-CMSAPI void               CMSEXPORT  cmsSignalError(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *ErrorText, ...);
-
-// Memory management ----------------------------------------------------------------------------------
-
-CMSAPI void*              CMSEXPORT _cmsMalloc(cmsContext ContextID, cmsUInt32Number size);
-CMSAPI void*              CMSEXPORT _cmsMallocZero(cmsContext ContextID, cmsUInt32Number size);
-CMSAPI void*              CMSEXPORT _cmsCalloc(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size);
-CMSAPI void*              CMSEXPORT _cmsRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize);
-CMSAPI void               CMSEXPORT _cmsFree(cmsContext ContextID, void* Ptr);
-CMSAPI void*              CMSEXPORT _cmsDupMem(cmsContext ContextID, const void* Org, cmsUInt32Number size);
-
-// I/O handler ----------------------------------------------------------------------------------
-
-struct _cms_io_handler {
-
-    void* stream;   // Associated stream, which is implemented differently depending on media.
-
-    cmsContext        ContextID;
-    cmsUInt32Number   UsedSpace;
-    cmsUInt32Number   ReportedSize;
-    char              PhysicalFile[cmsMAX_PATH];
-
-    cmsUInt32Number   (* Read)(struct _cms_io_handler* iohandler, void *Buffer,
-                                                                  cmsUInt32Number size,
-                                                                  cmsUInt32Number count);
-    cmsBool           (* Seek)(struct _cms_io_handler* iohandler, cmsUInt32Number offset);
-    cmsBool           (* Close)(struct _cms_io_handler* iohandler);
-    cmsUInt32Number   (* Tell)(struct _cms_io_handler* iohandler);
-    cmsBool           (* Write)(struct _cms_io_handler* iohandler, cmsUInt32Number size,
-                                                                   const void* Buffer);
-};
-
-// Endianness adjust functions
-CMSAPI cmsUInt16Number   CMSEXPORT  _cmsAdjustEndianess16(cmsUInt16Number Word);
-CMSAPI cmsUInt32Number   CMSEXPORT  _cmsAdjustEndianess32(cmsUInt32Number Value);
-CMSAPI void              CMSEXPORT  _cmsAdjustEndianess64(cmsUInt64Number* Result, cmsUInt64Number* QWord);
-
-// Helper IO functions
-CMSAPI cmsBool           CMSEXPORT  _cmsReadUInt8Number(cmsIOHANDLER* io,  cmsUInt8Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsReadUInt16Number(cmsIOHANDLER* io, cmsUInt16Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsReadUInt32Number(cmsIOHANDLER* io, cmsUInt32Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsReadFloat32Number(cmsIOHANDLER* io, cmsFloat32Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsReadUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsRead15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsReadXYZNumber(cmsIOHANDLER* io, cmsCIEXYZ* XYZ);
-CMSAPI cmsBool           CMSEXPORT  _cmsReadUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, cmsUInt16Number* Array);
-
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteUInt8Number(cmsIOHANDLER* io, cmsUInt8Number n);
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteUInt16Number(cmsIOHANDLER* io, cmsUInt16Number n);
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteUInt32Number(cmsIOHANDLER* io, cmsUInt32Number n);
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteFloat32Number(cmsIOHANDLER* io, cmsFloat32Number n);
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n);
-CMSAPI cmsBool           CMSEXPORT  _cmsWrite15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number n);
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteXYZNumber(cmsIOHANDLER* io, const cmsCIEXYZ* XYZ);
-CMSAPI cmsBool           CMSEXPORT  _cmsWriteUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, const cmsUInt16Number* Array);
-
-// ICC base tag
-typedef struct {
-    cmsTagTypeSignature  sig;
-    cmsInt8Number        reserved[4];
-
-} _cmsTagBase;
-
-// Type base helper functions
-CMSAPI cmsTagTypeSignature  CMSEXPORT _cmsReadTypeBase(cmsIOHANDLER* io);
-CMSAPI cmsBool              CMSEXPORT _cmsWriteTypeBase(cmsIOHANDLER* io, cmsTagTypeSignature sig);
-
-// Alignment functions
-CMSAPI cmsBool             CMSEXPORT _cmsReadAlignment(cmsIOHANDLER* io);
-CMSAPI cmsBool             CMSEXPORT _cmsWriteAlignment(cmsIOHANDLER* io);
-
-// To deal with text streams. 2K at most
-CMSAPI cmsBool             CMSEXPORT _cmsIOPrintf(cmsIOHANDLER* io, const char* frm, ...);
-
-// Fixed point helper functions
-CMSAPI cmsFloat64Number    CMSEXPORT _cms8Fixed8toDouble(cmsUInt16Number fixed8);
-CMSAPI cmsUInt16Number     CMSEXPORT _cmsDoubleTo8Fixed8(cmsFloat64Number val);
-
-CMSAPI cmsFloat64Number    CMSEXPORT _cms15Fixed16toDouble(cmsS15Fixed16Number fix32);
-CMSAPI cmsS15Fixed16Number CMSEXPORT _cmsDoubleTo15Fixed16(cmsFloat64Number v);
-
-// Date/time helper functions
-CMSAPI void                CMSEXPORT _cmsEncodeDateTimeNumber(cmsDateTimeNumber *Dest, const struct tm *Source);
-CMSAPI void                CMSEXPORT _cmsDecodeDateTimeNumber(const cmsDateTimeNumber *Source, struct tm *Dest);
-
-//----------------------------------------------------------------------------------------------------------
-
-// Shared callbacks for user data
-typedef void     (* _cmsFreeUserDataFn)(cmsContext ContextID, void* Data);
-typedef void*    (* _cmsDupUserDataFn)(cmsContext ContextID, const void* Data);
-
-//----------------------------------------------------------------------------------------------------------
-
-// Plug-in foundation
-#define cmsPluginMagicNumber                 0x61637070     // 'acpp'
-
-#define cmsPluginMemHandlerSig               0x6D656D48     // 'memH'
-#define cmsPluginInterpolationSig            0x696E7048     // 'inpH'
-#define cmsPluginParametricCurveSig          0x70617248     // 'parH'
-#define cmsPluginFormattersSig               0x66726D48     // 'frmH
-#define cmsPluginTagTypeSig                  0x74797048     // 'typH'
-#define cmsPluginTagSig                      0x74616748     // 'tagH'
-#define cmsPluginRenderingIntentSig          0x696E7448     // 'intH'
-#define cmsPluginMultiProcessElementSig      0x6D706548     // 'mpeH'
-#define cmsPluginOptimizationSig             0x6F707448     // 'optH'
-#define cmsPluginTransformSig                0x7A666D48     // 'xfmH'
-#define cmsPluginMutexSig                    0x6D747A48     // 'mtxH'
-#define cmsPluginParalellizationSig          0x70726C48     // 'prlH
-
-typedef struct _cmsPluginBaseStruct {
-
-        cmsUInt32Number                Magic;               // 'acpp' signature
-        cmsUInt32Number                ExpectedVersion;     // Expected version of LittleCMS
-        cmsUInt32Number                Type;                // Type of plug-in
-        struct _cmsPluginBaseStruct*   Next;                // For multiple plugin definition. NULL for end of list.
-
-} cmsPluginBase;
-
-// Maximum number of types in a plugin array
-#define MAX_TYPES_IN_LCMS_PLUGIN    20
-
-//----------------------------------------------------------------------------------------------------------
-
-// Memory handler. Each new plug-in type replaces current behaviour
-
-typedef void* (* _cmsMallocFnPtrType)(cmsContext ContextID, cmsUInt32Number size); 
-typedef void  (* _cmsFreeFnPtrType)(cmsContext ContextID, void *Ptr);
-typedef void* (* _cmsReallocFnPtrType)(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize);
-
-typedef void* (* _cmsMalloZerocFnPtrType)(cmsContext ContextID, cmsUInt32Number size); 
-typedef void* (* _cmsCallocFnPtrType)(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size);
-typedef void* (* _cmsDupFnPtrType)(cmsContext ContextID, const void* Org, cmsUInt32Number size);
-
-typedef struct {
-
-        cmsPluginBase base;
-
-        // Required
-        _cmsMallocFnPtrType  MallocPtr;
-        _cmsFreeFnPtrType    FreePtr;
-        _cmsReallocFnPtrType ReallocPtr;
-
-        // Optional
-       _cmsMalloZerocFnPtrType MallocZeroPtr;
-       _cmsCallocFnPtrType     CallocPtr;
-       _cmsDupFnPtrType        DupPtr;
-
-} cmsPluginMemHandler;
-
-
-// ------------------------------------------------------------------------------------------------------------------
-
-// Interpolation. 16 bits and floating point versions.
-struct _cms_interp_struc;
-
-// Interpolation callbacks
-
-// 16 bits forward interpolation. This function performs precision-limited linear interpolation
-// and is supposed to be quite fast. Implementation may be tetrahedral or trilinear, and plug-ins may
-// choose to implement any other interpolation algorithm.
-typedef void (* _cmsInterpFn16)(CMSREGISTER const cmsUInt16Number Input[],
-                                CMSREGISTER cmsUInt16Number Output[],
-                                CMSREGISTER const struct _cms_interp_struc* p);
-
-// Floating point forward interpolation. Full precision interpolation using floats. This is not a
-// time critical function. Implementation may be tetrahedral or trilinear, and plug-ins may
-// choose to implement any other interpolation algorithm.
-typedef void (* _cmsInterpFnFloat)(cmsFloat32Number const Input[],
-                                   cmsFloat32Number Output[],
-                                   const struct _cms_interp_struc* p);
-
-
-
-// This type holds a pointer to an interpolator that can be either 16 bits or float
-typedef union {
-    _cmsInterpFn16       Lerp16;            // Forward interpolation in 16 bits
-    _cmsInterpFnFloat    LerpFloat;         // Forward interpolation in floating point
-} cmsInterpFunction;
-
-// Flags for interpolator selection
-#define CMS_LERP_FLAGS_16BITS             0x0000        // The default
-#define CMS_LERP_FLAGS_FLOAT              0x0001        // Requires different implementation
-#define CMS_LERP_FLAGS_TRILINEAR          0x0100        // Hint only
-
-
-#define MAX_INPUT_DIMENSIONS 15
-
-typedef struct _cms_interp_struc {  // Used on all interpolations. Supplied by lcms2 when calling the interpolation function
-
-    cmsContext ContextID;     // The calling thread
-
-    cmsUInt32Number dwFlags;  // Keep original flags
-    cmsUInt32Number nInputs;  // != 1 only in 3D interpolation
-    cmsUInt32Number nOutputs; // != 1 only in 3D interpolation
-
-    cmsUInt32Number nSamples[MAX_INPUT_DIMENSIONS];  // Valid on all kinds of tables
-    cmsUInt32Number Domain[MAX_INPUT_DIMENSIONS];    // Domain = nSamples - 1
-
-    cmsUInt32Number opta[MAX_INPUT_DIMENSIONS];     // Optimization for 3D CLUT. This is the number of nodes premultiplied for each
-                                                    // dimension. For example, in 7 nodes, 7, 7^2 , 7^3, 7^4, etc. On non-regular
-                                                    // Samplings may vary according of the number of nodes for each dimension.
-
-    const void *Table;                // Points to the actual interpolation table
-    cmsInterpFunction Interpolation;  // Points to the function to do the interpolation
-
- } cmsInterpParams;
-
-// Interpolators factory
-typedef cmsInterpFunction (* cmsInterpFnFactory)(cmsUInt32Number nInputChannels, cmsUInt32Number nOutputChannels, cmsUInt32Number dwFlags);
-
-// The plug-in
-typedef struct {
-    cmsPluginBase base;
-
-    // Points to a user-supplied function which implements the factory
-    cmsInterpFnFactory InterpolatorsFactory;
-
-} cmsPluginInterpolation;
-
-//----------------------------------------------------------------------------------------------------------
-
-// Parametric curves. A negative type means same function but analytically inverted. Max. number of params is 10
-
-// Evaluator callback for user-supplied parametric curves. May implement more than one type
-typedef  cmsFloat64Number (* cmsParametricCurveEvaluator)(cmsInt32Number Type, const cmsFloat64Number Params[10], cmsFloat64Number R);
-
-// Plug-in may implement an arbitrary number of parametric curves
-typedef struct {
-    cmsPluginBase base;
-
-    cmsUInt32Number nFunctions;                                     // Number of supported functions
-    cmsUInt32Number FunctionTypes[MAX_TYPES_IN_LCMS_PLUGIN];        // The identification types
-    cmsUInt32Number ParameterCount[MAX_TYPES_IN_LCMS_PLUGIN];       // Number of parameters for each function
-
-    cmsParametricCurveEvaluator    Evaluator;                       // The evaluator
-
-} cmsPluginParametricCurves;
-//----------------------------------------------------------------------------------------------------------
-
-// Formatters. This plug-in adds new handlers, replacing them if they already exist. Formatters dealing with
-// cmsFloat32Number (bps = 4) or double (bps = 0) types are requested via FormatterFloat callback. Others come across
-// Formatter16 callback
-
-struct _cmstransform_struct;
-
-typedef cmsUInt8Number* (* cmsFormatter16)(CMSREGISTER struct _cmstransform_struct* CMMcargo,
-                                           CMSREGISTER cmsUInt16Number Values[],
-                                           CMSREGISTER cmsUInt8Number* Buffer,
-                                           CMSREGISTER cmsUInt32Number Stride);
-
-typedef cmsUInt8Number* (* cmsFormatterFloat)(struct _cmstransform_struct* CMMcargo,
-                                              cmsFloat32Number Values[],
-                                              cmsUInt8Number*  Buffer,
-                                              cmsUInt32Number  Stride);
-
-// This type holds a pointer to a formatter that can be either 16 bits or cmsFloat32Number
-typedef union {
-    cmsFormatter16    Fmt16;
-    cmsFormatterFloat FmtFloat;
-
-} cmsFormatter;
-
-#define CMS_PACK_FLAGS_16BITS       0x0000
-#define CMS_PACK_FLAGS_FLOAT        0x0001
-
-typedef enum { cmsFormatterInput=0, cmsFormatterOutput=1 } cmsFormatterDirection;
-
-typedef cmsFormatter (* cmsFormatterFactory)(cmsUInt32Number Type,           // Specific type, i.e. TYPE_RGB_8
-                                             cmsFormatterDirection Dir,
-                                             cmsUInt32Number dwFlags);      // precision
-
-// Plug-in may implement an arbitrary number of formatters
-typedef struct {
-    cmsPluginBase          base;
-    cmsFormatterFactory    FormattersFactory;
-
-} cmsPluginFormatters;
-
-//----------------------------------------------------------------------------------------------------------
-
-// Tag type handler. Each type is free to return anything it wants, and it is up to the caller to
-// know in advance what is the type contained in the tag.
-typedef struct _cms_typehandler_struct {
-
-        cmsTagTypeSignature Signature;     // The signature of the type
-
-        // Allocates and reads items
-        void *   (* ReadPtr)(struct _cms_typehandler_struct* self,
-                             cmsIOHANDLER*      io,
-                             cmsUInt32Number*   nItems,
-                             cmsUInt32Number    SizeOfTag);
-
-        // Writes n Items
-        cmsBool  (* WritePtr)(struct _cms_typehandler_struct* self,
-                              cmsIOHANDLER*     io,
-                              void*             Ptr,
-                              cmsUInt32Number   nItems);
-
-        // Duplicate an item or array of items
-        void*   (* DupPtr)(struct _cms_typehandler_struct* self,
-                           const void *Ptr,
-                           cmsUInt32Number n);
-
-        // Free all resources
-        void    (* FreePtr)(struct _cms_typehandler_struct* self,
-                            void *Ptr);
-
-        // Additional parameters used by the calling thread
-        cmsContext       ContextID;
-        cmsUInt32Number  ICCVersion;
-
-} cmsTagTypeHandler;
-
-// Each plug-in implements a single type
-typedef struct {
-        cmsPluginBase      base;
-        cmsTagTypeHandler  Handler;
-
-} cmsPluginTagType;
-
-//----------------------------------------------------------------------------------------------------------
-
-// This is the tag plugin, which identifies tags. For writing, a pointer to function is provided.
-// This function should return the desired type for this tag, given the version of profile
-// and the data being serialized.
-typedef struct {
-
-    cmsUInt32Number     ElemCount;          // If this tag needs an array, how many elements should keep
-
-    // For reading.
-    cmsUInt32Number     nSupportedTypes;    // In how many types this tag can come (MAX_TYPES_IN_LCMS_PLUGIN maximum)
-    cmsTagTypeSignature SupportedTypes[MAX_TYPES_IN_LCMS_PLUGIN];
-
-    // For writing
-    cmsTagTypeSignature (* DecideType)(cmsFloat64Number ICCVersion, const void *Data);
-
-} cmsTagDescriptor;
-
-// Plug-in implements a single tag
-typedef struct {
-    cmsPluginBase    base;
-
-    cmsTagSignature  Signature;
-    cmsTagDescriptor Descriptor;
-
-} cmsPluginTag;
-
-//----------------------------------------------------------------------------------------------------------
-
-// Custom intents. This function should join all profiles specified in the array in
-// a single LUT. Any custom intent in the chain redirects to custom function. If more than
-// one custom intent is found, the one located first is invoked. Usually users should use only one
-// custom intent, so mixing custom intents in same multiprofile transform is not supported.
-
-typedef cmsPipeline* (* cmsIntentFn)( cmsContext       ContextID,
-                                      cmsUInt32Number  nProfiles,
-                                      cmsUInt32Number  Intents[],
-                                      cmsHPROFILE      hProfiles[],
-                                      cmsBool          BPC[],
-                                      cmsFloat64Number AdaptationStates[],
-                                      cmsUInt32Number  dwFlags);
-
-
-// Each plug-in defines a single intent number.
-typedef struct {
-    cmsPluginBase     base;
-    cmsUInt32Number   Intent;
-    cmsIntentFn       Link;
-    char              Description[256];
-
-} cmsPluginRenderingIntent;
-
-
-// The default ICC intents (perceptual, saturation, rel.col and abs.col)
-CMSAPI cmsPipeline*  CMSEXPORT _cmsDefaultICCintents(cmsContext       ContextID,
-                                                     cmsUInt32Number  nProfiles,
-                                                     cmsUInt32Number  Intents[],
-                                                     cmsHPROFILE      hProfiles[],
-                                                     cmsBool          BPC[],
-                                                     cmsFloat64Number AdaptationStates[],
-                                                     cmsUInt32Number  dwFlags);
-
-
-//----------------------------------------------------------------------------------------------------------
-
-// Pipelines, Multi Process Elements.
-
-typedef void (* _cmsStageEvalFn)     (const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage* mpe);
-typedef void*(* _cmsStageDupElemFn)  (cmsStage* mpe);
-typedef void (* _cmsStageFreeElemFn) (cmsStage* mpe);
-
-
-// This function allocates a generic MPE
-CMSAPI cmsStage* CMSEXPORT _cmsStageAllocPlaceholder(cmsContext ContextID,
-                                cmsStageSignature     Type,
-                                cmsUInt32Number       InputChannels,
-                                cmsUInt32Number       OutputChannels,
-                                _cmsStageEvalFn       EvalPtr,            // Points to fn that evaluates the element (always in floating point)
-                                _cmsStageDupElemFn    DupElemPtr,         // Points to a fn that duplicates the stage
-                                _cmsStageFreeElemFn   FreePtr,            // Points to a fn that sets the element free
-                                void*                 Data);              // A generic pointer to whatever memory needed by the element
-typedef struct {
-      cmsPluginBase     base;
-      cmsTagTypeHandler Handler;
-
-}  cmsPluginMultiProcessElement;
-
-
-// Data kept in "Element" member of cmsStage
-
-// Curves
-typedef struct {
-    cmsUInt32Number nCurves;
-    cmsToneCurve**  TheCurves;
-
-} _cmsStageToneCurvesData;
-
-// Matrix
-typedef struct {
-    cmsFloat64Number*  Double;          // floating point for the matrix
-    cmsFloat64Number*  Offset;          // The offset
-
-} _cmsStageMatrixData;
-
-// CLUT
-typedef struct {
-
-    union {                       // Can have only one of both representations at same time
-        cmsUInt16Number*  T;      // Points to the table 16 bits table
-        cmsFloat32Number* TFloat; // Points to the cmsFloat32Number table
-
-    } Tab;
-
-    cmsInterpParams* Params;
-    cmsUInt32Number  nEntries;
-    cmsBool          HasFloatValues;
-
-} _cmsStageCLutData;
-
-
-//----------------------------------------------------------------------------------------------------------
-// Optimization. Using this plug-in, additional optimization strategies may be implemented.
-// The function should return TRUE if any optimization is done on the LUT, this terminates
-// the optimization  search. Or FALSE if it is unable to optimize and want to give a chance
-// to the rest of optimizers.
-
-typedef cmsBool  (* _cmsOPToptimizeFn)(cmsPipeline** Lut,
-                                       cmsUInt32Number  Intent,
-                                       cmsUInt32Number* InputFormat,
-                                       cmsUInt32Number* OutputFormat,
-                                       cmsUInt32Number* dwFlags);
-
-// Pipeline Evaluator (in 16 bits)
-typedef void (* _cmsPipelineEval16Fn)(CMSREGISTER const cmsUInt16Number In[],
-                                     CMSREGISTER cmsUInt16Number Out[],
-                                     const void* Data);
-
-// Pipeline Evaluator (in floating point)
-typedef void (* _cmsPipelineEvalFloatFn)(const cmsFloat32Number In[],
-                                         cmsFloat32Number Out[],
-                                         const void* Data);
-
-
-// This function may be used to set the optional evaluator and a block of private data. If private data is being used, an optional
-// duplicator and free functions should also be specified in order to duplicate the LUT construct. Use NULL to inhibit such functionality.
-
-CMSAPI void CMSEXPORT _cmsPipelineSetOptimizationParameters(cmsPipeline* Lut,
-                                               _cmsPipelineEval16Fn Eval16,
-                                               void* PrivateData,
-                                               _cmsFreeUserDataFn FreePrivateDataFn,
-                                               _cmsDupUserDataFn DupPrivateDataFn);
-
-typedef struct {
-      cmsPluginBase     base;
-
-      // Optimize entry point
-      _cmsOPToptimizeFn  OptimizePtr;
-
-}  cmsPluginOptimization;
-
-//----------------------------------------------------------------------------------------------------------
-// Full xform
-
-typedef struct {
-       cmsUInt32Number BytesPerLineIn;
-       cmsUInt32Number BytesPerLineOut;
-       cmsUInt32Number BytesPerPlaneIn;
-       cmsUInt32Number BytesPerPlaneOut;
-
-} cmsStride;
-
-typedef void     (* _cmsTransformFn)(struct _cmstransform_struct *CMMcargo,   // Legacy function, handles just ONE scanline.
-                                     const void* InputBuffer,
-                                     void* OutputBuffer,
-                                     cmsUInt32Number Size,
-                                     cmsUInt32Number Stride);                 // Stride in bytes to the next plane in planar formats
-
-
-typedef void     (*_cmsTransform2Fn)(struct _cmstransform_struct *CMMcargo,
-                                     const void* InputBuffer,
-                                     void* OutputBuffer,
-                                     cmsUInt32Number PixelsPerLine,
-                                     cmsUInt32Number LineCount,      
-                                     const cmsStride* Stride); 
-
-typedef cmsBool  (* _cmsTransformFactory)(_cmsTransformFn* xform,
-                                         void** UserData,
-                                         _cmsFreeUserDataFn* FreePrivateDataFn,
-                                         cmsPipeline** Lut,
-                                         cmsUInt32Number* InputFormat,
-                                         cmsUInt32Number* OutputFormat,
-                                         cmsUInt32Number* dwFlags);
-
-typedef cmsBool  (* _cmsTransform2Factory)(_cmsTransform2Fn* xform,
-                                         void** UserData,
-                                         _cmsFreeUserDataFn* FreePrivateDataFn,
-                                         cmsPipeline** Lut,
-                                         cmsUInt32Number* InputFormat,
-                                         cmsUInt32Number* OutputFormat,
-                                         cmsUInt32Number* dwFlags);
-
-
-// Retrieve user data as specified by the factory
-CMSAPI void   CMSEXPORT _cmsSetTransformUserData(struct _cmstransform_struct *CMMcargo, void* ptr, _cmsFreeUserDataFn FreePrivateDataFn);
-CMSAPI void * CMSEXPORT _cmsGetTransformUserData(struct _cmstransform_struct *CMMcargo);
-
-
-// Retrieve formatters
-CMSAPI void   CMSEXPORT _cmsGetTransformFormatters16   (struct _cmstransform_struct *CMMcargo, cmsFormatter16* FromInput, cmsFormatter16* ToOutput);
-CMSAPI void   CMSEXPORT _cmsGetTransformFormattersFloat(struct _cmstransform_struct *CMMcargo, cmsFormatterFloat* FromInput, cmsFormatterFloat* ToOutput);
-
-// Retrieve original flags
-CMSAPI cmsUInt32Number CMSEXPORT _cmsGetTransformFlags(struct _cmstransform_struct* CMMcargo);
-
-typedef struct {
-      cmsPluginBase     base;
-
-      // Transform entry point
-      union {
-             _cmsTransformFactory        legacy_xform;
-             _cmsTransform2Factory       xform;
-      } factories;
-
-}  cmsPluginTransform;
-
-//----------------------------------------------------------------------------------------------------------
-// Mutex
-
-typedef void*    (* _cmsCreateMutexFnPtrType)(cmsContext ContextID);
-typedef void     (* _cmsDestroyMutexFnPtrType)(cmsContext ContextID, void* mtx);
-typedef cmsBool  (* _cmsLockMutexFnPtrType)(cmsContext ContextID, void* mtx);
-typedef void     (* _cmsUnlockMutexFnPtrType)(cmsContext ContextID, void* mtx);
-
-typedef struct {
-      cmsPluginBase     base;
-
-     _cmsCreateMutexFnPtrType  CreateMutexPtr;
-     _cmsDestroyMutexFnPtrType DestroyMutexPtr;
-     _cmsLockMutexFnPtrType    LockMutexPtr;
-     _cmsUnlockMutexFnPtrType  UnlockMutexPtr;
-
-}  cmsPluginMutex;
-
-CMSAPI void*   CMSEXPORT _cmsCreateMutex(cmsContext ContextID);
-CMSAPI void    CMSEXPORT _cmsDestroyMutex(cmsContext ContextID, void* mtx);
-CMSAPI cmsBool CMSEXPORT _cmsLockMutex(cmsContext ContextID, void* mtx);
-CMSAPI void    CMSEXPORT _cmsUnlockMutex(cmsContext ContextID, void* mtx);
-
-//----------------------------------------------------------------------------------------------------------
-// Parallelization 
-
-CMSAPI _cmsTransform2Fn CMSEXPORT _cmsGetTransformWorker(struct _cmstransform_struct* CMMcargo);
-CMSAPI cmsInt32Number   CMSEXPORT _cmsGetTransformMaxWorkers(struct _cmstransform_struct* CMMcargo);
-CMSAPI cmsUInt32Number  CMSEXPORT _cmsGetTransformWorkerFlags(struct _cmstransform_struct* CMMcargo);
-
-// Let's plug-in to guess the best number of workers
-#define CMS_GUESS_MAX_WORKERS -1
-
-typedef struct {
-    cmsPluginBase       base;
-
-    cmsInt32Number      MaxWorkers;       // Number of starts to do as maximum
-    cmsUInt32Number     WorkerFlags;      // Reserved
-    _cmsTransform2Fn    SchedulerFn;      // callback to setup functions     
-
-}  cmsPluginParalellization;
-
-
-#ifndef CMS_USE_CPP_API
-#   ifdef __cplusplus
-    }
-#   endif
-#endif
-
-#define _lcms_plugin_H
-#endif
diff --git a/includes/libraw.h b/includes/libraw.h
deleted file mode 100644
index 259c1f3..0000000
--- a/includes/libraw.h
+++ /dev/null
@@ -1,527 +0,0 @@
-/* -*- C++ -*-
- * File: libraw.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8, 2008
- *
- * LibRaw C++ interface
- *
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
-*/
-
-#ifndef _LIBRAW_CLASS_H
-#define _LIBRAW_CLASS_H
-
-#ifdef __linux__
-#define _FILE_OFFSET_BITS 64
-#endif
-
-#ifndef LIBRAW_USE_DEPRECATED_IOSTREAMS_DATASTREAM
-#define LIBRAW_NO_IOSTREAMS_DATASTREAM
-#endif
-
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-/* maximum file size to use LibRaw_file_datastream (fully buffered) I/O */
-#define LIBRAW_USE_STREAMS_DATASTREAM_MAXSIZE (250 * 1024L * 1024L)
-#endif
-
-#include 
-#include 
-#include 
-#include 
-#include 
-
-/* better WIN32 defines */
-
-/* better WIN32 defines */
-
-#if defined(WIN32) || defined(_WIN32)
-
-/* Win32 API */
-#  ifndef LIBRAW_WIN32_CALLS
-#   define LIBRAW_WIN32_CALLS
-#  endif
-
-/* DLLs: Microsoft or Intel compiler */
-# if defined(_MSC_VER) || defined(__INTEL_COMPILER)
-# ifndef LIBRAW_WIN32_DLLDEFS
-#  define LIBRAW_WIN32_DLLDEFS
-# endif
-#endif
-
-/* wchar_t* API for std::filebuf */
-# if (defined(_MSC_VER)  && (_MSC_VER > 1310)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 910))
-#  ifndef LIBRAW_WIN32_UNICODEPATHS
-#   define LIBRAW_WIN32_UNICODEPATHS
-#  endif
-# elif _GLIBCXX_HAVE__WFOPEN && _GLIBCXX_USE_WCHAR_T
-#  ifndef LIBRAW_WIN32_UNICODEPATHS
-#    define LIBRAW_WIN32_UNICODEPATHS
-#  endif
-# elif defined(_LIBCPP_HAS_OPEN_WITH_WCHAR)
-#  ifndef LIBRAW_WIN32_UNICODEPATHS
-#    define LIBRAW_WIN32_UNICODEPATHS
-#  endif
-# endif
-
-#endif
-
-#include "libraw_datastream.h"
-#include "libraw_types.h"
-#include "libraw_const.h"
-#include "libraw_internal.h"
-#include "libraw_alloc.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-  DllDef const char *libraw_strerror(int errorcode);
-  DllDef const char *libraw_strprogress(enum LibRaw_progress);
-  /* LibRaw C API */
-  DllDef libraw_data_t *libraw_init(unsigned int flags);
-  DllDef int libraw_open_file(libraw_data_t *, const char *);
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  DllDef int libraw_open_file_ex(libraw_data_t *, const char *,
-                                 INT64 max_buff_sz);
-#endif
-#if defined(_WIN32) || defined(WIN32)
-  DllDef int libraw_open_wfile(libraw_data_t *, const wchar_t *);
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  DllDef int libraw_open_wfile_ex(libraw_data_t *, const wchar_t *,
-                                  INT64 max_buff_sz);
-#endif
-#endif
-
-  DllDef int libraw_open_buffer(libraw_data_t *, const void *buffer, size_t size);
-  DllDef int libraw_open_bayer(libraw_data_t *lr, unsigned char *data,
-                               unsigned datalen, ushort _raw_width,
-                               ushort _raw_height, ushort _left_margin,
-                               ushort _top_margin, ushort _right_margin,
-                               ushort _bottom_margin, unsigned char procflags,
-                               unsigned char bayer_battern,
-                               unsigned unused_bits, unsigned otherflags,
-                               unsigned black_level);
-  DllDef int libraw_unpack(libraw_data_t *);
-  DllDef int libraw_unpack_thumb(libraw_data_t *);
-  DllDef int libraw_unpack_thumb_ex(libraw_data_t *,int);
-  DllDef void libraw_recycle_datastream(libraw_data_t *);
-  DllDef void libraw_recycle(libraw_data_t *);
-  DllDef void libraw_close(libraw_data_t *);
-  DllDef void libraw_subtract_black(libraw_data_t *);
-  DllDef int libraw_raw2image(libraw_data_t *);
-  DllDef void libraw_free_image(libraw_data_t *);
-  /* version helpers */
-  DllDef const char *libraw_version(void);
-  DllDef int libraw_versionNumber(void);
-  /* Camera list */
-  DllDef const char **libraw_cameraList(void);
-  DllDef int libraw_cameraCount(void);
-
-  /* helpers */
-  DllDef void libraw_set_exifparser_handler(libraw_data_t *,
-                                            exif_parser_callback cb,
-                                            void *datap);
-  DllDef void libraw_set_dataerror_handler(libraw_data_t *, data_callback func,
-                                           void *datap);
-  DllDef void libraw_set_progress_handler(libraw_data_t *, progress_callback cb,
-                                          void *datap);
-  DllDef const char *libraw_unpack_function_name(libraw_data_t *lr);
-  DllDef int libraw_get_decoder_info(libraw_data_t *lr,
-                                     libraw_decoder_info_t *d);
-  DllDef int libraw_COLOR(libraw_data_t *, int row, int col);
-  DllDef unsigned libraw_capabilities(void);
-  DllDef int libraw_adjust_to_raw_inset_crop(libraw_data_t *lr, unsigned mask, float maxcrop);
-
-  /* DCRAW compatibility */
-  DllDef int libraw_adjust_sizes_info_only(libraw_data_t *);
-  DllDef int libraw_dcraw_ppm_tiff_writer(libraw_data_t *lr,
-                                          const char *filename);
-  DllDef int libraw_dcraw_thumb_writer(libraw_data_t *lr, const char *fname);
-  DllDef int libraw_dcraw_process(libraw_data_t *lr);
-  DllDef libraw_processed_image_t *
-  libraw_dcraw_make_mem_image(libraw_data_t *lr, int *errc);
-  DllDef libraw_processed_image_t *
-  libraw_dcraw_make_mem_thumb(libraw_data_t *lr, int *errc);
-  DllDef void libraw_dcraw_clear_mem(libraw_processed_image_t *);
-  /* getters/setters used by 3DLut Creator */
-  DllDef void libraw_set_demosaic(libraw_data_t *lr, int value);
-  DllDef void libraw_set_output_color(libraw_data_t *lr, int value);
-  DllDef void libraw_set_adjust_maximum_thr(libraw_data_t *lr, float value);
-  DllDef void libraw_set_user_mul(libraw_data_t *lr, int index, float val);
-  DllDef void libraw_set_output_bps(libraw_data_t *lr, int value);
-  DllDef void libraw_set_gamma(libraw_data_t *lr, int index, float value);
-  DllDef void libraw_set_no_auto_bright(libraw_data_t *lr, int value);
-  DllDef void libraw_set_bright(libraw_data_t *lr, float value);
-  DllDef void libraw_set_highlight(libraw_data_t *lr, int value);
-  DllDef void libraw_set_fbdd_noiserd(libraw_data_t *lr, int value);
-  DllDef int libraw_get_raw_height(libraw_data_t *lr);
-  DllDef int libraw_get_raw_width(libraw_data_t *lr);
-  DllDef int libraw_get_iheight(libraw_data_t *lr);
-  DllDef int libraw_get_iwidth(libraw_data_t *lr);
-  DllDef float libraw_get_cam_mul(libraw_data_t *lr, int index);
-  DllDef float libraw_get_pre_mul(libraw_data_t *lr, int index);
-  DllDef float libraw_get_rgb_cam(libraw_data_t *lr, int index1, int index2);
-  DllDef int libraw_get_color_maximum(libraw_data_t *lr);
-  DllDef void libraw_set_output_tif(libraw_data_t *lr, int value);
-  DllDef libraw_iparams_t *libraw_get_iparams(libraw_data_t *lr);
-  DllDef libraw_lensinfo_t *libraw_get_lensinfo(libraw_data_t *lr);
-  DllDef libraw_imgother_t *libraw_get_imgother(libraw_data_t *lr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef __cplusplus
-
-class DllDef LibRaw
-{
-public:
-  libraw_data_t imgdata;
-
-  LibRaw(unsigned int flags = LIBRAW_OPTIONS_NONE);
-  libraw_output_params_t *output_params_ptr() { return &imgdata.params; }
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  int open_file(const char *fname,
-                INT64 max_buffered_sz = LIBRAW_USE_STREAMS_DATASTREAM_MAXSIZE);
-#if defined(_WIN32) || defined(WIN32)
-  int open_file(const wchar_t *fname,
-                INT64 max_buffered_sz = LIBRAW_USE_STREAMS_DATASTREAM_MAXSIZE);
-#endif
-#else
-  int open_file(const char *fname);
-#if defined(_WIN32) || defined(WIN32)
-  int open_file(const wchar_t *fname);
-#endif
-
-#endif
-  int open_buffer(const void *buffer, size_t size);
-  virtual int open_datastream(LibRaw_abstract_datastream *);
-  virtual int open_bayer(const unsigned char *data, unsigned datalen,
-                         ushort _raw_width, ushort _raw_height,
-                         ushort _left_margin, ushort _top_margin,
-                         ushort _right_margin, ushort _bottom_margin,
-                         unsigned char procflags, unsigned char bayer_pattern,
-                         unsigned unused_bits, unsigned otherflags,
-                         unsigned black_level);
-  int error_count() { return libraw_internal_data.unpacker_data.data_error; }
-  void recycle_datastream();
-  int unpack(void);
-  int unpack_thumb(void);
-  int unpack_thumb_ex(int);
-  int thumbOK(INT64 maxsz = -1);
-  int adjust_sizes_info_only(void);
-  int subtract_black();
-  int subtract_black_internal();
-  int raw2image();
-  int raw2image_ex(int do_subtract_black);
-  void raw2image_start();
-  void free_image();
-  int adjust_maximum();
-  int adjust_to_raw_inset_crop(unsigned mask, float maxcrop = 0.55f); 
-  void set_exifparser_handler(exif_parser_callback cb, void *data)
-  {
-    callbacks.exifparser_data = data;
-    callbacks.exif_cb = cb;
-  }
-  void set_dataerror_handler(data_callback func, void *data)
-  {
-    callbacks.datacb_data = data;
-    callbacks.data_cb = func;
-  }
-  void set_progress_handler(progress_callback pcb, void *data)
-  {
-    callbacks.progresscb_data = data;
-    callbacks.progress_cb = pcb;
-  }
-
-  static const char* cameramakeridx2maker(unsigned maker);
-  int setMakeFromIndex(unsigned index);
-
-  void convertFloatToInt(float dmin = 4096.f, float dmax = 32767.f,
-                         float dtarget = 16383.f);
-  /* helpers */
-  static unsigned capabilities();
-  static const char *version();
-  static int versionNumber();
-  static const char **cameraList();
-  static int cameraCount();
-  static const char *strprogress(enum LibRaw_progress);
-  static const char *strerror(int p);
-  /* dcraw emulation */
-  int dcraw_ppm_tiff_writer(const char *filename);
-  int dcraw_thumb_writer(const char *fname);
-  int dcraw_process(void);
-  /* information calls */
-  int is_fuji_rotated()
-  {
-    return libraw_internal_data.internal_output_params.fuji_width;
-  }
-  int is_sraw();
-  int sraw_midpoint();
-  int is_nikon_sraw();
-  int is_coolscan_nef();
-  int is_jpeg_thumb();
-  int is_floating_point();
-  int have_fpdata();
-  /* memory writers */
-  virtual libraw_processed_image_t *dcraw_make_mem_image(int *errcode = NULL);
-  virtual libraw_processed_image_t *dcraw_make_mem_thumb(int *errcode = NULL);
-  static void dcraw_clear_mem(libraw_processed_image_t *);
-
-  /* Additional calls for make_mem_image */
-  void get_mem_image_format(int *width, int *height, int *colors,
-                            int *bps) const;
-  int copy_mem_image(void *scan0, int stride, int bgr);
-
-  /* free all internal data structures */
-  void recycle();
-  virtual ~LibRaw(void);
-
-  int COLOR(int row, int col)
-  {
-    if (!imgdata.idata.filters)
-      return 6; /* Special value 0+1+2+3 */
-    if (imgdata.idata.filters < 1000)
-      return fcol(row, col);
-    return libraw_internal_data.internal_output_params.fuji_width
-               ? FCF(row, col)
-               : FC(row, col);
-  }
-
-  int FC(int row, int col)
-  {
-    return (imgdata.idata.filters >> (((row << 1 & 14) | (col & 1)) << 1) & 3);
-  }
-  int fcol(int row, int col);
-
-  const char *unpack_function_name();
-  virtual int get_decoder_info(libraw_decoder_info_t *d_info);
-  libraw_internal_data_t *get_internal_data_pointer()
-  {
-    return &libraw_internal_data;
-  }
-
-  static float powf_lim(float a, float b, float limup)
-  {
-    return (b > limup || b < -limup) ? 0.f : powf(a, b);
-  }
-  static float libraw_powf64l(float a, float b) { return powf_lim(a, b, 64.f); }
-
-  static unsigned sgetn(int n, uchar *s)
-  {
-    unsigned result = 0;
-    while (n-- > 0)
-      result = (result << 8) | (*s++);
-    return result;
-  }
-
-  /* Phase one correction/subtractBL calls */
-  /* Returns libraw error code */
-
-  int phase_one_subtract_black(ushort *src, ushort *dest);
-  int phase_one_correct();
-
-  int set_rawspeed_camerafile(char *filename);
-  virtual void setCancelFlag();
-  virtual void clearCancelFlag();
-  virtual int adobe_coeff(unsigned, const char *, int internal_only = 0);
-
-  void set_dng_host(void *);
-
-protected:
-  static void *memmem(char *haystack, size_t haystacklen, char *needle,
-                      size_t needlelen);
-  static char *strcasestr(char *h, const char *n);
-  static size_t strnlen(const char *s, size_t n);
-
-#ifdef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  int libraw_openfile_tail(LibRaw_abstract_datastream *stream);
-#endif
-
-  int is_curve_linear();
-  void checkCancel();
-  void cam_xyz_coeff(float _rgb_cam[3][4], double cam_xyz[4][3]);
-  void phase_one_allocate_tempbuffer();
-  void phase_one_free_tempbuffer();
-  virtual int is_phaseone_compressed();
-  virtual int is_canon_600();
-  /* Hotspots */
-  virtual void copy_fuji_uncropped(unsigned short cblack[4],
-                                   unsigned short *dmaxp);
-  virtual void copy_bayer(unsigned short cblack[4], unsigned short *dmaxp);
-  virtual void fuji_rotate();
-  virtual void convert_to_rgb_loop(float out_cam[3][4]);
-  virtual void lin_interpolate_loop(int *code, int size);
-  virtual void scale_colors_loop(float scale_mul[4]);
-
-  /* Fujifilm compressed decoder public interface (to make parallel decoder) */
-  virtual void
-  fuji_decode_loop(struct fuji_compressed_params *common_info, int count,
-                   INT64 *offsets, unsigned *sizes, uchar *q_bases);
-  void fuji_decode_strip(struct fuji_compressed_params *info_common,
-                         int cur_block, INT64 raw_offset, unsigned size, uchar *q_bases);
-  /* CR3 decoder public interface to make parallel decoder */
-  virtual void crxLoadDecodeLoop(void *, int);
-  int crxDecodePlane(void *, uint32_t planeNumber);
-  virtual void crxLoadFinalizeLoopE3(void *, int);
-  void crxConvertPlaneLineDf(void *, int);
-  /* Panasonic Compression 8 parallel decoder stubs*/
-  virtual void pana8_decode_loop(void*);
-  int pana8_decode_strip(void*, int); // return: 0 if OK, non-zero on error
-  int FCF(int row, int col)
-  {
-    int rr, cc;
-    if (libraw_internal_data.unpacker_data.fuji_layout)
-    {
-      rr = libraw_internal_data.internal_output_params.fuji_width - 1 - col +
-           (row >> 1);
-      cc = col + ((row + 1) >> 1);
-    }
-    else
-    {
-      rr = libraw_internal_data.internal_output_params.fuji_width - 1 + row -
-           (col >> 1);
-      cc = row + ((col + 1) >> 1);
-    }
-    return FC(rr, cc);
-  }
-
-  void adjust_bl();
-  void *malloc(size_t t);
-  void *calloc(size_t n, size_t t);
-  void *realloc(void *p, size_t s);
-  void free(void *p);
-  void derror();
-
-  LibRaw_TLS *tls;
-  libraw_internal_data_t libraw_internal_data;
-  decode first_decode[2048], *second_decode, *free_decode;
-  tiff_ifd_t tiff_ifd[LIBRAW_IFD_MAXCOUNT];
-  libraw_memmgr memmgr;
-  libraw_callbacks_t callbacks;
-
-  //void (LibRaw::*write_thumb)();
-  void (LibRaw::*write_fun)();
-  void (LibRaw::*load_raw)();
-  //void (LibRaw::*thumb_load_raw)();
-  void (LibRaw::*pentax_component_load_raw)();
-
-  void write_thumb_ppm_tiff(FILE *);
-
-  int own_filtering_supported() { return 0; }
-  void identify();
-  void initdata();
-  unsigned parse_custom_cameras(unsigned limit, libraw_custom_camera_t table[],
-                                char **list);
-  void write_ppm_tiff();
-  void convert_to_rgb();
-  void remove_zeroes();
-  void crop_masked_pixels();
-#ifndef NO_LCMS
-  void apply_profile(const char *, const char *);
-#endif
-  void pre_interpolate();
-  void border_interpolate(int border);
-  void lin_interpolate();
-  void vng_interpolate();
-  void ppg_interpolate();
-  void cielab(ushort rgb[3], short lab[3]);
-  void xtrans_interpolate(int);
-  void ahd_interpolate();
-  void dht_interpolate();
-  void aahd_interpolate();
-
-  void dcb(int iterations, int dcb_enhance);
-  void fbdd(int noiserd);
-  void exp_bef(float expos, float preser);
-
-  void bad_pixels(const char *);
-  void subtract(const char *);
-  void hat_transform(float *temp, float *base, int st, int size, int sc);
-  void wavelet_denoise();
-  void scale_colors();
-  void median_filter();
-  void blend_highlights();
-  void recover_highlights();
-  void green_matching();
-
-  void stretch();
-
-  void jpeg_thumb_writer(FILE *tfp, char *thumb, int thumb_length);
-#if 0
-  void jpeg_thumb();
-  void ppm_thumb();
-  void ppm16_thumb();
-  void layer_thumb();
-  void rollei_thumb();
-#endif
-  void kodak_thumb_load_raw();
-
-  unsigned get4();
-
-  int flip_index(int row, int col);
-  void gamma_curve(double pwr, double ts, int mode, int imax);
-  void cubic_spline(const int *x_, const int *y_, const int len);
-
-  /* RawSpeed data */
-  void *_rawspeed_camerameta;
-  void *_rawspeed_decoder;
-  void *_rawspeed3_handle;
-  void fix_after_rawspeed(int bl);
-  int try_rawspeed(); /* returns LIBRAW_SUCCESS on success */
-  /* Fast cancel flag */
-  long _exitflag;
-
-  /* DNG SDK data */
-  void *dnghost;
-  void *dngnegative;
-  void *dngimage;
-  int valid_for_dngsdk();
-  int try_dngsdk();
-  /* X3F data */
-  void *_x3f_data; /* keep it even if USE_X3FTOOLS is not defined to do not change sizeof(LibRaw)*/
-
-  int raw_was_read()
-  {
-    return imgdata.rawdata.raw_image || imgdata.rawdata.color4_image ||
-           imgdata.rawdata.color3_image || imgdata.rawdata.float_image ||
-           imgdata.rawdata.float3_image || imgdata.rawdata.float4_image;
-  }
-
-#ifdef LIBRAW_LIBRARY_BUILD
-#include "internal/libraw_internal_funcs.h"
-#endif
-};
-
-#ifdef LIBRAW_LIBRARY_BUILD
-ushort libraw_sget2_static(short _order, uchar *s);
-unsigned libraw_sget4_static(short _order, uchar *s);
-int libraw_tagtype_dataunit_bytes(int tagtype);
-double  libraw_sgetreal_static(short _order, int type, uchar *s);
-float   libraw_int_to_float (int i);
-#endif
-
-
-#ifdef LIBRAW_LIBRARY_BUILD
-#define RUN_CALLBACK(stage, iter, expect)                                      \
-  if (callbacks.progress_cb)                                                   \
-  {                                                                            \
-    int rr = (*callbacks.progress_cb)(callbacks.progresscb_data, stage, iter,  \
-                                      expect);                                 \
-    if (rr != 0)                                                               \
-      throw LIBRAW_EXCEPTION_CANCELLED_BY_CALLBACK;                            \
-  }
-#endif
-
-#endif /* __cplusplus */
-
-#endif /* _LIBRAW_CLASS_H */
diff --git a/includes/libraw/libraw.h b/includes/libraw/libraw.h
deleted file mode 100644
index 259c1f3..0000000
--- a/includes/libraw/libraw.h
+++ /dev/null
@@ -1,527 +0,0 @@
-/* -*- C++ -*-
- * File: libraw.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8, 2008
- *
- * LibRaw C++ interface
- *
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
-*/
-
-#ifndef _LIBRAW_CLASS_H
-#define _LIBRAW_CLASS_H
-
-#ifdef __linux__
-#define _FILE_OFFSET_BITS 64
-#endif
-
-#ifndef LIBRAW_USE_DEPRECATED_IOSTREAMS_DATASTREAM
-#define LIBRAW_NO_IOSTREAMS_DATASTREAM
-#endif
-
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-/* maximum file size to use LibRaw_file_datastream (fully buffered) I/O */
-#define LIBRAW_USE_STREAMS_DATASTREAM_MAXSIZE (250 * 1024L * 1024L)
-#endif
-
-#include 
-#include 
-#include 
-#include 
-#include 
-
-/* better WIN32 defines */
-
-/* better WIN32 defines */
-
-#if defined(WIN32) || defined(_WIN32)
-
-/* Win32 API */
-#  ifndef LIBRAW_WIN32_CALLS
-#   define LIBRAW_WIN32_CALLS
-#  endif
-
-/* DLLs: Microsoft or Intel compiler */
-# if defined(_MSC_VER) || defined(__INTEL_COMPILER)
-# ifndef LIBRAW_WIN32_DLLDEFS
-#  define LIBRAW_WIN32_DLLDEFS
-# endif
-#endif
-
-/* wchar_t* API for std::filebuf */
-# if (defined(_MSC_VER)  && (_MSC_VER > 1310)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 910))
-#  ifndef LIBRAW_WIN32_UNICODEPATHS
-#   define LIBRAW_WIN32_UNICODEPATHS
-#  endif
-# elif _GLIBCXX_HAVE__WFOPEN && _GLIBCXX_USE_WCHAR_T
-#  ifndef LIBRAW_WIN32_UNICODEPATHS
-#    define LIBRAW_WIN32_UNICODEPATHS
-#  endif
-# elif defined(_LIBCPP_HAS_OPEN_WITH_WCHAR)
-#  ifndef LIBRAW_WIN32_UNICODEPATHS
-#    define LIBRAW_WIN32_UNICODEPATHS
-#  endif
-# endif
-
-#endif
-
-#include "libraw_datastream.h"
-#include "libraw_types.h"
-#include "libraw_const.h"
-#include "libraw_internal.h"
-#include "libraw_alloc.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-  DllDef const char *libraw_strerror(int errorcode);
-  DllDef const char *libraw_strprogress(enum LibRaw_progress);
-  /* LibRaw C API */
-  DllDef libraw_data_t *libraw_init(unsigned int flags);
-  DllDef int libraw_open_file(libraw_data_t *, const char *);
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  DllDef int libraw_open_file_ex(libraw_data_t *, const char *,
-                                 INT64 max_buff_sz);
-#endif
-#if defined(_WIN32) || defined(WIN32)
-  DllDef int libraw_open_wfile(libraw_data_t *, const wchar_t *);
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  DllDef int libraw_open_wfile_ex(libraw_data_t *, const wchar_t *,
-                                  INT64 max_buff_sz);
-#endif
-#endif
-
-  DllDef int libraw_open_buffer(libraw_data_t *, const void *buffer, size_t size);
-  DllDef int libraw_open_bayer(libraw_data_t *lr, unsigned char *data,
-                               unsigned datalen, ushort _raw_width,
-                               ushort _raw_height, ushort _left_margin,
-                               ushort _top_margin, ushort _right_margin,
-                               ushort _bottom_margin, unsigned char procflags,
-                               unsigned char bayer_battern,
-                               unsigned unused_bits, unsigned otherflags,
-                               unsigned black_level);
-  DllDef int libraw_unpack(libraw_data_t *);
-  DllDef int libraw_unpack_thumb(libraw_data_t *);
-  DllDef int libraw_unpack_thumb_ex(libraw_data_t *,int);
-  DllDef void libraw_recycle_datastream(libraw_data_t *);
-  DllDef void libraw_recycle(libraw_data_t *);
-  DllDef void libraw_close(libraw_data_t *);
-  DllDef void libraw_subtract_black(libraw_data_t *);
-  DllDef int libraw_raw2image(libraw_data_t *);
-  DllDef void libraw_free_image(libraw_data_t *);
-  /* version helpers */
-  DllDef const char *libraw_version(void);
-  DllDef int libraw_versionNumber(void);
-  /* Camera list */
-  DllDef const char **libraw_cameraList(void);
-  DllDef int libraw_cameraCount(void);
-
-  /* helpers */
-  DllDef void libraw_set_exifparser_handler(libraw_data_t *,
-                                            exif_parser_callback cb,
-                                            void *datap);
-  DllDef void libraw_set_dataerror_handler(libraw_data_t *, data_callback func,
-                                           void *datap);
-  DllDef void libraw_set_progress_handler(libraw_data_t *, progress_callback cb,
-                                          void *datap);
-  DllDef const char *libraw_unpack_function_name(libraw_data_t *lr);
-  DllDef int libraw_get_decoder_info(libraw_data_t *lr,
-                                     libraw_decoder_info_t *d);
-  DllDef int libraw_COLOR(libraw_data_t *, int row, int col);
-  DllDef unsigned libraw_capabilities(void);
-  DllDef int libraw_adjust_to_raw_inset_crop(libraw_data_t *lr, unsigned mask, float maxcrop);
-
-  /* DCRAW compatibility */
-  DllDef int libraw_adjust_sizes_info_only(libraw_data_t *);
-  DllDef int libraw_dcraw_ppm_tiff_writer(libraw_data_t *lr,
-                                          const char *filename);
-  DllDef int libraw_dcraw_thumb_writer(libraw_data_t *lr, const char *fname);
-  DllDef int libraw_dcraw_process(libraw_data_t *lr);
-  DllDef libraw_processed_image_t *
-  libraw_dcraw_make_mem_image(libraw_data_t *lr, int *errc);
-  DllDef libraw_processed_image_t *
-  libraw_dcraw_make_mem_thumb(libraw_data_t *lr, int *errc);
-  DllDef void libraw_dcraw_clear_mem(libraw_processed_image_t *);
-  /* getters/setters used by 3DLut Creator */
-  DllDef void libraw_set_demosaic(libraw_data_t *lr, int value);
-  DllDef void libraw_set_output_color(libraw_data_t *lr, int value);
-  DllDef void libraw_set_adjust_maximum_thr(libraw_data_t *lr, float value);
-  DllDef void libraw_set_user_mul(libraw_data_t *lr, int index, float val);
-  DllDef void libraw_set_output_bps(libraw_data_t *lr, int value);
-  DllDef void libraw_set_gamma(libraw_data_t *lr, int index, float value);
-  DllDef void libraw_set_no_auto_bright(libraw_data_t *lr, int value);
-  DllDef void libraw_set_bright(libraw_data_t *lr, float value);
-  DllDef void libraw_set_highlight(libraw_data_t *lr, int value);
-  DllDef void libraw_set_fbdd_noiserd(libraw_data_t *lr, int value);
-  DllDef int libraw_get_raw_height(libraw_data_t *lr);
-  DllDef int libraw_get_raw_width(libraw_data_t *lr);
-  DllDef int libraw_get_iheight(libraw_data_t *lr);
-  DllDef int libraw_get_iwidth(libraw_data_t *lr);
-  DllDef float libraw_get_cam_mul(libraw_data_t *lr, int index);
-  DllDef float libraw_get_pre_mul(libraw_data_t *lr, int index);
-  DllDef float libraw_get_rgb_cam(libraw_data_t *lr, int index1, int index2);
-  DllDef int libraw_get_color_maximum(libraw_data_t *lr);
-  DllDef void libraw_set_output_tif(libraw_data_t *lr, int value);
-  DllDef libraw_iparams_t *libraw_get_iparams(libraw_data_t *lr);
-  DllDef libraw_lensinfo_t *libraw_get_lensinfo(libraw_data_t *lr);
-  DllDef libraw_imgother_t *libraw_get_imgother(libraw_data_t *lr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef __cplusplus
-
-class DllDef LibRaw
-{
-public:
-  libraw_data_t imgdata;
-
-  LibRaw(unsigned int flags = LIBRAW_OPTIONS_NONE);
-  libraw_output_params_t *output_params_ptr() { return &imgdata.params; }
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  int open_file(const char *fname,
-                INT64 max_buffered_sz = LIBRAW_USE_STREAMS_DATASTREAM_MAXSIZE);
-#if defined(_WIN32) || defined(WIN32)
-  int open_file(const wchar_t *fname,
-                INT64 max_buffered_sz = LIBRAW_USE_STREAMS_DATASTREAM_MAXSIZE);
-#endif
-#else
-  int open_file(const char *fname);
-#if defined(_WIN32) || defined(WIN32)
-  int open_file(const wchar_t *fname);
-#endif
-
-#endif
-  int open_buffer(const void *buffer, size_t size);
-  virtual int open_datastream(LibRaw_abstract_datastream *);
-  virtual int open_bayer(const unsigned char *data, unsigned datalen,
-                         ushort _raw_width, ushort _raw_height,
-                         ushort _left_margin, ushort _top_margin,
-                         ushort _right_margin, ushort _bottom_margin,
-                         unsigned char procflags, unsigned char bayer_pattern,
-                         unsigned unused_bits, unsigned otherflags,
-                         unsigned black_level);
-  int error_count() { return libraw_internal_data.unpacker_data.data_error; }
-  void recycle_datastream();
-  int unpack(void);
-  int unpack_thumb(void);
-  int unpack_thumb_ex(int);
-  int thumbOK(INT64 maxsz = -1);
-  int adjust_sizes_info_only(void);
-  int subtract_black();
-  int subtract_black_internal();
-  int raw2image();
-  int raw2image_ex(int do_subtract_black);
-  void raw2image_start();
-  void free_image();
-  int adjust_maximum();
-  int adjust_to_raw_inset_crop(unsigned mask, float maxcrop = 0.55f); 
-  void set_exifparser_handler(exif_parser_callback cb, void *data)
-  {
-    callbacks.exifparser_data = data;
-    callbacks.exif_cb = cb;
-  }
-  void set_dataerror_handler(data_callback func, void *data)
-  {
-    callbacks.datacb_data = data;
-    callbacks.data_cb = func;
-  }
-  void set_progress_handler(progress_callback pcb, void *data)
-  {
-    callbacks.progresscb_data = data;
-    callbacks.progress_cb = pcb;
-  }
-
-  static const char* cameramakeridx2maker(unsigned maker);
-  int setMakeFromIndex(unsigned index);
-
-  void convertFloatToInt(float dmin = 4096.f, float dmax = 32767.f,
-                         float dtarget = 16383.f);
-  /* helpers */
-  static unsigned capabilities();
-  static const char *version();
-  static int versionNumber();
-  static const char **cameraList();
-  static int cameraCount();
-  static const char *strprogress(enum LibRaw_progress);
-  static const char *strerror(int p);
-  /* dcraw emulation */
-  int dcraw_ppm_tiff_writer(const char *filename);
-  int dcraw_thumb_writer(const char *fname);
-  int dcraw_process(void);
-  /* information calls */
-  int is_fuji_rotated()
-  {
-    return libraw_internal_data.internal_output_params.fuji_width;
-  }
-  int is_sraw();
-  int sraw_midpoint();
-  int is_nikon_sraw();
-  int is_coolscan_nef();
-  int is_jpeg_thumb();
-  int is_floating_point();
-  int have_fpdata();
-  /* memory writers */
-  virtual libraw_processed_image_t *dcraw_make_mem_image(int *errcode = NULL);
-  virtual libraw_processed_image_t *dcraw_make_mem_thumb(int *errcode = NULL);
-  static void dcraw_clear_mem(libraw_processed_image_t *);
-
-  /* Additional calls for make_mem_image */
-  void get_mem_image_format(int *width, int *height, int *colors,
-                            int *bps) const;
-  int copy_mem_image(void *scan0, int stride, int bgr);
-
-  /* free all internal data structures */
-  void recycle();
-  virtual ~LibRaw(void);
-
-  int COLOR(int row, int col)
-  {
-    if (!imgdata.idata.filters)
-      return 6; /* Special value 0+1+2+3 */
-    if (imgdata.idata.filters < 1000)
-      return fcol(row, col);
-    return libraw_internal_data.internal_output_params.fuji_width
-               ? FCF(row, col)
-               : FC(row, col);
-  }
-
-  int FC(int row, int col)
-  {
-    return (imgdata.idata.filters >> (((row << 1 & 14) | (col & 1)) << 1) & 3);
-  }
-  int fcol(int row, int col);
-
-  const char *unpack_function_name();
-  virtual int get_decoder_info(libraw_decoder_info_t *d_info);
-  libraw_internal_data_t *get_internal_data_pointer()
-  {
-    return &libraw_internal_data;
-  }
-
-  static float powf_lim(float a, float b, float limup)
-  {
-    return (b > limup || b < -limup) ? 0.f : powf(a, b);
-  }
-  static float libraw_powf64l(float a, float b) { return powf_lim(a, b, 64.f); }
-
-  static unsigned sgetn(int n, uchar *s)
-  {
-    unsigned result = 0;
-    while (n-- > 0)
-      result = (result << 8) | (*s++);
-    return result;
-  }
-
-  /* Phase one correction/subtractBL calls */
-  /* Returns libraw error code */
-
-  int phase_one_subtract_black(ushort *src, ushort *dest);
-  int phase_one_correct();
-
-  int set_rawspeed_camerafile(char *filename);
-  virtual void setCancelFlag();
-  virtual void clearCancelFlag();
-  virtual int adobe_coeff(unsigned, const char *, int internal_only = 0);
-
-  void set_dng_host(void *);
-
-protected:
-  static void *memmem(char *haystack, size_t haystacklen, char *needle,
-                      size_t needlelen);
-  static char *strcasestr(char *h, const char *n);
-  static size_t strnlen(const char *s, size_t n);
-
-#ifdef LIBRAW_NO_IOSTREAMS_DATASTREAM
-  int libraw_openfile_tail(LibRaw_abstract_datastream *stream);
-#endif
-
-  int is_curve_linear();
-  void checkCancel();
-  void cam_xyz_coeff(float _rgb_cam[3][4], double cam_xyz[4][3]);
-  void phase_one_allocate_tempbuffer();
-  void phase_one_free_tempbuffer();
-  virtual int is_phaseone_compressed();
-  virtual int is_canon_600();
-  /* Hotspots */
-  virtual void copy_fuji_uncropped(unsigned short cblack[4],
-                                   unsigned short *dmaxp);
-  virtual void copy_bayer(unsigned short cblack[4], unsigned short *dmaxp);
-  virtual void fuji_rotate();
-  virtual void convert_to_rgb_loop(float out_cam[3][4]);
-  virtual void lin_interpolate_loop(int *code, int size);
-  virtual void scale_colors_loop(float scale_mul[4]);
-
-  /* Fujifilm compressed decoder public interface (to make parallel decoder) */
-  virtual void
-  fuji_decode_loop(struct fuji_compressed_params *common_info, int count,
-                   INT64 *offsets, unsigned *sizes, uchar *q_bases);
-  void fuji_decode_strip(struct fuji_compressed_params *info_common,
-                         int cur_block, INT64 raw_offset, unsigned size, uchar *q_bases);
-  /* CR3 decoder public interface to make parallel decoder */
-  virtual void crxLoadDecodeLoop(void *, int);
-  int crxDecodePlane(void *, uint32_t planeNumber);
-  virtual void crxLoadFinalizeLoopE3(void *, int);
-  void crxConvertPlaneLineDf(void *, int);
-  /* Panasonic Compression 8 parallel decoder stubs*/
-  virtual void pana8_decode_loop(void*);
-  int pana8_decode_strip(void*, int); // return: 0 if OK, non-zero on error
-  int FCF(int row, int col)
-  {
-    int rr, cc;
-    if (libraw_internal_data.unpacker_data.fuji_layout)
-    {
-      rr = libraw_internal_data.internal_output_params.fuji_width - 1 - col +
-           (row >> 1);
-      cc = col + ((row + 1) >> 1);
-    }
-    else
-    {
-      rr = libraw_internal_data.internal_output_params.fuji_width - 1 + row -
-           (col >> 1);
-      cc = row + ((col + 1) >> 1);
-    }
-    return FC(rr, cc);
-  }
-
-  void adjust_bl();
-  void *malloc(size_t t);
-  void *calloc(size_t n, size_t t);
-  void *realloc(void *p, size_t s);
-  void free(void *p);
-  void derror();
-
-  LibRaw_TLS *tls;
-  libraw_internal_data_t libraw_internal_data;
-  decode first_decode[2048], *second_decode, *free_decode;
-  tiff_ifd_t tiff_ifd[LIBRAW_IFD_MAXCOUNT];
-  libraw_memmgr memmgr;
-  libraw_callbacks_t callbacks;
-
-  //void (LibRaw::*write_thumb)();
-  void (LibRaw::*write_fun)();
-  void (LibRaw::*load_raw)();
-  //void (LibRaw::*thumb_load_raw)();
-  void (LibRaw::*pentax_component_load_raw)();
-
-  void write_thumb_ppm_tiff(FILE *);
-
-  int own_filtering_supported() { return 0; }
-  void identify();
-  void initdata();
-  unsigned parse_custom_cameras(unsigned limit, libraw_custom_camera_t table[],
-                                char **list);
-  void write_ppm_tiff();
-  void convert_to_rgb();
-  void remove_zeroes();
-  void crop_masked_pixels();
-#ifndef NO_LCMS
-  void apply_profile(const char *, const char *);
-#endif
-  void pre_interpolate();
-  void border_interpolate(int border);
-  void lin_interpolate();
-  void vng_interpolate();
-  void ppg_interpolate();
-  void cielab(ushort rgb[3], short lab[3]);
-  void xtrans_interpolate(int);
-  void ahd_interpolate();
-  void dht_interpolate();
-  void aahd_interpolate();
-
-  void dcb(int iterations, int dcb_enhance);
-  void fbdd(int noiserd);
-  void exp_bef(float expos, float preser);
-
-  void bad_pixels(const char *);
-  void subtract(const char *);
-  void hat_transform(float *temp, float *base, int st, int size, int sc);
-  void wavelet_denoise();
-  void scale_colors();
-  void median_filter();
-  void blend_highlights();
-  void recover_highlights();
-  void green_matching();
-
-  void stretch();
-
-  void jpeg_thumb_writer(FILE *tfp, char *thumb, int thumb_length);
-#if 0
-  void jpeg_thumb();
-  void ppm_thumb();
-  void ppm16_thumb();
-  void layer_thumb();
-  void rollei_thumb();
-#endif
-  void kodak_thumb_load_raw();
-
-  unsigned get4();
-
-  int flip_index(int row, int col);
-  void gamma_curve(double pwr, double ts, int mode, int imax);
-  void cubic_spline(const int *x_, const int *y_, const int len);
-
-  /* RawSpeed data */
-  void *_rawspeed_camerameta;
-  void *_rawspeed_decoder;
-  void *_rawspeed3_handle;
-  void fix_after_rawspeed(int bl);
-  int try_rawspeed(); /* returns LIBRAW_SUCCESS on success */
-  /* Fast cancel flag */
-  long _exitflag;
-
-  /* DNG SDK data */
-  void *dnghost;
-  void *dngnegative;
-  void *dngimage;
-  int valid_for_dngsdk();
-  int try_dngsdk();
-  /* X3F data */
-  void *_x3f_data; /* keep it even if USE_X3FTOOLS is not defined to do not change sizeof(LibRaw)*/
-
-  int raw_was_read()
-  {
-    return imgdata.rawdata.raw_image || imgdata.rawdata.color4_image ||
-           imgdata.rawdata.color3_image || imgdata.rawdata.float_image ||
-           imgdata.rawdata.float3_image || imgdata.rawdata.float4_image;
-  }
-
-#ifdef LIBRAW_LIBRARY_BUILD
-#include "internal/libraw_internal_funcs.h"
-#endif
-};
-
-#ifdef LIBRAW_LIBRARY_BUILD
-ushort libraw_sget2_static(short _order, uchar *s);
-unsigned libraw_sget4_static(short _order, uchar *s);
-int libraw_tagtype_dataunit_bytes(int tagtype);
-double  libraw_sgetreal_static(short _order, int type, uchar *s);
-float   libraw_int_to_float (int i);
-#endif
-
-
-#ifdef LIBRAW_LIBRARY_BUILD
-#define RUN_CALLBACK(stage, iter, expect)                                      \
-  if (callbacks.progress_cb)                                                   \
-  {                                                                            \
-    int rr = (*callbacks.progress_cb)(callbacks.progresscb_data, stage, iter,  \
-                                      expect);                                 \
-    if (rr != 0)                                                               \
-      throw LIBRAW_EXCEPTION_CANCELLED_BY_CALLBACK;                            \
-  }
-#endif
-
-#endif /* __cplusplus */
-
-#endif /* _LIBRAW_CLASS_H */
diff --git a/includes/libraw/libraw_alloc.h b/includes/libraw/libraw_alloc.h
deleted file mode 100644
index 2a6461e..0000000
--- a/includes/libraw/libraw_alloc.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_alloc.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  22, 2008
- *
- * LibRaw C++ interface
- *
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef __LIBRAW_ALLOC_H
-#define __LIBRAW_ALLOC_H
-
-#include 
-#include 
-#include "libraw_const.h"
-
-#ifdef __cplusplus
-
-#define LIBRAW_MSIZE 512
-
-class DllDef libraw_memmgr
-{
-public:
-  libraw_memmgr(unsigned ee) : extra_bytes(ee)
-  {
-    size_t alloc_sz = LIBRAW_MSIZE * sizeof(void *);
-    mems = (void **)::malloc(alloc_sz);
-    memset(mems, 0, alloc_sz);
-  }
-  ~libraw_memmgr()
-  {
-    cleanup();
-    ::free(mems);
-  }
-  void *malloc(size_t sz)
-  {
-#ifdef LIBRAW_USE_CALLOC_INSTEAD_OF_MALLOC
-    void *ptr = ::calloc(sz + extra_bytes, 1);
-#else
-    void *ptr = ::malloc(sz + extra_bytes);
-#endif
-    mem_ptr(ptr);
-    return ptr;
-  }
-  void *calloc(size_t n, size_t sz)
-  {
-    void *ptr = ::calloc(n + (extra_bytes + sz - 1) / (sz ? sz : 1), sz);
-    mem_ptr(ptr);
-    return ptr;
-  }
-  void *realloc(void *ptr, size_t newsz)
-  {
-    void *ret = ::realloc(ptr, newsz + extra_bytes);
-    forget_ptr(ptr);
-    mem_ptr(ret);
-    return ret;
-  }
-  void free(void *ptr)
-  {
-    forget_ptr(ptr);
-    ::free(ptr);
-  }
-  void cleanup(void)
-  {
-    for (int i = 0; i < LIBRAW_MSIZE; i++)
-      if (mems[i])
-      {
-        ::free(mems[i]);
-        mems[i] = NULL;
-      }
-  }
-
-private:
-  void **mems;
-  unsigned extra_bytes;
-  void mem_ptr(void *ptr)
-  {
-#if defined(LIBRAW_USE_OPENMP)
-      bool ok = false; /* do not return from critical section */
-#endif
-
-#if defined(LIBRAW_USE_OPENMP)
-#pragma omp critical
-      {
-#endif
-          if (ptr)
-          {
-              for (int i = 0; i < LIBRAW_MSIZE - 1; i++)
-                  if (!mems[i])
-                  {
-                      mems[i] = ptr;
-#if defined(LIBRAW_USE_OPENMP)
-		      ok = true;
-		      break;
-#else
-                      return;
-#endif
-                  }
-#ifdef LIBRAW_MEMPOOL_CHECK
-#if !defined(LIBRAW_USE_OPENMP)
-              /* remember ptr in last mems item to be free'ed at cleanup */
-              if (!mems[LIBRAW_MSIZE - 1])
-                  mems[LIBRAW_MSIZE - 1] = ptr;
-              throw LIBRAW_EXCEPTION_MEMPOOL;
-#endif
-#endif
-          }
-#if defined(LIBRAW_USE_OPENMP)
-      }
-      if(!ok)
-      {
-          if (!mems[LIBRAW_MSIZE - 1])
-              mems[LIBRAW_MSIZE - 1] = ptr;
-          throw LIBRAW_EXCEPTION_MEMPOOL;
-      }
-#endif
-  }
-  void forget_ptr(void *ptr)
-  {
-#if defined(LIBRAW_USE_OPENMP)
-#pragma omp critical
-    {
-#endif
-     if (ptr)
-      for (int i = 0; i < LIBRAW_MSIZE; i++)
-        if (mems[i] == ptr)
-        {
-          mems[i] = NULL;
-          break;
-        }
-#if defined(LIBRAW_USE_OPENMP)
-    }
-#endif
-  }
-};
-
-#endif /* C++ */
-
-#endif
diff --git a/includes/libraw/libraw_const.h b/includes/libraw/libraw_const.h
deleted file mode 100644
index 76b3873..0000000
--- a/includes/libraw/libraw_const.h
+++ /dev/null
@@ -1,821 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_const.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8 , 2008
- * LibRaw error codes
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef _LIBRAW_ERRORS_H
-#define _LIBRAW_ERRORS_H
-
-#define LIBRAW_DEFAULT_ADJUST_MAXIMUM_THRESHOLD 0.75f
-#define LIBRAW_DEFAULT_AUTO_BRIGHTNESS_THRESHOLD 0.01f
-/* limit allocation size, default is 2Gb */
-#ifndef LIBRAW_MAX_ALLOC_MB_DEFAULT
-#define LIBRAW_MAX_ALLOC_MB_DEFAULT 2048L
-#endif
-
-#ifndef LIBRAW_MAX_PROFILE_SIZE_MB
-#define LIBRAW_MAX_PROFILE_SIZE_MB 256LL
-#endif
-
-#ifndef LIBRAW_MAX_NONDNG_RAW_FILE_SIZE
-#define LIBRAW_MAX_NONDNG_RAW_FILE_SIZE 2147483647ULL
-#endif
-
-#ifndef LIBRAW_MAX_DNG_RAW_FILE_SIZE
-#ifdef USE_DNGSDK
-#define LIBRAW_MAX_DNG_RAW_FILE_SIZE 4294967295ULL
-#else
-#define LIBRAW_MAX_DNG_RAW_FILE_SIZE 2147483647ULL
-#endif
-#endif
-
-
-/* limit thumbnail size, default is 512Mb*/
-#ifndef LIBRAW_MAX_THUMBNAIL_MB
-#define LIBRAW_MAX_THUMBNAIL_MB 512L
-#endif
-
-/* Check if enough file space exists before tag read */
-#ifndef LIBRAW_NO_IOSPACE_CHECK
-#define LIBRAW_IOSPACE_CHECK
-#endif
-#ifndef LIBRAW_NO_CR3_MEMPOOL
-#define LIBRAW_CR3_MEMPOOL
-#endif
-
-
-
-/* LibRaw uses own memory pool management, with LIBRAW_MSIZE (512)
-entries. It is enough for parsing/decoding non-damaged files, but
-may overflow on specially crafted files (eg. with many string values
-like XMP blocks.
-LIBRAW_MEMPOOL_CHECK define will result in error on pool overflow */
-#ifndef LIBRAW_NO_MEMPOOL_CHECK
-#define LIBRAW_MEMPOOL_CHECK
-#endif
-
-#define LIBRAW_MAX_METADATA_BLOCKS 1024
-#define LIBRAW_CBLACK_SIZE 4104
-#define LIBRAW_IFD_MAXCOUNT 10
-#define LIBRAW_THUMBNAIL_MAXCOUNT 8
-#define LIBRAW_CRXTRACKS_MAXCOUNT 16
-#define LIBRAW_AFDATA_MAXCOUNT 4
-
-#define LIBRAW_AHD_TILE 512
-
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-
-enum LibRaw_open_flags
-{
-	LIBRAW_OPEN_BIGFILE=1,
-	LIBRAW_OPEN_FILE= 1<<1
-};
-#endif
-
-enum LibRaw_openbayer_patterns
-{
-  LIBRAW_OPENBAYER_RGGB = 0x94,
-  LIBRAW_OPENBAYER_BGGR = 0x16,
-  LIBRAW_OPENBAYER_GRBG = 0x61,
-  LIBRAW_OPENBAYER_GBRG = 0x49
-};
-
-enum LibRaw_dngfields_marks
-{
-  LIBRAW_DNGFM_FORWARDMATRIX = 1,
-  LIBRAW_DNGFM_ILLUMINANT = 1 << 1,
-  LIBRAW_DNGFM_COLORMATRIX = 1 << 2,
-  LIBRAW_DNGFM_CALIBRATION = 1 << 3,
-  LIBRAW_DNGFM_ANALOGBALANCE = 1 << 4,
-  LIBRAW_DNGFM_BLACK = 1 << 5,
-  LIBRAW_DNGFM_WHITE = 1 << 6,
-  LIBRAW_DNGFM_OPCODE2 = 1 << 7,
-  LIBRAW_DNGFM_LINTABLE = 1 << 8,
-  LIBRAW_DNGFM_CROPORIGIN = 1 << 9,
-  LIBRAW_DNGFM_CROPSIZE = 1 << 10,
-  LIBRAW_DNGFM_PREVIEWCS = 1 << 11,
-  LIBRAW_DNGFM_ASSHOTNEUTRAL = 1 << 12,
-  LIBRAW_DNGFM_BASELINEEXPOSURE = 1 << 13,
-  LIBRAW_DNGFM_LINEARRESPONSELIMIT = 1 << 14,
-  LIBRAW_DNGFM_USERCROP = 1 << 15,
-  LIBRAW_DNGFM_OPCODE1 = 1 << 16,
-  LIBRAW_DNGFM_OPCODE3 = 1 << 17,
-};
-
-enum LibRaw_As_Shot_WB_Applied_codes
-{
-  LIBRAW_ASWB_APPLIED = 1,
-  LIBRAW_ASWB_CANON = 2,
-  LIBRAW_ASWB_NIKON = 4,
-  LIBRAW_ASWB_NIKON_SRAW = 8,
-  LIBRAW_ASWB_PENTAX = 16,
-  LIBRAW_ASWB_SONY = 32
-};
-
-#define tagtypeIs(typex) (type == typex)
-enum LibRaw_ExifTagTypes {
-  LIBRAW_EXIFTAG_TYPE_UNKNOWN   =  0,
-  LIBRAW_EXIFTAG_TYPE_BYTE      =  1,
-  LIBRAW_EXIFTAG_TYPE_ASCII     =  2,
-  LIBRAW_EXIFTAG_TYPE_SHORT     =  3,
-  LIBRAW_EXIFTAG_TYPE_LONG      =  4,
-  LIBRAW_EXIFTAG_TYPE_RATIONAL  =  5,
-  LIBRAW_EXIFTAG_TYPE_SBYTE     =  6,
-  LIBRAW_EXIFTAG_TYPE_UNDEFINED =  7,
-  LIBRAW_EXIFTAG_TYPE_SSHORT    =  8,
-  LIBRAW_EXIFTAG_TYPE_SLONG     =  9,
-  LIBRAW_EXIFTAG_TYPE_SRATIONAL = 10,
-  LIBRAW_EXIFTAG_TYPE_FLOAT     = 11,
-  LIBRAW_EXIFTAG_TYPE_DOUBLE    = 12,
-  LIBRAW_EXIFTAG_TYPE_IFD       = 13,
-  LIBRAW_EXIFTAG_TYPE_UNICODE   = 14,
-  LIBRAW_EXIFTAG_TYPE_COMPLEX   = 15,
-  LIBRAW_EXIFTAG_TYPE_LONG8     = 16,
-  LIBRAW_EXIFTAG_TYPE_SLONG8    = 17,
-  LIBRAW_EXIFTAG_TYPE_IFD8      = 18
-};
-
-#define LIBRAW_EXIFTOOLTAGTYPE_int8u       LIBRAW_EXIFTAG_TYPE_BYTE
-#define LIBRAW_EXIFTOOLTAGTYPE_string      LIBRAW_EXIFTAG_TYPE_ASCII
-#define LIBRAW_EXIFTOOLTAGTYPE_int16u      LIBRAW_EXIFTAG_TYPE_SHORT
-#define LIBRAW_EXIFTOOLTAGTYPE_int32u      LIBRAW_EXIFTAG_TYPE_LONG
-#define LIBRAW_EXIFTOOLTAGTYPE_rational64u LIBRAW_EXIFTAG_TYPE_RATIONAL
-#define LIBRAW_EXIFTOOLTAGTYPE_int8s       LIBRAW_EXIFTAG_TYPE_SBYTE
-#define LIBRAW_EXIFTOOLTAGTYPE_undef       LIBRAW_EXIFTAG_TYPE_UNDEFINED
-#define LIBRAW_EXIFTOOLTAGTYPE_binary      LIBRAW_EXIFTAG_TYPE_UNDEFINED
-#define LIBRAW_EXIFTOOLTAGTYPE_int16s      LIBRAW_EXIFTAG_TYPE_SSHORT
-#define LIBRAW_EXIFTOOLTAGTYPE_int32s      LIBRAW_EXIFTAG_TYPE_SLONG
-#define LIBRAW_EXIFTOOLTAGTYPE_rational64s LIBRAW_EXIFTAG_TYPE_SRATIONAL
-#define LIBRAW_EXIFTOOLTAGTYPE_float       LIBRAW_EXIFTAG_TYPE_FLOAT
-#define LIBRAW_EXIFTOOLTAGTYPE_double      LIBRAW_EXIFTAG_TYPE_DOUBLE
-#define LIBRAW_EXIFTOOLTAGTYPE_ifd         LIBRAW_EXIFTAG_TYPE_IFD
-#define LIBRAW_EXIFTOOLTAGTYPE_unicode     LIBRAW_EXIFTAG_TYPE_UNICODE
-#define LIBRAW_EXIFTOOLTAGTYPE_complex     LIBRAW_EXIFTAG_TYPE_COMPLEX
-#define LIBRAW_EXIFTOOLTAGTYPE_int64u      LIBRAW_EXIFTAG_TYPE_LONG8
-#define LIBRAW_EXIFTOOLTAGTYPE_int64s      LIBRAW_EXIFTAG_TYPE_SLONG8
-#define LIBRAW_EXIFTOOLTAGTYPE_ifd64       LIBRAW_EXIFTAG_TYPE_IFD8
-
-#define LIBRAW_LENS_NOT_SET 0xffffffffffffffffULL
-
-enum LibRaw_whitebalance_code
-{
-// clang-format off
-  /*
-      EXIF light sources
-      12 = FL-D; Daylight fluorescent (D 5700K – 7100K) (F1,F5)
-      13 = FL-N; Day white fluorescent (N 4600K – 5400K) (F7,F8)
-      14 = FL-W; Cool white fluorescent (W 3900K – 4500K) (F2,F6, office, store, warehouse)
-      15 = FL-WW; White fluorescent (WW 3200K – 3700K) (F3, residential)
-      16 = FL-L; Soft/Warm white fluorescent (L 2600K - 3250K) (F4, kitchen, bath)
-  */
-//clang-format on
-  LIBRAW_WBI_Unknown = 0,
-  LIBRAW_WBI_Daylight = 1,
-  LIBRAW_WBI_Fluorescent = 2,
-  LIBRAW_WBI_Tungsten = 3,
-  LIBRAW_WBI_Flash = 4,
-  LIBRAW_WBI_FineWeather = 9,
-  LIBRAW_WBI_Cloudy = 10,
-  LIBRAW_WBI_Shade = 11,
-  LIBRAW_WBI_FL_D = 12,
-  LIBRAW_WBI_FL_N = 13,
-  LIBRAW_WBI_FL_W = 14,
-  LIBRAW_WBI_FL_WW = 15,
-  LIBRAW_WBI_FL_L = 16,
-  LIBRAW_WBI_Ill_A = 17,
-  LIBRAW_WBI_Ill_B = 18,
-  LIBRAW_WBI_Ill_C = 19,
-  LIBRAW_WBI_D55 = 20,
-  LIBRAW_WBI_D65 = 21,
-  LIBRAW_WBI_D75 = 22,
-  LIBRAW_WBI_D50 = 23,
-  LIBRAW_WBI_StudioTungsten = 24,
-  LIBRAW_WBI_Sunset = 64,
-  LIBRAW_WBI_Underwater = 65,
-  LIBRAW_WBI_FluorescentHigh = 66,
-  LIBRAW_WBI_HT_Mercury = 67,
-  LIBRAW_WBI_AsShot = 81,
-  LIBRAW_WBI_Auto = 82,
-  LIBRAW_WBI_Custom = 83,
-  LIBRAW_WBI_Auto1 = 85,
-  LIBRAW_WBI_Auto2 = 86,
-  LIBRAW_WBI_Auto3 = 87,
-  LIBRAW_WBI_Auto4 = 88,
-  LIBRAW_WBI_Custom1 = 90,
-  LIBRAW_WBI_Custom2 = 91,
-  LIBRAW_WBI_Custom3 = 92,
-  LIBRAW_WBI_Custom4 = 93,
-  LIBRAW_WBI_Custom5 = 94,
-  LIBRAW_WBI_Custom6 = 95,
-  LIBRAW_WBI_PC_Set1 = 96,
-  LIBRAW_WBI_PC_Set2 = 97,
-  LIBRAW_WBI_PC_Set3 = 98,
-  LIBRAW_WBI_PC_Set4 = 99,
-  LIBRAW_WBI_PC_Set5 = 100,
-  LIBRAW_WBI_Measured = 110,
-  LIBRAW_WBI_BW = 120,
-  LIBRAW_WBI_Kelvin = 254,
-  LIBRAW_WBI_Other = 255,
-  LIBRAW_WBI_None = 0xffff
-};
-
-enum LibRaw_MultiExposure_related
-{
-  LIBRAW_ME_NONE = 0,
-  LIBRAW_ME_SIMPLE = 1,
-  LIBRAW_ME_OVERLAY = 2,
-  LIBRAW_ME_HDR = 3
-};
-
-enum LibRaw_dng_processing
-{
-  LIBRAW_DNG_NONE = 0,
-  LIBRAW_DNG_FLOAT = 1,
-  LIBRAW_DNG_LINEAR = 2,
-  LIBRAW_DNG_DEFLATE = 4,
-  LIBRAW_DNG_XTRANS = 8,
-  LIBRAW_DNG_OTHER = 16,
-  LIBRAW_DNG_8BIT = 32,
-  /*LIBRAW_DNG_LARGERANGE=64,*/ /* more than 16 bit integer */
-  LIBRAW_DNG_ALL =
-      LIBRAW_DNG_FLOAT | LIBRAW_DNG_LINEAR | LIBRAW_DNG_DEFLATE | LIBRAW_DNG_XTRANS |
-      LIBRAW_DNG_8BIT | LIBRAW_DNG_OTHER /* |LIBRAW_DNG_LARGERANGE */,
-  LIBRAW_DNG_DEFAULT = LIBRAW_DNG_FLOAT | LIBRAW_DNG_LINEAR |
-                       LIBRAW_DNG_DEFLATE | LIBRAW_DNG_8BIT
-};
-
-enum LibRaw_output_flags
-{
-    LIBRAW_OUTPUT_FLAGS_NONE = 0,
-    LIBRAW_OUTPUT_FLAGS_PPMMETA = 1
-};
-
-enum LibRaw_runtime_capabilities
-{
-  LIBRAW_CAPS_RAWSPEED = 1,
-  LIBRAW_CAPS_DNGSDK = 1<<1,
-  LIBRAW_CAPS_GPRSDK = 1<<2,
-  LIBRAW_CAPS_UNICODEPATHS = 1<<3,
-  LIBRAW_CAPS_X3FTOOLS = 1<<4,
-  LIBRAW_CAPS_RPI6BY9 = 1<<5,
-  LIBRAW_CAPS_ZLIB = 1<<6,
-  LIBRAW_CAPS_JPEG = 1<<7,
-  LIBRAW_CAPS_RAWSPEED3 = 1<<8,
-  LIBRAW_CAPS_RAWSPEED_BITS = 1<<9,
-};
-
-enum LibRaw_colorspace {
-  LIBRAW_COLORSPACE_NotFound = 0,
-  LIBRAW_COLORSPACE_sRGB,
-  LIBRAW_COLORSPACE_AdobeRGB,
-  LIBRAW_COLORSPACE_WideGamutRGB,
-  LIBRAW_COLORSPACE_ProPhotoRGB,
-  LIBRAW_COLORSPACE_ICC,
-  LIBRAW_COLORSPACE_Uncalibrated, // Tag 0x0001 InteropIndex containing "R03" + LIBRAW_COLORSPACE_Uncalibrated = Adobe RGB
-  LIBRAW_COLORSPACE_CameraLinearUniWB,
-  LIBRAW_COLORSPACE_CameraLinear,
-  LIBRAW_COLORSPACE_CameraGammaUniWB,
-  LIBRAW_COLORSPACE_CameraGamma,
-  LIBRAW_COLORSPACE_MonochromeLinear,
-  LIBRAW_COLORSPACE_MonochromeGamma,
-  LIBRAW_COLORSPACE_Rec2020,
-  LIBRAW_COLORSPACE_Unknown = 255
-};
-
-enum LibRaw_cameramaker_index
-{
-  LIBRAW_CAMERAMAKER_Unknown = 0,
-  LIBRAW_CAMERAMAKER_Agfa,
-  LIBRAW_CAMERAMAKER_Alcatel,
-  LIBRAW_CAMERAMAKER_Apple,
-  LIBRAW_CAMERAMAKER_Aptina,
-  LIBRAW_CAMERAMAKER_AVT,
-  LIBRAW_CAMERAMAKER_Baumer,
-  LIBRAW_CAMERAMAKER_Broadcom,
-  LIBRAW_CAMERAMAKER_Canon,
-  LIBRAW_CAMERAMAKER_Casio,
-  LIBRAW_CAMERAMAKER_CINE,
-  LIBRAW_CAMERAMAKER_Clauss,
-  LIBRAW_CAMERAMAKER_Contax,
-  LIBRAW_CAMERAMAKER_Creative,
-  LIBRAW_CAMERAMAKER_DJI,
-  LIBRAW_CAMERAMAKER_DXO,
-  LIBRAW_CAMERAMAKER_Epson,
-  LIBRAW_CAMERAMAKER_Foculus,
-  LIBRAW_CAMERAMAKER_Fujifilm,
-  LIBRAW_CAMERAMAKER_Generic,
-  LIBRAW_CAMERAMAKER_Gione,
-  LIBRAW_CAMERAMAKER_GITUP,
-  LIBRAW_CAMERAMAKER_Google,
-  LIBRAW_CAMERAMAKER_GoPro,
-  LIBRAW_CAMERAMAKER_Hasselblad,
-  LIBRAW_CAMERAMAKER_HTC,
-  LIBRAW_CAMERAMAKER_I_Mobile,
-  LIBRAW_CAMERAMAKER_Imacon,
-  LIBRAW_CAMERAMAKER_JK_Imaging,
-  LIBRAW_CAMERAMAKER_Kodak,
-  LIBRAW_CAMERAMAKER_Konica,
-  LIBRAW_CAMERAMAKER_Leaf,
-  LIBRAW_CAMERAMAKER_Leica,
-  LIBRAW_CAMERAMAKER_Lenovo,
-  LIBRAW_CAMERAMAKER_LG,
-  LIBRAW_CAMERAMAKER_Logitech,
-  LIBRAW_CAMERAMAKER_Mamiya,
-  LIBRAW_CAMERAMAKER_Matrix,
-  LIBRAW_CAMERAMAKER_Meizu,
-  LIBRAW_CAMERAMAKER_Micron,
-  LIBRAW_CAMERAMAKER_Minolta,
-  LIBRAW_CAMERAMAKER_Motorola,
-  LIBRAW_CAMERAMAKER_NGM,
-  LIBRAW_CAMERAMAKER_Nikon,
-  LIBRAW_CAMERAMAKER_Nokia,
-  LIBRAW_CAMERAMAKER_Olympus,
-  LIBRAW_CAMERAMAKER_OmniVison,
-  LIBRAW_CAMERAMAKER_Panasonic,
-  LIBRAW_CAMERAMAKER_Parrot,
-  LIBRAW_CAMERAMAKER_Pentax,
-  LIBRAW_CAMERAMAKER_PhaseOne,
-  LIBRAW_CAMERAMAKER_PhotoControl,
-  LIBRAW_CAMERAMAKER_Photron,
-  LIBRAW_CAMERAMAKER_Pixelink,
-  LIBRAW_CAMERAMAKER_Polaroid,
-  LIBRAW_CAMERAMAKER_RED,
-  LIBRAW_CAMERAMAKER_Ricoh,
-  LIBRAW_CAMERAMAKER_Rollei,
-  LIBRAW_CAMERAMAKER_RoverShot,
-  LIBRAW_CAMERAMAKER_Samsung,
-  LIBRAW_CAMERAMAKER_Sigma,
-  LIBRAW_CAMERAMAKER_Sinar,
-  LIBRAW_CAMERAMAKER_SMaL,
-  LIBRAW_CAMERAMAKER_Sony,
-  LIBRAW_CAMERAMAKER_ST_Micro,
-  LIBRAW_CAMERAMAKER_THL,
-  LIBRAW_CAMERAMAKER_VLUU,
-  LIBRAW_CAMERAMAKER_Xiaomi,
-  LIBRAW_CAMERAMAKER_XIAOYI,
-  LIBRAW_CAMERAMAKER_YI,
-  LIBRAW_CAMERAMAKER_Yuneec,
-  LIBRAW_CAMERAMAKER_Zeiss,
-  LIBRAW_CAMERAMAKER_OnePlus,
-  LIBRAW_CAMERAMAKER_ISG,
-  LIBRAW_CAMERAMAKER_VIVO,
-  LIBRAW_CAMERAMAKER_HMD_Global,
-  LIBRAW_CAMERAMAKER_HUAWEI,
-  LIBRAW_CAMERAMAKER_RaspberryPi,
-  LIBRAW_CAMERAMAKER_OmDigital,
-
-  // Insert additional indexes here
-  LIBRAW_CAMERAMAKER_TheLastOne
-};
-
-enum LibRaw_camera_mounts
-{
-  LIBRAW_MOUNT_Unknown = 0,
-  LIBRAW_MOUNT_Alpa,
-  LIBRAW_MOUNT_C,              /* C-mount */
-  LIBRAW_MOUNT_Canon_EF_M,
-  LIBRAW_MOUNT_Canon_EF_S,
-  LIBRAW_MOUNT_Canon_EF,
-  LIBRAW_MOUNT_Canon_RF,
-  LIBRAW_MOUNT_Contax_N,
-  LIBRAW_MOUNT_Contax645,
-  LIBRAW_MOUNT_FT,             /* original 4/3 */
-  LIBRAW_MOUNT_mFT,            /* micro 4/3 */
-  LIBRAW_MOUNT_Fuji_GF,        /* Fujifilm GFX cameras, G mount */
-  LIBRAW_MOUNT_Fuji_GX,        /* Fujifilm GX680 */
-  LIBRAW_MOUNT_Fuji_X,
-  LIBRAW_MOUNT_Hasselblad_H,   /* Hasselblad Hn cameras, HC & HCD lenses */
-  LIBRAW_MOUNT_Hasselblad_V,
-  LIBRAW_MOUNT_Hasselblad_XCD, /* Hasselblad Xn cameras, XCD lenses */
-  LIBRAW_MOUNT_Leica_M,        /* Leica rangefinder bayonet */
-  LIBRAW_MOUNT_Leica_R,        /* Leica SLRs, 'R' for reflex */
-  LIBRAW_MOUNT_Leica_S,        /* LIBRAW_FORMAT_LeicaS 'MF' */
-  LIBRAW_MOUNT_Leica_SL,       /* lens, mounts on 'L' throat, FF */
-  LIBRAW_MOUNT_Leica_TL,       /* lens, mounts on 'L' throat, APS-C */
-  LIBRAW_MOUNT_LPS_L,          /* Leica/Panasonic/Sigma camera mount, takes L, SL and TL lenses */
-  LIBRAW_MOUNT_Mamiya67,       /* Mamiya RB67, RZ67 */
-  LIBRAW_MOUNT_Mamiya645,
-  LIBRAW_MOUNT_Minolta_A,
-  LIBRAW_MOUNT_Nikon_CX,       /* used in 'Nikon 1' series */
-  LIBRAW_MOUNT_Nikon_F,
-  LIBRAW_MOUNT_Nikon_Z,
-  LIBRAW_MOUNT_PhaseOne_iXM_MV,
-  LIBRAW_MOUNT_PhaseOne_iXM_RS,
-  LIBRAW_MOUNT_PhaseOne_iXM,
-  LIBRAW_MOUNT_Pentax_645,
-  LIBRAW_MOUNT_Pentax_K,
-  LIBRAW_MOUNT_Pentax_Q,
-  LIBRAW_MOUNT_RicohModule,
-  LIBRAW_MOUNT_Rollei_bayonet, /* Rollei Hy-6: Leaf AFi, Sinar Hy6- models */
-  LIBRAW_MOUNT_Samsung_NX_M,
-  LIBRAW_MOUNT_Samsung_NX,
-  LIBRAW_MOUNT_Sigma_X3F,
-  LIBRAW_MOUNT_Sony_E,
-  LIBRAW_MOUNT_LF,
-  LIBRAW_MOUNT_DigitalBack,
-  LIBRAW_MOUNT_FixedLens,
-  LIBRAW_MOUNT_IL_UM,          /* Interchangeable lens, mount unknown */
-  LIBRAW_MOUNT_TheLastOne
-};
-
-enum LibRaw_camera_formats
-{
-  LIBRAW_FORMAT_Unknown = 0,
-  LIBRAW_FORMAT_APSC,
-  LIBRAW_FORMAT_FF,
-  LIBRAW_FORMAT_MF,
-  LIBRAW_FORMAT_APSH,
-  LIBRAW_FORMAT_1INCH,
-  LIBRAW_FORMAT_1div2p3INCH,  /* 1/2.3" */
-  LIBRAW_FORMAT_1div1p7INCH,  /* 1/1.7" */
-  LIBRAW_FORMAT_FT,           /* sensor size in FT & mFT cameras */
-  LIBRAW_FORMAT_CROP645,      /* 44x33mm */
-  LIBRAW_FORMAT_LeicaS,       /* 'MF' Leicas */
-  LIBRAW_FORMAT_645,
-  LIBRAW_FORMAT_66,
-  LIBRAW_FORMAT_69,
-  LIBRAW_FORMAT_LF,
-  LIBRAW_FORMAT_Leica_DMR,
-  LIBRAW_FORMAT_67,
-  LIBRAW_FORMAT_SigmaAPSC,    /* DP1, DP2, SD15, SD14, SD10, SD9 */
-  LIBRAW_FORMAT_SigmaMerrill, /* SD1,  'SD1 Merrill',  'DP1 Merrill',  'DP2 Merrill' */
-  LIBRAW_FORMAT_SigmaAPSH,    /* 'sd Quattro H' */
-  LIBRAW_FORMAT_3648,         /* DALSA FTF4052C (Mamiya ZD) */
-  LIBRAW_FORMAT_68,           /* Fujifilm GX680 */
-  LIBRAW_FORMAT_TheLastOne
-};
-
-enum LibRawImageAspects
-{
-  LIBRAW_IMAGE_ASPECT_UNKNOWN = 0,
-  LIBRAW_IMAGE_ASPECT_OTHER = 1,
-  LIBRAW_IMAGE_ASPECT_MINIMAL_REAL_ASPECT_VALUE = 99, /* 1:10*/
-  LIBRAW_IMAGE_ASPECT_MAXIMAL_REAL_ASPECT_VALUE = 10000, /* 10: 1*/
-  // Value:  width / height * 1000
-  LIBRAW_IMAGE_ASPECT_3to2 =  (1000 * 3)/2,
-  LIBRAW_IMAGE_ASPECT_1to1 =  1000,
-  LIBRAW_IMAGE_ASPECT_4to3 =  (1000 * 4)/ 3,
-  LIBRAW_IMAGE_ASPECT_16to9 = (1000 * 16) / 9,
-  //LIBRAW_IMAGE_ASPECT_6to6, // what is the difference with 1:1 ?
-  LIBRAW_IMAGE_ASPECT_5to4 = (1000 * 5) / 4,
-  LIBRAW_IMAGE_ASPECT_7to6 = (1000 * 7) / 6,
-  LIBRAW_IMAGE_ASPECT_6to5 = (1000 * 6) / 5,
-  LIBRAW_IMAGE_ASPECT_7to5 = (1000 * 7) / 5
-};
-
-enum LibRaw_lens_focal_types
-{
-  LIBRAW_FT_UNDEFINED = 0,
-  LIBRAW_FT_PRIME_LENS = 1,
-  LIBRAW_FT_ZOOM_LENS = 2,
-  LIBRAW_FT_ZOOM_LENS_CONSTANT_APERTURE = 3,
-  LIBRAW_FT_ZOOM_LENS_VARIABLE_APERTURE = 4
-};
-
-enum LibRaw_Canon_RecordModes {
-  LIBRAW_Canon_RecordMode_UNDEFINED = 0,
-  LIBRAW_Canon_RecordMode_JPEG,
-  LIBRAW_Canon_RecordMode_CRW_THM,
-  LIBRAW_Canon_RecordMode_AVI_THM,
-  LIBRAW_Canon_RecordMode_TIF,
-  LIBRAW_Canon_RecordMode_TIF_JPEG,
-  LIBRAW_Canon_RecordMode_CR2,
-  LIBRAW_Canon_RecordMode_CR2_JPEG,
-  LIBRAW_Canon_RecordMode_UNKNOWN,
-  LIBRAW_Canon_RecordMode_MOV,
-  LIBRAW_Canon_RecordMode_MP4,
-  LIBRAW_Canon_RecordMode_CRM,
-  LIBRAW_Canon_RecordMode_CR3,
-  LIBRAW_Canon_RecordMode_CR3_JPEG,
-  LIBRAW_Canon_RecordMode_HEIF,
-  LIBRAW_Canon_RecordMode_CR3_HEIF,
-  LIBRAW_Canon_RecordMode_TheLastOne
-};
-
-enum LibRaw_minolta_storagemethods
-{
-  LIBRAW_MINOLTA_UNPACKED = 0x52,
-  LIBRAW_MINOLTA_PACKED   = 0x59
-};
-
-enum LibRaw_minolta_bayerpatterns
-{
-  LIBRAW_MINOLTA_RGGB   = 0x01,
-  LIBRAW_MINOLTA_G2BRG1 = 0x04
-};
-
-enum LibRaw_sony_cameratypes
-{
-  LIBRAW_SONY_DSC  = 1,
-  LIBRAW_SONY_DSLR = 2,
-  LIBRAW_SONY_NEX  = 3,
-  LIBRAW_SONY_SLT  = 4,
-  LIBRAW_SONY_ILCE = 5,
-  LIBRAW_SONY_ILCA = 6,
-  LIBRAW_SONY_CameraType_UNKNOWN = 0xffff
-};
-
-enum LibRaw_Sony_0x2010_Type {
-  LIBRAW_SONY_Tag2010None = 0,
-  LIBRAW_SONY_Tag2010a,
-  LIBRAW_SONY_Tag2010b,
-  LIBRAW_SONY_Tag2010c,
-  LIBRAW_SONY_Tag2010d,
-  LIBRAW_SONY_Tag2010e,
-  LIBRAW_SONY_Tag2010f,
-  LIBRAW_SONY_Tag2010g,
-  LIBRAW_SONY_Tag2010h,
-  LIBRAW_SONY_Tag2010i
-};
-enum LibRaw_Sony_0x9050_Type {
-  LIBRAW_SONY_Tag9050None = 0,
-  LIBRAW_SONY_Tag9050a,
-  LIBRAW_SONY_Tag9050b,
-  LIBRAW_SONY_Tag9050c,
-  LIBRAW_SONY_Tag9050d
-};
-
-enum LIBRAW_SONY_FOCUSMODEmodes
-{
-  LIBRAW_SONY_FOCUSMODE_MF     = 0,
-  LIBRAW_SONY_FOCUSMODE_AF_S   = 2,
-  LIBRAW_SONY_FOCUSMODE_AF_C   = 3,
-  LIBRAW_SONY_FOCUSMODE_AF_A   = 4,
-  LIBRAW_SONY_FOCUSMODE_DMF    = 6,
-  LIBRAW_SONY_FOCUSMODE_AF_D   = 7,
-  LIBRAW_SONY_FOCUSMODE_AF           = 101,
-  LIBRAW_SONY_FOCUSMODE_PERMANENT_AF = 104,
-  LIBRAW_SONY_FOCUSMODE_SEMI_MF      = 105,
-  LIBRAW_SONY_FOCUSMODE_UNKNOWN      = -1
-};
-
-enum LibRaw_KodakSensors
-{
-  LIBRAW_Kodak_UnknownSensor = 0,
-  LIBRAW_Kodak_M1 = 1,
-  LIBRAW_Kodak_M15 = 2,
-  LIBRAW_Kodak_M16 = 3,
-  LIBRAW_Kodak_M17 = 4,
-  LIBRAW_Kodak_M2 = 5,
-  LIBRAW_Kodak_M23 = 6,
-  LIBRAW_Kodak_M24 = 7,
-  LIBRAW_Kodak_M3 = 8,
-  LIBRAW_Kodak_M5 = 9,
-  LIBRAW_Kodak_M6 = 10,
-  LIBRAW_Kodak_C14 = 11,
-  LIBRAW_Kodak_X14 = 12,
-  LIBRAW_Kodak_M11 = 13
-};
-
-enum LibRaw_HasselbladFormatCodes {
-  LIBRAW_HF_Unknown = 0,
-  LIBRAW_HF_3FR,
-  LIBRAW_HF_FFF,
-  LIBRAW_HF_Imacon,
-  LIBRAW_HF_HasselbladDNG,
-  LIBRAW_HF_AdobeDNG,
-  LIBRAW_HF_AdobeDNG_fromPhocusDNG
-};
-
-enum LibRaw_rawspecial_t
-{
-    LIBRAW_RAWSPECIAL_SONYARW2_NONE = 0,
-    LIBRAW_RAWSPECIAL_SONYARW2_BASEONLY = 1,
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAONLY = 1 << 1,
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAZEROBASE = 1 << 2,
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTATOVALUE = 1 << 3,
-    LIBRAW_RAWSPECIAL_SONYARW2_ALLFLAGS =
-    LIBRAW_RAWSPECIAL_SONYARW2_BASEONLY +
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAONLY +
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAZEROBASE +
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTATOVALUE,
-    LIBRAW_RAWSPECIAL_NODP2Q_INTERPOLATERG = 1<<4,
-    LIBRAW_RAWSPECIAL_NODP2Q_INTERPOLATEAF = 1 << 5,
-    LIBRAW_RAWSPECIAL_SRAW_NO_RGB = 1 << 6,
-    LIBRAW_RAWSPECIAL_SRAW_NO_INTERPOLATE = 1 << 7
-};
-
-enum LibRaw_rawspeed_bits_t
-{
-    LIBRAW_RAWSPEEDV1_USE = 1,
-    LIBRAW_RAWSPEEDV1_FAILONUNKNOWN = 1 << 1,
-    LIBRAW_RAWSPEEDV1_IGNOREERRORS = 1 << 2,
-    /*  bits 3-7 are reserved*/
-    LIBRAW_RAWSPEEDV3_USE = 1 << 8,
-    LIBRAW_RAWSPEEDV3_FAILONUNKNOWN = 1 << 9,
-    LIBRAW_RAWSPEEDV3_IGNOREERRORS = 1 << 10,
-};
-
-enum LibRaw_processing_options
-{
-  LIBRAW_RAWOPTIONS_PENTAX_PS_ALLFRAMES = 1,
-  LIBRAW_RAWOPTIONS_CONVERTFLOAT_TO_INT = 1 << 1,
-  LIBRAW_RAWOPTIONS_ARQ_SKIP_CHANNEL_SWAP = 1 << 2,
-  LIBRAW_RAWOPTIONS_NO_ROTATE_FOR_KODAK_THUMBNAILS = 1 << 3,
-//  LIBRAW_RAWOPTIONS_USE_DNG_DEFAULT_CROP = 1 << 4,
-  LIBRAW_RAWOPTIONS_USE_PPM16_THUMBS = 1 << 5,
-  LIBRAW_RAWOPTIONS_DONT_CHECK_DNG_ILLUMINANT = 1 << 6,
-  LIBRAW_RAWOPTIONS_DNGSDK_ZEROCOPY = 1 << 7,
-  LIBRAW_RAWOPTIONS_ZEROFILTERS_FOR_MONOCHROMETIFFS = 1 << 8,
-  LIBRAW_RAWOPTIONS_DNG_ADD_ENHANCED = 1 << 9,
-  LIBRAW_RAWOPTIONS_DNG_ADD_PREVIEWS = 1 << 10,
-  LIBRAW_RAWOPTIONS_DNG_PREFER_LARGEST_IMAGE = 1 << 11,
-  LIBRAW_RAWOPTIONS_DNG_STAGE2 = 1 << 12,
-  LIBRAW_RAWOPTIONS_DNG_STAGE3 = 1 << 13,
-  LIBRAW_RAWOPTIONS_DNG_ALLOWSIZECHANGE = 1 << 14,
-  LIBRAW_RAWOPTIONS_DNG_DISABLEWBADJUST = 1 << 15,
-  LIBRAW_RAWOPTIONS_PROVIDE_NONSTANDARD_WB = 1 << 16,
-  LIBRAW_RAWOPTIONS_CAMERAWB_FALLBACK_TO_DAYLIGHT = 1 << 17,
-  LIBRAW_RAWOPTIONS_CHECK_THUMBNAILS_KNOWN_VENDORS = 1 << 18,
-  LIBRAW_RAWOPTIONS_CHECK_THUMBNAILS_ALL_VENDORS = 1 << 19,
-  LIBRAW_RAWOPTIONS_DNG_STAGE2_IFPRESENT = 1 << 20,
-  LIBRAW_RAWOPTIONS_DNG_STAGE3_IFPRESENT = 1 << 21,
-  LIBRAW_RAWOPTIONS_DNG_ADD_MASKS = 1 << 22,
-  LIBRAW_RAWOPTIONS_CANON_IGNORE_MAKERNOTES_ROTATION = 1 << 23,
-  LIBRAW_RAWOPTIONS_ALLOW_JPEGXL_PREVIEWS = 1 << 24
-};
-
-enum LibRaw_decoder_flags
-{
-  LIBRAW_DECODER_HASCURVE = 1 << 4,
-  LIBRAW_DECODER_SONYARW2 = 1 << 5,
-  LIBRAW_DECODER_TRYRAWSPEED = 1 << 6,
-  LIBRAW_DECODER_OWNALLOC = 1 << 7,
-  LIBRAW_DECODER_FIXEDMAXC = 1 << 8,
-  LIBRAW_DECODER_ADOBECOPYPIXEL = 1 << 9,
-  LIBRAW_DECODER_LEGACY_WITH_MARGINS = 1 << 10,
-  LIBRAW_DECODER_3CHANNEL = 1 << 11,
-  LIBRAW_DECODER_SINAR4SHOT = 1 << 11,
-  LIBRAW_DECODER_FLATDATA = 1 << 12,
-  LIBRAW_DECODER_FLAT_BG2_SWAPPED = 1<<13,
-  LIBRAW_DECODER_UNSUPPORTED_FORMAT = 1 << 14,
-  LIBRAW_DECODER_NOTSET = 1 << 15,
-  LIBRAW_DECODER_TRYRAWSPEED3 = 1 << 16
-};
-
-#define LIBRAW_XTRANS 9
-
-enum LibRaw_constructor_flags
-{
-  LIBRAW_OPTIONS_NONE = 0,
-  LIBRAW_OPTIONS_NO_DATAERR_CALLBACK = 1 << 1,
-  /* Compatibility w/ years old typo */
-  LIBRAW_OPIONS_NO_DATAERR_CALLBACK = LIBRAW_OPTIONS_NO_DATAERR_CALLBACK
-};
-
-enum LibRaw_warnings
-{
-  LIBRAW_WARN_NONE = 0,
-  LIBRAW_WARN_BAD_CAMERA_WB = 1 << 2,
-  LIBRAW_WARN_NO_METADATA = 1 << 3,
-  LIBRAW_WARN_NO_JPEGLIB = 1 << 4,
-  LIBRAW_WARN_NO_EMBEDDED_PROFILE = 1 << 5,
-  LIBRAW_WARN_NO_INPUT_PROFILE = 1 << 6,
-  LIBRAW_WARN_BAD_OUTPUT_PROFILE = 1 << 7,
-  LIBRAW_WARN_NO_BADPIXELMAP = 1 << 8,
-  LIBRAW_WARN_BAD_DARKFRAME_FILE = 1 << 9,
-  LIBRAW_WARN_BAD_DARKFRAME_DIM = 1 << 10,
-  LIBRAW_WARN_RAWSPEED_PROBLEM = 1 << 12,
-  LIBRAW_WARN_RAWSPEED_UNSUPPORTED = 1 << 13,
-  LIBRAW_WARN_RAWSPEED_PROCESSED = 1 << 14,
-  LIBRAW_WARN_FALLBACK_TO_AHD = 1 << 15,
-  LIBRAW_WARN_PARSEFUJI_PROCESSED = 1 << 16,
-  LIBRAW_WARN_DNGSDK_PROCESSED = 1 << 17,
-  LIBRAW_WARN_DNG_IMAGES_REORDERED = 1 << 18,
-  LIBRAW_WARN_DNG_STAGE2_APPLIED = 1 << 19,
-  LIBRAW_WARN_DNG_STAGE3_APPLIED = 1 << 20,
-  LIBRAW_WARN_RAWSPEED3_PROBLEM = 1 << 21,
-  LIBRAW_WARN_RAWSPEED3_UNSUPPORTED = 1 << 22,
-  LIBRAW_WARN_RAWSPEED3_PROCESSED = 1 << 23,
-  LIBRAW_WARN_RAWSPEED3_NOTLISTED = 1 << 24,
-  LIBRAW_WARN_VENDOR_CROP_SUGGESTED = 1 << 25
-};
-
-enum LibRaw_exceptions
-{
-  LIBRAW_EXCEPTION_NONE = 0,
-  LIBRAW_EXCEPTION_ALLOC = 1,
-  LIBRAW_EXCEPTION_DECODE_RAW = 2,
-  LIBRAW_EXCEPTION_DECODE_JPEG = 3,
-  LIBRAW_EXCEPTION_IO_EOF = 4,
-  LIBRAW_EXCEPTION_IO_CORRUPT = 5,
-  LIBRAW_EXCEPTION_CANCELLED_BY_CALLBACK = 6,
-  LIBRAW_EXCEPTION_BAD_CROP = 7,
-  LIBRAW_EXCEPTION_IO_BADFILE = 8,
-  LIBRAW_EXCEPTION_DECODE_JPEG2000 = 9,
-  LIBRAW_EXCEPTION_TOOBIG = 10,
-  LIBRAW_EXCEPTION_MEMPOOL = 11,
-  LIBRAW_EXCEPTION_UNSUPPORTED_FORMAT = 12
-};
-
-enum LibRaw_progress
-{
-  LIBRAW_PROGRESS_START = 0,
-  LIBRAW_PROGRESS_OPEN = 1,
-  LIBRAW_PROGRESS_IDENTIFY = 1 << 1,
-  LIBRAW_PROGRESS_SIZE_ADJUST = 1 << 2,
-  LIBRAW_PROGRESS_LOAD_RAW = 1 << 3,
-  LIBRAW_PROGRESS_RAW2_IMAGE = 1 << 4,
-  LIBRAW_PROGRESS_REMOVE_ZEROES = 1 << 5,
-  LIBRAW_PROGRESS_BAD_PIXELS = 1 << 6,
-  LIBRAW_PROGRESS_DARK_FRAME = 1 << 7,
-  LIBRAW_PROGRESS_FOVEON_INTERPOLATE = 1 << 8,
-  LIBRAW_PROGRESS_SCALE_COLORS = 1 << 9,
-  LIBRAW_PROGRESS_PRE_INTERPOLATE = 1 << 10,
-  LIBRAW_PROGRESS_INTERPOLATE = 1 << 11,
-  LIBRAW_PROGRESS_MIX_GREEN = 1 << 12,
-  LIBRAW_PROGRESS_MEDIAN_FILTER = 1 << 13,
-  LIBRAW_PROGRESS_HIGHLIGHTS = 1 << 14,
-  LIBRAW_PROGRESS_FUJI_ROTATE = 1 << 15,
-  LIBRAW_PROGRESS_FLIP = 1 << 16,
-  LIBRAW_PROGRESS_APPLY_PROFILE = 1 << 17,
-  LIBRAW_PROGRESS_CONVERT_RGB = 1 << 18,
-  LIBRAW_PROGRESS_STRETCH = 1 << 19,
-  /* reserved */
-  LIBRAW_PROGRESS_STAGE20 = 1 << 20,
-  LIBRAW_PROGRESS_STAGE21 = 1 << 21,
-  LIBRAW_PROGRESS_STAGE22 = 1 << 22,
-  LIBRAW_PROGRESS_STAGE23 = 1 << 23,
-  LIBRAW_PROGRESS_STAGE24 = 1 << 24,
-  LIBRAW_PROGRESS_STAGE25 = 1 << 25,
-  LIBRAW_PROGRESS_STAGE26 = 1 << 26,
-  LIBRAW_PROGRESS_STAGE27 = 1 << 27,
-
-  LIBRAW_PROGRESS_THUMB_LOAD = 1 << 28,
-  LIBRAW_PROGRESS_TRESERVED1 = 1 << 29,
-  LIBRAW_PROGRESS_TRESERVED2 = 1 << 30
-};
-#define LIBRAW_PROGRESS_THUMB_MASK 0x0fffffff
-
-enum LibRaw_errors
-{
-  LIBRAW_SUCCESS = 0,
-  LIBRAW_UNSPECIFIED_ERROR = -1,
-  LIBRAW_FILE_UNSUPPORTED = -2,
-  LIBRAW_REQUEST_FOR_NONEXISTENT_IMAGE = -3,
-  LIBRAW_OUT_OF_ORDER_CALL = -4,
-  LIBRAW_NO_THUMBNAIL = -5,
-  LIBRAW_UNSUPPORTED_THUMBNAIL = -6,
-  LIBRAW_INPUT_CLOSED = -7,
-  LIBRAW_NOT_IMPLEMENTED = -8,
-  LIBRAW_REQUEST_FOR_NONEXISTENT_THUMBNAIL = -9,
-  LIBRAW_UNSUFFICIENT_MEMORY = -100007,
-  LIBRAW_DATA_ERROR = -100008,
-  LIBRAW_IO_ERROR = -100009,
-  LIBRAW_CANCELLED_BY_CALLBACK = -100010,
-  LIBRAW_BAD_CROP = -100011,
-  LIBRAW_TOO_BIG = -100012,
-  LIBRAW_MEMPOOL_OVERFLOW = -100013
-};
-
-#define LIBRAW_FATAL_ERROR(ec) ((ec) < -100000)
-
-enum LibRaw_internal_thumbnail_formats
-{
-    LIBRAW_INTERNAL_THUMBNAIL_UNKNOWN = 0,
-    LIBRAW_INTERNAL_THUMBNAIL_KODAK_THUMB = 1,
-    LIBRAW_INTERNAL_THUMBNAIL_KODAK_YCBCR = 2,
-    LIBRAW_INTERNAL_THUMBNAIL_KODAK_RGB = 3,
-    LIBRAW_INTERNAL_THUMBNAIL_JPEG = 4,
-    LIBRAW_INTERNAL_THUMBNAIL_LAYER,
-    LIBRAW_INTERNAL_THUMBNAIL_ROLLEI,
-    LIBRAW_INTERNAL_THUMBNAIL_PPM,
-    LIBRAW_INTERNAL_THUMBNAIL_PPM16,
-    LIBRAW_INTERNAL_THUMBNAIL_X3F,
-	LIBRAW_INTERNAL_THUMBNAIL_DNG_YCBCR,
-	LIBRAW_INTERNAL_THUMBNAIL_JPEGXL
-};
-
-
-enum LibRaw_thumbnail_formats
-{
-  LIBRAW_THUMBNAIL_UNKNOWN = 0,
-  LIBRAW_THUMBNAIL_JPEG = 1,
-  LIBRAW_THUMBNAIL_BITMAP = 2,
-  LIBRAW_THUMBNAIL_BITMAP16 = 3,
-  LIBRAW_THUMBNAIL_LAYER = 4,
-  LIBRAW_THUMBNAIL_ROLLEI = 5,
-  LIBRAW_THUMBNAIL_H265 = 6,
-  LIBRAW_THUMBNAIL_JPEGXL = 7
-};
-
-enum LibRaw_image_formats
-{
-  LIBRAW_IMAGE_JPEG = 1,
-  LIBRAW_IMAGE_BITMAP = 2,
-  LIBRAW_IMAGE_JPEGXL = 3,
-  LIBRAW_IMAGE_H265 = 4
-};
-
-#endif
diff --git a/includes/libraw/libraw_datastream.h b/includes/libraw/libraw_datastream.h
deleted file mode 100644
index 9557d91..0000000
--- a/includes/libraw/libraw_datastream.h
+++ /dev/null
@@ -1,404 +0,0 @@
-/* -*- C -*-
- * File: libraw_datastream.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sun Jan 18 13:07:35 2009
- *
- * LibRaw Data stream interface
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef __LIBRAW_DATASTREAM_H
-#define __LIBRAW_DATASTREAM_H
-
-#include 
-#include 
-#include 
-#include 
-
-#ifndef __cplusplus
-
-#else /* __cplusplus */
-#if defined _WIN32
-#ifndef LIBRAW_NO_WINSOCK2
-#ifdef NOMINMAX
-#define LIBRAW_NO_UNDEF_NOMINMAX
-#else
-#define NOMINMAX
-#endif
-
-#include 
-
-#ifndef LIBRAW_NO_UNDEF_NOMINMAX
-#undef NOMINMAX /* restore previous mode*/
-#endif
-#undef LIBRAW_NO_UNDEF_NOMINMAX
-#endif
-#endif
-/* No unique_ptr on Apple ?? */
-#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520) ||  \
-    (defined(_MSC_VER) && _MSVC_LANG >= 201103L)
-/* OK - use unique_ptr unless LIBRAW_USE_AUTOPTR defined externally*/
-#else
-/* Force to use auto_ptr */
-#ifndef LIBRAW_USE_AUTOPTR
-#define LIBRAW_USE_AUTOPTR
-#endif
-#endif
-
-#include "libraw_const.h"
-#include "libraw_types.h"
-#include 
-#include 
-#include 
-
-#if defined(_WIN32) && (_MSC_VER) >= 1500
-#define WIN32SECURECALLS
-#endif
-
-#ifdef USE_DNGSDK
-
-#if defined LIBRAW_WIN32_CALLS
-#define qWinOS 1
-#define qMacOS 0
-#elif defined(__APPLE__)
-#define qWinOS 0
-#define qMacOS 1
-#else
-/* define OS types for DNG here */
-#endif
-#define qDNGXMPDocOps 0
-#define qDNGUseLibJPEG 1
-#define qDNGXMPFiles 0
-#define qDNGExperimental 1
-#define qDNGThreadSafe 1
-#include "dng_stream.h"
-#endif /* DNGSDK */
-
-#define IOERROR()                                                              \
-  do                                                                           \
-  {                                                                            \
-    throw LIBRAW_EXCEPTION_IO_EOF;                                             \
-  } while (0)
-
-class LibRaw_buffer_datastream;
-class LibRaw_bit_buffer;
-
-class DllDef LibRaw_abstract_datastream
-{
-public:
-  LibRaw_abstract_datastream() { };
-  virtual ~LibRaw_abstract_datastream(void) { }
-  virtual int valid() = 0;
-  virtual int read(void *, size_t, size_t) = 0;
-  virtual int seek(INT64, int) = 0;
-  virtual INT64 tell() = 0;
-  virtual INT64 size() = 0;
-  virtual int get_char() = 0;
-  virtual char *gets(char *, int) = 0;
-  virtual int scanf_one(const char *, void *) = 0;
-  virtual int eof() = 0;
-  virtual int jpeg_src(void *);
-  virtual void buffering_off() {}
-  /* reimplement in subclass to use parallel access in xtrans_load_raw() if
-   * OpenMP is not used */
-  virtual int lock() { return 1; } /* success */
-  virtual void unlock() {}
-  virtual const char *fname() { return NULL; };
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  virtual const wchar_t *wfname() { return NULL; };
-#endif
-};
-
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-
-#ifdef LIBRAW_WIN32_DLLDEFS
-#ifdef LIBRAW_USE_AUTOPTR
-template class DllDef std::auto_ptr;
-#else
-template class DllDef std::unique_ptr;
-#endif
-#endif
-
-class DllDef LibRaw_file_datastream : public LibRaw_abstract_datastream
-{
-protected:
-#ifdef LIBRAW_USE_AUTOPTR
-  std::auto_ptr f; /* will close() automatically through dtor */
-#else
-  std::unique_ptr f;
-#endif
-  std::string filename;
-  INT64 _fsize;
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  std::wstring wfilename;
-#endif
-
-public:
-  virtual ~LibRaw_file_datastream();
-  LibRaw_file_datastream(const char *fname);
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  LibRaw_file_datastream(const wchar_t *fname);
-#endif
-  virtual int valid();
-  virtual int read(void *ptr, size_t size, size_t nmemb);
-  virtual int eof();
-  virtual int seek(INT64 o, int whence);
-  virtual INT64 tell();
-  virtual INT64 size() { return _fsize; }
-  virtual int get_char() {return f->sbumpc();}
-  virtual char *gets(char *str, int sz);
-  virtual int scanf_one(const char *fmt, void *val);
-  virtual const char *fname();
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  virtual const wchar_t *wfname();
-#endif
-};
-#endif
-
-#if defined (LIBRAW_NO_IOSTREAMS_DATASTREAM)  && defined (LIBRAW_WIN32_CALLS)
-
-struct DllDef LibRaw_bufio_params
-{
-    static int bufsize;
-    static void set_bufsize(int bs);
-};
-
-class buffer_t : public std::vector
-{
-public:
-    INT64 _bstart, _bend;
-    buffer_t() : std::vector(LibRaw_bufio_params::bufsize), _bstart(0), _bend(0) {}
-    int charOReof(INT64 _fpos)
-    {
-        if (_bstart < 0LL || _bend < 0LL || _bend < _bstart || _fpos < 0LL)  
-            return -1;
-        if ((_bend - _bstart) > (INT64)size()) 
-            return -1;
-        if (_fpos >= _bstart && _fpos < _bend)
-            return data()[_fpos - _bstart];
-        return -1;
-    }
-    bool contains(INT64 _fpos, INT64& contains)
-    {
-        if (_bstart < 0LL || _bend < 0LL || _bend < _bstart || _fpos < 0LL)
-        {
-            contains = 0;
-            return false;
-        }
-        if ((_bend - _bstart) > (INT64)size())
-        {
-          contains = 0;
-          return false;
-        }       
-        if (_fpos >= _bstart && _fpos < _bend)
-        {
-            contains = _bend - _fpos;
-            return true;
-        }
-        contains = 0;
-        return false;
-    }
-};
-
-
-class DllDef LibRaw_bigfile_buffered_datastream : public LibRaw_abstract_datastream
-{
-public:
-    LibRaw_bigfile_buffered_datastream(const char *fname);
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-    LibRaw_bigfile_buffered_datastream(const wchar_t *fname);
-#endif
-    virtual ~LibRaw_bigfile_buffered_datastream();
-    virtual int valid();
-    virtual void buffering_off() { buffered = 0; }
-    virtual int read(void *ptr, size_t size, size_t nmemb);
-    virtual int eof();
-    virtual int seek(INT64 o, int whence);
-    virtual INT64 tell();
-    virtual INT64 size() { return _fsize; }
-    virtual char *gets(char *str, int sz);
-    virtual int scanf_one(const char *fmt, void *val);
-    virtual const char *fname();
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-    virtual const wchar_t *wfname();
-#endif
-    virtual int get_char()
-    {
-        int r = iobuffers[0].charOReof(_fpos);
-        if (r >= 0)
-        {
-            _fpos++;
-            return r;
-        }
-        unsigned char c;
-        r = read(&c, 1, 1);
-        return r > 0 ? c : r;
-    }
-
-protected:
-    INT64   readAt(void *ptr, size_t size, INT64 off);
-    bool	fillBufferAt(int buf, INT64 off);
-    int		selectStringBuffer(INT64 len, INT64& contains);
-    HANDLE fhandle;
-    INT64 _fsize;
-    INT64 _fpos; /* current file position; current buffer start position */
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-    std::wstring wfilename;
-#endif
-    std::string filename;
-    buffer_t iobuffers[2];
-    int buffered;
-};
-
-#endif
-
-class DllDef LibRaw_buffer_datastream : public LibRaw_abstract_datastream
-{
-public:
-  LibRaw_buffer_datastream(const void *buffer, size_t bsize);
-  virtual ~LibRaw_buffer_datastream();
-  virtual int valid();
-  virtual int jpeg_src(void *jpegdata);
-  virtual int read(void *ptr, size_t sz, size_t nmemb);
-  virtual int eof();
-  virtual int seek(INT64 o, int whence);
-  virtual INT64 tell();
-  virtual INT64 size() { return streamsize; }
-  virtual char *gets(char *s, int sz);
-  virtual int scanf_one(const char *fmt, void *val);
-  virtual int get_char()
-  {
-    if (streampos >= streamsize)   return -1;
-    return buf[streampos++];
-  }
-
-private:
-  unsigned char *buf;
-  size_t streampos, streamsize;
-};
-
-class DllDef LibRaw_bigfile_datastream : public LibRaw_abstract_datastream
-{
-public:
-  LibRaw_bigfile_datastream(const char *fname);
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  LibRaw_bigfile_datastream(const wchar_t *fname);
-#endif
-  virtual ~LibRaw_bigfile_datastream();
-  virtual int valid();
-  virtual int read(void *ptr, size_t size, size_t nmemb);
-  virtual int eof();
-  virtual int seek(INT64 o, int whence);
-  virtual INT64 tell();
-  virtual INT64 size() { return _fsize; }
-  virtual char *gets(char *str, int sz);
-  virtual int scanf_one(const char *fmt, void *val);
-  virtual const char *fname();
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  virtual const wchar_t *wfname();
-#endif
-  virtual int get_char()
-  {
-#ifndef LIBRAW_WIN32_CALLS
-    return getc_unlocked(f);
-#else
-    return fgetc(f);
-#endif
-  }
-
-protected:
-  FILE *f;
-  std::string filename;
-  INT64 _fsize;
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  std::wstring wfilename;
-#endif
-};
-
-#ifdef LIBRAW_WIN32_CALLS
-class DllDef LibRaw_windows_datastream : public LibRaw_buffer_datastream
-{
-public:
-  /* ctor: high level constructor opens a file by name */
-  LibRaw_windows_datastream(const TCHAR *sFile);
-  /* ctor: construct with a file handle - caller is responsible for closing the
-   * file handle */
-  LibRaw_windows_datastream(HANDLE hFile);
-  /* dtor: unmap and close the mapping handle */
-  virtual ~LibRaw_windows_datastream();
-  virtual INT64 size() { return cbView_; }
-
-protected:
-  void Open(HANDLE hFile);
-  inline void reconstruct_base()
-  {
-    /* this subterfuge is to overcome the private-ness of
-     * LibRaw_buffer_datastream */
-    (LibRaw_buffer_datastream &)*this =
-        LibRaw_buffer_datastream(pView_, (size_t)cbView_);
-  }
-
-  HANDLE hMap_;    /* handle of the file mapping */
-  void *pView_;    /* pointer to the mapped memory */
-  __int64 cbView_; /* size of the mapping in bytes */
-};
-
-#endif
-
-#ifdef USE_DNGSDK
-
-class libraw_dng_stream : public dng_stream
-{
-public:
-  libraw_dng_stream(LibRaw_abstract_datastream *p)
-      : dng_stream((dng_abort_sniffer *)NULL, kBigBufferSize, 0),
-        parent_stream(p)
-  {
-    if (parent_stream)
-    {
-        parent_stream->buffering_off();
-      off = parent_stream->tell();
-      parent_stream->seek(0UL, SEEK_SET); /* seek to start */
-    }
-  }
-  ~libraw_dng_stream()
-  {
-    if (parent_stream)
-      parent_stream->seek(off, SEEK_SET);
-  }
-  virtual uint64 DoGetLength()
-  {
-    if (parent_stream)
-      return parent_stream->size();
-    return 0;
-  }
-  virtual void DoRead(void *data, uint32 count, uint64 offset)
-  {
-    if (parent_stream)
-    {
-      parent_stream->seek(offset, SEEK_SET);
-      parent_stream->read(data, 1, count);
-    }
-  }
-
-private:
-  libraw_dng_stream(const libraw_dng_stream &stream);
-  libraw_dng_stream &operator=(const libraw_dng_stream &stream);
-  LibRaw_abstract_datastream *parent_stream;
-  INT64 off;
-};
-
-#endif
-
-#endif /* cplusplus */
-
-#endif
diff --git a/includes/libraw/libraw_internal.h b/includes/libraw/libraw_internal.h
deleted file mode 100644
index 5af31d3..0000000
--- a/includes/libraw/libraw_internal.h
+++ /dev/null
@@ -1,358 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_internal.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8 , 2008
- *
- * LibRaw internal data structures (not visible outside)
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef _LIBRAW_INTERNAL_TYPES_H
-#define _LIBRAW_INTERNAL_TYPES_H
-
-#include 
-
-#ifdef __cplusplus
-
-#include "libraw_datastream.h"
-#include "libraw_types.h"
-
-class LibRaw_TLS
-{
-public:
-  struct
-  {
-    unsigned bitbuf;
-    int vbits, reset;
-  } getbits;
-  struct
-  {
-    UINT64 bitbuf;
-    int vbits;
-
-  } ph1_bits;
-  struct
-  {
-    unsigned pad[128], p;
-  } sony_decrypt;
-  struct
-  {
-    uchar buf[0x4002];
-    int vpos, padding;
-  } pana_data;
-  uchar jpeg_buffer[4096];
-  struct
-  {
-    float cbrt[0x10000], xyz_cam[3][4];
-  } ahd_data;
-  void init()
-  {
-    getbits.bitbuf = 0;
-    getbits.vbits = getbits.reset = 0;
-    ph1_bits.bitbuf = 0;
-    ph1_bits.vbits = 0;
-    pana_data.vpos = 0;
-    ahd_data.cbrt[0] = -2.0f;
-  }
-};
-
-class LibRaw_constants
-{
-public:
-  static const float d65_white[3];
-  static const double xyz_rgb[3][3];
-  static const double xyzd50_srgb[3][3];
-  static const double rgb_rgb[3][3];
-  static const double adobe_rgb[3][3];
-  static const double wide_rgb[3][3];
-  static const double prophoto_rgb[3][3];
-  static const double aces_rgb[3][3];
-  static const double dcip3d65_rgb[3][3];
-  static const double rec2020_rgb[3][3];
-};
-#endif /* __cplusplus */
-
-typedef struct
-{
-#ifndef __cplusplus
-  struct
-#endif
-      LibRaw_abstract_datastream *input;
-  FILE *output;
-  int input_internal;
-  char *meta_data;
-  INT64 profile_offset;
-  INT64 toffset;
-  unsigned pana_black[4];
-
-} internal_data_t;
-
-#define LIBRAW_HISTOGRAM_SIZE 0x2000
-typedef struct
-{
-  int (*histogram)[LIBRAW_HISTOGRAM_SIZE];
-  unsigned *oprof;
-} output_data_t;
-
-typedef struct
-{
-  unsigned olympus_exif_cfa;
-  unsigned long long unique_id;
-  unsigned long long OlyID;
-  unsigned tiff_nifds;
-  int tiff_flip;
-  int metadata_blocks;
-} identify_data_t;
-
-typedef struct
-{
-  uint32_t first;
-  uint32_t count;
-  uint32_t id;
-} crx_sample_to_chunk_t;
-
-// contents of tag CMP1 for relevant track in CR3 file
-typedef struct
-{
-  int32_t version;
-  int32_t f_width;
-  int32_t f_height;
-  int32_t tileWidth;
-  int32_t tileHeight;
-  int32_t nBits;
-  int32_t nPlanes;
-  int32_t cfaLayout;
-  int32_t encType;
-  int32_t imageLevels;
-  int32_t hasTileCols;
-  int32_t hasTileRows;
-  int32_t mdatHdrSize;
-  int32_t medianBits;
-  // Not from header, but from datastream
-  uint32_t MediaSize;
-  INT64 MediaOffset;
-  uint32_t MediaType; /* 1 -> /C/RAW, 2-> JPEG, 3-> CTMD metadata*/
-  crx_sample_to_chunk_t * stsc_data; /* samples to chunk */
-  uint32_t stsc_count;
-  uint32_t sample_count;
-  uint32_t sample_size; /* zero if not fixed sample size */
-  int32_t *sample_sizes;
-  uint32_t chunk_count;
-  INT64  *chunk_offsets;
-} crx_data_header_t;
-
-typedef struct 
-{
-	uint32_t tag39[6];
-	uint16_t tag3A[6];
-	uint16_t tag3B;
-	uint16_t initial[4];
-	uint16_t tag40a[17], tag40b[17], tag41[17];
-	uint16_t stripe_count; // 0x42
-	uint16_t tag43;
-	INT64	 stripe_offsets[5]; //0x44
-	uint16_t stripe_left[5]; // 0x45
-	uint32_t stripe_compressed_size[5]; //0x46
-	uint16_t stripe_width[5]; //0x47
-	uint16_t stripe_height[5];
-} pana8_tags_t;
-
-typedef struct
-{
-  short order;
-  ushort sraw_mul[4], cr2_slice[3];
-  unsigned kodak_cbpp;
-  INT64 strip_offset, data_offset;
-  INT64 meta_offset;
-  INT64 exif_offset, exif_subdir_offset, ifd0_offset;
-  unsigned data_size;
-  unsigned meta_length;
-  unsigned cr3_exif_length, cr3_ifd0_length;
-  unsigned thumb_misc;
-  enum LibRaw_internal_thumbnail_formats thumb_format;
-  unsigned fuji_layout;
-  unsigned tiff_samples;
-  unsigned tiff_bps;
-  unsigned tiff_compress;
-  unsigned tiff_sampleformat;
-  unsigned zero_after_ff;
-  unsigned tile_width, tile_length, load_flags;
-  unsigned data_error;
-  int hasselblad_parser_flag;
-  long long posRAFData;
-  unsigned lenRAFData;
-  int fuji_total_lines, fuji_total_blocks, fuji_block_width, fuji_bits,
-      fuji_raw_type, fuji_lossless;
-  int pana_encoding, pana_bpp;
-  pana8_tags_t pana8;
-  crx_data_header_t crx_header[LIBRAW_CRXTRACKS_MAXCOUNT];
-  int crx_track_selected;
-  int crx_track_count;
-  short CR3_CTMDtag;
-  short CR3_Version;
-  int CM_found;
-  unsigned is_NikonTransfer;
-  unsigned is_Olympus;
-  int OlympusDNG_SubDirOffsetValid;
-  unsigned is_Sony;
-  unsigned is_pana_raw;
-  unsigned is_PentaxRicohMakernotes; /* =1 for Ricoh software by Pentax, Camera DNG */
-
-  unsigned dng_frames[LIBRAW_IFD_MAXCOUNT*2]; /* bits: 0-7: shot_select, 8-15: IFD#, 16-31: low 16 bit of newsubfile type */
-  unsigned short raw_stride;
-} unpacker_data_t;
-
-typedef struct
-{
-  internal_data_t internal_data;
-  libraw_internal_output_params_t internal_output_params;
-  output_data_t output_data;
-  identify_data_t identify_data;
-  unpacker_data_t unpacker_data;
-} libraw_internal_data_t;
-
-struct decode
-{
-  struct decode *branch[2];
-  int leaf;
-};
-
-struct tiff_ifd_t
-{
-  int t_width, t_height, bps, comp, phint, offset, t_flip, samples, bytes, extrasamples;
-  int t_tile_width, t_tile_length, sample_format, predictor;
-  int rows_per_strip;
-  int *strip_offsets, strip_offsets_count;
-  int *strip_byte_counts, strip_byte_counts_count;
-  unsigned t_filters;
-  int t_vwidth, t_vheight, t_lm,t_tm;
-  int t_fuji_width;
-  float t_shutter;
-  /* Per-IFD DNG fields */
-  INT64 opcode2_offset;
-  INT64 lineartable_offset;
-  int lineartable_len;
-  libraw_dng_color_t dng_color[2];
-  libraw_dng_levels_t dng_levels;
-  int newsubfiletype;
-};
-
-struct jhead
-{
-  int algo, bits, high, wide, clrs, sraw, psv, restart, vpred[6];
-  ushort quant[64], idct[64], *huff[20], *free[20], *row;
-};
-
-struct libraw_tiff_tag
-{
-  ushort tag, type;
-  int count;
-  union {
-    char c[4];
-    short s[2];
-    int i;
-  } val;
-};
-
-struct tiff_hdr
-{
-  ushort t_order, magic;
-  int ifd;
-  ushort pad, ntag;
-  struct libraw_tiff_tag tag[23];
-  int nextifd;
-  ushort pad2, nexif;
-  struct libraw_tiff_tag exif[4];
-  ushort pad3, ngps;
-  struct libraw_tiff_tag gpst[10];
-  short bps[4];
-  int rat[10];
-  unsigned gps[26];
-  char t_desc[512], t_make[64], t_model[64], soft[32], date[20], t_artist[64];
-};
-
-#ifdef DEBUG_STAGE_CHECKS
-#define CHECK_ORDER_HIGH(expected_stage)                                       \
-  do                                                                           \
-  {                                                                            \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) >=               \
-        expected_stage)                                                        \
-    {                                                                          \
-      fprintf(stderr, "CHECK_HIGH: check %d >=  %d\n",                         \
-              imgdata.progress_flags &LIBRAW_PROGRESS_THUMB_MASK,              \
-              expected_stage);                                                 \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-    }                                                                          \
-  } while (0)
-
-#define CHECK_ORDER_LOW(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    printf("Checking LOW %d/%d : %d\n", imgdata.progress_flags,                \
-           expected_stage, imgdata.progress_flags < expected_stage);           \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) <                \
-        expected_stage)                                                        \
-    {                                                                          \
-      printf("failed!\n");                                                     \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-    }                                                                          \
-  } while (0)
-#define CHECK_ORDER_BIT(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    if (imgdata.progress_flags & expected_stage)                               \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-  } while (0)
-
-#define SET_PROC_FLAG(stage)                                                   \
-  do                                                                           \
-  {                                                                            \
-    imgdata.progress_flags |= stage;                                           \
-    fprintf(stderr, "SET_FLAG: %d\n", stage);                                  \
-  } while (0)
-
-#else
-
-#define CHECK_ORDER_HIGH(expected_stage)                                       \
-  do                                                                           \
-  {                                                                            \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) >=               \
-        expected_stage)                                                        \
-    {                                                                          \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-    }                                                                          \
-  } while (0)
-
-#define CHECK_ORDER_LOW(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) <                \
-        expected_stage)                                                        \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-  } while (0)
-
-#define CHECK_ORDER_BIT(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    if (imgdata.progress_flags & expected_stage)                               \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-  } while (0)
-
-#define SET_PROC_FLAG(stage)                                                   \
-  do                                                                           \
-  {                                                                            \
-    imgdata.progress_flags |= stage;                                           \
-  } while (0)
-
-#endif
-
-#endif
diff --git a/includes/libraw/libraw_types.h b/includes/libraw/libraw_types.h
deleted file mode 100644
index fd034e8..0000000
--- a/includes/libraw/libraw_types.h
+++ /dev/null
@@ -1,1188 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_types.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8 , 2008
- *
- * LibRaw C data structures
- *
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef _LIBRAW_TYPES_H
-#define _LIBRAW_TYPES_H
-
-#include 
-#ifndef _WIN32
-#include 
-#endif
-
-#include 
-
-#if defined(_WIN32)
-#if defined(_MSC_VER) && (_MSC_VER <= 1500)
-typedef signed __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef signed __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef signed __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef signed __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else /* WIN32, but not old MSVC */
-#include 
-#endif /* _WIN32 */
-#include 
-#else
-#include 
-#endif
-
-#if defined(_OPENMP)
-
-#if defined(LIBRAW_FORCE_OPENMP)
-#define LIBRAW_USE_OPENMP
-#else
-#if defined(_WIN32)
-#if defined(_MSC_VER) &&                                                       \
-    (_MSC_VER >= 1600 || (_MSC_VER == 1500 && _MSC_FULL_VER >= 150030729))
-/* VS2010+ : OpenMP works OK, VS2008: have tested by cgilles */
-#define LIBRAW_USE_OPENMP
-#elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 910)
-/*  Have not tested on 9.x and 10.x, but Intel documentation claims OpenMP 2.5
- * support in 9.1 */
-#define LIBRAW_USE_OPENMP
-#else
-#undef LIBRAW_USE_OPENMP
-#endif
-/* Not Win32 */
-#elif (defined(__APPLE__) || defined(__MACOSX__)) && defined(_REENTRANT)
-/* Latest XCode works with OpenMP, need to recheck here */
-#undef LIBRAW_USE_OPENMP
-#else
-#define LIBRAW_USE_OPENMP
-#endif
-#endif
-#endif
-
-#ifdef LIBRAW_USE_OPENMP
-#include 
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#if defined(USE_LCMS)
-#include 
-#elif defined(USE_LCMS2)
-#include 
-#else
-#define NO_LCMS
-#endif
-
-#include "libraw_const.h"
-#include "libraw_version.h"
-
-#ifdef _WIN32
-  typedef __int64 INT64;
-  typedef unsigned __int64 UINT64;
-#else
-typedef long long INT64;
-typedef unsigned long long UINT64;
-#endif
-
-  typedef unsigned char uchar;
-  typedef unsigned short ushort;
-
-#ifdef LIBRAW_WIN32_DLLDEFS
-#ifdef LIBRAW_NODLL
-#define DllDef
-#else
-#ifdef LIBRAW_BUILDLIB
-#define DllDef __declspec(dllexport)
-#else
-#define DllDef __declspec(dllimport)
-#endif
-#endif
-#else
-#define DllDef
-#endif
-
-  typedef struct
-  {
-    const char *decoder_name;
-    unsigned decoder_flags;
-  } libraw_decoder_info_t;
-
-  typedef struct
-  {
-    unsigned mix_green;
-    unsigned raw_color;
-    unsigned zero_is_bad;
-    ushort shrink;
-    ushort fuji_width;
-  } libraw_internal_output_params_t;
-
-  typedef void (*memory_callback)(void *data, const char *file,
-                                  const char *where);
-  typedef void (*exif_parser_callback)(void *context, int tag, int type,
-                                       int len, unsigned int ord, void *ifp,
-                                       INT64 base);
-
-  typedef void (*data_callback)(void *data, const char *file, const int offset);
-
-  DllDef void default_data_callback(void *data, const char *file,
-                                    const int offset);
-
-  typedef int (*progress_callback)(void *data, enum LibRaw_progress stage,
-                                   int iteration, int expected);
-  typedef int (*pre_identify_callback)(void *ctx);
-  typedef void (*post_identify_callback)(void *ctx);
-  typedef void (*process_step_callback)(void *ctx);
-
-  typedef struct
-  {
-    data_callback data_cb;
-    void *datacb_data;
-
-    progress_callback progress_cb;
-    void *progresscb_data;
-
-    exif_parser_callback exif_cb;
-    void *exifparser_data;
-    pre_identify_callback pre_identify_cb;
-    post_identify_callback post_identify_cb;
-    process_step_callback pre_subtractblack_cb, pre_scalecolors_cb,
-        pre_preinterpolate_cb, pre_interpolate_cb, interpolate_bayer_cb,
-        interpolate_xtrans_cb, post_interpolate_cb, pre_converttorgb_cb,
-        post_converttorgb_cb;
-  } libraw_callbacks_t;
-
-  typedef struct
-  {
-    enum LibRaw_image_formats type;
-    ushort height, width, colors, bits;
-    unsigned int data_size;
-    unsigned char data[1];
-  } libraw_processed_image_t;
-
-  typedef struct
-  {
-    char guard[4];
-    char make[64];
-    char model[64];
-    char software[64];
-    char normalized_make[64];
-    char normalized_model[64];
-    unsigned maker_index;
-    unsigned raw_count;
-    unsigned dng_version;
-    unsigned is_foveon;
-    int colors;
-    unsigned filters;
-    char xtrans[6][6];
-    char xtrans_abs[6][6];
-    char cdesc[5];
-    unsigned xmplen;
-    char *xmpdata;
-
-  } libraw_iparams_t;
-
-  typedef struct
-  {
-    ushort cleft, ctop, cwidth, cheight;
-  } libraw_raw_inset_crop_t;
-
-  typedef struct
-  {
-    ushort raw_height, raw_width, height, width, top_margin, left_margin;
-    ushort iheight, iwidth;
-    unsigned raw_pitch;
-    double pixel_aspect;
-    int flip;
-    int mask[8][4];
-    ushort raw_aspect;
-    libraw_raw_inset_crop_t raw_inset_crops[2];
-  } libraw_image_sizes_t;
-
- typedef struct
-  {
-    short t,l,b,r; // top, left, bottom, right pixel coordinates, (0,0) is top left pixel;
-  } libraw_area_t; 
-
-  struct ph1_t
-  {
-    int format, key_off, tag_21a;
-    int t_black, split_col, black_col, split_row, black_row;
-    float tag_210;
-  };
-
-  typedef struct
-  {
-    unsigned parsedfields;
-    ushort illuminant;
-    float calibration[4][4];
-    float colormatrix[4][3];
-    float forwardmatrix[3][4];
-  } libraw_dng_color_t;
-
-  typedef struct
-  {
-    unsigned parsedfields;
-    unsigned dng_cblack[LIBRAW_CBLACK_SIZE];
-    unsigned dng_black;
-    float dng_fcblack[LIBRAW_CBLACK_SIZE];
-    float dng_fblack;
-    unsigned dng_whitelevel[4];
-    ushort default_crop[4]; /* Origin and size */
-    float    user_crop[4]; // top-left-bottom-right relative to default_crop
-    unsigned preview_colorspace;
-    float analogbalance[4];
-    float asshotneutral[4];
-    float baseline_exposure;
-    float LinearResponseLimit;
-  } libraw_dng_levels_t;
-
-  typedef struct
-  {
-    float romm_cam[9];
-  } libraw_P1_color_t;
-
-  typedef struct
-  {
-    int ColorDataVer;
-    int ColorDataSubVer;
-    int SpecularWhiteLevel;
-    int NormalWhiteLevel;
-    int ChannelBlackLevel[4];
-    int AverageBlackLevel;
-    /* multishot */
-    unsigned int multishot[4];
-    /* metering */
-    short MeteringMode;
-    short SpotMeteringMode;
-    uchar FlashMeteringMode;
-    short FlashExposureLock;
-    short ExposureMode;
-    short AESetting;
-    /* stabilization */
-    short ImageStabilization;
-    /* flash */
-    short FlashMode;
-    short FlashActivity;
-    short FlashBits;
-    short ManualFlashOutput;
-    short FlashOutput;
-    short FlashGuideNumber;
-    /* drive */
-    short ContinuousDrive;
-    /* sensor */
-    short SensorWidth;
-    short SensorHeight;
-
-    int   AFMicroAdjMode;
-    float AFMicroAdjValue;
-    short MakernotesFlip;
-    short RecordMode;
-    short SRAWQuality;
-    unsigned wbi;
-    short RF_lensID;
-    int AutoLightingOptimizer;
-    int HighlightTonePriority;
-
-    /* -1 = n/a            1 = Economy
-        2 = Normal         3 = Fine
-        4 = RAW            5 = Superfine
-        7 = CRAW         130 = Normal Movie, CRM LightRaw
-      131 = CRM  StandardRaw */
-    short Quality;
-    /* data compression curve
-        0 = OFF  1 = CLogV1 2 = CLogV2? 3 = CLogV3 */
-    int CanonLog;
-
-   libraw_area_t DefaultCropAbsolute;
-   libraw_area_t RecommendedImageArea;   // contains the image in proper aspect ratio?
-   libraw_area_t LeftOpticalBlack;       // use this, when present, to estimate black levels?
-   libraw_area_t UpperOpticalBlack;
-   libraw_area_t ActiveArea;
-    
-    short ISOgain[2]; // AutoISO & BaseISO per ExifTool
-  } libraw_canon_makernotes_t;
-
-  typedef struct
-  {
-    int    BaseISO;
-    double Gain;
-    char   Sensor[8];
-    char   SensorUnit[64]; // SU
-    char   HostBody[64];   // HB
-    int    SensorCode;
-    int    SensorSubCode;
-    int    CoatingCode;
-    int    uncropped;
-
-/* CaptureSequenceInitiator is based on the content of the 'model' tag
-  - values like 'Pinhole', 'Flash Sync', '500 Mech.' etc in .3FR 'model' tag
-    come from MAIN MENU > SETTINGS > Camera;
-  - otherwise 'model' contains:
-    1. if CF/CFV/CFH, SU enclosure, can be with SU type if '-' is present
-    2. else if '-' is present, HB + SU type;
-    3. HB;
-*/
-    char CaptureSequenceInitiator[32];
-
-/* SensorUnitConnector, makernotes 0x0015 tag:
- - in .3FR - SU side
- - in .FFF - HB side
-*/
-    char SensorUnitConnector[64];
-
-    int format; // 3FR, FFF, Imacon (H3D-39 and maybe others), Hasselblad/Phocus DNG, Adobe DNG
-    int nIFD_CM[2]; // number of IFD containing CM
-    int RecommendedCrop[2];
-
-/* mnColorMatrix is in makernotes tag 0x002a;
-  not present in .3FR files and Imacon/H3D-39 .FFF files;
-  when present in .FFF and Phocus .DNG files, it is a copy of CM1 from .3FR;
-  available samples contain all '1's in the first 3 elements
-*/
-    double mnColorMatrix[4][3];
-
-  } libraw_hasselblad_makernotes_t;
-
-  typedef struct
-  {
-    float  ExpoMidPointShift;
-    ushort DynamicRange;
-    ushort FilmMode;
-    ushort DynamicRangeSetting;
-    ushort DevelopmentDynamicRange;
-    ushort AutoDynamicRange;
-    ushort DRangePriority;
-    ushort DRangePriorityAuto;
-    ushort DRangePriorityFixed;
-    char   FujiModel[32 + 1];
-    char   FujiModel2[32 + 1];
-
-    /*
-    tag 0x9200, converted to BrightnessCompensation
-    F700, S3Pro, S5Pro, S20Pro, S200EXR
-    E550, E900, F810, S5600, S6500fd, S9000, S9500, S100FS
-    */
-    float BrightnessCompensation; /* in EV, if =4, raw data * 2^4 */
-
-    ushort FocusMode;
-    ushort AFMode;
-    ushort FocusPixel[2];
-    ushort PrioritySettings;
-    unsigned FocusSettings;
-    unsigned AF_C_Settings;
-    ushort FocusWarning;
-    ushort ImageStabilization[3];
-    ushort FlashMode;
-    ushort WB_Preset;
-
-    /* ShutterType:
-       0 - mechanical
-       1 = electronic
-       2 = electronic, long shutter speed
-       3 = electronic, front curtain
-    */
-    ushort ShutterType;
-    ushort ExrMode;
-    ushort Macro;
-    unsigned Rating;
-
-    /* CropMode:
-       1 - FF on GFX,
-       2 - sports finder (mechanical shutter),
-       4 - 1.25x crop (electronic shutter, continuous high)
-    */
-    ushort CropMode;
-    char   SerialSignature[0x0c + 1];
-    char   SensorID[4 + 1];
-    char   RAFVersion[4 + 1];
-    int    RAFDataGeneration; // 0 (none), 1..4, 4096
-    ushort RAFDataVersion;
-    int    isTSNERDTS;
-
-    /* DriveMode:
-       0 - single frame
-       1 - continuous low
-       2 - continuous high
-    */
-    short DriveMode;
-
-    /*
-    tag 0x4000 BlackLevel:
-    S9100, S9000, S7000, S6000fd, S5200, S5100, S5000,
-    S5Pro, S3Pro, S2Pro, S20Pro,
-    S200EXR, S100FS,
-    F810, F700,
-    E900, E550,
-    DBP, and aliases for all of the above
-    */
-    ushort BlackLevel[9];
-    unsigned RAFData_ImageSizeTable[32];
-    int AutoBracketing;
-    int SequenceNumber;
-    int SeriesLength;
-    float PixelShiftOffset[2];
-    int ImageCount;
-  } libraw_fuji_info_t;
-
-  typedef struct
-  {
-    ushort cleft, ctop, cwidth, cheight;
-  } libraw_sensor_highspeed_crop_t;
-
-  typedef struct
-  {
-    double ExposureBracketValue;
-    ushort ActiveDLighting;
-    ushort ShootingMode;
-    /* stabilization */
-    uchar ImageStabilization[7];
-    uchar VibrationReduction;
-    uchar VRMode;
-    /* flash */
-    char  FlashSetting[13];
-    char  FlashType[20];
-    uchar FlashExposureCompensation[4];
-    uchar ExternalFlashExposureComp[4];
-    uchar FlashExposureBracketValue[4];
-    uchar FlashMode;
-    signed char FlashExposureCompensation2;
-    signed char FlashExposureCompensation3;
-    signed char FlashExposureCompensation4;
-    uchar  FlashSource;
-    uchar  FlashFirmware[2];
-    uchar  ExternalFlashFlags;
-    uchar  FlashControlCommanderMode;
-    uchar  FlashOutputAndCompensation;
-    uchar  FlashFocalLength;
-    uchar  FlashGNDistance;
-    uchar  FlashGroupControlMode[4];
-    uchar  FlashGroupOutputAndCompensation[4];
-    uchar  FlashColorFilter;
-
-/* NEF compression, comments follow those for ExifTool tag 0x0093:
-	 1: Lossy (type 1)
-	 2: Uncompressed
-	 3: Lossless
-	 4: Lossy (type 2)
-	 5: Striped packed 12-bit
-	 6: Uncompressed (14-bit reduced to 12-bit)
-	 7: Unpacked 12-bit
-	 8: Small raw
-	 9: Packed 12-bit
-	10: Packed 14-bit
-	13: High Efficiency  (HE)
-	14: High Efficiency* (HE*)
-*/
-    ushort NEFCompression;
-
-    int    ExposureMode;
-    int    ExposureProgram;
-    int    nMEshots;
-    int    MEgainOn;
-    double ME_WB[4];
-    uchar  AFFineTune;
-    uchar  AFFineTuneIndex;
-    int8_t AFFineTuneAdj;
-    unsigned LensDataVersion;
-    unsigned FlashInfoVersion;
-    unsigned ColorBalanceVersion;
-    uchar key;
-    ushort NEFBitDepth[4];
-    ushort HighSpeedCropFormat; /* 1 -> 1.3x; 2 -> DX; 3 -> 5:4; 4 -> 3:2; 6 ->
-                                   16:9; 11 -> FX uncropped; 12 -> DX uncropped;
-                                   17 -> 1:1 */
-    libraw_sensor_highspeed_crop_t SensorHighSpeedCrop;
-    ushort SensorWidth;
-    ushort SensorHeight;
-    ushort Active_D_Lighting;
-    unsigned PictureControlVersion;
-    char PictureControlName [20];
-    char PictureControlBase [20];
-    unsigned ShotInfoVersion;
-    short MakernotesFlip;
-    double RollAngle;  // positive is clockwise, CW
-    double PitchAngle; // positive is upwords
-    double YawAngle;   // positive is to the right
-  } libraw_nikon_makernotes_t;
-
-  typedef struct
-  {
-    char     CameraType2[6];
-    ushort   ValidBits;
-    int      SensorCalibration[2];
-    ushort   DriveMode[5];
-    ushort   ColorSpace;
-    ushort   FocusMode[2];
-    ushort   AutoFocus;
-    ushort   AFPoint;
-    unsigned AFAreas[64];
-    double   AFPointSelected[5];
-    ushort   AFResult;
-    uchar    AFFineTune;
-    short    AFFineTuneAdj[3];
-    unsigned SpecialMode[3];
-    ushort   ZoomStepCount;
-    ushort   FocusStepCount;
-    ushort   FocusStepInfinity;
-    ushort   FocusStepNear;
-    double   FocusDistance;
-    ushort   AspectFrame[4]; // left, top, width, height
-    unsigned StackedImage[2];
-    uchar    isLiveND;
-    unsigned LiveNDfactor;
-    ushort   Panorama_mode;
-    ushort   Panorama_frameNum;
-  } libraw_olympus_makernotes_t;
-
-  typedef struct
-  {
-    /* Compression:
-     34826 (Panasonic RAW 2): LEICA DIGILUX 2;
-     34828 (Panasonic RAW 3): LEICA D-LUX 3; LEICA V-LUX 1; Panasonic DMC-LX1;
-     Panasonic DMC-LX2; Panasonic DMC-FZ30; Panasonic DMC-FZ50; 34830 (not in
-     exiftool): LEICA DIGILUX 3; Panasonic DMC-L1; 34316 (Panasonic RAW 1):
-     others (LEICA, Panasonic, YUNEEC);
-    */
-    ushort   Compression;
-    ushort   BlackLevelDim;
-    float    BlackLevel[8];
-    unsigned Multishot; /* 0 is Off, 65536 is Pixel Shift */
-    float    gamma;
-    int      HighISOMultiplier[3]; /* 0->R, 1->G, 2->B */
-    short    FocusStepNear;
-    short    FocusStepCount;
-    unsigned ZoomPosition;
-    unsigned LensManufacturer;
-  } libraw_panasonic_makernotes_t;
-
-  typedef struct
-  {
-    uchar    DriveMode[4];
-    ushort   FocusMode[2];
-    ushort   AFPointSelected[2];
-    ushort   AFPointSelected_Area;
-    int      AFPointsInFocus_version;
-    unsigned AFPointsInFocus;
-    ushort   FocusPosition;
-    short    AFAdjustment;
-    uchar    AFPointMode;
-    uchar    MultiExposure; /* last bit is not "1" if ME is not used */
-    ushort   Quality; /* 4 is raw, 7 is raw w/ pixel shift, 8 is raw w/ dynamic
-                       pixel shift */
-  } libraw_pentax_makernotes_t;
-
-  typedef struct
-  {
-    ushort   AFStatus;
-    unsigned AFAreaXPosition[2];
-    unsigned AFAreaYPosition[2];
-    ushort   AFAreaMode;
-    unsigned SensorWidth;
-    unsigned SensorHeight;
-    unsigned CroppedImageWidth;
-    unsigned CroppedImageHeight;
-    ushort   WideAdapter;
-    ushort   CropMode;
-    ushort   NDFilter;
-    ushort   AutoBracketing;
-    ushort   MacroMode;
-    ushort   FlashMode;
-    double   FlashExposureComp;
-    double   ManualFlashOutput;
-  } libraw_ricoh_makernotes_t;
-
-  typedef struct
-  {
-    unsigned ImageSizeFull[4];
-    unsigned ImageSizeCrop[4];
-    int      ColorSpace[2];
-    unsigned key[11];
-    double   DigitalGain; /* PostAEGain, digital stretch */
-    int      DeviceType;
-    char     LensFirmware[32];
-  } libraw_samsung_makernotes_t;
-
-  typedef struct
-  {
-    ushort BlackLevelTop;
-    ushort BlackLevelBottom;
-    short offset_left, offset_top; /* KDC files, negative values or zeros */
-    ushort clipBlack, clipWhite;   /* valid for P712, P850, P880 */
-    float romm_camDaylight[3][3];
-    float romm_camTungsten[3][3];
-    float romm_camFluorescent[3][3];
-    float romm_camFlash[3][3];
-    float romm_camCustom[3][3];
-    float romm_camAuto[3][3];
-    ushort val018percent, val100percent, val170percent;
-    short MakerNoteKodak8a;
-    float ISOCalibrationGain;
-    float AnalogISO;
-  } libraw_kodak_makernotes_t;
-
-  typedef struct {
-    char Software[64];        // tag 0x0203
-    char SystemType[64];      // tag 0x0204
-    char FirmwareString[256]; // tag 0x0301
-    char SystemModel[64];
-  } libraw_p1_makernotes_t;
-
-  typedef struct
-  {
-/* afdata:
-  0x0010 CameraInfo
-  0x2020 AFPointsUsed
-  0x2022 FocalPlaneAFPointsUsed
-  0x202a Tag202a
-  0x940e AFInfo
-*/
-    ushort   CameraType;                      // init in 0xffff
-    uchar    Sony0x9400_version; /* 0 if not found/deciphered,
-                                    0xa, 0xb, 0xc following exiftool convention */
-    uchar    Sony0x9400_ReleaseMode2;
-    unsigned Sony0x9400_SequenceImageNumber;
-    uchar    Sony0x9400_SequenceLength1;
-    unsigned Sony0x9400_SequenceFileNumber;
-    uchar    Sony0x9400_SequenceLength2;
-    uint8_t  AFAreaModeSetting;               // init in 0xff; +
-    uint16_t AFAreaMode;                      // init in 0xffff; +
-    ushort   FlexibleSpotPosition[2];         // init in (0xffff, 0xffff)
-    uint8_t  AFPointSelected;                 // init in 0xff
-    uint8_t  AFPointSelected_0x201e;          // init in 0xff
-    short    nAFPointsUsed;
-    uint8_t  AFPointsUsed[10];
-    uint8_t  AFTracking;                      // init in 0xff
-    uint8_t  AFType;
-    ushort   FocusLocation[4];
-    ushort   FocusPosition;                    // init in 0xffff
-    int8_t   AFMicroAdjValue;                  // init in 0x7f
-    int8_t   AFMicroAdjOn;                     // init in -1
-    uchar    AFMicroAdjRegisteredLenses;       // init in 0xff
-    ushort   VariableLowPassFilter;
-    unsigned LongExposureNoiseReduction;      // init in 0xffffffff
-    ushort   HighISONoiseReduction;           // init in 0xffff
-    ushort   HDR[2];
-    ushort   group2010;
-    ushort   group9050;
-    
-    ushort   len_group9050; // currently, for debugging only
-    
-    ushort   real_iso_offset;                 // init in 0xffff
-    ushort   MeteringMode_offset;
-    ushort   ExposureProgram_offset;
-    ushort   ReleaseMode2_offset;
-    unsigned MinoltaCamID;                    // init in 0xffffffff
-    float    firmware;
-    ushort   ImageCount3_offset;              // init in 0xffff
-    unsigned ImageCount3;
-    unsigned ElectronicFrontCurtainShutter;   // init in 0xffffffff
-    ushort   MeteringMode2;
-    char     SonyDateTime[20];
-    unsigned ShotNumberSincePowerUp;
-    ushort   PixelShiftGroupPrefix;
-    unsigned PixelShiftGroupID;
-    char     nShotsInPixelShiftGroup;
-    char     numInPixelShiftGroup; /* '0' if ARQ, first shot in the group has '1'
-                                  here */
-    ushort   prd_ImageHeight, prd_ImageWidth;
-    ushort   prd_Total_bps;
-    ushort   prd_Active_bps;
-    ushort   prd_StorageMethod; /* 82 -> Padded; 89 -> Linear */
-    ushort   prd_BayerPattern;  /* 0 -> not valid; 1 -> RGGB; 4 -> GBRG */
-
-    ushort   SonyRawFileType; /* init in 0xffff
-                               valid for ARW 2.0 and up (FileFormat >= 3000)
-                               takes precedence over RAWFileType and Quality:
-                               0  for uncompressed 14-bit raw
-                               1  for uncompressed 12-bit raw
-                               2  for compressed raw (lossy)
-                               3  for lossless compressed raw
-                               4  for lossless compressed raw v.2 (ILCE-1)
-                            */
-    ushort RAWFileType;     /* init in 0xffff
-                               takes precedence over Quality
-                               0 for compressed raw,
-                               1 for uncompressed;
-                               2 lossless compressed raw v.2
-                            */
-    ushort RawSizeType;     /* init in 0xffff
-                               1 - large,
-                               2 - small,
-                               3 - medium
-                            */
-    unsigned Quality;       /* init in 0xffffffff
-                               0 or 6 for raw, 7 or 8 for compressed raw */
-    ushort FileFormat;      /*  1000 SR2
-                                2000 ARW 1.0
-                                3000 ARW 2.0
-                                3100 ARW 2.1
-                                3200 ARW 2.2
-                                3300 ARW 2.3
-                                3310 ARW 2.3.1
-                                3320 ARW 2.3.2
-                                3330 ARW 2.3.3
-                                3350 ARW 2.3.5
-                                4000 ARW 4.0
-                                4010 ARW 4.0.1
-                             */
-    char MetaVersion [16];
-    float AspectRatio;
-  } libraw_sony_info_t;
-
-  typedef struct
-  {
-    ushort curve[0x10000];
-    unsigned cblack[LIBRAW_CBLACK_SIZE];
-    unsigned black;
-    unsigned data_maximum;
-    unsigned maximum;
-
-// Canon (SpecularWhiteLevel)
-// Kodak (14N, 14nx, SLR/c/n, DCS720X, DCS760C, DCS760M, ProBack, ProBack645, P712, P880, P850)
-// Olympus, except:
-//	C5050Z, C5060WZ, C7070WZ, C8080WZ
-//	SP350, SP500UZ, SP510UZ, SP565UZ
-//	E-10, E-20
-//	E-300, E-330, E-400, E-410, E-420, E-450, E-500, E-510, E-520
-//	E-1, E-3
-//	XZ-1
-// Panasonic
-// Pentax
-// Sony
-// and aliases of the above
-// DNG
-    long linear_max[4];
-
-    float fmaximum;
-    float fnorm;
-    ushort white[8][8];
-    float cam_mul[4];
-    float pre_mul[4];
-    float cmatrix[3][4];
-    float ccm[3][4];
-    float rgb_cam[3][4];
-    float cam_xyz[4][3];
-    struct ph1_t phase_one_data;
-    float flash_used;
-    float canon_ev;
-    char model2[64];
-    char UniqueCameraModel[64];
-    char LocalizedCameraModel[64];
-    char ImageUniqueID[64];
-    char RawDataUniqueID[17];
-    char OriginalRawFileName[64];
-    void *profile;
-    unsigned profile_length;
-    unsigned black_stat[8];
-    libraw_dng_color_t dng_color[2];
-    libraw_dng_levels_t dng_levels;
-    int WB_Coeffs[256][4];    /* R, G1, B, G2 coeffs */
-    float WBCT_Coeffs[64][5]; /* CCT, than R, G1, B, G2 coeffs */
-    int as_shot_wb_applied;
-    libraw_P1_color_t P1_color[2];
-    unsigned raw_bps; /* for Phase One: raw format; For other cameras: bits per pixel (copy of tiff_bps in most cases) */
-                      /* Phase One raw format values, makernotes tag 0x010e:
-                      0    Name unknown
-                      1    "RAW 1"
-                      2    "RAW 2"
-                      3    "IIQ L" (IIQ L14)
-                      4    Never seen
-                      5    "IIQ S"
-                      6    "IIQ Sv2" (S14 / S14+)
-                      7    Never seen
-                      8    "IIQ L16" (IIQ L16EX / IIQ L16)
-                      */
-	int ExifColorSpace;
-  } libraw_colordata_t;
-
-  typedef struct
-  {
-    enum LibRaw_thumbnail_formats tformat;
-    ushort twidth, theight;
-    unsigned tlength;
-    int tcolors;
-    char *thumb;
-  } libraw_thumbnail_t;
-
-  typedef struct
-  {
-	enum LibRaw_internal_thumbnail_formats tformat;
-    ushort twidth, theight, tflip;
-    unsigned tlength;
-	unsigned tmisc;
-	INT64 toffset;
-  }libraw_thumbnail_item_t;
-
-  typedef struct
-  {
-	  int thumbcount;
-	  libraw_thumbnail_item_t thumblist[LIBRAW_THUMBNAIL_MAXCOUNT];
-  } libraw_thumbnail_list_t;
-
-  typedef struct
-  {
-    float latitude[3];     /* Deg,min,sec */
-    float longitude[3];    /* Deg,min,sec */
-    float gpstimestamp[3]; /* Deg,min,sec */
-    float altitude;
-    char  altref, latref, longref, gpsstatus;
-    char  gpsparsed;
-  } libraw_gps_info_t;
-
-  typedef struct
-  {
-    float iso_speed;
-    float shutter;
-    float aperture;
-    float focal_len;
-    time_t timestamp;
-    unsigned shot_order;
-    unsigned gpsdata[32];
-    libraw_gps_info_t parsed_gps;
-    char desc[512], artist[64];
-    float analogbalance[4];
-  } libraw_imgother_t;
-
-  typedef struct
-  {
-      unsigned AFInfoData_tag;
-      short    AFInfoData_order;
-      unsigned AFInfoData_version;
-      unsigned AFInfoData_length;
-      uchar   *AFInfoData;
-  } libraw_afinfo_item_t;
-
-  typedef struct {
-    float FlashEC;
-    float FlashGN;
-    float CameraTemperature;
-    float SensorTemperature;
-    float SensorTemperature2;
-    float LensTemperature;
-    float AmbientTemperature;
-    float BatteryTemperature;
-    float exifAmbientTemperature;
-    float exifHumidity;
-    float exifPressure;
-    float exifWaterDepth;
-    float exifAcceleration;
-    float exifCameraElevationAngle;
-    float real_ISO;
-    float exifExposureIndex;
-    ushort ColorSpace;
-    char firmware[128];
-    float ExposureCalibrationShift;
-    libraw_afinfo_item_t afdata[LIBRAW_AFDATA_MAXCOUNT];
-    int afcount;
-  } libraw_metadata_common_t;
-
-  typedef struct
-  {
-    unsigned greybox[4];   /* -A  x1 y1 x2 y2 */
-    unsigned cropbox[4];   /* -B x1 y1 x2 y2 */
-    double aber[4];        /* -C */
-    double gamm[6];        /* -g */
-    float user_mul[4];     /* -r mul0 mul1 mul2 mul3 */
-    float bright;          /* -b */
-    float threshold;       /* -n */
-    int half_size;         /* -h */
-    int four_color_rgb;    /* -f */
-    int highlight;         /* -H */
-    int use_auto_wb;       /* -a */
-    int use_camera_wb;     /* -w */
-    int use_camera_matrix; /* +M/-M */
-    int output_color;      /* -o */
-    char *output_profile;  /* -o */
-    char *camera_profile;  /* -p */
-    char *bad_pixels;      /* -P */
-    char *dark_frame;      /* -K */
-    int output_bps;        /* -4 */
-    int output_tiff;       /* -T */
-    int output_flags;
-    int user_flip;         /* -t */
-    int user_qual;         /* -q */
-    int user_black;        /* -k */
-    int user_cblack[4];
-    int user_sat;          /* -S */
-    int med_passes;        /* -m */
-    float auto_bright_thr;
-    float adjust_maximum_thr;
-    int no_auto_bright;    /* -W */
-    int use_fuji_rotate;   /* -j */
-	int use_p1_correction;
-    int green_matching;
-    /* DCB parameters */
-    int dcb_iterations;
-    int dcb_enhance_fl;
-    int fbdd_noiserd;
-    int exp_correc;
-    float exp_shift;
-    float exp_preser;
-    /* Disable Auto-scale */
-    int no_auto_scale;
-    /* Disable intepolation */
-    int no_interpolation;
-  } libraw_output_params_t;
-
-  typedef struct  
-  {
-      /* Raw speed */
-      int use_rawspeed;
-      /* DNG SDK */
-      int use_dngsdk;
-      unsigned options;
-      unsigned shot_select;  /* -s */
-      unsigned specials;
-      unsigned max_raw_memory_mb;
-      int sony_arw2_posterization_thr;
-      /* Nikon Coolscan */
-      float coolscan_nef_gamma;
-      char p4shot_order[5];
-      /* Custom camera list */
-      char **custom_camera_strings;
-  }libraw_raw_unpack_params_t;
-
-  typedef struct
-  {
-    /* really allocated bitmap */
-    void *raw_alloc;
-    /* alias to single_channel variant */
-    ushort *raw_image;
-    /* alias to 4-channel variant */
-    ushort (*color4_image)[4];
-    /* alias to 3-color variand decoded by RawSpeed */
-    ushort (*color3_image)[3];
-    /* float bayer */
-    float *float_image;
-    /* float 3-component */
-    float (*float3_image)[3];
-    /* float 4-component */
-    float (*float4_image)[4];
-
-    /* Phase One black level data; */
-    short (*ph1_cblack)[2];
-    short (*ph1_rblack)[2];
-    /* save color and sizes here, too.... */
-    libraw_iparams_t iparams;
-    libraw_image_sizes_t sizes;
-    libraw_internal_output_params_t ioparams;
-    libraw_colordata_t color;
-  } libraw_rawdata_t;
-
-  typedef struct
-  {
-    unsigned long long LensID;
-    char Lens[128];
-    ushort LensFormat; /* to characterize the image circle the lens covers */
-    ushort LensMount;  /* 'male', lens itself */
-    unsigned long long CamID;
-    ushort CameraFormat; /* some of the sensor formats */
-    ushort CameraMount;  /* 'female', body throat */
-    char   body[64];
-    short  FocalType; /* -1/0 is unknown; 1 is fixed focal; 2 is zoom */
-    char   LensFeatures_pre[16], LensFeatures_suf[16];
-    float  MinFocal, MaxFocal;
-    float  MaxAp4MinFocal, MaxAp4MaxFocal, MinAp4MinFocal, MinAp4MaxFocal;
-    float  MaxAp, MinAp;
-    float  CurFocal, CurAp;
-    float  MaxAp4CurFocal, MinAp4CurFocal;
-    float  MinFocusDistance;
-    float  FocusRangeIndex;
-    float  LensFStops;
-    unsigned long long TeleconverterID;
-    char Teleconverter[128];
-    unsigned long long AdapterID;
-    char Adapter[128];
-    unsigned long long AttachmentID;
-    char   Attachment[128];
-    ushort FocalUnits;
-    float  FocalLengthIn35mmFormat;
-  } libraw_makernotes_lens_t;
-
-  typedef struct
-  {
-    float EffectiveMaxAp;
-    uchar LensIDNumber, LensFStops, MCUVersion, LensType;
-  } libraw_nikonlens_t;
-
-  typedef struct
-  {
-    float MinFocal, MaxFocal, MaxAp4MinFocal, MaxAp4MaxFocal;
-  } libraw_dnglens_t;
-
-  typedef struct
-  {
-    float MinFocal, MaxFocal, MaxAp4MinFocal, MaxAp4MaxFocal, EXIF_MaxAp;
-    char LensMake[128], Lens[128], LensSerial[128], InternalLensSerial[128];
-    ushort FocalLengthIn35mmFormat;
-    libraw_nikonlens_t nikon;
-    libraw_dnglens_t dng;
-    libraw_makernotes_lens_t makernotes;
-  } libraw_lensinfo_t;
-
-  typedef struct
-  {
-    libraw_canon_makernotes_t canon;
-    libraw_nikon_makernotes_t nikon;
-    libraw_hasselblad_makernotes_t hasselblad;
-    libraw_fuji_info_t fuji;
-    libraw_olympus_makernotes_t olympus;
-    libraw_sony_info_t sony;
-    libraw_kodak_makernotes_t kodak;
-    libraw_panasonic_makernotes_t panasonic;
-    libraw_pentax_makernotes_t pentax;
-    libraw_p1_makernotes_t phaseone;
-    libraw_ricoh_makernotes_t ricoh;
-    libraw_samsung_makernotes_t samsung;
-    libraw_metadata_common_t common;
-  } libraw_makernotes_t;
-
-  typedef struct
-  {
-    short DriveMode;
-    short FocusMode;
-    short MeteringMode;
-    short AFPoint;
-    short ExposureMode;
-    short ExposureProgram;
-    short ImageStabilization;
-    char BodySerial[64];
-    char InternalBodySerial[64]; /* this may be PCB or sensor serial, depends on
-                                    make/model */
-  } libraw_shootinginfo_t;
-
-  typedef struct
-  {
-    unsigned fsize;
-    ushort rw, rh;
-    uchar lm, tm, rm, bm;
-    ushort lf;
-    uchar cf, max, flags;
-    char t_make[10], t_model[20];
-    ushort offset;
-  } libraw_custom_camera_t;
-
-  typedef struct
-  {
-    ushort (*image)[4];
-    libraw_image_sizes_t sizes;
-    libraw_iparams_t idata;
-    libraw_lensinfo_t lens;
-    libraw_makernotes_t makernotes;
-    libraw_shootinginfo_t shootinginfo;
-    libraw_output_params_t params;
-    libraw_raw_unpack_params_t rawparams;
-    unsigned int progress_flags;
-    unsigned int process_warnings;
-    libraw_colordata_t color;
-    libraw_imgother_t other;
-    libraw_thumbnail_t thumbnail;
-	libraw_thumbnail_list_t thumbs_list;
-    libraw_rawdata_t rawdata;
-    void *parent_class;
-  } libraw_data_t;
-
-  struct fuji_q_table
-  {
-    int8_t *q_table; /* quantization table */
-    int raw_bits;
-    int total_values;
-    int max_grad;    // sdp val
-    int q_grad_mult; // quant_gradient multiplier
-    int q_base;
-  };
-
-  struct fuji_compressed_params
-  {
-    struct fuji_q_table qt[4];
-    void *buf;
-    int max_bits;
-    int min_value;
-    int max_value;   // q_point[4]
-    ushort line_width;
-  };
-
-#ifdef __cplusplus
-}
-#endif
-
-#if defined (LIBRAW_LIBRARY_BUILD) && defined(__cplusplus)
-
-class libraw_static_table_t
-{
-public:
-    libraw_static_table_t(const int *a, const unsigned s): data(a),_size(s) {}
-    libraw_static_table_t(): data(0),_size(0){}
-    libraw_static_table_t(const libraw_static_table_t& s) : data(s.data), _size(s._size) {}
-    unsigned size() const { return _size; }
-    libraw_static_table_t& operator = (const libraw_static_table_t& s)
-    {
-        _size = s._size;
-        data = s.data;
-        return *this;
-    }
-    int operator [] (unsigned idx) const
-    {
-        if (idx < _size) return data[idx];
-        if(_size>0 && data) return data[0];
-        return 0;
-    }
-private:
-    const int *data;
-    unsigned _size;
-};
-
-#endif
-
-
-/* Byte order */
-#if defined(__LITTLE_ENDIAN__)
-#define LibRawBigEndian 0
-
-#elif defined(__BIG_ENDIAN__)
-#define LibRawBigEndian 1
-
-#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-#define LibRawBigEndian 0
-
-#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-#define LibRawBigEndian 1
-
-#elif defined(__POWERPC__)
-#define LibRawBigEndian 1
-
-#elif defined(__INTEL__)
-#define LibRawBigEndian 0
-
-#elif defined(_M_IX86) || defined(__i386__)
-#define LibRawBigEndian 0
-
-#elif defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
-#define LibRawBigEndian 0
-
-#elif defined(_ARM_)
-#define LibRawBigEndian 0
-
-#else
-#ifndef qXCodeRez
-#error Unable to figure out byte order.
-#endif
-#endif
-
-#endif
diff --git a/includes/libraw/libraw_version.h b/includes/libraw/libraw_version.h
deleted file mode 100644
index 6733a02..0000000
--- a/includes/libraw/libraw_version.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_version.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Mon Sept  8, 2008
- *
- * LibRaw C++ interface
- *
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-(See the file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-(See the file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef __VERSION_H
-#define __VERSION_H
-
-#define LIBRAW_MAJOR_VERSION 0
-#define LIBRAW_MINOR_VERSION 22
-#define LIBRAW_PATCH_VERSION 0
-#define LIBRAW_VERSION_TAIL Devel202403
-
-#define LIBRAW_SHLIB_CURRENT 24
-#define LIBRAW_SHLIB_REVISION 0
-#define LIBRAW_SHLIB_AGE 0
-
-#define _LIBRAW_VERSION_MAKE(a, b, c, d) #a "." #b "." #c "-" #d
-#define LIBRAW_VERSION_MAKE(a, b, c, d) _LIBRAW_VERSION_MAKE(a, b, c, d)
-
-#define LIBRAW_VERSION_STR                                                     \
-  LIBRAW_VERSION_MAKE(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION,              \
-                      LIBRAW_PATCH_VERSION, LIBRAW_VERSION_TAIL)
-
-#define LIBRAW_MAKE_VERSION(major, minor, patch)                               \
-  (((major) << 16) | ((minor) << 8) | (patch))
-
-#define LIBRAW_VERSION                                                         \
-  LIBRAW_MAKE_VERSION(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION,              \
-                      LIBRAW_PATCH_VERSION)
-
-#define LIBRAW_CHECK_VERSION(major, minor, patch)                              \
-  (LibRaw::versionNumber() >= LIBRAW_MAKE_VERSION(major, minor, patch))
-
-#define LIBRAW_RUNTIME_CHECK_VERSION_EXACT()                                   \
-  ((LibRaw::versionNumber() & 0xffff00) ==                                     \
-   LIBRAW_MAKE_VERSION(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION, 0))
-
-#define LIBRAW_RUNTIME_CHECK_VERSION_NOTLESS()                                 \
-  ((LibRaw::versionNumber() & 0xffff00) >=                                     \
-   LIBRAW_MAKE_VERSION(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION, 0))
-
-#define LIBRAW_COMPILE_CHECK_VERSION(major, minor)                             \
-  (LIBRAW_MAKE_VERSION(major, minor, 0) == (LIBRAW_VERSION & 0xffff00))
-
-#define LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(major, minor)                     \
-  (LIBRAW_MAKE_VERSION(major, minor, 0) <= (LIBRAW_VERSION & 0xffff00))
-
-#endif
diff --git a/includes/libraw_alloc.h b/includes/libraw_alloc.h
deleted file mode 100644
index 2a6461e..0000000
--- a/includes/libraw_alloc.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_alloc.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  22, 2008
- *
- * LibRaw C++ interface
- *
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef __LIBRAW_ALLOC_H
-#define __LIBRAW_ALLOC_H
-
-#include 
-#include 
-#include "libraw_const.h"
-
-#ifdef __cplusplus
-
-#define LIBRAW_MSIZE 512
-
-class DllDef libraw_memmgr
-{
-public:
-  libraw_memmgr(unsigned ee) : extra_bytes(ee)
-  {
-    size_t alloc_sz = LIBRAW_MSIZE * sizeof(void *);
-    mems = (void **)::malloc(alloc_sz);
-    memset(mems, 0, alloc_sz);
-  }
-  ~libraw_memmgr()
-  {
-    cleanup();
-    ::free(mems);
-  }
-  void *malloc(size_t sz)
-  {
-#ifdef LIBRAW_USE_CALLOC_INSTEAD_OF_MALLOC
-    void *ptr = ::calloc(sz + extra_bytes, 1);
-#else
-    void *ptr = ::malloc(sz + extra_bytes);
-#endif
-    mem_ptr(ptr);
-    return ptr;
-  }
-  void *calloc(size_t n, size_t sz)
-  {
-    void *ptr = ::calloc(n + (extra_bytes + sz - 1) / (sz ? sz : 1), sz);
-    mem_ptr(ptr);
-    return ptr;
-  }
-  void *realloc(void *ptr, size_t newsz)
-  {
-    void *ret = ::realloc(ptr, newsz + extra_bytes);
-    forget_ptr(ptr);
-    mem_ptr(ret);
-    return ret;
-  }
-  void free(void *ptr)
-  {
-    forget_ptr(ptr);
-    ::free(ptr);
-  }
-  void cleanup(void)
-  {
-    for (int i = 0; i < LIBRAW_MSIZE; i++)
-      if (mems[i])
-      {
-        ::free(mems[i]);
-        mems[i] = NULL;
-      }
-  }
-
-private:
-  void **mems;
-  unsigned extra_bytes;
-  void mem_ptr(void *ptr)
-  {
-#if defined(LIBRAW_USE_OPENMP)
-      bool ok = false; /* do not return from critical section */
-#endif
-
-#if defined(LIBRAW_USE_OPENMP)
-#pragma omp critical
-      {
-#endif
-          if (ptr)
-          {
-              for (int i = 0; i < LIBRAW_MSIZE - 1; i++)
-                  if (!mems[i])
-                  {
-                      mems[i] = ptr;
-#if defined(LIBRAW_USE_OPENMP)
-		      ok = true;
-		      break;
-#else
-                      return;
-#endif
-                  }
-#ifdef LIBRAW_MEMPOOL_CHECK
-#if !defined(LIBRAW_USE_OPENMP)
-              /* remember ptr in last mems item to be free'ed at cleanup */
-              if (!mems[LIBRAW_MSIZE - 1])
-                  mems[LIBRAW_MSIZE - 1] = ptr;
-              throw LIBRAW_EXCEPTION_MEMPOOL;
-#endif
-#endif
-          }
-#if defined(LIBRAW_USE_OPENMP)
-      }
-      if(!ok)
-      {
-          if (!mems[LIBRAW_MSIZE - 1])
-              mems[LIBRAW_MSIZE - 1] = ptr;
-          throw LIBRAW_EXCEPTION_MEMPOOL;
-      }
-#endif
-  }
-  void forget_ptr(void *ptr)
-  {
-#if defined(LIBRAW_USE_OPENMP)
-#pragma omp critical
-    {
-#endif
-     if (ptr)
-      for (int i = 0; i < LIBRAW_MSIZE; i++)
-        if (mems[i] == ptr)
-        {
-          mems[i] = NULL;
-          break;
-        }
-#if defined(LIBRAW_USE_OPENMP)
-    }
-#endif
-  }
-};
-
-#endif /* C++ */
-
-#endif
diff --git a/includes/libraw_const.h b/includes/libraw_const.h
deleted file mode 100644
index 76b3873..0000000
--- a/includes/libraw_const.h
+++ /dev/null
@@ -1,821 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_const.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8 , 2008
- * LibRaw error codes
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef _LIBRAW_ERRORS_H
-#define _LIBRAW_ERRORS_H
-
-#define LIBRAW_DEFAULT_ADJUST_MAXIMUM_THRESHOLD 0.75f
-#define LIBRAW_DEFAULT_AUTO_BRIGHTNESS_THRESHOLD 0.01f
-/* limit allocation size, default is 2Gb */
-#ifndef LIBRAW_MAX_ALLOC_MB_DEFAULT
-#define LIBRAW_MAX_ALLOC_MB_DEFAULT 2048L
-#endif
-
-#ifndef LIBRAW_MAX_PROFILE_SIZE_MB
-#define LIBRAW_MAX_PROFILE_SIZE_MB 256LL
-#endif
-
-#ifndef LIBRAW_MAX_NONDNG_RAW_FILE_SIZE
-#define LIBRAW_MAX_NONDNG_RAW_FILE_SIZE 2147483647ULL
-#endif
-
-#ifndef LIBRAW_MAX_DNG_RAW_FILE_SIZE
-#ifdef USE_DNGSDK
-#define LIBRAW_MAX_DNG_RAW_FILE_SIZE 4294967295ULL
-#else
-#define LIBRAW_MAX_DNG_RAW_FILE_SIZE 2147483647ULL
-#endif
-#endif
-
-
-/* limit thumbnail size, default is 512Mb*/
-#ifndef LIBRAW_MAX_THUMBNAIL_MB
-#define LIBRAW_MAX_THUMBNAIL_MB 512L
-#endif
-
-/* Check if enough file space exists before tag read */
-#ifndef LIBRAW_NO_IOSPACE_CHECK
-#define LIBRAW_IOSPACE_CHECK
-#endif
-#ifndef LIBRAW_NO_CR3_MEMPOOL
-#define LIBRAW_CR3_MEMPOOL
-#endif
-
-
-
-/* LibRaw uses own memory pool management, with LIBRAW_MSIZE (512)
-entries. It is enough for parsing/decoding non-damaged files, but
-may overflow on specially crafted files (eg. with many string values
-like XMP blocks.
-LIBRAW_MEMPOOL_CHECK define will result in error on pool overflow */
-#ifndef LIBRAW_NO_MEMPOOL_CHECK
-#define LIBRAW_MEMPOOL_CHECK
-#endif
-
-#define LIBRAW_MAX_METADATA_BLOCKS 1024
-#define LIBRAW_CBLACK_SIZE 4104
-#define LIBRAW_IFD_MAXCOUNT 10
-#define LIBRAW_THUMBNAIL_MAXCOUNT 8
-#define LIBRAW_CRXTRACKS_MAXCOUNT 16
-#define LIBRAW_AFDATA_MAXCOUNT 4
-
-#define LIBRAW_AHD_TILE 512
-
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-
-enum LibRaw_open_flags
-{
-	LIBRAW_OPEN_BIGFILE=1,
-	LIBRAW_OPEN_FILE= 1<<1
-};
-#endif
-
-enum LibRaw_openbayer_patterns
-{
-  LIBRAW_OPENBAYER_RGGB = 0x94,
-  LIBRAW_OPENBAYER_BGGR = 0x16,
-  LIBRAW_OPENBAYER_GRBG = 0x61,
-  LIBRAW_OPENBAYER_GBRG = 0x49
-};
-
-enum LibRaw_dngfields_marks
-{
-  LIBRAW_DNGFM_FORWARDMATRIX = 1,
-  LIBRAW_DNGFM_ILLUMINANT = 1 << 1,
-  LIBRAW_DNGFM_COLORMATRIX = 1 << 2,
-  LIBRAW_DNGFM_CALIBRATION = 1 << 3,
-  LIBRAW_DNGFM_ANALOGBALANCE = 1 << 4,
-  LIBRAW_DNGFM_BLACK = 1 << 5,
-  LIBRAW_DNGFM_WHITE = 1 << 6,
-  LIBRAW_DNGFM_OPCODE2 = 1 << 7,
-  LIBRAW_DNGFM_LINTABLE = 1 << 8,
-  LIBRAW_DNGFM_CROPORIGIN = 1 << 9,
-  LIBRAW_DNGFM_CROPSIZE = 1 << 10,
-  LIBRAW_DNGFM_PREVIEWCS = 1 << 11,
-  LIBRAW_DNGFM_ASSHOTNEUTRAL = 1 << 12,
-  LIBRAW_DNGFM_BASELINEEXPOSURE = 1 << 13,
-  LIBRAW_DNGFM_LINEARRESPONSELIMIT = 1 << 14,
-  LIBRAW_DNGFM_USERCROP = 1 << 15,
-  LIBRAW_DNGFM_OPCODE1 = 1 << 16,
-  LIBRAW_DNGFM_OPCODE3 = 1 << 17,
-};
-
-enum LibRaw_As_Shot_WB_Applied_codes
-{
-  LIBRAW_ASWB_APPLIED = 1,
-  LIBRAW_ASWB_CANON = 2,
-  LIBRAW_ASWB_NIKON = 4,
-  LIBRAW_ASWB_NIKON_SRAW = 8,
-  LIBRAW_ASWB_PENTAX = 16,
-  LIBRAW_ASWB_SONY = 32
-};
-
-#define tagtypeIs(typex) (type == typex)
-enum LibRaw_ExifTagTypes {
-  LIBRAW_EXIFTAG_TYPE_UNKNOWN   =  0,
-  LIBRAW_EXIFTAG_TYPE_BYTE      =  1,
-  LIBRAW_EXIFTAG_TYPE_ASCII     =  2,
-  LIBRAW_EXIFTAG_TYPE_SHORT     =  3,
-  LIBRAW_EXIFTAG_TYPE_LONG      =  4,
-  LIBRAW_EXIFTAG_TYPE_RATIONAL  =  5,
-  LIBRAW_EXIFTAG_TYPE_SBYTE     =  6,
-  LIBRAW_EXIFTAG_TYPE_UNDEFINED =  7,
-  LIBRAW_EXIFTAG_TYPE_SSHORT    =  8,
-  LIBRAW_EXIFTAG_TYPE_SLONG     =  9,
-  LIBRAW_EXIFTAG_TYPE_SRATIONAL = 10,
-  LIBRAW_EXIFTAG_TYPE_FLOAT     = 11,
-  LIBRAW_EXIFTAG_TYPE_DOUBLE    = 12,
-  LIBRAW_EXIFTAG_TYPE_IFD       = 13,
-  LIBRAW_EXIFTAG_TYPE_UNICODE   = 14,
-  LIBRAW_EXIFTAG_TYPE_COMPLEX   = 15,
-  LIBRAW_EXIFTAG_TYPE_LONG8     = 16,
-  LIBRAW_EXIFTAG_TYPE_SLONG8    = 17,
-  LIBRAW_EXIFTAG_TYPE_IFD8      = 18
-};
-
-#define LIBRAW_EXIFTOOLTAGTYPE_int8u       LIBRAW_EXIFTAG_TYPE_BYTE
-#define LIBRAW_EXIFTOOLTAGTYPE_string      LIBRAW_EXIFTAG_TYPE_ASCII
-#define LIBRAW_EXIFTOOLTAGTYPE_int16u      LIBRAW_EXIFTAG_TYPE_SHORT
-#define LIBRAW_EXIFTOOLTAGTYPE_int32u      LIBRAW_EXIFTAG_TYPE_LONG
-#define LIBRAW_EXIFTOOLTAGTYPE_rational64u LIBRAW_EXIFTAG_TYPE_RATIONAL
-#define LIBRAW_EXIFTOOLTAGTYPE_int8s       LIBRAW_EXIFTAG_TYPE_SBYTE
-#define LIBRAW_EXIFTOOLTAGTYPE_undef       LIBRAW_EXIFTAG_TYPE_UNDEFINED
-#define LIBRAW_EXIFTOOLTAGTYPE_binary      LIBRAW_EXIFTAG_TYPE_UNDEFINED
-#define LIBRAW_EXIFTOOLTAGTYPE_int16s      LIBRAW_EXIFTAG_TYPE_SSHORT
-#define LIBRAW_EXIFTOOLTAGTYPE_int32s      LIBRAW_EXIFTAG_TYPE_SLONG
-#define LIBRAW_EXIFTOOLTAGTYPE_rational64s LIBRAW_EXIFTAG_TYPE_SRATIONAL
-#define LIBRAW_EXIFTOOLTAGTYPE_float       LIBRAW_EXIFTAG_TYPE_FLOAT
-#define LIBRAW_EXIFTOOLTAGTYPE_double      LIBRAW_EXIFTAG_TYPE_DOUBLE
-#define LIBRAW_EXIFTOOLTAGTYPE_ifd         LIBRAW_EXIFTAG_TYPE_IFD
-#define LIBRAW_EXIFTOOLTAGTYPE_unicode     LIBRAW_EXIFTAG_TYPE_UNICODE
-#define LIBRAW_EXIFTOOLTAGTYPE_complex     LIBRAW_EXIFTAG_TYPE_COMPLEX
-#define LIBRAW_EXIFTOOLTAGTYPE_int64u      LIBRAW_EXIFTAG_TYPE_LONG8
-#define LIBRAW_EXIFTOOLTAGTYPE_int64s      LIBRAW_EXIFTAG_TYPE_SLONG8
-#define LIBRAW_EXIFTOOLTAGTYPE_ifd64       LIBRAW_EXIFTAG_TYPE_IFD8
-
-#define LIBRAW_LENS_NOT_SET 0xffffffffffffffffULL
-
-enum LibRaw_whitebalance_code
-{
-// clang-format off
-  /*
-      EXIF light sources
-      12 = FL-D; Daylight fluorescent (D 5700K – 7100K) (F1,F5)
-      13 = FL-N; Day white fluorescent (N 4600K – 5400K) (F7,F8)
-      14 = FL-W; Cool white fluorescent (W 3900K – 4500K) (F2,F6, office, store, warehouse)
-      15 = FL-WW; White fluorescent (WW 3200K – 3700K) (F3, residential)
-      16 = FL-L; Soft/Warm white fluorescent (L 2600K - 3250K) (F4, kitchen, bath)
-  */
-//clang-format on
-  LIBRAW_WBI_Unknown = 0,
-  LIBRAW_WBI_Daylight = 1,
-  LIBRAW_WBI_Fluorescent = 2,
-  LIBRAW_WBI_Tungsten = 3,
-  LIBRAW_WBI_Flash = 4,
-  LIBRAW_WBI_FineWeather = 9,
-  LIBRAW_WBI_Cloudy = 10,
-  LIBRAW_WBI_Shade = 11,
-  LIBRAW_WBI_FL_D = 12,
-  LIBRAW_WBI_FL_N = 13,
-  LIBRAW_WBI_FL_W = 14,
-  LIBRAW_WBI_FL_WW = 15,
-  LIBRAW_WBI_FL_L = 16,
-  LIBRAW_WBI_Ill_A = 17,
-  LIBRAW_WBI_Ill_B = 18,
-  LIBRAW_WBI_Ill_C = 19,
-  LIBRAW_WBI_D55 = 20,
-  LIBRAW_WBI_D65 = 21,
-  LIBRAW_WBI_D75 = 22,
-  LIBRAW_WBI_D50 = 23,
-  LIBRAW_WBI_StudioTungsten = 24,
-  LIBRAW_WBI_Sunset = 64,
-  LIBRAW_WBI_Underwater = 65,
-  LIBRAW_WBI_FluorescentHigh = 66,
-  LIBRAW_WBI_HT_Mercury = 67,
-  LIBRAW_WBI_AsShot = 81,
-  LIBRAW_WBI_Auto = 82,
-  LIBRAW_WBI_Custom = 83,
-  LIBRAW_WBI_Auto1 = 85,
-  LIBRAW_WBI_Auto2 = 86,
-  LIBRAW_WBI_Auto3 = 87,
-  LIBRAW_WBI_Auto4 = 88,
-  LIBRAW_WBI_Custom1 = 90,
-  LIBRAW_WBI_Custom2 = 91,
-  LIBRAW_WBI_Custom3 = 92,
-  LIBRAW_WBI_Custom4 = 93,
-  LIBRAW_WBI_Custom5 = 94,
-  LIBRAW_WBI_Custom6 = 95,
-  LIBRAW_WBI_PC_Set1 = 96,
-  LIBRAW_WBI_PC_Set2 = 97,
-  LIBRAW_WBI_PC_Set3 = 98,
-  LIBRAW_WBI_PC_Set4 = 99,
-  LIBRAW_WBI_PC_Set5 = 100,
-  LIBRAW_WBI_Measured = 110,
-  LIBRAW_WBI_BW = 120,
-  LIBRAW_WBI_Kelvin = 254,
-  LIBRAW_WBI_Other = 255,
-  LIBRAW_WBI_None = 0xffff
-};
-
-enum LibRaw_MultiExposure_related
-{
-  LIBRAW_ME_NONE = 0,
-  LIBRAW_ME_SIMPLE = 1,
-  LIBRAW_ME_OVERLAY = 2,
-  LIBRAW_ME_HDR = 3
-};
-
-enum LibRaw_dng_processing
-{
-  LIBRAW_DNG_NONE = 0,
-  LIBRAW_DNG_FLOAT = 1,
-  LIBRAW_DNG_LINEAR = 2,
-  LIBRAW_DNG_DEFLATE = 4,
-  LIBRAW_DNG_XTRANS = 8,
-  LIBRAW_DNG_OTHER = 16,
-  LIBRAW_DNG_8BIT = 32,
-  /*LIBRAW_DNG_LARGERANGE=64,*/ /* more than 16 bit integer */
-  LIBRAW_DNG_ALL =
-      LIBRAW_DNG_FLOAT | LIBRAW_DNG_LINEAR | LIBRAW_DNG_DEFLATE | LIBRAW_DNG_XTRANS |
-      LIBRAW_DNG_8BIT | LIBRAW_DNG_OTHER /* |LIBRAW_DNG_LARGERANGE */,
-  LIBRAW_DNG_DEFAULT = LIBRAW_DNG_FLOAT | LIBRAW_DNG_LINEAR |
-                       LIBRAW_DNG_DEFLATE | LIBRAW_DNG_8BIT
-};
-
-enum LibRaw_output_flags
-{
-    LIBRAW_OUTPUT_FLAGS_NONE = 0,
-    LIBRAW_OUTPUT_FLAGS_PPMMETA = 1
-};
-
-enum LibRaw_runtime_capabilities
-{
-  LIBRAW_CAPS_RAWSPEED = 1,
-  LIBRAW_CAPS_DNGSDK = 1<<1,
-  LIBRAW_CAPS_GPRSDK = 1<<2,
-  LIBRAW_CAPS_UNICODEPATHS = 1<<3,
-  LIBRAW_CAPS_X3FTOOLS = 1<<4,
-  LIBRAW_CAPS_RPI6BY9 = 1<<5,
-  LIBRAW_CAPS_ZLIB = 1<<6,
-  LIBRAW_CAPS_JPEG = 1<<7,
-  LIBRAW_CAPS_RAWSPEED3 = 1<<8,
-  LIBRAW_CAPS_RAWSPEED_BITS = 1<<9,
-};
-
-enum LibRaw_colorspace {
-  LIBRAW_COLORSPACE_NotFound = 0,
-  LIBRAW_COLORSPACE_sRGB,
-  LIBRAW_COLORSPACE_AdobeRGB,
-  LIBRAW_COLORSPACE_WideGamutRGB,
-  LIBRAW_COLORSPACE_ProPhotoRGB,
-  LIBRAW_COLORSPACE_ICC,
-  LIBRAW_COLORSPACE_Uncalibrated, // Tag 0x0001 InteropIndex containing "R03" + LIBRAW_COLORSPACE_Uncalibrated = Adobe RGB
-  LIBRAW_COLORSPACE_CameraLinearUniWB,
-  LIBRAW_COLORSPACE_CameraLinear,
-  LIBRAW_COLORSPACE_CameraGammaUniWB,
-  LIBRAW_COLORSPACE_CameraGamma,
-  LIBRAW_COLORSPACE_MonochromeLinear,
-  LIBRAW_COLORSPACE_MonochromeGamma,
-  LIBRAW_COLORSPACE_Rec2020,
-  LIBRAW_COLORSPACE_Unknown = 255
-};
-
-enum LibRaw_cameramaker_index
-{
-  LIBRAW_CAMERAMAKER_Unknown = 0,
-  LIBRAW_CAMERAMAKER_Agfa,
-  LIBRAW_CAMERAMAKER_Alcatel,
-  LIBRAW_CAMERAMAKER_Apple,
-  LIBRAW_CAMERAMAKER_Aptina,
-  LIBRAW_CAMERAMAKER_AVT,
-  LIBRAW_CAMERAMAKER_Baumer,
-  LIBRAW_CAMERAMAKER_Broadcom,
-  LIBRAW_CAMERAMAKER_Canon,
-  LIBRAW_CAMERAMAKER_Casio,
-  LIBRAW_CAMERAMAKER_CINE,
-  LIBRAW_CAMERAMAKER_Clauss,
-  LIBRAW_CAMERAMAKER_Contax,
-  LIBRAW_CAMERAMAKER_Creative,
-  LIBRAW_CAMERAMAKER_DJI,
-  LIBRAW_CAMERAMAKER_DXO,
-  LIBRAW_CAMERAMAKER_Epson,
-  LIBRAW_CAMERAMAKER_Foculus,
-  LIBRAW_CAMERAMAKER_Fujifilm,
-  LIBRAW_CAMERAMAKER_Generic,
-  LIBRAW_CAMERAMAKER_Gione,
-  LIBRAW_CAMERAMAKER_GITUP,
-  LIBRAW_CAMERAMAKER_Google,
-  LIBRAW_CAMERAMAKER_GoPro,
-  LIBRAW_CAMERAMAKER_Hasselblad,
-  LIBRAW_CAMERAMAKER_HTC,
-  LIBRAW_CAMERAMAKER_I_Mobile,
-  LIBRAW_CAMERAMAKER_Imacon,
-  LIBRAW_CAMERAMAKER_JK_Imaging,
-  LIBRAW_CAMERAMAKER_Kodak,
-  LIBRAW_CAMERAMAKER_Konica,
-  LIBRAW_CAMERAMAKER_Leaf,
-  LIBRAW_CAMERAMAKER_Leica,
-  LIBRAW_CAMERAMAKER_Lenovo,
-  LIBRAW_CAMERAMAKER_LG,
-  LIBRAW_CAMERAMAKER_Logitech,
-  LIBRAW_CAMERAMAKER_Mamiya,
-  LIBRAW_CAMERAMAKER_Matrix,
-  LIBRAW_CAMERAMAKER_Meizu,
-  LIBRAW_CAMERAMAKER_Micron,
-  LIBRAW_CAMERAMAKER_Minolta,
-  LIBRAW_CAMERAMAKER_Motorola,
-  LIBRAW_CAMERAMAKER_NGM,
-  LIBRAW_CAMERAMAKER_Nikon,
-  LIBRAW_CAMERAMAKER_Nokia,
-  LIBRAW_CAMERAMAKER_Olympus,
-  LIBRAW_CAMERAMAKER_OmniVison,
-  LIBRAW_CAMERAMAKER_Panasonic,
-  LIBRAW_CAMERAMAKER_Parrot,
-  LIBRAW_CAMERAMAKER_Pentax,
-  LIBRAW_CAMERAMAKER_PhaseOne,
-  LIBRAW_CAMERAMAKER_PhotoControl,
-  LIBRAW_CAMERAMAKER_Photron,
-  LIBRAW_CAMERAMAKER_Pixelink,
-  LIBRAW_CAMERAMAKER_Polaroid,
-  LIBRAW_CAMERAMAKER_RED,
-  LIBRAW_CAMERAMAKER_Ricoh,
-  LIBRAW_CAMERAMAKER_Rollei,
-  LIBRAW_CAMERAMAKER_RoverShot,
-  LIBRAW_CAMERAMAKER_Samsung,
-  LIBRAW_CAMERAMAKER_Sigma,
-  LIBRAW_CAMERAMAKER_Sinar,
-  LIBRAW_CAMERAMAKER_SMaL,
-  LIBRAW_CAMERAMAKER_Sony,
-  LIBRAW_CAMERAMAKER_ST_Micro,
-  LIBRAW_CAMERAMAKER_THL,
-  LIBRAW_CAMERAMAKER_VLUU,
-  LIBRAW_CAMERAMAKER_Xiaomi,
-  LIBRAW_CAMERAMAKER_XIAOYI,
-  LIBRAW_CAMERAMAKER_YI,
-  LIBRAW_CAMERAMAKER_Yuneec,
-  LIBRAW_CAMERAMAKER_Zeiss,
-  LIBRAW_CAMERAMAKER_OnePlus,
-  LIBRAW_CAMERAMAKER_ISG,
-  LIBRAW_CAMERAMAKER_VIVO,
-  LIBRAW_CAMERAMAKER_HMD_Global,
-  LIBRAW_CAMERAMAKER_HUAWEI,
-  LIBRAW_CAMERAMAKER_RaspberryPi,
-  LIBRAW_CAMERAMAKER_OmDigital,
-
-  // Insert additional indexes here
-  LIBRAW_CAMERAMAKER_TheLastOne
-};
-
-enum LibRaw_camera_mounts
-{
-  LIBRAW_MOUNT_Unknown = 0,
-  LIBRAW_MOUNT_Alpa,
-  LIBRAW_MOUNT_C,              /* C-mount */
-  LIBRAW_MOUNT_Canon_EF_M,
-  LIBRAW_MOUNT_Canon_EF_S,
-  LIBRAW_MOUNT_Canon_EF,
-  LIBRAW_MOUNT_Canon_RF,
-  LIBRAW_MOUNT_Contax_N,
-  LIBRAW_MOUNT_Contax645,
-  LIBRAW_MOUNT_FT,             /* original 4/3 */
-  LIBRAW_MOUNT_mFT,            /* micro 4/3 */
-  LIBRAW_MOUNT_Fuji_GF,        /* Fujifilm GFX cameras, G mount */
-  LIBRAW_MOUNT_Fuji_GX,        /* Fujifilm GX680 */
-  LIBRAW_MOUNT_Fuji_X,
-  LIBRAW_MOUNT_Hasselblad_H,   /* Hasselblad Hn cameras, HC & HCD lenses */
-  LIBRAW_MOUNT_Hasselblad_V,
-  LIBRAW_MOUNT_Hasselblad_XCD, /* Hasselblad Xn cameras, XCD lenses */
-  LIBRAW_MOUNT_Leica_M,        /* Leica rangefinder bayonet */
-  LIBRAW_MOUNT_Leica_R,        /* Leica SLRs, 'R' for reflex */
-  LIBRAW_MOUNT_Leica_S,        /* LIBRAW_FORMAT_LeicaS 'MF' */
-  LIBRAW_MOUNT_Leica_SL,       /* lens, mounts on 'L' throat, FF */
-  LIBRAW_MOUNT_Leica_TL,       /* lens, mounts on 'L' throat, APS-C */
-  LIBRAW_MOUNT_LPS_L,          /* Leica/Panasonic/Sigma camera mount, takes L, SL and TL lenses */
-  LIBRAW_MOUNT_Mamiya67,       /* Mamiya RB67, RZ67 */
-  LIBRAW_MOUNT_Mamiya645,
-  LIBRAW_MOUNT_Minolta_A,
-  LIBRAW_MOUNT_Nikon_CX,       /* used in 'Nikon 1' series */
-  LIBRAW_MOUNT_Nikon_F,
-  LIBRAW_MOUNT_Nikon_Z,
-  LIBRAW_MOUNT_PhaseOne_iXM_MV,
-  LIBRAW_MOUNT_PhaseOne_iXM_RS,
-  LIBRAW_MOUNT_PhaseOne_iXM,
-  LIBRAW_MOUNT_Pentax_645,
-  LIBRAW_MOUNT_Pentax_K,
-  LIBRAW_MOUNT_Pentax_Q,
-  LIBRAW_MOUNT_RicohModule,
-  LIBRAW_MOUNT_Rollei_bayonet, /* Rollei Hy-6: Leaf AFi, Sinar Hy6- models */
-  LIBRAW_MOUNT_Samsung_NX_M,
-  LIBRAW_MOUNT_Samsung_NX,
-  LIBRAW_MOUNT_Sigma_X3F,
-  LIBRAW_MOUNT_Sony_E,
-  LIBRAW_MOUNT_LF,
-  LIBRAW_MOUNT_DigitalBack,
-  LIBRAW_MOUNT_FixedLens,
-  LIBRAW_MOUNT_IL_UM,          /* Interchangeable lens, mount unknown */
-  LIBRAW_MOUNT_TheLastOne
-};
-
-enum LibRaw_camera_formats
-{
-  LIBRAW_FORMAT_Unknown = 0,
-  LIBRAW_FORMAT_APSC,
-  LIBRAW_FORMAT_FF,
-  LIBRAW_FORMAT_MF,
-  LIBRAW_FORMAT_APSH,
-  LIBRAW_FORMAT_1INCH,
-  LIBRAW_FORMAT_1div2p3INCH,  /* 1/2.3" */
-  LIBRAW_FORMAT_1div1p7INCH,  /* 1/1.7" */
-  LIBRAW_FORMAT_FT,           /* sensor size in FT & mFT cameras */
-  LIBRAW_FORMAT_CROP645,      /* 44x33mm */
-  LIBRAW_FORMAT_LeicaS,       /* 'MF' Leicas */
-  LIBRAW_FORMAT_645,
-  LIBRAW_FORMAT_66,
-  LIBRAW_FORMAT_69,
-  LIBRAW_FORMAT_LF,
-  LIBRAW_FORMAT_Leica_DMR,
-  LIBRAW_FORMAT_67,
-  LIBRAW_FORMAT_SigmaAPSC,    /* DP1, DP2, SD15, SD14, SD10, SD9 */
-  LIBRAW_FORMAT_SigmaMerrill, /* SD1,  'SD1 Merrill',  'DP1 Merrill',  'DP2 Merrill' */
-  LIBRAW_FORMAT_SigmaAPSH,    /* 'sd Quattro H' */
-  LIBRAW_FORMAT_3648,         /* DALSA FTF4052C (Mamiya ZD) */
-  LIBRAW_FORMAT_68,           /* Fujifilm GX680 */
-  LIBRAW_FORMAT_TheLastOne
-};
-
-enum LibRawImageAspects
-{
-  LIBRAW_IMAGE_ASPECT_UNKNOWN = 0,
-  LIBRAW_IMAGE_ASPECT_OTHER = 1,
-  LIBRAW_IMAGE_ASPECT_MINIMAL_REAL_ASPECT_VALUE = 99, /* 1:10*/
-  LIBRAW_IMAGE_ASPECT_MAXIMAL_REAL_ASPECT_VALUE = 10000, /* 10: 1*/
-  // Value:  width / height * 1000
-  LIBRAW_IMAGE_ASPECT_3to2 =  (1000 * 3)/2,
-  LIBRAW_IMAGE_ASPECT_1to1 =  1000,
-  LIBRAW_IMAGE_ASPECT_4to3 =  (1000 * 4)/ 3,
-  LIBRAW_IMAGE_ASPECT_16to9 = (1000 * 16) / 9,
-  //LIBRAW_IMAGE_ASPECT_6to6, // what is the difference with 1:1 ?
-  LIBRAW_IMAGE_ASPECT_5to4 = (1000 * 5) / 4,
-  LIBRAW_IMAGE_ASPECT_7to6 = (1000 * 7) / 6,
-  LIBRAW_IMAGE_ASPECT_6to5 = (1000 * 6) / 5,
-  LIBRAW_IMAGE_ASPECT_7to5 = (1000 * 7) / 5
-};
-
-enum LibRaw_lens_focal_types
-{
-  LIBRAW_FT_UNDEFINED = 0,
-  LIBRAW_FT_PRIME_LENS = 1,
-  LIBRAW_FT_ZOOM_LENS = 2,
-  LIBRAW_FT_ZOOM_LENS_CONSTANT_APERTURE = 3,
-  LIBRAW_FT_ZOOM_LENS_VARIABLE_APERTURE = 4
-};
-
-enum LibRaw_Canon_RecordModes {
-  LIBRAW_Canon_RecordMode_UNDEFINED = 0,
-  LIBRAW_Canon_RecordMode_JPEG,
-  LIBRAW_Canon_RecordMode_CRW_THM,
-  LIBRAW_Canon_RecordMode_AVI_THM,
-  LIBRAW_Canon_RecordMode_TIF,
-  LIBRAW_Canon_RecordMode_TIF_JPEG,
-  LIBRAW_Canon_RecordMode_CR2,
-  LIBRAW_Canon_RecordMode_CR2_JPEG,
-  LIBRAW_Canon_RecordMode_UNKNOWN,
-  LIBRAW_Canon_RecordMode_MOV,
-  LIBRAW_Canon_RecordMode_MP4,
-  LIBRAW_Canon_RecordMode_CRM,
-  LIBRAW_Canon_RecordMode_CR3,
-  LIBRAW_Canon_RecordMode_CR3_JPEG,
-  LIBRAW_Canon_RecordMode_HEIF,
-  LIBRAW_Canon_RecordMode_CR3_HEIF,
-  LIBRAW_Canon_RecordMode_TheLastOne
-};
-
-enum LibRaw_minolta_storagemethods
-{
-  LIBRAW_MINOLTA_UNPACKED = 0x52,
-  LIBRAW_MINOLTA_PACKED   = 0x59
-};
-
-enum LibRaw_minolta_bayerpatterns
-{
-  LIBRAW_MINOLTA_RGGB   = 0x01,
-  LIBRAW_MINOLTA_G2BRG1 = 0x04
-};
-
-enum LibRaw_sony_cameratypes
-{
-  LIBRAW_SONY_DSC  = 1,
-  LIBRAW_SONY_DSLR = 2,
-  LIBRAW_SONY_NEX  = 3,
-  LIBRAW_SONY_SLT  = 4,
-  LIBRAW_SONY_ILCE = 5,
-  LIBRAW_SONY_ILCA = 6,
-  LIBRAW_SONY_CameraType_UNKNOWN = 0xffff
-};
-
-enum LibRaw_Sony_0x2010_Type {
-  LIBRAW_SONY_Tag2010None = 0,
-  LIBRAW_SONY_Tag2010a,
-  LIBRAW_SONY_Tag2010b,
-  LIBRAW_SONY_Tag2010c,
-  LIBRAW_SONY_Tag2010d,
-  LIBRAW_SONY_Tag2010e,
-  LIBRAW_SONY_Tag2010f,
-  LIBRAW_SONY_Tag2010g,
-  LIBRAW_SONY_Tag2010h,
-  LIBRAW_SONY_Tag2010i
-};
-enum LibRaw_Sony_0x9050_Type {
-  LIBRAW_SONY_Tag9050None = 0,
-  LIBRAW_SONY_Tag9050a,
-  LIBRAW_SONY_Tag9050b,
-  LIBRAW_SONY_Tag9050c,
-  LIBRAW_SONY_Tag9050d
-};
-
-enum LIBRAW_SONY_FOCUSMODEmodes
-{
-  LIBRAW_SONY_FOCUSMODE_MF     = 0,
-  LIBRAW_SONY_FOCUSMODE_AF_S   = 2,
-  LIBRAW_SONY_FOCUSMODE_AF_C   = 3,
-  LIBRAW_SONY_FOCUSMODE_AF_A   = 4,
-  LIBRAW_SONY_FOCUSMODE_DMF    = 6,
-  LIBRAW_SONY_FOCUSMODE_AF_D   = 7,
-  LIBRAW_SONY_FOCUSMODE_AF           = 101,
-  LIBRAW_SONY_FOCUSMODE_PERMANENT_AF = 104,
-  LIBRAW_SONY_FOCUSMODE_SEMI_MF      = 105,
-  LIBRAW_SONY_FOCUSMODE_UNKNOWN      = -1
-};
-
-enum LibRaw_KodakSensors
-{
-  LIBRAW_Kodak_UnknownSensor = 0,
-  LIBRAW_Kodak_M1 = 1,
-  LIBRAW_Kodak_M15 = 2,
-  LIBRAW_Kodak_M16 = 3,
-  LIBRAW_Kodak_M17 = 4,
-  LIBRAW_Kodak_M2 = 5,
-  LIBRAW_Kodak_M23 = 6,
-  LIBRAW_Kodak_M24 = 7,
-  LIBRAW_Kodak_M3 = 8,
-  LIBRAW_Kodak_M5 = 9,
-  LIBRAW_Kodak_M6 = 10,
-  LIBRAW_Kodak_C14 = 11,
-  LIBRAW_Kodak_X14 = 12,
-  LIBRAW_Kodak_M11 = 13
-};
-
-enum LibRaw_HasselbladFormatCodes {
-  LIBRAW_HF_Unknown = 0,
-  LIBRAW_HF_3FR,
-  LIBRAW_HF_FFF,
-  LIBRAW_HF_Imacon,
-  LIBRAW_HF_HasselbladDNG,
-  LIBRAW_HF_AdobeDNG,
-  LIBRAW_HF_AdobeDNG_fromPhocusDNG
-};
-
-enum LibRaw_rawspecial_t
-{
-    LIBRAW_RAWSPECIAL_SONYARW2_NONE = 0,
-    LIBRAW_RAWSPECIAL_SONYARW2_BASEONLY = 1,
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAONLY = 1 << 1,
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAZEROBASE = 1 << 2,
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTATOVALUE = 1 << 3,
-    LIBRAW_RAWSPECIAL_SONYARW2_ALLFLAGS =
-    LIBRAW_RAWSPECIAL_SONYARW2_BASEONLY +
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAONLY +
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTAZEROBASE +
-    LIBRAW_RAWSPECIAL_SONYARW2_DELTATOVALUE,
-    LIBRAW_RAWSPECIAL_NODP2Q_INTERPOLATERG = 1<<4,
-    LIBRAW_RAWSPECIAL_NODP2Q_INTERPOLATEAF = 1 << 5,
-    LIBRAW_RAWSPECIAL_SRAW_NO_RGB = 1 << 6,
-    LIBRAW_RAWSPECIAL_SRAW_NO_INTERPOLATE = 1 << 7
-};
-
-enum LibRaw_rawspeed_bits_t
-{
-    LIBRAW_RAWSPEEDV1_USE = 1,
-    LIBRAW_RAWSPEEDV1_FAILONUNKNOWN = 1 << 1,
-    LIBRAW_RAWSPEEDV1_IGNOREERRORS = 1 << 2,
-    /*  bits 3-7 are reserved*/
-    LIBRAW_RAWSPEEDV3_USE = 1 << 8,
-    LIBRAW_RAWSPEEDV3_FAILONUNKNOWN = 1 << 9,
-    LIBRAW_RAWSPEEDV3_IGNOREERRORS = 1 << 10,
-};
-
-enum LibRaw_processing_options
-{
-  LIBRAW_RAWOPTIONS_PENTAX_PS_ALLFRAMES = 1,
-  LIBRAW_RAWOPTIONS_CONVERTFLOAT_TO_INT = 1 << 1,
-  LIBRAW_RAWOPTIONS_ARQ_SKIP_CHANNEL_SWAP = 1 << 2,
-  LIBRAW_RAWOPTIONS_NO_ROTATE_FOR_KODAK_THUMBNAILS = 1 << 3,
-//  LIBRAW_RAWOPTIONS_USE_DNG_DEFAULT_CROP = 1 << 4,
-  LIBRAW_RAWOPTIONS_USE_PPM16_THUMBS = 1 << 5,
-  LIBRAW_RAWOPTIONS_DONT_CHECK_DNG_ILLUMINANT = 1 << 6,
-  LIBRAW_RAWOPTIONS_DNGSDK_ZEROCOPY = 1 << 7,
-  LIBRAW_RAWOPTIONS_ZEROFILTERS_FOR_MONOCHROMETIFFS = 1 << 8,
-  LIBRAW_RAWOPTIONS_DNG_ADD_ENHANCED = 1 << 9,
-  LIBRAW_RAWOPTIONS_DNG_ADD_PREVIEWS = 1 << 10,
-  LIBRAW_RAWOPTIONS_DNG_PREFER_LARGEST_IMAGE = 1 << 11,
-  LIBRAW_RAWOPTIONS_DNG_STAGE2 = 1 << 12,
-  LIBRAW_RAWOPTIONS_DNG_STAGE3 = 1 << 13,
-  LIBRAW_RAWOPTIONS_DNG_ALLOWSIZECHANGE = 1 << 14,
-  LIBRAW_RAWOPTIONS_DNG_DISABLEWBADJUST = 1 << 15,
-  LIBRAW_RAWOPTIONS_PROVIDE_NONSTANDARD_WB = 1 << 16,
-  LIBRAW_RAWOPTIONS_CAMERAWB_FALLBACK_TO_DAYLIGHT = 1 << 17,
-  LIBRAW_RAWOPTIONS_CHECK_THUMBNAILS_KNOWN_VENDORS = 1 << 18,
-  LIBRAW_RAWOPTIONS_CHECK_THUMBNAILS_ALL_VENDORS = 1 << 19,
-  LIBRAW_RAWOPTIONS_DNG_STAGE2_IFPRESENT = 1 << 20,
-  LIBRAW_RAWOPTIONS_DNG_STAGE3_IFPRESENT = 1 << 21,
-  LIBRAW_RAWOPTIONS_DNG_ADD_MASKS = 1 << 22,
-  LIBRAW_RAWOPTIONS_CANON_IGNORE_MAKERNOTES_ROTATION = 1 << 23,
-  LIBRAW_RAWOPTIONS_ALLOW_JPEGXL_PREVIEWS = 1 << 24
-};
-
-enum LibRaw_decoder_flags
-{
-  LIBRAW_DECODER_HASCURVE = 1 << 4,
-  LIBRAW_DECODER_SONYARW2 = 1 << 5,
-  LIBRAW_DECODER_TRYRAWSPEED = 1 << 6,
-  LIBRAW_DECODER_OWNALLOC = 1 << 7,
-  LIBRAW_DECODER_FIXEDMAXC = 1 << 8,
-  LIBRAW_DECODER_ADOBECOPYPIXEL = 1 << 9,
-  LIBRAW_DECODER_LEGACY_WITH_MARGINS = 1 << 10,
-  LIBRAW_DECODER_3CHANNEL = 1 << 11,
-  LIBRAW_DECODER_SINAR4SHOT = 1 << 11,
-  LIBRAW_DECODER_FLATDATA = 1 << 12,
-  LIBRAW_DECODER_FLAT_BG2_SWAPPED = 1<<13,
-  LIBRAW_DECODER_UNSUPPORTED_FORMAT = 1 << 14,
-  LIBRAW_DECODER_NOTSET = 1 << 15,
-  LIBRAW_DECODER_TRYRAWSPEED3 = 1 << 16
-};
-
-#define LIBRAW_XTRANS 9
-
-enum LibRaw_constructor_flags
-{
-  LIBRAW_OPTIONS_NONE = 0,
-  LIBRAW_OPTIONS_NO_DATAERR_CALLBACK = 1 << 1,
-  /* Compatibility w/ years old typo */
-  LIBRAW_OPIONS_NO_DATAERR_CALLBACK = LIBRAW_OPTIONS_NO_DATAERR_CALLBACK
-};
-
-enum LibRaw_warnings
-{
-  LIBRAW_WARN_NONE = 0,
-  LIBRAW_WARN_BAD_CAMERA_WB = 1 << 2,
-  LIBRAW_WARN_NO_METADATA = 1 << 3,
-  LIBRAW_WARN_NO_JPEGLIB = 1 << 4,
-  LIBRAW_WARN_NO_EMBEDDED_PROFILE = 1 << 5,
-  LIBRAW_WARN_NO_INPUT_PROFILE = 1 << 6,
-  LIBRAW_WARN_BAD_OUTPUT_PROFILE = 1 << 7,
-  LIBRAW_WARN_NO_BADPIXELMAP = 1 << 8,
-  LIBRAW_WARN_BAD_DARKFRAME_FILE = 1 << 9,
-  LIBRAW_WARN_BAD_DARKFRAME_DIM = 1 << 10,
-  LIBRAW_WARN_RAWSPEED_PROBLEM = 1 << 12,
-  LIBRAW_WARN_RAWSPEED_UNSUPPORTED = 1 << 13,
-  LIBRAW_WARN_RAWSPEED_PROCESSED = 1 << 14,
-  LIBRAW_WARN_FALLBACK_TO_AHD = 1 << 15,
-  LIBRAW_WARN_PARSEFUJI_PROCESSED = 1 << 16,
-  LIBRAW_WARN_DNGSDK_PROCESSED = 1 << 17,
-  LIBRAW_WARN_DNG_IMAGES_REORDERED = 1 << 18,
-  LIBRAW_WARN_DNG_STAGE2_APPLIED = 1 << 19,
-  LIBRAW_WARN_DNG_STAGE3_APPLIED = 1 << 20,
-  LIBRAW_WARN_RAWSPEED3_PROBLEM = 1 << 21,
-  LIBRAW_WARN_RAWSPEED3_UNSUPPORTED = 1 << 22,
-  LIBRAW_WARN_RAWSPEED3_PROCESSED = 1 << 23,
-  LIBRAW_WARN_RAWSPEED3_NOTLISTED = 1 << 24,
-  LIBRAW_WARN_VENDOR_CROP_SUGGESTED = 1 << 25
-};
-
-enum LibRaw_exceptions
-{
-  LIBRAW_EXCEPTION_NONE = 0,
-  LIBRAW_EXCEPTION_ALLOC = 1,
-  LIBRAW_EXCEPTION_DECODE_RAW = 2,
-  LIBRAW_EXCEPTION_DECODE_JPEG = 3,
-  LIBRAW_EXCEPTION_IO_EOF = 4,
-  LIBRAW_EXCEPTION_IO_CORRUPT = 5,
-  LIBRAW_EXCEPTION_CANCELLED_BY_CALLBACK = 6,
-  LIBRAW_EXCEPTION_BAD_CROP = 7,
-  LIBRAW_EXCEPTION_IO_BADFILE = 8,
-  LIBRAW_EXCEPTION_DECODE_JPEG2000 = 9,
-  LIBRAW_EXCEPTION_TOOBIG = 10,
-  LIBRAW_EXCEPTION_MEMPOOL = 11,
-  LIBRAW_EXCEPTION_UNSUPPORTED_FORMAT = 12
-};
-
-enum LibRaw_progress
-{
-  LIBRAW_PROGRESS_START = 0,
-  LIBRAW_PROGRESS_OPEN = 1,
-  LIBRAW_PROGRESS_IDENTIFY = 1 << 1,
-  LIBRAW_PROGRESS_SIZE_ADJUST = 1 << 2,
-  LIBRAW_PROGRESS_LOAD_RAW = 1 << 3,
-  LIBRAW_PROGRESS_RAW2_IMAGE = 1 << 4,
-  LIBRAW_PROGRESS_REMOVE_ZEROES = 1 << 5,
-  LIBRAW_PROGRESS_BAD_PIXELS = 1 << 6,
-  LIBRAW_PROGRESS_DARK_FRAME = 1 << 7,
-  LIBRAW_PROGRESS_FOVEON_INTERPOLATE = 1 << 8,
-  LIBRAW_PROGRESS_SCALE_COLORS = 1 << 9,
-  LIBRAW_PROGRESS_PRE_INTERPOLATE = 1 << 10,
-  LIBRAW_PROGRESS_INTERPOLATE = 1 << 11,
-  LIBRAW_PROGRESS_MIX_GREEN = 1 << 12,
-  LIBRAW_PROGRESS_MEDIAN_FILTER = 1 << 13,
-  LIBRAW_PROGRESS_HIGHLIGHTS = 1 << 14,
-  LIBRAW_PROGRESS_FUJI_ROTATE = 1 << 15,
-  LIBRAW_PROGRESS_FLIP = 1 << 16,
-  LIBRAW_PROGRESS_APPLY_PROFILE = 1 << 17,
-  LIBRAW_PROGRESS_CONVERT_RGB = 1 << 18,
-  LIBRAW_PROGRESS_STRETCH = 1 << 19,
-  /* reserved */
-  LIBRAW_PROGRESS_STAGE20 = 1 << 20,
-  LIBRAW_PROGRESS_STAGE21 = 1 << 21,
-  LIBRAW_PROGRESS_STAGE22 = 1 << 22,
-  LIBRAW_PROGRESS_STAGE23 = 1 << 23,
-  LIBRAW_PROGRESS_STAGE24 = 1 << 24,
-  LIBRAW_PROGRESS_STAGE25 = 1 << 25,
-  LIBRAW_PROGRESS_STAGE26 = 1 << 26,
-  LIBRAW_PROGRESS_STAGE27 = 1 << 27,
-
-  LIBRAW_PROGRESS_THUMB_LOAD = 1 << 28,
-  LIBRAW_PROGRESS_TRESERVED1 = 1 << 29,
-  LIBRAW_PROGRESS_TRESERVED2 = 1 << 30
-};
-#define LIBRAW_PROGRESS_THUMB_MASK 0x0fffffff
-
-enum LibRaw_errors
-{
-  LIBRAW_SUCCESS = 0,
-  LIBRAW_UNSPECIFIED_ERROR = -1,
-  LIBRAW_FILE_UNSUPPORTED = -2,
-  LIBRAW_REQUEST_FOR_NONEXISTENT_IMAGE = -3,
-  LIBRAW_OUT_OF_ORDER_CALL = -4,
-  LIBRAW_NO_THUMBNAIL = -5,
-  LIBRAW_UNSUPPORTED_THUMBNAIL = -6,
-  LIBRAW_INPUT_CLOSED = -7,
-  LIBRAW_NOT_IMPLEMENTED = -8,
-  LIBRAW_REQUEST_FOR_NONEXISTENT_THUMBNAIL = -9,
-  LIBRAW_UNSUFFICIENT_MEMORY = -100007,
-  LIBRAW_DATA_ERROR = -100008,
-  LIBRAW_IO_ERROR = -100009,
-  LIBRAW_CANCELLED_BY_CALLBACK = -100010,
-  LIBRAW_BAD_CROP = -100011,
-  LIBRAW_TOO_BIG = -100012,
-  LIBRAW_MEMPOOL_OVERFLOW = -100013
-};
-
-#define LIBRAW_FATAL_ERROR(ec) ((ec) < -100000)
-
-enum LibRaw_internal_thumbnail_formats
-{
-    LIBRAW_INTERNAL_THUMBNAIL_UNKNOWN = 0,
-    LIBRAW_INTERNAL_THUMBNAIL_KODAK_THUMB = 1,
-    LIBRAW_INTERNAL_THUMBNAIL_KODAK_YCBCR = 2,
-    LIBRAW_INTERNAL_THUMBNAIL_KODAK_RGB = 3,
-    LIBRAW_INTERNAL_THUMBNAIL_JPEG = 4,
-    LIBRAW_INTERNAL_THUMBNAIL_LAYER,
-    LIBRAW_INTERNAL_THUMBNAIL_ROLLEI,
-    LIBRAW_INTERNAL_THUMBNAIL_PPM,
-    LIBRAW_INTERNAL_THUMBNAIL_PPM16,
-    LIBRAW_INTERNAL_THUMBNAIL_X3F,
-	LIBRAW_INTERNAL_THUMBNAIL_DNG_YCBCR,
-	LIBRAW_INTERNAL_THUMBNAIL_JPEGXL
-};
-
-
-enum LibRaw_thumbnail_formats
-{
-  LIBRAW_THUMBNAIL_UNKNOWN = 0,
-  LIBRAW_THUMBNAIL_JPEG = 1,
-  LIBRAW_THUMBNAIL_BITMAP = 2,
-  LIBRAW_THUMBNAIL_BITMAP16 = 3,
-  LIBRAW_THUMBNAIL_LAYER = 4,
-  LIBRAW_THUMBNAIL_ROLLEI = 5,
-  LIBRAW_THUMBNAIL_H265 = 6,
-  LIBRAW_THUMBNAIL_JPEGXL = 7
-};
-
-enum LibRaw_image_formats
-{
-  LIBRAW_IMAGE_JPEG = 1,
-  LIBRAW_IMAGE_BITMAP = 2,
-  LIBRAW_IMAGE_JPEGXL = 3,
-  LIBRAW_IMAGE_H265 = 4
-};
-
-#endif
diff --git a/includes/libraw_datastream.h b/includes/libraw_datastream.h
deleted file mode 100644
index 9557d91..0000000
--- a/includes/libraw_datastream.h
+++ /dev/null
@@ -1,404 +0,0 @@
-/* -*- C -*-
- * File: libraw_datastream.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sun Jan 18 13:07:35 2009
- *
- * LibRaw Data stream interface
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef __LIBRAW_DATASTREAM_H
-#define __LIBRAW_DATASTREAM_H
-
-#include 
-#include 
-#include 
-#include 
-
-#ifndef __cplusplus
-
-#else /* __cplusplus */
-#if defined _WIN32
-#ifndef LIBRAW_NO_WINSOCK2
-#ifdef NOMINMAX
-#define LIBRAW_NO_UNDEF_NOMINMAX
-#else
-#define NOMINMAX
-#endif
-
-#include 
-
-#ifndef LIBRAW_NO_UNDEF_NOMINMAX
-#undef NOMINMAX /* restore previous mode*/
-#endif
-#undef LIBRAW_NO_UNDEF_NOMINMAX
-#endif
-#endif
-/* No unique_ptr on Apple ?? */
-#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520) ||  \
-    (defined(_MSC_VER) && _MSVC_LANG >= 201103L)
-/* OK - use unique_ptr unless LIBRAW_USE_AUTOPTR defined externally*/
-#else
-/* Force to use auto_ptr */
-#ifndef LIBRAW_USE_AUTOPTR
-#define LIBRAW_USE_AUTOPTR
-#endif
-#endif
-
-#include "libraw_const.h"
-#include "libraw_types.h"
-#include 
-#include 
-#include 
-
-#if defined(_WIN32) && (_MSC_VER) >= 1500
-#define WIN32SECURECALLS
-#endif
-
-#ifdef USE_DNGSDK
-
-#if defined LIBRAW_WIN32_CALLS
-#define qWinOS 1
-#define qMacOS 0
-#elif defined(__APPLE__)
-#define qWinOS 0
-#define qMacOS 1
-#else
-/* define OS types for DNG here */
-#endif
-#define qDNGXMPDocOps 0
-#define qDNGUseLibJPEG 1
-#define qDNGXMPFiles 0
-#define qDNGExperimental 1
-#define qDNGThreadSafe 1
-#include "dng_stream.h"
-#endif /* DNGSDK */
-
-#define IOERROR()                                                              \
-  do                                                                           \
-  {                                                                            \
-    throw LIBRAW_EXCEPTION_IO_EOF;                                             \
-  } while (0)
-
-class LibRaw_buffer_datastream;
-class LibRaw_bit_buffer;
-
-class DllDef LibRaw_abstract_datastream
-{
-public:
-  LibRaw_abstract_datastream() { };
-  virtual ~LibRaw_abstract_datastream(void) { }
-  virtual int valid() = 0;
-  virtual int read(void *, size_t, size_t) = 0;
-  virtual int seek(INT64, int) = 0;
-  virtual INT64 tell() = 0;
-  virtual INT64 size() = 0;
-  virtual int get_char() = 0;
-  virtual char *gets(char *, int) = 0;
-  virtual int scanf_one(const char *, void *) = 0;
-  virtual int eof() = 0;
-  virtual int jpeg_src(void *);
-  virtual void buffering_off() {}
-  /* reimplement in subclass to use parallel access in xtrans_load_raw() if
-   * OpenMP is not used */
-  virtual int lock() { return 1; } /* success */
-  virtual void unlock() {}
-  virtual const char *fname() { return NULL; };
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  virtual const wchar_t *wfname() { return NULL; };
-#endif
-};
-
-#ifndef LIBRAW_NO_IOSTREAMS_DATASTREAM
-
-#ifdef LIBRAW_WIN32_DLLDEFS
-#ifdef LIBRAW_USE_AUTOPTR
-template class DllDef std::auto_ptr;
-#else
-template class DllDef std::unique_ptr;
-#endif
-#endif
-
-class DllDef LibRaw_file_datastream : public LibRaw_abstract_datastream
-{
-protected:
-#ifdef LIBRAW_USE_AUTOPTR
-  std::auto_ptr f; /* will close() automatically through dtor */
-#else
-  std::unique_ptr f;
-#endif
-  std::string filename;
-  INT64 _fsize;
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  std::wstring wfilename;
-#endif
-
-public:
-  virtual ~LibRaw_file_datastream();
-  LibRaw_file_datastream(const char *fname);
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  LibRaw_file_datastream(const wchar_t *fname);
-#endif
-  virtual int valid();
-  virtual int read(void *ptr, size_t size, size_t nmemb);
-  virtual int eof();
-  virtual int seek(INT64 o, int whence);
-  virtual INT64 tell();
-  virtual INT64 size() { return _fsize; }
-  virtual int get_char() {return f->sbumpc();}
-  virtual char *gets(char *str, int sz);
-  virtual int scanf_one(const char *fmt, void *val);
-  virtual const char *fname();
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  virtual const wchar_t *wfname();
-#endif
-};
-#endif
-
-#if defined (LIBRAW_NO_IOSTREAMS_DATASTREAM)  && defined (LIBRAW_WIN32_CALLS)
-
-struct DllDef LibRaw_bufio_params
-{
-    static int bufsize;
-    static void set_bufsize(int bs);
-};
-
-class buffer_t : public std::vector
-{
-public:
-    INT64 _bstart, _bend;
-    buffer_t() : std::vector(LibRaw_bufio_params::bufsize), _bstart(0), _bend(0) {}
-    int charOReof(INT64 _fpos)
-    {
-        if (_bstart < 0LL || _bend < 0LL || _bend < _bstart || _fpos < 0LL)  
-            return -1;
-        if ((_bend - _bstart) > (INT64)size()) 
-            return -1;
-        if (_fpos >= _bstart && _fpos < _bend)
-            return data()[_fpos - _bstart];
-        return -1;
-    }
-    bool contains(INT64 _fpos, INT64& contains)
-    {
-        if (_bstart < 0LL || _bend < 0LL || _bend < _bstart || _fpos < 0LL)
-        {
-            contains = 0;
-            return false;
-        }
-        if ((_bend - _bstart) > (INT64)size())
-        {
-          contains = 0;
-          return false;
-        }       
-        if (_fpos >= _bstart && _fpos < _bend)
-        {
-            contains = _bend - _fpos;
-            return true;
-        }
-        contains = 0;
-        return false;
-    }
-};
-
-
-class DllDef LibRaw_bigfile_buffered_datastream : public LibRaw_abstract_datastream
-{
-public:
-    LibRaw_bigfile_buffered_datastream(const char *fname);
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-    LibRaw_bigfile_buffered_datastream(const wchar_t *fname);
-#endif
-    virtual ~LibRaw_bigfile_buffered_datastream();
-    virtual int valid();
-    virtual void buffering_off() { buffered = 0; }
-    virtual int read(void *ptr, size_t size, size_t nmemb);
-    virtual int eof();
-    virtual int seek(INT64 o, int whence);
-    virtual INT64 tell();
-    virtual INT64 size() { return _fsize; }
-    virtual char *gets(char *str, int sz);
-    virtual int scanf_one(const char *fmt, void *val);
-    virtual const char *fname();
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-    virtual const wchar_t *wfname();
-#endif
-    virtual int get_char()
-    {
-        int r = iobuffers[0].charOReof(_fpos);
-        if (r >= 0)
-        {
-            _fpos++;
-            return r;
-        }
-        unsigned char c;
-        r = read(&c, 1, 1);
-        return r > 0 ? c : r;
-    }
-
-protected:
-    INT64   readAt(void *ptr, size_t size, INT64 off);
-    bool	fillBufferAt(int buf, INT64 off);
-    int		selectStringBuffer(INT64 len, INT64& contains);
-    HANDLE fhandle;
-    INT64 _fsize;
-    INT64 _fpos; /* current file position; current buffer start position */
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-    std::wstring wfilename;
-#endif
-    std::string filename;
-    buffer_t iobuffers[2];
-    int buffered;
-};
-
-#endif
-
-class DllDef LibRaw_buffer_datastream : public LibRaw_abstract_datastream
-{
-public:
-  LibRaw_buffer_datastream(const void *buffer, size_t bsize);
-  virtual ~LibRaw_buffer_datastream();
-  virtual int valid();
-  virtual int jpeg_src(void *jpegdata);
-  virtual int read(void *ptr, size_t sz, size_t nmemb);
-  virtual int eof();
-  virtual int seek(INT64 o, int whence);
-  virtual INT64 tell();
-  virtual INT64 size() { return streamsize; }
-  virtual char *gets(char *s, int sz);
-  virtual int scanf_one(const char *fmt, void *val);
-  virtual int get_char()
-  {
-    if (streampos >= streamsize)   return -1;
-    return buf[streampos++];
-  }
-
-private:
-  unsigned char *buf;
-  size_t streampos, streamsize;
-};
-
-class DllDef LibRaw_bigfile_datastream : public LibRaw_abstract_datastream
-{
-public:
-  LibRaw_bigfile_datastream(const char *fname);
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  LibRaw_bigfile_datastream(const wchar_t *fname);
-#endif
-  virtual ~LibRaw_bigfile_datastream();
-  virtual int valid();
-  virtual int read(void *ptr, size_t size, size_t nmemb);
-  virtual int eof();
-  virtual int seek(INT64 o, int whence);
-  virtual INT64 tell();
-  virtual INT64 size() { return _fsize; }
-  virtual char *gets(char *str, int sz);
-  virtual int scanf_one(const char *fmt, void *val);
-  virtual const char *fname();
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  virtual const wchar_t *wfname();
-#endif
-  virtual int get_char()
-  {
-#ifndef LIBRAW_WIN32_CALLS
-    return getc_unlocked(f);
-#else
-    return fgetc(f);
-#endif
-  }
-
-protected:
-  FILE *f;
-  std::string filename;
-  INT64 _fsize;
-#ifdef LIBRAW_WIN32_UNICODEPATHS
-  std::wstring wfilename;
-#endif
-};
-
-#ifdef LIBRAW_WIN32_CALLS
-class DllDef LibRaw_windows_datastream : public LibRaw_buffer_datastream
-{
-public:
-  /* ctor: high level constructor opens a file by name */
-  LibRaw_windows_datastream(const TCHAR *sFile);
-  /* ctor: construct with a file handle - caller is responsible for closing the
-   * file handle */
-  LibRaw_windows_datastream(HANDLE hFile);
-  /* dtor: unmap and close the mapping handle */
-  virtual ~LibRaw_windows_datastream();
-  virtual INT64 size() { return cbView_; }
-
-protected:
-  void Open(HANDLE hFile);
-  inline void reconstruct_base()
-  {
-    /* this subterfuge is to overcome the private-ness of
-     * LibRaw_buffer_datastream */
-    (LibRaw_buffer_datastream &)*this =
-        LibRaw_buffer_datastream(pView_, (size_t)cbView_);
-  }
-
-  HANDLE hMap_;    /* handle of the file mapping */
-  void *pView_;    /* pointer to the mapped memory */
-  __int64 cbView_; /* size of the mapping in bytes */
-};
-
-#endif
-
-#ifdef USE_DNGSDK
-
-class libraw_dng_stream : public dng_stream
-{
-public:
-  libraw_dng_stream(LibRaw_abstract_datastream *p)
-      : dng_stream((dng_abort_sniffer *)NULL, kBigBufferSize, 0),
-        parent_stream(p)
-  {
-    if (parent_stream)
-    {
-        parent_stream->buffering_off();
-      off = parent_stream->tell();
-      parent_stream->seek(0UL, SEEK_SET); /* seek to start */
-    }
-  }
-  ~libraw_dng_stream()
-  {
-    if (parent_stream)
-      parent_stream->seek(off, SEEK_SET);
-  }
-  virtual uint64 DoGetLength()
-  {
-    if (parent_stream)
-      return parent_stream->size();
-    return 0;
-  }
-  virtual void DoRead(void *data, uint32 count, uint64 offset)
-  {
-    if (parent_stream)
-    {
-      parent_stream->seek(offset, SEEK_SET);
-      parent_stream->read(data, 1, count);
-    }
-  }
-
-private:
-  libraw_dng_stream(const libraw_dng_stream &stream);
-  libraw_dng_stream &operator=(const libraw_dng_stream &stream);
-  LibRaw_abstract_datastream *parent_stream;
-  INT64 off;
-};
-
-#endif
-
-#endif /* cplusplus */
-
-#endif
diff --git a/includes/libraw_internal.h b/includes/libraw_internal.h
deleted file mode 100644
index 5af31d3..0000000
--- a/includes/libraw_internal.h
+++ /dev/null
@@ -1,358 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_internal.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8 , 2008
- *
- * LibRaw internal data structures (not visible outside)
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef _LIBRAW_INTERNAL_TYPES_H
-#define _LIBRAW_INTERNAL_TYPES_H
-
-#include 
-
-#ifdef __cplusplus
-
-#include "libraw_datastream.h"
-#include "libraw_types.h"
-
-class LibRaw_TLS
-{
-public:
-  struct
-  {
-    unsigned bitbuf;
-    int vbits, reset;
-  } getbits;
-  struct
-  {
-    UINT64 bitbuf;
-    int vbits;
-
-  } ph1_bits;
-  struct
-  {
-    unsigned pad[128], p;
-  } sony_decrypt;
-  struct
-  {
-    uchar buf[0x4002];
-    int vpos, padding;
-  } pana_data;
-  uchar jpeg_buffer[4096];
-  struct
-  {
-    float cbrt[0x10000], xyz_cam[3][4];
-  } ahd_data;
-  void init()
-  {
-    getbits.bitbuf = 0;
-    getbits.vbits = getbits.reset = 0;
-    ph1_bits.bitbuf = 0;
-    ph1_bits.vbits = 0;
-    pana_data.vpos = 0;
-    ahd_data.cbrt[0] = -2.0f;
-  }
-};
-
-class LibRaw_constants
-{
-public:
-  static const float d65_white[3];
-  static const double xyz_rgb[3][3];
-  static const double xyzd50_srgb[3][3];
-  static const double rgb_rgb[3][3];
-  static const double adobe_rgb[3][3];
-  static const double wide_rgb[3][3];
-  static const double prophoto_rgb[3][3];
-  static const double aces_rgb[3][3];
-  static const double dcip3d65_rgb[3][3];
-  static const double rec2020_rgb[3][3];
-};
-#endif /* __cplusplus */
-
-typedef struct
-{
-#ifndef __cplusplus
-  struct
-#endif
-      LibRaw_abstract_datastream *input;
-  FILE *output;
-  int input_internal;
-  char *meta_data;
-  INT64 profile_offset;
-  INT64 toffset;
-  unsigned pana_black[4];
-
-} internal_data_t;
-
-#define LIBRAW_HISTOGRAM_SIZE 0x2000
-typedef struct
-{
-  int (*histogram)[LIBRAW_HISTOGRAM_SIZE];
-  unsigned *oprof;
-} output_data_t;
-
-typedef struct
-{
-  unsigned olympus_exif_cfa;
-  unsigned long long unique_id;
-  unsigned long long OlyID;
-  unsigned tiff_nifds;
-  int tiff_flip;
-  int metadata_blocks;
-} identify_data_t;
-
-typedef struct
-{
-  uint32_t first;
-  uint32_t count;
-  uint32_t id;
-} crx_sample_to_chunk_t;
-
-// contents of tag CMP1 for relevant track in CR3 file
-typedef struct
-{
-  int32_t version;
-  int32_t f_width;
-  int32_t f_height;
-  int32_t tileWidth;
-  int32_t tileHeight;
-  int32_t nBits;
-  int32_t nPlanes;
-  int32_t cfaLayout;
-  int32_t encType;
-  int32_t imageLevels;
-  int32_t hasTileCols;
-  int32_t hasTileRows;
-  int32_t mdatHdrSize;
-  int32_t medianBits;
-  // Not from header, but from datastream
-  uint32_t MediaSize;
-  INT64 MediaOffset;
-  uint32_t MediaType; /* 1 -> /C/RAW, 2-> JPEG, 3-> CTMD metadata*/
-  crx_sample_to_chunk_t * stsc_data; /* samples to chunk */
-  uint32_t stsc_count;
-  uint32_t sample_count;
-  uint32_t sample_size; /* zero if not fixed sample size */
-  int32_t *sample_sizes;
-  uint32_t chunk_count;
-  INT64  *chunk_offsets;
-} crx_data_header_t;
-
-typedef struct 
-{
-	uint32_t tag39[6];
-	uint16_t tag3A[6];
-	uint16_t tag3B;
-	uint16_t initial[4];
-	uint16_t tag40a[17], tag40b[17], tag41[17];
-	uint16_t stripe_count; // 0x42
-	uint16_t tag43;
-	INT64	 stripe_offsets[5]; //0x44
-	uint16_t stripe_left[5]; // 0x45
-	uint32_t stripe_compressed_size[5]; //0x46
-	uint16_t stripe_width[5]; //0x47
-	uint16_t stripe_height[5];
-} pana8_tags_t;
-
-typedef struct
-{
-  short order;
-  ushort sraw_mul[4], cr2_slice[3];
-  unsigned kodak_cbpp;
-  INT64 strip_offset, data_offset;
-  INT64 meta_offset;
-  INT64 exif_offset, exif_subdir_offset, ifd0_offset;
-  unsigned data_size;
-  unsigned meta_length;
-  unsigned cr3_exif_length, cr3_ifd0_length;
-  unsigned thumb_misc;
-  enum LibRaw_internal_thumbnail_formats thumb_format;
-  unsigned fuji_layout;
-  unsigned tiff_samples;
-  unsigned tiff_bps;
-  unsigned tiff_compress;
-  unsigned tiff_sampleformat;
-  unsigned zero_after_ff;
-  unsigned tile_width, tile_length, load_flags;
-  unsigned data_error;
-  int hasselblad_parser_flag;
-  long long posRAFData;
-  unsigned lenRAFData;
-  int fuji_total_lines, fuji_total_blocks, fuji_block_width, fuji_bits,
-      fuji_raw_type, fuji_lossless;
-  int pana_encoding, pana_bpp;
-  pana8_tags_t pana8;
-  crx_data_header_t crx_header[LIBRAW_CRXTRACKS_MAXCOUNT];
-  int crx_track_selected;
-  int crx_track_count;
-  short CR3_CTMDtag;
-  short CR3_Version;
-  int CM_found;
-  unsigned is_NikonTransfer;
-  unsigned is_Olympus;
-  int OlympusDNG_SubDirOffsetValid;
-  unsigned is_Sony;
-  unsigned is_pana_raw;
-  unsigned is_PentaxRicohMakernotes; /* =1 for Ricoh software by Pentax, Camera DNG */
-
-  unsigned dng_frames[LIBRAW_IFD_MAXCOUNT*2]; /* bits: 0-7: shot_select, 8-15: IFD#, 16-31: low 16 bit of newsubfile type */
-  unsigned short raw_stride;
-} unpacker_data_t;
-
-typedef struct
-{
-  internal_data_t internal_data;
-  libraw_internal_output_params_t internal_output_params;
-  output_data_t output_data;
-  identify_data_t identify_data;
-  unpacker_data_t unpacker_data;
-} libraw_internal_data_t;
-
-struct decode
-{
-  struct decode *branch[2];
-  int leaf;
-};
-
-struct tiff_ifd_t
-{
-  int t_width, t_height, bps, comp, phint, offset, t_flip, samples, bytes, extrasamples;
-  int t_tile_width, t_tile_length, sample_format, predictor;
-  int rows_per_strip;
-  int *strip_offsets, strip_offsets_count;
-  int *strip_byte_counts, strip_byte_counts_count;
-  unsigned t_filters;
-  int t_vwidth, t_vheight, t_lm,t_tm;
-  int t_fuji_width;
-  float t_shutter;
-  /* Per-IFD DNG fields */
-  INT64 opcode2_offset;
-  INT64 lineartable_offset;
-  int lineartable_len;
-  libraw_dng_color_t dng_color[2];
-  libraw_dng_levels_t dng_levels;
-  int newsubfiletype;
-};
-
-struct jhead
-{
-  int algo, bits, high, wide, clrs, sraw, psv, restart, vpred[6];
-  ushort quant[64], idct[64], *huff[20], *free[20], *row;
-};
-
-struct libraw_tiff_tag
-{
-  ushort tag, type;
-  int count;
-  union {
-    char c[4];
-    short s[2];
-    int i;
-  } val;
-};
-
-struct tiff_hdr
-{
-  ushort t_order, magic;
-  int ifd;
-  ushort pad, ntag;
-  struct libraw_tiff_tag tag[23];
-  int nextifd;
-  ushort pad2, nexif;
-  struct libraw_tiff_tag exif[4];
-  ushort pad3, ngps;
-  struct libraw_tiff_tag gpst[10];
-  short bps[4];
-  int rat[10];
-  unsigned gps[26];
-  char t_desc[512], t_make[64], t_model[64], soft[32], date[20], t_artist[64];
-};
-
-#ifdef DEBUG_STAGE_CHECKS
-#define CHECK_ORDER_HIGH(expected_stage)                                       \
-  do                                                                           \
-  {                                                                            \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) >=               \
-        expected_stage)                                                        \
-    {                                                                          \
-      fprintf(stderr, "CHECK_HIGH: check %d >=  %d\n",                         \
-              imgdata.progress_flags &LIBRAW_PROGRESS_THUMB_MASK,              \
-              expected_stage);                                                 \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-    }                                                                          \
-  } while (0)
-
-#define CHECK_ORDER_LOW(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    printf("Checking LOW %d/%d : %d\n", imgdata.progress_flags,                \
-           expected_stage, imgdata.progress_flags < expected_stage);           \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) <                \
-        expected_stage)                                                        \
-    {                                                                          \
-      printf("failed!\n");                                                     \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-    }                                                                          \
-  } while (0)
-#define CHECK_ORDER_BIT(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    if (imgdata.progress_flags & expected_stage)                               \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-  } while (0)
-
-#define SET_PROC_FLAG(stage)                                                   \
-  do                                                                           \
-  {                                                                            \
-    imgdata.progress_flags |= stage;                                           \
-    fprintf(stderr, "SET_FLAG: %d\n", stage);                                  \
-  } while (0)
-
-#else
-
-#define CHECK_ORDER_HIGH(expected_stage)                                       \
-  do                                                                           \
-  {                                                                            \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) >=               \
-        expected_stage)                                                        \
-    {                                                                          \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-    }                                                                          \
-  } while (0)
-
-#define CHECK_ORDER_LOW(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    if ((imgdata.progress_flags & LIBRAW_PROGRESS_THUMB_MASK) <                \
-        expected_stage)                                                        \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-  } while (0)
-
-#define CHECK_ORDER_BIT(expected_stage)                                        \
-  do                                                                           \
-  {                                                                            \
-    if (imgdata.progress_flags & expected_stage)                               \
-      return LIBRAW_OUT_OF_ORDER_CALL;                                         \
-  } while (0)
-
-#define SET_PROC_FLAG(stage)                                                   \
-  do                                                                           \
-  {                                                                            \
-    imgdata.progress_flags |= stage;                                           \
-  } while (0)
-
-#endif
-
-#endif
diff --git a/includes/libraw_types.h b/includes/libraw_types.h
deleted file mode 100644
index fd034e8..0000000
--- a/includes/libraw_types.h
+++ /dev/null
@@ -1,1188 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_types.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Sat Mar  8 , 2008
- *
- * LibRaw C data structures
- *
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-   (See file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-   (See file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef _LIBRAW_TYPES_H
-#define _LIBRAW_TYPES_H
-
-#include 
-#ifndef _WIN32
-#include 
-#endif
-
-#include 
-
-#if defined(_WIN32)
-#if defined(_MSC_VER) && (_MSC_VER <= 1500)
-typedef signed __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef signed __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef signed __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef signed __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else /* WIN32, but not old MSVC */
-#include 
-#endif /* _WIN32 */
-#include 
-#else
-#include 
-#endif
-
-#if defined(_OPENMP)
-
-#if defined(LIBRAW_FORCE_OPENMP)
-#define LIBRAW_USE_OPENMP
-#else
-#if defined(_WIN32)
-#if defined(_MSC_VER) &&                                                       \
-    (_MSC_VER >= 1600 || (_MSC_VER == 1500 && _MSC_FULL_VER >= 150030729))
-/* VS2010+ : OpenMP works OK, VS2008: have tested by cgilles */
-#define LIBRAW_USE_OPENMP
-#elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 910)
-/*  Have not tested on 9.x and 10.x, but Intel documentation claims OpenMP 2.5
- * support in 9.1 */
-#define LIBRAW_USE_OPENMP
-#else
-#undef LIBRAW_USE_OPENMP
-#endif
-/* Not Win32 */
-#elif (defined(__APPLE__) || defined(__MACOSX__)) && defined(_REENTRANT)
-/* Latest XCode works with OpenMP, need to recheck here */
-#undef LIBRAW_USE_OPENMP
-#else
-#define LIBRAW_USE_OPENMP
-#endif
-#endif
-#endif
-
-#ifdef LIBRAW_USE_OPENMP
-#include 
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#if defined(USE_LCMS)
-#include 
-#elif defined(USE_LCMS2)
-#include 
-#else
-#define NO_LCMS
-#endif
-
-#include "libraw_const.h"
-#include "libraw_version.h"
-
-#ifdef _WIN32
-  typedef __int64 INT64;
-  typedef unsigned __int64 UINT64;
-#else
-typedef long long INT64;
-typedef unsigned long long UINT64;
-#endif
-
-  typedef unsigned char uchar;
-  typedef unsigned short ushort;
-
-#ifdef LIBRAW_WIN32_DLLDEFS
-#ifdef LIBRAW_NODLL
-#define DllDef
-#else
-#ifdef LIBRAW_BUILDLIB
-#define DllDef __declspec(dllexport)
-#else
-#define DllDef __declspec(dllimport)
-#endif
-#endif
-#else
-#define DllDef
-#endif
-
-  typedef struct
-  {
-    const char *decoder_name;
-    unsigned decoder_flags;
-  } libraw_decoder_info_t;
-
-  typedef struct
-  {
-    unsigned mix_green;
-    unsigned raw_color;
-    unsigned zero_is_bad;
-    ushort shrink;
-    ushort fuji_width;
-  } libraw_internal_output_params_t;
-
-  typedef void (*memory_callback)(void *data, const char *file,
-                                  const char *where);
-  typedef void (*exif_parser_callback)(void *context, int tag, int type,
-                                       int len, unsigned int ord, void *ifp,
-                                       INT64 base);
-
-  typedef void (*data_callback)(void *data, const char *file, const int offset);
-
-  DllDef void default_data_callback(void *data, const char *file,
-                                    const int offset);
-
-  typedef int (*progress_callback)(void *data, enum LibRaw_progress stage,
-                                   int iteration, int expected);
-  typedef int (*pre_identify_callback)(void *ctx);
-  typedef void (*post_identify_callback)(void *ctx);
-  typedef void (*process_step_callback)(void *ctx);
-
-  typedef struct
-  {
-    data_callback data_cb;
-    void *datacb_data;
-
-    progress_callback progress_cb;
-    void *progresscb_data;
-
-    exif_parser_callback exif_cb;
-    void *exifparser_data;
-    pre_identify_callback pre_identify_cb;
-    post_identify_callback post_identify_cb;
-    process_step_callback pre_subtractblack_cb, pre_scalecolors_cb,
-        pre_preinterpolate_cb, pre_interpolate_cb, interpolate_bayer_cb,
-        interpolate_xtrans_cb, post_interpolate_cb, pre_converttorgb_cb,
-        post_converttorgb_cb;
-  } libraw_callbacks_t;
-
-  typedef struct
-  {
-    enum LibRaw_image_formats type;
-    ushort height, width, colors, bits;
-    unsigned int data_size;
-    unsigned char data[1];
-  } libraw_processed_image_t;
-
-  typedef struct
-  {
-    char guard[4];
-    char make[64];
-    char model[64];
-    char software[64];
-    char normalized_make[64];
-    char normalized_model[64];
-    unsigned maker_index;
-    unsigned raw_count;
-    unsigned dng_version;
-    unsigned is_foveon;
-    int colors;
-    unsigned filters;
-    char xtrans[6][6];
-    char xtrans_abs[6][6];
-    char cdesc[5];
-    unsigned xmplen;
-    char *xmpdata;
-
-  } libraw_iparams_t;
-
-  typedef struct
-  {
-    ushort cleft, ctop, cwidth, cheight;
-  } libraw_raw_inset_crop_t;
-
-  typedef struct
-  {
-    ushort raw_height, raw_width, height, width, top_margin, left_margin;
-    ushort iheight, iwidth;
-    unsigned raw_pitch;
-    double pixel_aspect;
-    int flip;
-    int mask[8][4];
-    ushort raw_aspect;
-    libraw_raw_inset_crop_t raw_inset_crops[2];
-  } libraw_image_sizes_t;
-
- typedef struct
-  {
-    short t,l,b,r; // top, left, bottom, right pixel coordinates, (0,0) is top left pixel;
-  } libraw_area_t; 
-
-  struct ph1_t
-  {
-    int format, key_off, tag_21a;
-    int t_black, split_col, black_col, split_row, black_row;
-    float tag_210;
-  };
-
-  typedef struct
-  {
-    unsigned parsedfields;
-    ushort illuminant;
-    float calibration[4][4];
-    float colormatrix[4][3];
-    float forwardmatrix[3][4];
-  } libraw_dng_color_t;
-
-  typedef struct
-  {
-    unsigned parsedfields;
-    unsigned dng_cblack[LIBRAW_CBLACK_SIZE];
-    unsigned dng_black;
-    float dng_fcblack[LIBRAW_CBLACK_SIZE];
-    float dng_fblack;
-    unsigned dng_whitelevel[4];
-    ushort default_crop[4]; /* Origin and size */
-    float    user_crop[4]; // top-left-bottom-right relative to default_crop
-    unsigned preview_colorspace;
-    float analogbalance[4];
-    float asshotneutral[4];
-    float baseline_exposure;
-    float LinearResponseLimit;
-  } libraw_dng_levels_t;
-
-  typedef struct
-  {
-    float romm_cam[9];
-  } libraw_P1_color_t;
-
-  typedef struct
-  {
-    int ColorDataVer;
-    int ColorDataSubVer;
-    int SpecularWhiteLevel;
-    int NormalWhiteLevel;
-    int ChannelBlackLevel[4];
-    int AverageBlackLevel;
-    /* multishot */
-    unsigned int multishot[4];
-    /* metering */
-    short MeteringMode;
-    short SpotMeteringMode;
-    uchar FlashMeteringMode;
-    short FlashExposureLock;
-    short ExposureMode;
-    short AESetting;
-    /* stabilization */
-    short ImageStabilization;
-    /* flash */
-    short FlashMode;
-    short FlashActivity;
-    short FlashBits;
-    short ManualFlashOutput;
-    short FlashOutput;
-    short FlashGuideNumber;
-    /* drive */
-    short ContinuousDrive;
-    /* sensor */
-    short SensorWidth;
-    short SensorHeight;
-
-    int   AFMicroAdjMode;
-    float AFMicroAdjValue;
-    short MakernotesFlip;
-    short RecordMode;
-    short SRAWQuality;
-    unsigned wbi;
-    short RF_lensID;
-    int AutoLightingOptimizer;
-    int HighlightTonePriority;
-
-    /* -1 = n/a            1 = Economy
-        2 = Normal         3 = Fine
-        4 = RAW            5 = Superfine
-        7 = CRAW         130 = Normal Movie, CRM LightRaw
-      131 = CRM  StandardRaw */
-    short Quality;
-    /* data compression curve
-        0 = OFF  1 = CLogV1 2 = CLogV2? 3 = CLogV3 */
-    int CanonLog;
-
-   libraw_area_t DefaultCropAbsolute;
-   libraw_area_t RecommendedImageArea;   // contains the image in proper aspect ratio?
-   libraw_area_t LeftOpticalBlack;       // use this, when present, to estimate black levels?
-   libraw_area_t UpperOpticalBlack;
-   libraw_area_t ActiveArea;
-    
-    short ISOgain[2]; // AutoISO & BaseISO per ExifTool
-  } libraw_canon_makernotes_t;
-
-  typedef struct
-  {
-    int    BaseISO;
-    double Gain;
-    char   Sensor[8];
-    char   SensorUnit[64]; // SU
-    char   HostBody[64];   // HB
-    int    SensorCode;
-    int    SensorSubCode;
-    int    CoatingCode;
-    int    uncropped;
-
-/* CaptureSequenceInitiator is based on the content of the 'model' tag
-  - values like 'Pinhole', 'Flash Sync', '500 Mech.' etc in .3FR 'model' tag
-    come from MAIN MENU > SETTINGS > Camera;
-  - otherwise 'model' contains:
-    1. if CF/CFV/CFH, SU enclosure, can be with SU type if '-' is present
-    2. else if '-' is present, HB + SU type;
-    3. HB;
-*/
-    char CaptureSequenceInitiator[32];
-
-/* SensorUnitConnector, makernotes 0x0015 tag:
- - in .3FR - SU side
- - in .FFF - HB side
-*/
-    char SensorUnitConnector[64];
-
-    int format; // 3FR, FFF, Imacon (H3D-39 and maybe others), Hasselblad/Phocus DNG, Adobe DNG
-    int nIFD_CM[2]; // number of IFD containing CM
-    int RecommendedCrop[2];
-
-/* mnColorMatrix is in makernotes tag 0x002a;
-  not present in .3FR files and Imacon/H3D-39 .FFF files;
-  when present in .FFF and Phocus .DNG files, it is a copy of CM1 from .3FR;
-  available samples contain all '1's in the first 3 elements
-*/
-    double mnColorMatrix[4][3];
-
-  } libraw_hasselblad_makernotes_t;
-
-  typedef struct
-  {
-    float  ExpoMidPointShift;
-    ushort DynamicRange;
-    ushort FilmMode;
-    ushort DynamicRangeSetting;
-    ushort DevelopmentDynamicRange;
-    ushort AutoDynamicRange;
-    ushort DRangePriority;
-    ushort DRangePriorityAuto;
-    ushort DRangePriorityFixed;
-    char   FujiModel[32 + 1];
-    char   FujiModel2[32 + 1];
-
-    /*
-    tag 0x9200, converted to BrightnessCompensation
-    F700, S3Pro, S5Pro, S20Pro, S200EXR
-    E550, E900, F810, S5600, S6500fd, S9000, S9500, S100FS
-    */
-    float BrightnessCompensation; /* in EV, if =4, raw data * 2^4 */
-
-    ushort FocusMode;
-    ushort AFMode;
-    ushort FocusPixel[2];
-    ushort PrioritySettings;
-    unsigned FocusSettings;
-    unsigned AF_C_Settings;
-    ushort FocusWarning;
-    ushort ImageStabilization[3];
-    ushort FlashMode;
-    ushort WB_Preset;
-
-    /* ShutterType:
-       0 - mechanical
-       1 = electronic
-       2 = electronic, long shutter speed
-       3 = electronic, front curtain
-    */
-    ushort ShutterType;
-    ushort ExrMode;
-    ushort Macro;
-    unsigned Rating;
-
-    /* CropMode:
-       1 - FF on GFX,
-       2 - sports finder (mechanical shutter),
-       4 - 1.25x crop (electronic shutter, continuous high)
-    */
-    ushort CropMode;
-    char   SerialSignature[0x0c + 1];
-    char   SensorID[4 + 1];
-    char   RAFVersion[4 + 1];
-    int    RAFDataGeneration; // 0 (none), 1..4, 4096
-    ushort RAFDataVersion;
-    int    isTSNERDTS;
-
-    /* DriveMode:
-       0 - single frame
-       1 - continuous low
-       2 - continuous high
-    */
-    short DriveMode;
-
-    /*
-    tag 0x4000 BlackLevel:
-    S9100, S9000, S7000, S6000fd, S5200, S5100, S5000,
-    S5Pro, S3Pro, S2Pro, S20Pro,
-    S200EXR, S100FS,
-    F810, F700,
-    E900, E550,
-    DBP, and aliases for all of the above
-    */
-    ushort BlackLevel[9];
-    unsigned RAFData_ImageSizeTable[32];
-    int AutoBracketing;
-    int SequenceNumber;
-    int SeriesLength;
-    float PixelShiftOffset[2];
-    int ImageCount;
-  } libraw_fuji_info_t;
-
-  typedef struct
-  {
-    ushort cleft, ctop, cwidth, cheight;
-  } libraw_sensor_highspeed_crop_t;
-
-  typedef struct
-  {
-    double ExposureBracketValue;
-    ushort ActiveDLighting;
-    ushort ShootingMode;
-    /* stabilization */
-    uchar ImageStabilization[7];
-    uchar VibrationReduction;
-    uchar VRMode;
-    /* flash */
-    char  FlashSetting[13];
-    char  FlashType[20];
-    uchar FlashExposureCompensation[4];
-    uchar ExternalFlashExposureComp[4];
-    uchar FlashExposureBracketValue[4];
-    uchar FlashMode;
-    signed char FlashExposureCompensation2;
-    signed char FlashExposureCompensation3;
-    signed char FlashExposureCompensation4;
-    uchar  FlashSource;
-    uchar  FlashFirmware[2];
-    uchar  ExternalFlashFlags;
-    uchar  FlashControlCommanderMode;
-    uchar  FlashOutputAndCompensation;
-    uchar  FlashFocalLength;
-    uchar  FlashGNDistance;
-    uchar  FlashGroupControlMode[4];
-    uchar  FlashGroupOutputAndCompensation[4];
-    uchar  FlashColorFilter;
-
-/* NEF compression, comments follow those for ExifTool tag 0x0093:
-	 1: Lossy (type 1)
-	 2: Uncompressed
-	 3: Lossless
-	 4: Lossy (type 2)
-	 5: Striped packed 12-bit
-	 6: Uncompressed (14-bit reduced to 12-bit)
-	 7: Unpacked 12-bit
-	 8: Small raw
-	 9: Packed 12-bit
-	10: Packed 14-bit
-	13: High Efficiency  (HE)
-	14: High Efficiency* (HE*)
-*/
-    ushort NEFCompression;
-
-    int    ExposureMode;
-    int    ExposureProgram;
-    int    nMEshots;
-    int    MEgainOn;
-    double ME_WB[4];
-    uchar  AFFineTune;
-    uchar  AFFineTuneIndex;
-    int8_t AFFineTuneAdj;
-    unsigned LensDataVersion;
-    unsigned FlashInfoVersion;
-    unsigned ColorBalanceVersion;
-    uchar key;
-    ushort NEFBitDepth[4];
-    ushort HighSpeedCropFormat; /* 1 -> 1.3x; 2 -> DX; 3 -> 5:4; 4 -> 3:2; 6 ->
-                                   16:9; 11 -> FX uncropped; 12 -> DX uncropped;
-                                   17 -> 1:1 */
-    libraw_sensor_highspeed_crop_t SensorHighSpeedCrop;
-    ushort SensorWidth;
-    ushort SensorHeight;
-    ushort Active_D_Lighting;
-    unsigned PictureControlVersion;
-    char PictureControlName [20];
-    char PictureControlBase [20];
-    unsigned ShotInfoVersion;
-    short MakernotesFlip;
-    double RollAngle;  // positive is clockwise, CW
-    double PitchAngle; // positive is upwords
-    double YawAngle;   // positive is to the right
-  } libraw_nikon_makernotes_t;
-
-  typedef struct
-  {
-    char     CameraType2[6];
-    ushort   ValidBits;
-    int      SensorCalibration[2];
-    ushort   DriveMode[5];
-    ushort   ColorSpace;
-    ushort   FocusMode[2];
-    ushort   AutoFocus;
-    ushort   AFPoint;
-    unsigned AFAreas[64];
-    double   AFPointSelected[5];
-    ushort   AFResult;
-    uchar    AFFineTune;
-    short    AFFineTuneAdj[3];
-    unsigned SpecialMode[3];
-    ushort   ZoomStepCount;
-    ushort   FocusStepCount;
-    ushort   FocusStepInfinity;
-    ushort   FocusStepNear;
-    double   FocusDistance;
-    ushort   AspectFrame[4]; // left, top, width, height
-    unsigned StackedImage[2];
-    uchar    isLiveND;
-    unsigned LiveNDfactor;
-    ushort   Panorama_mode;
-    ushort   Panorama_frameNum;
-  } libraw_olympus_makernotes_t;
-
-  typedef struct
-  {
-    /* Compression:
-     34826 (Panasonic RAW 2): LEICA DIGILUX 2;
-     34828 (Panasonic RAW 3): LEICA D-LUX 3; LEICA V-LUX 1; Panasonic DMC-LX1;
-     Panasonic DMC-LX2; Panasonic DMC-FZ30; Panasonic DMC-FZ50; 34830 (not in
-     exiftool): LEICA DIGILUX 3; Panasonic DMC-L1; 34316 (Panasonic RAW 1):
-     others (LEICA, Panasonic, YUNEEC);
-    */
-    ushort   Compression;
-    ushort   BlackLevelDim;
-    float    BlackLevel[8];
-    unsigned Multishot; /* 0 is Off, 65536 is Pixel Shift */
-    float    gamma;
-    int      HighISOMultiplier[3]; /* 0->R, 1->G, 2->B */
-    short    FocusStepNear;
-    short    FocusStepCount;
-    unsigned ZoomPosition;
-    unsigned LensManufacturer;
-  } libraw_panasonic_makernotes_t;
-
-  typedef struct
-  {
-    uchar    DriveMode[4];
-    ushort   FocusMode[2];
-    ushort   AFPointSelected[2];
-    ushort   AFPointSelected_Area;
-    int      AFPointsInFocus_version;
-    unsigned AFPointsInFocus;
-    ushort   FocusPosition;
-    short    AFAdjustment;
-    uchar    AFPointMode;
-    uchar    MultiExposure; /* last bit is not "1" if ME is not used */
-    ushort   Quality; /* 4 is raw, 7 is raw w/ pixel shift, 8 is raw w/ dynamic
-                       pixel shift */
-  } libraw_pentax_makernotes_t;
-
-  typedef struct
-  {
-    ushort   AFStatus;
-    unsigned AFAreaXPosition[2];
-    unsigned AFAreaYPosition[2];
-    ushort   AFAreaMode;
-    unsigned SensorWidth;
-    unsigned SensorHeight;
-    unsigned CroppedImageWidth;
-    unsigned CroppedImageHeight;
-    ushort   WideAdapter;
-    ushort   CropMode;
-    ushort   NDFilter;
-    ushort   AutoBracketing;
-    ushort   MacroMode;
-    ushort   FlashMode;
-    double   FlashExposureComp;
-    double   ManualFlashOutput;
-  } libraw_ricoh_makernotes_t;
-
-  typedef struct
-  {
-    unsigned ImageSizeFull[4];
-    unsigned ImageSizeCrop[4];
-    int      ColorSpace[2];
-    unsigned key[11];
-    double   DigitalGain; /* PostAEGain, digital stretch */
-    int      DeviceType;
-    char     LensFirmware[32];
-  } libraw_samsung_makernotes_t;
-
-  typedef struct
-  {
-    ushort BlackLevelTop;
-    ushort BlackLevelBottom;
-    short offset_left, offset_top; /* KDC files, negative values or zeros */
-    ushort clipBlack, clipWhite;   /* valid for P712, P850, P880 */
-    float romm_camDaylight[3][3];
-    float romm_camTungsten[3][3];
-    float romm_camFluorescent[3][3];
-    float romm_camFlash[3][3];
-    float romm_camCustom[3][3];
-    float romm_camAuto[3][3];
-    ushort val018percent, val100percent, val170percent;
-    short MakerNoteKodak8a;
-    float ISOCalibrationGain;
-    float AnalogISO;
-  } libraw_kodak_makernotes_t;
-
-  typedef struct {
-    char Software[64];        // tag 0x0203
-    char SystemType[64];      // tag 0x0204
-    char FirmwareString[256]; // tag 0x0301
-    char SystemModel[64];
-  } libraw_p1_makernotes_t;
-
-  typedef struct
-  {
-/* afdata:
-  0x0010 CameraInfo
-  0x2020 AFPointsUsed
-  0x2022 FocalPlaneAFPointsUsed
-  0x202a Tag202a
-  0x940e AFInfo
-*/
-    ushort   CameraType;                      // init in 0xffff
-    uchar    Sony0x9400_version; /* 0 if not found/deciphered,
-                                    0xa, 0xb, 0xc following exiftool convention */
-    uchar    Sony0x9400_ReleaseMode2;
-    unsigned Sony0x9400_SequenceImageNumber;
-    uchar    Sony0x9400_SequenceLength1;
-    unsigned Sony0x9400_SequenceFileNumber;
-    uchar    Sony0x9400_SequenceLength2;
-    uint8_t  AFAreaModeSetting;               // init in 0xff; +
-    uint16_t AFAreaMode;                      // init in 0xffff; +
-    ushort   FlexibleSpotPosition[2];         // init in (0xffff, 0xffff)
-    uint8_t  AFPointSelected;                 // init in 0xff
-    uint8_t  AFPointSelected_0x201e;          // init in 0xff
-    short    nAFPointsUsed;
-    uint8_t  AFPointsUsed[10];
-    uint8_t  AFTracking;                      // init in 0xff
-    uint8_t  AFType;
-    ushort   FocusLocation[4];
-    ushort   FocusPosition;                    // init in 0xffff
-    int8_t   AFMicroAdjValue;                  // init in 0x7f
-    int8_t   AFMicroAdjOn;                     // init in -1
-    uchar    AFMicroAdjRegisteredLenses;       // init in 0xff
-    ushort   VariableLowPassFilter;
-    unsigned LongExposureNoiseReduction;      // init in 0xffffffff
-    ushort   HighISONoiseReduction;           // init in 0xffff
-    ushort   HDR[2];
-    ushort   group2010;
-    ushort   group9050;
-    
-    ushort   len_group9050; // currently, for debugging only
-    
-    ushort   real_iso_offset;                 // init in 0xffff
-    ushort   MeteringMode_offset;
-    ushort   ExposureProgram_offset;
-    ushort   ReleaseMode2_offset;
-    unsigned MinoltaCamID;                    // init in 0xffffffff
-    float    firmware;
-    ushort   ImageCount3_offset;              // init in 0xffff
-    unsigned ImageCount3;
-    unsigned ElectronicFrontCurtainShutter;   // init in 0xffffffff
-    ushort   MeteringMode2;
-    char     SonyDateTime[20];
-    unsigned ShotNumberSincePowerUp;
-    ushort   PixelShiftGroupPrefix;
-    unsigned PixelShiftGroupID;
-    char     nShotsInPixelShiftGroup;
-    char     numInPixelShiftGroup; /* '0' if ARQ, first shot in the group has '1'
-                                  here */
-    ushort   prd_ImageHeight, prd_ImageWidth;
-    ushort   prd_Total_bps;
-    ushort   prd_Active_bps;
-    ushort   prd_StorageMethod; /* 82 -> Padded; 89 -> Linear */
-    ushort   prd_BayerPattern;  /* 0 -> not valid; 1 -> RGGB; 4 -> GBRG */
-
-    ushort   SonyRawFileType; /* init in 0xffff
-                               valid for ARW 2.0 and up (FileFormat >= 3000)
-                               takes precedence over RAWFileType and Quality:
-                               0  for uncompressed 14-bit raw
-                               1  for uncompressed 12-bit raw
-                               2  for compressed raw (lossy)
-                               3  for lossless compressed raw
-                               4  for lossless compressed raw v.2 (ILCE-1)
-                            */
-    ushort RAWFileType;     /* init in 0xffff
-                               takes precedence over Quality
-                               0 for compressed raw,
-                               1 for uncompressed;
-                               2 lossless compressed raw v.2
-                            */
-    ushort RawSizeType;     /* init in 0xffff
-                               1 - large,
-                               2 - small,
-                               3 - medium
-                            */
-    unsigned Quality;       /* init in 0xffffffff
-                               0 or 6 for raw, 7 or 8 for compressed raw */
-    ushort FileFormat;      /*  1000 SR2
-                                2000 ARW 1.0
-                                3000 ARW 2.0
-                                3100 ARW 2.1
-                                3200 ARW 2.2
-                                3300 ARW 2.3
-                                3310 ARW 2.3.1
-                                3320 ARW 2.3.2
-                                3330 ARW 2.3.3
-                                3350 ARW 2.3.5
-                                4000 ARW 4.0
-                                4010 ARW 4.0.1
-                             */
-    char MetaVersion [16];
-    float AspectRatio;
-  } libraw_sony_info_t;
-
-  typedef struct
-  {
-    ushort curve[0x10000];
-    unsigned cblack[LIBRAW_CBLACK_SIZE];
-    unsigned black;
-    unsigned data_maximum;
-    unsigned maximum;
-
-// Canon (SpecularWhiteLevel)
-// Kodak (14N, 14nx, SLR/c/n, DCS720X, DCS760C, DCS760M, ProBack, ProBack645, P712, P880, P850)
-// Olympus, except:
-//	C5050Z, C5060WZ, C7070WZ, C8080WZ
-//	SP350, SP500UZ, SP510UZ, SP565UZ
-//	E-10, E-20
-//	E-300, E-330, E-400, E-410, E-420, E-450, E-500, E-510, E-520
-//	E-1, E-3
-//	XZ-1
-// Panasonic
-// Pentax
-// Sony
-// and aliases of the above
-// DNG
-    long linear_max[4];
-
-    float fmaximum;
-    float fnorm;
-    ushort white[8][8];
-    float cam_mul[4];
-    float pre_mul[4];
-    float cmatrix[3][4];
-    float ccm[3][4];
-    float rgb_cam[3][4];
-    float cam_xyz[4][3];
-    struct ph1_t phase_one_data;
-    float flash_used;
-    float canon_ev;
-    char model2[64];
-    char UniqueCameraModel[64];
-    char LocalizedCameraModel[64];
-    char ImageUniqueID[64];
-    char RawDataUniqueID[17];
-    char OriginalRawFileName[64];
-    void *profile;
-    unsigned profile_length;
-    unsigned black_stat[8];
-    libraw_dng_color_t dng_color[2];
-    libraw_dng_levels_t dng_levels;
-    int WB_Coeffs[256][4];    /* R, G1, B, G2 coeffs */
-    float WBCT_Coeffs[64][5]; /* CCT, than R, G1, B, G2 coeffs */
-    int as_shot_wb_applied;
-    libraw_P1_color_t P1_color[2];
-    unsigned raw_bps; /* for Phase One: raw format; For other cameras: bits per pixel (copy of tiff_bps in most cases) */
-                      /* Phase One raw format values, makernotes tag 0x010e:
-                      0    Name unknown
-                      1    "RAW 1"
-                      2    "RAW 2"
-                      3    "IIQ L" (IIQ L14)
-                      4    Never seen
-                      5    "IIQ S"
-                      6    "IIQ Sv2" (S14 / S14+)
-                      7    Never seen
-                      8    "IIQ L16" (IIQ L16EX / IIQ L16)
-                      */
-	int ExifColorSpace;
-  } libraw_colordata_t;
-
-  typedef struct
-  {
-    enum LibRaw_thumbnail_formats tformat;
-    ushort twidth, theight;
-    unsigned tlength;
-    int tcolors;
-    char *thumb;
-  } libraw_thumbnail_t;
-
-  typedef struct
-  {
-	enum LibRaw_internal_thumbnail_formats tformat;
-    ushort twidth, theight, tflip;
-    unsigned tlength;
-	unsigned tmisc;
-	INT64 toffset;
-  }libraw_thumbnail_item_t;
-
-  typedef struct
-  {
-	  int thumbcount;
-	  libraw_thumbnail_item_t thumblist[LIBRAW_THUMBNAIL_MAXCOUNT];
-  } libraw_thumbnail_list_t;
-
-  typedef struct
-  {
-    float latitude[3];     /* Deg,min,sec */
-    float longitude[3];    /* Deg,min,sec */
-    float gpstimestamp[3]; /* Deg,min,sec */
-    float altitude;
-    char  altref, latref, longref, gpsstatus;
-    char  gpsparsed;
-  } libraw_gps_info_t;
-
-  typedef struct
-  {
-    float iso_speed;
-    float shutter;
-    float aperture;
-    float focal_len;
-    time_t timestamp;
-    unsigned shot_order;
-    unsigned gpsdata[32];
-    libraw_gps_info_t parsed_gps;
-    char desc[512], artist[64];
-    float analogbalance[4];
-  } libraw_imgother_t;
-
-  typedef struct
-  {
-      unsigned AFInfoData_tag;
-      short    AFInfoData_order;
-      unsigned AFInfoData_version;
-      unsigned AFInfoData_length;
-      uchar   *AFInfoData;
-  } libraw_afinfo_item_t;
-
-  typedef struct {
-    float FlashEC;
-    float FlashGN;
-    float CameraTemperature;
-    float SensorTemperature;
-    float SensorTemperature2;
-    float LensTemperature;
-    float AmbientTemperature;
-    float BatteryTemperature;
-    float exifAmbientTemperature;
-    float exifHumidity;
-    float exifPressure;
-    float exifWaterDepth;
-    float exifAcceleration;
-    float exifCameraElevationAngle;
-    float real_ISO;
-    float exifExposureIndex;
-    ushort ColorSpace;
-    char firmware[128];
-    float ExposureCalibrationShift;
-    libraw_afinfo_item_t afdata[LIBRAW_AFDATA_MAXCOUNT];
-    int afcount;
-  } libraw_metadata_common_t;
-
-  typedef struct
-  {
-    unsigned greybox[4];   /* -A  x1 y1 x2 y2 */
-    unsigned cropbox[4];   /* -B x1 y1 x2 y2 */
-    double aber[4];        /* -C */
-    double gamm[6];        /* -g */
-    float user_mul[4];     /* -r mul0 mul1 mul2 mul3 */
-    float bright;          /* -b */
-    float threshold;       /* -n */
-    int half_size;         /* -h */
-    int four_color_rgb;    /* -f */
-    int highlight;         /* -H */
-    int use_auto_wb;       /* -a */
-    int use_camera_wb;     /* -w */
-    int use_camera_matrix; /* +M/-M */
-    int output_color;      /* -o */
-    char *output_profile;  /* -o */
-    char *camera_profile;  /* -p */
-    char *bad_pixels;      /* -P */
-    char *dark_frame;      /* -K */
-    int output_bps;        /* -4 */
-    int output_tiff;       /* -T */
-    int output_flags;
-    int user_flip;         /* -t */
-    int user_qual;         /* -q */
-    int user_black;        /* -k */
-    int user_cblack[4];
-    int user_sat;          /* -S */
-    int med_passes;        /* -m */
-    float auto_bright_thr;
-    float adjust_maximum_thr;
-    int no_auto_bright;    /* -W */
-    int use_fuji_rotate;   /* -j */
-	int use_p1_correction;
-    int green_matching;
-    /* DCB parameters */
-    int dcb_iterations;
-    int dcb_enhance_fl;
-    int fbdd_noiserd;
-    int exp_correc;
-    float exp_shift;
-    float exp_preser;
-    /* Disable Auto-scale */
-    int no_auto_scale;
-    /* Disable intepolation */
-    int no_interpolation;
-  } libraw_output_params_t;
-
-  typedef struct  
-  {
-      /* Raw speed */
-      int use_rawspeed;
-      /* DNG SDK */
-      int use_dngsdk;
-      unsigned options;
-      unsigned shot_select;  /* -s */
-      unsigned specials;
-      unsigned max_raw_memory_mb;
-      int sony_arw2_posterization_thr;
-      /* Nikon Coolscan */
-      float coolscan_nef_gamma;
-      char p4shot_order[5];
-      /* Custom camera list */
-      char **custom_camera_strings;
-  }libraw_raw_unpack_params_t;
-
-  typedef struct
-  {
-    /* really allocated bitmap */
-    void *raw_alloc;
-    /* alias to single_channel variant */
-    ushort *raw_image;
-    /* alias to 4-channel variant */
-    ushort (*color4_image)[4];
-    /* alias to 3-color variand decoded by RawSpeed */
-    ushort (*color3_image)[3];
-    /* float bayer */
-    float *float_image;
-    /* float 3-component */
-    float (*float3_image)[3];
-    /* float 4-component */
-    float (*float4_image)[4];
-
-    /* Phase One black level data; */
-    short (*ph1_cblack)[2];
-    short (*ph1_rblack)[2];
-    /* save color and sizes here, too.... */
-    libraw_iparams_t iparams;
-    libraw_image_sizes_t sizes;
-    libraw_internal_output_params_t ioparams;
-    libraw_colordata_t color;
-  } libraw_rawdata_t;
-
-  typedef struct
-  {
-    unsigned long long LensID;
-    char Lens[128];
-    ushort LensFormat; /* to characterize the image circle the lens covers */
-    ushort LensMount;  /* 'male', lens itself */
-    unsigned long long CamID;
-    ushort CameraFormat; /* some of the sensor formats */
-    ushort CameraMount;  /* 'female', body throat */
-    char   body[64];
-    short  FocalType; /* -1/0 is unknown; 1 is fixed focal; 2 is zoom */
-    char   LensFeatures_pre[16], LensFeatures_suf[16];
-    float  MinFocal, MaxFocal;
-    float  MaxAp4MinFocal, MaxAp4MaxFocal, MinAp4MinFocal, MinAp4MaxFocal;
-    float  MaxAp, MinAp;
-    float  CurFocal, CurAp;
-    float  MaxAp4CurFocal, MinAp4CurFocal;
-    float  MinFocusDistance;
-    float  FocusRangeIndex;
-    float  LensFStops;
-    unsigned long long TeleconverterID;
-    char Teleconverter[128];
-    unsigned long long AdapterID;
-    char Adapter[128];
-    unsigned long long AttachmentID;
-    char   Attachment[128];
-    ushort FocalUnits;
-    float  FocalLengthIn35mmFormat;
-  } libraw_makernotes_lens_t;
-
-  typedef struct
-  {
-    float EffectiveMaxAp;
-    uchar LensIDNumber, LensFStops, MCUVersion, LensType;
-  } libraw_nikonlens_t;
-
-  typedef struct
-  {
-    float MinFocal, MaxFocal, MaxAp4MinFocal, MaxAp4MaxFocal;
-  } libraw_dnglens_t;
-
-  typedef struct
-  {
-    float MinFocal, MaxFocal, MaxAp4MinFocal, MaxAp4MaxFocal, EXIF_MaxAp;
-    char LensMake[128], Lens[128], LensSerial[128], InternalLensSerial[128];
-    ushort FocalLengthIn35mmFormat;
-    libraw_nikonlens_t nikon;
-    libraw_dnglens_t dng;
-    libraw_makernotes_lens_t makernotes;
-  } libraw_lensinfo_t;
-
-  typedef struct
-  {
-    libraw_canon_makernotes_t canon;
-    libraw_nikon_makernotes_t nikon;
-    libraw_hasselblad_makernotes_t hasselblad;
-    libraw_fuji_info_t fuji;
-    libraw_olympus_makernotes_t olympus;
-    libraw_sony_info_t sony;
-    libraw_kodak_makernotes_t kodak;
-    libraw_panasonic_makernotes_t panasonic;
-    libraw_pentax_makernotes_t pentax;
-    libraw_p1_makernotes_t phaseone;
-    libraw_ricoh_makernotes_t ricoh;
-    libraw_samsung_makernotes_t samsung;
-    libraw_metadata_common_t common;
-  } libraw_makernotes_t;
-
-  typedef struct
-  {
-    short DriveMode;
-    short FocusMode;
-    short MeteringMode;
-    short AFPoint;
-    short ExposureMode;
-    short ExposureProgram;
-    short ImageStabilization;
-    char BodySerial[64];
-    char InternalBodySerial[64]; /* this may be PCB or sensor serial, depends on
-                                    make/model */
-  } libraw_shootinginfo_t;
-
-  typedef struct
-  {
-    unsigned fsize;
-    ushort rw, rh;
-    uchar lm, tm, rm, bm;
-    ushort lf;
-    uchar cf, max, flags;
-    char t_make[10], t_model[20];
-    ushort offset;
-  } libraw_custom_camera_t;
-
-  typedef struct
-  {
-    ushort (*image)[4];
-    libraw_image_sizes_t sizes;
-    libraw_iparams_t idata;
-    libraw_lensinfo_t lens;
-    libraw_makernotes_t makernotes;
-    libraw_shootinginfo_t shootinginfo;
-    libraw_output_params_t params;
-    libraw_raw_unpack_params_t rawparams;
-    unsigned int progress_flags;
-    unsigned int process_warnings;
-    libraw_colordata_t color;
-    libraw_imgother_t other;
-    libraw_thumbnail_t thumbnail;
-	libraw_thumbnail_list_t thumbs_list;
-    libraw_rawdata_t rawdata;
-    void *parent_class;
-  } libraw_data_t;
-
-  struct fuji_q_table
-  {
-    int8_t *q_table; /* quantization table */
-    int raw_bits;
-    int total_values;
-    int max_grad;    // sdp val
-    int q_grad_mult; // quant_gradient multiplier
-    int q_base;
-  };
-
-  struct fuji_compressed_params
-  {
-    struct fuji_q_table qt[4];
-    void *buf;
-    int max_bits;
-    int min_value;
-    int max_value;   // q_point[4]
-    ushort line_width;
-  };
-
-#ifdef __cplusplus
-}
-#endif
-
-#if defined (LIBRAW_LIBRARY_BUILD) && defined(__cplusplus)
-
-class libraw_static_table_t
-{
-public:
-    libraw_static_table_t(const int *a, const unsigned s): data(a),_size(s) {}
-    libraw_static_table_t(): data(0),_size(0){}
-    libraw_static_table_t(const libraw_static_table_t& s) : data(s.data), _size(s._size) {}
-    unsigned size() const { return _size; }
-    libraw_static_table_t& operator = (const libraw_static_table_t& s)
-    {
-        _size = s._size;
-        data = s.data;
-        return *this;
-    }
-    int operator [] (unsigned idx) const
-    {
-        if (idx < _size) return data[idx];
-        if(_size>0 && data) return data[0];
-        return 0;
-    }
-private:
-    const int *data;
-    unsigned _size;
-};
-
-#endif
-
-
-/* Byte order */
-#if defined(__LITTLE_ENDIAN__)
-#define LibRawBigEndian 0
-
-#elif defined(__BIG_ENDIAN__)
-#define LibRawBigEndian 1
-
-#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-#define LibRawBigEndian 0
-
-#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-#define LibRawBigEndian 1
-
-#elif defined(__POWERPC__)
-#define LibRawBigEndian 1
-
-#elif defined(__INTEL__)
-#define LibRawBigEndian 0
-
-#elif defined(_M_IX86) || defined(__i386__)
-#define LibRawBigEndian 0
-
-#elif defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
-#define LibRawBigEndian 0
-
-#elif defined(_ARM_)
-#define LibRawBigEndian 0
-
-#else
-#ifndef qXCodeRez
-#error Unable to figure out byte order.
-#endif
-#endif
-
-#endif
diff --git a/includes/libraw_version.h b/includes/libraw_version.h
deleted file mode 100644
index 6733a02..0000000
--- a/includes/libraw_version.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- C++ -*-
- * File: libraw_version.h
- * Copyright 2008-2024 LibRaw LLC (info@libraw.org)
- * Created: Mon Sept  8, 2008
- *
- * LibRaw C++ interface
- *
-
-LibRaw is free software; you can redistribute it and/or modify
-it under the terms of the one of two licenses as you choose:
-
-1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1
-(See the file LICENSE.LGPL provided in LibRaw distribution archive for details).
-
-2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-(See the file LICENSE.CDDL provided in LibRaw distribution archive for details).
-
- */
-
-#ifndef __VERSION_H
-#define __VERSION_H
-
-#define LIBRAW_MAJOR_VERSION 0
-#define LIBRAW_MINOR_VERSION 22
-#define LIBRAW_PATCH_VERSION 0
-#define LIBRAW_VERSION_TAIL Devel202403
-
-#define LIBRAW_SHLIB_CURRENT 24
-#define LIBRAW_SHLIB_REVISION 0
-#define LIBRAW_SHLIB_AGE 0
-
-#define _LIBRAW_VERSION_MAKE(a, b, c, d) #a "." #b "." #c "-" #d
-#define LIBRAW_VERSION_MAKE(a, b, c, d) _LIBRAW_VERSION_MAKE(a, b, c, d)
-
-#define LIBRAW_VERSION_STR                                                     \
-  LIBRAW_VERSION_MAKE(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION,              \
-                      LIBRAW_PATCH_VERSION, LIBRAW_VERSION_TAIL)
-
-#define LIBRAW_MAKE_VERSION(major, minor, patch)                               \
-  (((major) << 16) | ((minor) << 8) | (patch))
-
-#define LIBRAW_VERSION                                                         \
-  LIBRAW_MAKE_VERSION(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION,              \
-                      LIBRAW_PATCH_VERSION)
-
-#define LIBRAW_CHECK_VERSION(major, minor, patch)                              \
-  (LibRaw::versionNumber() >= LIBRAW_MAKE_VERSION(major, minor, patch))
-
-#define LIBRAW_RUNTIME_CHECK_VERSION_EXACT()                                   \
-  ((LibRaw::versionNumber() & 0xffff00) ==                                     \
-   LIBRAW_MAKE_VERSION(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION, 0))
-
-#define LIBRAW_RUNTIME_CHECK_VERSION_NOTLESS()                                 \
-  ((LibRaw::versionNumber() & 0xffff00) >=                                     \
-   LIBRAW_MAKE_VERSION(LIBRAW_MAJOR_VERSION, LIBRAW_MINOR_VERSION, 0))
-
-#define LIBRAW_COMPILE_CHECK_VERSION(major, minor)                             \
-  (LIBRAW_MAKE_VERSION(major, minor, 0) == (LIBRAW_VERSION & 0xffff00))
-
-#define LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(major, minor)                     \
-  (LIBRAW_MAKE_VERSION(major, minor, 0) <= (LIBRAW_VERSION & 0xffff00))
-
-#endif
diff --git a/includes/meson.build b/includes/meson.build
deleted file mode 100644
index 3d6fa1c..0000000
--- a/includes/meson.build
+++ /dev/null
@@ -1,8 +0,0 @@
-lcms2_headers = files(
-  'lcms2.h',
-  'lcms2_plugin.h',
-)
-
-install_headers(lcms2_headers)
-
-inc_dirs = include_directories('.')
diff --git a/index.js b/index.js
deleted file mode 100644
index 4c8f3c8..0000000
--- a/index.js
+++ /dev/null
@@ -1,73 +0,0 @@
-export default class LibRaw {
-	constructor() {
-		this.worker = new Worker(new URL('./worker.js', import.meta.url), {type:"module"});
-		this.waitForWorker = false;
-		this.worker.onmessage = ({data}) => {
-			if(this.waitForWorker) {
-				let {"return": ret, "throw": thr} = this.waitForWorker;
-				this.waitForWorker = false;
-				if(data?.error) {
-					thr(data.error);
-				} else {
-					ret(data?.out);
-				}
-			}
-		};
-	}
-	
-	async runFn(fn, ...args) {
-		let prom = new Promise((res, err)=>{
-			this.waitForWorker = {
-				error: err,
-				return: res,
-			};
-		});
-		this.worker.postMessage({fn, args}, args.map(a=>{
-			if([ArrayBuffer, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array].some(b=>a instanceof b)) { // Transfer buffer
-				return a.buffer;
-			}
-		}).filter(a=>a));
-		return await prom;
-	}
-	/**
-	 * Open/parse the RAW data with optional settings
-	 */
-	async open(buffer, settings) {
-		return await this.runFn('open', buffer, settings);
-	}
-
-	/**
-	 * Retrieve metadata
-	 */
-	async metadata(fullOutput) {
-		let metadata = await this.runFn('metadata', !!fullOutput);
-		// Example: convert numeric thumb_format to a string
-		if (metadata?.hasOwnProperty('thumb_format')) {
-			metadata.thumb_format = [
-				'unknown',
-				'jpeg',
-				'bitmap',
-				'bitmap16',
-				'layer',
-				'rollei',
-				'h265'
-			][metadata.thumb_format] || 'unknown';
-		}
-		// Trim desc if present
-		if (metadata?.hasOwnProperty('desc')) {
-			metadata.desc = String(metadata.desc).trim();
-		}
-		if (metadata?.hasOwnProperty('timestamp')) {
-			metadata.timestamp = new Date(metadata.timestamp);
-		}
-		return metadata;
-	}
-
-	/**
-	 * Retrieve processed image data (synchronously from the perspective of C++,
-	 * but we've already awaited the module & instance.)
-	 */
-	async imageData() {
-		return await this.runFn('imageData');
-	}
-}
\ No newline at end of file
diff --git a/libraries/LibRawSource b/libraries/LibRawSource
new file mode 160000
index 0000000..36fa8bb
--- /dev/null
+++ b/libraries/LibRawSource
@@ -0,0 +1 @@
+Subproject commit 36fa8bb9c7e009a46bc293ba9e5fb174bf9eb0fb
diff --git a/libraries/lcms2 b/libraries/lcms2
new file mode 160000
index 0000000..7d0d7ac
--- /dev/null
+++ b/libraries/lcms2
@@ -0,0 +1 @@
+Subproject commit 7d0d7ac2b16b6ceddb10abfda4bbb1194ebd8a41
diff --git a/libraw.js b/libraw.js
deleted file mode 100644
index 5d12eff..0000000
--- a/libraw.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var Module = (() => {
-  var _scriptName = import.meta.url;
-  
-  return (
-async function(moduleArg = {}) {
-  var moduleRtn;
-
-var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";var ENVIRONMENT_IS_PTHREAD=ENVIRONMENT_IS_WORKER&&self.name?.startsWith("em-pthread");var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}if(ENVIRONMENT_IS_PTHREAD){var wasmModuleReceived;var initializedJS=false;function threadPrintErr(...args){var text=args.join(" ");console.error(text)}if(!Module["printErr"])err=threadPrintErr;function threadAlert(...args){var text=args.join(" ");postMessage({cmd:"alert",text,threadId:_pthread_self()})}self.alert=threadAlert;self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{var msgData=e["data"];var cmd=msgData.cmd;if(cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{postMessage({cmd:"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};for(const handler of msgData.handlers){if(!Module[handler]||Module[handler].proxy){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler,args})};if(handler=="print")out=Module[handler];if(handler=="printErr")err=Module[handler]}}wasmMemory=msgData.wasmMemory;updateMemoryViews();wasmModuleReceived(msgData.wasmModule)}else if(cmd==="run"){establishStackSpace(msgData.pthread_ptr);__emscripten_thread_init(msgData.pthread_ptr,0,0,1,0,0);PThread.receiveObjectTransfer(msgData);PThread.threadInitTLS();__emscripten_thread_mailbox_await(msgData.pthread_ptr);if(!initializedJS){__embind_initialize_bindings();initializedJS=true}try{invokeEntryPoint(msgData.start_routine,msgData.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(msgData.target==="setimmediate"){}else if(cmd==="checkMailbox"){if(initializedJS){checkMailbox()}}else if(cmd){err(`worker: received unknown command ${cmd}`);err(msgData)}}catch(ex){__emscripten_thread_crashed();throw ex}}self.onmessage=handleMessage}function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}if(!ENVIRONMENT_IS_PTHREAD){if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||268435456;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true})}updateMemoryViews()}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return startWorker(Module);if(!Module["noFSInit"]&&!FS.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){var f="libraw.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("libraw.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){assignWasmImports();return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;registerTLSInit(wasmExports["Ea"]);wasmTable=wasmExports["Da"];addOnInit(wasmExports["xa"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"],result["module"])}var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(ENVIRONMENT_IS_PTHREAD){return new Promise(resolve=>{wasmModuleReceived=module=>{var instance=new WebAssembly.Instance(module,getWasmImports());resolve(receiveInstance(instance,module))}})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,pthread_ptr:threadParams.pthread_ptr};worker.postMessage(msg,threadParams.transferList);return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);var proxyToMainThread=(funcIndex,emAsmAddr,sync,...callArgs)=>{var serializedNumCallArgs=callArgs.length*2;var sp=stackSave();var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,0,returnCode);_exit(returnCode)}var exitJS=(status,implicit)=>{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)};var _exit=exitJS;var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(!ENVIRONMENT_IS_PTHREAD){PThread.initMainThread()}},initMainThread(){addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads={}},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d.cmd;if(d.targetThread&&d.targetThread!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d.transferList)}else{err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d.targetThread}, but that thread no longer exists!`)}return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d.thread)}else if(cmd==="loaded"){worker.loaded=true;onFinishedLoading(worker)}else if(cmd==="alert"){alert(`Thread ${d.threadId}: ${d.text}`)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d.handler](...d.args)}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message="worker sent an error!";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.propertyIsEnumerable(handler)){handlers.push(handler)}}worker.postMessage({cmd:"load",handlers,wasmMemory,wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){onMaybeReady()},allocateUnusedWorker(){var worker;worker=new Worker(new URL("libraw.js",import.meta.url),{type:"module",name:"em-pthread"});PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=pthread_ptr=>{updateMemoryViews();var stackHigh=GROWABLE_HEAP_U32()[pthread_ptr+52>>2];var stackSize=GROWABLE_HEAP_U32()[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{runtimeKeepaliveCounter=0;noExitRuntime=0;var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){EXITSTATUS=result}else{__emscripten_thread_exit(result)}}finish(result)};var noExitRuntime=Module["noExitRuntime"]||true;var registerTLSInit=tlsInitFunc=>PThread.tlsInitFunctions.push(tlsInitFunc);var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof ArrayBuffer?heapOrArray.subarray(idx,endPtr):heapOrArray.slice(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):"";var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(ptr);return ___cxa_get_exception_ptr(ptr)};var exceptionLast=0;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var syscallGetVarargI=()=>{var ret=GROWABLE_HEAP_I32()[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>view=>view.set(crypto.getRandomValues(new Uint8Array(view.byteLength)));var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url).then(processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,GROWABLE_HEAP_I8(),ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){GROWABLE_HEAP_I32()[buf>>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=stat.mode;GROWABLE_HEAP_U32()[buf+8>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+12>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+16>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);GROWABLE_HEAP_I32()[buf+32>>2]=4096;GROWABLE_HEAP_I32()[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));GROWABLE_HEAP_U32()[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));GROWABLE_HEAP_U32()[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));GROWABLE_HEAP_U32()[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){GROWABLE_HEAP_I32()[buf+4>>2]=stats.bsize;GROWABLE_HEAP_I32()[buf+40>>2]=stats.bsize;GROWABLE_HEAP_I32()[buf+8>>2]=stats.blocks;GROWABLE_HEAP_I32()[buf+12>>2]=stats.bfree;GROWABLE_HEAP_I32()[buf+16>>2]=stats.bavail;GROWABLE_HEAP_I32()[buf+20>>2]=stats.files;GROWABLE_HEAP_I32()[buf+24>>2]=stats.ffree;GROWABLE_HEAP_I32()[buf+28>>2]=stats.fsid;GROWABLE_HEAP_I32()[buf+44>>2]=stats.flags;GROWABLE_HEAP_I32()[buf+36>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;GROWABLE_HEAP_I16()[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,0,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();GROWABLE_HEAP_I32()[argp>>2]=termios.c_iflag||0;GROWABLE_HEAP_I32()[argp+4>>2]=termios.c_oflag||0;GROWABLE_HEAP_I32()[argp+8>>2]=termios.c_cflag||0;GROWABLE_HEAP_I32()[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){GROWABLE_HEAP_I8()[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=GROWABLE_HEAP_I32()[argp>>2];var c_oflag=GROWABLE_HEAP_I32()[argp+4>>2];var c_cflag=GROWABLE_HEAP_I32()[argp+8>>2];var c_lflag=GROWABLE_HEAP_I32()[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(GROWABLE_HEAP_I8()[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();GROWABLE_HEAP_I32()[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();GROWABLE_HEAP_I16()[argp>>1]=winsize[0];GROWABLE_HEAP_I16()[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,0,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,0,1,path);try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,0,1,dirfd,path,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(base);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(GROWABLE_HEAP_I32(),pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(GROWABLE_HEAP_I32(),waitingAsync>>2,1)}};var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(__emscripten_check_mailbox)}};var __emscripten_notify_mailbox_postmessage=(targetThread,currThreadId)=>{if(targetThread==currThreadId){setTimeout(checkMailbox)}else if(ENVIRONMENT_IS_PTHREAD){postMessage({targetThread,cmd:"checkMailbox"})}else{var worker=PThread.pthreads[targetThread];if(!worker){return}worker.postMessage({cmd:"checkMailbox"})}};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(funcIndex,emAsmAddr,callingThread,numCallArgs,args)=>{numCallArgs/=2;proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{noExitRuntime=false;runtimeKeepaliveCounter=0};var __emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({cmd:"cleanupThread",thread})};var __emscripten_thread_set_strongref=thread=>{};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){GROWABLE_HEAP_U32()[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");return emval_returnValue(returnType,destructorsRef,handle)};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_new_array=()=>Emval.toHandle([]);var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var __emval_typeof=handle=>{handle=Emval.toValue(handle);return Emval.toHandle(typeof handle)};function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);GROWABLE_HEAP_I32()[tmPtr>>2]=date.getUTCSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getUTCMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getUTCHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getUTCDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getUTCMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getUTCFullYear()-1900;GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);GROWABLE_HEAP_I32()[tmPtr>>2]=date.getSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getFullYear()-1900;GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday;GROWABLE_HEAP_I32()[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;GROWABLE_HEAP_I32()[tmPtr+32>>2]=dst}var __mktime_js=function(tmPtr){var ret=(()=>{var date=new Date(GROWABLE_HEAP_I32()[tmPtr+20>>2]+1900,GROWABLE_HEAP_I32()[tmPtr+16>>2],GROWABLE_HEAP_I32()[tmPtr+12>>2],GROWABLE_HEAP_I32()[tmPtr+8>>2],GROWABLE_HEAP_I32()[tmPtr+4>>2],GROWABLE_HEAP_I32()[tmPtr>>2],0);var dst=GROWABLE_HEAP_I32()[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){GROWABLE_HEAP_I32()[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}GROWABLE_HEAP_I32()[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;GROWABLE_HEAP_I32()[tmPtr+28>>2]=yday;GROWABLE_HEAP_I32()[tmPtr>>2]=date.getSeconds();GROWABLE_HEAP_I32()[tmPtr+4>>2]=date.getMinutes();GROWABLE_HEAP_I32()[tmPtr+8>>2]=date.getHours();GROWABLE_HEAP_I32()[tmPtr+12>>2]=date.getDate();GROWABLE_HEAP_I32()[tmPtr+16>>2]=date.getMonth();GROWABLE_HEAP_I32()[tmPtr+20>>2]=date.getYear();var timeMs=date.getTime();if(isNaN(timeMs)){return-1}return timeMs/1e3})();return BigInt(ret)};var timers={};var _emscripten_get_now=()=>performance.timeOrigin+performance.now();function __setitimer_js(which,timeout_ms){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,0,1,which,timeout_ms);if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetDate.now();var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw"unwind"};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,0,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,0,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(12,0,1,fd,offset,whence,newOffset);offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_U32()[iov+4>>2];iov+=8;var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}PThread.init();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack="";embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var proxiedFunctionTable=[_proc_exit,exitOnMainThread,___syscall_fcntl64,___syscall_ioctl,___syscall_openat,___syscall_rmdir,___syscall_unlinkat,__setitimer_js,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];var wasmImports;function assignWasmImports(){wasmImports={f:___assert_fail,R:___cxa_begin_catch,c:___cxa_find_matching_catch_2,m:___cxa_find_matching_catch_3,e:___cxa_throw,l:___resumeException,A:___syscall_fcntl64,ia:___syscall_ioctl,ja:___syscall_openat,V:___syscall_rmdir,W:___syscall_unlinkat,S:__abort_js,D:__embind_register_bigint,qa:__embind_register_bool,E:__embind_register_class,B:__embind_register_class_constructor,s:__embind_register_class_function,oa:__embind_register_emval,C:__embind_register_float,r:__embind_register_integer,p:__embind_register_memory_view,wa:__embind_register_optional,pa:__embind_register_std_string,w:__embind_register_std_wstring,ra:__embind_register_void,da:__emscripten_init_main_thread_js,U:__emscripten_notify_mailbox_postmessage,Y:__emscripten_receive_on_main_thread_js,O:__emscripten_runtime_keepalive_clear,Q:__emscripten_thread_cleanup,ca:__emscripten_thread_mailbox_await,la:__emscripten_thread_set_strongref,J:__emval_as,sa:__emval_call,F:__emval_call_method,M:__emval_decref,H:__emval_get_global,y:__emval_get_method_caller,K:__emval_get_property,G:__emval_incref,ta:__emval_new_array,n:__emval_new_cstring,x:__emval_new_object,va:__emval_run_destructors,ua:__emval_set_property,q:__emval_take_value,I:__emval_typeof,Z:__gmtime_js,_:__localtime_js,$:__mktime_js,P:__setitimer_js,aa:__tzset_js,X:_emscripten_check_blocking_allowed,ma:_emscripten_date_now,ka:_emscripten_exit_with_live_runtime,t:_emscripten_get_now,T:_emscripten_resize_heap,ea:_environ_get,fa:_environ_sizes_get,na:_exit,z:_fd_close,ha:_fd_read,ba:_fd_seek,ga:_fd_write,k:invoke_diii,L:invoke_diiiii,j:invoke_i,i:invoke_ii,h:invoke_iii,v:invoke_iiii,o:invoke_v,d:invoke_vi,u:invoke_vii,g:invoke_viii,b:invoke_viiii,a:wasmMemory,N:_proc_exit}}var wasmExports=await createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["xa"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["ya"])(a0);var __embind_initialize_bindings=()=>(__embind_initialize_bindings=wasmExports["za"])();var _pthread_self=()=>(_pthread_self=wasmExports["Aa"])();var _malloc=a0=>(_malloc=wasmExports["Ba"])(a0);var _free=a0=>(_free=wasmExports["Ca"])(a0);var __emscripten_tls_init=()=>(__emscripten_tls_init=wasmExports["Ea"])();var __emscripten_thread_init=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=wasmExports["Fa"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=()=>(__emscripten_thread_crashed=wasmExports["Ga"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3,a4)=>(__emscripten_run_on_main_thread_js=wasmExports["Ha"])(a0,a1,a2,a3,a4);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports["Ia"])(a0);var __emscripten_thread_exit=a0=>(__emscripten_thread_exit=wasmExports["Ja"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports["Ka"])(a0,a1);var __emscripten_check_mailbox=()=>(__emscripten_check_mailbox=wasmExports["La"])();var _setThrew=(a0,a1)=>(_setThrew=wasmExports["Ma"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports["Na"])(a0);var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports["Oa"])(a0,a1);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["Pa"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports["Qa"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["Ra"])();var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["Sa"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["Ta"])(a0,a1,a2);var ___cxa_get_exception_ptr=a0=>(___cxa_get_exception_ptr=wasmExports["Ua"])(a0);function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function run(){if(runDependencies>0){dependenciesFulfilled=run;return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise;
-
-
-  return moduleRtn;
-}
-);
-})();
-export default Module;
-var isPthread = globalThis.self?.name?.startsWith('em-pthread');
-// When running as a pthread, construct a new instance on startup
-isPthread && Module();
diff --git a/libraw.wasm b/libraw.wasm
deleted file mode 100755
index b7433f2..0000000
Binary files a/libraw.wasm and /dev/null differ
diff --git a/libs/liblcms2.a b/libs/liblcms2.a
deleted file mode 100644
index 91ad346..0000000
Binary files a/libs/liblcms2.a and /dev/null differ
diff --git a/libs/liblcms2.la b/libs/liblcms2.la
deleted file mode 120000
index d00c94d..0000000
--- a/libs/liblcms2.la
+++ /dev/null
@@ -1 +0,0 @@
-../liblcms2.la
\ No newline at end of file
diff --git a/libs/liblcms2.lai b/libs/liblcms2.lai
deleted file mode 100644
index 4e0947a..0000000
--- a/libs/liblcms2.lai
+++ /dev/null
@@ -1,41 +0,0 @@
-# liblcms2.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.5.4
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='liblcms2.a'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags=' -pthread'
-
-# Libraries that this one depends upon.
-dependency_libs=' -lm -lpthread'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for liblcms2.
-current=2
-age=0
-revision=17
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/libs/libraw.a b/libs/libraw.a
deleted file mode 100644
index c5fd0f3..0000000
Binary files a/libs/libraw.a and /dev/null differ
diff --git a/libs/libraw.la b/libs/libraw.la
deleted file mode 120000
index e96b399..0000000
--- a/libs/libraw.la
+++ /dev/null
@@ -1 +0,0 @@
-../libraw.la
\ No newline at end of file
diff --git a/libs/libraw.lai b/libs/libraw.lai
deleted file mode 100644
index 0c37376..0000000
--- a/libs/libraw.lai
+++ /dev/null
@@ -1,41 +0,0 @@
-# libraw.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.5.4
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libraw.a'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -lpthread -L../libs/ -llcms2 -ljpeg -lm'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libraw.
-current=24
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/libs/libraw_r.a b/libs/libraw_r.a
deleted file mode 100644
index c5fd0f3..0000000
Binary files a/libs/libraw_r.a and /dev/null differ
diff --git a/libs/libraw_r.la b/libs/libraw_r.la
deleted file mode 120000
index 62d5d51..0000000
--- a/libs/libraw_r.la
+++ /dev/null
@@ -1 +0,0 @@
-../libraw_r.la
\ No newline at end of file
diff --git a/libs/libraw_r.lai b/libs/libraw_r.lai
deleted file mode 100644
index 966f09d..0000000
--- a/libs/libraw_r.lai
+++ /dev/null
@@ -1,41 +0,0 @@
-# libraw_r.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.5.4
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libraw_r.a'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -lpthread -L../libs/ -llcms2 -ljpeg -lm'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libraw_r.
-current=24
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/usr/local/lib'
diff --git a/package-lock.json b/package-lock.json
index aa3872c..dd283c1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,16 +1,17 @@
 {
 	"name": "libraw-wasm",
-	"version": "1.0.5",
+	"version": "1.1.2",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "libraw-wasm",
-			"version": "1.0.5",
+			"version": "1.1.2",
 			"license": "ISC",
 			"devDependencies": {
+				"@types/node": "^22.15.30",
 				"esbuild": "^0.24.2",
-				"esbuild-plugin-inline-worker": "^0.1.1"
+				"typescript": "^5.8.3"
 			}
 		},
 		"node_modules/@esbuild/aix-ppc64": {
@@ -438,12 +439,15 @@
 				"node": ">=18"
 			}
 		},
-		"node_modules/commondir": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-			"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+		"node_modules/@types/node": {
+			"version": "22.15.30",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz",
+			"integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==",
 			"dev": true,
-			"license": "MIT"
+			"license": "MIT",
+			"dependencies": {
+				"undici-types": "~6.21.0"
+			}
 		},
 		"node_modules/esbuild": {
 			"version": "0.24.2",
@@ -486,149 +490,26 @@
 				"@esbuild/win32-x64": "0.24.2"
 			}
 		},
-		"node_modules/esbuild-plugin-inline-worker": {
-			"version": "0.1.1",
-			"resolved": "https://registry.npmjs.org/esbuild-plugin-inline-worker/-/esbuild-plugin-inline-worker-0.1.1.tgz",
-			"integrity": "sha512-VmFqsQKxUlbM51C1y5bRiMeyc1x2yTdMXhKB6S//++g9aCBg8TfGsbKxl5ZDkCGquqLY+RmEk93TBNd0i35dPA==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"esbuild": "latest",
-				"find-cache-dir": "^3.3.1"
-			}
-		},
-		"node_modules/find-cache-dir": {
-			"version": "3.3.2",
-			"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
-			"integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"commondir": "^1.0.1",
-				"make-dir": "^3.0.2",
-				"pkg-dir": "^4.1.0"
-			},
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
-			}
-		},
-		"node_modules/find-up": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-			"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"locate-path": "^5.0.0",
-				"path-exists": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/locate-path": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-			"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"p-locate": "^4.1.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/make-dir": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-			"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+		"node_modules/typescript": {
+			"version": "5.8.3",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+			"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
 			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"semver": "^6.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/p-limit": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-			"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"p-try": "^2.0.0"
-			},
-			"engines": {
-				"node": ">=6"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/p-locate": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-			"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"p-limit": "^2.2.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/p-try": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-			"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/path-exists": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-			"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-			"dev": true,
-			"license": "MIT",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/pkg-dir": {
-			"version": "4.2.0",
-			"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-			"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"find-up": "^4.0.0"
+			"license": "Apache-2.0",
+			"bin": {
+				"tsc": "bin/tsc",
+				"tsserver": "bin/tsserver"
 			},
 			"engines": {
-				"node": ">=8"
+				"node": ">=14.17"
 			}
 		},
-		"node_modules/semver": {
-			"version": "6.3.1",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
-			"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+		"node_modules/undici-types": {
+			"version": "6.21.0",
+			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+			"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
 			"dev": true,
-			"license": "ISC",
-			"bin": {
-				"semver": "bin/semver.js"
-			}
+			"license": "MIT"
 		}
 	}
 }
diff --git a/package.json b/package.json
index 30dc1c9..8481b60 100644
--- a/package.json
+++ b/package.json
@@ -3,13 +3,17 @@
 	"version": "1.1.2",
 	"description": "LibRaw WASM bindings to be able to use it in the browser.",
 	"main": "dist/index.js",
+	"types": "dist/index.d.ts",
 	"type": "module",
 	"directories": {
-		"lib": "lib"
+		"lib": "src",
+		"example": "scripts/example-server.js"
 	},
 	"scripts": {
-		"example": "python -m http.server 9000",
-		"build": "node build.js"
+		"example": "node ./scripts/example-server.js & sleep 1 && open http://localhost:9001/example/",
+		"build:all": "cd ./scripts && ./00_compile_all.sh",
+		"build:libraries": "cd ./scripts && ./01_compile_libraries.sh",
+		"build:wasm": "cd ./scripts && ./02_compile_libraw_wasm.sh"
 	},
 	"files": [
 		"dist/*"
@@ -17,6 +21,9 @@
 	"author": "ybouane",
 	"license": "ISC",
 	"devDependencies": {
-		"esbuild": "^0.24.2"
-	}
-}
+		"@types/node": "^22.15.30",
+		"esbuild": "^0.24.2",
+		"typescript": "^5.8.3"
+	},
+	"packageManager": "yarn@4.9.2"
+}
\ No newline at end of file
diff --git a/scripts/00_compile_all.sh b/scripts/00_compile_all.sh
new file mode 100755
index 0000000..4bf28dc
--- /dev/null
+++ b/scripts/00_compile_all.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+set -e
+
+./01_compile_libraries.sh
+./02_compile_libraw_wasm.sh
\ No newline at end of file
diff --git a/scripts/01_compile_libraries.sh b/scripts/01_compile_libraries.sh
new file mode 100755
index 0000000..be544fc
--- /dev/null
+++ b/scripts/01_compile_libraries.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+set -e
+
+#---------------------------------------------------------------------------------
+# 0) Configure and Build LCMS with Emscripten
+#---------------------------------------------------------------------------------
+echo -e "\n==> Compiling LCMS..."
+cd ../libraries/lcms2
+glibtoolize
+autoreconf -fi
+# 2) Configure and make with Emscripten
+emconfigure ./configure --host=wasm32-unknown-emscripten \
+  --disable-shared
+emmake make -j8
+cd ../..
+
+
+#---------------------------------------------------------------------------------
+# 1) Download & Prepare LibRaw
+#---------------------------------------------------------------------------------
+echo -e "\n==> Compiling LibRaw..."
+
+pushd libraries/LibRawSource
+
+echo -e "\n==> Generating configure script from configure.ac..."
+# Generate ./configure from configure.ac
+glibtoolize
+autoreconf -i
+
+#---------------------------------------------------------------------------------
+# 2) Configure and Build LibRaw with Emscripten
+#---------------------------------------------------------------------------------
+echo -e "\n==> Configuring LibRaw with Emscripten..."
+emconfigure ./configure \
+  --host=wasm32-unknown-emscripten \
+  --enable-openmp \
+  --enable-lcms \
+  --disable-shared \
+  --disable-examples \
+  CFLAGS="-O3 -flto -ffast-math -msimd128 -DNDEBUG -DUSE_LCMS2 -I../lcms2/include" \
+  CXXFLAGS="-O3 -flto -ffast-math -msimd128 -DNDEBUG -DUSE_LCMS2 -I../lcms2/include" \
+  LDFLAGS="-s USE_PTHREADS=1 -lpthread ../lcms2/src/.libs/liblcms2.a"
+
+echo -e "\n==> Building LibRaw..."
+emmake make -j8
+
+popd  # out of LibRawSource
\ No newline at end of file
diff --git a/scripts/02_compile_libraw_wasm.sh b/scripts/02_compile_libraw_wasm.sh
new file mode 100755
index 0000000..43584b5
--- /dev/null
+++ b/scripts/02_compile_libraw_wasm.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+
+set -e
+cd ..
+#---------------------------------------------------------------------------------
+# Build the final WASM from libraw_wrapper.cpp
+#---------------------------------------------------------------------------------
+echo -e "\n==> Building libraw.js + libraw.wasm..."
+emcc \
+  --bind \
+  -I./libraries/LibRawSource \
+  -s USE_LIBPNG=1 \
+  -s USE_LIBJPEG=1 \
+  -s USE_ZLIB=1 \
+  -s MODULARIZE=1 \
+  -s EXPORT_ES6=1 \
+  -s DISABLE_EXCEPTION_CATCHING=0 \
+  -s ALLOW_MEMORY_GROWTH=1 \
+  -s INITIAL_MEMORY=256MB \
+  -s USE_PTHREADS=1 \
+  -s ENVIRONMENT="web,worker" \
+  -msimd128 \
+  -O3 -flto -pthread \
+  src/libraw_wrapper.cpp \
+  libraries/lcms2/src/.libs/liblcms2.a \
+  libraries/LibRawSource/lib/.libs/libraw.a \
+  -o src/libraw.js
+
+
+echo -e "\n==> Building Dist files..."
+
+node scripts/build.js
+
+
+echo ""
+echo "==============================================="
+echo " Build complete!"
+echo " You should now have libraw.js & libraw.wasm."
+echo "==============================================="
diff --git a/scripts/build.js b/scripts/build.js
new file mode 100644
index 0000000..7738132
--- /dev/null
+++ b/scripts/build.js
@@ -0,0 +1,38 @@
+import { build } from "esbuild";
+import { promises as fs } from "fs";
+import { exec } from "child_process";
+
+(async () => {
+    try {
+        let librawjs = (await fs.readFile("src/libraw.js")).toString();
+        librawjs = librawjs.replace(/var workerOptions=([^]+?);worker=new Worker\(new URL\("([^"]+)",import.meta.url\),workerOptions\);/, `worker=new Worker(new URL("$2",import.meta.url),$1);`); // Correction to make worker options static so that it works with vite
+        await fs.writeFile("src/libraw.js", librawjs);
+        await build({
+            entryPoints: ["src/index.ts", "src/worker.ts", "src/libraw.js"], // Entry point of your library
+            outdir: "dist", // Output directory
+            bundle: true, // Bundle all files
+            minify: true, // Minify the output
+            sourcemap: true, // Generate source maps
+            format: "esm", // Output format (ES Module)
+        });
+        // build types bundle using tsc
+        await new Promise((resolve, reject) => {
+            exec("tsc --declaration --emitDeclarationOnly --outDir dist", (error, stdout, stderr) => {
+                if (error) {
+                    console.error(stderr);
+                    reject(error);
+                } else {
+                    resolve(stdout);
+                }
+            });
+        });
+        await fs.rename("src/libraw.wasm", "dist/libraw.wasm");
+        await fs.rename("src/libraw.js", "dist/libraw.js");
+        await fs.rename("src/libraw.worker.mjs", "dist/libraw.worker.mjs");
+        await fs.copyFile("src/types.d.ts", "dist/types.d.ts");
+        console.log("Build successful!");
+    } catch (error) {
+        console.error("Build failed:", error);
+        process.exit(1);
+    }
+})();
diff --git a/scripts/example-server.js b/scripts/example-server.js
new file mode 100644
index 0000000..dc451da
--- /dev/null
+++ b/scripts/example-server.js
@@ -0,0 +1,54 @@
+// simple-server.js
+import http from 'http';
+import fs from 'fs';
+import path from 'path';
+import url from 'url';
+
+const PORT = 9001;
+const ROOT = process.cwd();
+
+const server = http.createServer((req, res) => {
+  const parsedUrl = url.parse(req.url);
+  let pathname = `${ROOT}${parsedUrl.pathname}`;
+
+  fs.stat(pathname, (err, stats) => {
+    if (err) {
+      res.statusCode = 404;
+      res.end(`File ${pathname} not found!`);
+      return;
+    }
+    if (stats.isDirectory()) {
+      pathname = path.join(pathname, 'index.html');
+    }
+    fs.readFile(pathname, (err, data) => {
+      if (err) {
+        res.statusCode = 500;
+        res.end(`Error getting the file: ${err}.`);
+      } else {
+        // Set required headers
+        res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
+        res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');
+        // Basic content-type
+        const ext = path.parse(pathname).ext;
+        const map = {
+          '.html': 'text/html',
+          '.js': 'application/javascript',
+          '.wasm': 'application/wasm',
+          '.css': 'text/css',
+          '.json': 'application/json',
+          '.png': 'image/png',
+          '.jpg': 'image/jpeg',
+          '.jpeg': 'image/jpeg',
+          '.gif': 'image/gif',
+          '.svg': 'image/svg+xml',
+        };
+        res.setHeader('Content-type', map[ext] || 'text/plain');
+        res.end(data);
+      }
+    });
+  });
+});
+
+server.listen(PORT, () => {
+  console.log(`Server running at http://localhost:${PORT}/`);
+});
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..559b4a3
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,53 @@
+import { LibRaw, LibRawSettings, LibRawFullMetadata, LibRawImageData, LibRawRawImageData, LibRawBasicMetadata } from "./types";
+
+export default class LibRawImpl implements LibRaw {
+    private worker: Worker;
+    private waitForWorker: false | { throw: (err: unknown) => void; return: (val: any) => void } = false;
+
+    constructor() {
+        this.worker = new Worker(new URL("./worker.js", import.meta.url), { type: "module" });
+        this.worker.onmessage = ({ data }) => {
+            if (this.waitForWorker) {
+                if (data && data.error) this.waitForWorker.throw(data.error);
+                else this.waitForWorker.return(data.out);
+                this.waitForWorker = false;
+            }
+        };
+    }
+
+    async runFn(fn: string, ...args: any[]): Promise {
+        return new Promise((res, err) => {
+            this.waitForWorker = { throw: err, return: res };
+            this.worker.postMessage(
+                { fn, args },
+                args.map((a) => (a instanceof ArrayBuffer || ArrayBuffer.isView(a) ? (a as any as ArrayBufferView).buffer : undefined)).filter((a): a is ArrayBuffer => !!a)
+            );
+        });
+    }
+
+    async open(buffer: Uint8Array, settings?: LibRawSettings): Promise {
+        await this.runFn("open", buffer, settings);
+    }
+
+    async metadata(fullOutput?: T): Promise {
+        const metadata = await this.runFn("metadata", !!fullOutput);
+        if (metadata?.hasOwnProperty("thumb_format")) {
+            metadata.thumb_format = ["unknown", "jpeg", "bitmap", "bitmap16", "layer", "rollei", "h265"][metadata.thumb_format as any] || "unknown";
+        }
+        if (metadata?.hasOwnProperty("desc")) {
+            metadata.desc = String(metadata.desc).trim();
+        }
+        if (metadata?.hasOwnProperty("timestamp")) {
+            metadata.timestamp = new Date(metadata.timestamp);
+        }
+        return metadata;
+    }
+
+    async imageData(): Promise {
+        return await this.runFn("imageData");
+    }
+
+    async rawImageData(): Promise {
+        return await this.runFn("rawImageData");
+    }
+}
diff --git a/src/libraw.worker.mts b/src/libraw.worker.mts
new file mode 100644
index 0000000..40ba572
--- /dev/null
+++ b/src/libraw.worker.mts
@@ -0,0 +1,2 @@
+// Emscripten worker stub for TypeScript. Real logic is generated by Emscripten.
+export {};
diff --git a/libraw_wrapper.cpp b/src/libraw_wrapper.cpp
similarity index 96%
rename from libraw_wrapper.cpp
rename to src/libraw_wrapper.cpp
index c94192b..8c9a232 100644
--- a/libraw_wrapper.cpp
+++ b/src/libraw_wrapper.cpp
@@ -959,6 +959,52 @@ class WASMLibRaw {
 		return resultObj;
 	}
 
+	val rawImageData() {
+		if (!processor_) {
+			return val::undefined();
+		}
+
+		// Unpack if not already done
+		if (!isUnpacked) {
+			isUnpacked = true;
+			int ret = processor_->unpack();
+			if (ret != LIBRAW_SUCCESS) {
+				throw std::runtime_error("LibRaw: unpack() failed with code " + std::to_string(ret));
+			}
+		}
+
+		auto &raw = processor_->imgdata.rawdata;
+		auto &sizes = processor_->imgdata.sizes;
+
+		// Only support raw_image (ushort*)
+		if (!raw.raw_image) {
+			return val::undefined();
+		}
+
+		val resultObj = val::object();
+		resultObj.set("raw_height", sizes.raw_height);
+		resultObj.set("raw_width", sizes.raw_width);
+		resultObj.set("top_margin", sizes.top_margin);
+		resultObj.set("left_margin", sizes.left_margin);
+		resultObj.set("height", sizes.height);
+		resultObj.set("width", sizes.width);
+		// 'colors' and 'bits' are not available in sizes/idata for raw, so omit them
+
+		size_t pixelCount = static_cast(sizes.raw_height) * static_cast(sizes.raw_width);
+
+		val jsData = val::undefined();
+
+		// raw_image is ushort* (16 bits per sample)
+		val typedArrayCtor = val::global("Uint16Array");
+		val typedArray = typedArrayCtor.new_(val((unsigned)pixelCount));
+		val memView = val(typed_memory_view(pixelCount, raw.raw_image));
+		typedArray.call("set", memView);
+		jsData = typedArray;
+
+		resultObj.set("data", jsData);
+		return resultObj;
+	}
+
 private:
 	LibRaw* processor_ = nullptr;
 	bool isUnpacked = false;
@@ -1186,5 +1232,6 @@ EMSCRIPTEN_BINDINGS(libraw_module) {
 		.constructor<>()
 		.function("open", &WASMLibRaw::open)
 		.function("metadata", &WASMLibRaw::metadata)
-		.function("imageData", &WASMLibRaw::imageData);
+		.function("imageData", &WASMLibRaw::imageData)
+		.function("rawImageData", &WASMLibRaw::rawImageData);
 }
diff --git a/src/types.d.ts b/src/types.d.ts
new file mode 100644
index 0000000..5996793
--- /dev/null
+++ b/src/types.d.ts
@@ -0,0 +1,526 @@
+// Type definitions for LibRaw WebAssembly wrapper
+// These types are inferred from typical LibRaw C++ API usage
+
+export interface Metadata {
+    thumb_format?: number | string;
+    desc?: string;
+    timestamp?: number | string;
+    [key: string]: unknown;
+}
+
+export interface LibRawImageMetadata {
+    width: number;
+    height: number;
+    colors: number;
+    bits: number;
+    raw_count: number;
+    dng_version?: number;
+    make: string;
+    model: string;
+    iso_speed: number;
+    shutter: number;
+    aperture: number;
+    timestamp: number;
+    orientation?: number;
+    shot_order?: number;
+    // ...add more fields as needed
+}
+
+export interface LibRawProcessingParams {
+    gamma?: [number, number];
+    no_auto_bright?: boolean;
+    use_camera_wb?: boolean;
+    use_auto_wb?: boolean;
+    output_bps?: 8 | 16;
+    four_color_rgb?: boolean;
+    highlight?: number;
+    // ...add more fields as needed
+}
+
+export interface LibRawImageData {
+    data: Uint8Array | Uint16Array;
+    width: number;
+    height: number;
+    colors: number;
+    bits: number;
+    dataSize: number;
+    // ...add more fields as needed
+}
+
+export interface LibRawRawImageData {
+    data: Uint16Array;
+    raw_height: number;
+    raw_width: number;
+    top_margin: number;
+    left_margin: number;
+    height: number;
+    width: number;
+}
+
+// --- Color Data ---
+export interface LibRawColorData {
+    black: number;
+    data_maximum: number;
+    maximum: number;
+    fmaximum: number;
+    fnorm: number;
+    cam_mul: number[];
+    pre_mul: number[];
+    flash_used: number;
+    canon_ev: number;
+    model2: string;
+    UniqueCameraModel: string;
+    LocalizedCameraModel: string;
+    ImageUniqueID: string;
+    RawDataUniqueID: string;
+    raw_bps: number;
+    ExifColorSpace: number;
+    // ...add more as needed
+}
+
+// --- Common Metadata ---
+export interface LibRawMetadataCommon {
+    FlashEC: number;
+    FlashGN: number;
+    CameraTemperature: number;
+    SensorTemperature: number;
+    SensorTemperature2: number;
+    LensTemperature: number;
+    AmbientTemperature: number;
+    BatteryTemperature: number;
+    exifAmbientTemperature: number;
+    exifHumidity: number;
+    exifPressure: number;
+    exifWaterDepth: number;
+    exifAcceleration: number;
+    exifCameraElevationAngle: number;
+    real_ISO: number;
+    exifExposureIndex: number;
+    ColorSpace: number;
+    firmware: string;
+    ExposureCalibrationShift: number;
+    afdata: Array<{
+        AFInfoData_tag: number;
+        AFInfoData_order: number;
+        AFInfoData_version: number;
+        AFInfoData_length: number;
+    }>;
+}
+
+// --- Per-brand makernotes (partial, add more as needed) ---
+export interface LibRawCanonMakernotes {
+    ColorDataVer: number;
+    ColorDataSubVer: number;
+    SpecularWhiteLevel: number;
+    NormalWhiteLevel: number;
+    ChannelBlackLevel: number[];
+    AverageBlackLevel: number;
+    multishot: number[];
+    MeteringMode: number;
+    SpotMeteringMode: number;
+    FlashMeteringMode: number;
+    FlashExposureLock: number;
+    ExposureMode: number;
+    AESetting: number;
+    ImageStabilization: number;
+    FlashMode: number;
+    FlashActivity: number;
+    FlashBits: number;
+    ManualFlashOutput: number;
+    FlashOutput: number;
+    FlashGuideNumber: number;
+    ContinuousDrive: number;
+    SensorWidth: number;
+    SensorHeight: number;
+    AFMicroAdjMode: number;
+    AFMicroAdjValue: number;
+    MakernotesFlip: number;
+    RecordMode: number;
+    SRAWQuality: number;
+    wbi: number;
+    RF_lensID: number;
+    AutoLightingOptimizer: number;
+    HighlightTonePriority: number;
+    Quality: number;
+    CanonLog: number;
+    ISOgain: number[];
+}
+
+export interface LibRawNikonMakernotes {
+    ExposureBracketValue: number;
+    ActiveDLighting: number;
+    ShootingMode: number;
+    ImageStabilization: number[];
+    VibrationReduction: number;
+    FlashSetting: string;
+    FlashType: string;
+    FlashExposureCompensation: number[];
+    ExternalFlashExposureComp: number[];
+    FlashExposureBracketValue0: number;
+    FlashExposureBracketValue1: number;
+    FlashExposureBracketValue2: number;
+    FlashExposureBracketValue3: number;
+    FlashMode: number;
+    FlashExposureCompensation2: number;
+    FlashExposureCompensation3: number;
+    FlashExposureCompensation4: number;
+    FlashSource: number;
+    FlashFirmware0: number;
+    FlashFirmware1: number;
+    ExternalFlashFlags: number;
+    FlashControlCommanderMode: number;
+    FlashOutputAndCompensation: number;
+    FlashFocalLength: number;
+    FlashGNDistance: number;
+    FlashGroupOutputAndCompensation: number[];
+    FlashGroupControlMode0: number;
+    FlashGroupControlMode1: number;
+    FlashGroupControlMode2: number;
+    FlashGroupControlMode3: number;
+    FlashColorFilter: number;
+    NEFCompression: number;
+    ExposureMode: number;
+    ExposureProgram: number;
+    nMEshots: number;
+    MEgainOn: number;
+    ME_WB: number[];
+    AFFineTune: number;
+    AFFineTuneIndex: number;
+    AFFineTuneAdj: number;
+    LensDataVersion: string;
+    FlashInfoVersion: string;
+    ColorBalanceVersion: string;
+    key: number;
+    NEFBitDepth: number[];
+    HighSpeedCropFormat: number;
+    SensorHighSpeedCrop: { cleft: number; ctop: number; cwidth: number; cheight: number };
+    SensorWidth: number;
+    SensorHeight: number;
+    Active_D_Lighting: number;
+    ShotInfoVersion: string;
+    MakernotesFlip: number;
+    RollAngle: number;
+    PitchAngle: number;
+    YawAngle: number;
+}
+
+export interface LibRawFujiMakernotes {
+    ExpoMidPointShift: number;
+    DynamicRange: number;
+    FilmMode: number;
+    DynamicRangeSetting: number;
+    DevelopmentDynamicRange: number;
+    AutoDynamicRange: number;
+    DRangePriority: number;
+    DRangePriorityAuto: number;
+    DRangePriorityFixed: number;
+    BrightnessCompensation: number;
+    FocusMode: number;
+    AFMode: number;
+    FocusPixel: number[];
+    PrioritySettings: number;
+    FocusSettings: number;
+    AF_C_Settings: number;
+    FocusWarning: number;
+    ImageStabilization: number[];
+    FlashMode: number;
+    WB_Preset: number;
+    ShutterType: number;
+    ExrMode: number;
+    Macro: number;
+    Rating: number;
+    CropMode: number;
+    SerialSignature: string;
+    SensorID: string;
+    RAFVersion: string;
+    RAFDataGeneration: number;
+    RAFDataVersion: number;
+    isTSNERDTS: number;
+    DriveMode: number;
+    BlackLevel: number[];
+    RAFData_ImageSizeTable: number[];
+    AutoBracketing: number;
+    SequenceNumber: number;
+    SeriesLength: number;
+    PixelShiftOffset: number[];
+    ImageCount: number;
+}
+
+export interface LibRawSonyMakernotes {
+    CameraType: number;
+    Sony0x9400_version: number;
+    Sony0x9400_ReleaseMode2: number;
+    Sony0x9400_SequenceImageNumber: number;
+    Sony0x9400_SequenceLength1: number;
+    Sony0x9400_SequenceFileNumber: number;
+    Sony0x9400_SequenceLength2: number;
+    AFAreaModeSetting: number;
+    AFAreaMode: number;
+    FlexibleSpotPosition: number[];
+    AFPointSelected: number;
+    AFPointSelected_0x201e: number;
+    AFType: number;
+    FocusLocation: number[];
+    FocusPosition: number;
+    AFMicroAdjValue: number;
+    AFMicroAdjOn: number;
+    AFMicroAdjRegisteredLenses: number;
+    VariableLowPassFilter: number;
+    LongExposureNoiseReduction: number;
+    HighISONoiseReduction: number;
+    HDR: number[];
+    group2010: number;
+    group9050: number;
+    real_iso_offset: number;
+    MeteringMode_offset: number;
+    ExposureProgram_offset: number;
+    ReleaseMode2_offset: number;
+    MinoltaCamID: number;
+    firmware: string;
+    ImageCount3_offset: number;
+    ImageCount3: number;
+    ElectronicFrontCurtainShutter: number;
+    MeteringMode2: number;
+    SonyDateTime: string;
+    ShotNumberSincePowerUp: number;
+    PixelShiftGroupPrefix: number;
+    PixelShiftGroupID: number;
+    nShotsInPixelShiftGroup: number;
+    numInPixelShiftGroup: number;
+    prd_ImageHeight: number;
+    prd_ImageWidth: number;
+    prd_Total_bps: number;
+    prd_Active_bps: number;
+    prd_StorageMethod: number;
+    prd_BayerPattern: number;
+    SonyRawFileType: number;
+    RAWFileType: number;
+    RawSizeType: number;
+    Quality: number;
+    FileFormat: number;
+    MetaVersion: string;
+}
+
+export interface LibRawPanasonicMakernotes {
+    Compression: number;
+    BlackLevelDim: number;
+    BlackLevel: number[];
+    Multishot: number;
+    gamma: number;
+    HighISOMultiplier: number[];
+    FocusStepNear: number;
+    FocusStepCount: number;
+    ZoomPosition: number;
+    LensManufacturer: number;
+}
+
+export interface LibRawOlympusMakernotes {
+    CameraType2: number[];
+    ValidBits: number;
+    DriveMode: number[];
+    ColorSpace: number;
+    FocusMode: number[];
+    AutoFocus: number;
+    AFPoint: number;
+    AFAreas: number[];
+    AFPointSelected: number[];
+    AFResult: number;
+    AFFineTune: number;
+    AFFineTuneAdj: number[];
+    AspectFrameLeft: number;
+    AspectFrameTop: number;
+    AspectFrameWidth: number;
+    AspectFrameHeight: number;
+    Panorama_mode: number;
+    Panorama_frameNum: number;
+}
+
+export interface LibRawPentaxMakernotes {
+    DriveMode: number[];
+    FocusMode: number[];
+    AFPointSelected: number[];
+    AFPointSelected_Area: number;
+    AFPointsInFocus_version: number;
+    AFPointsInFocus: number;
+    FocusPosition: number;
+    AFAdjustment: number;
+    AFPointMode: number;
+    MultiExposure: number;
+    Quality: number;
+}
+
+export interface LibRawHasselbladMakernotes {
+    BaseISO: number;
+    Gain: number;
+    Sensor: string;
+    SensorUnit: string;
+    HostBody: string;
+    SensorCode: number;
+    SensorSubCode: number;
+    CoatingCode: number;
+    uncropped: number;
+    CaptureSequenceInitiator: string;
+    SensorUnitConnector: string;
+    format: number;
+    nIFD_CM: number[];
+    RecommendedCrop: number[];
+    mnColorMatrix: number[][];
+}
+
+export interface LibRawRicohMakernotes {
+    AFStatus: number;
+    AFAreaXPosition: number[];
+    AFAreaYPosition: number[];
+    AFAreaMode: number;
+    SensorWidth: number;
+    SensorHeight: number;
+    CroppedImageWidth: number;
+    CroppedImageHeight: number;
+    WideAdapter: number;
+    CropMode: number;
+    NDFilter: number;
+    AutoBracketing: number;
+    MacroMode: number;
+    FlashMode: number;
+    FlashExposureComp: number;
+    ManualFlashOutput: number;
+}
+
+export interface LibRawSamsungMakernotes {
+    ImageSizeFull: number[];
+    ImageSizeCrop: number[];
+    key: number[];
+    ColorSpace0: number;
+    ColorSpace1: number;
+    DigitalGain: number;
+    DeviceType: number;
+    LensFirmware: string;
+}
+
+export interface LibRawKodakMakernotes {
+    BlackLevelTop: number;
+    BlackLevelBottom: number;
+    offset_left: number;
+    offset_top: number;
+    clipBlack: number;
+    clipWhite: number;
+    val018percent: number;
+    val100percent: number;
+    val170percent: number;
+    MakerNoteKodak8a: number;
+    ISOCalibrationGain: number;
+    AnalogISO: number;
+}
+
+export interface LibRawPhaseOneMakernotes {
+    Software: string;
+    SystemType: string;
+    FirmwareString: string;
+    SystemModel: string;
+}
+
+// --- Main Metadata ---
+export interface LibRawBasicMetadata {
+    width: number;
+    height: number;
+    raw_width: number;
+    raw_height: number;
+    top_margin: number;
+    left_margin: number;
+    camera_make: string;
+    camera_model: string;
+    iso_speed: number;
+    shutter: number;
+    aperture: number;
+    focal_len: number;
+    timestamp: Date;
+    shot_order: number;
+    desc: string;
+    artist: string;
+    thumb_width: number;
+    thumb_height: number;
+    thumb_format: string;
+}
+
+export interface LibRawFullMetadata extends LibRawBasicMetadata {
+    color_data: LibRawColorData;
+    metadata_common: LibRawMetadataCommon;
+    canon?: LibRawCanonMakernotes;
+    nikon?: LibRawNikonMakernotes;
+    fuji?: LibRawFujiMakernotes;
+    sony?: LibRawSonyMakernotes;
+    panasonic?: LibRawPanasonicMakernotes;
+    olympus?: LibRawOlympusMakernotes;
+    pentax?: LibRawPentaxMakernotes;
+    hasselblad?: LibRawHasselbladMakernotes;
+    ricoh?: LibRawRicohMakernotes;
+    samsung?: LibRawSamsungMakernotes;
+    kodak?: LibRawKodakMakernotes;
+    p1?: LibRawPhaseOneMakernotes;
+}
+
+// --- Settings ---
+export interface LibRawSettings {
+    greybox?: [number, number, number, number];
+    cropbox?: [number, number, number, number];
+    aber?: [number, number, number, number];
+    gamm?: [number, number, number, number, number, number];
+    userMul?: [number, number, number, number];
+    bright?: number;
+    threshold?: number;
+    autoBrightThr?: number;
+    adjustMaximumThr?: number;
+    expShift?: number;
+    expPreser?: number;
+    halfSize?: number;
+    fourColorRgb?: number;
+    highlight?: number;
+    useAutoWb?: number;
+    useCameraWb?: number;
+    useCameraMatrix?: number;
+    outputColor?: number;
+    outputBps?: number;
+    outputTiff?: number;
+    outputFlags?: number;
+    userFlip?: number;
+    userQual?: number;
+    userBlack?: number;
+    userCblack?: [number, number, number, number];
+    userSat?: number;
+    medPasses?: number;
+    noAutoBright?: number;
+    useFujiRotate?: number;
+    greenMatching?: number;
+    dcbIterations?: number;
+    dcbEnhanceFl?: number;
+    fbddNoiserd?: number;
+    expCorrec?: number;
+    noAutoScale?: number;
+    noInterpolation?: number;
+    outputProfile?: string;
+    cameraProfile?: string;
+    badPixels?: string;
+    darkFrame?: string;
+}
+
+export interface LibRaw {
+    open(buffer: Uint8Array, settings?: LibRawSettings): Promise;
+    metadata(fullOutput?: T): Promise;
+    imageData(): Promise;
+    rawImageData(): Promise;
+}
+
+export class LibRawWrapper {
+    constructor();
+    open_buffer(buffer: ArrayBuffer | Uint8Array): Promise;
+    open_file(path: string): Promise;
+    unpack(): Promise;
+    dcraw_process(params?: LibRawProcessingParams): Promise;
+    get_image_data(): Promise;
+    get_metadata(): Promise;
+    recycle(): void;
+    // ...add more methods as needed
+}
+
+// If there are global functions, declare them here
+// export function someGlobalFunction(...): ...
diff --git a/src/worker.ts b/src/worker.ts
new file mode 100644
index 0000000..850d393
--- /dev/null
+++ b/src/worker.ts
@@ -0,0 +1,38 @@
+import LibRawModule from "./libraw.js";
+import type { LibRaw } from "./types";
+
+let ready: Promise;
+let LibRawClass: any;
+let raw: LibRaw;
+
+async function initLibRaw() {
+    ready = (async () => {
+        const module = await LibRawModule();
+        LibRawClass = module.LibRaw;
+        raw = new LibRawClass();
+    })();
+}
+
+initLibRaw();
+
+self.onmessage = async (event: MessageEvent<{ fn: string; args: any[] }>) => {
+    const { fn, args } = event.data;
+    try {
+        await ready;
+        // @ts-ignore
+        const out = raw[fn](...args);
+        self.postMessage(
+            { out },
+            // @ts-expect-error
+            (Array.isArray(out) ? out : typeof out == "object" ? Object.values(out) : [])
+                .map((a) => {
+                    if ([ArrayBuffer, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array].some((b) => a instanceof b)) {
+                        return a.buffer;
+                    }
+                })
+                .filter((a): a is ArrayBuffer => !!a)
+        );
+    } catch (err: any) {
+        self.postMessage({ error: err.message });
+    }
+};
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..c5b1e24
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,23 @@
+{
+    "compilerOptions": {
+        "target": "ES2020",
+        "module": "ESNext",
+        "moduleResolution": "Node",
+        "outDir": "dist",
+        "rootDir": "src",
+        "strict": true,
+        "esModuleInterop": true,
+        "forceConsistentCasingInFileNames": true,
+        "skipLibCheck": true,
+        "allowJs": true,
+        "checkJs": false,
+        "resolveJsonModule": true
+    },
+    "include": [
+        "src/**/*"
+    ],
+    "exclude": [
+        "node_modules",
+        "dist"
+    ]
+}
\ No newline at end of file
diff --git a/worker.js b/worker.js
deleted file mode 100644
index f593dcf..0000000
--- a/worker.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import LibRawModule from './libraw.js';
-
-let ready;
-let LibRawClass;
-let raw;
-
-async function initLibRaw() {
-	ready = (async ()=>{
-		const module = await LibRawModule();
-		LibRawClass = module.LibRaw;
-		raw = new LibRawClass();
-	})();
-}
-
-initLibRaw();
-
-self.onmessage = async (event) => {
-  const { fn, args } = event.data;
-  try {
-	await ready;
-    let out = raw[fn](...args);
-    self.postMessage({out},  (Array.isArray(out)?out:(typeof out=='object'?Object.values(out):[])).map(a=>{
-		if([ArrayBuffer, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array].some(b=>a instanceof b)) { // Transfer buffer
-			return a.buffer;
-		}
-	}).filter(a=>a));
-  } catch (err) {
-    self.postMessage({ error: err.message });
-  }
-};
\ No newline at end of file