t2-mapper/docs/_next/static/chunks/1e4f7733a4dd09be.js
2025-12-04 14:24:51 -08:00

1 line
571 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,r)=>{t.exports=e.r(76562)},38360,(e,t,r)=>{var n={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",:"A",:"A",:"A",:"A",:"A",Æ:"AE",:"A",:"A",Ȃ:"A",:"A",:"A",:"A",:"A",:"A",Ç:"C",:"C",È:"E",É:"E",Ê:"E",Ë:"E",:"E",:"E",:"E",:"E",:"E",Ȇ:"E",:"E",:"E",:"E",:"E",:"E",:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",:"I",Ȋ:"I",:"I",:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",:"O",:"O",:"O",Ȏ:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",:"U",:"U",:"U",:"U",:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",:"a",:"a",:"a",:"a",:"a",æ:"ae",:"a",:"a",ȃ:"a",:"a",:"a",:"a",:"a",:"a",ç:"c",:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",:"e",:"e",:"e",:"e",ȇ:"e",:"e",:"e",:"e",:"e",:"e",:"e",ì:"i",í:"i",î:"i",ï:"i",:"i",ȋ:"i",:"i",:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",:"o",:"o",:"o",ȏ:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",ù:"u",ú:"u",û:"u",ü:"u",:"u",:"u",:"u",:"u",:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",:"H",:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",:"K",:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",:"W",:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",:"U",:"u",:"U",:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",:"P",:"p",:"S",:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",:"O",:"o",:"O",:"o",:"U",:"u",:"W",:"w",:"Y",:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",:"S",:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",:"D",:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",:"H",:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},i=Object.keys(n).join("|"),a=RegExp(i,"g"),s=RegExp(i,"");function o(e){return n[e]}var l=function(e){return e.replace(a,o)};t.exports=l,t.exports.has=function(e){return!!e.match(s)},t.exports.remove=l},29402,(e,t,r)=>{var n,i,a="__lodash_hash_undefined__",s=1/0,o="[object Arguments]",l="[object Array]",u="[object Boolean]",c="[object Date]",d="[object Error]",f="[object Function]",h="[object Map]",p="[object Number]",m="[object Object]",g="[object Promise]",A="[object RegExp]",y="[object Set]",x="[object String]",B="[object Symbol]",C="[object WeakMap]",S="[object ArrayBuffer]",E="[object DataView]",T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,D=/^\w*$/,b=/^\./,M=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,w=/\\(\\)?/g,F=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,I={};I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I[o]=I[l]=I[S]=I[u]=I[E]=I[c]=I[d]=I[f]=I[h]=I[p]=I[m]=I[A]=I[y]=I[x]=I[C]=!1;var P=e.g&&e.g.Object===Object&&e.g,L="object"==typeof self&&self&&self.Object===Object&&self,U=P||L||Function("return this")(),G=r&&!r.nodeType&&r,O=G&&t&&!t.nodeType&&t,H=O&&O.exports===G&&P.process,N=function(){try{return H&&H.binding("util")}catch(e){}}(),k=N&&N.isTypedArray;function j(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}function z(e){return function(t){return e(t)}}function K(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function J(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function V(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var Q=Array.prototype,W=Function.prototype,X=Object.prototype,_=U["__core-js_shared__"],Z=function(){var e=/[^.]+$/.exec(_&&_.keys&&_.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Y=W.toString,q=X.hasOwnProperty,$=X.toString,ee=RegExp("^"+Y.call(q).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),et=U.Symbol,er=U.Uint8Array,en=X.propertyIsEnumerable,ei=Q.splice,ea=(n=Object.keys,i=Object,function(e){return n(i(e))}),es=eL(U,"DataView"),eo=eL(U,"Map"),el=eL(U,"Promise"),eu=eL(U,"Set"),ec=eL(U,"WeakMap"),ed=eL(Object,"create"),ef=ej(es),eh=ej(eo),ep=ej(el),em=ej(eu),ev=ej(ec),eg=et?et.prototype:void 0,eA=eg?eg.valueOf:void 0,ey=eg?eg.toString:void 0;function ex(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function eB(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function eC(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function eS(e){var t=-1,r=e?e.length:0;for(this.__data__=new eC;++t<r;)this.add(e[t])}function eE(e){this.__data__=new eB(e)}function eT(e,t){for(var r=e.length;r--;)if(eK(e[r][0],t))return r;return -1}ex.prototype.clear=function(){this.__data__=ed?ed(null):{}},ex.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},ex.prototype.get=function(e){var t=this.__data__;if(ed){var r=t[e];return r===a?void 0:r}return q.call(t,e)?t[e]:void 0},ex.prototype.has=function(e){var t=this.__data__;return ed?void 0!==t[e]:q.call(t,e)},ex.prototype.set=function(e,t){return this.__data__[e]=ed&&void 0===t?a:t,this},eB.prototype.clear=function(){this.__data__=[]},eB.prototype.delete=function(e){var t=this.__data__,r=eT(t,e);return!(r<0)&&(r==t.length-1?t.pop():ei.call(t,r,1),!0)},eB.prototype.get=function(e){var t=this.__data__,r=eT(t,e);return r<0?void 0:t[r][1]},eB.prototype.has=function(e){return eT(this.__data__,e)>-1},eB.prototype.set=function(e,t){var r=this.__data__,n=eT(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},eC.prototype.clear=function(){this.__data__={hash:new ex,map:new(eo||eB),string:new ex}},eC.prototype.delete=function(e){return eP(this,e).delete(e)},eC.prototype.get=function(e){return eP(this,e).get(e)},eC.prototype.has=function(e){return eP(this,e).has(e)},eC.prototype.set=function(e,t){return eP(this,e).set(e,t),this},eS.prototype.add=eS.prototype.push=function(e){return this.__data__.set(e,a),this},eS.prototype.has=function(e){return this.__data__.has(e)},eE.prototype.clear=function(){this.__data__=new eB},eE.prototype.delete=function(e){return this.__data__.delete(e)},eE.prototype.get=function(e){return this.__data__.get(e)},eE.prototype.has=function(e){return this.__data__.has(e)},eE.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eB){var n=r.__data__;if(!eo||n.length<199)return n.push([e,t]),this;r=this.__data__=new eC(n)}return r.set(e,t),this};var eD=function(e,t){return function(r,n){if(null==r)return r;if(!eQ(r))return e(r,n);for(var i=r.length,a=-1,s=Object(r);(t?a--:++a<i)&&!1!==n(s[a],a,s););return r}}(function(e,t){return e&&eb(e,t,e$)}),eb=function(e,t,r){for(var n=-1,i=Object(e),a=r(e),s=a.length;s--;){var o=a[++n];if(!1===t(i[o],o,i))break}return e};function eM(e,t){var r;t=eO(t,e)?[t]:eV(r=t)?r:eN(r);for(var n=0,i=t.length;null!=e&&n<i;)e=e[ek(t[n++])];return n&&n==i?e:void 0}function ew(e,t){return null!=e&&t in Object(e)}function eF(e,t,r,n,i){return e===t||(null!=e&&null!=t&&(e_(e)||eZ(t))?function(e,t,r,n,i,a){var s=eV(e),f=eV(t),g=l,C=l;s||(g=(g=eU(e))==o?m:g),f||(C=(C=eU(t))==o?m:C);var T=g==m&&!K(e),D=C==m&&!K(t),b=g==C;if(b&&!T)return a||(a=new eE),s||eq(e)?eI(e,t,r,n,i,a):function(e,t,r,n,i,a,s){switch(r){case E:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)break;e=e.buffer,t=t.buffer;case S:if(e.byteLength!=t.byteLength||!n(new er(e),new er(t)))break;return!0;case u:case c:case p:return eK(+e,+t);case d:return e.name==t.name&&e.message==t.message;case A:case x:return e==t+"";case h:var o=J;case y:var l=2&a;if(o||(o=V),e.size!=t.size&&!l)break;var f=s.get(e);if(f)return f==t;a|=1,s.set(e,t);var m=eI(o(e),o(t),n,i,a,s);return s.delete(e),m;case B:if(eA)return eA.call(e)==eA.call(t)}return!1}(e,t,g,r,n,i,a);if(!(2&i)){var M=T&&q.call(e,"__wrapped__"),w=D&&q.call(t,"__wrapped__");if(M||w){var F=M?e.value():e,R=w?t.value():t;return a||(a=new eE),r(F,R,n,i,a)}}return!!b&&(a||(a=new eE),function(e,t,r,n,i,a){var s=2&i,o=e$(e),l=o.length;if(l!=e$(t).length&&!s)return!1;for(var u=l;u--;){var c=o[u];if(!(s?c in t:q.call(t,c)))return!1}var d=a.get(e);if(d&&a.get(t))return d==t;var f=!0;a.set(e,t),a.set(t,e);for(var h=s;++u<l;){var p=e[c=o[u]],m=t[c];if(n)var g=s?n(m,p,c,t,e,a):n(p,m,c,e,t,a);if(!(void 0===g?p===m||r(p,m,n,i,a):g)){f=!1;break}h||(h="constructor"==c)}if(f&&!h){var A=e.constructor,y=t.constructor;A!=y&&"constructor"in e&&"constructor"in t&&!("function"==typeof A&&A instanceof A&&"function"==typeof y&&y instanceof y)&&(f=!1)}return a.delete(e),a.delete(t),f}(e,t,r,n,i,a))}(e,t,eF,r,n,i):e!=e&&t!=t)}function eR(e){var t,r,n,i;return"function"==typeof e?e:null==e?e0:"object"==typeof e?eV(e)?(t=e[0],r=e[1],eO(t)&&function(e){return e==e&&!e_(e)}(r)?eH(ek(t),r):function(e){var n,i,a,s,o,l=(n=e,i=t,void 0===(a=null==n?void 0:eM(n,i))?void 0:a);return void 0===l&&l===r?(s=e,o=t,null!=s&&function(e,t,r){t=eO(t,e)?[t]:eV(n=t)?n:eN(n);for(var n,i,a=-1,s=t.length;++a<s;){var o=ek(t[a]);if(!(i=null!=e&&r(e,o)))break;e=e[o]}if(i)return i;var s=e?e.length:0;return!!s&&eX(s)&&eG(o,s)&&(eV(e)||eJ(e))}(s,o,ew)):eF(r,l,void 0,3)}):1==(i=function(e){for(var t=e$(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,function(e){return e==e&&!e_(e)}(i)]}return t}(n=e)).length&&i[0][2]?eH(i[0][0],i[0][1]):function(e){return e===n||function(e,t,r,n){var i=r.length,a=i;if(null==e)return!a;for(e=Object(e);i--;){var s=r[i];if((0,s[2])?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){var o=(s=r[i])[0],l=e[o],u=s[1];if(0,s[2]){if(void 0===l&&!(o in e))return!1}else{var c,d=new eE;!1;if(!(void 0===c?eF(u,l,n,3,d):c))return!1}}return!0}(e,n,i)}:function(e){var t;return eO(e)?(t=ek(e),function(e){return null==e?void 0:e[t]}):function(t){return eM(t,e)}}(e)}function eI(e,t,r,n,i,a){var s=2&i,o=e.length,l=t.length;if(o!=l&&!(s&&l>o))return!1;var u=a.get(e);if(u&&a.get(t))return u==t;var c=-1,d=!0,f=1&i?new eS:void 0;for(a.set(e,t),a.set(t,e);++c<o;){var h=e[c],p=t[c];if(n)var m=s?n(p,h,c,t,e,a):n(h,p,c,e,t,a);if(void 0!==m){if(m)continue;d=!1;break}if(f){if(!function(e,t){for(var r=-1,n=e?e.length:0;++r<n;)if(t(e[r],r,e))return!0;return!1}(t,function(e,t){if(!f.has(t)&&(h===e||r(h,e,n,i,a)))return f.add(t)})){d=!1;break}}else if(!(h===p||r(h,p,n,i,a))){d=!1;break}}return a.delete(e),a.delete(t),d}function eP(e,t){var r,n,i=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?i["string"==typeof t?"string":"hash"]:i.map}function eL(e,t){var r,n=null==e?void 0:e[t];return!(!e_(n)||(r=n,Z&&Z in r))&&(eW(n)||K(n)?ee:F).test(ej(n))?n:void 0}var eU=function(e){return $.call(e)};function eG(e,t){return!!(t=null==t?0x1fffffffffffff:t)&&("number"==typeof e||R.test(e))&&e>-1&&e%1==0&&e<t}function eO(e,t){if(eV(e))return!1;var r=typeof e;return!!("number"==r||"symbol"==r||"boolean"==r||null==e||eY(e))||D.test(e)||!T.test(e)||null!=t&&e in Object(t)}function eH(e,t){return function(r){return null!=r&&r[e]===t&&(void 0!==t||e in Object(r))}}(es&&eU(new es(new ArrayBuffer(1)))!=E||eo&&eU(new eo)!=h||el&&eU(el.resolve())!=g||eu&&eU(new eu)!=y||ec&&eU(new ec)!=C)&&(eU=function(e){var t=$.call(e),r=t==m?e.constructor:void 0,n=r?ej(r):void 0;if(n)switch(n){case ef:return E;case eh:return h;case ep:return g;case em:return y;case ev:return C}return t});var eN=ez(function(e){e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(eY(e))return ey?ey.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}(t);var t,r=[];return b.test(e)&&r.push(""),e.replace(M,function(e,t,n,i){r.push(n?i.replace(w,"$1"):t||e)}),r});function ek(e){if("string"==typeof e||eY(e))return e;var t=e+"";return"0"==t&&1/e==-s?"-0":t}function ej(e){if(null!=e){try{return Y.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function ez(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw TypeError("Expected a function");var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s),s};return r.cache=new(ez.Cache||eC),r}function eK(e,t){return e===t||e!=e&&t!=t}function eJ(e){var t;return eZ(t=e)&&eQ(t)&&q.call(e,"callee")&&(!en.call(e,"callee")||$.call(e)==o)}ez.Cache=eC;var eV=Array.isArray;function eQ(e){return null!=e&&eX(e.length)&&!eW(e)}function eW(e){var t=e_(e)?$.call(e):"";return t==f||"[object GeneratorFunction]"==t}function eX(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=0x1fffffffffffff}function e_(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eZ(e){return!!e&&"object"==typeof e}function eY(e){return"symbol"==typeof e||eZ(e)&&$.call(e)==B}var eq=k?z(k):function(e){return eZ(e)&&eX(e.length)&&!!I[$.call(e)]};function e$(e){return eQ(e)?function(e,t){var r=eV(e)||eJ(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,i=!!n;for(var a in e)q.call(e,a)&&!(i&&("length"==a||eG(a,n)))&&r.push(a);return r}(e):function(e){if(r=(t=e)&&t.constructor,t!==("function"==typeof r&&r.prototype||X))return ea(e);var t,r,n=[];for(var i in Object(e))q.call(e,i)&&"constructor"!=i&&n.push(i);return n}(e)}function e0(e){return e}t.exports=function(e,t,r,n){return null==e?[]:(eV(t)||(t=null==t?[]:[t]),eV(r=n?void 0:r)||(r=null==r?[]:[r]),function(e,t,r){var n,i,a,s=-1;t=j(t.length?t:[e0],z(eR));var o=(n=function(e,r,n){return{criteria:j(t,function(t){return t(e)}),index:++s,value:e}},i=-1,a=eQ(e)?Array(e.length):[],eD(e,function(e,t,r){a[++i]=n(e,t,r)}),a),l=o.length;for(o.sort(function(e,t){return function(e,t,r){for(var n=-1,i=e.criteria,a=t.criteria,s=i.length,o=r.length;++n<s;){var l=function(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=e==e,a=eY(e),s=void 0!==t,o=null===t,l=t==t,u=eY(t);if(!o&&!u&&!a&&e>t||a&&s&&l&&!o&&!u||n&&s&&l||!r&&l||!i)return 1;if(!n&&!a&&!u&&e<t||u&&r&&i&&!n&&!a||o&&r&&i||!s&&i||!l)return -1}return 0}(i[n],a[n]);if(l){if(n>=o)return l;return l*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});l--;)o[l]=o[l].value;return o}(e,t,r))}},81405,(e,t,r)=>{e.e,t.exports=function(){var e=function(){function t(e){return i.appendChild(e.dom),e}function r(e){for(var t=0;t<i.children.length;t++)i.children[t].style.display=t===e?"block":"none";n=e}var n=0,i=document.createElement("div");i.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",i.addEventListener("click",function(e){e.preventDefault(),r(++n%i.children.length)},!1);var a=(performance||Date).now(),s=a,o=0,l=t(new e.Panel("FPS","#0ff","#002")),u=t(new e.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var c=t(new e.Panel("MB","#f08","#201"));return r(0),{REVISION:16,dom:i,addPanel:t,showPanel:r,begin:function(){a=(performance||Date).now()},end:function(){o++;var e=(performance||Date).now();if(u.update(e-a,200),e>s+1e3&&(l.update(1e3*o/(e-s),100),s=e,o=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){a=this.end()},domElement:i,setMode:r}};return e.Panel=function(e,t,r){var n=1/0,i=0,a=Math.round,s=a(window.devicePixelRatio||1),o=80*s,l=48*s,u=3*s,c=2*s,d=3*s,f=15*s,h=74*s,p=30*s,m=document.createElement("canvas");m.width=o,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*s+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=r,g.fillRect(0,0,o,l),g.fillStyle=t,g.fillText(e,u,c),g.fillRect(d,f,h,p),g.fillStyle=r,g.globalAlpha=.9,g.fillRect(d,f,h,p),{dom:m,update:function(l,A){n=Math.min(n,l),i=Math.max(i,l),g.fillStyle=r,g.globalAlpha=1,g.fillRect(0,0,o,f),g.fillStyle=t,g.fillText(a(l)+" "+e+" ("+a(n)+"-"+a(i)+")",u,c),g.drawImage(m,d+s,f,h-s,p,d,f,h-s,p),g.fillRect(d+h-s,f,s,p),g.fillStyle=r,g.globalAlpha=.9,g.fillRect(d+h-s,f,s,a((1-l/A)*p))}}},e}()},31713,e=>{"use strict";let t,r,n,i;e.s(["default",()=>dl],31713);var a,s,o,l,u,c,d,f,h,p,m,g,A,y,x,B,C,S,E,T,D,b,M,w,F,R,I,P,L,U,G,O,H,N,k,j,z,K,J,V,Q,W,X,_,Z,Y,q,$,ee,et,er,en,ei,ea,es,eo,el,eu,ec,ed,ef,eh,ep,em,ev,eg,eA,ey,ex,eB,eC,eS,eE,eT,eD,eb,eM,ew,eF,eR,eI,eP,eL,eU=e.i(43476),eG=e.i(71645),eO=e.i(18566),eH=e.i(46712);e.s(["ACESFilmicToneMapping",()=>ek.ACESFilmicToneMapping,"AddEquation",()=>ek.AddEquation,"AddOperation",()=>ek.AddOperation,"AdditiveAnimationBlendMode",()=>ek.AdditiveAnimationBlendMode,"AdditiveBlending",()=>ek.AdditiveBlending,"AgXToneMapping",()=>ek.AgXToneMapping,"AlphaFormat",()=>ek.AlphaFormat,"AlwaysCompare",()=>ek.AlwaysCompare,"AlwaysDepth",()=>ek.AlwaysDepth,"AlwaysStencilFunc",()=>ek.AlwaysStencilFunc,"AmbientLight",()=>ek.AmbientLight,"AnimationAction",()=>ek.AnimationAction,"AnimationClip",()=>ek.AnimationClip,"AnimationLoader",()=>ek.AnimationLoader,"AnimationMixer",()=>ek.AnimationMixer,"AnimationObjectGroup",()=>ek.AnimationObjectGroup,"AnimationUtils",()=>ek.AnimationUtils,"ArcCurve",()=>ek.ArcCurve,"ArrayCamera",()=>ek.ArrayCamera,"ArrowHelper",()=>ek.ArrowHelper,"AttachedBindMode",()=>ek.AttachedBindMode,"Audio",()=>ek.Audio,"AudioAnalyser",()=>ek.AudioAnalyser,"AudioContext",()=>ek.AudioContext,"AudioListener",()=>ek.AudioListener,"AudioLoader",()=>ek.AudioLoader,"AxesHelper",()=>ek.AxesHelper,"BackSide",()=>ek.BackSide,"BasicDepthPacking",()=>ek.BasicDepthPacking,"BasicShadowMap",()=>ek.BasicShadowMap,"BatchedMesh",()=>ek.BatchedMesh,"Bone",()=>ek.Bone,"BooleanKeyframeTrack",()=>ek.BooleanKeyframeTrack,"Box2",()=>ek.Box2,"Box3",()=>ek.Box3,"Box3Helper",()=>ek.Box3Helper,"BoxGeometry",()=>ek.BoxGeometry,"BoxHelper",()=>ek.BoxHelper,"BufferAttribute",()=>ek.BufferAttribute,"BufferGeometry",()=>ek.BufferGeometry,"BufferGeometryLoader",()=>ek.BufferGeometryLoader,"ByteType",()=>ek.ByteType,"Cache",()=>ek.Cache,"Camera",()=>ek.Camera,"CameraHelper",()=>ek.CameraHelper,"CanvasTexture",()=>ek.CanvasTexture,"CapsuleGeometry",()=>ek.CapsuleGeometry,"CatmullRomCurve3",()=>ek.CatmullRomCurve3,"CineonToneMapping",()=>ek.CineonToneMapping,"CircleGeometry",()=>ek.CircleGeometry,"ClampToEdgeWrapping",()=>ek.ClampToEdgeWrapping,"Clock",()=>ek.Clock,"Color",()=>ek.Color,"ColorKeyframeTrack",()=>ek.ColorKeyframeTrack,"ColorManagement",()=>ek.ColorManagement,"CompressedArrayTexture",()=>ek.CompressedArrayTexture,"CompressedCubeTexture",()=>ek.CompressedCubeTexture,"CompressedTexture",()=>ek.CompressedTexture,"CompressedTextureLoader",()=>ek.CompressedTextureLoader,"ConeGeometry",()=>ek.ConeGeometry,"ConstantAlphaFactor",()=>ek.ConstantAlphaFactor,"ConstantColorFactor",()=>ek.ConstantColorFactor,"Controls",()=>ek.Controls,"CubeCamera",()=>ek.CubeCamera,"CubeReflectionMapping",()=>ek.CubeReflectionMapping,"CubeRefractionMapping",()=>ek.CubeRefractionMapping,"CubeTexture",()=>ek.CubeTexture,"CubeTextureLoader",()=>ek.CubeTextureLoader,"CubeUVReflectionMapping",()=>ek.CubeUVReflectionMapping,"CubicBezierCurve",()=>ek.CubicBezierCurve,"CubicBezierCurve3",()=>ek.CubicBezierCurve3,"CubicInterpolant",()=>ek.CubicInterpolant,"CullFaceBack",()=>ek.CullFaceBack,"CullFaceFront",()=>ek.CullFaceFront,"CullFaceFrontBack",()=>ek.CullFaceFrontBack,"CullFaceNone",()=>ek.CullFaceNone,"Curve",()=>ek.Curve,"CurvePath",()=>ek.CurvePath,"CustomBlending",()=>ek.CustomBlending,"CustomToneMapping",()=>ek.CustomToneMapping,"CylinderGeometry",()=>ek.CylinderGeometry,"Cylindrical",()=>ek.Cylindrical,"Data3DTexture",()=>ek.Data3DTexture,"DataArrayTexture",()=>ek.DataArrayTexture,"DataTexture",()=>ek.DataTexture,"DataTextureLoader",()=>ek.DataTextureLoader,"DataUtils",()=>ek.DataUtils,"DecrementStencilOp",()=>ek.DecrementStencilOp,"DecrementWrapStencilOp",()=>ek.DecrementWrapStencilOp,"DefaultLoadingManager",()=>ek.DefaultLoadingManager,"DepthFormat",()=>ek.DepthFormat,"DepthStencilFormat",()=>ek.DepthStencilFormat,"DepthTexture",()=>ek.DepthTexture,"DetachedBindMode",()=>ek.DetachedBindMode,"DirectionalLight",()=>ek.DirectionalLight,"DirectionalLightHelper",()=>ek.DirectionalLightHelper,"DiscreteInterpolant",()=>ek.DiscreteInterpolant,"DodecahedronGeometry",()=>ek.DodecahedronGeometry,"DoubleSide",()=>ek.DoubleSide,"DstAlphaFactor",()=>ek.DstAlphaFactor,"DstColorFactor",()=>ek.DstColorFactor,"DynamicCopyUsage",()=>ek.DynamicCopyUsage,"DynamicDrawUsage",()=>ek.DynamicDrawUsage,"DynamicReadUsage",()=>ek.DynamicReadUsage,"EdgesGeometry",()=>ek.EdgesGeometry,"EllipseCurve",()=>ek.EllipseCurve,"EqualCompare",()=>ek.EqualCompare,"EqualDepth",()=>ek.EqualDepth,"EqualStencilFunc",()=>ek.EqualStencilFunc,"EquirectangularReflectionMapping",()=>ek.EquirectangularReflectionMapping,"EquirectangularRefractionMapping",()=>ek.EquirectangularRefractionMapping,"Euler",()=>ek.Euler,"EventDispatcher",()=>ek.EventDispatcher,"ExternalTexture",()=>ek.ExternalTexture,"ExtrudeGeometry",()=>ek.ExtrudeGeometry,"FileLoader",()=>ek.FileLoader,"Float16BufferAttribute",()=>ek.Float16BufferAttribute,"Float32BufferAttribute",()=>ek.Float32BufferAttribute,"FloatType",()=>ek.FloatType,"Fog",()=>ek.Fog,"FogExp2",()=>ek.FogExp2,"FramebufferTexture",()=>ek.FramebufferTexture,"FrontSide",()=>ek.FrontSide,"Frustum",()=>ek.Frustum,"FrustumArray",()=>ek.FrustumArray,"GLBufferAttribute",()=>ek.GLBufferAttribute,"GLSL1",()=>ek.GLSL1,"GLSL3",()=>ek.GLSL3,"GreaterCompare",()=>ek.GreaterCompare,"GreaterDepth",()=>ek.GreaterDepth,"GreaterEqualCompare",()=>ek.GreaterEqualCompare,"GreaterEqualDepth",()=>ek.GreaterEqualDepth,"GreaterEqualStencilFunc",()=>ek.GreaterEqualStencilFunc,"GreaterStencilFunc",()=>ek.GreaterStencilFunc,"GridHelper",()=>ek.GridHelper,"Group",()=>ek.Group,"HalfFloatType",()=>ek.HalfFloatType,"HemisphereLight",()=>ek.HemisphereLight,"HemisphereLightHelper",()=>ek.HemisphereLightHelper,"IcosahedronGeometry",()=>ek.IcosahedronGeometry,"ImageBitmapLoader",()=>ek.ImageBitmapLoader,"ImageLoader",()=>ek.ImageLoader,"ImageUtils",()=>ek.ImageUtils,"IncrementStencilOp",()=>ek.IncrementStencilOp,"IncrementWrapStencilOp",()=>ek.IncrementWrapStencilOp,"InstancedBufferAttribute",()=>ek.InstancedBufferAttribute,"InstancedBufferGeometry",()=>ek.InstancedBufferGeometry,"InstancedInterleavedBuffer",()=>ek.InstancedInterleavedBuffer,"InstancedMesh",()=>ek.InstancedMesh,"Int16BufferAttribute",()=>ek.Int16BufferAttribute,"Int32BufferAttribute",()=>ek.Int32BufferAttribute,"Int8BufferAttribute",()=>ek.Int8BufferAttribute,"IntType",()=>ek.IntType,"InterleavedBuffer",()=>ek.InterleavedBuffer,"InterleavedBufferAttribute",()=>ek.InterleavedBufferAttribute,"Interpolant",()=>ek.Interpolant,"InterpolateDiscrete",()=>ek.InterpolateDiscrete,"InterpolateLinear",()=>ek.InterpolateLinear,"InterpolateSmooth",()=>ek.InterpolateSmooth,"InterpolationSamplingMode",()=>ek.InterpolationSamplingMode,"InterpolationSamplingType",()=>ek.InterpolationSamplingType,"InvertStencilOp",()=>ek.InvertStencilOp,"KeepStencilOp",()=>ek.KeepStencilOp,"KeyframeTrack",()=>ek.KeyframeTrack,"LOD",()=>ek.LOD,"LatheGeometry",()=>ek.LatheGeometry,"Layers",()=>ek.Layers,"LessCompare",()=>ek.LessCompare,"LessDepth",()=>ek.LessDepth,"LessEqualCompare",()=>ek.LessEqualCompare,"LessEqualDepth",()=>ek.LessEqualDepth,"LessEqualStencilFunc",()=>ek.LessEqualStencilFunc,"LessStencilFunc",()=>ek.LessStencilFunc,"Light",()=>ek.Light,"LightProbe",()=>ek.LightProbe,"Line",()=>ek.Line,"Line3",()=>ek.Line3,"LineBasicMaterial",()=>ek.LineBasicMaterial,"LineCurve",()=>ek.LineCurve,"LineCurve3",()=>ek.LineCurve3,"LineDashedMaterial",()=>ek.LineDashedMaterial,"LineLoop",()=>ek.LineLoop,"LineSegments",()=>ek.LineSegments,"LinearFilter",()=>ek.LinearFilter,"LinearInterpolant",()=>ek.LinearInterpolant,"LinearMipMapLinearFilter",()=>ek.LinearMipMapLinearFilter,"LinearMipMapNearestFilter",()=>ek.LinearMipMapNearestFilter,"LinearMipmapLinearFilter",()=>ek.LinearMipmapLinearFilter,"LinearMipmapNearestFilter",()=>ek.LinearMipmapNearestFilter,"LinearSRGBColorSpace",()=>ek.LinearSRGBColorSpace,"LinearToneMapping",()=>ek.LinearToneMapping,"LinearTransfer",()=>ek.LinearTransfer,"Loader",()=>ek.Loader,"LoaderUtils",()=>ek.LoaderUtils,"LoadingManager",()=>ek.LoadingManager,"LoopOnce",()=>ek.LoopOnce,"LoopPingPong",()=>ek.LoopPingPong,"LoopRepeat",()=>ek.LoopRepeat,"MOUSE",()=>ek.MOUSE,"Material",()=>ek.Material,"MaterialLoader",()=>ek.MaterialLoader,"MathUtils",()=>ek.MathUtils,"Matrix2",()=>ek.Matrix2,"Matrix3",()=>ek.Matrix3,"Matrix4",()=>ek.Matrix4,"MaxEquation",()=>ek.MaxEquation,"Mesh",()=>ek.Mesh,"MeshBasicMaterial",()=>ek.MeshBasicMaterial,"MeshDepthMaterial",()=>ek.MeshDepthMaterial,"MeshDistanceMaterial",()=>ek.MeshDistanceMaterial,"MeshLambertMaterial",()=>ek.MeshLambertMaterial,"MeshMatcapMaterial",()=>ek.MeshMatcapMaterial,"MeshNormalMaterial",()=>ek.MeshNormalMaterial,"MeshPhongMaterial",()=>ek.MeshPhongMaterial,"MeshPhysicalMaterial",()=>ek.MeshPhysicalMaterial,"MeshStandardMaterial",()=>ek.MeshStandardMaterial,"MeshToonMaterial",()=>ek.MeshToonMaterial,"MinEquation",()=>ek.MinEquation,"MirroredRepeatWrapping",()=>ek.MirroredRepeatWrapping,"MixOperation",()=>ek.MixOperation,"MultiplyBlending",()=>ek.MultiplyBlending,"MultiplyOperation",()=>ek.MultiplyOperation,"NearestFilter",()=>ek.NearestFilter,"NearestMipMapLinearFilter",()=>ek.NearestMipMapLinearFilter,"NearestMipMapNearestFilter",()=>ek.NearestMipMapNearestFilter,"NearestMipmapLinearFilter",()=>ek.NearestMipmapLinearFilter,"NearestMipmapNearestFilter",()=>ek.NearestMipmapNearestFilter,"NeutralToneMapping",()=>ek.NeutralToneMapping,"NeverCompare",()=>ek.NeverCompare,"NeverDepth",()=>ek.NeverDepth,"NeverStencilFunc",()=>ek.NeverStencilFunc,"NoBlending",()=>ek.NoBlending,"NoColorSpace",()=>ek.NoColorSpace,"NoToneMapping",()=>ek.NoToneMapping,"NormalAnimationBlendMode",()=>ek.NormalAnimationBlendMode,"NormalBlending",()=>ek.NormalBlending,"NotEqualCompare",()=>ek.NotEqualCompare,"NotEqualDepth",()=>ek.NotEqualDepth,"NotEqualStencilFunc",()=>ek.NotEqualStencilFunc,"NumberKeyframeTrack",()=>ek.NumberKeyframeTrack,"Object3D",()=>ek.Object3D,"ObjectLoader",()=>ek.ObjectLoader,"ObjectSpaceNormalMap",()=>ek.ObjectSpaceNormalMap,"OctahedronGeometry",()=>ek.OctahedronGeometry,"OneFactor",()=>ek.OneFactor,"OneMinusConstantAlphaFactor",()=>ek.OneMinusConstantAlphaFactor,"OneMinusConstantColorFactor",()=>ek.OneMinusConstantColorFactor,"OneMinusDstAlphaFactor",()=>ek.OneMinusDstAlphaFactor,"OneMinusDstColorFactor",()=>ek.OneMinusDstColorFactor,"OneMinusSrcAlphaFactor",()=>ek.OneMinusSrcAlphaFactor,"OneMinusSrcColorFactor",()=>ek.OneMinusSrcColorFactor,"OrthographicCamera",()=>ek.OrthographicCamera,"PCFShadowMap",()=>ek.PCFShadowMap,"PCFSoftShadowMap",()=>ek.PCFSoftShadowMap,"PMREMGenerator",()=>eN.PMREMGenerator,"Path",()=>ek.Path,"PerspectiveCamera",()=>ek.PerspectiveCamera,"Plane",()=>ek.Plane,"PlaneGeometry",()=>ek.PlaneGeometry,"PlaneHelper",()=>ek.PlaneHelper,"PointLight",()=>ek.PointLight,"PointLightHelper",()=>ek.PointLightHelper,"Points",()=>ek.Points,"PointsMaterial",()=>ek.PointsMaterial,"PolarGridHelper",()=>ek.PolarGridHelper,"PolyhedronGeometry",()=>ek.PolyhedronGeometry,"PositionalAudio",()=>ek.PositionalAudio,"PropertyBinding",()=>ek.PropertyBinding,"PropertyMixer",()=>ek.PropertyMixer,"QuadraticBezierCurve",()=>ek.QuadraticBezierCurve,"QuadraticBezierCurve3",()=>ek.QuadraticBezierCurve3,"Quaternion",()=>ek.Quaternion,"QuaternionKeyframeTrack",()=>ek.QuaternionKeyframeTrack,"QuaternionLinearInterpolant",()=>ek.QuaternionLinearInterpolant,"RED_GREEN_RGTC2_Format",()=>ek.RED_GREEN_RGTC2_Format,"RED_RGTC1_Format",()=>ek.RED_RGTC1_Format,"REVISION",()=>ek.REVISION,"RGBADepthPacking",()=>ek.RGBADepthPacking,"RGBAFormat",()=>ek.RGBAFormat,"RGBAIntegerFormat",()=>ek.RGBAIntegerFormat,"RGBA_ASTC_10x10_Format",()=>ek.RGBA_ASTC_10x10_Format,"RGBA_ASTC_10x5_Format",()=>ek.RGBA_ASTC_10x5_Format,"RGBA_ASTC_10x6_Format",()=>ek.RGBA_ASTC_10x6_Format,"RGBA_ASTC_10x8_Format",()=>ek.RGBA_ASTC_10x8_Format,"RGBA_ASTC_12x10_Format",()=>ek.RGBA_ASTC_12x10_Format,"RGBA_ASTC_12x12_Format",()=>ek.RGBA_ASTC_12x12_Format,"RGBA_ASTC_4x4_Format",()=>ek.RGBA_ASTC_4x4_Format,"RGBA_ASTC_5x4_Format",()=>ek.RGBA_ASTC_5x4_Format,"RGBA_ASTC_5x5_Format",()=>ek.RGBA_ASTC_5x5_Format,"RGBA_ASTC_6x5_Format",()=>ek.RGBA_ASTC_6x5_Format,"RGBA_ASTC_6x6_Format",()=>ek.RGBA_ASTC_6x6_Format,"RGBA_ASTC_8x5_Format",()=>ek.RGBA_ASTC_8x5_Format,"RGBA_ASTC_8x6_Format",()=>ek.RGBA_ASTC_8x6_Format,"RGBA_ASTC_8x8_Format",()=>ek.RGBA_ASTC_8x8_Format,"RGBA_BPTC_Format",()=>ek.RGBA_BPTC_Format,"RGBA_ETC2_EAC_Format",()=>ek.RGBA_ETC2_EAC_Format,"RGBA_PVRTC_2BPPV1_Format",()=>ek.RGBA_PVRTC_2BPPV1_Format,"RGBA_PVRTC_4BPPV1_Format",()=>ek.RGBA_PVRTC_4BPPV1_Format,"RGBA_S3TC_DXT1_Format",()=>ek.RGBA_S3TC_DXT1_Format,"RGBA_S3TC_DXT3_Format",()=>ek.RGBA_S3TC_DXT3_Format,"RGBA_S3TC_DXT5_Format",()=>ek.RGBA_S3TC_DXT5_Format,"RGBDepthPacking",()=>ek.RGBDepthPacking,"RGBFormat",()=>ek.RGBFormat,"RGBIntegerFormat",()=>ek.RGBIntegerFormat,"RGB_BPTC_SIGNED_Format",()=>ek.RGB_BPTC_SIGNED_Format,"RGB_BPTC_UNSIGNED_Format",()=>ek.RGB_BPTC_UNSIGNED_Format,"RGB_ETC1_Format",()=>ek.RGB_ETC1_Format,"RGB_ETC2_Format",()=>ek.RGB_ETC2_Format,"RGB_PVRTC_2BPPV1_Format",()=>ek.RGB_PVRTC_2BPPV1_Format,"RGB_PVRTC_4BPPV1_Format",()=>ek.RGB_PVRTC_4BPPV1_Format,"RGB_S3TC_DXT1_Format",()=>ek.RGB_S3TC_DXT1_Format,"RGDepthPacking",()=>ek.RGDepthPacking,"RGFormat",()=>ek.RGFormat,"RGIntegerFormat",()=>ek.RGIntegerFormat,"RawShaderMaterial",()=>ek.RawShaderMaterial,"Ray",()=>ek.Ray,"Raycaster",()=>ek.Raycaster,"RectAreaLight",()=>ek.RectAreaLight,"RedFormat",()=>ek.RedFormat,"RedIntegerFormat",()=>ek.RedIntegerFormat,"ReinhardToneMapping",()=>ek.ReinhardToneMapping,"RenderTarget",()=>ek.RenderTarget,"RenderTarget3D",()=>ek.RenderTarget3D,"RepeatWrapping",()=>ek.RepeatWrapping,"ReplaceStencilOp",()=>ek.ReplaceStencilOp,"ReverseSubtractEquation",()=>ek.ReverseSubtractEquation,"RingGeometry",()=>ek.RingGeometry,"SIGNED_RED_GREEN_RGTC2_Format",()=>ek.SIGNED_RED_GREEN_RGTC2_Format,"SIGNED_RED_RGTC1_Format",()=>ek.SIGNED_RED_RGTC1_Format,"SRGBColorSpace",()=>ek.SRGBColorSpace,"SRGBTransfer",()=>ek.SRGBTransfer,"Scene",()=>ek.Scene,"ShaderChunk",()=>eN.ShaderChunk,"ShaderLib",()=>eN.ShaderLib,"ShaderMaterial",()=>ek.ShaderMaterial,"ShadowMaterial",()=>ek.ShadowMaterial,"Shape",()=>ek.Shape,"ShapeGeometry",()=>ek.ShapeGeometry,"ShapePath",()=>ek.ShapePath,"ShapeUtils",()=>ek.ShapeUtils,"ShortType",()=>ek.ShortType,"Skeleton",()=>ek.Skeleton,"SkeletonHelper",()=>ek.SkeletonHelper,"SkinnedMesh",()=>ek.SkinnedMesh,"Source",()=>ek.Source,"Sphere",()=>ek.Sphere,"SphereGeometry",()=>ek.SphereGeometry,"Spherical",()=>ek.Spherical,"SphericalHarmonics3",()=>ek.SphericalHarmonics3,"SplineCurve",()=>ek.SplineCurve,"SpotLight",()=>ek.SpotLight,"SpotLightHelper",()=>ek.SpotLightHelper,"Sprite",()=>ek.Sprite,"SpriteMaterial",()=>ek.SpriteMaterial,"SrcAlphaFactor",()=>ek.SrcAlphaFactor,"SrcAlphaSaturateFactor",()=>ek.SrcAlphaSaturateFactor,"SrcColorFactor",()=>ek.SrcColorFactor,"StaticCopyUsage",()=>ek.StaticCopyUsage,"StaticDrawUsage",()=>ek.StaticDrawUsage,"StaticReadUsage",()=>ek.StaticReadUsage,"StereoCamera",()=>ek.StereoCamera,"StreamCopyUsage",()=>ek.StreamCopyUsage,"StreamDrawUsage",()=>ek.StreamDrawUsage,"StreamReadUsage",()=>ek.StreamReadUsage,"StringKeyframeTrack",()=>ek.StringKeyframeTrack,"SubtractEquation",()=>ek.SubtractEquation,"SubtractiveBlending",()=>ek.SubtractiveBlending,"TOUCH",()=>ek.TOUCH,"TangentSpaceNormalMap",()=>ek.TangentSpaceNormalMap,"TetrahedronGeometry",()=>ek.TetrahedronGeometry,"Texture",()=>ek.Texture,"TextureLoader",()=>ek.TextureLoader,"TextureUtils",()=>ek.TextureUtils,"Timer",()=>ek.Timer,"TimestampQuery",()=>ek.TimestampQuery,"TorusGeometry",()=>ek.TorusGeometry,"TorusKnotGeometry",()=>ek.TorusKnotGeometry,"Triangle",()=>ek.Triangle,"TriangleFanDrawMode",()=>ek.TriangleFanDrawMode,"TriangleStripDrawMode",()=>ek.TriangleStripDrawMode,"TrianglesDrawMode",()=>ek.TrianglesDrawMode,"TubeGeometry",()=>ek.TubeGeometry,"UVMapping",()=>ek.UVMapping,"Uint16BufferAttribute",()=>ek.Uint16BufferAttribute,"Uint32BufferAttribute",()=>ek.Uint32BufferAttribute,"Uint8BufferAttribute",()=>ek.Uint8BufferAttribute,"Uint8ClampedBufferAttribute",()=>ek.Uint8ClampedBufferAttribute,"Uniform",()=>ek.Uniform,"UniformsGroup",()=>ek.UniformsGroup,"UniformsLib",()=>eN.UniformsLib,"UniformsUtils",()=>ek.UniformsUtils,"UnsignedByteType",()=>ek.UnsignedByteType,"UnsignedInt101111Type",()=>ek.UnsignedInt101111Type,"UnsignedInt248Type",()=>ek.UnsignedInt248Type,"UnsignedInt5999Type",()=>ek.UnsignedInt5999Type,"UnsignedIntType",()=>ek.UnsignedIntType,"UnsignedShort4444Type",()=>ek.UnsignedShort4444Type,"UnsignedShort5551Type",()=>ek.UnsignedShort5551Type,"UnsignedShortType",()=>ek.UnsignedShortType,"VSMShadowMap",()=>ek.VSMShadowMap,"Vector2",()=>ek.Vector2,"Vector3",()=>ek.Vector3,"Vector4",()=>ek.Vector4,"VectorKeyframeTrack",()=>ek.VectorKeyframeTrack,"VideoFrameTexture",()=>ek.VideoFrameTexture,"VideoTexture",()=>ek.VideoTexture,"WebGL3DRenderTarget",()=>ek.WebGL3DRenderTarget,"WebGLArrayRenderTarget",()=>ek.WebGLArrayRenderTarget,"WebGLCoordinateSystem",()=>ek.WebGLCoordinateSystem,"WebGLCubeRenderTarget",()=>ek.WebGLCubeRenderTarget,"WebGLRenderTarget",()=>ek.WebGLRenderTarget,"WebGLRenderer",()=>eN.WebGLRenderer,"WebGLUtils",()=>eN.WebGLUtils,"WebGPUCoordinateSystem",()=>ek.WebGPUCoordinateSystem,"WebXRController",()=>ek.WebXRController,"WireframeGeometry",()=>ek.WireframeGeometry,"WrapAroundEnding",()=>ek.WrapAroundEnding,"ZeroCurvatureEnding",()=>ek.ZeroCurvatureEnding,"ZeroFactor",()=>ek.ZeroFactor,"ZeroSlopeEnding",()=>ek.ZeroSlopeEnding,"ZeroStencilOp",()=>ek.ZeroStencilOp,"createCanvasElement",()=>ek.createCanvasElement],32009);var eN=e.i(8560),ek=e.i(90072),ej=e.i(32009);function ez(e,t){let r;return function(){for(var n=arguments.length,i=Array(n),a=0;a<n;a++)i[a]=arguments[a];window.clearTimeout(r),r=window.setTimeout(()=>e(...i),t)}}let eK=["x","y","top","bottom","left","right","width","height"];var eJ=e.i(46791);function eV(e){let{ref:t,children:r,fallback:n,resize:i,style:a,gl:s,events:o=eH.f,eventSource:l,eventPrefix:u,shadows:c,linear:d,flat:f,legacy:h,orthographic:p,frameloop:m,dpr:g,performance:A,raycaster:y,camera:x,scene:B,onPointerMissed:C,onCreated:S,...E}=e;eG.useMemo(()=>(0,eH.e)(ej),[]);let T=(0,eH.u)(),[D,b]=function(){var e,t,r;let{debounce:n,scroll:i,polyfill:a,offsetSize:s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{debounce:0,scroll:!1,offsetSize:!1},o=a||("undefined"==typeof window?class{}:window.ResizeObserver);if(!o)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[l,u]=(0,eG.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),c=(0,eG.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:l,orientationHandler:null}),d=n?"number"==typeof n?n:n.scroll:null,f=n?"number"==typeof n?n:n.resize:null,h=(0,eG.useRef)(!1);(0,eG.useEffect)(()=>(h.current=!0,()=>void(h.current=!1)));let[p,m,g]=(0,eG.useMemo)(()=>{let e=()=>{let e,t;if(!c.current.element)return;let{left:r,top:n,width:i,height:a,bottom:o,right:l,x:d,y:f}=c.current.element.getBoundingClientRect(),p={left:r,top:n,width:i,height:a,bottom:o,right:l,x:d,y:f};c.current.element instanceof HTMLElement&&s&&(p.height=c.current.element.offsetHeight,p.width=c.current.element.offsetWidth),Object.freeze(p),h.current&&(e=c.current.lastBounds,t=p,!eK.every(r=>e[r]===t[r]))&&u(c.current.lastBounds=p)};return[e,f?ez(e,f):e,d?ez(e,d):e]},[u,s,d,f]);function A(){c.current.scrollContainers&&(c.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null),c.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",c.current.orientationHandler))}function y(){c.current.element&&(c.current.resizeObserver=new o(g),c.current.resizeObserver.observe(c.current.element),i&&c.current.scrollContainers&&c.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),c.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",c.current.orientationHandler))}return e=g,t=!!i,(0,eG.useEffect)(()=>{if(t)return window.addEventListener("scroll",e,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",e,!0)},[e,t]),r=m,(0,eG.useEffect)(()=>(window.addEventListener("resize",r),()=>void window.removeEventListener("resize",r)),[r]),(0,eG.useEffect)(()=>{A(),y()},[i,g,m]),(0,eG.useEffect)(()=>A,[]),[e=>{e&&e!==c.current.element&&(A(),c.current.element=e,c.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:a}=window.getComputedStyle(t);return[n,i,a].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},l,p]}({scroll:!0,debounce:{scroll:50,resize:0},...i}),M=eG.useRef(null),w=eG.useRef(null);eG.useImperativeHandle(t,()=>M.current);let F=(0,eH.a)(C),[R,I]=eG.useState(!1),[P,L]=eG.useState(!1);if(R)throw R;if(P)throw P;let U=eG.useRef(null);(0,eH.b)(()=>{let e=M.current;b.width>0&&b.height>0&&e&&(U.current||(U.current=(0,eH.c)(e)),async function(){await U.current.configure({gl:s,scene:B,events:o,shadows:c,linear:d,flat:f,legacy:h,orthographic:p,frameloop:m,dpr:g,performance:A,raycaster:y,camera:x,size:b,onPointerMissed:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return null==F.current?void 0:F.current(...t)},onCreated:e=>{null==e.events.connect||e.events.connect(l?(0,eH.i)(l)?l.current:l:w.current),u&&e.setEvents({compute:(e,t)=>{let r=e[u+"X"],n=e[u+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==S||S(e)}}),U.current.render((0,eU.jsx)(T,{children:(0,eU.jsx)(eH.E,{set:L,children:(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)(eH.B,{set:I}),children:null!=r?r:null})})}))}())}),eG.useEffect(()=>{let e=M.current;if(e)return()=>(0,eH.d)(e)},[]);let G=l?"none":"auto";return(0,eU.jsx)("div",{ref:w,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:G,...a},...E,children:(0,eU.jsx)("div",{ref:D,style:{width:"100%",height:"100%"},children:(0,eU.jsx)("canvas",{ref:M,style:{display:"block"},children:n})})})}function eQ(e){return(0,eU.jsx)(eJ.FiberProvider,{children:(0,eU.jsx)(eV,{...e})})}e.i(39695),e.i(98133),e.i(95087);var eW=e.i(16096),eX=e.i(5230),e_=e.i(80520),eZ=ek,eY=class{get autoReset(){return this._autoReset}set autoReset(e){"undefined"!=typeof document&&void 0!==document.hidden&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=e)}get delta(){return .001*this._delta}get fixedDelta(){return .001*this._fixedDelta}set fixedDelta(e){this._fixedDelta=1e3*e}get elapsed(){return .001*this._elapsed}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(void 0!==e?e:performance.now())-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}getDelta(){return this.delta}getElapsed(){return this.elapsed}handleEvent(e){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}},eq=(()=>{let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),r=new eZ.BufferGeometry;return r.setAttribute("position",new eZ.BufferAttribute(e,3)),r.setAttribute("uv",new eZ.BufferAttribute(t,2)),r})(),e$=class e{static get fullscreenGeometry(){return eq}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.fullscreenMaterial;null!==t&&(t.needsUpdate=!0),this.rtt=!e}}set mainScene(e){}set mainCamera(e){}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return null!==this.screen?this.screen.material:null}set fullscreenMaterial(t){let r=this.screen;null!==r?r.material=t:((r=new eZ.Mesh(e.fullscreenGeometry,t)).frustumCulled=!1,null===this.scene&&(this.scene=new eZ.Scene),this.scene.add(r),this.screen=r)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e){arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking}render(e,t,r,n,i){throw Error("Render method not implemented!")}setSize(e,t){}initialize(e,t,r){}dispose(){for(let t of Object.keys(this)){let r=this[t];(r instanceof eZ.WebGLRenderTarget||r instanceof eZ.Material||r instanceof eZ.Texture||r instanceof e)&&this[t].dispose()}null!==this.fullscreenMaterial&&this.fullscreenMaterial.dispose()}constructor(e="Pass",t=new eZ.Scene,r=new eZ.OrthographicCamera){this.name=e,this.renderer=null,this.scene=t,this.camera=r,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}},e0=class extends e${render(e,t,r,n,i){let a=e.state.buffers.stencil;a.setLocked(!1),a.setTest(!1)}constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}},e1="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",e2=class extends eZ.ShaderMaterial{get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){let t=null!==e;this.colorWrite!==t&&(t?this.defines.COLOR_WRITE=!0:delete this.defines.COLOR_WRITE,this.colorWrite=t,this.needsUpdate=!0),this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){let t=null!==e;this.depthWrite!==t&&(t?this.defines.DEPTH_WRITE=!0:delete this.defines.DEPTH_WRITE,this.depthTest=t,this.depthWrite=t,this.needsUpdate=!0),this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get channelWeights(){return this.uniforms.channelWeights.value}set channelWeights(e){null!==e?(this.defines.USE_WEIGHTS="1",this.uniforms.channelWeights.value=e):delete this.defines.USE_WEIGHTS,this.needsUpdate=!0}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}constructor(){super({name:"CopyMaterial",defines:{DEPTH_PACKING:"0",COLOR_WRITE:"1"},uniforms:{inputBuffer:new eZ.Uniform(null),depthBuffer:new eZ.Uniform(null),channelWeights:new eZ.Uniform(null),opacity:new eZ.Uniform(1)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef COLOR_WRITE\n#include <common>\n#include <dithering_pars_fragment>\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#endif\n#ifdef DEPTH_WRITE\n#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}\n#endif\n#ifdef USE_WEIGHTS\nuniform vec4 channelWeights;\n#endif\nuniform float opacity;varying vec2 vUv;void main(){\n#ifdef COLOR_WRITE\nvec4 texel=texture2D(inputBuffer,vUv);\n#ifdef USE_WEIGHTS\ntexel*=channelWeights;\n#endif\ngl_FragColor=opacity*texel;\n#ifdef COLOR_SPACE_CONVERSION\n#include <colorspace_fragment>\n#endif\n#include <dithering_fragment>\n#else\ngl_FragColor=vec4(0.0);\n#endif\n#ifdef DEPTH_WRITE\ngl_FragDepth=readDepth(vUv);\n#endif\n}",vertexShader:e1}),this.depthFunc=eZ.AlwaysDepth}},e9=class extends e${get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,r,n,i){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTarget.texture.type=r,r!==eZ.UnsignedByteType?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":null!==e&&e.outputColorSpace===eZ.SRGBColorSpace&&(this.renderTarget.texture.colorSpace=eZ.SRGBColorSpace))}constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new e2,this.needsSwap=!1,this.renderTarget=e,void 0===e&&(this.renderTarget=new eZ.WebGLRenderTarget(1,1,{minFilter:eZ.LinearFilter,magFilter:eZ.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=t}},e3=new eZ.Color,e4=class extends e${setClearFlags(e,t,r){this.color=e,this.depth=t,this.stencil=r}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,r,n,i){let a=this.overrideClearColor,s=this.overrideClearAlpha,o=e.getClearAlpha(),l=null!==a,u=s>=0;l?(e.getClearColor(e3),e.setClearColor(a,u?s:o)):u&&e.setClearAlpha(s),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),l?e.setClearColor(e3,o):u&&e.setClearAlpha(o)}constructor(e=!0,t=!0,r=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=r,this.overrideClearColor=null,this.overrideClearAlpha=-1}},e8=class extends e${set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,r,n,i){let a=e.getContext(),s=e.state.buffers,o=this.scene,l=this.camera,u=this.clearPass,c=+!this.inverted;s.color.setMask(!1),s.depth.setMask(!1),s.color.setLocked(!0),s.depth.setLocked(!0),s.stencil.setTest(!0),s.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),s.stencil.setFunc(a.ALWAYS,c,0xffffffff),s.stencil.setClear(1-c),s.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?u.render(e,null):(u.render(e,t),u.render(e,r))),this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),e.render(o,l),e.setRenderTarget(r)),e.render(o,l),s.color.setLocked(!1),s.depth.setLocked(!1),s.stencil.setLocked(!1),s.stencil.setFunc(a.EQUAL,1,0xffffffff),s.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),s.stencil.setLocked(!0)}constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new e4(!1,!1,!0),this.inverse=!1}},e5=class{get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){let t=this.inputBuffer,r=this.multisampling;r>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):r!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,null!==e){let t=e.getSize(new eZ.Vector2),r=e.getContext().getContextAttributes().alpha,n=this.inputBuffer.texture.type;for(let i of(n===eZ.UnsignedByteType&&e.outputColorSpace===eZ.SRGBColorSpace&&(this.inputBuffer.texture.colorSpace=eZ.SRGBColorSpace,this.outputBuffer.texture.colorSpace=eZ.SRGBColorSpace,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height),this.passes))i.initialize(e,r,n)}}replaceRenderer(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=this.renderer,n=r.domElement.parentNode;return this.setRenderer(e),t&&null!==n&&(n.removeChild(r.domElement),n.appendChild(e.domElement)),r}createDepthTexture(){let e=this.depthTexture=new eZ.DepthTexture;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=eZ.DepthStencilFormat,e.type=eZ.UnsignedInt248Type):e.type=eZ.UnsignedIntType,e}deleteDepthTexture(){if(null!==this.depthTexture)for(let e of(this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose(),this.passes))e.setDepthTexture(null)}createBuffer(e,t,r,n){let i=this.renderer,a=null===i?new eZ.Vector2:i.getDrawingBufferSize(new eZ.Vector2),s={minFilter:eZ.LinearFilter,magFilter:eZ.LinearFilter,stencilBuffer:t,depthBuffer:e,type:r},o=new eZ.WebGLRenderTarget(a.width,a.height,s);return n>0&&(o.samples=n),r===eZ.UnsignedByteType&&null!==i&&i.outputColorSpace===eZ.SRGBColorSpace&&(o.texture.colorSpace=eZ.SRGBColorSpace),o.texture.name="EffectComposer.Buffer",o.texture.generateMipmaps=!1,o}setMainScene(e){for(let t of this.passes)t.mainScene=e}setMainCamera(e){for(let t of this.passes)t.mainCamera=e}addPass(e,t){let r=this.passes,n=this.renderer,i=n.getDrawingBufferSize(new eZ.Vector2),a=n.getContext().getContextAttributes().alpha,s=this.inputBuffer.texture.type;if(e.setRenderer(n),e.setSize(i.width,i.height),e.initialize(n,a,s),this.autoRenderToScreen&&(r.length>0&&(r[r.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),void 0!==t?r.splice(t,0,e):r.push(e),this.autoRenderToScreen&&(r[r.length-1].renderToScreen=!0),e.needsDepthTexture||null!==this.depthTexture)if(null===this.depthTexture){let t=this.createDepthTexture();for(e of r)e.setDepthTexture(t)}else e.setDepthTexture(this.depthTexture)}removePass(e){let t=this.passes,r=t.indexOf(e);-1!==r&&t.splice(r,1).length>0&&(null!==this.depthTexture&&(t.reduce((e,t)=>e||t.needsDepthTexture,!1)||(e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null),this.deleteDepthTexture())),this.autoRenderToScreen&&r===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0)))}removeAllPasses(){let e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t,r,n,i=this.renderer,a=this.copyPass,s=this.inputBuffer,o=this.outputBuffer,l=!1;for(let u of(void 0===e&&(this.timer.update(),e=this.timer.getDelta()),this.passes))u.enabled&&(u.render(i,s,o,e,l),u.needsSwap&&(l&&(a.renderToScreen=u.renderToScreen,t=i.getContext(),(r=i.state.buffers.stencil).setFunc(t.NOTEQUAL,1,0xffffffff),a.render(i,s,o,e,l),r.setFunc(t.EQUAL,1,0xffffffff)),n=s,s=o,o=n),u instanceof e8?l=!0:u instanceof e0&&(l=!1))}setSize(e,t,r){let n=this.renderer,i=n.getSize(new eZ.Vector2);(void 0===e||void 0===t)&&(e=i.width,t=i.height),(i.width!==e||i.height!==t)&&n.setSize(e,t,r);let a=n.getDrawingBufferSize(new eZ.Vector2);for(let e of(this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.passes))e.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],null!==this.inputBuffer&&this.inputBuffer.dispose(),null!==this.outputBuffer&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),e$.fullscreenGeometry.dispose()}constructor(e=null,{depthBuffer:t=!0,stencilBuffer:r=!1,multisampling:n=0,frameBufferType:i}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,r,i,n),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new e9,this.depthTexture=null,this.passes=[],this.timer=new eY,this.autoRenderToScreen=!0,this.setRenderer(e)}},e6={NONE:0,DEPTH:1,CONVOLUTION:2},e7={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},te=class{constructor(){this.shaderParts=new Map([[e7.FRAGMENT_HEAD,null],[e7.FRAGMENT_MAIN_UV,null],[e7.FRAGMENT_MAIN_IMAGE,null],[e7.VERTEX_HEAD,null],[e7.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=e6.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=eZ.LinearSRGBColorSpace}},tt=!1,tr=class{cloneMaterial(e){if(!(e instanceof eZ.ShaderMaterial))return e.clone();let t=e.uniforms,r=new Map;for(let e in t){let n=t[e].value;n.isRenderTargetTexture&&(t[e].value=null,r.set(e,n))}let n=e.clone();for(let e of r)t[e[0]].value=e[1],n.uniforms[e[0]].value=e[1];return n}setMaterial(e){if(this.disposeMaterials(),this.material=e,null!==e){let t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(let r of t)r.uniforms=Object.assign({},e.uniforms),r.side=eZ.FrontSide;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=eZ.BackSide,r}),this.materialsDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=eZ.DoubleSide,r}),this.materialsFlatShaded=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r}),this.materialsFlatShadedBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=eZ.BackSide,r}),this.materialsFlatShadedDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=eZ.DoubleSide,r})}}render(e,t,r){let n=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,tt){let n=this.originalMaterials;for(let i of(this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,r),n))i[0].material=i[1];this.meshCount!==n.size&&n.clear()}else{let n=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,r),t.overrideMaterial=n}e.shadowMap.enabled=n}disposeMaterials(){if(null!==this.material)for(let e of this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide))e.dispose()}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return tt}static set workaroundEnabled(e){tt=e}constructor(e=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(e),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case eZ.DoubleSide:t=this.materialsFlatShadedDoubleSide;break;case eZ.BackSide:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded}else switch(e.material.side){case eZ.DoubleSide:t=this.materialsDoubleSide;break;case eZ.BackSide:t=this.materialsBackSide;break;default:t=this.materials}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}},tn=class extends eZ.EventDispatcher{updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,r=this.effectiveSize,n=this.scale;-1!==t.width?r.width=t.width:-1!==t.height?r.width=Math.round(t.height*(e.width/Math.max(e.height,1))):r.width=Math.round(e.width*n),-1!==t.height?r.height=t.height:-1!==t.width?r.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):r.height=Math.round(e.height*n)}get width(){return this.effectiveSize.width}set width(e){this.preferredWidth=e}get height(){return this.effectiveSize.height}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferredSize.setScalar(-1),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.baseSize.width}set baseWidth(e){this.baseSize.width!==e&&(this.baseSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(e){this.baseWidth=e}get baseHeight(){return this.baseSize.height}set baseHeight(e){this.baseSize.height!==e&&(this.baseSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.baseSize.width!==e||this.baseSize.height!==t)&&(this.baseSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(e){this.preferredSize.width!==e&&(this.preferredSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferredSize.height}set preferredHeight(e){this.preferredSize.height!==e&&(this.preferredSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferredSize.width!==e||this.preferredSize.height!==t)&&(this.preferredSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(e){this.s=e.scale,this.baseSize.set(e.baseWidth,e.baseHeight),this.preferredSize.set(e.preferredWidth,e.preferredHeight),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return -1}constructor(e,t=-1,r=-1,n=1){super(),this.resizable=e,this.baseSize=new eZ.Vector2(1,1),this.preferredSize=new eZ.Vector2(t,r),this.target=this.preferredSize,this.s=n,this.effectiveSize=new eZ.Vector2,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}},ti=new class{getNextId(){return this.nextId++}reset(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.nextId=e,this}constructor(e=0){this.nextId=e}}(2),ta=class extends Set{get layer(){return this._layer}set layer(e){let t=this._layer;for(let r of this)r.layers.disable(t),r.layers.enable(e);this._layer=e}getLayer(){return this.layer}setLayer(e){this.layer=e}isExclusive(){return this.exclusive}setExclusive(e){this.exclusive=e}clear(){let e=this.layer;for(let t of this)t.layers.disable(e);return super.clear()}set(e){for(let t of(this.clear(),e))this.add(t);return this}indexOf(e){return this.has(e)?0:-1}add(e){return this.exclusive?e.layers.set(this.layer):e.layers.enable(this.layer),super.add(e)}delete(e){return this.has(e)&&e.layers.disable(this.layer),super.delete(e)}toggle(e){let t;return this.has(e)?(this.delete(e),t=!1):(this.add(e),t=!0),t}setVisible(e){for(let t of this)e?t.layers.enable(0):t.layers.disable(0);return this}constructor(e,t=ti.getNextId()){super(),this.exclusive=!1,this._layer=t,(this._layer<1||this._layer>31)&&(console.warn("Layer out of range, resetting to 2"),ti.reset(2),this._layer=ti.getNextId()),void 0!==e&&this.set(e)}},ts={ADD:0,ALPHA:23,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},to=new Map([[ts.ADD,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb+y.rgb,y.a),y.a*opacity);}"],[ts.AVERAGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4((x.rgb+y.rgb)*0.5,y.a),y.a*opacity);}"],[ts.COLOR,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.xy,xHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.COLOR_BURN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb,b=y.rgb;vec3 z=mix(step(0.0,b)*(1.0-min(vec3(1.0),(1.0-a)/b)),vec3(1.0),step(1.0,a));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.COLOR_DODGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb,b=y.rgb;vec3 z=step(0.0,a)*mix(min(vec3(1.0),a/max(1.0-b,1e-9)),vec3(1.0),step(1.0,b));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.DARKEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(min(x.rgb,y.rgb),y.a),y.a*opacity);}"],[ts.DIFFERENCE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(abs(x.rgb-y.rgb),y.a),y.a*opacity);}"],[ts.DIVIDE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb/max(y.rgb,1e-12),y.a),y.a*opacity);}"],[ts.DST,null],[ts.EXCLUSION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4((x.rgb+y.rgb-2.0*x.rgb*y.rgb),y.a),y.a*opacity);}"],[ts.HARD_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=min(x.rgb,1.0);vec3 b=min(y.rgb,1.0);vec3 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,b));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.HARD_MIX,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(step(1.0,x.rgb+y.rgb),y.a),y.a*opacity);}"],[ts.HUE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.x,xHSL.yz));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.INVERT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(1.0-y.rgb,y.a),y.a*opacity);}"],[ts.INVERT_RGB,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(y.rgb*(1.0-x.rgb),y.a),y.a*opacity);}"],[ts.LIGHTEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(max(x.rgb,y.rgb),y.a),y.a*opacity);}"],[ts.LINEAR_BURN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(clamp(y.rgb+x.rgb-1.0,0.0,1.0),y.a),y.a*opacity);}"],[ts.LINEAR_DODGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(min(x.rgb+y.rgb,1.0),y.a),y.a*opacity);}"],[ts.LINEAR_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(clamp(2.0*y.rgb+x.rgb-1.0,0.0,1.0),y.a),y.a*opacity);}"],[ts.LUMINOSITY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.xy,yHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.MULTIPLY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb*y.rgb,y.a),y.a*opacity);}"],[ts.NEGATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(1.0-abs(1.0-x.rgb-y.rgb),y.a),y.a*opacity);}"],[ts.NORMAL,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,y.a*opacity);}"],[ts.OVERLAY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(2.0*y.rgb*x.rgb,1.0-2.0*(1.0-y.rgb)*(1.0-x.rgb),step(0.5,x.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.PIN_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 y2=2.0*y.rgb;vec3 z=mix(mix(y2,x.rgb,step(0.5*x.rgb,y.rgb)),max(y2-1.0,vec3(0.0)),step(x.rgb,y2-1.0));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.REFLECT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(min(x.rgb*x.rgb/max(1.0-y.rgb,1e-12),1.0),y.rgb,step(1.0,y.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.SATURATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.x,yHSL.y,xHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.SCREEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb+y.rgb-min(x.rgb*y.rgb,1.0),y.a),y.a*opacity);}"],[ts.SOFT_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb;vec3 b=y.rgb;vec3 y2=2.0*b;vec3 w=step(0.5,b);vec3 c=a-(1.0-y2)*a*(1.0-a);vec3 d=mix(a+(y2-1.0)*(sqrt(a)-a),a+(y2-1.0)*a*((16.0*a-12.0)*a+3.0),w*(1.0-step(0.25,a)));vec3 z=mix(c,d,w);return mix(x,vec4(z,y.a),y.a*opacity);}"],[ts.SRC,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}"],[ts.SUBTRACT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(max(x.rgb+y.rgb-1.0,0.0),y.a),y.a*opacity);}"],[ts.VIVID_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(max(1.0-min((1.0-x.rgb)/(2.0*y.rgb),1.0),0.0),min(x.rgb/(2.0*(1.0-y.rgb)),1.0),step(0.5,y.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"]]),tl=class extends eZ.EventDispatcher{getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this._blendFunction}set blendFunction(e){this._blendFunction=e,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return to.get(this.blendFunction)}constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new eZ.Uniform(t)}};eZ.CanvasTexture;var tu=class extends eZ.EventDispatcher{get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(e){this._inputColorSpace=e,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e,this.setChanged()}set mainScene(e){}set mainCamera(e){}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(e){arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking}update(e,t,r){}setSize(e,t){}initialize(e,t,r){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof eZ.WebGLRenderTarget||t instanceof eZ.Material||t instanceof eZ.Texture||t instanceof e$)&&this[e].dispose()}}constructor(e,t,{attributes:r=e6.NONE,blendFunction:n=ts.NORMAL,defines:i=new Map,uniforms:a=new Map,extensions:s=null,vertexShader:o=null}={}){super(),this.name=e,this.renderer=null,this.attributes=r,this.fragmentShader=t,this.vertexShader=o,this.defines=i,this.uniforms=a,this.extensions=s,this.blendMode=new tl(n),this.blendMode.addEventListener("change",e=>this.setChanged()),this._inputColorSpace=eZ.LinearSRGBColorSpace,this._outputColorSpace=eZ.NoColorSpace}},tc={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3},td=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],tf=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return td[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t,.5*e,.5*t)}setSize(e,t){let r=1/e,n=1/t;this.uniforms.texelSize.value.set(r,n,.5*r,.5*n)}constructor(e=new eZ.Vector4){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(new eZ.Vector4),scale:new eZ.Uniform(1),kernel:new eZ.Uniform(0)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;\n#include <colorspace_fragment>\n}",vertexShader:"uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.setTexelSize(e.x,e.y),this.kernelSize=tc.MEDIUM}},th=class extends e${getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(e){this._blurMaterial=e}get dithering(){return this.copyMaterial.dithering}set dithering(e){this.copyMaterial.dithering=e}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(e){this.blurMaterial.kernelSize=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,n,i){let a=this.scene,s=this.camera,o=this.renderTargetA,l=this.renderTargetB,u=this.blurMaterial,c=u.kernelSequence,d=t;this.fullscreenMaterial=u;for(let t=0,r=c.length;t<r;++t){let r=(1&t)==0?o:l;u.kernel=c[t],u.inputBuffer=d.texture,e.setRenderTarget(r),e.render(a,s),d=r}this.fullscreenMaterial=this.copyMaterial,this.copyMaterial.inputBuffer=d.texture,e.setRenderTarget(this.renderToScreen?null:r),e.render(a,s)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let n=r.width,i=r.height;this.renderTargetA.setSize(n,i),this.renderTargetB.setSize(n,i),this.blurMaterial.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTargetA.texture.type=r,this.renderTargetB.texture.type=r,r!==eZ.UnsignedByteType?(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1"):null!==e&&e.outputColorSpace===eZ.SRGBColorSpace&&(this.renderTargetA.texture.colorSpace=eZ.SRGBColorSpace,this.renderTargetB.texture.colorSpace=eZ.SRGBColorSpace))}static get AUTO_SIZE(){return tn.AUTO_SIZE}constructor({kernelSize:e=tc.MEDIUM,resolutionScale:t=.5,width:r=tn.AUTO_SIZE,height:n=tn.AUTO_SIZE,resolutionX:i=r,resolutionY:a=n}={}){super("KawaseBlurPass"),this.renderTargetA=new eZ.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";let s=this.resolution=new tn(this,i,a,t);s.addEventListener("change",e=>this.setSize(s.baseWidth,s.baseHeight)),this._blurMaterial=new tf,this._blurMaterial.kernelSize=e,this.copyMaterial=new e2}},tp=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return void 0!==this.defines.COLOR}set colorOutput(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return null!==this.luminanceRange}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){null!==e?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:eZ.REVISION.replace(/\D+/g,"")},uniforms:{inputBuffer:new eZ.Uniform(null),threshold:new eZ.Uniform(0),smoothing:new eZ.Uniform(1),range:new eZ.Uniform(null)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#ifdef RANGE\nuniform vec2 range;\n#elif defined(THRESHOLD)\nuniform float threshold;uniform float smoothing;\n#endif\nvarying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0;\n#ifdef RANGE\nfloat low=step(range.x,l);float high=step(l,range.y);mask=low*high;\n#elif defined(THRESHOLD)\nmask=smoothstep(threshold,threshold+smoothing,l);\n#endif\n#ifdef COLOR\ngl_FragColor=texel*mask;\n#else\ngl_FragColor=vec4(l*mask);\n#endif\n}",vertexShader:e1}),this.colorOutput=e,this.luminanceRange=t}},tm=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(new eZ.Vector2)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#define WEIGHT_INNER 0.125\n#define WEIGHT_OUTER 0.0555555\nvarying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c;\n#include <colorspace_fragment>\n}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}},tv=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}set supportBuffer(e){this.uniforms.supportBuffer.value=e}get radius(){return this.uniforms.radius.value}set radius(e){this.uniforms.radius.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new eZ.Uniform(null),supportBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(new eZ.Vector2),radius:new eZ.Uniform(.85)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer;\n#else\nuniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer;\n#endif\nuniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius);\n#include <colorspace_fragment>\n}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}},tg={RED:0,GREEN:1,BLUE:2,ALPHA:3},tA={DISCARD:0,MULTIPLY_RGB_SET_ALPHA:2,MULTIPLY_RGB:3},ty=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set cocBuffer(e){this.uniforms.cocBuffer.value=e}setCoCBuffer(e){this.uniforms.cocBuffer.value=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(e){return this.scale}setScale(e){this.scale=e}generateKernel(){let e=new Float64Array(128),t=new Float64Array(32),r=0,n=0;for(let i=0,a=Math.sqrt(80);i<80;++i){let s=2.39996323*i,o=Math.sqrt(i)/a,l=o*Math.cos(s),u=o*Math.sin(s);i%5==0?(t[n++]=l,t[n++]=u):(e[r++]=l,e[r++]=u)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(e=!1,t=!1){super({name:"BokehMaterial",defines:{PASS:e?"2":"1"},uniforms:{inputBuffer:new eZ.Uniform(null),cocBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(new eZ.Vector2),kernel64:new eZ.Uniform(null),kernel16:new eZ.Uniform(null),scale:new eZ.Uniform(1)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#if PASS == 1\nuniform vec4 kernel64[32];\n#else\nuniform vec4 kernel16[8];\n#endif\nuniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;varying vec2 vUv;void main(){\n#ifdef FOREGROUND\nvec2 cocNearFar=texture2D(cocBuffer,vUv).rg*scale;float coc=cocNearFar.x;\n#else\nfloat coc=texture2D(cocBuffer,vUv).g*scale;\n#endif\nif(coc==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{\n#ifdef FOREGROUND\nvec2 step=texelSize*max(cocNearFar.x,cocNearFar.y);\n#else\nvec2 step=texelSize*coc;\n#endif\n#if PASS == 1\nvec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0;\n#else\nvec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue;\n#endif\n}}",vertexShader:e1}),t&&(this.defines.FOREGROUND="1"),this.generateKernel()}},tx=class extends eZ.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(e){this.uniforms.focusDistance.value=e}get worldFocusDistance(){return this.focusDistance}set worldFocusDistance(e){this.focusDistance=e}getFocusDistance(e){this.uniforms.focusDistance.value=e}setFocusDistance(e){this.uniforms.focusDistance.value=e}get focalLength(){return this.focusRange}set focalLength(e){this.focusRange=e}get focusRange(){return this.uniforms.focusRange.value}set focusRange(e){this.uniforms.focusRange.value=e}get worldFocusRange(){return this.focusRange}set worldFocusRange(e){this.focusRange=e}getFocalLength(e){return this.focusRange}setFocalLength(e){this.focusRange=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){this.uniforms.projectionMatrix.value=e.projectionMatrix,this.uniforms.projectionMatrixInverse.value=e.projectionMatrixInverse,this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far;let t=void 0!==this.defines.PERSPECTIVE_CAMERA;e instanceof eZ.PerspectiveCamera?t||(this.defines.PERSPECTIVE_CAMERA=!0,this.needsUpdate=!0):t&&(delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}constructor(e=null){super({name:"CircleOfConfusionMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eZ.Uniform(null),projectionMatrix:new eZ.Uniform(null),projectionMatrixInverse:new eZ.Uniform(null),cameraNear:new eZ.Uniform(.3),cameraFar:new eZ.Uniform(1e3),focusDistance:new eZ.Uniform(0),focusRange:new eZ.Uniform(0)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nuniform mat4 projectionMatrix;uniform mat4 projectionMatrixInverse;uniform float cameraNear;uniform float cameraFar;uniform float focusDistance;uniform float focusRange;varying vec2 vUv;float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nfloat depth=texture2D(depthBuffer,uv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth=1.0-depth;\n#endif\nreturn depth;}\n#ifdef PERSPECTIVE_CAMERA\n#define getViewZ(depth) perspectiveDepthToViewZ(depth, cameraNear, cameraFar)\n#else\n#define getViewZ(depth) orthographicDepthToViewZ(depth, cameraNear, cameraFar)\n#endif\nvec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(projectionMatrixInverse*clipPosition).xyz;}vec3 getViewPosition(const in vec2 screenPosition,const in float depth){return getViewPosition(screenPosition,depth,getViewZ(depth));}\n#define getDistance(viewPosition) length(viewPosition)\nvoid main(){float depth=readDepth(vUv);vec3 viewPosition=getViewPosition(vUv,depth);float distance=getDistance(viewPosition);float signedDistance=distance-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}",vertexShader:e1}),this.uniforms.focalLength=this.uniforms.focusRange,null!==e&&this.copyCameraSettings(e)}},tB=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set maskTexture(e){this.uniforms.maskTexture.value=e,delete this.defines.MASK_PRECISION_HIGH,e.type!==eZ.UnsignedByteType&&(this.defines.MASK_PRECISION_HIGH="1"),this.needsUpdate=!0}setMaskTexture(e){this.maskTexture=e}set colorChannel(e){this.defines.COLOR_CHANNEL=e.toFixed(0),this.needsUpdate=!0}setColorChannel(e){this.colorChannel=e}set maskFunction(e){this.defines.MASK_FUNCTION=e.toFixed(0),this.needsUpdate=!0}setMaskFunction(e){this.maskFunction=e}get inverted(){return void 0!==this.defines.INVERTED}set inverted(e){this.inverted&&!e?delete this.defines.INVERTED:e&&(this.defines.INVERTED="1"),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get strength(){return this.uniforms.strength.value}set strength(e){this.uniforms.strength.value=e}getStrength(){return this.strength}setStrength(e){this.strength=e}constructor(e=null){super({name:"MaskMaterial",uniforms:{maskTexture:new eZ.Uniform(e),inputBuffer:new eZ.Uniform(null),strength:new eZ.Uniform(1)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#ifdef MASK_PRECISION_HIGH\nuniform mediump sampler2D maskTexture;\n#else\nuniform lowp sampler2D maskTexture;\n#endif\n#if MASK_FUNCTION != 0\nuniform float strength;\n#endif\nvarying vec2 vUv;void main(){\n#if COLOR_CHANNEL == 0\nfloat mask=texture2D(maskTexture,vUv).r;\n#elif COLOR_CHANNEL == 1\nfloat mask=texture2D(maskTexture,vUv).g;\n#elif COLOR_CHANNEL == 2\nfloat mask=texture2D(maskTexture,vUv).b;\n#else\nfloat mask=texture2D(maskTexture,vUv).a;\n#endif\n#if MASK_FUNCTION == 0\n#ifdef INVERTED\nmask=(mask>0.0)?0.0:1.0;\n#else\nmask=(mask>0.0)?1.0:0.0;\n#endif\n#else\nmask=clamp(mask*strength,0.0,1.0);\n#ifdef INVERTED\nmask=1.0-mask;\n#endif\n#endif\n#if MASK_FUNCTION == 3\nvec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=vec4(mask*texel.rgb,texel.a);\n#elif MASK_FUNCTION == 2\ngl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask);\n#else\ngl_FragColor=mask*texture2D(inputBuffer,vUv);\n#endif\n}",vertexShader:e1}),this.colorChannel=tg.RED,this.maskFunction=tA.DISCARD}},tC=class extends e${setInput(e){this.input=e}render(e,t,r,n,i){let a=this.fullscreenMaterial.uniforms;null!==t&&void 0!==a&&void 0!==a[this.input]&&(a[this.input].value=t.texture),e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}initialize(e,t,r){void 0!==r&&r!==eZ.UnsignedByteType&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}constructor(e,t="inputBuffer"){super("ShaderPass"),this.fullscreenMaterial=e,this.input=t}},tS=new eZ.Vector3,tE=class extends tu{set mainCamera(e){this.camera=e,this.cocMaterial.copyCameraSettings(e)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(e){this.maskFunction!==e&&(this.defines.set("MASK_FUNCTION",e.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=e,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(e){this.bokehNearBasePass.fullscreenMaterial.scale=e,this.bokehNearFillPass.fullscreenMaterial.scale=e,this.bokehFarBasePass.fullscreenMaterial.scale=e,this.bokehFarFillPass.fullscreenMaterial.scale=e,this.maskPass.fullscreenMaterial.strength=e,this.uniforms.get("scale").value=e}getBokehScale(){return this.bokehScale}setBokehScale(e){this.bokehScale=e}getTarget(){return this.target}setTarget(e){this.target=e}calculateFocusDistance(e){return this.camera.getWorldPosition(tS).distanceTo(e)}setDepthTexture(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.cocMaterial.depthBuffer=e,this.cocMaterial.depthPacking=t}update(e,t,r){let n=this.renderTarget,i=this.renderTargetCoC,a=this.renderTargetCoCBlurred,s=this.renderTargetMasked;if(null!==this.target){let e=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=e}this.cocPass.render(e,null,i),this.blurPass.render(e,i,a),this.maskPass.render(e,t,s),this.bokehFarBasePass.render(e,s,n),this.bokehFarFillPass.render(e,n,this.renderTargetFar),this.bokehNearBasePass.render(e,t,n),this.bokehNearFillPass.render(e,n,this.renderTargetNear)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let n=r.width,i=r.height;this.cocPass.setSize(e,t),this.blurPass.setSize(e,t),this.maskPass.setSize(e,t),this.renderTargetFar.setSize(e,t),this.renderTargetCoC.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.renderTarget.setSize(n,i),this.renderTargetNear.setSize(n,i),this.renderTargetCoCBlurred.setSize(n,i),this.bokehNearBasePass.fullscreenMaterial.setSize(e,t),this.bokehNearFillPass.fullscreenMaterial.setSize(e,t),this.bokehFarBasePass.fullscreenMaterial.setSize(e,t),this.bokehFarFillPass.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){this.cocPass.initialize(e,t,r),this.maskPass.initialize(e,t,r),this.bokehNearBasePass.initialize(e,t,r),this.bokehNearFillPass.initialize(e,t,r),this.bokehFarBasePass.initialize(e,t,r),this.bokehFarFillPass.initialize(e,t,r),this.blurPass.initialize(e,t,eZ.UnsignedByteType),e.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH="1"),void 0!==r&&(this.renderTarget.texture.type=r,this.renderTargetNear.texture.type=r,this.renderTargetFar.texture.type=r,this.renderTargetMasked.texture.type=r,null!==e&&e.outputColorSpace===eZ.SRGBColorSpace&&(this.renderTarget.texture.colorSpace=eZ.SRGBColorSpace,this.renderTargetNear.texture.colorSpace=eZ.SRGBColorSpace,this.renderTargetFar.texture.colorSpace=eZ.SRGBColorSpace,this.renderTargetMasked.texture.colorSpace=eZ.SRGBColorSpace))}constructor(e,{blendFunction:t,worldFocusDistance:r,worldFocusRange:n,focalLength:i,focusDistance:a=r||3,focusRange:s=n||i||2,bokehScale:o=1,resolutionScale:l=.5,width:u,height:c,resolutionX:d=u||tn.AUTO_SIZE,resolutionY:f=c||tn.AUTO_SIZE}={}){super("DepthOfFieldEffect","#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer;\n#else\nuniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer;\n#endif\n#if MASK_FUNCTION != 1 && MASK_FUNCTION != 2\nuniform lowp sampler2D farCoCBuffer;\n#endif\nuniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);\n#if MASK_FUNCTION == 1 || MASK_FUNCTION == 2\nvec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min(cocNearFar.x*scale,1.0);\n#else\nvec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0);colorFar.a*=cocNearFar.y;\n#endif\nvec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}",{blendFunction:t,attributes:e6.DEPTH,uniforms:new Map([["nearColorBuffer",new eZ.Uniform(null)],["farColorBuffer",new eZ.Uniform(null)],["nearCoCBuffer",new eZ.Uniform(null)],["farCoCBuffer",new eZ.Uniform(null)],["scale",new eZ.Uniform(1)]])}),this.camera=e,this.renderTarget=new eZ.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.uniforms.get("farCoCBuffer").value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new tC(new tx(e));let h=this.cocMaterial;h.focusDistance=a,h.focusRange=s,this.blurPass=new th({resolutionScale:l,resolutionX:d,resolutionY:f,kernelSize:tc.MEDIUM}),this.maskPass=new tC(new tB(this.renderTargetCoC.texture)),this.maskPass.fullscreenMaterial.colorChannel=tg.GREEN,this.maskFunction=tA.MULTIPLY_RGB,this.bokehNearBasePass=new tC(new ty(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new tC(new ty(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new tC(new ty(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new tC(new ty(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;let p=this.resolution=new tn(this,d,f,l);p.addEventListener("change",e=>this.setSize(p.baseWidth,p.baseHeight)),this.bokehScale=o}},tT=class extends eZ.DataTexture{constructor(e,t,r=eZ.RedFormat,n=eZ.UnsignedByteType){super(function(e,t,r){let n,i=new Map([[eZ.RedFormat,1],[eZ.RGFormat,2],[eZ.RGBAFormat,4]]);if(i.has(t)||console.error("Invalid noise texture format"),r===eZ.UnsignedByteType){n=new Uint8Array(e*i.get(t));for(let e=0,t=n.length;e<t;++e)n[e]=255*Math.random()+.5}else{n=new Float32Array(e*i.get(t));for(let e=0,t=n.length;e<t;++e)n[e]=Math.random()}return n}(e*t,r,n),e,t,r,n),this.needsUpdate=!0}},tD=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get lightPosition(){return this.uniforms.lightPosition.value}getLightPosition(){return this.uniforms.lightPosition.value}setLightPosition(e){this.uniforms.lightPosition.value=e}get density(){return this.uniforms.density.value}set density(e){this.uniforms.density.value=e}getDensity(){return this.uniforms.density.value}setDensity(e){this.uniforms.density.value=e}get decay(){return this.uniforms.decay.value}set decay(e){this.uniforms.decay.value=e}getDecay(){return this.uniforms.decay.value}setDecay(e){this.uniforms.decay.value=e}get weight(){return this.uniforms.weight.value}set weight(e){this.uniforms.weight.value=e}getWeight(){return this.uniforms.weight.value}setWeight(e){this.uniforms.weight.value=e}get exposure(){return this.uniforms.exposure.value}set exposure(e){this.uniforms.exposure.value=e}getExposure(){return this.uniforms.exposure.value}setExposure(e){this.uniforms.exposure.value=e}get maxIntensity(){return this.uniforms.clampMax.value}set maxIntensity(e){this.uniforms.clampMax.value=e}getMaxIntensity(){return this.uniforms.clampMax.value}setMaxIntensity(e){this.uniforms.clampMax.value=e}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(e){let t=Math.floor(e);this.defines.SAMPLES_INT=t.toFixed(0),this.defines.SAMPLES_FLOAT=t.toFixed(1),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(e){this.samples=e}constructor(e){super({name:"GodRaysMaterial",defines:{SAMPLES_INT:"60",SAMPLES_FLOAT:"60.0"},uniforms:{inputBuffer:new eZ.Uniform(null),lightPosition:new eZ.Uniform(e),density:new eZ.Uniform(1),decay:new eZ.Uniform(1),weight:new eZ.Uniform(1),exposure:new eZ.Uniform(1),clampMax:new eZ.Uniform(1)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <dithering_pars_fragment>\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\nuniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i<SAMPLES_INT;++i){coord+=delta;vec4 texel=texture2D(inputBuffer,coord);texel*=illuminationDecay*weight;color+=texel;illuminationDecay*=decay;}gl_FragColor=clamp(color*exposure,0.0,clampMax);\n#include <dithering_fragment>\n}",vertexShader:e1})}},tb=class extends e${set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return null!==e?e.material:null}set overrideMaterial(e){let t=this.overrideMaterialManager;null!==e?null!==t?t.setMaterial(e):this.overrideMaterialManager=new tr(e):null!==t&&(t.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,r,n,i){let a=this.scene,s=this.camera,o=this.selection,l=s.layers.mask,u=a.background,c=e.shadowMap.autoUpdate,d=this.renderToScreen?null:t;null!==o&&s.layers.set(o.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||null!==this.clearPass.overrideClearColor)&&(a.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(d),null!==this.overrideMaterialManager?this.overrideMaterialManager.render(e,a,s):e.render(a,s),s.layers.mask=l,a.background=u,e.shadowMap.autoUpdate=c}constructor(e,t,r=null){super("RenderPass",e,t),this.needsSwap=!1,this.clearPass=new e4,this.overrideMaterialManager=null===r?null:new tr(r),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}},tM=new eZ.Vector3,tw=new eZ.Matrix4,tF={SCALE_UP:"lut.scaleup"};function tR(e,t,r){let n=document.createElement("canvas"),i=n.getContext("2d");if(n.width=e,n.height=t,r instanceof Image)i.drawImage(r,0,0);else{let n=i.createImageData(e,t);n.data.set(r),i.putImageData(n,0,0)}return n}var tI=class e{toCanvas(){return"undefined"==typeof document?null:tR(this.width,this.height,this.data)}static from(t){let r,{width:n,height:i}=t;if(t instanceof Image){let e=tR(n,i,t);null!==e&&(r=e.getContext("2d").getImageData(0,0,n,i).data)}else r=t.data;return new e(n,i,r)}constructor(e=0,t=0,r=null){this.width=e,this.height=t,this.data=r}},tP=new eZ.Color,tL=class e extends eZ.Data3DTexture{get isLookupTexture3D(){return!0}scaleUp(t){let r=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=this.image;return t<=n.width?Promise.reject(Error("The target size must be greater than the current size")):new Promise((i,a)=>{let s=URL.createObjectURL(new Blob(['"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w<r;++w)for(let c=0;c<r;++c)for(let l=0;l<r;++l){let x=l*A,u=c*A,b=w*A,s=Math.round(l+c*r+w*h)*4;k(t,m,x,u,b,i),e[s+0]=i[0],e[s+1]=i[1],e[s+2]=i[2],e[s+3]=y}return e}};self.addEventListener("message",a=>{let t=a.data,r=t.data;switch(t.operation){case O.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})();\n'],{type:"text/javascript"})),o=new Worker(s);o.addEventListener("error",e=>a(e.error)),o.addEventListener("message",r=>{let n=new e(r.data,t);this.colorSpace=n.colorSpace,n.type=this.type,n.name=this.name,URL.revokeObjectURL(s),i(n)});let l=r?[n.data.buffer]:[];o.postMessage({operation:tF.SCALE_UP,data:n.data,size:t},l)})}applyLUT(e){let t=this.image,r=e.image,n=Math.min(t.width,t.height,t.depth);if(n!==Math.min(r.width,r.height,r.depth))console.error("Size mismatch");else if(e.type!==eZ.FloatType||this.type!==eZ.FloatType)console.error("Both LUTs must be FloatType textures");else if(e.format!==eZ.RGBAFormat||this.format!==eZ.RGBAFormat)console.error("Both LUTs must be RGBA textures");else{let e=t.data,i=r.data,a=n**2,s=n-1;for(let t=0,r=n**3;t<r;++t){let r=4*t,o=e[r+0]*s,l=4*Math.round(o+e[r+1]*s*n+e[r+2]*s*a);e[r+0]=i[l+0],e[r+1]=i[l+1],e[r+2]=i[l+2]}this.needsUpdate=!0}return this}convertToUint8(){if(this.type===eZ.FloatType){let e=this.image.data,t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;++r)t[r]=255*e[r]+.5;this.image.data=t,this.type=eZ.UnsignedByteType,this.needsUpdate=!0}return this}convertToFloat(){if(this.type===eZ.UnsignedByteType){let e=this.image.data,t=new Float32Array(e.length);for(let r=0,n=e.length;r<n;++r)t[r]=e[r]/255;this.image.data=t,this.type=eZ.FloatType,this.needsUpdate=!0}return this}convertToRGBA(){return console.warn("LookupTexture","convertToRGBA() is deprecated, LUTs are now RGBA by default"),this}convertLinearToSRGB(){let e=this.image.data;if(this.type===eZ.FloatType){for(let t=0,r=e.length;t<r;t+=4)tP.fromArray(e,t).convertLinearToSRGB().toArray(e,t);this.colorSpace=eZ.SRGBColorSpace,this.needsUpdate=!0}else console.error("Color space conversion requires FloatType data");return this}convertSRGBToLinear(){let e=this.image.data;if(this.type===eZ.FloatType){for(let t=0,r=e.length;t<r;t+=4)tP.fromArray(e,t).convertSRGBToLinear().toArray(e,t);this.colorSpace=eZ.LinearSRGBColorSpace,this.needsUpdate=!0}else console.error("Color space conversion requires FloatType data");return this}toDataTexture(){let e=this.image.width,t=this.image.height*this.image.depth,r=new eZ.DataTexture(this.image.data,e,t);return r.name=this.name,r.type=this.type,r.format=this.format,r.minFilter=eZ.LinearFilter,r.magFilter=eZ.LinearFilter,r.wrapS=this.wrapS,r.wrapT=this.wrapT,r.generateMipmaps=!1,r.needsUpdate=!0,this.colorSpace=r.colorSpace,r}static from(t){let r,n=t.image,{width:i,height:a}=n,s=Math.min(i,a);if(n instanceof Image){let e=tI.from(n).data;if(i>a){r=new Uint8Array(e.length);for(let t=0;t<s;++t)for(let n=0;n<s;++n)for(let i=0;i<s;++i){let a=(i+t*s+n*s*s)*4,o=(i+n*s+t*s*s)*4;r[o+0]=e[a+0],r[o+1]=e[a+1],r[o+2]=e[a+2],r[o+3]=e[a+3]}}else r=new Uint8Array(e.buffer)}else r=n.data.slice();let o=new e(r,s);return o.type=t.type,o.name=t.name,t.colorSpace=o.colorSpace,o}static createNeutral(t){let r=new Float32Array(t**3*4),n=t**2,i=1/(t-1);for(let e=0;e<t;++e)for(let a=0;a<t;++a)for(let s=0;s<t;++s){let o=(e+a*t+s*n)*4;r[o+0]=e*i,r[o+1]=a*i,r[o+2]=s*i,r[o+3]=1}let a=new e(r,t);return a.name="neutral",a}constructor(e,t){super(e,t,t,t),this.type=eZ.FloatType,this.format=eZ.RGBAFormat,this.minFilter=eZ.LinearFilter,this.magFilter=eZ.LinearFilter,this.wrapS=eZ.ClampToEdgeWrapping,this.wrapT=eZ.ClampToEdgeWrapping,this.wrapR=eZ.ClampToEdgeWrapping,this.unpackAlignment=1,this.needsUpdate=!0,this.colorSpace=eZ.LinearSRGBColorSpace,this.domainMin=new eZ.Vector3(0,0,0),this.domainMax=new eZ.Vector3(1,1,1)}},tU={FULL:0,SINGLE:1},tG={KEEP_MAX_DEPTH:1,DISCARD_MAX_DEPTH:2},tO={COLOR:2},tH=class extends eZ.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.RGBADepthPacking;this.depthBuffer=e,this.depthPacking=t}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof eZ.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}constructor(e=null,t){super({name:"DepthComparisonMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eZ.Uniform(null),cameraNear:new eZ.Uniform(.3),cameraFar:new eZ.Uniform(1e3)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\n#include <clipping_planes_pars_fragment>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nuniform float cameraNear;uniform float cameraFar;centroid varying float vViewZ;centroid varying vec4 vProjTexCoord;void main(){\n#include <clipping_planes_fragment>\nvec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5;\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord));\n#else\nfloat depth=texture2D(depthBuffer,projTexCoord).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth=1.0-depth;\n#endif\n#ifdef PERSPECTIVE_CAMERA\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nfloat viewZ=orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\nfloat depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}",vertexShader:"#include <common>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying float vViewZ;varying vec4 vProjTexCoord;void main(){\n#include <skinbase_vertex>\n#include <begin_vertex>\n#include <morphtarget_vertex>\n#include <skinning_vertex>\n#include <project_vertex>\nvViewZ=mvPosition.z;vProjTexCoord=gl_Position;\n#include <clipping_planes_vertex>\n}"}),this.depthBuffer=e,this.depthPacking=eZ.RGBADepthPacking,this.copyCameraSettings(t)}},tN=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(e=new eZ.Vector2){super({name:"OutlineMaterial",uniforms:{inputBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(new eZ.Vector2)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.uniforms.texelSize.value.set(e.x,e.y),this.uniforms.maskTexture=this.uniforms.inputBuffer}},tk=new eZ.Vector3,tj=new eZ.Vector3,tz=class extends eZ.ShaderMaterial{set depthBuffer0(e){this.uniforms.depthBuffer0.value=e}set depthPacking0(e){this.defines.DEPTH_PACKING_0=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer0(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer0=e,this.depthPacking0=t}set depthBuffer1(e){this.uniforms.depthBuffer1.value=e}set depthPacking1(e){this.defines.DEPTH_PACKING_1=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer1(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer1=e,this.depthPacking1=t}get maxDepthStrategy(){return Number(this.defines.DEPTH_TEST_STRATEGY)}set maxDepthStrategy(e){this.defines.DEPTH_TEST_STRATEGY=e.toFixed(0),this.needsUpdate=!0}get keepFar(){return this.maxDepthStrategy}set keepFar(e){this.maxDepthStrategy=e?tG.KEEP_MAX_DEPTH:tG.DISCARD_MAX_DEPTH}getMaxDepthStrategy(){return this.maxDepthStrategy}setMaxDepthStrategy(e){this.maxDepthStrategy=e}get epsilon(){return Number(this.defines.DEPTH_EPSILON)}set epsilon(e){this.defines.DEPTH_EPSILON=e.toFixed(16),this.needsUpdate=!0}getEpsilon(){return this.epsilon}setEpsilon(e){this.epsilon=e}get depthMode(){return Number(this.defines.DEPTH_MODE)}set depthMode(e){let t;switch(e){case eZ.NeverDepth:t="false";break;case eZ.AlwaysDepth:t="true";break;case eZ.EqualDepth:t="abs(d1 - d0) <= DEPTH_EPSILON";break;case eZ.NotEqualDepth:t="abs(d1 - d0) > DEPTH_EPSILON";break;case eZ.LessDepth:t="d0 > d1";break;case eZ.LessEqualDepth:t="d0 >= d1";break;case eZ.GreaterEqualDepth:t="d0 <= d1";break;case eZ.GreaterDepth:default:t="d0 < d1"}this.defines.DEPTH_MODE=e.toFixed(0),this.defines["depthTest(d0, d1)"]=t,this.needsUpdate=!0}getDepthMode(){return this.depthMode}setDepthMode(e){this.depthMode=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),e instanceof eZ.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}constructor(){super({name:"DepthMaskMaterial",defines:{DEPTH_EPSILON:"0.0001",DEPTH_PACKING_0:"0",DEPTH_PACKING_1:"0",DEPTH_TEST_STRATEGY:tG.KEEP_MAX_DEPTH},uniforms:{inputBuffer:new eZ.Uniform(null),depthBuffer0:new eZ.Uniform(null),depthBuffer1:new eZ.Uniform(null),cameraNearFar:new eZ.Uniform(new eZ.Vector2(1,1))},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1;\n#else\nuniform mediump sampler2D depthBuffer0;uniform mediump sampler2D depthBuffer1;\n#endif\nuniform sampler2D inputBuffer;uniform vec2 cameraNearFar;float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\n#endif\n}varying vec2 vUv;void main(){vec2 depth;\n#if DEPTH_PACKING_0 == 3201\ndepth.x=unpackRGBAToDepth(texture2D(depthBuffer0,vUv));\n#else\ndepth.x=texture2D(depthBuffer0,vUv).r;\n#endif\n#if DEPTH_PACKING_1 == 3201\ndepth.y=unpackRGBAToDepth(texture2D(depthBuffer1,vUv));\n#else\ndepth.y=texture2D(depthBuffer1,vUv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat a=cameraNearFar.y/(cameraNearFar.y-cameraNearFar.x);float b=cameraNearFar.y*cameraNearFar.x/(cameraNearFar.x-cameraNearFar.y);float c=log2(cameraNearFar.y+1.0);float d=pow(2.0,depth.x*c)-1.0;depth.x=a+b/d;d=pow(2.0,depth.y*c)-1.0;depth.y=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth.x=1.0-depth.x;depth.y=1.0-depth.y;\n#endif\nbool isMaxDepth=(depth.x==1.0);\n#ifdef PERSPECTIVE_CAMERA\ndepth.x=viewZToOrthographicDepth(getViewZ(depth.x),cameraNearFar.x,cameraNearFar.y);depth.y=viewZToOrthographicDepth(getViewZ(depth.y),cameraNearFar.x,cameraNearFar.y);\n#endif\n#if DEPTH_TEST_STRATEGY == 0\nbool keep=depthTest(depth.x,depth.y);\n#elif DEPTH_TEST_STRATEGY == 1\nbool keep=isMaxDepth||depthTest(depth.x,depth.y);\n#else\nbool keep=!isMaxDepth&&depthTest(depth.x,depth.y);\n#endif\nif(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}",vertexShader:e1}),this.depthMode=eZ.LessDepth}},tK=class extends eZ.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(e){this.defines.EDGE_DETECTION_MODE=e.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(e){this.edgeDetectionMode=e}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(e){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=e.toFixed("6"),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(e){this.localContrastAdaptationFactor=e}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(e){this.defines.EDGE_THRESHOLD=e.toFixed("6"),this.defines.DEPTH_THRESHOLD=(.1*e).toFixed("6"),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(e){this.edgeDetectionThreshold=e}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(e){this.defines.PREDICATION_MODE=e.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(e){this.predicationMode=e}set predicationBuffer(e){this.uniforms.predicationBuffer.value=e}setPredicationBuffer(e){this.uniforms.predicationBuffer.value=e}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(e){this.defines.PREDICATION_THRESHOLD=e.toFixed("6"),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(e){this.predicationThreshold=e}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(e){this.defines.PREDICATION_SCALE=e.toFixed("6"),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(e){this.predicationScale=e}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(e){this.defines.PREDICATION_STRENGTH=e.toFixed("6"),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(e){this.predicationStrength=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(e=new eZ.Vector2,t=tO.COLOR){super({name:"EdgeDetectionMaterial",defines:{THREE_REVISION:eZ.REVISION.replace(/\D+/g,""),LOCAL_CONTRAST_ADAPTATION_FACTOR:"2.0",EDGE_THRESHOLD:"0.1",DEPTH_THRESHOLD:"0.01",PREDICATION_MODE:"0",PREDICATION_THRESHOLD:"0.01",PREDICATION_SCALE:"2.0",PREDICATION_STRENGTH:"1.0",DEPTH_PACKING:"0"},uniforms:{inputBuffer:new eZ.Uniform(null),depthBuffer:new eZ.Uniform(null),predicationBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(e)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\n#if EDGE_DETECTION_MODE != 0\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\n#endif\n#if EDGE_DETECTION_MODE == 1\n#include <common>\n#endif\n#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);}\n#elif PREDICATION_MODE == 2\nuniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);}\n#endif\n#if PREDICATION_MODE != 0\nvec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);}\n#endif\n#if EDGE_DETECTION_MODE != 0\nuniform sampler2D inputBuffer;\n#endif\nvoid main(){\n#if EDGE_DETECTION_MODE == 0\nconst vec2 threshold=vec2(DEPTH_THRESHOLD);\n#elif PREDICATION_MODE != 0\nvec2 threshold=calculatePredicatedThreshold();\n#else\nconst vec2 threshold=vec2(EDGE_THRESHOLD);\n#endif\n#if EDGE_DETECTION_MODE == 0\nvec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0);\n#elif EDGE_DETECTION_MODE == 1\nfloat l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2D(inputBuffer,vUv0).rgb);float lTop=luminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=luminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=luminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=luminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=luminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\n#elif EDGE_DETECTION_MODE == 2\nvec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\n#endif\n}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\n#if EDGE_DETECTION_MODE != 0\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\n#endif\nvoid main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);\n#if EDGE_DETECTION_MODE != 0\nvUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);\n#endif\ngl_Position=vec4(position.xy,1.0,1.0);}"}),this.edgeDetectionMode=t}},tJ=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(e){this.uniforms.searchTexture.value=e}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(e){this.uniforms.areaTexture.value=e}setLookupTextures(e,t){this.searchTexture=e,this.areaTexture=t}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(e){let t=Math.min(Math.max(e,0),112);this.defines.MAX_SEARCH_STEPS_INT=t.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=t.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(e){this.orthogonalSearchSteps=e}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(e){let t=Math.min(Math.max(e,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=t.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=t.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(e){this.diagonalSearchSteps=e}get diagonalDetection(){return void 0===this.defines.DISABLE_DIAG_DETECTION}set diagonalDetection(e){e?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(e){this.diagonalDetection=e}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(e){let t=Math.min(Math.max(e,0),100);this.defines.CORNER_ROUNDING=t.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(t/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(e){this.cornerRounding=e}get cornerDetection(){return void 0===this.defines.DISABLE_CORNER_DETECTION}set cornerDetection(e){e?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(e){this.cornerDetection=e}setSize(e,t){let r=this.uniforms;r.texelSize.value.set(1/e,1/t),r.resolution.value.set(e,t)}constructor(e=new eZ.Vector2,t=new eZ.Vector2){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new eZ.Uniform(null),searchTexture:new eZ.Uniform(null),areaTexture:new eZ.Uniform(null),resolution:new eZ.Uniform(t),texelSize:new eZ.Uniform(e)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)\n#if __VERSION__ < 300\n#define round(v) floor(v + 0.5)\n#endif\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\nuniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x>end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x<end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.y>end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;i++){if(!(texCoord.y<end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\n#if !defined(DISABLE_CORNER_DETECTION)\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0);\n#endif\n}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\n#if !defined(DISABLE_CORNER_DETECTION)\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0);\n#endif\n}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){\n#if !defined(DISABLE_DIAG_DETECTION)\nweights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){\n#endif\nvec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);\n#if !defined(DISABLE_DIAG_DETECTION)\n}else{e.r=0.0;}\n#endif\n}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}",vertexShader:"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}"})}};function tV(e,t,r){return Math.min(Math.max((e+t)/(t-r),0),1)}var tQ=class extends eZ.ShaderMaterial{get near(){return this.uniforms.cameraNearFar.value.x}get far(){return this.uniforms.cameraNearFar.value.y}set normalDepthBuffer(e){this.uniforms.normalDepthBuffer.value=e,null!==e?this.defines.NORMAL_DEPTH="1":delete this.defines.NORMAL_DEPTH,this.needsUpdate=!0}setNormalDepthBuffer(e){this.normalDepthBuffer=e}set normalBuffer(e){this.uniforms.normalBuffer.value=e}setNormalBuffer(e){this.uniforms.normalBuffer.value=e}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}set noiseTexture(e){this.uniforms.noiseTexture.value=e}setNoiseTexture(e){this.uniforms.noiseTexture.value=e}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(e){this.defines.SAMPLES_INT=e.toFixed(0),this.defines.INV_SAMPLES_FLOAT=(1/e).toFixed(9),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(e){this.samples=e}get rings(){return Number(this.defines.SPIRAL_TURNS)}set rings(e){this.defines.SPIRAL_TURNS=e.toFixed(1),this.needsUpdate=!0}getRings(){return this.rings}setRings(e){this.rings=e}get intensity(){return this.uniforms.intensity.value}set intensity(e){this.uniforms.intensity.value=e,void 0===this.defines.LEGACY_INTENSITY&&(this.defines.LEGACY_INTENSITY="1",this.needsUpdate=!0)}getIntensity(){return this.uniforms.intensity.value}setIntensity(e){this.uniforms.intensity.value=e}get fade(){return this.uniforms.fade.value}set fade(e){this.uniforms.fade.value=e}getFade(){return this.uniforms.fade.value}setFade(e){this.uniforms.fade.value=e}get bias(){return this.uniforms.bias.value}set bias(e){this.uniforms.bias.value=e}getBias(){return this.uniforms.bias.value}setBias(e){this.uniforms.bias.value=e}get minRadiusScale(){return this.uniforms.minRadiusScale.value}set minRadiusScale(e){this.uniforms.minRadiusScale.value=e}getMinRadiusScale(){return this.uniforms.minRadiusScale.value}setMinRadiusScale(e){this.uniforms.minRadiusScale.value=e}updateRadius(){let e=this.r*this.resolution.height;this.defines.RADIUS=e.toFixed(11),this.defines.RADIUS_SQ=(e*e).toFixed(11),this.needsUpdate=!0}get radius(){return this.r}set radius(e){this.r=Math.min(Math.max(e,1e-6),1),this.updateRadius()}getRadius(){return this.radius}setRadius(e){this.radius=e}get distanceScaling(){return!0}set distanceScaling(e){}isDistanceScalingEnabled(){return this.distanceScaling}setDistanceScalingEnabled(e){this.distanceScaling=e}get distanceThreshold(){return this.uniforms.distanceCutoff.value.x}set distanceThreshold(e){this.uniforms.distanceCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+this.distanceFalloff,0),1))}get worldDistanceThreshold(){var e,t;return-(e=this.distanceThreshold,e*((t=this.near)-this.far)-t)}set worldDistanceThreshold(e){this.distanceThreshold=tV(-e,this.near,this.far)}get distanceFalloff(){return this.uniforms.distanceCutoff.value.y-this.distanceThreshold}set distanceFalloff(e){this.uniforms.distanceCutoff.value.y=Math.min(Math.max(this.distanceThreshold+e,0),1)}get worldDistanceFalloff(){var e,t;return-(e=this.distanceFalloff,e*((t=this.near)-this.far)-t)}set worldDistanceFalloff(e){this.distanceFalloff=tV(-e,this.near,this.far)}setDistanceCutoff(e,t){this.uniforms.distanceCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+t,0),1))}get proximityThreshold(){return this.uniforms.proximityCutoff.value.x}set proximityThreshold(e){this.uniforms.proximityCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+this.proximityFalloff,0),1))}get worldProximityThreshold(){var e,t;return-(e=this.proximityThreshold,e*((t=this.near)-this.far)-t)}set worldProximityThreshold(e){this.proximityThreshold=tV(-e,this.near,this.far)}get proximityFalloff(){return this.uniforms.proximityCutoff.value.y-this.proximityThreshold}set proximityFalloff(e){this.uniforms.proximityCutoff.value.y=Math.min(Math.max(this.proximityThreshold+e,0),1)}get worldProximityFalloff(){var e,t;return-(e=this.proximityFalloff,e*((t=this.near)-this.far)-t)}set worldProximityFalloff(e){this.proximityFalloff=tV(-e,this.near,this.far)}setProximityCutoff(e,t){this.uniforms.proximityCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+t,0),1))}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),this.uniforms.projectionMatrix.value.copy(e.projectionMatrix),this.uniforms.inverseProjectionMatrix.value.copy(e.projectionMatrix).invert(),e instanceof eZ.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let r=this.uniforms,n=r.noiseTexture.value;null!==n&&r.noiseScale.value.set(e/n.image.width,t/n.image.height),r.texelSize.value.set(1/e,1/t),this.resolution.set(e,t),this.updateRadius()}constructor(e){super({name:"SSAOMaterial",defines:{SAMPLES_INT:"0",INV_SAMPLES_FLOAT:"0.0",SPIRAL_TURNS:"0.0",RADIUS:"1.0",RADIUS_SQ:"1.0",DISTANCE_SCALING:"1",DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eZ.Uniform(null),normalBuffer:new eZ.Uniform(null),normalDepthBuffer:new eZ.Uniform(null),noiseTexture:new eZ.Uniform(null),inverseProjectionMatrix:new eZ.Uniform(new eZ.Matrix4),projectionMatrix:new eZ.Uniform(new eZ.Matrix4),texelSize:new eZ.Uniform(new eZ.Vector2),cameraNearFar:new eZ.Uniform(new eZ.Vector2),distanceCutoff:new eZ.Uniform(new eZ.Vector2),proximityCutoff:new eZ.Uniform(new eZ.Vector2),noiseScale:new eZ.Uniform(new eZ.Vector2),minRadiusScale:new eZ.Uniform(.33),intensity:new eZ.Uniform(1),fade:new eZ.Uniform(.01),bias:new eZ.Uniform(0)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <packing>\nuniform vec2 cameraNearFar;\n#define cameraNear cameraNearFar.x\n#define cameraFar cameraNearFar.y\n#ifdef NORMAL_DEPTH\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D normalDepthBuffer;\n#else\nuniform mediump sampler2D normalDepthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){float depth=texture2D(normalDepthBuffer,uv).a;\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#endif\nreturn depth;}\n#else\nuniform lowp sampler2D normalBuffer;\n#if DEPTH_PACKING == 3201\nuniform lowp sampler2D depthBuffer;\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nfloat depth=texture2D(depthBuffer,uv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#endif\nreturn depth;}\n#endif\nuniform lowp sampler2D noiseTexture;uniform mat4 inverseProjectionMatrix;uniform mat4 projectionMatrix;uniform vec2 texelSize;uniform float intensity;uniform float minRadiusScale;uniform float fade;uniform float bias;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;varying vec2 vUv;varying vec2 vUv2;float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\n}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(inverseProjectionMatrix*clipPosition).xyz;}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){float radiusScale=1.0-smoothstep(0.0,distanceCutoff.y,depth);radiusScale=radiusScale*(1.0-minRadiusScale)+minRadiusScale;float radius=RADIUS*radiusScale;float noise=texture2D(noiseTexture,vUv2).r;float baseAngle=noise*PI2;float rings=SPIRAL_TURNS*PI2;float occlusion=0.0;int taps=0;for(int i=0;i<SAMPLES_INT;++i){float alpha=(float(i)+0.5)*INV_SAMPLES_FLOAT;float angle=alpha*rings+baseAngle;vec2 rotation=vec2(cos(angle),sin(angle));vec2 coords=alpha*radius*rotation*texelSize+uv;if(coords.s<0.0||coords.s>1.0||coords.t<0.0||coords.t>1.0){continue;}float sampleDepth=readDepth(coords);float viewZ=getViewZ(sampleDepth);\n#ifdef PERSPECTIVE_CAMERA\nfloat linearSampleDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\n#else\nfloat linearSampleDepth=sampleDepth;\n#endif\nfloat proximity=abs(depth-linearSampleDepth);if(proximity<proximityCutoff.y){float falloff=1.0-smoothstep(proximityCutoff.x,proximityCutoff.y,proximity);vec3 Q=getViewPosition(coords,sampleDepth,viewZ);vec3 v=Q-p;float vv=dot(v,v);float vn=dot(v,n)-bias;float f=max(RADIUS_SQ-vv,0.0)/RADIUS_SQ;occlusion+=(f*f*f*max(vn/(fade+vv),0.0))*falloff;}++taps;}return occlusion/(4.0*max(float(taps),1.0));}void main(){\n#ifdef NORMAL_DEPTH\nvec4 normalDepth=texture2D(normalDepthBuffer,vUv);\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,normalDepth.a*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);normalDepth.a=a+b/d;\n#endif\n#else\nvec4 normalDepth=vec4(texture2D(normalBuffer,vUv).xyz,readDepth(vUv));\n#endif\nfloat ao=0.0;float depth=normalDepth.a;float viewZ=getViewZ(depth);\n#ifdef PERSPECTIVE_CAMERA\nfloat linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\n#else\nfloat linearDepth=depth;\n#endif\nif(linearDepth<distanceCutoff.y){vec3 viewPosition=getViewPosition(vUv,depth,viewZ);vec3 viewNormal=unpackRGBToNormal(normalDepth.rgb);ao+=getAmbientOcclusion(viewPosition,viewNormal,linearDepth,vUv);float d=smoothstep(distanceCutoff.x,distanceCutoff.y,linearDepth);ao=mix(ao,0.0,d);\n#ifdef LEGACY_INTENSITY\nao=clamp(1.0-pow(1.0-ao,abs(intensity)),0.0,1.0);\n#endif\n}gl_FragColor.r=ao;}",vertexShader:"uniform vec2 noiseScale;varying vec2 vUv;varying vec2 vUv2;void main(){vUv=position.xy*0.5+0.5;vUv2=vUv*noiseScale;gl_Position=vec4(position.xy,1.0,1.0);}"}),this.copyCameraSettings(e),this.resolution=new eZ.Vector2,this.r=1}},tW=class extends eZ.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}set normalBuffer(e){this.uniforms.normalBuffer.value=e,null!==e?this.defines.DOWNSAMPLE_NORMALS="1":delete this.defines.DOWNSAMPLE_NORMALS,this.needsUpdate=!0}setNormalBuffer(e){this.normalBuffer=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(){super({name:"DepthDownsamplingMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eZ.Uniform(null),normalBuffer:new eZ.Uniform(null),texelSize:new eZ.Uniform(new eZ.Vector2)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\n#ifdef DOWNSAMPLE_NORMALS\nuniform lowp sampler2D normalBuffer;\n#endif\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]<maxDistance){remaining[j++]=i;}else{rejected[k++]=i;}}for(;j<3;++j){remaining[j]=rejected[--k];}vec3 s=vec3(samples[remaining[0]],samples[remaining[1]],samples[remaining[2]]);c=(s.x+s.y+s.z)/3.0;distances[0]=abs(c-s.x);distances[1]=abs(c-s.y);distances[2]=abs(c-s.z);float minDistance=min(distances[0],min(distances[1],distances[2]));for(i=0;i<3;++i){if(distances[i]==minDistance){break;}}return remaining[i];}void main(){float d[4];d[0]=readDepth(vUv0);d[1]=readDepth(vUv1);d[2]=readDepth(vUv2);d[3]=readDepth(vUv3);int index=findBestDepth(d);\n#ifdef DOWNSAMPLE_NORMALS\nvec3 n[4];n[0]=texture2D(normalBuffer,vUv0).rgb;n[1]=texture2D(normalBuffer,vUv1).rgb;n[2]=texture2D(normalBuffer,vUv2).rgb;n[3]=texture2D(normalBuffer,vUv3).rgb;\n#else\nvec3 n[4];n[0]=vec3(0.0);n[1]=vec3(0.0);n[2]=vec3(0.0);n[3]=vec3(0.0);\n#endif\ngl_FragColor=vec4(n[index],d[index]);}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=uv;vUv1=vec2(uv.x,uv.y+texelSize.y);vUv2=vec2(uv.x+texelSize.x,uv.y);vUv3=uv+texelSize;gl_Position=vec4(position.xy,1.0,1.0);}"})}},tX=class extends e${get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,r,n,i){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){let n=e.getContext();if(!(n.getExtension("EXT_color_buffer_float")||n.getExtension("EXT_color_buffer_half_float")))throw Error("Rendering to float texture is not supported.")}constructor({normalBuffer:e=null,resolutionScale:t=.5,width:r=tn.AUTO_SIZE,height:n=tn.AUTO_SIZE,resolutionX:i=r,resolutionY:a=n}={}){super("DepthDownsamplingPass");let s=new tW;s.normalBuffer=e,this.fullscreenMaterial=s,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new eZ.WebGLRenderTarget(1,1,{minFilter:eZ.NearestFilter,magFilter:eZ.NearestFilter,depthBuffer:!1,type:eZ.FloatType}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;let o=this.resolution=new tn(this,i,a,t);o.addEventListener("change",e=>this.setSize(o.baseWidth,o.baseHeight))}},t_=class extends eZ.ShaderMaterial{set luminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}setLuminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}set luminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}setLuminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}set mipLevel1x1(e){this.defines.MIP_LEVEL_1X1=e.toFixed(1),this.needsUpdate=!0}setMipLevel1x1(e){this.mipLevel1x1=e}set deltaTime(e){this.uniforms.deltaTime.value=e}setDeltaTime(e){this.uniforms.deltaTime.value=e}get minLuminance(){return this.uniforms.minLuminance.value}set minLuminance(e){this.uniforms.minLuminance.value=e}getMinLuminance(){return this.uniforms.minLuminance.value}setMinLuminance(e){this.uniforms.minLuminance.value=e}get adaptationRate(){return this.uniforms.tau.value}set adaptationRate(e){this.uniforms.tau.value=e}getAdaptationRate(){return this.uniforms.tau.value}setAdaptationRate(e){this.uniforms.tau.value=e}constructor(){super({name:"AdaptiveLuminanceMaterial",defines:{MIP_LEVEL_1X1:"0.0"},uniforms:{luminanceBuffer0:new eZ.Uniform(null),luminanceBuffer1:new eZ.Uniform(null),minLuminance:new eZ.Uniform(.01),deltaTime:new eZ.Uniform(0),tau:new eZ.Uniform(1)},extensions:{shaderTextureLOD:!0},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\n#define packFloatToRGBA(v) packDepthToRGBA(v)\n#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)\nuniform lowp sampler2D luminanceBuffer0;uniform lowp sampler2D luminanceBuffer1;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float l0=unpackRGBAToFloat(texture2D(luminanceBuffer0,vUv));\n#if __VERSION__ < 300\nfloat l1=texture2DLodEXT(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\n#else\nfloat l1=textureLod(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\n#endif\nl0=max(minLuminance,l0);l1=max(minLuminance,l1);float adaptedLum=l0+(l1-l0)*(1.0-exp(-deltaTime*tau));gl_FragColor=(adaptedLum==1.0)?vec4(1.0):packFloatToRGBA(adaptedLum);}",vertexShader:e1})}};eZ.Loader,eZ.Loader,eZ.Loader,eZ.ShaderMaterial;var tZ=class extends eZ.ShaderMaterial{get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set inputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get outputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}set outputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer=e,this.inputDepthPacking=t}getInputDepthPacking(){return Number(this.defines.INPUT_DEPTH_PACKING)}setInputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}getOutputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}setOutputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get texelPosition(){return this.uniforms.texelPosition.value}getTexelPosition(){return this.uniforms.texelPosition.value}setTexelPosition(e){this.uniforms.texelPosition.value=e}get mode(){return this.depthCopyMode}set mode(e){this.depthCopyMode=e,this.defines.DEPTH_COPY_MODE=e.toFixed(0),this.needsUpdate=!0}getMode(){return this.mode}setMode(e){this.mode=e}constructor(){super({name:"DepthCopyMaterial",defines:{INPUT_DEPTH_PACKING:"0",OUTPUT_DEPTH_PACKING:"0",DEPTH_COPY_MODE:"0"},uniforms:{depthBuffer:new eZ.Uniform(null),texelPosition:new eZ.Uniform(new eZ.Vector2)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\nvarying vec2 vUv;\n#ifdef NORMAL_DEPTH\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D normalDepthBuffer;\n#else\nuniform mediump sampler2D normalDepthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;}\n#else\n#if INPUT_DEPTH_PACKING == 3201\nuniform lowp sampler2D depthBuffer;\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if INPUT_DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}\n#endif\nvoid main(){\n#if INPUT_DEPTH_PACKING == OUTPUT_DEPTH_PACKING\ngl_FragColor=texture2D(depthBuffer,vUv);\n#else\nfloat depth=readDepth(vUv);\n#if OUTPUT_DEPTH_PACKING == 3201\ngl_FragColor=(depth==1.0)?vec4(1.0):packDepthToRGBA(depth);\n#else\ngl_FragColor=vec4(vec3(depth),1.0);\n#endif\n#endif\n}",vertexShader:"varying vec2 vUv;\n#if DEPTH_COPY_MODE == 1\nuniform vec2 texelPosition;\n#endif\nvoid main(){\n#if DEPTH_COPY_MODE == 1\nvUv=texelPosition;\n#else\nvUv=position.xy*0.5+0.5;\n#endif\ngl_Position=vec4(position.xy,1.0,1.0);}"}),this.depthCopyMode=tU.FULL}},tY=class extends eZ.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}setShaderData(e){this.setShaderParts(e.shaderParts),this.setDefines(e.defines),this.setUniforms(e.uniforms),this.setExtensions(e.extensions)}setShaderParts(e){return this.fragmentShader="#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#define packFloatToRGBA(v) packDepthToRGBA(v)\n#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#if DEPTH_PACKING == 3201\nuniform lowp sampler2D depthBuffer;\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nuniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;vec4 sRGBToLinear(const in vec4 value){return vec4(mix(pow(value.rgb*0.9478672986+vec3(0.0521327014),vec3(2.4)),value.rgb*0.0773993808,vec3(lessThanEqual(value.rgb,vec3(0.04045)))),value.a);}float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nfloat depth=texture2D(depthBuffer,uv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth=1.0-depth;\n#endif\nreturn depth;}float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\n}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE color0.a=clamp(color0.a,0.0,1.0);gl_FragColor=color0;\n#ifdef ENCODE_OUTPUT\n#include <colorspace_fragment>\n#endif\n#include <dithering_fragment>\n}".replace(e7.FRAGMENT_HEAD,e.get(e7.FRAGMENT_HEAD)||"").replace(e7.FRAGMENT_MAIN_UV,e.get(e7.FRAGMENT_MAIN_UV)||"").replace(e7.FRAGMENT_MAIN_IMAGE,e.get(e7.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}".replace(e7.VERTEX_HEAD,e.get(e7.VERTEX_HEAD)||"").replace(e7.VERTEX_MAIN_SUPPORT,e.get(e7.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){for(let t of(this.extensions={},e))this.extensions[t]=!0;return this}get encodeOutput(){return void 0!==this.defines.ENCODE_OUTPUT}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof eZ.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let r=this.uniforms;r.resolution.value.set(e,t),r.texelSize.value.set(1/e,1/t),r.aspect.value=e/t}static get Section(){return e7}constructor(e,t,r,n,i=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:eZ.REVISION.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new eZ.Uniform(null),depthBuffer:new eZ.Uniform(null),resolution:new eZ.Uniform(new eZ.Vector2),texelSize:new eZ.Uniform(new eZ.Vector2),cameraNear:new eZ.Uniform(.3),cameraFar:new eZ.Uniform(1e3),aspect:new eZ.Uniform(1),time:new eZ.Uniform(0)},blending:eZ.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:i}),e&&this.setShaderParts(e),t&&this.setDefines(t),r&&this.setUniforms(r),this.copyCameraSettings(n)}};eZ.ShaderMaterial;var tq=Number(eZ.REVISION.replace(/\D+/g,"")),t$=255/256,t0=new Float32Array([255/256/0x1000000,255/256/65536,255/256/256,255/256]),t1=new Float32Array([t$,t$/256,t$/65536,1/0x1000000]);function t2(e,t,r){for(let n of t){let t="$1"+e+n.charAt(0).toUpperCase()+n.slice(1),i=RegExp("([^\\.])(\\b"+n+"\\b)","g");for(let e of r.entries())null!==e[1]&&r.set(e[0],e[1].replace(i,t))}}var t9=class extends e${set mainScene(e){for(let t of this.effects)t.mainScene=e}set mainCamera(e){for(let t of(this.fullscreenMaterial.copyCameraSettings(e),this.effects))t.mainCamera=e}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(let e of this.effects)e.removeEventListener("change",this.listener);for(let t of(this.effects=e.sort((e,t)=>t.attributes-e.attributes),this.effects))t.addEventListener("change",this.listener)}updateMaterial(){let e=new te,t=0;for(let r of this.effects)if(r.blendMode.blendFunction===ts.DST)e.attributes|=r.getAttributes()&e6.DEPTH;else if((e.attributes&r.getAttributes()&e6.CONVOLUTION)!=0)throw Error("Convolution effects cannot be merged (".concat(r.name,")"));else!function(e,t,r){let n=t.getFragmentShader(),i=t.getVertexShader(),a=void 0!==n&&/mainImage/.test(n),s=void 0!==n&&/mainUv/.test(n);if(r.attributes|=t.getAttributes(),void 0===n)throw Error("Missing fragment shader (".concat(t.name,")"));if(s&&(r.attributes&e6.CONVOLUTION)!=0)throw Error("Effects that transform UVs are incompatible with convolution effects (".concat(t.name,")"));if(a||s){let o=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,l=r.shaderParts,u=l.get(e7.FRAGMENT_HEAD)||"",c=l.get(e7.FRAGMENT_MAIN_UV)||"",d=l.get(e7.FRAGMENT_MAIN_IMAGE)||"",f=l.get(e7.VERTEX_HEAD)||"",h=l.get(e7.VERTEX_MAIN_SUPPORT)||"",p=new Set,m=new Set;if(s&&(c+=" ".concat(e,"MainUv(UV);\n"),r.uvTransformation=!0),null!==i&&/mainSupport/.test(i)){let t=/mainSupport *\([\w\s]*?uv\s*?\)/.test(i);for(let n of(h+=" ".concat(e,"MainSupport("),h+=t?"vUv);\n":");\n",i.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g)))for(let e of n[1].split(/\s*,\s*/))r.varyings.add(e),p.add(e),m.add(e);for(let e of i.matchAll(o))m.add(e[1])}for(let e of n.matchAll(o))m.add(e[1]);for(let e of t.defines.keys())m.add(e.replace(/\([\w\s,]*\)/g,""));for(let e of t.uniforms.keys())m.add(e);m.delete("while"),m.delete("for"),m.delete("if"),t.uniforms.forEach((t,n)=>r.uniforms.set(e+n.charAt(0).toUpperCase()+n.slice(1),t)),t.defines.forEach((t,n)=>r.defines.set(e+n.charAt(0).toUpperCase()+n.slice(1),t));let g=new Map([["fragment",n],["vertex",i]]);t2(e,m,r.defines),t2(e,m,g),n=g.get("fragment"),i=g.get("vertex");let A=t.blendMode;if(r.blendModes.set(A.blendFunction,A),a){null!==t.inputColorSpace&&t.inputColorSpace!==r.colorSpace&&(d+=t.inputColorSpace===eZ.SRGBColorSpace?"color0 = sRGBTransferOETF(color0);\n ":"color0 = sRGBToLinear(color0);\n "),t.outputColorSpace!==eZ.NoColorSpace?r.colorSpace=t.outputColorSpace:null!==t.inputColorSpace&&(r.colorSpace=t.inputColorSpace),d+="".concat(e,"MainImage(color0, UV, "),(r.attributes&e6.DEPTH)!=0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(n)&&(d+="depth, ",r.readDepth=!0),d+="color1);\n ";let i=e+"BlendOpacity";r.uniforms.set(i,A.opacity),d+="color0 = blend".concat(A.blendFunction,"(color0, color1, ").concat(i,");\n\n "),u+="uniform float ".concat(i,";\n\n")}if(u+=n+"\n",null!==i&&(f+=i+"\n"),l.set(e7.FRAGMENT_HEAD,u),l.set(e7.FRAGMENT_MAIN_UV,c),l.set(e7.FRAGMENT_MAIN_IMAGE,d),l.set(e7.VERTEX_HEAD,f),l.set(e7.VERTEX_MAIN_SUPPORT,h),null!==t.extensions)for(let e of t.extensions)r.extensions.add(e)}else throw Error("Could not find mainImage or mainUv function (".concat(t.name,")"))}("e"+t++,r,e);let r=e.shaderParts.get(e7.FRAGMENT_HEAD),n=e.shaderParts.get(e7.FRAGMENT_MAIN_IMAGE),i=e.shaderParts.get(e7.FRAGMENT_MAIN_UV),a=/\bblend\b/g;for(let t of e.blendModes.values())r+=t.getShaderCode().replace(a,"blend".concat(t.blendFunction))+"\n";for(let[t,a]of((e.attributes&e6.DEPTH)!=0?(e.readDepth&&(n="float depth = readDepth(UV);\n\n "+n),this.needsDepthTexture=null===this.getDepthTexture()):this.needsDepthTexture=!1,e.colorSpace===eZ.SRGBColorSpace&&(n+="color0 = sRGBToLinear(color0);\n "),e.uvTransformation?(i="vec2 transformedUv = vUv;\n"+i,e.defines.set("UV","transformedUv")):e.defines.set("UV","vUv"),e.shaderParts.set(e7.FRAGMENT_HEAD,r),e.shaderParts.set(e7.FRAGMENT_MAIN_IMAGE,n),e.shaderParts.set(e7.FRAGMENT_MAIN_UV,i),e.shaderParts))null!==a&&e.shaderParts.set(t,a.trim().replace(/^#/,"\n#"));this.skipRendering=0===t,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eZ.BasicDepthPacking;for(let r of(this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t,this.effects))r.setDepthTexture(e,t)}render(e,t,r,n,i){for(let r of this.effects)r.update(e,t,n);if(!this.skipRendering||this.renderToScreen){let i=this.fullscreenMaterial;i.inputBuffer=t.texture,i.time+=n*this.timeScale,e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}}setSize(e,t){for(let r of(this.fullscreenMaterial.setSize(e,t),this.effects))r.setSize(e,t)}initialize(e,t,r){for(let n of(this.renderer=e,this.effects))n.initialize(e,t,r);this.updateMaterial(),void 0!==r&&r!==eZ.UnsignedByteType&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){for(let e of(super.dispose(),this.effects))e.removeEventListener("change",this.listener),e.dispose()}handleEvent(e){"change"===e.type&&this.recompile()}constructor(e,...t){super("EffectPass"),this.fullscreenMaterial=new tY(null,null,null,e),this.listener=e=>this.handleEvent(e),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=1/0,this.timeScale=1}},t3=class extends e${set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,n,i){let a=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,a,a)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height)}constructor(e,t,{renderTarget:r,resolutionScale:n=1,width:i=tn.AUTO_SIZE,height:a=tn.AUTO_SIZE,resolutionX:s=i,resolutionY:o=a}={}){super("NormalPass"),this.needsSwap=!1,this.renderPass=new tb(e,t,new eZ.MeshNormalMaterial);let l=this.renderPass;l.ignoreBackground=!0,l.skipShadowMapUpdate=!0;let u=l.getClearPass();u.overrideClearColor=new eZ.Color(7829503),u.overrideClearAlpha=1,this.renderTarget=r,void 0===this.renderTarget&&(this.renderTarget=new eZ.WebGLRenderTarget(1,1,{minFilter:eZ.NearestFilter,magFilter:eZ.NearestFilter}),this.renderTarget.texture.name="NormalPass.Target");let c=this.resolution=new tn(this,s,o,n);c.addEventListener("change",e=>this.setSize(c.baseWidth,c.baseHeight))}};function t4(e,t,r,n){var i;return(i=e+(t-e)*.75)+(r+(n-r)*.75-i)*.875}function t8(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array(2),new Float32Array(2),new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125]),new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4]),new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3]),t4(0,0,0,0),new Float32Array([0,0,0,0]),t4(0,0,0,1),new Float32Array([0,0,0,1]),t4(0,0,1,0),new Float32Array([0,0,1,0]),t4(0,0,1,1),new Float32Array([0,0,1,1]),t4(0,1,0,0),new Float32Array([0,1,0,0]),t4(0,1,0,1),new Float32Array([0,1,0,1]),t4(0,1,1,0),new Float32Array([0,1,1,0]),t4(0,1,1,1),new Float32Array([0,1,1,1]),t4(1,0,0,0),new Float32Array([1,0,0,0]),t4(1,0,0,1),new Float32Array([1,0,0,1]),t4(1,0,1,0),new Float32Array([1,0,1,0]),t4(1,0,1,1),new Float32Array([1,0,1,1]),t4(1,1,0,0),new Float32Array([1,1,0,0]),t4(1,1,0,1),new Float32Array([1,1,0,1]),t4(1,1,1,0),new Float32Array([1,1,1,0]),t4(1,1,1,1),new Float32Array([1,1,1,1]);function t5(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t6(e,t){if(e){if("string"==typeof e)return t5(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return t5(e,t)}}function t7(e){return function(e){if(Array.isArray(e))return t5(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||t6(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}new ek.Vector2,new ek.Vector2;function re(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}var rt=function e(t,r,n){var i=this;re(this,e),t8(this,"dot2",function(e,t){return i.x*e+i.y*t}),t8(this,"dot3",function(e,t,r){return i.x*e+i.y*t+i.z*r}),this.x=t,this.y=r,this.z=n},rr=[new rt(1,1,0),new rt(-1,1,0),new rt(1,-1,0),new rt(-1,-1,0),new rt(1,0,1),new rt(-1,0,1),new rt(1,0,-1),new rt(-1,0,-1),new rt(0,1,1),new rt(0,-1,1),new rt(0,1,-1),new rt(0,-1,-1)],rn=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],ri=Array(512),ra=Array(512);!function(e){e>0&&e<1&&(e*=65536),(e=Math.floor(e))<256&&(e|=e<<8);for(var t,r=0;r<256;r++)t=1&r?rn[r]^255&e:rn[r]^e>>8&255,ri[r]=ri[r+256]=t,ra[r]=ra[r+256]=rr[t%12]}(0);function rs(e){var t=function(e){if("number"==typeof e)e=Math.abs(e);else if("string"==typeof e){var t=e;e=0;for(var r=0;r<t.length;r++)e=(e+(r+1)*(t.charCodeAt(r)%96))%0x7fffffff}return 0===e&&(e=311),e}(e);return function(){var e=48271*t%0x7fffffff;return t=e,e/0x7fffffff}}new function e(t){var r=this;re(this,e),t8(this,"seed",0),t8(this,"init",function(e){r.seed=e,r.value=rs(e)}),t8(this,"value",rs(this.seed)),this.init(t)}(Math.random());var ro=function(e){return 1/(1+e+.48*e*e+.235*e*e*e)};function rl(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.25,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.01,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1/0,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:ro,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:.001,l="velocity_"+t;if(void 0===e.__damp&&(e.__damp={}),void 0===e.__damp[l]&&(e.__damp[l]=0),Math.abs(e[t]-r)<=o)return e[t]=r,!1;var u=2/(n=Math.max(1e-4,n)),c=s(u*i),d=e[t]-r,f=r,h=a*n;d=Math.min(Math.max(d,-h),h),r=e[t]-d;var p=(e.__damp[l]+u*d)*i;e.__damp[l]=(e.__damp[l]-u*p)*c;var m=r+(d+p)*c;return f-e[t]>0==m>f&&(m=f,e.__damp[l]=(m-f)/i),e[t]=m,!0}function ru(e,t,r,n,i,a,s,o){var l,u,c,d;return rl(e,t,e[t]+(c=(l=r-e[t])-Math.floor(l/(u=2*Math.PI))*u,(d=Math.max(0,Math.min(u,c)))>Math.PI&&(d-=2*Math.PI),d),n,i,a,s,o)}var rc=new ek.Vector2,rd=new ek.Vector3;function rf(e,t,r,n,i,a,s){return"number"==typeof t?rd.setScalar(t):Array.isArray(t)?rd.set(t[0],t[1],t[2]):rd.copy(t),o=rl(e,"x",rd.x,r,n,i,a,s),l=rl(e,"y",rd.y,r,n,i,a,s),u=rl(e,"z",rd.z,r,n,i,a,s),o||l||u}var rh=new ek.Vector4,rp=new ek.Euler,rm=new ek.Color,rv=new ek.Quaternion,rg=new ek.Vector4,rA=new ek.Vector4,ry=new ek.Vector4;function rx(e,t,r,n,i,a,s){Array.isArray(t)?rv.set(t[0],t[1],t[2],t[3]):rv.copy(t);var o=e.dot(rv)>0?1:-1;return rv.x*=o,rv.y*=o,rv.z*=o,rv.w*=o,B=rl(e,"x",rv.x,r,n,i,a,s),C=rl(e,"y",rv.y,r,n,i,a,s),S=rl(e,"z",rv.z,r,n,i,a,s),E=rl(e,"w",rv.w,r,n,i,a,s),rg.set(e.x,e.y,e.z,e.w).normalize(),rA.set(e.__damp.velocity_x,e.__damp.velocity_y,e.__damp.velocity_z,e.__damp.velocity_w),ry.copy(rg).multiplyScalar(rA.dot(rg)/rg.dot(rg)),e.__damp.velocity_x-=ry.x,e.__damp.velocity_y-=ry.y,e.__damp.velocity_z-=ry.z,e.__damp.velocity_w-=ry.w,e.set(rg.x,rg.y,rg.z,rg.w),B||C||S||E}var rB=new ek.Spherical,rC=new ek.Matrix4,rS=new ek.Vector3,rE=new ek.Quaternion,rT=new ek.Vector3,rD=Object.freeze({__proto__:null,rsqw:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/(2*Math.PI);return r/Math.atan(1/t)*Math.atan(Math.sin(2*Math.PI*e*n)/t)},exp:ro,damp:rl,dampAngle:ru,damp2:function(e,t,r,n,i,o,l){return"number"==typeof t?rc.setScalar(t):Array.isArray(t)?rc.set(t[0],t[1]):rc.copy(t),a=rl(e,"x",rc.x,r,n,i,o,l),s=rl(e,"y",rc.y,r,n,i,o,l),a||s},damp3:rf,damp4:function(e,t,r,n,i,a,s){return"number"==typeof t?rh.setScalar(t):Array.isArray(t)?rh.set(t[0],t[1],t[2],t[3]):rh.copy(t),c=rl(e,"x",rh.x,r,n,i,a,s),d=rl(e,"y",rh.y,r,n,i,a,s),f=rl(e,"z",rh.z,r,n,i,a,s),h=rl(e,"w",rh.w,r,n,i,a,s),c||d||f||h},dampE:function(e,t,r,n,i,a,s){return Array.isArray(t)?rp.set(t[0],t[1],t[2],t[3]):rp.copy(t),p=ru(e,"x",rp.x,r,n,i,a,s),m=ru(e,"y",rp.y,r,n,i,a,s),g=ru(e,"z",rp.z,r,n,i,a,s),p||m||g},dampC:function(e,t,r,n,i,a,s){return t instanceof ek.Color?rm.copy(t):Array.isArray(t)?rm.setRGB(t[0],t[1],t[2]):rm.set(t),A=rl(e,"r",rm.r,r,n,i,a,s),y=rl(e,"g",rm.g,r,n,i,a,s),x=rl(e,"b",rm.b,r,n,i,a,s),A||y||x},dampQ:rx,dampS:function(e,t,r,n,i,a,s){return Array.isArray(t)?rB.set(t[0],t[1],t[2]):rB.copy(t),T=rl(e,"radius",rB.radius,r,n,i,a,s),D=ru(e,"phi",rB.phi,r,n,i,a,s),b=ru(e,"theta",rB.theta,r,n,i,a,s),T||D||b},dampM:function(e,t,r,n,i,a,s){return void 0===e.__damp&&(e.__damp={position:new ek.Vector3,rotation:new ek.Quaternion,scale:new ek.Vector3},e.decompose(e.__damp.position,e.__damp.rotation,e.__damp.scale)),Array.isArray(t)?rC.set.apply(rC,t7(t)):rC.copy(t),rC.decompose(rS,rE,rT),M=rf(e.__damp.position,rS,r,n,i,a,s),w=rx(e.__damp.rotation,rE,r,n,i,a,s),F=rf(e.__damp.scale,rT,r,n,i,a,s),e.compose(e.__damp.position,e.__damp.rotation,e.__damp.scale),M||w||F}});ek.BufferGeometry;var rb=e.i(99749),rM=ek,rw=ek;new rw.OrthographicCamera(-1,1,1,-1,0,1);class rF extends rw.BufferGeometry{constructor(){super(),this.setAttribute("position",new rw.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new rw.Float32BufferAttribute([0,2,0,0,2,0],2))}}new rF;class rR extends rM.BufferGeometry{computeBoundingSphere(){}constructor(){super(),(0,rb._)(this,"boundingSphere",new rM.Sphere),this.setAttribute("position",new rM.BufferAttribute(new Float32Array([-1,-1,3,-1,-1,3]),2)),this.setAttribute("uv",new rM.BufferAttribute(new Float32Array([0,0,2,0,0,2]),2))}}let rI=new rR,rP=new rM.OrthographicCamera;class rL{render(e){e.render(this._mesh,rP)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.material.dispose(),this._mesh.geometry.dispose()}constructor(e){this._mesh=new rM.Mesh(rI,e),this._mesh.frustumCulled=!1}}let rU={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},sceneNormal:{value:null},projMat:{value:new rM.Matrix4},viewMat:{value:new rM.Matrix4},projViewMat:{value:new rM.Matrix4},projectionMatrixInv:{value:new rM.Matrix4},viewMatrixInv:{value:new rM.Matrix4},cameraPos:{value:new rM.Vector3},resolution:{value:new rM.Vector2},biasAdjustment:{value:new rM.Vector2},time:{value:0},samples:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},ortho:{value:!1},screenSpaceRadius:{value:!1},frame:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:"\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n}",fragmentShader:"\n #define SAMPLES 16\n #define FSAMPLES 16.0\nuniform sampler2D sceneDiffuse;\nuniform highp sampler2D sceneNormal;\nuniform highp sampler2D sceneDepth;\nuniform mat4 projectionMatrixInv;\nuniform mat4 viewMatrixInv;\nuniform mat4 projMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\nuniform vec3 cameraPos;\nuniform vec2 resolution;\nuniform vec2 biasAdjustment;\nuniform float time;\nuniform vec3[SAMPLES] samples;\nuniform float radius;\nuniform float distanceFalloff;\nuniform float near;\nuniform float far;\nuniform float frame;\nuniform bool ortho;\nuniform bool screenSpaceRadius;\nuniform sampler2D bluenoise;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n /*return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);*/\n #ifdef ORTHO\n\n return linearize_depth_ortho(d, nearZ, farZ);\n\n #else\n return linearize_depth(linDepth, nearZ, farZ);\n #endif\n }\n\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n #ifndef ORTHO\n return getWorldPosLog(vec3(coord, depth));\n #endif\n #endif\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n\n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n #ifdef REVERSEDEPTH\n float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x;\n float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #else\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #endif\n\n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n\n vec3 ce = getWorldPos(c0, vUv).xyz;\n\n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n\n return normalize(cross(dpdx, dpdy));\n}\n\nmat3 makeRotationZ(float theta) {\n float c = cos(theta);\n float s = sin(theta);\n return mat3(c, - s, 0,\n s, c, 0,\n 0, 0, 1);\n }\n\nvoid main() {\n vec4 diffuse = texture2D(sceneDiffuse, vUv);\n #ifdef REVERSEDEPTH\n float depth = 1.0 - texture2D(sceneDepth, vUv).x;\n #else\n float depth = texture2D(sceneDepth, vUv).x;\n #endif\n if (depth == 1.0) {\n gl_FragColor = vec4(vec3(1.0), 1.0);\n return;\n }\n vec3 worldPos = getWorldPos(depth, vUv);\n #ifdef HALFRES\n vec3 normal = texture2D(sceneNormal, vUv).rgb;\n #else\n vec3 normal = computeNormal(worldPos, vUv);\n #endif\n vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0);\n vec2 harmoniousNumbers = vec2(\n 1.618033988749895,\n 1.324717957244746\n );\n noise.rg += harmoniousNumbers * frame;\n noise.rg = fract(noise.rg);\n vec3 helperVec = vec3(0.0, 1.0, 0.0);\n if (dot(helperVec, normal) > 0.99) {\n helperVec = vec3(1.0, 0.0, 0.0);\n }\n vec3 tangent = normalize(cross(helperVec, normal));\n vec3 bitangent = cross(normal, tangent);\n mediump mat3 tbn = mat3(tangent, bitangent, normal) * makeRotationZ( noise.r * 3.1415962 * 2.0) ;\n\n mediump float occluded = 0.0;\n mediump float totalWeight = 0.0;\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : radiusToUse * distanceFalloff * 0.2;\n float bias = (min(\n 0.1,\n distanceFalloffToUse * 0.1\n ) / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse;\n bias = biasAdjustment.x + biasAdjustment.y * bias;\n mediump float offsetMove = noise.g;\n mediump float offsetMoveInv = 1.0 / FSAMPLES;\n float farTimesNear = far * near;\n float farMinusNear = far - near;\n \n for(int i = 0; i < SAMPLES; i++) {\n mediump vec3 sampleDirection = tbn * samples[i];\n\n float moveAmt = fract(offsetMove);\n offsetMove += offsetMoveInv;\n vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection;\n vec4 offset = projMat * vec4(samplePos, 1.0);\n offset.xyz /= offset.w;\n offset.xyz = offset.xyz * 0.5 + 0.5;\n \n if (all(greaterThan(offset.xyz * (1.0 - offset.xyz), vec3(0.0)))) {\n #ifdef REVERSEDEPTH\n float sampleDepth = 1.0 - textureLod(sceneDepth, offset.xy, 0.0).x;\n #else\n float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x;\n #endif\n\n /*#ifdef LOGDEPTH\n float distSample = linearize_depth_log(sampleDepth, near, far);\n #else\n #ifdef ORTHO\n float distSample = near + farMinusNear * sampleDepth;\n #else\n float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear);\n #endif\n #endif*/\n #ifdef ORTHO\n float distSample = near + sampleDepth * farMinusNear;\n #else\n #ifdef LOGDEPTH\n float distSample = linearize_depth_log(sampleDepth, near, far);\n #else\n float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear);\n #endif\n #endif\n \n #ifdef ORTHO\n float distWorld = near + offset.z * farMinusNear;\n #else\n float distWorld = (farTimesNear) / (far - offset.z * farMinusNear);\n #endif\n \n mediump float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld)));\n vec2 diff = gl_FragCoord.xy - floor(offset.xy * resolution);\n occluded += rangeCheck * float(distSample != distWorld) * float(sampleDepth != depth) * step(distSample + bias, distWorld) * step(\n 1.0,\n dot(diff, diff)\n );\n \n totalWeight ++;\n }\n }\n float occ = clamp(1.0 - occluded / (totalWeight == 0.0 ? 1.0 : totalWeight), 0.0, 1.0);\n gl_FragColor = vec4(occ, 0.5 + 0.5 * normal);\n}"},rG={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},transparencyDWFalse:{value:null},transparencyDWTrue:{value:null},transparencyDWTrueDepth:{value:null},transparencyAware:{value:!1},projMat:{value:new rM.Matrix4},viewMat:{value:new rM.Matrix4},projectionMatrixInv:{value:new rM.Matrix4},viewMatrixInv:{value:new rM.Matrix4},cameraPos:{value:new rM.Vector3},resolution:{value:new rM.Vector2},color:{value:new rM.Vector3(0,0,0)},blueNoise:{value:null},downsampledDepth:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1},ortho:{value:!1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1},radius:{value:0},distanceFalloff:{value:1},fog:{value:!1},fogExp:{value:!1},fogDensity:{value:0},fogNear:{value:1/0},fogFar:{value:1/0},colorMultiply:{value:!0},aoTones:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform highp sampler2D downsampledDepth;\n uniform highp sampler2D transparencyDWFalse;\n uniform highp sampler2D transparencyDWTrue;\n uniform highp sampler2D transparencyDWTrueDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform vec2 resolution;\n uniform vec3 color;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform float intensity;\n uniform float renderMode;\n uniform float near;\n uniform float far;\n uniform float aoTones;\n uniform bool gammaCorrection;\n uniform bool ortho;\n uniform bool screenSpaceRadius;\n uniform bool fog;\n uniform bool fogExp;\n uniform bool colorMultiply;\n uniform bool transparencyAware;\n uniform float fogDensity;\n uniform float fogNear;\n uniform float fogFar;\n uniform float radius;\n uniform float distanceFalloff;\n uniform vec3 cameraPos;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n #ifndef ORTHO\n return getWorldPosLog(vec3(coord, depth));\n #endif\n #endif\n // }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n #ifdef REVERSEDEPTH\n float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x;\n float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #else\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #endif\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n\n #include <common>\n #include <dithering_pars_fragment>\n void main() {\n //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0);\n vec4 sceneTexel = texture2D(sceneDiffuse, vUv);\n #ifdef REVERSEDEPTH\n float depth = 1.0 - texture2D(sceneDepth, vUv).x;\n #else\n float depth = texture2D(sceneDepth, vUv).x;\n #endif\n #ifdef HALFRES \n vec4 texel;\n if (depth == 1.0) {\n texel = vec4(0.0, 0.0, 0.0, 1.0);\n } else {\n vec3 worldPos = getWorldPos(depth, vUv);\n vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv);\n // vec4 texel = texture2D(tDiffuse, vUv);\n // Find closest depth;\n float totalWeight = 0.0;\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n for(float x = -1.0; x <= 1.0; x++) {\n for(float y = -1.0; y <= 1.0; y++) {\n vec2 offset = vec2(x, y);\n ivec2 p = ivec2(\n (vUv * resolution * 0.5) + offset\n );\n vec2 pUv = vec2(p) / (resolution * 0.5);\n float sampleDepth = texelFetch(downsampledDepth,p, 0).x;\n vec4 sampleInfo = texelFetch(tDiffuse, p, 0);\n vec3 normalSample = sampleInfo.gba * 2.0 - 1.0;\n vec3 worldPosSample = getWorldPos(sampleDepth, pUv);\n float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal));\n float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0);\n float weight = rangeCheck;\n totalWeight += weight;\n texel += sampleInfo * weight;\n }\n }\n if (totalWeight == 0.0) {\n texel = texture2D(tDiffuse, vUv);\n } else {\n texel /= totalWeight;\n }\n }\n #else\n vec4 texel = texture2D(tDiffuse, vUv);\n #endif\n\n #ifdef LOGDEPTH\n texel.r = clamp(texel.r, 0.0, 1.0);\n if (texel.r == 0.0) {\n texel.r = 1.0;\n }\n #endif\n \n float finalAo = pow(texel.r, intensity);\n if (aoTones > 0.0) {\n finalAo = ceil(finalAo * aoTones) / aoTones;\n }\n float fogFactor;\n float fogDepth = distance(\n cameraPos,\n getWorldPos(depth, vUv)\n );\n if (fog) {\n if (fogExp) {\n fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n } else {\n fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n }\n }\n if (transparencyAware) {\n float transparencyDWOff = texture2D(transparencyDWFalse, vUv).a;\n float transparencyDWOn = texture2D(transparencyDWTrue, vUv).a;\n float adjustmentFactorOff = transparencyDWOff;\n #ifdef REVERSEDEPTH\n float depthSample = 1.0 - texture2D(sceneDepth, vUv).r;\n float trueDepthSample = 1.0 - texture2D(transparencyDWTrueDepth, vUv).r;\n #else\n float depthSample = texture2D(sceneDepth, vUv).r;\n float trueDepthSample = texture2D(transparencyDWTrueDepth, vUv).r;\n #endif\n float adjustmentFactorOn = (1.0 - transparencyDWOn) * (\n trueDepthSample == depthSample ? 1.0 : 0.0\n );\n float adjustmentFactor = max(adjustmentFactorOff, adjustmentFactorOn);\n finalAo = mix(finalAo, 1.0, adjustmentFactor);\n }\n finalAo = mix(finalAo, 1.0, fogFactor);\n vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply));\n if (renderMode == 0.0) {\n gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 1.0) {\n gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 2.0) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (renderMode == 3.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);\n }\n } else if (renderMode == 4.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);\n }\n }\n #include <dithering_fragment>\n if (gammaCorrection) {\n gl_FragColor = sRGBTransferOETF(gl_FragColor);\n }\n }\n "},rO={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new rM.Matrix4},viewMat:{value:new rM.Matrix4},projectionMatrixInv:{value:new rM.Matrix4},viewMatrixInv:{value:new rM.Matrix4},cameraPos:{value:new rM.Vector3},resolution:{value:new rM.Vector2},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1.0);\n }",fragmentShader:"\n uniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform vec2 resolution;\n uniform float r;\n uniform float radius;\n uniform float worldRadius;\n uniform float index;\n uniform float near;\n uniform float far;\n uniform float distanceFalloff;\n uniform bool screenSpaceRadius;\n varying vec2 vUv;\n\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n highp float z_n = 2.0 * d - 1.0;\n return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear));\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return linearize_depth(linDepth, nearZ, farZ);\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n #ifndef ORTHO\n return getWorldPosLog(vec3(coord, depth));\n #endif\n #endif\n \n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n #include <common>\n #define NUM_SAMPLES 16\n uniform vec2 poissonDisk[NUM_SAMPLES];\n void main() {\n const float pi = 3.14159;\n vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n vec2 uv = vUv;\n vec4 data = texture2D(tDiffuse, vUv);\n float occlusion = data.r;\n float baseOcc = data.r;\n vec3 normal = data.gba * 2.0 - 1.0;\n float count = 1.0;\n float d = texture2D(sceneDepth, vUv).x;\n if (d == 1.0) {\n gl_FragColor = data;\n return;\n }\n vec3 worldPos = getWorldPos(d, vUv);\n float size = radius;\n float angle;\n if (index == 0.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2;\n } else if (index == 1.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2;\n } else if (index == 2.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2;\n } else {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2;\n }\n\n mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(d, vUv +\n vec2(worldRadius, 0.0) / resolution)\n ) : worldRadius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : radiusToUse * distanceFalloff * 0.2;\n\n float invDistance = (1.0 / distanceFalloffToUse);\n for(int i = 0; i < NUM_SAMPLES; i++) {\n vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size;\n vec4 dataSample = texture2D(tDiffuse, uv + offset);\n float occSample = dataSample.r;\n vec3 normalSample = dataSample.gba * 2.0 - 1.0;\n float dSample = texture2D(sceneDepth, uv + offset).x;\n vec3 worldPosSample = getWorldPos(dSample, uv + offset);\n float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal));\n float rangeCheck = float(dSample != 1.0) * exp(-1.0 * tangentPlaneDist * invDistance ) * max(dot(normal, normalSample), 0.0);\n occlusion += occSample * rangeCheck;\n count += rangeCheck;\n }\n if (count > 0.0) {\n occlusion /= count;\n }\n occlusion = clamp(occlusion, 0.0, 1.0);\n if (occlusion == 0.0) {\n occlusion = 1.0;\n }\n gl_FragColor = vec4(occlusion, 0.5 + 0.5 * normal);\n }\n "},rH={uniforms:{sceneDepth:{value:null},resolution:{value:new rM.Vector2},near:{value:.1},far:{value:1e3},viewMatrixInv:{value:new rM.Matrix4},projectionMatrixInv:{value:new rM.Matrix4},logDepth:{value:!1},ortho:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform highp sampler2D sceneDepth;\n uniform vec2 resolution;\n uniform float near;\n uniform float far;\n uniform bool logDepth;\n uniform bool ortho;\n uniform mat4 viewMatrixInv;\n uniform mat4 projectionMatrixInv;\n varying vec2 vUv;\n layout(location = 1) out vec4 gNormal;\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n if (logDepth && !ortho) {\n return getWorldPosLog(vec3(coord, depth));\n }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n #ifdef REVERSEDEPTH\n float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x;\n float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #else\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #endif\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n void main() {\n vec2 uv = vUv - vec2(0.5) / resolution;\n vec2 pixelSize = vec2(1.0) / resolution;\n highp vec2[4] uvSamples;\n uvSamples[0] = uv;\n uvSamples[1] = uv + vec2(pixelSize.x, 0.0);\n uvSamples[2] = uv + vec2(0.0, pixelSize.y);\n uvSamples[3] = uv + pixelSize;\n #ifdef REVERSEDEPTH\n float depth00 = 1.0 - texture2D(sceneDepth, uvSamples[0]).r;\n float depth10 = 1.0 - texture2D(sceneDepth, uvSamples[1]).r;\n float depth01 = 1.0 - texture2D(sceneDepth, uvSamples[2]).r;\n float depth11 = 1.0 - texture2D(sceneDepth, uvSamples[3]).r;\n #else\n float depth00 = texture2D(sceneDepth, uvSamples[0]).r;\n float depth10 = texture2D(sceneDepth, uvSamples[1]).r;\n float depth01 = texture2D(sceneDepth, uvSamples[2]).r;\n float depth11 = texture2D(sceneDepth, uvSamples[3]).r;\n #endif\n float minDepth = min(min(depth00, depth10), min(depth01, depth11));\n float maxDepth = max(max(depth00, depth10), max(depth01, depth11));\n float targetDepth = minDepth;\n // Checkerboard pattern to avoid artifacts\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { \n targetDepth = maxDepth;\n }\n int chosenIndex = 0;\n float[4] samples;\n samples[0] = depth00;\n samples[1] = depth10;\n samples[2] = depth01;\n samples[3] = depth11;\n for(int i = 0; i < 4; ++i) {\n if (samples[i] == targetDepth) {\n chosenIndex = i;\n break;\n }\n }\n gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0);\n gNormal = vec4(computeNormal(\n getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex]\n ), 0.0);\n }"},rN=Uint8Array.from(atob("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"),e=>e.charCodeAt(0)),rk=parseInt(rM.REVISION.replace(/\D+/g,""))>=162?class extends rM.WebGLRenderTarget{get texture(){return this.textures}constructor(e=1,t=1,r=1,n={}){super(e,t,{...n,count:r}),this.isWebGLMultipleRenderTargets=!0}}:class extends rM.WebGLRenderTarget{setSize(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(this.width!==e||this.height!==t||this.depth!==r){this.width=e,this.height=t,this.depth=r;for(let n=0,i=this.texture.length;n<i;n++)this.texture[n].image.width=e,this.texture[n].image.height=t,this.texture[n].image.depth=r;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.texture.length=0;for(let t=0,r=e.texture.length;t<r;t++)this.texture[t]=e.texture[t].clone(),this.texture[t].isRenderTargetTexture=!0;return this}constructor(e=1,t=1,r=1,n={}){super(e,t,n),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let e=0;e<r;e++)this.texture[e]=i.clone(),this.texture[e].isRenderTargetTexture=!0}};class rj extends e${configureHalfResTargets(){this.firstFrame(),this.configuration.halfRes?(this.depthDownsampleTarget=new rk(this.width/2,this.height/2,2),rM.REVISION<=161&&(this.depthDownsampleTarget.textures=this.depthDownsampleTarget.texture),this.depthDownsampleTarget.textures[0].format=rM.RedFormat,this.depthDownsampleTarget.textures[0].type=rM.FloatType,this.depthDownsampleTarget.textures[0].minFilter=rM.NearestFilter,this.depthDownsampleTarget.textures[0].magFilter=rM.NearestFilter,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=rM.RGBAFormat,this.depthDownsampleTarget.textures[1].type=rM.HalfFloatType,this.depthDownsampleTarget.textures[1].minFilter=rM.NearestFilter,this.depthDownsampleTarget.textures[1].magFilter=rM.NearestFilter,this.depthDownsampleTarget.textures[1].depthBuffer=!1,this.depthDownsampleQuad=new rL(new rM.ShaderMaterial(rH))):(this.depthDownsampleTarget&&(this.depthDownsampleTarget.dispose(),this.depthDownsampleTarget=null),this.depthDownsampleQuad&&(this.depthDownsampleQuad.dispose(),this.depthDownsampleQuad=null))}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),e&&(this.configuration.transparencyAware=!0)}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new rM.WebGLRenderTarget(this.width,this.height,{minFilter:rM.LinearFilter,magFilter:rM.NearestFilter,type:rM.HalfFloatType,format:rM.RGBAFormat}),this.transparencyRenderTargetDWTrue=new rM.WebGLRenderTarget(this.width,this.height,{minFilter:rM.LinearFilter,magFilter:rM.NearestFilter,type:rM.HalfFloatType,format:rM.RGBAFormat}),this.transparencyRenderTargetDWTrue.depthTexture=new rM.DepthTexture(this.width,this.height,rM.UnsignedIntType),this.depthCopyPass=new rL(new rM.ShaderMaterial({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===rz.Reverse}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform sampler2D depthTexture;\n uniform bool reverseDepthBuffer;\n varying vec2 vUv;\n void main() {\n if (reverseDepthBuffer) {\n float d = 1.0 - texture2D(depthTexture, vUv).r;\n \n d += 0.00001;\n gl_FragDepth = 1.0 - d;\n } else {\n float d = texture2D(depthTexture, vUv).r;\n d += 0.00001;\n gl_FragDepth = d;\n }\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n "}))):(this.transparencyRenderTargetDWFalse&&(this.transparencyRenderTargetDWFalse.dispose(),this.transparencyRenderTargetDWFalse=null),this.transparencyRenderTargetDWTrue&&(this.transparencyRenderTargetDWTrue.dispose(),this.transparencyRenderTargetDWTrue=null),this.depthCopyPass&&(this.depthCopyPass.dispose(),this.depthCopyPass=null))}renderTransparency(e){let t=this.scene.background,r=e.getClearColor(new rM.Color),n=e.getClearAlpha(),i=new Map,a=e.autoClearDepth;this.scene.traverse(e=>{i.set(e,e.visible)}),this.scene.background=null,e.autoClearDepth=!1,e.setClearColor(new rM.Color(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===rz.Reverse,e.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=i.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),e.clear(!0,!0,!0),this.depthCopyPass.render(e),e.render(this.scene,this.camera),e.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=i.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),e.clear(!0,!0,!0),this.depthCopyPass.render(e),e.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=i.get(e)}),e.setClearColor(r,n),this.scene.background=t,e.autoClearDepth=a}configureSampleDependentPasses(){this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rz.Default,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let r={...rU};r.fragmentShader=r.fragmentShader.replace("16",this.configuration.aoSamples).replace("16.0",this.configuration.aoSamples+".0"),e===rz.Log?r.fragmentShader="#define LOGDEPTH\n"+r.fragmentShader:e===rz.Reverse&&(r.fragmentShader="#define REVERSEDEPTH\n"+r.fragmentShader),t&&(r.fragmentShader="#define ORTHO\n"+r.fragmentShader),this.configuration.halfRes&&(r.fragmentShader="#define HALFRES\n"+r.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new rM.ShaderMaterial(r)):this.effectShaderQuad=new rL(new rM.ShaderMaterial(r))}configureDenoisePass(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rz.Default,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let r={...rO};r.fragmentShader=r.fragmentShader.replace("16",this.configuration.denoiseSamples),e===rz.Log?r.fragmentShader="#define LOGDEPTH\n"+r.fragmentShader:e===rz.Reverse&&(r.fragmentShader="#define REVERSEDEPTH\n"+r.fragmentShader),t&&(r.fragmentShader="#define ORTHO\n"+r.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new rM.ShaderMaterial(r)):this.poissonBlurQuad=new rL(new rM.ShaderMaterial(r))}configureEffectCompositer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rz.Default,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.firstFrame();let r={...rG};e===rz.Log?r.fragmentShader="#define LOGDEPTH\n"+r.fragmentShader:e===rz.Reverse&&(r.fragmentShader="#define REVERSEDEPTH\n"+r.fragmentShader),t&&(r.fragmentShader="#define ORTHO\n"+r.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(r.fragmentShader="#define HALFRES\n"+r.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new rM.ShaderMaterial(r)):this.effectCompositerQuad=new rL(new rM.ShaderMaterial(r))}generateHemisphereSamples(e){let t=[];for(let r=0;r<e;r++){let n=2.399963*r,i=Math.sqrt(r+.5)/Math.sqrt(e),a=i*Math.cos(n),s=i*Math.sin(n),o=Math.sqrt(1-(a*a+s*s));t.push(new rM.Vector3(a,s,o))}return t}generateDenoiseSamples(e,t){let r=2*Math.PI*t/e,n=1/e,i=[],a=n,s=0;for(let t=0;t<e;t++)i.push(new rM.Vector2(Math.cos(s),Math.sin(s)).multiplyScalar(Math.pow(a,.75))),a+=n,s+=r;return i}setSize(e,t){this.firstFrame(),this.width=e,this.height=t;let r=this.configuration.halfRes?.5:1;this.writeTargetInternal.setSize(e*r,t*r),this.readTargetInternal.setSize(e*r,t*r),this.accumulationRenderTarget.setSize(e*r,t*r),this.configuration.halfRes&&this.depthDownsampleTarget.setSize(e*r,t*r),this.configuration.transparencyAware&&(this.transparencyRenderTargetDWFalse.setSize(e,t),this.transparencyRenderTargetDWTrue.setSize(e,t)),this.outputTargetInternal.setSize(e,t)}setDepthTexture(e){this.depthTexture=e}firstFrame(){this.needsFrame=!0}render(e,t,r){let n,i,a,s=e.xr.enabled;e.xr.enabled=!1,(e.capabilities.logarithmicDepthBuffer&&this.configuration.depthBufferType!==rz.Log||e.capabilities.reverseDepthBuffer&&this.configuration.depthBufferType!==rz.Reverse)&&(this.configuration.depthBufferType=e.capabilities.logarithmicDepthBuffer?rz.Log:e.capabilities.reverseDepthBuffer?rz.Reverse:rz.Default,this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera)),this.detectTransparency(),(t.texture.type!==this.outputTargetInternal.texture.type||t.texture.format!==this.outputTargetInternal.texture.format)&&(this.outputTargetInternal.texture.type=t.texture.type,this.outputTargetInternal.texture.format=t.texture.format,this.outputTargetInternal.texture.needsUpdate=!0),this.camera.updateMatrixWorld(),this.lastViewMatrix.equals(this.camera.matrixWorldInverse)&&this.lastProjectionMatrix.equals(this.camera.projectionMatrix)&&this.configuration.accumulate&&!this.needsFrame?this.frame++:(this.configuration.accumulate&&(e.setRenderTarget(this.accumulationRenderTarget),e.clear(!0,!0,!0)),this.frame=0,this.needsFrame=!1),this.lastViewMatrix.copy(this.camera.matrixWorldInverse),this.lastProjectionMatrix.copy(this.camera.projectionMatrix),this.debugMode&&null===(i=(n=e.getContext()).getExtension("EXT_disjoint_timer_query_webgl2"))&&(console.error("EXT_disjoint_timer_query_webgl2 not available, disabling debug mode."),this.debugMode=!1),this.debugMode&&(a=n.createQuery(),n.beginQuery(i.TIME_ELAPSED_EXT,a)),this.configuration.transparencyAware&&this.renderTransparency(e),this._r.set(this.width,this.height);let o=this.configuration.aoRadius;if(this.configuration.halfRes&&this.configuration.screenSpaceRadius&&(o*=.5),this.frame<1024/this.configuration.aoSamples){this.configuration.halfRes&&(e.setRenderTarget(this.depthDownsampleTarget),this.depthDownsampleQuad.material.uniforms.sceneDepth.value=this.depthTexture,this.depthDownsampleQuad.material.uniforms.resolution.value=this._r,this.depthDownsampleQuad.material.uniforms.near.value=this.camera.near,this.depthDownsampleQuad.material.uniforms.far.value=this.camera.far,this.depthDownsampleQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.depthDownsampleQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.depthDownsampleQuad.material.uniforms.logDepth.value=this.configuration.logarithmicDepthBuffer,this.depthDownsampleQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.depthDownsampleQuad.render(e)),this.effectShaderQuad.material.uniforms.sceneDiffuse.value=t.texture,this.effectShaderQuad.material.uniforms.sceneDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[0]:this.depthTexture,this.effectShaderQuad.material.uniforms.sceneNormal.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[1]:null,this.effectShaderQuad.material.uniforms.projMat.value=this.camera.projectionMatrix,this.effectShaderQuad.material.uniforms.viewMat.value=this.camera.matrixWorldInverse,this.effectShaderQuad.material.uniforms.projViewMat.value=this.camera.projectionMatrix.clone().multiply(this.camera.matrixWorldInverse.clone()),this.effectShaderQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.effectShaderQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.effectShaderQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new rM.Vector3),this.effectShaderQuad.material.uniforms.biasAdjustment.value=new rM.Vector2(this.configuration.biasOffset,this.configuration.biasMultiplier),this.effectShaderQuad.material.uniforms.resolution.value=this.configuration.halfRes?this._r.clone().multiplyScalar(.5).floor():this._r,this.effectShaderQuad.material.uniforms.time.value=performance.now()/1e3,this.effectShaderQuad.material.uniforms.samples.value=this.samples,this.effectShaderQuad.material.uniforms.bluenoise.value=this.bluenoise,this.effectShaderQuad.material.uniforms.radius.value=o,this.effectShaderQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.effectShaderQuad.material.uniforms.near.value=this.camera.near,this.effectShaderQuad.material.uniforms.far.value=this.camera.far,this.effectShaderQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.effectShaderQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,this.effectShaderQuad.material.uniforms.frame.value=this.frame,e.setRenderTarget(this.writeTargetInternal),this.effectShaderQuad.render(e);for(let t=0;t<this.configuration.denoiseIterations;t++)[this.writeTargetInternal,this.readTargetInternal]=[this.readTargetInternal,this.writeTargetInternal],this.poissonBlurQuad.material.uniforms.tDiffuse.value=this.readTargetInternal.texture,this.poissonBlurQuad.material.uniforms.sceneDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[0]:this.depthTexture,this.poissonBlurQuad.material.uniforms.projMat.value=this.camera.projectionMatrix,this.poissonBlurQuad.material.uniforms.viewMat.value=this.camera.matrixWorldInverse,this.poissonBlurQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.poissonBlurQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.poissonBlurQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new rM.Vector3),this.poissonBlurQuad.material.uniforms.resolution.value=this.configuration.halfRes?this._r.clone().multiplyScalar(.5).floor():this._r,this.poissonBlurQuad.material.uniforms.time.value=performance.now()/1e3,this.poissonBlurQuad.material.uniforms.blueNoise.value=this.bluenoise,this.poissonBlurQuad.material.uniforms.radius.value=this.configuration.denoiseRadius*(this.configuration.halfRes?.5:1),this.poissonBlurQuad.material.uniforms.worldRadius.value=o,this.poissonBlurQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.poissonBlurQuad.material.uniforms.index.value=t,this.poissonBlurQuad.material.uniforms.poissonDisk.value=this.samplesDenoise,this.poissonBlurQuad.material.uniforms.near.value=this.camera.near,this.poissonBlurQuad.material.uniforms.far.value=this.camera.far,this.poissonBlurQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,e.setRenderTarget(this.writeTargetInternal),this.poissonBlurQuad.render(e);e.setRenderTarget(this.accumulationRenderTarget);let r=e.autoClear;e.autoClear=!1,this.accumulationQuad.material.uniforms.tDiffuse.value=this.writeTargetInternal.texture,this.accumulationQuad.material.uniforms.frame.value=this.frame,this.accumulationQuad.render(e),e.autoClear=r}this.configuration.transparencyAware&&(this.effectCompositerQuad.material.uniforms.transparencyDWFalse.value=this.transparencyRenderTargetDWFalse.texture,this.effectCompositerQuad.material.uniforms.transparencyDWTrue.value=this.transparencyRenderTargetDWTrue.texture,this.effectCompositerQuad.material.uniforms.transparencyDWTrueDepth.value=this.transparencyRenderTargetDWTrue.depthTexture,this.effectCompositerQuad.material.uniforms.transparencyAware.value=!0),this.effectCompositerQuad.material.uniforms.sceneDiffuse.value=t.texture,this.effectCompositerQuad.material.uniforms.sceneDepth.value=this.depthTexture,this.effectCompositerQuad.material.uniforms.aoTones.value=this.configuration.aoTones,this.effectCompositerQuad.material.uniforms.near.value=this.camera.near,this.effectCompositerQuad.material.uniforms.far.value=this.camera.far,this.effectCompositerQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.effectCompositerQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.effectCompositerQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.effectCompositerQuad.material.uniforms.downsampledDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[0]:this.depthTexture,this.effectCompositerQuad.material.uniforms.resolution.value=this._r,this.effectCompositerQuad.material.uniforms.blueNoise.value=this.bluenoise,this.effectCompositerQuad.material.uniforms.intensity.value=this.configuration.intensity,this.effectCompositerQuad.material.uniforms.renderMode.value=this.configuration.renderMode,this.effectCompositerQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,this.effectCompositerQuad.material.uniforms.radius.value=o,this.effectCompositerQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.effectCompositerQuad.material.uniforms.gammaCorrection.value=this.autosetGamma?this.renderToScreen:this.configuration.gammaCorrection,this.effectCompositerQuad.material.uniforms.tDiffuse.value=this.accumulationRenderTarget.texture,this.effectCompositerQuad.material.uniforms.color.value=this._c.copy(this.configuration.color).convertSRGBToLinear(),this.effectCompositerQuad.material.uniforms.colorMultiply.value=this.configuration.colorMultiply,this.effectCompositerQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new rM.Vector3),this.effectCompositerQuad.material.uniforms.fog.value=!!this.scene.fog,this.scene.fog&&(this.scene.fog.isFog?(this.effectCompositerQuad.material.uniforms.fogExp.value=!1,this.effectCompositerQuad.material.uniforms.fogNear.value=this.scene.fog.near,this.effectCompositerQuad.material.uniforms.fogFar.value=this.scene.fog.far):this.scene.fog.isFogExp2?(this.effectCompositerQuad.material.uniforms.fogExp.value=!0,this.effectCompositerQuad.material.uniforms.fogDensity.value=this.scene.fog.density):console.error("Unsupported fog type ".concat(this.scene.fog.constructor.name," in SSAOPass."))),e.setRenderTarget(this.outputTargetInternal),this.effectCompositerQuad.render(e),e.setRenderTarget(this.renderToScreen?null:r),this.copyQuad.material.uniforms.tDiffuse.value=this.outputTargetInternal.texture,this.copyQuad.render(e),this.debugMode&&(n.endQuery(i.TIME_ELAPSED_EXT),function e(t,r,n){if(r.getQueryParameter(t,r.QUERY_RESULT_AVAILABLE)){let e=r.getQueryParameter(t,r.QUERY_RESULT)/1e6;n.lastTime=0===n.lastTime?e:n.timeRollingAverage*n.lastTime+(1-n.timeRollingAverage)*e}else setTimeout(()=>{e(t,r,n)},1)}(a,n,this)),e.xr.enabled=s}enableDebugMode(){this.debugMode=!0}disableDebugMode(){this.debugMode=!1}setDisplayMode(e){this.configuration.renderMode=["Combined","AO","No AO","Split","Split AO"].indexOf(e)}setQualityMode(e){"Performance"===e?(this.configuration.aoSamples=8,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Low"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Medium"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=12):"High"===e?(this.configuration.aoSamples=64,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=6):"Ultra"===e&&(this.configuration.aoSamples=64,this.configuration.denoiseSamples=16,this.configuration.denoiseRadius=6)}constructor(e,t,r=512,n=512){super(),this.width=r,this.height=n,this.clear=!0,this.camera=t,this.scene=e,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,aoTones:0,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,biasOffset:0,biasMultiplier:0,color:new rM.Color(0,0,0),gammaCorrection:!0,depthBufferType:rz.Default,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,colorMultiply:!0,transparencyAware:!1,accumulate:!1},{set:(e,t,r)=>{let n=e[t];return e[t]=r,r.equals?r.equals(n)||this.firstFrame():n!==r&&this.firstFrame(),"aoSamples"===t&&n!==r&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"denoiseSamples"===t&&n!==r&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"halfRes"===t&&n!==r&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),"depthAwareUpsampling"===t&&n!==r&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"gammaCorrection"===t&&(this.autosetGamma=!1),"transparencyAware"===t&&n!==r&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frames=0,this.lastViewMatrix=new rM.Matrix4,this.lastProjectionMatrix=new rM.Matrix4,this.configureEffectCompositer(this.configuration.depthBufferType),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.copyQuad=new rL(new rM.ShaderMaterial({uniforms:{tDiffuse:{value:null}},depthWrite:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }\n ",fragmentShader:"\n uniform sampler2D tDiffuse;\n varying vec2 vUv;\n void main() {\n gl_FragColor = texture2D(tDiffuse, vUv);\n }\n "})),this.writeTargetInternal=new rM.WebGLRenderTarget(this.width,this.height,{minFilter:rM.LinearFilter,magFilter:rM.LinearFilter,depthBuffer:!1,format:rM.RGBAFormat}),this.readTargetInternal=new rM.WebGLRenderTarget(this.width,this.height,{minFilter:rM.LinearFilter,magFilter:rM.LinearFilter,depthBuffer:!1,format:rM.RGBAFormat}),this.outputTargetInternal=new rM.WebGLRenderTarget(this.width,this.height,{minFilter:rM.LinearFilter,magFilter:rM.LinearFilter,depthBuffer:!1}),this.accumulationRenderTarget=new rM.WebGLRenderTarget(this.width,this.height,{minFilter:rM.LinearFilter,magFilter:rM.LinearFilter,depthBuffer:!1,format:rM.RGBAFormat,type:rM.HalfFloatType,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.accumulationQuad=new rL(new rM.ShaderMaterial({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float frame;\n varying vec2 vUv;\n void main() {\n vec4 color = texture2D(tDiffuse, vUv);\n gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0));\n }\n "})),this.bluenoise=new rM.DataTexture(rN,128,128),this.bluenoise.colorSpace=rM.NoColorSpace,this.bluenoise.wrapS=rM.RepeatWrapping,this.bluenoise.wrapT=rM.RepeatWrapping,this.bluenoise.minFilter=rM.NearestFilter,this.bluenoise.magFilter=rM.NearestFilter,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this.needsDepthTexture=!0,this.needsSwap=!0,this._r=new rM.Vector2,this._c=new rM.Color}}let rz={Default:1,Log:2,Reverse:3},rK=(0,eG.createContext)(null),rJ=e=>(2&e.getAttributes())==2,rV=(0,eG.memo)((0,eG.forwardRef)((e,t)=>{let{children:r,camera:n,scene:i,resolutionScale:a,enabled:s=!0,renderPriority:o=1,autoClear:l=!0,depthBuffer:u,enableNormalPass:c,stencilBuffer:d,multisampling:f=8,frameBufferType:h=ek.HalfFloatType}=e,{gl:p,scene:m,camera:g,size:A}=(0,eW.useThree)(),y=i||m,x=n||g,[B,C,S]=(0,eG.useMemo)(()=>{let e=new e5(p,{depthBuffer:u,stencilBuffer:d,multisampling:f,frameBufferType:h});e.addPass(new tb(y,x));let t=null,r=null;return c&&((r=new t3(y,x)).enabled=!1,e.addPass(r),void 0!==a&&((t=new tX({normalBuffer:r.texture,resolutionScale:a})).enabled=!1,e.addPass(t))),[e,r,t]},[x,p,u,d,f,h,y,c,a]);(0,eG.useEffect)(()=>null==B?void 0:B.setSize(A.width,A.height),[B,A]),(0,eX.useFrame)((e,t)=>{if(s){let e=p.autoClear;p.autoClear=l,d&&!l&&p.clearStencil(),B.render(t),p.autoClear=e}},s?o:0);let E=(0,eG.useRef)(null);(0,eG.useLayoutEffect)(()=>{let e=[],t=E.current.__r3f;if(t&&B){let n=t.children;for(let t=0;t<n.length;t++){let i=n[t].object;if(i instanceof tu){let a=[i];if(!rJ(i)){var r;let e=null;for(;(e=null==(r=n[t+1])?void 0:r.object)instanceof tu&&!rJ(e);)a.push(e),t++}let s=new t9(x,...a);e.push(s)}else i instanceof e$&&e.push(i)}for(let t of e)null==B||B.addPass(t);C&&(C.enabled=!0),S&&(S.enabled=!0)}return()=>{for(let t of e)null==B||B.removePass(t);C&&(C.enabled=!1),S&&(S.enabled=!1)}},[B,r,x,C,S]),(0,eG.useEffect)(()=>{let e=p.toneMapping;return p.toneMapping=ek.NoToneMapping,()=>{p.toneMapping=e}},[p]);let T=(0,eG.useMemo)(()=>({composer:B,normalPass:C,downSamplingPass:S,resolutionScale:a,camera:x,scene:y}),[B,C,S,a,x,y]);return(0,eG.useImperativeHandle)(t,()=>B,[B]),(0,eU.jsx)(rK.Provider,{value:T,children:(0,eU.jsx)("group",{ref:E,children:r})})}));var rQ=(e=>(e[e.Linear=0]="Linear",e[e.Radial=1]="Radial",e[e.MirroredLinear=2]="MirroredLinear",e))(rQ||{});let rW=(0,eG.forwardRef)((e,t)=>{let{halfRes:r,screenSpaceRadius:n,quality:i,depthAwareUpsampling:a=!0,aoRadius:s=5,aoSamples:o=16,denoiseSamples:l=4,denoiseRadius:u=12,distanceFalloff:c=1,intensity:d=1,color:f,renderMode:h=0}=e,{camera:p,scene:m}=(0,eW.useThree)(),g=(0,eG.useMemo)(()=>new rj(m,p),[p,m]);return(0,eG.useLayoutEffect)(()=>{(0,eH.s)(g.configuration,{color:f,aoRadius:s,distanceFalloff:c,intensity:d,aoSamples:o,denoiseSamples:l,denoiseRadius:u,screenSpaceRadius:n,renderMode:h,halfRes:r,depthAwareUpsampling:a})},[n,f,s,c,d,o,l,u,h,r,a,g]),(0,eG.useLayoutEffect)(()=>{i&&g.setQualityMode(i.charAt(0).toUpperCase()+i.slice(1))},[g,i]),(0,eU.jsx)("primitive",{ref:t,object:g})});function rX(e,t,r){if(!t.has(e))throw TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function r_(e,t){var r=rX(e,t,"get");return r.get?r.get.call(e):r.value}function rZ(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}function rY(e,t,r){rZ(e,t),t.set(e,r)}function rq(e,t,r){var n=rX(e,t,"set");if(n.set)n.set.call(e,r);else{if(!n.writable)throw TypeError("attempted to set read only private field");n.value=r}return r}function r$(e,t,r){if(!t.has(e))throw TypeError("attempted to get private field on non-instance");return r}function r0(e,t){rZ(e,t),t.add(e)}var r1=class{subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}};e.i(47167);var r2={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},r9=new(R=new WeakMap,I=new WeakMap,class{setTimeoutProvider(e){rq(this,R,e)}setTimeout(e,t){return r_(this,R).setTimeout(e,t)}clearTimeout(e){r_(this,R).clearTimeout(e)}setInterval(e,t){return r_(this,R).setInterval(e,t)}clearInterval(e){r_(this,R).clearInterval(e)}constructor(){rY(this,R,{writable:!0,value:r2}),rY(this,I,{writable:!0,value:!1})}}),r3="undefined"==typeof window||"Deno"in globalThis;function r4(){}function r8(e){return"number"==typeof e&&e>=0&&e!==1/0}function r5(e,t){return Math.max(e+(t||0)-Date.now(),0)}function r6(e,t){return"function"==typeof e?e(t):e}function r7(e,t){return"function"==typeof e?e(t):e}function ne(e,t){let{type:r="all",exact:n,fetchStatus:i,predicate:a,queryKey:s,stale:o}=e;if(s){if(n){if(t.queryHash!==nr(s,t.options))return!1}else if(!ni(t.queryKey,s))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&(!i||i===t.state.fetchStatus)&&(!a||!!a(t))}function nt(e,t){let{exact:r,status:n,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(r){if(nn(t.options.mutationKey)!==nn(a))return!1}else if(!ni(t.options.mutationKey,a))return!1}return(!n||t.state.status===n)&&(!i||!!i(t))}function nr(e,t){return((null==t?void 0:t.queryKeyHashFn)||nn)(e)}function nn(e){return JSON.stringify(e,(e,t)=>nl(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function ni(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>ni(e[r],t[r]))}var na=Object.prototype.hasOwnProperty;function ns(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function no(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function nl(e){if(!nu(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!nu(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function nu(e){return"[object Object]"===Object.prototype.toString.call(e)}function nc(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r){if(t===r)return t;let n=no(t)&&no(r);if(!n&&!(nl(t)&&nl(r)))return r;let i=(n?t:Object.keys(t)).length,a=n?r:Object.keys(r),s=a.length,o=n?Array(s):{},l=0;for(let u=0;u<s;u++){let s=n?u:a[u],c=t[s],d=r[s];if(c===d){o[s]=c,(n?u<i:na.call(t,s))&&l++;continue}if(null===c||null===d||"object"!=typeof c||"object"!=typeof d){o[s]=d;continue}let f=e(c,d);o[s]=f,f===c&&l++}return i===s&&l===i?t:o}(e,t):t}function nd(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=[...e,t];return r&&n.length>r?n.slice(1):n}function nf(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=[t,...e];return r&&n.length>r?n.slice(0,-1):n}var nh=Symbol();function np(e,t){return!e.queryFn&&(null==t?void 0:t.initialPromise)?()=>t.initialPromise:e.queryFn&&e.queryFn!==nh?e.queryFn:()=>Promise.reject(Error("Missing queryFn: '".concat(e.queryHash,"'")))}var nm=new(P=new WeakMap,L=new WeakMap,U=new WeakMap,class extends r1{onSubscribe(){r_(this,L)||this.setEventListener(r_(this,U))}onUnsubscribe(){var e;this.hasListeners()||(null==(e=r_(this,L))||e.call(this),rq(this,L,void 0))}setEventListener(e){var t;rq(this,U,e),null==(t=r_(this,L))||t.call(this),rq(this,L,e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){r_(this,P)!==e&&(rq(this,P,e),this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){var e;return"boolean"==typeof r_(this,P)?r_(this,P):(null==(e=globalThis.document)?void 0:e.visibilityState)!=="hidden"}constructor(){super(),rY(this,P,{writable:!0,value:void 0}),rY(this,L,{writable:!0,value:void 0}),rY(this,U,{writable:!0,value:void 0}),rq(this,U,e=>{if(!r3&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}})}}),nv=function(e){setTimeout(e,0)},ng=function(){let e=[],t=0,r=e=>{e()},n=e=>{e()},i=nv,a=n=>{t?e.push(n):i(()=>{r(n)})};return{batch:a=>{let s;t++;try{s=a()}finally{--t||(()=>{let t=e;e=[],t.length&&i(()=>{n(()=>{t.forEach(e=>{r(e)})})})})()}return s},batchCalls:e=>function(){for(var t=arguments.length,r=Array(t),n=0;n<t;n++)r[n]=arguments[n];a(()=>{e(...r)})},schedule:a,setNotifyFunction:e=>{r=e},setBatchNotifyFunction:e=>{n=e},setScheduler:e=>{i=e}}}(),nA=new(G=new WeakMap,O=new WeakMap,H=new WeakMap,class extends r1{onSubscribe(){r_(this,O)||this.setEventListener(r_(this,H))}onUnsubscribe(){var e;this.hasListeners()||(null==(e=r_(this,O))||e.call(this),rq(this,O,void 0))}setEventListener(e){var t;rq(this,H,e),null==(t=r_(this,O))||t.call(this),rq(this,O,e(this.setOnline.bind(this)))}setOnline(e){r_(this,G)!==e&&(rq(this,G,e),this.listeners.forEach(t=>{t(e)}))}isOnline(){return r_(this,G)}constructor(){super(),rY(this,G,{writable:!0,value:!0}),rY(this,O,{writable:!0,value:void 0}),rY(this,H,{writable:!0,value:void 0}),rq(this,H,e=>{if(!r3&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}})}});function ny(){let e,t,r=new Promise((r,n)=>{e=r,t=n});function n(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{n({status:"fulfilled",value:t}),e(t)},r.reject=e=>{n({status:"rejected",reason:e}),t(e)},r}function nx(e){return Math.min(1e3*2**e,3e4)}function nB(e){return(null!=e?e:"online")!=="online"||nA.isOnline()}var nC=class extends Error{constructor(e){super("CancelledError"),this.revert=null==e?void 0:e.revert,this.silent=null==e?void 0:e.silent}};function nS(e){let t,r=!1,n=0,i=ny(),a=()=>nm.isFocused()&&("always"===e.networkMode||nA.isOnline())&&e.canRun(),s=()=>nB(e.networkMode)&&e.canRun(),o=e=>{"pending"===i.status&&(null==t||t(),i.resolve(e))},l=e=>{"pending"===i.status&&(null==t||t(),i.reject(e))},u=()=>new Promise(r=>{var n;t=e=>{("pending"!==i.status||a())&&r(e)},null==(n=e.onPause)||n.call(e)}).then(()=>{if(t=void 0,"pending"===i.status){var r;null==(r=e.onContinue)||r.call(e)}}),c=()=>{let t;if("pending"!==i.status)return;let s=0===n?e.initialPromise:void 0;try{t=null!=s?s:e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(o).catch(t=>{var s,o,d;if("pending"!==i.status)return;let f=null!=(o=e.retry)?o:3*!r3,h=null!=(d=e.retryDelay)?d:nx,p="function"==typeof h?h(n,t):h,m=!0===f||"number"==typeof f&&n<f||"function"==typeof f&&f(n,t);if(r||!m)return void l(t);n++,null==(s=e.onFail)||s.call(e,n,t),new Promise(e=>{r9.setTimeout(e,p)}).then(()=>a()?void 0:u()).then(()=>{r?l(t):c()})})};return{promise:i,status:()=>i.status,cancel:t=>{if("pending"===i.status){var r;let n=new nC(t);l(n),null==(r=e.onCancel)||r.call(e,n)}},continue:()=>(null==t||t(),i),cancelRetry:()=>{r=!0},continueRetry:()=>{r=!1},canStart:s,start:()=>(s()?c():u().then(c),i)}}var nE=(N=new WeakMap,class{destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),r8(this.gcTime)&&rq(this,N,r9.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,null!=e?e:r3?1/0:3e5)}clearGcTimeout(){r_(this,N)&&(r9.clearTimeout(r_(this,N)),rq(this,N,void 0))}constructor(){rY(this,N,{writable:!0,value:void 0})}}),nT=(k=new WeakMap,j=new WeakMap,z=new WeakMap,K=new WeakMap,J=new WeakMap,V=new WeakMap,Q=new WeakMap,W=new WeakSet,class extends nE{get meta(){return this.options.meta}get promise(){var e;return null==(e=r_(this,J))?void 0:e.promise}setOptions(e){if(this.options={...r_(this,V),...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=nM(this.options);void 0!==e.data&&(this.setState(nb(e.data,e.dataUpdatedAt)),rq(this,k,e))}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||r_(this,z).remove(this)}setData(e,t){let r=nc(this.state.data,e,this.options);return r$(this,W,nw).call(this,{data:r,type:"success",dataUpdatedAt:null==t?void 0:t.updatedAt,manual:null==t?void 0:t.manual}),r}setState(e,t){r$(this,W,nw).call(this,{type:"setState",state:e,setStateOptions:t})}cancel(e){var t,r;let n=null==(t=r_(this,J))?void 0:t.promise;return null==(r=r_(this,J))||r.cancel(e),n?n.then(r4).catch(r4):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(r_(this,k))}isActive(){return this.observers.some(e=>!1!==r7(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===nh||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===r6(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!r5(this.state.dataUpdatedAt,e))}onFocus(){var e;let t=this.observers.find(e=>e.shouldFetchOnWindowFocus());null==t||t.refetch({cancelRefetch:!1}),null==(e=r_(this,J))||e.continue()}onOnline(){var e;let t=this.observers.find(e=>e.shouldFetchOnReconnect());null==t||t.refetch({cancelRefetch:!1}),null==(e=r_(this,J))||e.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),r_(this,z).notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(r_(this,J)&&(r_(this,Q)?r_(this,J).cancel({revert:!0}):r_(this,J).cancelRetry()),this.scheduleGc()),r_(this,z).notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||r$(this,W,nw).call(this,{type:"invalidate"})}async fetch(e,t){var r,n,i,a,s,o,l,u,c,d,f,h;if("idle"!==this.state.fetchStatus&&(null==(r=r_(this,J))?void 0:r.status())!=="rejected"){if(void 0!==this.state.data&&(null==t?void 0:t.cancelRefetch))this.cancel({silent:!0});else if(r_(this,J))return r_(this,J).continueRetry(),r_(this,J).promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let p=new AbortController,m=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(rq(this,Q,!0),p.signal)})},g=()=>{let e=np(this.options,t),r=(()=>{let e={client:r_(this,K),queryKey:this.queryKey,meta:this.meta};return m(e),e})();return(rq(this,Q,!1),this.options.persister)?this.options.persister(e,r,this):e(r)},A=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:r_(this,K),state:this.state,fetchFn:g};return m(e),e})();null==(n=this.options.behavior)||n.onFetch(A,this),rq(this,j,this.state),("idle"===this.state.fetchStatus||this.state.fetchMeta!==(null==(i=A.fetchOptions)?void 0:i.meta))&&r$(this,W,nw).call(this,{type:"fetch",meta:null==(a=A.fetchOptions)?void 0:a.meta}),rq(this,J,nS({initialPromise:null==t?void 0:t.initialPromise,fn:A.fetchFn,onCancel:e=>{e instanceof nC&&e.revert&&this.setState({...r_(this,j),fetchStatus:"idle"}),p.abort()},onFail:(e,t)=>{r$(this,W,nw).call(this,{type:"failed",failureCount:e,error:t})},onPause:()=>{r$(this,W,nw).call(this,{type:"pause"})},onContinue:()=>{r$(this,W,nw).call(this,{type:"continue"})},retry:A.options.retry,retryDelay:A.options.retryDelay,networkMode:A.options.networkMode,canRun:()=>!0}));try{let e=await r_(this,J).start();if(void 0===e)throw Error("".concat(this.queryHash," data is undefined"));return this.setData(e),null==(s=(o=r_(this,z).config).onSuccess)||s.call(o,e,this),null==(l=(u=r_(this,z).config).onSettled)||l.call(u,e,this.state.error,this),e}catch(e){if(e instanceof nC){if(e.silent)return r_(this,J).promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw r$(this,W,nw).call(this,{type:"error",error:e}),null==(c=(d=r_(this,z).config).onError)||c.call(d,e,this),null==(f=(h=r_(this,z).config).onSettled)||f.call(h,this.state.data,e,this),e}finally{this.scheduleGc()}}constructor(e){var t;super(),r0(this,W),rY(this,k,{writable:!0,value:void 0}),rY(this,j,{writable:!0,value:void 0}),rY(this,z,{writable:!0,value:void 0}),rY(this,K,{writable:!0,value:void 0}),rY(this,J,{writable:!0,value:void 0}),rY(this,V,{writable:!0,value:void 0}),rY(this,Q,{writable:!0,value:void 0}),rq(this,Q,!1),rq(this,V,e.defaultOptions),this.setOptions(e.options),this.observers=[],rq(this,K,e.client),rq(this,z,r_(this,K).getQueryCache()),this.queryKey=e.queryKey,this.queryHash=e.queryHash,rq(this,k,nM(this.options)),this.state=null!=(t=e.state)?t:r_(this,k),this.scheduleGc()}});function nD(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:nB(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function nb(e,t){return{data:e,dataUpdatedAt:null!=t?t:Date.now(),error:null,isInvalidated:!1,status:"success"}}function nM(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,n=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?null!=n?n:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}function nw(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":var r;return{...t,...nD(t.data,this.options),fetchMeta:null!=(r=e.meta)?r:null};case"success":let n={...t,...nb(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return rq(this,j,e.manual?n:void 0),n;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),ng.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),r_(this,z).notify({query:this,type:"updated",action:e})})}var nF=(X=new WeakMap,_=new WeakMap,Z=new WeakMap,Y=new WeakMap,q=new WeakMap,$=new WeakMap,ee=new WeakMap,et=new WeakMap,er=new WeakMap,en=new WeakMap,ei=new WeakMap,ea=new WeakMap,es=new WeakMap,eo=new WeakMap,el=new WeakMap,eu=new WeakSet,ec=new WeakSet,ed=new WeakSet,ef=new WeakSet,eh=new WeakSet,ep=new WeakSet,em=new WeakSet,ev=new WeakSet,eg=new WeakSet,class extends r1{bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(r_(this,_).addObserver(this),nR(r_(this,_),this.options)?r$(this,eu,nU).call(this):this.updateResult(),r$(this,eh,nN).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return nI(r_(this,_),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return nI(r_(this,_),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,r$(this,ep,nk).call(this),r$(this,em,nj).call(this),r_(this,_).removeObserver(this)}setOptions(e){let t=this.options,r=r_(this,_);if(this.options=r_(this,X).defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof r7(this.options.enabled,r_(this,_)))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");r$(this,ev,nz).call(this),r_(this,_).setOptions(this.options),t._defaulted&&!ns(this.options,t)&&r_(this,X).getQueryCache().notify({type:"observerOptionsUpdated",query:r_(this,_),observer:this});let n=this.hasListeners();n&&nP(r_(this,_),r,this.options,t)&&r$(this,eu,nU).call(this),this.updateResult(),n&&(r_(this,_)!==r||r7(this.options.enabled,r_(this,_))!==r7(t.enabled,r_(this,_))||r6(this.options.staleTime,r_(this,_))!==r6(t.staleTime,r_(this,_)))&&r$(this,ec,nG).call(this);let i=r$(this,ed,nO).call(this);n&&(r_(this,_)!==r||r7(this.options.enabled,r_(this,_))!==r7(t.enabled,r_(this,_))||i!==r_(this,eo))&&r$(this,ef,nH).call(this,i)}getOptimisticResult(e){var t,r;let n=r_(this,X).getQueryCache().build(r_(this,X),e),i=this.createResult(n,e);return t=this,r=i,ns(t.getCurrentResult(),r)||(rq(this,Y,i),rq(this,$,this.options),rq(this,q,r_(this,_).state)),i}getCurrentResult(){return r_(this,Y)}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),null==t||t(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==r_(this,ee).status||r_(this,ee).reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){r_(this,el).add(e)}getCurrentQuery(){return r_(this,_)}refetch(){let{...e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.fetch({...e})}fetchOptimistic(e){let t=r_(this,X).defaultQueryOptions(e),r=r_(this,X).getQueryCache().build(r_(this,X),t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){var t;return r$(this,eu,nU).call(this,{...e,cancelRefetch:null==(t=e.cancelRefetch)||t}).then(()=>(this.updateResult(),r_(this,Y)))}createResult(e,t){let r,n=r_(this,_),i=this.options,a=r_(this,Y),s=r_(this,q),o=r_(this,$),l=e!==n?e.state:r_(this,Z),{state:u}=e,c={...u},d=!1;if(t._optimisticResults){let r=this.hasListeners(),a=!r&&nR(e,t),s=r&&nP(e,n,t,i);(a||s)&&(c={...c,...nD(u.data,e.options)}),"isRestoring"===t._optimisticResults&&(c.fetchStatus="idle")}let{error:f,errorUpdatedAt:h,status:p}=c;r=c.data;let m=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===p){let e;if((null==a?void 0:a.isPlaceholderData)&&t.placeholderData===(null==o?void 0:o.placeholderData))e=a.data,m=!0;else{var g;e="function"==typeof t.placeholderData?t.placeholderData(null==(g=r_(this,ei))?void 0:g.state.data,r_(this,ei)):t.placeholderData}void 0!==e&&(p="success",r=nc(null==a?void 0:a.data,e,t),d=!0)}if(t.select&&void 0!==r&&!m)if(a&&r===(null==s?void 0:s.data)&&t.select===r_(this,er))r=r_(this,en);else try{rq(this,er,t.select),r=t.select(r),r=nc(null==a?void 0:a.data,r,t),rq(this,en,r),rq(this,et,null)}catch(e){rq(this,et,e)}r_(this,et)&&(f=r_(this,et),r=r_(this,en),h=Date.now(),p="error");let A="fetching"===c.fetchStatus,y="pending"===p,x="error"===p,B=y&&A,C=void 0!==r,S={status:p,fetchStatus:c.fetchStatus,isPending:y,isSuccess:"success"===p,isError:x,isInitialLoading:B,isLoading:B,data:r,dataUpdatedAt:c.dataUpdatedAt,error:f,errorUpdatedAt:h,failureCount:c.fetchFailureCount,failureReason:c.fetchFailureReason,errorUpdateCount:c.errorUpdateCount,isFetched:c.dataUpdateCount>0||c.errorUpdateCount>0,isFetchedAfterMount:c.dataUpdateCount>l.dataUpdateCount||c.errorUpdateCount>l.errorUpdateCount,isFetching:A,isRefetching:A&&!y,isLoadingError:x&&!C,isPaused:"paused"===c.fetchStatus,isPlaceholderData:d,isRefetchError:x&&C,isStale:nL(e,t),refetch:this.refetch,promise:r_(this,ee),isEnabled:!1!==r7(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=e=>{"error"===S.status?e.reject(S.error):void 0!==S.data&&e.resolve(S.data)},r=()=>{t(rq(this,ee,S.promise=ny()))},i=r_(this,ee);switch(i.status){case"pending":e.queryHash===n.queryHash&&t(i);break;case"fulfilled":("error"===S.status||S.data!==i.value)&&r();break;case"rejected":("error"!==S.status||S.error!==i.reason)&&r()}}return S}updateResult(){let e=r_(this,Y),t=this.createResult(r_(this,_),this.options);if(rq(this,q,r_(this,_).state),rq(this,$,this.options),void 0!==r_(this,q).data&&rq(this,ei,r_(this,_)),ns(t,e))return;rq(this,Y,t);let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!r_(this,el).size)return!0;let n=new Set(null!=r?r:r_(this,el));return this.options.throwOnError&&n.add("error"),Object.keys(r_(this,Y)).some(t=>r_(this,Y)[t]!==e[t]&&n.has(t))};r$(this,eg,nK).call(this,{listeners:r()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&r$(this,eh,nN).call(this)}constructor(e,t){super(),r0(this,eu),r0(this,ec),r0(this,ed),r0(this,ef),r0(this,eh),r0(this,ep),r0(this,em),r0(this,ev),r0(this,eg),rY(this,X,{writable:!0,value:void 0}),rY(this,_,{writable:!0,value:void 0}),rY(this,Z,{writable:!0,value:void 0}),rY(this,Y,{writable:!0,value:void 0}),rY(this,q,{writable:!0,value:void 0}),rY(this,$,{writable:!0,value:void 0}),rY(this,ee,{writable:!0,value:void 0}),rY(this,et,{writable:!0,value:void 0}),rY(this,er,{writable:!0,value:void 0}),rY(this,en,{writable:!0,value:void 0}),rY(this,ei,{writable:!0,value:void 0}),rY(this,ea,{writable:!0,value:void 0}),rY(this,es,{writable:!0,value:void 0}),rY(this,eo,{writable:!0,value:void 0}),rY(this,el,{writable:!0,value:new Set}),this.options=t,rq(this,X,e),rq(this,et,null),rq(this,ee,ny()),this.bindMethods(),this.setOptions(t)}});function nR(e,t){return!1!==r7(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&nI(e,t,t.refetchOnMount)}function nI(e,t,r){if(!1!==r7(t.enabled,e)&&"static"!==r6(t.staleTime,e)){let n="function"==typeof r?r(e):r;return"always"===n||!1!==n&&nL(e,t)}return!1}function nP(e,t,r,n){return(e!==t||!1===r7(n.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&nL(e,r)}function nL(e,t){return!1!==r7(t.enabled,e)&&e.isStaleByTime(r6(t.staleTime,e))}function nU(e){r$(this,ev,nz).call(this);let t=r_(this,_).fetch(this.options,e);return(null==e?void 0:e.throwOnError)||(t=t.catch(r4)),t}function nG(){r$(this,ep,nk).call(this);let e=r6(this.options.staleTime,r_(this,_));if(r3||r_(this,Y).isStale||!r8(e))return;let t=r5(r_(this,Y).dataUpdatedAt,e);rq(this,ea,r9.setTimeout(()=>{r_(this,Y).isStale||this.updateResult()},t+1))}function nO(){var e;return null!=(e="function"==typeof this.options.refetchInterval?this.options.refetchInterval(r_(this,_)):this.options.refetchInterval)&&e}function nH(e){r$(this,em,nj).call(this),rq(this,eo,e),!r3&&!1!==r7(this.options.enabled,r_(this,_))&&r8(r_(this,eo))&&0!==r_(this,eo)&&rq(this,es,r9.setInterval(()=>{(this.options.refetchIntervalInBackground||nm.isFocused())&&r$(this,eu,nU).call(this)},r_(this,eo)))}function nN(){r$(this,ec,nG).call(this),r$(this,ef,nH).call(this,r$(this,ed,nO).call(this))}function nk(){r_(this,ea)&&(r9.clearTimeout(r_(this,ea)),rq(this,ea,void 0))}function nj(){r_(this,es)&&(r9.clearInterval(r_(this,es)),rq(this,es,void 0))}function nz(){let e=r_(this,X).getQueryCache().build(r_(this,X),this.options);if(e===r_(this,_))return;let t=r_(this,_);rq(this,_,e),rq(this,Z,e.state),this.hasListeners()&&(null==t||t.removeObserver(this),e.addObserver(this))}function nK(e){ng.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(r_(this,Y))}),r_(this,X).getQueryCache().notify({query:r_(this,_),type:"observerResultsUpdated"})})}var nJ=eG.createContext(void 0),nV=e=>{let{client:t,children:r}=e;return eG.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),(0,eU.jsx)(nJ.Provider,{value:t,children:r})},nQ=eG.createContext(function(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}()),nW=eG.createContext(!1);nW.Provider;var nX=(e,t)=>void 0===t.state.data,n_=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function nZ(e,t,r){var n,i,a,s,o;let l=eG.useContext(nW),u=eG.useContext(nQ),c=(e=>{let t=eG.useContext(nJ);if(e)return e;if(!t)throw Error("No QueryClient set, use QueryClientProvider to set one");return t})(r),d=c.defaultQueryOptions(e);if(null==(i=c.getDefaultOptions().queries)||null==(n=i._experimental_beforeQuery)||n.call(i,d),d._optimisticResults=l?"isRestoring":"optimistic",d.suspense){let e=e=>"static"===e?e:Math.max(null!=e?e:1e3,1e3),t=d.staleTime;d.staleTime="function"==typeof t?function(){for(var r=arguments.length,n=Array(r),i=0;i<r;i++)n[i]=arguments[i];return e(t(...n))}:e(t),"number"==typeof d.gcTime&&(d.gcTime=Math.max(d.gcTime,1e3))}(d.suspense||d.throwOnError||d.experimental_prefetchInRender)&&!u.isReset()&&(d.retryOnMount=!1),eG.useEffect(()=>{u.clearReset()},[u]);let f=!c.getQueryCache().get(d.queryHash),[h]=eG.useState(()=>new t(c,d)),p=h.getOptimisticResult(d),m=!l&&!1!==e.subscribed;if(eG.useSyncExternalStore(eG.useCallback(e=>{let t=m?h.subscribe(ng.batchCalls(e)):r4;return h.updateResult(),t},[h,m]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),eG.useEffect(()=>{h.setOptions(d)},[d,h]),(null==d?void 0:d.suspense)&&p.isPending)throw n_(d,h,u);if((e=>{var t,r;let{result:n,errorResetBoundary:i,throwOnError:a,query:s,suspense:o}=e;return n.isError&&!i.isReset()&&!n.isFetching&&s&&(o&&void 0===n.data||(t=a,r=[n.error,s],"function"==typeof t?t(...r):!!t))})({result:p,errorResetBoundary:u,throwOnError:d.throwOnError,query:c.getQueryCache().get(d.queryHash),suspense:d.suspense}))throw p.error;if(null==(s=c.getDefaultOptions().queries)||null==(a=s._experimental_afterQuery)||a.call(s,d,p),d.experimental_prefetchInRender&&!r3&&p.isLoading&&p.isFetching&&!l){let e=f?n_(d,h,u):null==(o=c.getQueryCache().get(d.queryHash))?void 0:o.promise;null==e||e.catch(r4).finally(()=>{h.updateResult()})}return d.notifyOnChangeProps?p:h.trackResult(p)}var nY=e.i(54970),nq=e.i(12979),n$=e.i(47071),n0=e.i(62395),n1=e.i(75567),n2=e.i(79123);function n9(e){let{displacementMap:t,visibilityMask:r,textureNames:n,alphaMaps:i}=e,{debugMode:a}=(0,n2.useDebug)(),s=(0,n$.useTexture)(n.map(e=>(0,nq.terrainTextureToUrl)(e)),e=>{e.forEach(e=>(0,n1.setupColor)(e))}),o=(0,eG.useMemo)(()=>i.map(e=>(0,n1.setupMask)(e)),[i]),l=(0,eG.useMemo)(()=>({0:32,1:32,2:32,3:32,4:32,5:32}),[]),u=(0,eG.useCallback)(e=>{(0,n1.updateTerrainTextureShader)({shader:e,baseTextures:s,alphaTextures:o,visibilityMask:r,tiling:l,debugMode:a})},[s,o,r,l,a]);return(0,eU.jsx)("meshStandardMaterial",{displacementMap:t,map:t,displacementScale:2048,depthWrite:!0,side:a?ek.DoubleSide:ek.FrontSide,onBeforeCompile:u},"".concat(JSON.stringify(l),"-").concat(a))}function n3(e){let{heightMap:t,textureNames:r,alphaMaps:n,emptySquares:i}=e,a=(0,eG.useMemo)(()=>{let e=function(e){let t=new Float32Array(e.length);for(let r=0;r<e.length;r++)t[r]=e[r]/65535;return t}(t),r=new ek.DataTexture(e,256,256,ek.RedFormat,ek.FloatType);return r.colorSpace=ek.NoColorSpace,r.generateMipmaps=!1,r.needsUpdate=!0,r},[t]),s=(0,eG.useMemo)(()=>{if(!i.length)return null;let e=new Uint8Array(65536);for(let t of(e.fill(255),i)){let r=255&t,n=t>>8&255,i=t>>16;for(let t=0;t<i;t++){let i=256*n+(r+t);i>=0&&i<e.length&&(e[i]=0)}}let t=new ek.DataTexture(e,256,256,ek.RedFormat,ek.UnsignedByteType);return t.colorSpace=ek.NoColorSpace,t.wrapS=t.wrapT=ek.ClampToEdgeWrapping,t.magFilter=ek.NearestFilter,t.minFilter=ek.NearestFilter,t.needsUpdate=!0,t},[i]);return(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)("meshStandardMaterial",{color:"rgb(0, 109, 56)",displacementMap:a,displacementScale:2048,wireframe:!0}),children:(0,eU.jsx)(n9,{displacementMap:a,visibilityMask:s,textureNames:r,alphaMaps:n})})}let n4=(0,eG.memo)(function(e){var t;let{object:r}=e,n=(0,n0.getProperty)(r,"terrainFile"),i=null!=(t=(0,n0.getInt)(r,"squareSize"))?t:8,a=(0,eG.useMemo)(()=>{let e=(0,n0.getProperty)(r,"emptySquares");return e?e.split(" ").map(e=>parseInt(e,10)):[]},[r]),s=(0,eG.useMemo)(()=>{let[e,t,n]=(0,n0.getPosition)(r);return[e,0,n]},[r]),o=(0,eG.useMemo)(()=>(0,n0.getRotation)(r),[r]),l=(0,eG.useMemo)(()=>(0,n0.getScale)(r),[r]),u=(0,eG.useMemo)(()=>{let e=256*i,t=new ek.PlaneGeometry(e,e,256,256);return t.rotateX(-Math.PI/2),t.rotateY(-Math.PI/2),t.translate(1024,0,1024),t},[i]),{data:c}=nZ({queryKey:["terrain",n],queryFn:()=>(0,nq.loadTerrain)(n)},nF,void 0);return(0,eU.jsx)("group",{position:s,quaternion:o,scale:l,children:(0,eU.jsx)("mesh",{geometry:u,receiveShadow:!0,castShadow:!0,children:c?(0,eU.jsx)(n3,{heightMap:c.heightMap,emptySquares:a,textureNames:c.textureNames,alphaMaps:c.alphaMaps}):null})})}),n8=(0,eG.createContext)(null);function n5(){return(0,eG.useContext)(n8)}var n6=eG;let n7=(0,n6.createContext)(null),ie={didCatch:!1,error:null};class it extends n6.Component{static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){let{error:e}=this.state;if(null!==e){for(var t,r,n=arguments.length,i=Array(n),a=0;a<n;a++)i[a]=arguments[a];null==(t=(r=this.props).onReset)||t.call(r,{args:i,reason:"imperative-api"}),this.setState(ie)}}componentDidCatch(e,t){var r,n;null==(r=(n=this.props).onError)||r.call(n,e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;if(r&&null!==t.error&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)){var i,a;null==(i=(a=this.props).onReset)||i.call(a,{next:n,prev:e.resetKeys,reason:"keys"}),this.setState(ie)}}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:i,error:a}=this.state,s=e;if(i){let e={error:a,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)s=t(e);else if(r)s=(0,n6.createElement)(r,e);else if(void 0!==n)s=n;else throw a}return(0,n6.createElement)(n7.Provider,{value:{didCatch:i,error:a,resetErrorBoundary:this.resetErrorBoundary}},s)}constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=ie}}var ir=e.i(31067),ii=ek;function ia(e,t){if(t===ek.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==ek.TriangleFanDrawMode&&t!==ek.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<n.count;e++)t.push(e);e.setIndex(t),r=e.getIndex()}let n=r.count-2,i=[];if(r)if(t===ek.TriangleFanDrawMode)for(let e=1;e<=n;e++)i.push(r.getX(0)),i.push(r.getX(e)),i.push(r.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(i.push(r.getX(e)),i.push(r.getX(e+1)),i.push(r.getX(e+2))):(i.push(r.getX(e+2)),i.push(r.getX(e+1)),i.push(r.getX(e)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let a=e.clone();return a.setIndex(i),a.clearGroups(),a}}let is=parseInt(ek.REVISION.replace(/\D+/g,""));function io(e){if("undefined"!=typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r<n;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let il="srgb",iu="srgb-linear";class ic extends ii.Loader{load(e,t,r,n){let i,a=this;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){let t=ii.LoaderUtils.extractUrlBase(e);i=ii.LoaderUtils.resolveURL(t,this.path)}else i=ii.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){n?n(t):console.error(t),a.manager.itemError(e),a.manager.itemEnd(e)},o=new ii.FileLoader(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(r){try{a.parse(r,i,function(r){t(r),a.manager.itemEnd(e)},s)}catch(e){s(e)}},r,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,n){let i,a={},s={};if("string"==typeof e)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(io(new Uint8Array(e.slice(0,4)))===iI){try{a[ih.KHR_BINARY_GLTF]=new iL(e)}catch(e){n&&n(e);return}i=JSON.parse(a[ih.KHR_BINARY_GLTF].content)}else i=JSON.parse(io(new Uint8Array(e)));else i=e;if(void 0===i.asset||i.asset.version[0]<2){n&&n(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let o=new i1(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](o);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],r=i.extensionsRequired||[];switch(t){case ih.KHR_MATERIALS_UNLIT:a[t]=new im;break;case ih.KHR_DRACO_MESH_COMPRESSION:a[t]=new iU(i,this.dracoLoader);break;case ih.KHR_TEXTURE_TRANSFORM:a[t]=new iG;break;case ih.KHR_MESH_QUANTIZATION:a[t]=new iO;break;default:r.indexOf(t)>=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}o.setExtensions(a),o.setPlugins(s),o.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new ig(e)}),this.register(function(e){return new iA(e)}),this.register(function(e){return new ib(e)}),this.register(function(e){return new iM(e)}),this.register(function(e){return new iw(e)}),this.register(function(e){return new ix(e)}),this.register(function(e){return new iB(e)}),this.register(function(e){return new iC(e)}),this.register(function(e){return new iS(e)}),this.register(function(e){return new iv(e)}),this.register(function(e){return new iE(e)}),this.register(function(e){return new iy(e)}),this.register(function(e){return new iD(e)}),this.register(function(e){return new iT(e)}),this.register(function(e){return new ip(e)}),this.register(function(e){return new iF(e)}),this.register(function(e){return new iR(e)})}}function id(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let ih={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class ip{_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){let t,r=this.parser,n="light:"+e,i=r.cache.get(n);if(i)return i;let a=r.json,s=((a.extensions&&a.extensions[this.name]||{}).lights||[])[e],o=new ii.Color(0xffffff);void 0!==s.color&&o.setRGB(s.color[0],s.color[1],s.color[2],iu);let l=void 0!==s.range?s.range:0;switch(s.type){case"directional":(t=new ii.DirectionalLight(o)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new ii.PointLight(o)).distance=l;break;case"spot":(t=new ii.SpotLight(o)).distance=l,s.spot=s.spot||{},s.spot.innerConeAngle=void 0!==s.spot.innerConeAngle?s.spot.innerConeAngle:0,s.spot.outerConeAngle=void 0!==s.spot.outerConeAngle?s.spot.outerConeAngle:Math.PI/4,t.angle=s.spot.outerConeAngle,t.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return t.position.set(0,0,0),t.decay=2,iY(t,s),void 0!==s.intensity&&(t.intensity=s.intensity),t.name=r.createUniqueName(s.name||"light_"+e),i=Promise.resolve(t),r.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,n=r.json.nodes[e],i=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return r._getNodeRef(t.cache,i,e)})}constructor(e){this.parser=e,this.name=ih.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}}class im{getMaterialType(){return ii.MeshBasicMaterial}extendParams(e,t,r){let n=[];e.color=new ii.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],iu),e.opacity=t[3]}void 0!==i.baseColorTexture&&n.push(r.assignTexture(e,"map",i.baseColorTexture,il))}return Promise.all(n)}constructor(){this.name=ih.KHR_MATERIALS_UNLIT}}class iv{extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_EMISSIVE_STRENGTH}}class ig{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];if(void 0!==a.clearcoatFactor&&(t.clearcoat=a.clearcoatFactor),void 0!==a.clearcoatTexture&&i.push(r.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),void 0!==a.clearcoatRoughnessFactor&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),void 0!==a.clearcoatRoughnessTexture&&i.push(r.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),void 0!==a.clearcoatNormalTexture&&(i.push(r.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),void 0!==a.clearcoatNormalTexture.scale)){let e=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new ii.Vector2(e,e)}return Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_CLEARCOAT}}class iA{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_DISPERSION}}class iy{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.iridescenceFactor&&(t.iridescence=a.iridescenceFactor),void 0!==a.iridescenceTexture&&i.push(r.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),void 0!==a.iridescenceIor&&(t.iridescenceIOR=a.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==a.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),void 0!==a.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),void 0!==a.iridescenceThicknessTexture&&i.push(r.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_IRIDESCENCE}}class ix{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[];t.sheenColor=new ii.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;let a=n.extensions[this.name];if(void 0!==a.sheenColorFactor){let e=a.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],iu)}return void 0!==a.sheenRoughnessFactor&&(t.sheenRoughness=a.sheenRoughnessFactor),void 0!==a.sheenColorTexture&&i.push(r.assignTexture(t,"sheenColorMap",a.sheenColorTexture,il)),void 0!==a.sheenRoughnessTexture&&i.push(r.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_SHEEN}}class iB{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.transmissionFactor&&(t.transmission=a.transmissionFactor),void 0!==a.transmissionTexture&&i.push(r.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_TRANSMISSION}}class iC{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];t.thickness=void 0!==a.thicknessFactor?a.thicknessFactor:0,void 0!==a.thicknessTexture&&i.push(r.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;let s=a.attenuationColor||[1,1,1];return t.attenuationColor=new ii.Color().setRGB(s[0],s[1],s[2],iu),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_VOLUME}}class iS{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_IOR}}class iE{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];t.specularIntensity=void 0!==a.specularFactor?a.specularFactor:1,void 0!==a.specularTexture&&i.push(r.assignTexture(t,"specularIntensityMap",a.specularTexture));let s=a.specularColorFactor||[1,1,1];return t.specularColor=new ii.Color().setRGB(s[0],s[1],s[2],iu),void 0!==a.specularColorTexture&&i.push(r.assignTexture(t,"specularColorMap",a.specularColorTexture,il)),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_SPECULAR}}class iT{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return t.bumpScale=void 0!==a.bumpFactor?a.bumpFactor:1,void 0!==a.bumpTexture&&i.push(r.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.EXT_MATERIALS_BUMP}}class iD{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ii.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.anisotropyStrength&&(t.anisotropy=a.anisotropyStrength),void 0!==a.anisotropyRotation&&(t.anisotropyRotation=a.anisotropyRotation),void 0!==a.anisotropyTexture&&i.push(r.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ih.KHR_MATERIALS_ANISOTROPY}}class ib{loadTexture(e){let t=this.parser,r=t.json,n=r.textures[e];if(!n.extensions||!n.extensions[this.name])return null;let i=n.extensions[this.name],a=t.options.ktx2Loader;if(!a)if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,a)}constructor(e){this.parser=e,this.name=ih.KHR_TEXTURE_BASISU}}class iM{loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}constructor(e){this.parser=e,this.name=ih.EXT_TEXTURE_WEBP,this.isSupported=null}}class iw{loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}constructor(e){this.parser=e,this.name=ih.EXT_TEXTURE_AVIF,this.isSupported=null}}class iF{loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,a=e.count,s=e.byteStride,o=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,s,o,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*s);return i.decodeGltfBuffer(new Uint8Array(t),a,s,o,e.mode,e.filter),t})})}}constructor(e){this.name=ih.EXT_MESHOPT_COMPRESSION,this.parser=e}}class iR{createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==ij.TRIANGLES&&e.mode!==ij.TRIANGLE_STRIP&&e.mode!==ij.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],a={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(a[e]=t,a[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new ii.Matrix4,r=new ii.Vector3,s=new ii.Quaternion,o=new ii.Vector3(1,1,1),l=new ii.InstancedMesh(e.geometry,e.material,n);for(let e=0;e<n;e++)a.TRANSLATION&&r.fromBufferAttribute(a.TRANSLATION,e),a.ROTATION&&s.fromBufferAttribute(a.ROTATION,e),a.SCALE&&o.fromBufferAttribute(a.SCALE,e),l.setMatrixAt(e,t.compose(r,s,o));for(let t in a)if("_COLOR_0"===t){let e=a[t];l.instanceColor=new ii.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,a[t]);ii.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}constructor(e){this.name=ih.EXT_MESH_GPU_INSTANCING,this.parser=e}}let iI="glTF",iP={JSON:0x4e4f534a,BIN:5130562};class iL{constructor(e){this.name=ih.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,12);if(this.header={magic:io(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==iI)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");let r=this.header.length-12,n=new DataView(e,12),i=0;for(;i<r;){let t=n.getUint32(i,!0);i+=4;let r=n.getUint32(i,!0);if(i+=4,r===iP.JSON){let r=new Uint8Array(e,12+i,t);this.content=io(r)}else if(r===iP.BIN){let r=12+i;this.body=e.slice(r,r+t)}i+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class iU{decodePrimitive(e,t){let r=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,s={},o={},l={};for(let e in a)s[iQ[e]||e.toLowerCase()]=a[e];for(let t in e.attributes){let n=iQ[t]||t.toLowerCase();if(void 0!==a[t]){let i=r.accessors[e.attributes[t]],a=iz[i.componentType];l[n]=a.name,o[n]=!0===i.normalized}}return t.getDependency("bufferView",i).then(function(e){return new Promise(function(t,r){n.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],n=o[t];void 0!==n&&(r.normalized=n)}t(e)},s,l,iu,r)})})}constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ih.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}}class iG{extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}constructor(){this.name=ih.KHR_TEXTURE_TRANSFORM}}class iO{constructor(){this.name=ih.KHR_MESH_QUANTIZATION}}class iH extends ii.Interpolant{copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let e=0;e!==n;e++)t[e]=r[i+e];return t}interpolate_(e,t,r,n){let i=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=2*s,l=3*s,u=n-t,c=(r-t)/u,d=c*c,f=d*c,h=e*l,p=h-l,m=-2*f+3*d,g=f-d,A=1-m,y=g-d+c;for(let e=0;e!==s;e++){let t=a[p+e+s],r=a[p+e+o]*u,n=a[h+e+s],l=a[h+e]*u;i[e]=A*t+y*r+m*n+g*l}return i}constructor(e,t,r,n){super(e,t,r,n)}}let iN=new ii.Quaternion;class ik extends iH{interpolate_(e,t,r,n){let i=super.interpolate_(e,t,r,n);return iN.fromArray(i).normalize().toArray(i),i}}let ij={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},iz={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},iK={9728:ii.NearestFilter,9729:ii.LinearFilter,9984:ii.NearestMipmapNearestFilter,9985:ii.LinearMipmapNearestFilter,9986:ii.NearestMipmapLinearFilter,9987:ii.LinearMipmapLinearFilter},iJ={33071:ii.ClampToEdgeWrapping,33648:ii.MirroredRepeatWrapping,10497:ii.RepeatWrapping},iV={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},iQ={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...is>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},iW={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},iX={CUBICSPLINE:void 0,LINEAR:ii.InterpolateLinear,STEP:ii.InterpolateDiscrete},i_={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function iZ(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function iY(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function iq(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;n<i;n++)t+=r[n]+":"+e[r[n]]+";";return t}function i$(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let i0=new ii.Matrix4;class i1{setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let a={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:r,userData:{}};return iZ(i,a,n),iY(a,n),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r].joints;for(let t=0,r=n.length;t<r;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){let n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(r[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let n=r.clone(),i=(e,t)=>{let r=this.associations.get(e);for(let[n,a]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(a,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let n=e(t[r]);if(n)return n}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let n=0;n<t.length;n++){let i=e(t[n]);i&&r.push(i)}return r}getDependency(e,t){let r=e+":"+t,n=this.cache.get(r);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(!(n=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,n){return r.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],r=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[ih.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,i){r.load(ii.LoaderUtils.resolveURL(t.uri,n.path),e,void 0,function(){i(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+r)})}loadAccessor(e){let t=this,r=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=iV[n.type],t=iz[n.componentType],r=!0===n.normalized,i=new t(n.count*e);return Promise.resolve(new ii.BufferAttribute(i,e,r))}let i=[];return void 0!==n.bufferView?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),void 0!==n.sparse&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(e){let i,a,s=e[0],o=iV[n.type],l=iz[n.componentType],u=l.BYTES_PER_ELEMENT,c=u*o,d=n.byteOffset||0,f=void 0!==n.bufferView?r.bufferViews[n.bufferView].byteStride:void 0,h=!0===n.normalized;if(f&&f!==c){let e=Math.floor(d/f),r="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,c=t.cache.get(r);c||(i=new l(s,e*f,n.count*f/u),c=new ii.InterleavedBuffer(i,f/u),t.cache.add(r,c)),a=new ii.InterleavedBufferAttribute(c,o,d%f/u,h)}else i=null===s?new l(n.count*o):new l(s,d,n.count*o),a=new ii.BufferAttribute(i,o,h);if(void 0!==n.sparse){let t=iV.SCALAR,r=iz[n.sparse.indices.componentType],i=n.sparse.indices.byteOffset||0,u=n.sparse.values.byteOffset||0,c=new r(e[1],i,n.sparse.count*t),d=new l(e[2],u,n.sparse.count*o);null!==s&&(a=new ii.BufferAttribute(a.array.slice(),a.itemSize,a.normalized));for(let e=0,t=c.length;e<t;e++){let t=c[e];if(a.setX(t,d[e*o]),o>=2&&a.setY(t,d[e*o+1]),o>=3&&a.setZ(t,d[e*o+2]),o>=4&&a.setW(t,d[e*o+3]),o>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return a})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],a=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(a=e)}return this.loadTextureImage(e,n,a)}loadTextureImage(e,t,r){let n=this,i=this.json,a=i.textures[e],s=i.images[t],o=(s.uri||s.bufferView)+":"+a.sampler;if(this.textureCache[o])return this.textureCache[o];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=a.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let r=(i.samplers||{})[a.sampler]||{};return t.magFilter=iK[r.magFilter]||ii.LinearFilter,t.minFilter=iK[r.minFilter]||ii.LinearMipmapLinearFilter,t.wrapS=iJ[r.wrapS]||ii.RepeatWrapping,t.wrapT=iJ[r.wrapT]||ii.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[o]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],a=self.URL||self.webkitURL,s=i.uri||"",o=!1;if(void 0!==i.bufferView)s=this.getDependency("bufferView",i.bufferView).then(function(e){o=!0;let t=new Blob([e],{type:i.mimeType});return s=a.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(s).then(function(e){return new Promise(function(r,i){let a=r;!0===t.isImageBitmapLoader&&(a=function(e){let t=new ii.Texture(e);t.needsUpdate=!0,r(t)}),t.load(ii.LoaderUtils.resolveURL(e,n.path),a,void 0,i)})}).then(function(e){var t;return!0===o&&a.revokeObjectURL(s),iY(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(a){if(!a)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((a=a.clone()).channel=r.texCoord),i.extensions[ih.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[ih.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(a);a=i.extensions[ih.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?il:iu),"colorSpace"in a?a.colorSpace=n:a.encoding=n===il?3001:3e3),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,a=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new ii.PointsMaterial,ii.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new ii.LineBasicMaterial,ii.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||a){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),a&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return ii.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,a=n.materials[e],s={},o=a.extensions||{},l=[];if(o[ih.KHR_MATERIALS_UNLIT]){let e=i[ih.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(s,a,r))}else{let n=a.pbrMetallicRoughness||{};if(s.color=new ii.Color(1,1,1),s.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;s.color.setRGB(e[0],e[1],e[2],iu),s.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(s,"map",n.baseColorTexture,il)),s.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,s.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(s,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(s,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,s)})))}!0===a.doubleSided&&(s.side=ii.DoubleSide);let u=a.alphaMode||i_.OPAQUE;if(u===i_.BLEND?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,u===i_.MASK&&(s.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&t!==ii.MeshBasicMaterial&&(l.push(r.assignTexture(s,"normalMap",a.normalTexture)),s.normalScale=new ii.Vector2(1,1),void 0!==a.normalTexture.scale)){let e=a.normalTexture.scale;s.normalScale.set(e,e)}if(void 0!==a.occlusionTexture&&t!==ii.MeshBasicMaterial&&(l.push(r.assignTexture(s,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength&&(s.aoMapIntensity=a.occlusionTexture.strength)),void 0!==a.emissiveFactor&&t!==ii.MeshBasicMaterial){let e=a.emissiveFactor;s.emissive=new ii.Color().setRGB(e[0],e[1],e[2],iu)}return void 0!==a.emissiveTexture&&t!==ii.MeshBasicMaterial&&l.push(r.assignTexture(s,"emissiveMap",a.emissiveTexture,il)),Promise.all(l).then(function(){let n=new t(s);return a.name&&(n.name=a.name),iY(n,a),r.associations.set(n,{materials:e}),a.extensions&&iZ(i,n,a),n})}createUniqueName(e){let t=ii.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let a=0,s=e.length;a<s;a++){let s=e[a],o=function(e){let t,r=e.extensions&&e.extensions[ih.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+iq(r.attributes):e.indices+":"+iq(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,n=e.targets.length;r<n;r++)t+=":"+iq(e.targets[r]);return t}(s),l=n[o];if(l)i.push(l.promise);else{let e;e=s.extensions&&s.extensions[ih.KHR_DRACO_MESH_COMPRESSION]?function(e){return r[ih.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return i2(r,e,t)})}(s):i2(new ii.BufferGeometry,s,t),n[o]={primitive:s,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){let t=this,r=this.json,n=this.extensions,i=r.meshes[e],a=i.primitives,s=[];for(let e=0,t=a.length;e<t;e++){var o;let t=void 0===a[e].material?(void 0===(o=this.cache).DefaultMaterial&&(o.DefaultMaterial=new ii.MeshStandardMaterial({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:ii.FrontSide})),o.DefaultMaterial):this.getDependency("material",a[e].material);s.push(t)}return s.push(t.loadGeometries(a)),Promise.all(s).then(function(r){let s=r.slice(0,r.length-1),o=r[r.length-1],l=[];for(let r=0,u=o.length;r<u;r++){let u,c=o[r],d=a[r],f=s[r];if(d.mode===ij.TRIANGLES||d.mode===ij.TRIANGLE_STRIP||d.mode===ij.TRIANGLE_FAN||void 0===d.mode)!0===(u=!0===i.isSkinnedMesh?new ii.SkinnedMesh(c,f):new ii.Mesh(c,f)).isSkinnedMesh&&u.normalizeSkinWeights(),d.mode===ij.TRIANGLE_STRIP?u.geometry=ia(u.geometry,ii.TriangleStripDrawMode):d.mode===ij.TRIANGLE_FAN&&(u.geometry=ia(u.geometry,ii.TriangleFanDrawMode));else if(d.mode===ij.LINES)u=new ii.LineSegments(c,f);else if(d.mode===ij.LINE_STRIP)u=new ii.Line(c,f);else if(d.mode===ij.LINE_LOOP)u=new ii.LineLoop(c,f);else if(d.mode===ij.POINTS)u=new ii.Points(c,f);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);Object.keys(u.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r<n;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,n=r.length;t<n;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(u,i),u.name=t.createUniqueName(i.name||"mesh_"+e),iY(u,i),d.extensions&&iZ(n,u,d),t.assignFinalMaterial(u),l.push(u)}for(let r=0,n=l.length;r<n;r++)t.associations.set(l[r],{meshes:e,primitives:r});if(1===l.length)return i.extensions&&iZ(n,l[0],i),l[0];let u=new ii.Group;i.extensions&&iZ(n,u,i),t.associations.set(u,{meshes:e});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t,r=this.json.cameras[e],n=r[r.type];return n?("perspective"===r.type?t=new ii.PerspectiveCamera(ii.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===r.type&&(t=new ii.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),r.name&&(t.name=this.createUniqueName(r.name)),iY(t,r),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],r=[];for(let e=0,n=t.joints.length;e<n;e++)r.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?r.push(this.getDependency("accessor",t.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(e){let r=e.pop(),n=[],i=[];for(let a=0,s=e.length;a<s;a++){let s=e[a];if(s){n.push(s);let e=new ii.Matrix4;null!==r&&e.fromArray(r.array,16*a),i.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[a])}return new ii.Skeleton(n,i)})}loadAnimation(e){let t=this.json,r=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,a=[],s=[],o=[],l=[],u=[];for(let e=0,t=n.channels.length;e<t;e++){let t=n.channels[e],r=n.samplers[t.sampler],i=t.target,c=i.node,d=void 0!==n.parameters?n.parameters[r.input]:r.input,f=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==i.node&&(a.push(this.getDependency("node",c)),s.push(this.getDependency("accessor",d)),o.push(this.getDependency("accessor",f)),l.push(r),u.push(i))}return Promise.all([Promise.all(a),Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(u)]).then(function(e){let t=e[0],n=e[1],a=e[2],s=e[3],o=e[4],l=[];for(let e=0,i=t.length;e<i;e++){let i=t[e],u=n[e],c=a[e],d=s[e],f=o[e];if(void 0===i)continue;i.updateMatrix&&i.updateMatrix();let h=r._createAnimationTracks(i,u,c,d,f);if(h)for(let e=0;e<h.length;e++)l.push(h[e])}return new ii.AnimationClip(i,void 0,l)})}createNodeMesh(e){let t=this.json,r=this,n=t.nodes[e];return void 0===n.mesh?null:r.getDependency("mesh",n.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=n.weights.length;t<r;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),n=[],i=t.children||[];for(let e=0,t=i.length;e<t;e++)n.push(this.getDependency("node",i[e]));let a=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(n),a]).then(function(e){let t=e[0],r=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,i0)});for(let e=0,n=r.length;e<n;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,r=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let i=t.nodes[e],a=i.name?n.createUniqueName(i.name):"",s=[],o=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return o&&s.push(o),void 0!==i.camera&&s.push(n.getDependency("camera",i.camera).then(function(e){return n._getNodeRef(n.cameraCache,i.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){s.push(e)}),this.nodeCache[e]=Promise.all(s).then(function(t){let s;if((s=!0===i.isBone?new ii.Bone:t.length>1?new ii.Group:1===t.length?t[0]:new ii.Object3D)!==t[0])for(let e=0,r=t.length;e<r;e++)s.add(t[e]);if(i.name&&(s.userData.name=i.name,s.name=a),iY(s,i),i.extensions&&iZ(r,s,i),void 0!==i.matrix){let e=new ii.Matrix4;e.fromArray(i.matrix),s.applyMatrix4(e)}else void 0!==i.translation&&s.position.fromArray(i.translation),void 0!==i.rotation&&s.quaternion.fromArray(i.rotation),void 0!==i.scale&&s.scale.fromArray(i.scale);return n.associations.has(s)||n.associations.set(s,{}),n.associations.get(s).nodes=e,s}),this.nodeCache[e]}loadScene(e){let t=this.extensions,r=this.json.scenes[e],n=this,i=new ii.Group;r.name&&(i.name=n.createUniqueName(r.name)),iY(i,r),r.extensions&&iZ(t,i,r);let a=r.nodes||[],s=[];for(let e=0,t=a.length;e<t;e++)s.push(n.getDependency("node",a[e]));return Promise.all(s).then(function(e){for(let t=0,r=e.length;t<r;t++)i.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,r]of n.associations)(e instanceof ii.Material||e instanceof ii.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let a,s=[],o=e.name?e.name:e.uuid,l=[];switch(iW[i.path]===iW.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(o),iW[i.path]){case iW.weights:a=ii.NumberKeyframeTrack;break;case iW.rotation:a=ii.QuaternionKeyframeTrack;break;case iW.position:case iW.scale:a=ii.VectorKeyframeTrack;break;default:a=1===r.itemSize?ii.NumberKeyframeTrack:ii.VectorKeyframeTrack}let u=void 0!==n.interpolation?iX[n.interpolation]:ii.InterpolateLinear,c=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e<r;e++){let r=new a(l[e]+"."+iW[i.path],t.array,c,u);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),s.push(r)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=i$(t.constructor),r=new Float32Array(t.length);for(let n=0,i=t.length;n<i;n++)r[n]=t[n]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof ii.QuaternionKeyframeTrack?ik:iH)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new id,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let r=!1,n=!1,i=-1;"undefined"!=typeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||r||n&&i<98?this.textureLoader=new ii.TextureLoader(this.options.manager):this.textureLoader=new ii.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new ii.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}}function i2(e,t,r){let n=t.attributes,i=[];for(let t in n){let a=iQ[t]||t.toLowerCase();a in e.attributes||i.push(function(t,n){return r.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}(n[t],a))}if(void 0!==t.indices&&!e.index){let n=r.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});i.push(n)}return iY(e,t),!function(e,t,r){let n=t.attributes,i=new ii.Box3;if(void 0===n.POSITION)return;{let e=r.json.accessors[n.POSITION],t=e.min,a=e.max;if(void 0===t||void 0===a)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(i.set(new ii.Vector3(t[0],t[1],t[2]),new ii.Vector3(a[0],a[1],a[2])),e.normalized){let t=i$(iz[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}let a=t.targets;if(void 0!==a){let e=new ii.Vector3,t=new ii.Vector3;for(let n=0,i=a.length;n<i;n++){let i=a[n];if(void 0!==i.POSITION){let n=r.json.accessors[i.POSITION],a=n.min,s=n.max;if(void 0!==a&&void 0!==s){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(s[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(s[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(s[2]))),n.normalized){let e=i$(iz[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(e)}e.boundingBox=i;let s=new ii.Sphere;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=s}(e,t,r),Promise.all(i).then(function(){return void 0!==t.targets?function(e,t,r){let n=!1,i=!1,a=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(n=!0),void 0!==r.NORMAL&&(i=!0),void 0!==r.COLOR_0&&(a=!0),n&&i&&a)break}if(!n&&!i&&!a)return Promise.resolve(e);let s=[],o=[],l=[];for(let u=0,c=t.length;u<c;u++){let c=t[u];if(n){let t=void 0!==c.POSITION?r.getDependency("accessor",c.POSITION):e.attributes.position;s.push(t)}if(i){let t=void 0!==c.NORMAL?r.getDependency("accessor",c.NORMAL):e.attributes.normal;o.push(t)}if(a){let t=void 0!==c.COLOR_0?r.getDependency("accessor",c.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(l)]).then(function(t){let r=t[0],s=t[1],o=t[2];return n&&(e.morphAttributes.position=r),i&&(e.morphAttributes.normal=s),a&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e})}(e,t.targets,r):e})}var i9=ek;let i3=new WeakMap;class i4 extends i9.Loader{setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let i=new i9.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(i3.has(e)){let t=i3.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,a=e.byteLength,s=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return s.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),i3.set(e,{key:n,promise:s}),s}_createGeometry(e){let t=new i9.BufferGeometry;e.index&&t.setIndex(new i9.BufferAttribute(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let n=e.attributes[r],i=n.name,a=n.array,s=n.itemSize;t.setAttribute(i,new i9.BufferAttribute(a,s))}return t}_loadLibrary(e,t){let r=new i9.FileLoader(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,n)=>{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=i8.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}}function i8(){let e,t;onmessage=function(r){let n=r.data;switch(n.type){case"init":e=n.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let i=n.buffer,a=n.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){let i,a,s=n.attributeIDs,o=n.attributeTypes,l=t.GetEncodedGeometryType(r);if(l===e.TRIANGULAR_MESH)i=new e.Mesh,a=t.DecodeBufferToMesh(r,i);else if(l===e.POINT_CLOUD)i=new e.PointCloud,a=t.DecodeBufferToPointCloud(r,i);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!a.ok()||0===i.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+a.error_msg());let u={index:null,attributes:[]};for(let r in s){let a,l,c=self[o[r]];if(n.useUniqueIDs)l=s[r],a=t.GetAttributeByUniqueId(i,l);else{if(-1===(l=t.GetAttributeId(i,e[s[r]])))continue;a=t.GetAttribute(i,l)}u.attributes.push(function(e,t,r,n,i,a){let s=a.num_components(),o=r.num_points()*s,l=o*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,a,u,l,c);let d=new i(e.HEAPF32.buffer,c,o).slice();return e._free(c),{name:n,array:d,itemSize:s}}(e,t,i,r,c,a))}return l===e.TRIANGULAR_MESH&&(u.index=function(e,t,r){let n=3*r.num_faces(),i=4*n,a=e._malloc(i);t.GetTrianglesUInt32Array(r,i,a);let s=new Uint32Array(e.HEAPF32.buffer,a,n).slice();return e._free(a),{array:s,itemSize:1}}(e,t,i)),e.destroy(i),u}(t,r,s,a),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}})}}}let i5={clone:function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i<t.children.length;i++)e(t.children[i],r.children[i],n)}(e,n,function(e,n){t.set(n,e),r.set(e,n)}),n.traverse(function(e){if(!e.isSkinnedMesh)return;let n=t.get(e),i=n.skeleton.bones;e.skeleton=n.skeleton.clone(),e.bindMatrix.copy(n.bindMatrix),e.skeleton.bones=i.map(function(e){return r.get(e)}),e.bind(e.skeleton,e.bindMatrix)}),n}},i6=eG.forwardRef((e,t)=>{let{isChild:r=!1,object:n,children:i,deep:a,castShadow:s,receiveShadow:o,inject:l,keys:u,...c}=e,d={keys:u,deep:a,inject:l,castShadow:s,receiveShadow:o};if(Array.isArray(n=eG.useMemo(()=>{if(!1===r&&!Array.isArray(n)){let e=!1;if(n.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return i5.clone(n)}return n},[n,r])))return eG.createElement("group",(0,ir.default)({},c,{ref:t}),n.map(e=>eG.createElement(i6,(0,ir.default)({key:e.uuid,object:e},d))),i);let{children:f,...h}=function(e,t){let{keys:r=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:n,inject:i,castShadow:a,receiveShadow:s}=t,o={};for(let t of r)o[t]=e[t];return n&&(o.geometry&&"materialsOnly"!==n&&(o.geometry=o.geometry.clone()),o.material&&"geometriesOnly"!==n&&(o.material=o.material.clone())),i&&(o="function"==typeof i?{...o,children:i(e)}:eG.isValidElement(i)?{...o,children:i}:{...o,...i}),e instanceof ek.Mesh&&(a&&(o.castShadow=!0),s&&(o.receiveShadow=!0)),o}(n,d),p=n.type[0].toLowerCase()+n.type.slice(1);return eG.createElement(p,(0,ir.default)({},h,c,{ref:t}),n.children.map(e=>"Bone"===e.type?eG.createElement("primitive",(0,ir.default)({key:e.uuid,object:e},d)):eG.createElement(i6,(0,ir.default)({key:e.uuid,object:e},d,{isChild:!0}))),i,f)}),i7=null,ae="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function at(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],r=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=arguments.length>2?arguments[2]:void 0;return i=>{n&&n(i),e&&(i7||(i7=new i4),i7.setDecoderPath("string"==typeof e?e:ae),i.setDRACOLoader(i7)),r&&i.setMeshoptDecoder((()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(r)&&(i="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");let a=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let n=e.charCodeAt(r);t[r]=n>96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let r=0;for(let i=0;i<e.length;++i)t[r++]=t[i]<60?n[t[i]]:(t[i]-60)*64+t[++i];return t.buffer.slice(0,r)}(i),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function s(t,r,n,i,a,s){let o=e.exports.sbrk,l=n+3&-4,u=o(l*i),c=o(a.length),d=new Uint8Array(e.exports.memory.buffer);d.set(a,c);let f=t(u,n,i,c,a.length);if(0===f&&s&&s(u,l,i),r.set(d.subarray(u,u+n*i)),o(u-o(0)),0!==f)throw Error("Malformed buffer data: ".concat(f))}let o={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:a,supported:!0,decodeVertexBuffer(t,r,n,i,a){s(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[o[a]])},decodeIndexBuffer(t,r,n,i){s(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){s(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,a,u){s(e.exports[l[a]],t,r,n,i,e.exports[o[u]])}}})())}}let ar=(e,t,r,n)=>(0,e_.useLoader)(ic,e,at(t,r,n));ar.preload=(e,t,r,n)=>e_.useLoader.preload(ic,e,at(t,r,n)),ar.clear=e=>e_.useLoader.clear(ic,e),ar.setDecoderPath=e=>{ae=e};var an=e.i(89887);function ai(e){let{materialName:t}=e,r=(0,nq.textureToUrl)(t),n=(0,n$.useTexture)(r,e=>(0,n1.setupColor)(e));return(0,eU.jsx)("meshStandardMaterial",{map:n,side:2})}function aa(e){let{node:t}=e;return(0,eU.jsx)("mesh",{geometry:t.geometry,castShadow:!0,receiveShadow:!0,children:t.material?(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)("meshStandardMaterial",{color:"yellow",wireframe:!0}),children:Array.isArray(t.material)?t.material.map((e,t)=>(0,eU.jsx)(ai,{materialName:e.userData.resource_path},t)):(0,eU.jsx)(ai,{materialName:t.material.userData.resource_path})}):null})}let as=(0,eG.memo)(e=>{let{interiorFile:t}=e,{nodes:r}=ar((0,nq.interiorToUrl)(t)),{debugMode:n}=(0,n2.useDebug)();return(0,eU.jsxs)("group",{rotation:[0,-Math.PI/2,0],children:[Object.entries(r).filter(e=>{let[t,r]=e;return!r.material||!r.material.name.match(/\.\d+$/)}).map(e=>{let[t,r]=e;return(0,eU.jsx)(aa,{node:r},t)}),n?(0,eU.jsx)(an.FloatingLabel,{children:t}):null]})});function ao(e){let{color:t,label:r}=e;return(0,eU.jsxs)("mesh",{children:[(0,eU.jsx)("boxGeometry",{args:[10,10,10]}),(0,eU.jsx)("meshStandardMaterial",{color:t,wireframe:!0}),r?(0,eU.jsx)(an.FloatingLabel,{color:t,children:r}):null]})}function al(e){let{label:t}=e,{debugMode:r}=(0,n2.useDebug)();return r?(0,eU.jsx)(ao,{color:"red",label:t}):null}let au=(0,eG.memo)(function(e){let{object:t}=e,r=(0,n0.getProperty)(t,"interiorFile"),n=(0,eG.useMemo)(()=>(0,n0.getPosition)(t),[t]),i=(0,eG.useMemo)(()=>(0,n0.getScale)(t),[t]),a=(0,eG.useMemo)(()=>(0,n0.getRotation)(t),[t]);return(0,eU.jsx)("group",{position:n,quaternion:a,scale:i,children:(0,eU.jsx)(it,{fallback:(0,eU.jsx)(al,{label:r}),children:(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)(ao,{color:"orange"}),children:(0,eU.jsx)(as,{interiorFile:r})})})})});function ac(e,t){let{path:r}=t,[n]=(0,e_.useLoader)(ek.CubeTextureLoader,[e],e=>e.setPath(r));return n}ac.preload=(e,t)=>{let{path:r}=t;return e_.useLoader.preload(ek.CubeTextureLoader,[e],e=>e.setPath(r))};function ad(e){return e.wrapS=ek.RepeatWrapping,e.wrapT=ek.RepeatWrapping,e.minFilter=ek.LinearFilter,e.magFilter=ek.LinearFilter,e.colorSpace=ek.SRGBColorSpace,e.needsUpdate=!0,e}function af(e){let{textureUrl:t,radius:r,heightPercent:n,speed:i,windDirection:a,layerIndex:s,debugMode:o,animationEnabled:l}=e,u=(0,eG.useRef)(null),c=(0,eG.useRef)(new ek.Vector2(0,0)),d=(0,n$.useTexture)(t,ad),f=(0,eG.useMemo)(()=>{let e=n-.05;return function(e,t,r,n){let i=new ek.BufferGeometry,a=new Float32Array(75),s=new Float32Array(50),o=[.05,.05,.05,.05,.05,.05,r,r,r,.05,.05,r,t,r,.05,.05,r,r,r,.05,.05,.05,.05,.05,.05],l=2*e/4;for(let t=0;t<5;t++)for(let r=0;r<5;r++){let n=5*t+r,i=-e+r*l,u=e-t*l,c=e*o[n];a[3*n]=i,a[3*n+1]=c,a[3*n+2]=u,s[2*n]=r/4,s[2*n+1]=t/4}!function(e){let t=t=>({x:e[3*t],y:e[3*t+1],z:e[3*t+2]}),r=(t,r,n,i)=>{e[3*t]=r,e[3*t+1]=n,e[3*t+2]=i},n=t(1),i=t(3),a=t(5),s=t(6),o=t(8),l=t(9),u=t(15),c=t(16),d=t(18),f=t(19),h=t(21),p=t(23),m=a.x+(n.x-a.x)*.5,g=a.y+(n.y-a.y)*.5,A=a.z+(n.z-a.z)*.5;r(0,s.x+(m-s.x)*2,s.y+(g-s.y)*2,s.z+(A-s.z)*2),m=l.x+(i.x-l.x)*.5,g=l.y+(i.y-l.y)*.5,A=l.z+(i.z-l.z)*.5,r(4,o.x+(m-o.x)*2,o.y+(g-o.y)*2,o.z+(A-o.z)*2),m=h.x+(u.x-h.x)*.5,g=h.y+(u.y-h.y)*.5,A=h.z+(u.z-h.z)*.5,r(20,c.x+(m-c.x)*2,c.y+(g-c.y)*2,c.z+(A-c.z)*2),m=p.x+(f.x-p.x)*.5,g=p.y+(f.y-p.y)*.5,A=p.z+(f.z-p.z)*.5,r(24,d.x+(m-d.x)*2,d.y+(g-d.y)*2,d.z+(A-d.z)*2)}(a);let u=function(e,t){let r=new Float32Array(25);for(let n=0;n<25;n++){let i=e[3*n],a=e[3*n+2],s=1.3-Math.sqrt(i*i+a*a)/t;s<.4?s=0:s>.8&&(s=1),r[n]=s}return r}(a,e),c=[];for(let e=0;e<4;e++)for(let t=0;t<4;t++){let r=5*e+t,n=r+1,i=r+5,a=i+1;c.push(r,i,a),c.push(r,a,n)}return i.setIndex(c),i.setAttribute("position",new ek.Float32BufferAttribute(a,3)),i.setAttribute("uv",new ek.Float32BufferAttribute(s,2)),i.setAttribute("alpha",new ek.Float32BufferAttribute(u,1)),i.computeBoundingSphere(),i}(r,n,e,0)},[r,n]),h=(0,eG.useMemo)(()=>new ek.ShaderMaterial({uniforms:{cloudTexture:{value:d},uvOffset:{value:new ek.Vector2(0,0)},debugMode:{value:+!!o},layerIndex:{value:s}},vertexShader:"\n attribute float alpha;\n\n uniform vec2 uvOffset;\n\n varying vec2 vUv;\n varying float vAlpha;\n\n void main() {\n // Apply UV offset for scrolling\n vUv = uv + uvOffset;\n vAlpha = alpha;\n\n vec4 pos = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n // Set depth to far plane so clouds are always visible and behind other geometry\n gl_Position = pos.xyww;\n }\n",fragmentShader:"\n uniform sampler2D cloudTexture;\n uniform float debugMode;\n uniform int layerIndex;\n\n varying vec2 vUv;\n varying float vAlpha;\n\n void main() {\n vec4 texColor = texture2D(cloudTexture, vUv);\n\n // Debug mode: show layer-colored clouds (red, green, blue for layers 0, 1, 2)\n if (debugMode > 0.5) {\n vec3 debugColor;\n if (layerIndex == 0) {\n debugColor = vec3(1.0, 0.3, 0.3); // Red\n } else if (layerIndex == 1) {\n debugColor = vec3(0.3, 1.0, 0.3); // Green\n } else {\n debugColor = vec3(0.3, 0.3, 1.0); // Blue\n }\n // Use same alpha calculation as normal mode\n gl_FragColor = vec4(debugColor, texColor.a * vAlpha);\n return;\n }\n\n // Tribes 2 uses GL_MODULATE: final = texture × vertex color\n // Vertex color is white with varying alpha, so:\n // Final RGB = Texture RGB × 1.0 = Texture RGB\n // Final Alpha = Texture Alpha × Vertex Alpha\n float finalAlpha = texColor.a * vAlpha;\n\n // Output clouds with texture color and combined alpha\n gl_FragColor = vec4(texColor.rgb, finalAlpha);\n }\n",transparent:!0,depthWrite:!1,side:ek.DoubleSide}),[d,o,s]);return(0,eX.useFrame)((e,t)=>{if(!u.current||!l)return;let r=1e3*t/32;c.current.x+=a.x*i*r,c.current.y+=a.y*i*r,c.current.x=c.current.x-Math.floor(c.current.x),c.current.y=c.current.y-Math.floor(c.current.y),u.current.uniforms.uvOffset.value.copy(c.current)}),(0,eG.useEffect)(()=>()=>{f.dispose(),h.dispose()},[f,h]),(0,eU.jsx)("mesh",{geometry:f,frustumCulled:!1,renderOrder:10,children:(0,eU.jsx)("primitive",{ref:u,object:h,attach:"material"})})}function ah(e){var t,r;let{object:n}=e,{debugMode:i}=(0,n2.useDebug)(),{animationEnabled:a}=(0,n2.useSettings)(),{data:s}=nZ({queryKey:["detailMapList",r=(0,n0.getProperty)(n,"materialList")],queryFn:()=>(0,nq.loadDetailMapList)(r),enabled:!!r},nF,void 0),o=.95*(null!=(t=(0,n0.getFloat)(n,"visibleDistance"))?t:500),l=(0,eG.useMemo)(()=>{var e,t,r;return[null!=(e=(0,n0.getFloat)(n,"cloudSpeed1"))?e:1e-4,null!=(t=(0,n0.getFloat)(n,"cloudSpeed2"))?t:2e-4,null!=(r=(0,n0.getFloat)(n,"cloudSpeed3"))?r:3e-4]},[n]),u=(0,eG.useMemo)(()=>{let e=[.35,.25,.2],t=[];for(let i=0;i<3;i++){var r;let a=null!=(r=(0,n0.getFloat)(n,"cloudHeightPer".concat(i)))?r:e[i];t.push(a)}return t},[n]),c=(0,eG.useMemo)(()=>{let e=(0,n0.getProperty)(n,"windVelocity");if(e){let[t,r]=e.split(" ").map(e=>parseFloat(e));if(0!==t||0!==r)return new ek.Vector2(t,r).normalize()}return new ek.Vector2(1,0)},[n]),d=(0,eG.useMemo)(()=>{if(!s)return[];let e=[];for(let n=7;n<s.length;n++){let i=s[n];if(i){var t,r;let a=n-7;e.push({texture:i,height:null!=(t=u[a])?t:0,speed:null!=(r=l[a])?r:1e-4*(a+1)})}}return e},[s,l,u]),f=(0,eG.useRef)(null);return((0,eX.useFrame)(e=>{let{camera:t}=e;f.current&&f.current.position.copy(t.position)}),d&&0!==d.length)?(0,eU.jsx)("group",{ref:f,children:d.map((e,t)=>{let r=(0,nq.textureToUrl)(e.texture);return(0,eU.jsx)(eG.Suspense,{fallback:null,children:(0,eU.jsx)(af,{textureUrl:r,radius:o,heightPercent:e.height,speed:e.speed,windDirection:c,layerIndex:t,debugMode:i,animationEnabled:a})},t)})}):null}let ap="".concat(nq.BASE_URL,"/black.png");function am(e){let{materialList:t,fogColor:r,fogDistance:n}=e,{data:i}=nZ({queryKey:["detailMapList",t],queryFn:()=>(0,nq.loadDetailMapList)(t)},nF,void 0),a=ac((0,eG.useMemo)(()=>i?[(0,nq.textureToUrl)(i[1]),(0,nq.textureToUrl)(i[3]),(0,nq.textureToUrl)(i[4]),(0,nq.textureToUrl)(i[5]),(0,nq.textureToUrl)(i[0]),(0,nq.textureToUrl)(i[2])]:[ap,ap,ap,ap,ap,ap],[i]),{path:""}),s=(0,eG.useRef)(null),o=!!r&&!!n,l=(0,eG.useMemo)(()=>o?new ek.ShaderMaterial({uniforms:{skybox:{value:a},fogColor:{value:r}},vertexShader:"\n varying vec3 vDirection;\n\n void main() {\n // Use position directly as direction (no world transform needed)\n vDirection = position;\n\n // Transform position but ignore translation\n vec4 pos = projectionMatrix * mat4(mat3(modelViewMatrix)) * vec4(position, 1.0);\n gl_Position = pos.xyww; // Set depth to far plane\n }\n ",fragmentShader:"\n uniform samplerCube skybox;\n uniform vec3 fogColor;\n\n varying vec3 vDirection;\n\n void main() {\n vec3 direction = normalize(vDirection);\n // Swap X and Z to match scene.backgroundRotation used in non-fog path\n direction = vec3(direction.z, direction.y, direction.x);\n vec4 skyColor = textureCube(skybox, direction);\n\n // Calculate fog factor based on vertical direction\n // direction.y: -1 = straight down, 0 = horizon, 1 = straight up\n // 100% fog from bottom to horizon, then fade from horizon (0) to 0.4\n float fogFactor = smoothstep(0.0, 0.4, direction.y);\n\n // Mix in sRGB space to match Three.js fog rendering\n vec3 finalColor = mix(fogColor, skyColor.rgb, fogFactor);\n gl_FragColor = vec4(finalColor, 1.0);\n }\n ",side:ek.BackSide,depthWrite:!1}):null,[a,r,o]);(0,eG.useEffect)(()=>{s.current&&o&&l&&(s.current.uniforms.skybox.value=a,s.current.uniforms.fogColor.value=r)},[a,r,o,l]);let{scene:u}=(0,eW.useThree)();return((0,eG.useEffect)(()=>{u.backgroundRotation=new ek.Euler(0,Math.PI/2,0)},[u]),o)?(0,eU.jsxs)("mesh",{scale:5e3,children:[(0,eU.jsx)("sphereGeometry",{args:[1,60,40]}),(0,eU.jsx)("primitive",{ref:s,object:l,attach:"material"})]}):(0,eU.jsx)("primitive",{attach:"background",object:a})}let av=e=>{e.fragmentShader=e.fragmentShader.replace("#include <roughness_fragment>","\n #include <roughness_fragment>\n // Override roughness with map alpha channel if map exists\n #ifdef USE_MAP\n roughnessFactor = texture2D(map, vMapUv).a * 1;\n #endif\n ")};function ag(){let e=new ek.MeshStandardMaterial({side:2,metalness:0,roughness:1});return e.onBeforeCompile=av,e}let aA=(0,eG.createContext)(null);function ay(e){let{children:t,shapeName:r,type:n}=e,i=(0,eG.useMemo)(()=>({shapeName:r,type:n}),[r,n]);return(0,eU.jsx)(aA.Provider,{value:i,children:t})}var ax=e.i(51475);let aB=new Map;function aC(e){let{material:t,shapeName:r}=e,n=t.userData.resource_path,i=function(e){let{animationEnabled:t}=(0,n2.useSettings)(),{data:r}=nZ({queryKey:["ifl",e],queryFn:()=>(0,nq.loadImageFrameList)(e),enabled:!0,suspense:!0,throwOnError:nX,placeholderData:void 0},nF,void 0),n=(0,eG.useMemo)(()=>r.map(t=>(0,nq.iflTextureToUrl)(t.name,e)),[r,e]),i=(0,n$.useTexture)(n),a=(0,eG.useMemo)(()=>{var t;let n,a=aB.get(e);return a||(a=function(e){let t=e[0].image.width,r=e[0].image.height,n=e.length,i=Math.ceil(Math.sqrt(n)),a=Math.ceil(n/i),s=document.createElement("canvas");s.width=t*i,s.height=r*a;let o=s.getContext("2d");e.forEach((e,n)=>{let a=Math.floor(n/i);o.drawImage(e.image,n%i*t,a*r)});let l=new ek.CanvasTexture(s);return l.colorSpace=ek.SRGBColorSpace,l.generateMipmaps=!1,l.minFilter=ek.NearestFilter,l.magFilter=ek.NearestFilter,l.wrapS=ek.ClampToEdgeWrapping,l.wrapT=ek.ClampToEdgeWrapping,l.repeat.set(1/i,1/a),{texture:l,columns:i,rows:a,frameCount:n,frameStartTicks:[],totalTicks:0,lastFrame:-1}}(i),aB.set(e,a)),n=0,(t=a).frameStartTicks=r.map(e=>{let t=n;return n+=e.frameCount,t}),t.totalTicks=n,a},[e,i,r]);return(0,ax.useTick)(e=>{let r=t?function(e,t){if(0===e.totalTicks)return 0;let r=t%e.totalTicks,{frameStartTicks:n}=e;for(let e=n.length-1;e>=0;e--)if(r>=n[e])return e;return 0}(a,e):0;!function(e,t){if(t===e.lastFrame)return;e.lastFrame=t;let r=t%e.columns,n=e.rows-1-Math.floor(t/e.columns);e.texture.offset.set(r/e.columns,n/e.rows)}(a,r)}),a.texture}("textures/".concat(n,".ifl")),a=r&&/borg|xorg|porg|dorg/i.test(r),s=(0,eG.useMemo)(()=>{if(!a){let e=ag();return e.map=i,e}let e=t.clone();return e.map=i,e.transparent=!0,e.alphaTest=.9,e.side=2,e},[t,i,a]);return(0,eU.jsx)("primitive",{object:s,attach:"material"})}function aS(e){let{material:t,shapeName:r}=e,n=t.userData.resource_path,i=(0,eG.useMemo)(()=>(n||console.warn('No resource_path was found on "'.concat(r,'" - rendering fallback.')),n?(0,nq.textureToUrl)(n):nq.FALLBACK_TEXTURE_URL),[t,n,r]),a=r&&/borg|xorg|porg|dorg/i.test(r),s=(0,n$.useTexture)(i,e=>(a||(e.wrapS=e.wrapT=ek.RepeatWrapping,e.colorSpace=ek.SRGBColorSpace,e.flipY=!1,e.anisotropy=16,e.generateMipmaps=!0,e.minFilter=ek.LinearMipmapLinearFilter,e.magFilter=ek.LinearFilter,e.needsUpdate=!0),(0,n1.setupColor)(e))),o=(0,eG.useMemo)(()=>{if(!a){let e=ag();return e.map=s,e}let e=t.clone();return e.map=s,e.transparent=!0,e.alphaTest=.9,e.side=2,e},[t,s,a]);return(0,eU.jsx)("primitive",{object:o,attach:"material"})}function aE(e){var t;let{material:r,shapeName:n}=e,i=new Set(null!=(t=r.userData.flag_names)?t:[]).has("IflMaterial"),a=r.userData.resource_path;return i&&a?(0,eU.jsx)(aC,{material:r,shapeName:n}):r.name?(0,eU.jsx)(aS,{material:r,shapeName:n}):null}function aT(e){let{color:t,label:r}=e;return(0,eU.jsxs)("mesh",{children:[(0,eU.jsx)("boxGeometry",{args:[10,10,10]}),(0,eU.jsx)("meshStandardMaterial",{color:t,wireframe:!0}),r?(0,eU.jsx)(an.FloatingLabel,{color:t,children:r}):null]})}function aD(e){let{color:t,label:r}=e,{debugMode:n}=(0,n2.useDebug)();return n?(0,eU.jsx)(aT,{color:t,label:r}):null}let ab=(0,eG.memo)(function(){let{shapeName:e}=(0,eG.useContext)(aA),{debugMode:t}=(0,n2.useDebug)(),{nodes:r}=ar((0,nq.shapeToUrl)(e)),n=(0,eG.useMemo)(()=>{let e=Object.values(r).filter(e=>e.skeleton);if(e.length>0){var t=e[0].skeleton;let r=new Set;return t.bones.forEach((e,t)=>{e.name.match(/^Hulk/i)&&r.add(t)}),r}return new Set},[r]),i=(0,eG.useMemo)(()=>Object.entries(r).filter(e=>{let[t,r]=e;return r.material&&"Unassigned"!==r.material.name&&!r.name.match(/^Hulk/i)}).map(e=>{let[t,r]=e,i=function(e,t){if(0===t.size||!e.attributes.skinIndex)return e;let r=e.attributes.skinIndex,n=e.attributes.skinWeight,i=e.index,a=Array(r.count).fill(!1);for(let e=0;e<r.count;e++)for(let i=0;i<4;i++){let s=r.array[4*e+i];if(n.array[4*e+i]>.01&&t.has(s)){a[e]=!0;break}}if(i){let t=[],r=i.array;for(let e=0;e<r.length;e+=3){let n=r[e],i=r[e+1],s=r[e+2];a[n]||a[i]||a[s]||t.push(n,i,s)}let n=e.clone();return n.setIndex(t),n}return e}(r.geometry,n);return{node:r,geometry:i}}),[r,n]);return(0,eU.jsxs)("group",{rotation:[0,Math.PI/2,0],children:[i.map(t=>{let{node:r,geometry:n}=t;return(0,eU.jsx)("mesh",{geometry:n,castShadow:!0,receiveShadow:!0,children:r.material?(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)("meshStandardMaterial",{color:"gray",wireframe:!0}),children:Array.isArray(r.material)?r.material.map((t,r)=>(0,eU.jsx)(aE,{material:t,shapeName:e},r)):(0,eU.jsx)(aE,{material:r.material,shapeName:e})}):null},r.id)}),t?(0,eU.jsx)(an.FloatingLabel,{children:e}):null]})}),aM={Banner_Honor:"banner_honor.dts",Banner_Strength:"banner_strength.dts",Banner_Unity:"banner_unity.dts",CreativityPad:"station_teleport.dts",ExteriorFlagStand:"ext_flagstand.dts",FlipFlop:"switch.dts",GeneratorLarge:"station_generator_large.dts",InteriorFlagStand:"int_flagstand.dts",LightMaleHuman_Dead:"light_male_dead.dts",MediumMaleHuman_Dead:"medium_male_dead.dts",HeavyMaleHuman_Dead:"heavy_male_dead.dts",LogoProjector:"teamlogo_projector.dts",SensorLargePulse:"sensor_pulse_large.dts",SensorMediumPulse:"sensor_pulse_medium.dts",SolarPanel:"solarpanel.dts",StaticShape:"switch.dts",StationInventory:"station_inv_human.dts",StationVehicle:"vehicle_pad_station.dts",StationVehiclePad:"vehicle_pad.dts",Teleporter:"nexusbase.dts"},aw={AmmoPack:"pack_upgrade_ammo.dts",Beacon:"beacon.dts",Chaingun:"weapon_chaingun.dts",ChaingunAmmo:"ammo_chaingun.dts",CloakingPack:"pack_upgrade_cloaking.dts",ConcussionGrenade:"grenade.dts",DiscAmmo:"ammo_disc.dts",ELFGun:"weapon_elf.dts",EnergyPack:"pack_upgrade_energy.dts",Flag:"flag.dts",FlareGrenade:"grenade.dts",Grenade:"grenade.dts",GrenadeLauncher:"weapon_grenade_launcher.dts",GrenadeLauncherAmmo:"ammo_grenade.dts",InventoryDeployable:"pack_deploy_inventory.dts",Mine:"ammo_mine.dts",MotionSensorDeployable:"pack_deploy_sensor_motion.dts",Plasma:"weapon_plasma.dts",PlasmaAmmo:"ammo_plasma.dts",PulseSensorDeployable:"pack_deploy_sensor_pulse.dts",RepairKit:"repair_kit.dts",RepairPack:"pack_upgrade_repair.dts",RepairPatch:"repair_patch.dts",SatchelCharge:"pack_upgrade_satchel.dts",SensorJammerPack:"pack_upgrade_sensorjammer.dts",ShieldPack:"pack_upgrade_shield.dts",ShockLance:"weapon_shocklance.dts",SniperRifle:"weapon_sniper.dts"},aF={1:"Storm",2:"Inferno"},aR={AABarrelLarge:"turret_aa_large.dts",ELFBarrelLarge:"turret_elf_large.dts",MissileBarrelLarge:"turret_missile_large.dts",MortarBarrelLarge:"turret_mortar_large.dts",PlasmaBarrelLarge:"turret_fusion_large.dts",SentryTurret:"turret_sentry.dts",TurretBaseLarge:"turret_base_large.dts",SentryTurretBarrel:"turret_muzzlepoint.dts"};function aI(e){return i||(i=Object.fromEntries(Object.entries(aR).map(e=>{let[t,r]=e;return[t.toLowerCase(),r]}))),i[e.toLowerCase()]}let aP=(0,eG.createContext)(null);function aL(){let e=(0,eG.useContext)(aP);if(!e)throw Error("useCameras must be used within CamerasProvider");return e}function aU(e){let{children:t}=e,{camera:r}=(0,eW.useThree)(),[n,i]=(0,eG.useState)(0),[a,s]=(0,eG.useState)({}),o=(0,eG.useCallback)(e=>{s(t=>({...t,[e.id]:e}))},[]),l=(0,eG.useCallback)(e=>{s(t=>{let{[e.id]:r,...n}=t;return n})},[]),u=Object.keys(a).length,c=(0,eG.useCallback)(()=>{i(e=>0===u?0:(e+1)%u)},[u]),d=(0,eG.useCallback)(e=>{e>=0&&e<u&&i(e)},[u]);(0,eG.useEffect)(()=>{if(n<Object.keys(a).length){let e=Object.keys(a)[n],t=a[e];r.position.copy(t.position);let i=new ek.Quaternion().setFromAxisAngle(new ek.Vector3(0,1,0),-Math.PI/2);r.quaternion.copy(t.rotation).multiply(i)}},[n,a,r]);let f=(0,eG.useMemo)(()=>({registerCamera:o,unregisterCamera:l,nextCamera:c,setCameraIndex:d,cameraCount:u}),[o,l,c,d,u]);return(0,eU.jsx)(aP.Provider,{value:f,children:t})}let aG=(0,eG.lazy)(()=>e.A(61921).then(e=>({default:e.AudioEmitter}))),aO={AudioEmitter:function(e){let{audioEnabled:t}=(0,n2.useSettings)();return t?(0,eU.jsx)(aG,{...e}):null},Camera:function(e){let{object:t}=e,{registerCamera:r,unregisterCamera:n}=aL(),i=(0,eG.useId)(),a=(0,n0.getProperty)(t,"dataBlock"),s=(0,eG.useMemo)(()=>(0,n0.getPosition)(t),[t]),o=(0,eG.useMemo)(()=>(0,n0.getRotation)(t),[t]);return(0,eG.useEffect)(()=>{if("Observer"===a){let e={id:i,position:new ek.Vector3(...s),rotation:o};return r(e),()=>{n(e)}}},[i,a,r,n,s,o]),null},ForceFieldBare:(0,eG.lazy)(()=>e.A(25147).then(e=>({default:e.ForceFieldBare}))),InteriorInstance:au,Item:function(e){var t,r;let{object:i}=e,a=n5(),s=null!=(t=(0,n0.getProperty)(i,"dataBlock"))?t:"",o=(0,eG.useMemo)(()=>(0,n0.getPosition)(i),[i]),l=(0,eG.useMemo)(()=>(0,n0.getScale)(i),[i]),u=(0,eG.useMemo)(()=>(0,n0.getRotation)(i),[i]),c=(n||(n=Object.fromEntries(Object.entries(aw).map(e=>{let[t,r]=e;return[t.toLowerCase(),r]}))),n[s.toLowerCase()]);c||console.error("<Item> missing shape for dataBlock: ".concat(s));let d=(null==s?void 0:s.toLowerCase())==="flag",f=null!=(r=null==a?void 0:a.team)?r:null,h=f>0?aF[f]:null,p=d&&h?"".concat(h," Flag"):null;return(0,eU.jsx)(ay,{shapeName:c,type:"Item",children:(0,eU.jsx)("group",{position:o,quaternion:u,scale:l,children:c?(0,eU.jsx)(it,{fallback:(0,eU.jsx)(aD,{color:"red",label:c}),children:(0,eU.jsxs)(eG.Suspense,{fallback:(0,eU.jsx)(aT,{color:"pink"}),children:[(0,eU.jsx)(ab,{}),p?(0,eU.jsx)(an.FloatingLabel,{opacity:.6,children:p}):null]})}):(0,eU.jsx)(aD,{color:"orange"})})})},SimGroup:function(e){var t;let{object:r}=e,n=n5(),i=(0,eG.useMemo)(()=>{let e=null,t=!1;if(n&&n.hasTeams){if(t=!0,null!=n.team)e=n.team;else if(r._name){let t=r._name.match(/^team(\d+)$/i);t&&(e=parseInt(t[1],10))}}else r._name&&(t="teams"===r._name.toLowerCase());return{object:r,parent:n,hasTeams:t,team:e}},[r,n]);return(0,eU.jsx)(n8.Provider,{value:i,children:(null!=(t=r._children)?t:[]).map((e,t)=>aH(e,t))})},Sky:function(e){var t;let{object:r}=e,{fogEnabled:n}=(0,n2.useSettings)(),i=(0,n0.getProperty)(r,"materialList"),a=(0,eG.useMemo)(()=>{let e=(0,n0.getProperty)(r,"SkySolidColor");if(e){let[t,r,n]=e.split(" ").map(e=>parseFloat(e));return[new ek.Color().setRGB(t,r,n),new ek.Color().setRGB(t,r,n).convertSRGBToLinear()]}},[r]),s=null!=(t=(0,n0.getInt)(r,"useSkyTextures"))?t:1,o=(0,n0.getFloat)(r,"fogDistance"),l=(0,eG.useMemo)(()=>{let e=(0,n0.getProperty)(r,"fogColor");if(e){let[t,r,n]=e.split(" ").map(e=>parseFloat(e));return[new ek.Color().setRGB(t,r,n),new ek.Color().setRGB(t,r,n).convertSRGBToLinear()]}},[r]),u=a||l,c=u?(0,eU.jsx)("color",{attach:"background",args:[u[0]]}):null;return(0,eU.jsxs)(eU.Fragment,{children:[i&&s?(0,eU.jsx)(eG.Suspense,{fallback:c,children:(0,eU.jsx)(am,{materialList:i,fogColor:n?null==l?void 0:l[1]:void 0,fogDistance:n?o:void 0})}):c,(0,eU.jsx)(eG.Suspense,{children:(0,eU.jsx)(ah,{object:r})}),n&&o&&l?(0,eU.jsx)("fog",{attach:"fog",color:l[1],near:100,far:Math.max(400,2*o)}):null]})},StaticShape:function(e){var t;let{object:n}=e,i=null!=(t=(0,n0.getProperty)(n,"dataBlock"))?t:"",a=(0,eG.useMemo)(()=>(0,n0.getPosition)(n),[n]),s=(0,eG.useMemo)(()=>(0,n0.getRotation)(n),[n]),o=(0,eG.useMemo)(()=>(0,n0.getScale)(n),[n]),l=(r||(r=Object.fromEntries(Object.entries(aM).map(e=>{let[t,r]=e;return[t.toLowerCase(),r]}))),r[i.toLowerCase()]);return l||console.error("<StaticShape> missing shape for dataBlock: ".concat(i)),(0,eU.jsx)(ay,{shapeName:l,type:"StaticShape",children:(0,eU.jsx)("group",{position:a,quaternion:s,scale:o,children:l?(0,eU.jsx)(it,{fallback:(0,eU.jsx)(aD,{color:"red",label:l}),children:(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)(aT,{color:"yellow"}),children:(0,eU.jsx)(ab,{})})}):(0,eU.jsx)(aD,{color:"orange"})})})},Sun:function(e){let{object:t}=e;(0,eG.useMemo)(()=>{var e;let[r,n,i]=(null!=(e=(0,n0.getProperty)(t,"direction"))?e:"0 0 -1").split(" ").map(e=>parseFloat(e));return[5e3*r,5e3*n,5e3*i]},[t]);let r=(0,eG.useMemo)(()=>{var e;let[r,n,i]=(null!=(e=(0,n0.getProperty)(t,"color"))?e:"1 1 1 1").split(" ").map(e=>parseFloat(e));return[r,n,i]},[t]),n=(0,eG.useMemo)(()=>{var e;let[r,n,i]=(null!=(e=(0,n0.getProperty)(t,"ambient"))?e:"0.5 0.5 0.5 1").split(" ").map(e=>parseFloat(e));return[r,n,i]},[t]);return(0,eU.jsx)(eU.Fragment,{children:(0,eU.jsx)("hemisphereLight",{args:[new ek.Color(...r),new ek.Color(...n),2]})})},TerrainBlock:n4,TSStatic:function(e){let{object:t}=e,r=(0,n0.getProperty)(t,"shapeName"),n=(0,eG.useMemo)(()=>(0,n0.getPosition)(t),[t]),i=(0,eG.useMemo)(()=>(0,n0.getRotation)(t),[t]),a=(0,eG.useMemo)(()=>(0,n0.getScale)(t),[t]);return r||console.error("<TSStatic> missing shapeName for object",t),(0,eU.jsx)(ay,{shapeName:r,type:"TSStatic",children:(0,eU.jsx)("group",{position:n,quaternion:i,scale:a,children:(0,eU.jsx)(it,{fallback:(0,eU.jsx)(aD,{color:"red",label:r}),children:(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)(aT,{color:"yellow"}),children:(0,eU.jsx)(ab,{})})})})})},Turret:function(e){var t;let{object:r}=e,n=null!=(t=(0,n0.getProperty)(r,"dataBlock"))?t:"",i=(0,n0.getProperty)(r,"initialBarrel"),a=(0,eG.useMemo)(()=>(0,n0.getPosition)(r),[r]),s=(0,eG.useMemo)(()=>(0,n0.getRotation)(r),[r]),o=(0,eG.useMemo)(()=>(0,n0.getScale)(r),[r]),l=aI(n),u="string"==typeof i?aI(i):void 0;return l||console.error("<Turret> missing shape for dataBlock: ".concat(n)),u||console.error("<Turret> missing shape for initialBarrel dataBlock: ".concat(i)),(0,eU.jsx)(ay,{shapeName:l,type:"Turret",children:(0,eU.jsxs)("group",{position:a,quaternion:s,scale:o,children:[l?(0,eU.jsx)(it,{fallback:(0,eU.jsx)(aD,{color:"red",label:l}),children:(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)(aT,{color:"yellow"}),children:(0,eU.jsx)(ab,{})})}):(0,eU.jsx)(aD,{color:"orange"}),(0,eU.jsx)(ay,{shapeName:u,type:"Turret",children:(0,eU.jsx)("group",{position:[0,1.5,0],children:u?(0,eU.jsx)(it,{fallback:(0,eU.jsx)(aD,{color:"red",label:u}),children:(0,eU.jsx)(eG.Suspense,{fallback:(0,eU.jsx)(aT,{color:"yellow"}),children:(0,eU.jsx)(ab,{})})}):(0,eU.jsx)(aD,{color:"orange"})})})]})})},WaterBlock:(0,eG.lazy)(()=>e.A(18599).then(e=>({default:e.WaterBlock}))),WayPoint:function(e){let{object:t}=e;n5();let r=(0,eG.useMemo)(()=>(0,n0.getPosition)(t),[t]),n=(0,n0.getProperty)(t,"name");return n?(0,eU.jsx)(an.FloatingLabel,{position:r,opacity:.6,children:n}):null}};function aH(e,t){let r=aO[e._className];return r?(0,eU.jsx)(eG.Suspense,{children:(0,eU.jsx)(r,{object:e})},t):null}var aN=e.i(77482),ak=e.i(86608),aj=e.i(38433),az=e.i(33870),aK=e.i(91996);let aJ=async e=>{let t;try{t=(0,nq.getUrlForPath)(e)}catch(t){return console.warn("Script not in manifest: ".concat(e," (").concat(t,")")),null}try{let r=await fetch(t);if(!r.ok)return console.error("Script fetch failed: ".concat(e," (").concat(r.status,")")),null;return await r.text()}catch(t){return console.error("Script fetch error: ".concat(e)),console.error(t),null}},aV=(0,az.createScriptCache)(),aQ={findFiles:e=>{let t=(0,nY.default)(e,{nocase:!0});return(0,aK.getResourceList)().filter(e=>t(e)).map(e=>{let[t,r]=(0,aK.getSourceAndPath)(e);return r})},isFile:e=>null!=(0,aK.getResourceMap)()[(0,aK.getResourceKey)(e)]},aW=(0,eG.memo)(function(e){let{name:t,onLoadingChange:r}=e,{data:n}=nZ({queryKey:["parsedMission",t],queryFn:()=>(0,nq.loadMission)(t)},nF,void 0),{missionGroup:i,runtime:a,progress:s}=function(e,t){let[r,n]=(0,eG.useState)({missionGroup:void 0,runtime:void 0,progress:0});return(0,eG.useEffect)(()=>{if(!t)return;let r=new AbortController,i=t.missionTypes[0],a=(0,aj.createProgressTracker)(),s=()=>{n(e=>({...e,progress:a.progress}))};a.on("update",s);let{runtime:o}=(0,ak.runServer)({missionName:e,missionType:i,runtimeOptions:{loadScript:aJ,fileSystem:aQ,cache:aV,signal:r.signal,progress:a,ignoreScripts:["scripts/admin.cs","scripts/ai.cs","scripts/aiCTF.cs","scripts/aiTDM.cs","scripts/aiHunters.cs","scripts/deathMessages.cs","scripts/graphBuild.cs","scripts/navGraph.cs","scripts/serverTasks.cs","scripts/spdialog.cs"]},onMissionLoadDone:()=>{n({missionGroup:o.getObjectByName("MissionGroup"),runtime:o,progress:1})}});return()=>{a.off("update",s),r.abort(),o.destroy()}},[e,t]),r}(t,n),o=!i||!a;return((0,eG.useEffect)(()=>{null==r||r(o,s)},[o,s,r]),o)?null:(0,eU.jsx)(aN.RuntimeProvider,{runtime:a,children:aH(i)})});function aX(e,t){var r=rX(e,t,"update");if(r.set){if(!r.get)throw TypeError("attempted to read set only private field");return"__destrWrapper"in r||(r.__destrWrapper={set value(v){r.set.call(e,v)},get value(){return r.get.call(e)}}),r.__destrWrapper}if(!r.writable)throw TypeError("attempted to set read only private field");return r}var a_=(eA=new WeakMap,class extends r1{build(e,t,r){var n;let i=t.queryKey,a=null!=(n=t.queryHash)?n:nr(i,t),s=this.get(a);return s||(s=new nT({client:e,queryKey:i,queryHash:a,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(i)}),this.add(s)),s}add(e){r_(this,eA).has(e.queryHash)||(r_(this,eA).set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=r_(this,eA).get(e.queryHash);t&&(e.destroy(),t===e&&r_(this,eA).delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){ng.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return r_(this,eA).get(e)}getAll(){return[...r_(this,eA).values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ne(t,e))}findAll(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.getAll();return Object.keys(e).length>0?t.filter(t=>ne(e,t)):t}notify(e){ng.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){ng.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){ng.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}constructor(e={}){super(),rY(this,eA,{writable:!0,value:void 0}),this.config=e,rq(this,eA,new Map)}}),aZ=(ey=new WeakMap,ex=new WeakMap,eB=new WeakMap,eC=new WeakMap,eS=new WeakSet,class extends nE{setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){r_(this,ex).includes(e)||(r_(this,ex).push(e),this.clearGcTimeout(),r_(this,eB).notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){rq(this,ex,r_(this,ex).filter(t=>t!==e)),this.scheduleGc(),r_(this,eB).notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){r_(this,ex).length||("pending"===this.state.status?this.scheduleGc():r_(this,eB).remove(this))}continue(){var e,t;return null!=(t=null==(e=r_(this,eC))?void 0:e.continue())?t:this.execute(this.state.variables)}async execute(e){var t,r,n,i,a,s,o,l,u,c,d,f,h,p,m,g,A,y,x,B,C;let S=()=>{r$(this,eS,aY).call(this,{type:"continue"})},E={client:r_(this,ey),meta:this.options.meta,mutationKey:this.options.mutationKey};rq(this,eC,nS({fn:()=>this.options.mutationFn?this.options.mutationFn(e,E):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{r$(this,eS,aY).call(this,{type:"failed",failureCount:e,error:t})},onPause:()=>{r$(this,eS,aY).call(this,{type:"pause"})},onContinue:S,retry:null!=(t=this.options.retry)?t:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>r_(this,eB).canRun(this)}));let T="pending"===this.state.status,D=!r_(this,eC).canStart();try{if(T)S();else{r$(this,eS,aY).call(this,{type:"pending",variables:e,isPaused:D}),await (null==(c=(d=r_(this,eB).config).onMutate)?void 0:c.call(d,e,this,E));let t=await (null==(f=(h=this.options).onMutate)?void 0:f.call(h,e,E));t!==this.state.context&&r$(this,eS,aY).call(this,{type:"pending",context:t,variables:e,isPaused:D})}let t=await r_(this,eC).start();return await (null==(r=(n=r_(this,eB).config).onSuccess)?void 0:r.call(n,t,e,this.state.context,this,E)),await (null==(i=(a=this.options).onSuccess)?void 0:i.call(a,t,e,this.state.context,E)),await (null==(s=(o=r_(this,eB).config).onSettled)?void 0:s.call(o,t,null,this.state.variables,this.state.context,this,E)),await (null==(l=(u=this.options).onSettled)?void 0:l.call(u,t,null,e,this.state.context,E)),r$(this,eS,aY).call(this,{type:"success",data:t}),t}catch(t){try{throw await (null==(p=(m=r_(this,eB).config).onError)?void 0:p.call(m,t,e,this.state.context,this,E)),await (null==(g=(A=this.options).onError)?void 0:g.call(A,t,e,this.state.context,E)),await (null==(y=(x=r_(this,eB).config).onSettled)?void 0:y.call(x,void 0,t,this.state.variables,this.state.context,this,E)),await (null==(B=(C=this.options).onSettled)?void 0:B.call(C,void 0,t,e,this.state.context,E)),t}finally{r$(this,eS,aY).call(this,{type:"error",error:t})}}finally{r_(this,eB).runNext(this)}}constructor(e){super(),r0(this,eS),rY(this,ey,{writable:!0,value:void 0}),rY(this,ex,{writable:!0,value:void 0}),rY(this,eB,{writable:!0,value:void 0}),rY(this,eC,{writable:!0,value:void 0}),rq(this,ey,e.client),this.mutationId=e.mutationId,rq(this,eB,e.mutationCache),rq(this,ex,[]),this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}});function aY(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),ng.batch(()=>{r_(this,ex).forEach(t=>{t.onMutationUpdate(e)}),r_(this,eB).notify({mutation:this,type:"updated",action:e})})}var aq=(eE=new WeakMap,eT=new WeakMap,eD=new WeakMap,class extends r1{build(e,t,r){let n=new aZ({client:e,mutationCache:this,mutationId:++aX(this,eD).value,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){r_(this,eE).add(e);let t=a$(e);if("string"==typeof t){let r=r_(this,eT).get(t);r?r.push(e):r_(this,eT).set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(r_(this,eE).delete(e)){let t=a$(e);if("string"==typeof t){let r=r_(this,eT).get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&r_(this,eT).delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=a$(e);if("string"!=typeof t)return!0;{let r=r_(this,eT).get(t),n=null==r?void 0:r.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=a$(e);if("string"!=typeof t)return Promise.resolve();{var r,n;let i=null==(r=r_(this,eT).get(t))?void 0:r.find(t=>t!==e&&t.state.isPaused);return null!=(n=null==i?void 0:i.continue())?n:Promise.resolve()}}clear(){ng.batch(()=>{r_(this,eE).forEach(e=>{this.notify({type:"removed",mutation:e})}),r_(this,eE).clear(),r_(this,eT).clear()})}getAll(){return Array.from(r_(this,eE))}find(e){let t={exact:!0,...e};return this.getAll().find(e=>nt(t,e))}findAll(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.getAll().filter(t=>nt(e,t))}notify(e){ng.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return ng.batch(()=>Promise.all(e.map(e=>e.continue().catch(r4))))}constructor(e={}){super(),rY(this,eE,{writable:!0,value:void 0}),rY(this,eT,{writable:!0,value:void 0}),rY(this,eD,{writable:!0,value:void 0}),this.config=e,rq(this,eE,new Set),rq(this,eT,new Map),rq(this,eD,0)}});function a$(e){var t;return null==(t=e.options.scope)?void 0:t.id}function a0(e){return{onFetch:(t,r)=>{var n,i,a,s,o;let l=t.options,u=null==(a=t.fetchOptions)||null==(i=a.meta)||null==(n=i.fetchMore)?void 0:n.direction,c=(null==(s=t.state.data)?void 0:s.pages)||[],d=(null==(o=t.state.data)?void 0:o.pageParams)||[],f={pages:[],pageParams:[]},h=0,p=async()=>{let r=!1,n=np(t.options,t.fetchOptions),i=async(e,i,a)=>{if(r)return Promise.reject();if(null==i&&e.pages.length)return Promise.resolve(e);let s=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:i,direction:a?"backward":"forward",meta:t.options.meta};return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(t.signal.aborted?r=!0:t.signal.addEventListener("abort",()=>{r=!0}),t.signal)}),e})(),o=await n(s),{maxPages:l}=t.options,u=a?nf:nd;return{pages:u(e.pages,o,l),pageParams:u(e.pageParams,i,l)}};if(u&&c.length){let e="backward"===u,t={pages:c,pageParams:d},r=(e?function(e,t){var r;let{pages:n,pageParams:i}=t;return n.length>0?null==(r=e.getPreviousPageParam)?void 0:r.call(e,n[0],n,i[0],i):void 0}:a1)(l,t);f=await i(t,r,e)}else{let t=null!=e?e:c.length;do{var a;let e=0===h?null!=(a=d[0])?a:l.initialPageParam:a1(l,f);if(h>0&&null==e)break;f=await i(f,e),h++}while(h<t)}return f};t.options.persister?t.fetchFn=()=>{var e,n;return null==(e=(n=t.options).persister)?void 0:e.call(n,p,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r)}:t.fetchFn=p}}}function a1(e,t){let{pages:r,pageParams:n}=t,i=r.length-1;return r.length>0?e.getNextPageParam(r[i],r,n[i],n):void 0}var a2=(eb=new WeakMap,eM=new WeakMap,ew=new WeakMap,eF=new WeakMap,eR=new WeakMap,eI=new WeakMap,eP=new WeakMap,eL=new WeakMap,class{mount(){aX(this,eI).value++,1===r_(this,eI)&&(rq(this,eP,nm.subscribe(async e=>{e&&(await this.resumePausedMutations(),r_(this,eb).onFocus())})),rq(this,eL,nA.subscribe(async e=>{e&&(await this.resumePausedMutations(),r_(this,eb).onOnline())})))}unmount(){var e,t;aX(this,eI).value--,0===r_(this,eI)&&(null==(e=r_(this,eP))||e.call(this),rq(this,eP,void 0),null==(t=r_(this,eL))||t.call(this),rq(this,eL,void 0))}isFetching(e){return r_(this,eb).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return r_(this,eM).findAll({...e,status:"pending"}).length}getQueryData(e){var t;let r=this.defaultQueryOptions({queryKey:e});return null==(t=r_(this,eb).get(r.queryHash))?void 0:t.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=r_(this,eb).build(this,t),n=r.state.data;return void 0===n?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(r6(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(n))}getQueriesData(e){return r_(this,eb).findAll(e).map(e=>{let{queryKey:t,state:r}=e;return[t,r.data]})}setQueryData(e,t,r){let n=this.defaultQueryOptions({queryKey:e}),i=r_(this,eb).get(n.queryHash),a=null==i?void 0:i.state.data,s="function"==typeof t?t(a):t;if(void 0!==s)return r_(this,eb).build(this,n).setData(s,{...r,manual:!0})}setQueriesData(e,t,r){return ng.batch(()=>r_(this,eb).findAll(e).map(e=>{let{queryKey:n}=e;return[n,this.setQueryData(n,t,r)]}))}getQueryState(e){var t;let r=this.defaultQueryOptions({queryKey:e});return null==(t=r_(this,eb).get(r.queryHash))?void 0:t.state}removeQueries(e){let t=r_(this,eb);ng.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=r_(this,eb);return ng.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={revert:!0,...t};return Promise.all(ng.batch(()=>r_(this,eb).findAll(e).map(e=>e.cancel(r)))).then(r4).catch(r4)}invalidateQueries(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ng.batch(()=>{var r,n;return(r_(this,eb).findAll(e).forEach(e=>{e.invalidate()}),(null==e?void 0:e.refetchType)==="none")?Promise.resolve():this.refetchQueries({...e,type:null!=(n=null!=(r=null==e?void 0:e.refetchType)?r:null==e?void 0:e.type)?n:"active"},t)})}refetchQueries(e){var t;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={...r,cancelRefetch:null==(t=r.cancelRefetch)||t};return Promise.all(ng.batch(()=>r_(this,eb).findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(r4)),"paused"===e.state.fetchStatus?Promise.resolve():t}))).then(r4)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let r=r_(this,eb).build(this,t);return r.isStaleByTime(r6(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(r4).catch(r4)}fetchInfiniteQuery(e){return e.behavior=a0(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(r4).catch(r4)}ensureInfiniteQueryData(e){return e.behavior=a0(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return nA.isOnline()?r_(this,eM).resumePausedMutations():Promise.resolve()}getQueryCache(){return r_(this,eb)}getMutationCache(){return r_(this,eM)}getDefaultOptions(){return r_(this,ew)}setDefaultOptions(e){rq(this,ew,e)}setQueryDefaults(e,t){r_(this,eF).set(nn(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...r_(this,eF).values()],r={};return t.forEach(t=>{ni(e,t.queryKey)&&Object.assign(r,t.defaultOptions)}),r}setMutationDefaults(e,t){r_(this,eR).set(nn(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...r_(this,eR).values()],r={};return t.forEach(t=>{ni(e,t.mutationKey)&&Object.assign(r,t.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...r_(this,ew).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=nr(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===nh&&(t.enabled=!1),t}defaultMutationOptions(e){return(null==e?void 0:e._defaulted)?e:{...r_(this,ew).mutations,...(null==e?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){r_(this,eb).clear(),r_(this,eM).clear()}constructor(e={}){rY(this,eb,{writable:!0,value:void 0}),rY(this,eM,{writable:!0,value:void 0}),rY(this,ew,{writable:!0,value:void 0}),rY(this,eF,{writable:!0,value:void 0}),rY(this,eR,{writable:!0,value:void 0}),rY(this,eI,{writable:!0,value:void 0}),rY(this,eP,{writable:!0,value:void 0}),rY(this,eL,{writable:!0,value:void 0}),rq(this,eb,e.queryCache||new a_),rq(this,eM,e.mutationCache||new aq),rq(this,ew,e.defaultOptions||{}),rq(this,eF,new Map),rq(this,eR,new Map),rq(this,eI,0)}}),a9=e.i(8155);let a3=e=>e,a4=e=>{let t=(0,a9.createStore)(e),r=e=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a3,r=eG.default.useSyncExternalStore(e.subscribe,eG.default.useCallback(()=>t(e.getState()),[e,t]),eG.default.useCallback(()=>t(e.getInitialState()),[e,t]));return eG.default.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},a8=eG.createContext(null);function a5(e){let{map:t,children:r,onChange:n,domElement:i}=e,a=t.map(e=>e.name+e.keys).join("-"),s=eG.useMemo(()=>{let e,r;return e=()=>t.reduce((e,t)=>({...e,[t.name]:!1}),{}),(r=(t,r,n)=>{let i=n.subscribe;return n.subscribe=(e,t,r)=>{let a=e;if(t){let i=(null==r?void 0:r.equalityFn)||Object.is,s=e(n.getState());a=r=>{let n=e(r);if(!i(s,n)){let e=s;t(s=n,e)}},(null==r?void 0:r.fireImmediately)&&t(s,s)}return i(a)},e(t,r,n)})?a4(r):a4},[a]),o=eG.useMemo(()=>[s.subscribe,s.getState,s],[a]),l=s.setState;return eG.useEffect(()=>{let e=t.map(e=>{let{name:t,keys:r,up:i}=e;return{keys:r,up:i,fn:e=>{l({[t]:e}),n&&n(t,e,o[1]())}}}).reduce((e,t)=>{let{keys:r,fn:n,up:i=!0}=t;return r.forEach(t=>e[t]={fn:n,pressed:!1,up:i}),e},{}),r=t=>{let{key:r,code:n}=t,i=e[r]||e[n];if(!i)return;let{fn:a,pressed:s,up:o}=i;i.pressed=!0,(o||!s)&&a(!0)},a=t=>{let{key:r,code:n}=t,i=e[r]||e[n];if(!i)return;let{fn:a,up:s}=i;i.pressed=!1,s&&a(!1)},s=i||window;return s.addEventListener("keydown",r,{passive:!0}),s.addEventListener("keyup",a,{passive:!0}),()=>{s.removeEventListener("keydown",r),s.removeEventListener("keyup",a)}},[i,a]),eG.createElement(a8.Provider,{value:o,children:r})}var a6=Object.defineProperty;class a7{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;t<n;t++)r[t].call(this,e);e.target=null}}constructor(){((e,t,r)=>((e,t,r)=>t in e?a6(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r))(this,"_listeners")}}var se=Object.defineProperty,st=(e,t,r)=>(((e,t,r)=>t in e?se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r),r);let sr=new ek.Euler(0,0,0,"YXZ"),sn=new ek.Vector3,si={type:"change"},sa={type:"lock"},ss={type:"unlock"},so=Math.PI/2;class sl extends a7{constructor(e,t){super(),st(this,"camera"),st(this,"domElement"),st(this,"isLocked"),st(this,"minPolarAngle"),st(this,"maxPolarAngle"),st(this,"pointerSpeed"),st(this,"onMouseMove",e=>{this.domElement&&!1!==this.isLocked&&(sr.setFromQuaternion(this.camera.quaternion),sr.y-=.002*e.movementX*this.pointerSpeed,sr.x-=.002*e.movementY*this.pointerSpeed,sr.x=Math.max(so-this.maxPolarAngle,Math.min(so-this.minPolarAngle,sr.x)),this.camera.quaternion.setFromEuler(sr),this.dispatchEvent(si))}),st(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(sa),this.isLocked=!0):(this.dispatchEvent(ss),this.isLocked=!1))}),st(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),st(this,"connect",e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),st(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),st(this,"dispose",()=>{this.disconnect()}),st(this,"getObject",()=>this.camera),st(this,"direction",new ek.Vector3(0,0,-1)),st(this,"getDirection",e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),st(this,"moveForward",e=>{sn.setFromMatrixColumn(this.camera.matrix,0),sn.crossVectors(this.camera.up,sn),this.camera.position.addScaledVector(sn,e)}),st(this,"moveRight",e=>{sn.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(sn,e)}),st(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),st(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}var su=function(e){return e.forward="forward",e.backward="backward",e.left="left",e.right="right",e.up="up",e.down="down",e.camera1="camera1",e.camera2="camera2",e.camera3="camera3",e.camera4="camera4",e.camera5="camera5",e.camera6="camera6",e.camera7="camera7",e.camera8="camera8",e.camera9="camera9",e}(su||{});function sc(){let{speedMultiplier:e,setSpeedMultiplier:t}=(0,n2.useControls)(),[r,n]=function(e){let[t,r,n]=eG.useContext(a8);return[t,r]}(),{camera:i,gl:a}=(0,eW.useThree)(),{nextCamera:s,setCameraIndex:o,cameraCount:l}=aL(),u=(0,eG.useRef)(null),c=(0,eG.useRef)(new ek.Vector3),d=(0,eG.useRef)(new ek.Vector3),f=(0,eG.useRef)(new ek.Vector3);return(0,eG.useEffect)(()=>{let e=new sl(i,a.domElement);u.current=e;let t=t=>{e.isLocked?s():t.target===a.domElement&&e.lock()};return document.addEventListener("click",t),()=>{document.removeEventListener("click",t),e.dispose()}},[i,a,s]),(0,eG.useEffect)(()=>{let e=["camera1","camera2","camera3","camera4","camera5","camera6","camera7","camera8","camera9"];return r(t=>{for(let r=0;r<e.length;r++)if(t[e[r]]&&r<l){o(r);break}})},[r,o,l]),(0,eG.useEffect)(()=>{let e=e=>{e.preventDefault();let r=e.deltaY>0?-1:1,n=Math.max(.05,Math.min(.5,Math.abs(.01*e.deltaY)))*r;t(e=>Math.max(.1,Math.min(5,Math.round((e+n)*20)/20)))},r=a.domElement;return r.addEventListener("wheel",e,{passive:!1}),()=>{r.removeEventListener("wheel",e)}},[a]),(0,eX.useFrame)((t,r)=>{let{forward:a,backward:s,left:o,right:l,up:u,down:h}=n();(a||s||o||l||u||h)&&(i.getWorldDirection(c.current),c.current.normalize(),d.current.crossVectors(i.up,c.current).normalize(),f.current.set(0,0,0),a&&f.current.add(c.current),s&&f.current.sub(c.current),o&&f.current.add(d.current),l&&f.current.sub(d.current),u&&(f.current.y+=1),h&&(f.current.y-=1),f.current.lengthSq()>0&&(f.current.normalize().multiplyScalar(80*e*r),i.position.add(f.current)))}),null}let sd=[{name:"forward",keys:["KeyW"]},{name:"backward",keys:["KeyS"]},{name:"left",keys:["KeyA"]},{name:"right",keys:["KeyD"]},{name:"up",keys:["Space"]},{name:"down",keys:["ShiftLeft","ShiftRight"]},{name:"camera1",keys:["Digit1"]},{name:"camera2",keys:["Digit2"]},{name:"camera3",keys:["Digit3"]},{name:"camera4",keys:["Digit4"]},{name:"camera5",keys:["Digit5"]},{name:"camera6",keys:["Digit6"]},{name:"camera7",keys:["Digit7"]},{name:"camera8",keys:["Digit8"]},{name:"camera9",keys:["Digit9"]}];function sf(){return(0,eG.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"k"===e.key||e.metaKey&&e.stopImmediatePropagation()};return window.addEventListener("keydown",e,{capture:!0}),window.addEventListener("keyup",e,{capture:!0}),()=>{window.removeEventListener("keydown",e,{capture:!0}),window.removeEventListener("keyup",e,{capture:!0})}},[]),(0,eU.jsx)(a5,{map:sd,children:(0,eU.jsx)(sc,{})})}var sh=function(){var e;return"undefined"!=typeof window&&!!(null==(e=window.document)?void 0:e.createElement)}();function sp(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function sm(e){return e?"self"in e?e.self:sp(e).defaultView||window:self}function sv(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{activeElement:r}=sp(e);if(!(null==r?void 0:r.nodeName))return null;if(sA(r)&&r.contentDocument)return sv(r.contentDocument.body,t);if(t){let e=r.getAttribute("aria-activedescendant");if(e){let t=sp(r).getElementById(e);if(t)return t}}return r}function sg(e,t){return e===t||e.contains(t)}function sA(e){return"IFRAME"===e.tagName}function sy(e){let t=e.tagName.toLowerCase();return"button"===t||"input"===t&&!!e.type&&-1!==sx.indexOf(e.type)}var sx=["button","color","file","image","reset","submit"];function sB(e){return"function"==typeof e.checkVisibility?e.checkVisibility():e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function sC(e){try{let t=e instanceof HTMLInputElement&&null!==e.selectionStart,r="TEXTAREA"===e.tagName;return t||r||!1}catch(e){return!1}}function sS(e){return e.isContentEditable||sC(e)}function sE(e){let t=0,r=0;if(sC(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let n=sp(e).getSelection();if((null==n?void 0:n.rangeCount)&&n.anchorNode&&sg(e,n.anchorNode)&&n.focusNode&&sg(e,n.focusNode)){let i=n.getRangeAt(0),a=i.cloneRange();a.selectNodeContents(e),a.setEnd(i.startContainer,i.startOffset),t=a.toString().length,a.setEnd(i.endContainer,i.endOffset),r=a.toString().length}}return{start:t,end:r}}function sT(e,t){let r=null==e?void 0:e.getAttribute("role");return r&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(r)?r:t}function sD(e){if(!e)return null;let t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return sD(e.parentElement)||document.scrollingElement||document.body}function sb(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...r)}function sM(e,t){return t&&e.item(t)||null}var sw=Symbol("FOCUS_SILENTLY");function sF(e,t,r){if(!t||t===r)return!1;let n=e.item(t.id);return!!n&&(!r||n.element!==r)}function sR(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r]}function sI(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function sP(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];for(let e of t)"function"==typeof e&&e(...r)}}function sL(e){return e}function sU(e,t){if(!e){if("string"!=typeof t)throw Error("Invariant failed");throw Error(t)}}function sG(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];let i="function"==typeof e?e(...r):e;return null!=i&&!i}function sO(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]}function sH(e){let t={};for(let r in e)void 0!==e[r]&&(t[r]=e[r]);return t}function sN(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];for(let e of t)if(void 0!==e)return e}function sk(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function sj(){return sh&&!!navigator.maxTouchPoints}function sz(){return!!sh&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}function sK(){return sh&&sz()&&/apple/i.test(navigator.vendor)}function sJ(e){return!!(e.currentTarget&&!sg(e.currentTarget,e.target))}function sV(e){return e.target===e.currentTarget}function sQ(e,t){let r=new FocusEvent("blur",t),n=e.dispatchEvent(r),i={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",i)),n}function sW(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function sX(e,t){let r=t||e.currentTarget,n=e.relatedTarget;return!n||!sg(r,n)}function s_(e,t,r,n){let i=(e=>{if(n){let t=setTimeout(e,n);return()=>clearTimeout(t)}let t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function sZ(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:window,i=[];try{for(let a of(n.document.addEventListener(e,t,r),Array.from(n.frames)))i.push(sZ(e,t,r,a))}catch(e){}return()=>{try{n.document.removeEventListener(e,t,r)}catch(e){}for(let e of i)e()}}var sY={...eG},sq=sY.useId;sY.useDeferredValue;var s$=sY.useInsertionEffect,s0=sh?eG.useLayoutEffect:eG.useEffect;function s1(e){let t=(0,eG.useRef)(()=>{throw Error("Cannot call an event handler while rendering.")});return s$?s$(()=>{t.current=e}):t.current=e,(0,eG.useCallback)(function(){for(var e,r=arguments.length,n=Array(r),i=0;i<r;i++)n[i]=arguments[i];return null==(e=t.current)?void 0:e.call(t,...n)},[])}function s2(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,eG.useMemo)(()=>{if(t.some(Boolean))return e=>{for(let r of t)sk(r,e)}},t)}function s9(e){if(sq){let t=sq();return e||t}let[t,r]=(0,eG.useState)(e);return s0(()=>{if(e||t)return;let n=Math.random().toString(36).slice(2,8);r("id-".concat(n))},[e,t]),e||t}function s3(e,t){let r=(0,eG.useRef)(!1);(0,eG.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,eG.useEffect)(()=>()=>{r.current=!1},[])}function s4(){return(0,eG.useReducer)(()=>[],[])}function s8(e){return s1("function"==typeof e?e:()=>e)}function s5(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=(0,eG.useCallback)(r=>(e.wrapElement&&(r=e.wrapElement(r)),t(r)),[...r,e.wrapElement]);return{...e,wrapElement:n}}function s6(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0,[r,n]=(0,eG.useState)(null);return{portalRef:s2(n,t),portalNode:r,domReady:!e||r}}var s7=!1,oe=!1,ot=0,or=0;function on(e){(function(e){let t=e.movementX||e.screenX-ot,r=e.movementY||e.screenY-or;return ot=e.screenX,or=e.screenY,t||r||!1})(e)&&(oe=!0)}function oi(){oe=!1}function oa(e){let t=eG.forwardRef((t,r)=>e({...t,ref:r}));return t.displayName=e.displayName||e.name,t}function os(e,t){return eG.memo(e,t)}function oo(e,t){let r,{wrapElement:n,render:i,...a}=t,s=s2(t.ref,i&&(0,eG.isValidElement)(i)&&("ref"in i.props||"ref"in i)?({...i.props}).ref||i.ref:null);if(eG.isValidElement(i)){let e={...i.props,ref:s};r=eG.cloneElement(i,function(e,t){let r={...e};for(let n in t){if(!sI(t,n))continue;if("className"===n){let n="className";r[n]=e[n]?"".concat(e[n]," ").concat(t[n]):t[n];continue}if("style"===n){let n="style";r[n]=e[n]?{...e[n],...t[n]}:t[n];continue}let i=t[n];if("function"==typeof i&&n.startsWith("on")){let t=e[n];if("function"==typeof t){r[n]=function(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];i(...r),t(...r)};continue}}r[n]=i}return r}(a,e))}else r=i?i(a):(0,eU.jsx)(e,{...a});return n?n(r):r}function ol(e){let t=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(t)};return t.displayName=e.name,t}function ou(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=eG.createContext(void 0),n=eG.createContext(void 0),i=()=>eG.useContext(r),a=t=>e.reduceRight((e,r)=>(0,eU.jsx)(r,{...t,children:e}),(0,eU.jsx)(r.Provider,{...t}));return{context:r,scopedContext:n,useContext:i,useScopedContext:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=eG.useContext(n),r=i();return e?t:t||r},useProviderContext:()=>{let e=eG.useContext(n),t=i();if(!e||e!==t)return t},ContextProvider:a,ScopedContextProvider:e=>(0,eU.jsx)(a,{...e,children:t.reduceRight((t,r)=>(0,eU.jsx)(r,{...e,children:t}),(0,eU.jsx)(n.Provider,{...e}))})}}var oc=ou(),od=oc.useContext;oc.useScopedContext,oc.useProviderContext;var of=ou([oc.ContextProvider],[oc.ScopedContextProvider]),oh=of.useContext;of.useScopedContext;var op=of.useProviderContext,om=of.ContextProvider,ov=of.ScopedContextProvider,og=(0,eG.createContext)(void 0),oA=(0,eG.createContext)(void 0),oy=(0,eG.createContext)(!0),ox="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function oB(e){return!(!e.matches(ox)||!sB(e)||e.closest("[inert]"))}function oC(e){if(!oB(e)||0>Number.parseInt(e.getAttribute("tabindex")||"0",10))return!1;if(!("form"in e)||!e.form||e.checked||"radio"!==e.type)return!0;let t=e.form.elements.namedItem(e.name);if(!t||!("length"in t))return!0;let r=sv(e);return!r||r===e||!("form"in r)||r.form!==e.form||r.name!==e.name}function oS(e,t){let r=Array.from(e.querySelectorAll(ox));t&&r.unshift(e);let n=r.filter(oB);return n.forEach((e,t)=>{if(sA(e)&&e.contentDocument){let r=e.contentDocument.body;n.splice(t,1,...oS(r))}}),n}function oE(e,t,r){let n=Array.from(e.querySelectorAll(ox)),i=n.filter(oC);return(t&&oC(e)&&i.unshift(e),i.forEach((e,t)=>{if(sA(e)&&e.contentDocument){let n=oE(e.contentDocument.body,!1,r);i.splice(t,1,...n)}}),!i.length&&r)?n:i}function oT(e,t){return function(e,t,r,n){let i=sv(e),a=oS(e,t),s=a.indexOf(i),o=a.slice(s+1);return o.find(oC)||(r?a.find(oC):null)||(n?o[0]:null)||null}(document.body,!1,e,t)}function oD(e,t){return function(e,t,r,n){let i=sv(e),a=oS(e,t).reverse(),s=a.indexOf(i),o=a.slice(s+1);return o.find(oC)||(r?a.find(oC):null)||(n?o[0]:null)||null}(document.body,!1,e,t)}function ob(e){let t=sv(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&r===e.id}function oM(e){let t=sv(e);if(!t)return!1;if(sg(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&"id"in e&&(r===e.id||!!e.querySelector("#".concat(CSS.escape(r))))}function ow(e){!oM(e)&&oB(e)&&e.focus()}var oF=sK(),oR=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],oI=Symbol("safariFocusAncestor");function oP(e){return"input"===e.tagName.toLowerCase()&&!!e.type&&("radio"===e.type||"checkbox"===e.type)}function oL(e,t){return s1(r=>{null==e||e(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var oU=!1,oG=!0;function oO(e){let t=e.target;t&&"hasAttribute"in t&&!t.hasAttribute("data-focus-visible")&&(oG=!1)}function oH(e){e.metaKey||e.ctrlKey||e.altKey||(oG=!0)}var oN=ol(function(e){var t,r,n,i,a;let{focusable:s=!0,accessibleWhenDisabled:o,autoFocus:l,onFocusVisible:u,...c}=e,d=(0,eG.useRef)(null);(0,eG.useEffect)(()=>{s&&(oU||(sZ("mousedown",oO,!0),sZ("keydown",oH,!0),oU=!0))},[s]),oF&&(0,eG.useEffect)(()=>{if(!s)return;let e=d.current;if(!e||!oP(e))return;let t="labels"in e?e.labels:null;if(!t)return;let r=()=>queueMicrotask(()=>e.focus());for(let e of t)e.addEventListener("mouseup",r);return()=>{for(let e of t)e.removeEventListener("mouseup",r)}},[s]);let f=s&&sO(c),h=!!f&&!o,[p,m]=(0,eG.useState)(!1);(0,eG.useEffect)(()=>{s&&h&&p&&m(!1)},[s,h,p]),(0,eG.useEffect)(()=>{if(!s||!p)return;let e=d.current;if(!e||"undefined"==typeof IntersectionObserver)return;let t=new IntersectionObserver(()=>{oB(e)||m(!1)});return t.observe(e),()=>t.disconnect()},[s,p]);let g=oL(c.onKeyPressCapture,f),A=oL(c.onMouseDownCapture,f),y=oL(c.onClickCapture,f),x=c.onMouseDown,B=s1(e=>{if(null==x||x(e),e.defaultPrevented||!s)return;let t=e.currentTarget;if(!oF||sJ(e)||!sy(t)&&!oP(t))return;let r=!1,n=()=>{r=!0};t.addEventListener("focusin",n,{capture:!0,once:!0});let i=function(e){for(;e&&!oB(e);)e=e.closest(ox);return e||null}(t.parentElement);i&&(i[oI]=!0),s_(t,"mouseup",()=>{t.removeEventListener("focusin",n,!0),i&&(i[oI]=!1),r||ow(t)})}),C=(e,t)=>{if(t&&(e.currentTarget=t),!s)return;let r=e.currentTarget;r&&ob(r)&&(null==u||u(e),e.defaultPrevented||(r.dataset.focusVisible="true",m(!0)))},S=c.onKeyDownCapture,E=s1(e=>{if(null==S||S(e),e.defaultPrevented||!s||p||e.metaKey||e.altKey||e.ctrlKey||!sV(e))return;let t=e.currentTarget;s_(t,"focusout",()=>C(e,t))}),T=c.onFocusCapture,D=s1(e=>{if(null==T||T(e),e.defaultPrevented||!s)return;if(!sV(e))return void m(!1);let t=e.currentTarget;oG||function(e){let{tagName:t,readOnly:r,type:n}=e;return"TEXTAREA"===t&&!r||"SELECT"===t&&!r||("INPUT"!==t||r?!!e.isContentEditable||"combobox"===e.getAttribute("role")&&!!e.dataset.name:oR.includes(n))}(e.target)?s_(e.target,"focusout",()=>C(e,t)):m(!1)}),b=c.onBlur,M=s1(e=>{null==b||b(e),s&&sX(e)&&(e.currentTarget.removeAttribute("data-focus-visible"),m(!1))}),w=(0,eG.useContext)(oy),F=s1(e=>{s&&l&&e&&w&&queueMicrotask(()=>{!ob(e)&&oB(e)&&e.focus()})}),R=function(e,t){let r=e=>{if("string"==typeof e)return e},[n,i]=(0,eG.useState)(()=>r(void 0));return s0(()=>{let t=e&&"current"in e?e.current:e;i((null==t?void 0:t.tagName.toLowerCase())||r(void 0))},[e,t]),n}(d),I=s&&(!R||"button"===R||"summary"===R||"input"===R||"select"===R||"textarea"===R||"a"===R),P=s&&(!R||"button"===R||"input"===R||"select"===R||"textarea"===R),L=c.style,U=(0,eG.useMemo)(()=>h?{pointerEvents:"none",...L}:L,[h,L]);return c={"data-focus-visible":s&&p||void 0,"data-autofocus":l||void 0,"aria-disabled":f||void 0,...c,ref:s2(d,F,c.ref),style:U,tabIndex:(t=s,r=h,n=I,i=P,a=c.tabIndex,t?r?n&&!i?-1:void 0:n?a:a||0:a),disabled:!!P&&!!h||void 0,contentEditable:f?void 0:c.contentEditable,onKeyPressCapture:g,onClickCapture:y,onMouseDownCapture:A,onMouseDown:B,onKeyDownCapture:E,onFocusCapture:D,onBlur:M},sH(c)});function ok(e){let t=[];for(let r of e)t.push(...r);return t}function oj(e){return e.slice().reverse()}function oz(e,t,r){return s1(n=>{var i;if(null==t||t(n),n.defaultPrevented||n.isPropagationStopped()||!sV(n)||"Shift"===n.key||"Control"===n.key||"Alt"===n.key||"Meta"===n.key||function(e){let t=e.target;return(!t||!!sC(t))&&1===e.key.length&&!e.ctrlKey&&!e.metaKey}(n))return;let a=e.getState(),s=null==(i=sM(e,a.activeId))?void 0:i.element;if(!s)return;let{view:o,...l}=n;s!==(null==r?void 0:r.current)&&s.focus(),!function(e,t,r){let n=new KeyboardEvent(t,r);return e.dispatchEvent(n)}(s,n.type,l)&&n.preventDefault(),n.currentTarget.contains(s)&&n.stopPropagation()})}oa(function(e){return oo("div",oN(e))});var oK=ol(function(e){let{store:t,composite:r=!0,focusOnMove:n=r,moveOnKeyPress:i=!0,...a}=e,s=op();sU(t=t||s,!1);let o=(0,eG.useRef)(null),l=(0,eG.useRef)(null),u=function(e){let[t,r]=(0,eG.useState)(!1),n=(0,eG.useCallback)(()=>r(!0),[]),i=e.useState(t=>sM(e,t.activeId));return(0,eG.useEffect)(()=>{let e=null==i?void 0:i.element;t&&e&&(r(!1),e.focus({preventScroll:!0}))},[i,t]),n}(t),c=t.useState("moves"),[,d]=function(e){let[t,r]=(0,eG.useState)(null);return s0(()=>{if(null==t||!e)return;let r=null;return e(e=>(r=e,t)),()=>{e(r)}},[t,e]),[t,r]}(r?t.setBaseElement:null);(0,eG.useEffect)(()=>{var e;if(!t||!c||!r||!n)return;let{activeId:i}=t.getState(),a=null==(e=sM(t,i))?void 0:e.element;a&&("scrollIntoView"in a?(a.focus({preventScroll:!0}),a.scrollIntoView({block:"nearest",inline:"nearest",...void 0})):a.focus())},[t,c,r,n]),s0(()=>{if(!t||!c||!r)return;let{baseElement:e,activeId:n}=t.getState();if(null!==n||!e)return;let i=l.current;l.current=null,i&&sQ(i,{relatedTarget:e}),ob(e)||e.focus()},[t,c,r]);let f=t.useState("activeId"),h=t.useState("virtualFocus");s0(()=>{var e;if(!t||!r||!h)return;let n=l.current;if(l.current=null,!n)return;let i=(null==(e=sM(t,f))?void 0:e.element)||sv(n);i!==n&&sQ(n,{relatedTarget:i})},[t,f,h,r]);let p=oz(t,a.onKeyDownCapture,l),m=oz(t,a.onKeyUpCapture,l),g=a.onFocusCapture,A=s1(e=>{if(null==g||g(e),e.defaultPrevented||!t)return;let{virtualFocus:r}=t.getState();if(!r)return;let n=e.relatedTarget,i=function(e){let t=e[sw];return delete e[sw],t}(e.currentTarget);sV(e)&&i&&(e.stopPropagation(),l.current=n)}),y=a.onFocus,x=s1(e=>{if(null==y||y(e),e.defaultPrevented||!r||!t)return;let{relatedTarget:n}=e,{virtualFocus:i}=t.getState();i?sV(e)&&!sF(t,n)&&queueMicrotask(u):sV(e)&&t.setActiveId(null)}),B=a.onBlurCapture,C=s1(e=>{var r;if(null==B||B(e),e.defaultPrevented||!t)return;let{virtualFocus:n,activeId:i}=t.getState();if(!n)return;let a=null==(r=sM(t,i))?void 0:r.element,s=e.relatedTarget,o=sF(t,s),u=l.current;l.current=null,sV(e)&&o?(s===a?u&&u!==s&&sQ(u,e):a?sQ(a,e):u&&sQ(u,e),e.stopPropagation()):!sF(t,e.target)&&a&&sQ(a,e)}),S=a.onKeyDown,E=s8(i),T=s1(e=>{var r;if(null==S||S(e),e.nativeEvent.isComposing||e.defaultPrevented||!t||!sV(e))return;let{orientation:n,renderedItems:i,activeId:a}=t.getState(),s=sM(t,a);if(null==(r=null==s?void 0:s.element)?void 0:r.isConnected)return;let o="horizontal"!==n,l="vertical"!==n,u=i.some(e=>!!e.rowId);if(("ArrowLeft"===e.key||"ArrowRight"===e.key||"Home"===e.key||"End"===e.key)&&sC(e.currentTarget))return;let c={ArrowUp:(u||o)&&(()=>{if(u){let e=ok(oj(function(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}(i))).find(e=>!e.disabled);return null==e?void 0:e.id}return null==t?void 0:t.last()}),ArrowRight:(u||l)&&t.first,ArrowDown:(u||o)&&t.first,ArrowLeft:(u||l)&&t.last,Home:t.first,End:t.last,PageUp:t.first,PageDown:t.last}[e.key];if(c){let r=c();if(void 0!==r){if(!E(e))return;e.preventDefault(),t.move(r)}}});return a=s5(a,e=>(0,eU.jsx)(om,{value:t,children:e}),[t]),a={"aria-activedescendant":t.useState(e=>{var n;if(t&&r&&e.virtualFocus)return null==(n=sM(t,e.activeId))?void 0:n.id}),...a,ref:s2(o,d,a.ref),onKeyDownCapture:p,onKeyUpCapture:m,onFocusCapture:A,onFocus:x,onBlurCapture:C,onKeyDown:T},a=oN({focusable:t.useState(e=>r&&(e.virtualFocus||null===e.activeId)),...a})});oa(function(e){return oo("div",oK(e))});var oJ=ou();oJ.useContext,oJ.useScopedContext;var oV=oJ.useProviderContext,oQ=ou([oJ.ContextProvider],[oJ.ScopedContextProvider]);oQ.useContext,oQ.useScopedContext;var oW=oQ.useProviderContext,oX=oQ.ContextProvider,o_=oQ.ScopedContextProvider,oZ=(0,eG.createContext)(void 0),oY=(0,eG.createContext)(void 0),oq=ou([oX],[o_]);oq.useContext,oq.useScopedContext;var o$=oq.useProviderContext,o0=oq.ContextProvider,o1=oq.ScopedContextProvider,o2=ol(function(e){let{store:t,...r}=e,n=o$();return t=t||n,r={...r,ref:s2(null==t?void 0:t.setAnchorElement,r.ref)}});oa(function(e){return oo("div",o2(e))});var o9=(0,eG.createContext)(void 0),o3=ou([o0,om],[o1,ov]),o4=o3.useContext,o8=o3.useScopedContext,o5=o3.useProviderContext,o6=o3.ContextProvider,o7=o3.ScopedContextProvider,le=(0,eG.createContext)(void 0),lt=(0,eG.createContext)(!1);function lr(e,t){let r=e.__unstableInternals;return sU(r,"Invalid store"),r[t]}function ln(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];let i=e,a=i,s=Symbol(),o=sR,l=new Set,u=new Set,c=new Set,d=new Set,f=new Set,h=new WeakMap,p=new WeakMap,m=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d;return r.add(t),p.set(t,e),()=>{var e;null==(e=h.get(t))||e(),h.delete(t),p.delete(t),r.delete(t)}},g=function(e,t){var n,o;let l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!sI(i,e))return;let c=(o=i[e],"function"==typeof t?t("function"==typeof o?o():o):t);if(c===i[e])return;if(!l)for(let t of r)null==(n=null==t?void 0:t.setState)||n.call(t,e,c);let m=i;i={...i,[e]:c};let g=Symbol();s=g,u.add(e);let A=(t,r,n)=>{var a;let s=p.get(t);(!s||s.some(t=>n?n.has(t):t===e))&&(null==(a=h.get(t))||a(),h.set(t,t(i,r)))};for(let e of d)A(e,m);queueMicrotask(()=>{if(s!==g)return;let e=i;for(let e of f)A(e,a,u);a=e,u.clear()})},A={getState:()=>i,setState:g,__unstableInternals:{setup:e=>(c.add(e),()=>c.delete(e)),init:()=>{let e=l.size,t=Symbol();l.add(t);let n=()=>{l.delete(t),l.size||o()};if(e)return n;let a=Object.keys(i).map(e=>sP(...r.map(t=>{var r;let n=null==(r=null==t?void 0:t.getState)?void 0:r.call(t);if(n&&sI(n,e))return lo(t,[e],t=>{g(e,t[e],!0)})}))),s=[];for(let e of c)s.push(e());return o=sP(...a,...s,...r.map(la)),n},subscribe:(e,t)=>m(e,t),sync:(e,t)=>(h.set(t,t(i,i)),m(e,t)),batch:(e,t)=>(h.set(t,t(i,a)),m(e,t,f)),pick:e=>ln(function(e,t){let r={};for(let n of t)sI(e,n)&&(r[n]=e[n]);return r}(i,e),A),omit:e=>ln(function(e,t){let r={...e};for(let e of t)sI(r,e)&&delete r[e];return r}(i,e),A)}};return A}function li(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"setup")(...r)}function la(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"init")(...r)}function ls(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"subscribe")(...r)}function lo(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"sync")(...r)}function ll(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"batch")(...r)}function lu(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"omit")(...r)}function lc(){for(var e,t=arguments.length,r=Array(t),n=0;n<t;n++)r[n]=arguments[n];let i={};for(let t of r){let r=null==(e=null==t?void 0:t.getState)?void 0:e.call(t);r&&Object.assign(i,r)}let a=ln(i,...r);return Object.assign({},...r,a)}function ld(e,t){}function lf(e,t,r){if(!r)return!1;let n=e.find(e=>!e.disabled&&e.value);return(null==n?void 0:n.value)===t}function lh(e,t){return!!t&&null!=e&&(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase()))}var lp=ol(function(e){let{store:t,focusable:r=!0,autoSelect:n=!1,getAutoSelectId:i,setValueOnChange:a,showMinLength:s=0,showOnChange:o,showOnMouseDown:l,showOnClick:u=l,showOnKeyDown:c,showOnKeyPress:d=c,blurActiveItemOnClick:f,setValueOnClick:h=!0,moveOnKeyPress:p=!0,autoComplete:m="list",...g}=e,A=o5();sU(t=t||A,!1);let y=(0,eG.useRef)(null),[x,B]=s4(),C=(0,eG.useRef)(!1),S=(0,eG.useRef)(!1),E=t.useState(e=>e.virtualFocus&&n),T="inline"===m||"both"===m,[D,b]=(0,eG.useState)(T);!function(e,t){let r=(0,eG.useRef)(!1);s0(()=>{if(r.current)return e();r.current=!0},t),s0(()=>()=>{r.current=!1},[])}(()=>{T&&b(!0)},[T]);let M=t.useState("value"),w=(0,eG.useRef)();(0,eG.useEffect)(()=>lo(t,["selectedValue","activeId"],(e,t)=>{w.current=t.selectedValue}),[]);let F=t.useState(e=>{var t;if(T&&D){if(e.activeValue&&Array.isArray(e.selectedValue)&&(e.selectedValue.includes(e.activeValue)||(null==(t=w.current)?void 0:t.includes(e.activeValue))))return;return e.activeValue}}),R=t.useState("renderedItems"),I=t.useState("open"),P=t.useState("contentElement"),L=(0,eG.useMemo)(()=>{if(!T||!D)return M;if(lf(R,F,E)){if(lh(M,F)){let e=(null==F?void 0:F.slice(M.length))||"";return M+e}return M}return F||M},[T,D,R,F,E,M]);(0,eG.useEffect)(()=>{let e=y.current;if(!e)return;let t=()=>b(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}},[]),(0,eG.useEffect)(()=>{if(!T||!D||!F||!lf(R,F,E)||!lh(M,F))return;let e=sR;return queueMicrotask(()=>{let t=y.current;if(!t)return;let{start:r,end:n}=sE(t),i=M.length,a=F.length;sb(t,i,a),e=()=>{if(!ob(t))return;let{start:e,end:s}=sE(t);e===i&&s===a&&sb(t,r,n)}}),()=>e()},[x,T,D,F,R,E,M]);let U=(0,eG.useRef)(null),G=s1(i),O=(0,eG.useRef)(null);(0,eG.useEffect)(()=>{if(!I||!P)return;let e=sD(P);if(!e)return;U.current=e;let r=()=>{C.current=!1},n=()=>{if(!t||!C.current)return;let{activeId:e}=t.getState();null!==e&&e!==O.current&&(C.current=!1)},i={passive:!0,capture:!0};return e.addEventListener("wheel",r,i),e.addEventListener("touchmove",r,i),e.addEventListener("scroll",n,i),()=>{e.removeEventListener("wheel",r,!0),e.removeEventListener("touchmove",r,!0),e.removeEventListener("scroll",n,!0)}},[I,P,t]),s0(()=>{M&&(S.current||(C.current=!0))},[M]),s0(()=>{"always"!==E&&I||(C.current=I)},[E,I]);let H=t.useState("resetValueOnSelect");s3(()=>{var e,r;let n=C.current;if(!t||!I||!n&&!H)return;let{baseElement:i,contentElement:a,activeId:s}=t.getState();if(!i||ob(i)){if(null==a?void 0:a.hasAttribute("data-placing")){let e=new MutationObserver(B);return e.observe(a,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(E&&n){let r=G(R),n=void 0!==r?r:null!=(e=function(e){let t=e.find(e=>{var t;return!e.disabled&&(null==(t=e.element)?void 0:t.getAttribute("role"))!=="tab"});return null==t?void 0:t.id}(R))?e:t.first();O.current=n,t.move(null!=n?n:null)}else{let e=null==(r=t.item(s||t.first()))?void 0:r.element;e&&"scrollIntoView"in e&&e.scrollIntoView({block:"nearest",inline:"nearest"})}}},[t,I,x,M,E,H,G,R]),(0,eG.useEffect)(()=>{if(!T)return;let e=y.current;if(!e)return;let r=[e,P].filter(e=>!!e),n=e=>{r.every(t=>sX(e,t))&&(null==t||t.setValue(L))};for(let e of r)e.addEventListener("focusout",n);return()=>{for(let e of r)e.removeEventListener("focusout",n)}},[T,P,t,L]);let N=e=>e.currentTarget.value.length>=s,k=g.onChange,j=s8(null!=o?o:N),z=s8(null!=a?a:!t.tag),K=s1(e=>{if(null==k||k(e),e.defaultPrevented||!t)return;let r=e.currentTarget,{value:n,selectionStart:i,selectionEnd:a}=r,s=e.nativeEvent;if(C.current=!0,"input"===s.type&&(s.isComposing&&(C.current=!1,S.current=!0),T)){let e="insertText"===s.inputType||"insertCompositionText"===s.inputType,t=i===n.length;b(e&&t)}if(z(e)){let e=n===t.getState().value;t.setValue(n),queueMicrotask(()=>{sb(r,i,a)}),T&&E&&e&&B()}j(e)&&t.show(),E&&C.current||t.setActiveId(null)}),J=g.onCompositionEnd,V=s1(e=>{C.current=!0,S.current=!1,null==J||J(e),!e.defaultPrevented&&E&&B()}),Q=g.onMouseDown,W=s8(null!=f?f:()=>!!(null==t?void 0:t.getState().includesBaseElement)),X=s8(h),_=s8(null!=u?u:N),Z=s1(e=>{null==Q||Q(e),e.defaultPrevented||e.button||e.ctrlKey||t&&(W(e)&&t.setActiveId(null),X(e)&&t.setValue(L),_(e)&&s_(e.currentTarget,"mouseup",t.show))}),Y=g.onKeyDown,q=s8(null!=d?d:N),$=s1(e=>{if(null==Y||Y(e),e.repeat||(C.current=!1),e.defaultPrevented||e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||!t)return;let{open:r}=t.getState();!r&&("ArrowUp"===e.key||"ArrowDown"===e.key)&&q(e)&&(e.preventDefault(),t.show())}),ee=g.onBlur,et=s1(e=>{if(C.current=!1,null==ee||ee(e),e.defaultPrevented)return}),er=s9(g.id),en=t.useState(e=>null===e.activeId);return g={id:er,role:"combobox","aria-autocomplete":"inline"===m||"list"===m||"both"===m||"none"===m?m:void 0,"aria-haspopup":sT(P,"listbox"),"aria-expanded":I,"aria-controls":null==P?void 0:P.id,"data-active-item":en||void 0,value:L,...g,ref:s2(y,g.ref),onChange:K,onCompositionEnd:V,onMouseDown:Z,onKeyDown:$,onBlur:et},g=oK({store:t,focusable:r,...g,moveOnKeyPress:e=>!sG(p,e)&&(T&&b(!0),!0)}),{autoComplete:"off",...g=o2({store:t,...g})}}),lm=oa(function(e){return oo("input",lp(e))});function lv(e){let t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}var lg=Symbol("composite-hover"),lA=ol(function(e){let{store:t,focusOnHover:r=!0,blurOnHoverEnd:n=!!r,...i}=e,a=oh();sU(t=t||a,!1);let s=((0,eG.useEffect)(()=>{s7||(sZ("mousemove",on,!0),sZ("mousedown",oi,!0),sZ("mouseup",oi,!0),sZ("keydown",oi,!0),sZ("scroll",oi,!0),s7=!0)},[]),s1(()=>oe)),o=i.onMouseMove,l=s8(r),u=s1(e=>{if((null==o||o(e),!e.defaultPrevented&&s())&&l(e)){if(!oM(e.currentTarget)){let e=null==t?void 0:t.getState().baseElement;e&&!ob(e)&&e.focus()}null==t||t.setActiveId(e.currentTarget.id)}}),c=i.onMouseLeave,d=s8(n),f=s1(e=>{var r;null==c||c(e),!(e.defaultPrevented||!s()||function(e){let t=lv(e);return!!t&&sg(e.currentTarget,t)}(e)||function(e){let t=lv(e);if(!t)return!1;do{if(sI(t,lg)&&t[lg])return!0;t=t.parentElement}while(t)return!1}(e))&&l(e)&&d(e)&&(null==t||t.setActiveId(null),null==(r=null==t?void 0:t.getState().baseElement)||r.focus())}),h=(0,eG.useCallback)(e=>{e&&(e[lg]=!0)},[]);return sH(i={...i,ref:s2(h,i.ref),onMouseMove:u,onMouseLeave:f})});os(oa(function(e){return oo("div",lA(e))}));var ly=ol(function(e){let{store:t,shouldRegisterItem:r=!0,getItem:n=sL,element:i,...a}=e,s=od();t=t||s;let o=s9(a.id),l=(0,eG.useRef)(i);return(0,eG.useEffect)(()=>{let e=l.current;if(!o||!e||!r)return;let i=n({id:o,element:e});return null==t?void 0:t.renderItem(i)},[o,r,n,t]),sH(a={...a,ref:s2(l,a.ref)})});function lx(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return"Enter"===e.key?sy(t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(sy(t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}oa(function(e){return oo("div",ly(e))});var lB=Symbol("command"),lC=ol(function(e){let{clickOnEnter:t=!0,clickOnSpace:r=!0,...n}=e,i=(0,eG.useRef)(null),[a,s]=(0,eG.useState)(!1);(0,eG.useEffect)(()=>{i.current&&s(sy(i.current))},[]);let[o,l]=(0,eG.useState)(!1),u=(0,eG.useRef)(!1),c=sO(n),[d,f]=function(e,t,r){let n=e.onLoadedMetadataCapture,i=(0,eG.useMemo)(()=>Object.assign(()=>{},{...n,[t]:r}),[n,t,r]);return[null==n?void 0:n[t],{onLoadedMetadataCapture:i}]}(n,lB,!0),h=n.onKeyDown,p=s1(e=>{null==h||h(e);let n=e.currentTarget;if(e.defaultPrevented||d||c||!sV(e)||sC(n)||n.isContentEditable)return;let i=t&&"Enter"===e.key,a=r&&" "===e.key,s="Enter"===e.key&&!t,o=" "===e.key&&!r;if(s||o)return void e.preventDefault();if(i||a){let t=lx(e);if(i){if(!t){e.preventDefault();let{view:t,...r}=e,i=()=>sW(n,r);sh&&/firefox\//i.test(navigator.userAgent)?s_(n,"keyup",i):queueMicrotask(i)}}else a&&(u.current=!0,t||(e.preventDefault(),l(!0)))}}),m=n.onKeyUp,g=s1(e=>{if(null==m||m(e),e.defaultPrevented||d||c||e.metaKey)return;let t=r&&" "===e.key;if(u.current&&t&&(u.current=!1,!lx(e))){e.preventDefault(),l(!1);let t=e.currentTarget,{view:r,...n}=e;queueMicrotask(()=>sW(t,n))}});return oN(n={"data-active":o||void 0,type:a?"button":void 0,...f,...n,ref:s2(i,n.ref),onKeyDown:p,onKeyUp:g})});oa(function(e){return oo("button",lC(e))});var{useSyncExternalStore:lS}=e.i(2239).default,lE=()=>()=>{};function lT(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:sL,r=eG.useCallback(t=>e?ls(e,null,t):lE(),[e]),n=()=>{let r="string"==typeof t?t:null,n="function"==typeof t?t:null,i=null==e?void 0:e.getState();return n?n(i):i&&r&&sI(i,r)?i[r]:void 0};return lS(r,n,n)}function lD(e,t){let r=eG.useRef({}),n=eG.useCallback(t=>e?ls(e,null,t):lE(),[e]),i=()=>{let n=null==e?void 0:e.getState(),i=!1,a=r.current;for(let e in t){let r=t[e];if("function"==typeof r){let t=r(n);t!==a[e]&&(a[e]=t,i=!0)}if("string"==typeof r){if(!n||!sI(n,r))continue;let t=n[r];t!==a[e]&&(a[e]=t,i=!0)}}return i&&(r.current={...a}),r.current};return lS(n,i,i)}function lb(e,t,r,n){let i=sI(t,r)?t[r]:void 0,a=function(e){let t=(0,eG.useRef)(e);return s0(()=>{t.current=e}),t}({value:i,setValue:n?t[n]:void 0});s0(()=>lo(e,[r],(e,t)=>{let{value:n,setValue:i}=a.current;i&&e[r]!==t[r]&&e[r]!==n&&i(e[r])}),[e,r]),s0(()=>{if(void 0!==i)return e.setState(r,i),ll(e,[r],()=>{void 0!==i&&e.setState(r,i)})})}function lM(e,t){let[r,n]=eG.useState(()=>e(t));s0(()=>la(r),[r]);let i=eG.useCallback(e=>lT(r,e),[r]);return[eG.useMemo(()=>({...r,useState:i}),[r,i]),s1(()=>{n(r=>e({...t,...r.getState()}))})]}function lw(e,t,r){var n;let i,a,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!t||!r)return;let{renderedItems:o}=t.getState(),l=sD(e);if(!l)return;let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.clientHeight,{top:n}=e.getBoundingClientRect(),i=1.5*Math.max(.875*r,r-40),a=t?r-i+n:i+n;return"HTML"===e.tagName?a+e.scrollTop:a}(l,s);for(let e=0;e<o.length;e+=1){let o=i;if(!(i=r(e)))break;if(i===o)continue;let l=null==(n=sM(t,i))?void 0:n.element;if(!l)continue;let c=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}(l,s)-u,d=Math.abs(c);if(s&&c<=0||!s&&c>=0){void 0!==a&&a<d&&(i=o);break}a=d}return i}var lF=ol(function(e){let{store:t,rowId:r,preventScrollOnKeyDown:n=!1,moveOnKeyPress:i=!0,tabbable:a=!1,getItem:s,"aria-setsize":o,"aria-posinset":l,...u}=e,c=oh();t=t||c;let d=s9(u.id),f=(0,eG.useRef)(null),h=(0,eG.useContext)(oA),p=sO(u)&&!u.accessibleWhenDisabled,{rowId:m,baseElement:g,isActiveItem:A,ariaSetSize:y,ariaPosInSet:x,isTabbable:B}=lD(t,{rowId:e=>r||(e&&(null==h?void 0:h.baseElement)&&h.baseElement===e.baseElement?h.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===d,ariaSetSize:e=>null!=o?o:e&&(null==h?void 0:h.ariaSetSize)&&h.baseElement===e.baseElement?h.ariaSetSize:void 0,ariaPosInSet(e){if(null!=l)return l;if(!e||!(null==h?void 0:h.ariaPosInSet)||h.baseElement!==e.baseElement)return;let t=e.renderedItems.filter(e=>e.rowId===m);return h.ariaPosInSet+t.findIndex(e=>e.id===d)},isTabbable(e){if(!(null==e?void 0:e.renderedItems.length))return!0;if(e.virtualFocus)return!1;if(a)return!0;if(null===e.activeId)return!1;let r=null==t?void 0:t.item(e.activeId);return null!=r&&!!r.disabled||null==r||!r.element||e.activeId===d}}),C=(0,eG.useCallback)(e=>{var t;let r={...e,id:d||e.id,rowId:m,disabled:!!p,children:null==(t=e.element)?void 0:t.textContent};return s?s(r):r},[d,m,p,s]),S=u.onFocus,E=(0,eG.useRef)(!1),T=s1(e=>{var r,n;if(null==S||S(e),e.defaultPrevented||sJ(e)||!d||!t||(r=t,!sV(e)&&sF(r,e.target)))return;let{virtualFocus:i,baseElement:a}=t.getState();if(t.setActiveId(d),sS(e.currentTarget)&&function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(sC(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=sp(e).getSelection();null==r||r.selectAllChildren(e),t&&(null==r||r.collapseToEnd())}}(e.currentTarget),i&&sV(e))!sS(n=e.currentTarget)&&("INPUT"!==n.tagName||sy(n))&&(null==a?void 0:a.isConnected)&&((sK()&&e.currentTarget.hasAttribute("data-autofocus")&&e.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),E.current=!0,e.relatedTarget===a||sF(t,e.relatedTarget))?(a[sw]=!0,a.focus({preventScroll:!0})):a.focus())}),D=u.onBlurCapture,b=s1(e=>{if(null==D||D(e),e.defaultPrevented)return;let r=null==t?void 0:t.getState();(null==r?void 0:r.virtualFocus)&&E.current&&(E.current=!1,e.preventDefault(),e.stopPropagation())}),M=u.onKeyDown,w=s8(n),F=s8(i),R=s1(e=>{if(null==M||M(e),e.defaultPrevented||!sV(e)||!t)return;let{currentTarget:r}=e,n=t.getState(),i=t.item(d),a=!!(null==i?void 0:i.rowId),s="horizontal"!==n.orientation,o="vertical"!==n.orientation,l=()=>!(!a&&!o&&n.baseElement&&sC(n.baseElement)),u={ArrowUp:(a||s)&&t.up,ArrowRight:(a||o)&&t.next,ArrowDown:(a||s)&&t.down,ArrowLeft:(a||o)&&t.previous,Home:()=>{if(l())return!a||e.ctrlKey?null==t?void 0:t.first():null==t?void 0:t.previous(-1)},End:()=>{if(l())return!a||e.ctrlKey?null==t?void 0:t.last():null==t?void 0:t.next(-1)},PageUp:()=>lw(r,t,null==t?void 0:t.up,!0),PageDown:()=>lw(r,t,null==t?void 0:t.down)}[e.key];if(u){if(sS(r)){let t=sE(r),n=o&&"ArrowLeft"===e.key,i=o&&"ArrowRight"===e.key,a=s&&"ArrowUp"===e.key,l=s&&"ArrowDown"===e.key;if(i||l){let{length:e}=function(e){if(sC(e))return e.value;if(e.isContentEditable){let t=sp(e).createRange();return t.selectNodeContents(e),t.toString()}return""}(r);if(t.end!==e)return}else if((n||a)&&0!==t.start)return}let n=u();if(w(e)||void 0!==n){if(!F(e))return;e.preventDefault(),t.move(n)}}}),I=(0,eG.useMemo)(()=>({id:d,baseElement:g}),[d,g]);return u={id:d,"data-active-item":A||void 0,...u=s5(u,e=>(0,eU.jsx)(og.Provider,{value:I,children:e}),[I]),ref:s2(f,u.ref),tabIndex:B?u.tabIndex:-1,onFocus:T,onBlurCapture:b,onKeyDown:R},u=lC(u),sH({...u=ly({store:t,...u,getItem:C,shouldRegisterItem:!!d&&u.shouldRegisterItem}),"aria-setsize":y,"aria-posinset":x})});os(oa(function(e){return oo("button",lF(e))}));var lR=ol(function(e){var t,r;let{store:n,value:i,hideOnClick:a,setValueOnClick:s,selectValueOnClick:o=!0,resetValueOnSelect:l,focusOnHover:u=!1,moveOnKeyPress:c=!0,getItem:d,...f}=e,h=o8();sU(n=n||h,!1);let{resetValueOnSelectState:p,multiSelectable:m,selected:g}=lD(n,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>(function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)})(e.selectedValue,i)}),A=(0,eG.useCallback)(e=>{let t={...e,value:i};return d?d(t):t},[i,d]);s=null!=s?s:!m,a=null!=a?a:null!=i&&!m;let y=f.onClick,x=s8(s),B=s8(o),C=s8(null!=(t=null!=l?l:p)?t:m),S=s8(a),E=s1(e=>{null==y||y(e),!(e.defaultPrevented||function(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return!!e.altKey&&("a"===r||"button"===r&&"submit"===t.type||"input"===r&&"submit"===t.type)}(e))&&!function(e){let t=e.currentTarget;if(!t)return!1;let r=sz();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let n=t.tagName.toLowerCase();return"a"===n||"button"===n&&"submit"===t.type||"input"===n&&"submit"===t.type}(e)&&(null!=i&&(B(e)&&(C(e)&&(null==n||n.resetValue()),null==n||n.setSelectedValue(e=>Array.isArray(e)?e.includes(i)?e.filter(e=>e!==i):[...e,i]:i)),x(e)&&(null==n||n.setValue(i))),S(e)&&(null==n||n.hide()))}),T=f.onKeyDown,D=s1(e=>{if(null==T||T(e),e.defaultPrevented)return;let t=null==n?void 0:n.getState().baseElement;!(!t||ob(t))&&(1===e.key.length||"Backspace"===e.key||"Delete"===e.key)&&(queueMicrotask(()=>t.focus()),sC(t)&&(null==n||n.setValue(t.value)))});m&&null!=g&&(f={"aria-selected":g,...f}),f=s5(f,e=>(0,eU.jsx)(le.Provider,{value:i,children:(0,eU.jsx)(lt.Provider,{value:null!=g&&g,children:e})}),[i,g]),f={role:null!=(r=({menu:"menuitem",listbox:"option",tree:"treeitem"})[(0,eG.useContext)(o9)])?r:"option",children:i,...f,onClick:E,onKeyDown:D};let b=s8(c);return f=lF({store:n,...f,getItem:A,moveOnKeyPress:e=>{if(!b(e))return!1;let t=new Event("combobox-item-move"),r=null==n?void 0:n.getState().baseElement;return null==r||r.dispatchEvent(t),!0}}),f=lA({store:n,focusOnHover:u,...f})}),lI=os(oa(function(e){return oo("div",lR(e))})),lP=e.i(74080);function lL(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function lU(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.join(", ").split(", ").reduce((e,t)=>{let r=t.endsWith("ms")?1:1e3,n=Number.parseFloat(t||"0s")*r;return n>e?n:e},0)}function lG(e,t,r){return!r&&!1!==t&&(!e||!!t)}var lO=ol(function(e){let{store:t,alwaysVisible:r,...n}=e,i=oV();sU(t=t||i,!1);let a=(0,eG.useRef)(null),s=s9(n.id),[o,l]=(0,eG.useState)(null),u=t.useState("open"),c=t.useState("mounted"),d=t.useState("animated"),f=t.useState("contentElement"),h=lT(t.disclosure,"contentElement");s0(()=>{a.current&&(null==t||t.setContentElement(a.current))},[t]),s0(()=>{let e;return null==t||t.setState("animated",t=>(e=t,!0)),()=>{void 0!==e&&(null==t||t.setState("animated",e))}},[t]),s0(()=>{if(d){var e;let t;return(null==f?void 0:f.isConnected)?(e=()=>{l(u?"enter":c?"leave":null)},t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)}),()=>cancelAnimationFrame(t)):void l(null)}},[d,f,u,c]),s0(()=>{if(!t||!d||!o||!f)return;let e=()=>null==t?void 0:t.setState("animating",!1),r=()=>(0,lP.flushSync)(e);if("leave"===o&&u||"enter"===o&&!u)return;if("number"==typeof d)return lL(d,r);let{transitionDuration:n,animationDuration:i,transitionDelay:a,animationDelay:s}=getComputedStyle(f),{transitionDuration:l="0",animationDuration:c="0",transitionDelay:p="0",animationDelay:m="0"}=h?getComputedStyle(h):{},g=lU(a,s,p,m)+lU(n,i,l,c);if(!g){"enter"===o&&t.setState("animated",!1),e();return}return lL(Math.max(g-1e3/60,0),r)},[t,d,f,h,u,o]);let p=lG(c,(n=s5(n,e=>(0,eU.jsx)(o_,{value:t,children:e}),[t])).hidden,r),m=n.style,g=(0,eG.useMemo)(()=>p?{...m,display:"none"}:m,[p,m]);return sH(n={id:s,"data-open":u||void 0,"data-enter":"enter"===o||void 0,"data-leave":"leave"===o||void 0,hidden:p,...n,ref:s2(s?t.setContentElement:null,a,n.ref),style:g})}),lH=oa(function(e){return oo("div",lO(e))});oa(function(e){let{unmountOnHide:t,...r}=e,n=oV();return!1===lT(r.store||n,e=>!t||(null==e?void 0:e.mounted))?null:(0,eU.jsx)(lH,{...r})});var lN=ol(function(e){let{store:t,alwaysVisible:r,...n}=e,i=o8(!0),a=o4(),s=!!(t=t||a)&&t===i;sU(t,!1);let o=(0,eG.useRef)(null),l=s9(n.id),u=t.useState("mounted"),c=lG(u,n.hidden,r),d=c?{...n.style,display:"none"}:n.style,f=t.useState(e=>Array.isArray(e.selectedValue)),h=function(e,t,r){let n=function(e){let[t]=(0,eG.useState)(e);return t}(r),[i,a]=(0,eG.useState)(n);return(0,eG.useEffect)(()=>{let r=e&&"current"in e?e.current:e;if(!r)return;let i=()=>{let e=r.getAttribute(t);a(null==e?n:e)},s=new MutationObserver(i);return s.observe(r,{attributeFilter:[t]}),i(),()=>s.disconnect()},[e,t,n]),i}(o,"role",n.role),p="listbox"===h||"tree"===h||"grid"===h,[m,g]=(0,eG.useState)(!1),A=t.useState("contentElement");s0(()=>{if(!u)return;let e=o.current;if(!e||A!==e)return;let t=()=>{g(!!e.querySelector("[role='listbox']"))},r=new MutationObserver(t);return r.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>r.disconnect()},[u,A]),m||(n={role:"listbox","aria-multiselectable":p&&f||void 0,...n}),n=s5(n,e=>(0,eU.jsx)(o7,{value:t,children:(0,eU.jsx)(o9.Provider,{value:h,children:e})}),[t,h]);let y=!l||i&&s?null:t.setContentElement;return sH(n={id:l,hidden:c,...n,ref:s2(y,o,n.ref),style:d})}),lk=oa(function(e){return oo("div",lN(e))}),lj=(0,eG.createContext)(null),lz=ol(function(e){return{...e,style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px",...e.style}}});oa(function(e){return oo("span",lz(e))});var lK=ol(function(e){return lz(e={"data-focus-trap":"",tabIndex:0,"aria-hidden":!0,...e,style:{position:"fixed",top:0,left:0,...e.style}})}),lJ=oa(function(e){return oo("span",lK(e))});function lV(e){queueMicrotask(()=>{null==e||e.focus()})}var lQ=ol(function(e){let{preserveTabOrder:t,preserveTabOrderAnchor:r,portalElement:n,portalRef:i,portal:a=!0,...s}=e,o=(0,eG.useRef)(null),l=s2(o,s.ref),u=(0,eG.useContext)(lj),[c,d]=(0,eG.useState)(null),[f,h]=(0,eG.useState)(null),p=(0,eG.useRef)(null),m=(0,eG.useRef)(null),g=(0,eG.useRef)(null),A=(0,eG.useRef)(null);return s0(()=>{let e=o.current;if(!e||!a)return void d(null);let t=n?"function"==typeof n?n(e):n:sp(e).createElement("div");if(!t)return void d(null);let r=t.isConnected;if(r||(u||sp(e).body).appendChild(t),t.id||(t.id=e.id?"portal/".concat(e.id):function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"id";return"".concat(e?"".concat(e,"-"):"").concat(Math.random().toString(36).slice(2,8))}()),d(t),sk(i,t),!r)return()=>{t.remove(),sk(i,null)}},[a,n,u,i]),s0(()=>{if(!a||!t||!r)return;let e=sp(r).createElement("span");return e.style.position="fixed",r.insertAdjacentElement("afterend",e),h(e),()=>{e.remove(),h(null)}},[a,t,r]),(0,eG.useEffect)(()=>{if(!c||!t)return;let e=0,r=t=>{if(!sX(t))return;let r="focusin"===t.type;if(cancelAnimationFrame(e),r){let e=c.querySelectorAll("[data-tabindex]"),t=e=>{let t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};for(let r of(c.hasAttribute("data-tabindex")&&t(c),e))t(r);return}e=requestAnimationFrame(()=>{for(let e of oE(c,!0))!function(e){var t;let r=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",r),e.setAttribute("tabindex","-1")}(e)})};return c.addEventListener("focusin",r,!0),c.addEventListener("focusout",r,!0),()=>{cancelAnimationFrame(e),c.removeEventListener("focusin",r,!0),c.removeEventListener("focusout",r,!0)}},[c,t]),s={...s=s5(s,e=>{if(e=(0,eU.jsx)(lj.Provider,{value:c||u,children:e}),!a)return e;if(!c)return(0,eU.jsx)("span",{ref:l,id:s.id,style:{position:"fixed"},hidden:!0});e=(0,eU.jsxs)(eU.Fragment,{children:[t&&c&&(0,eU.jsx)(lJ,{ref:m,"data-focus-trap":s.id,className:"__focus-trap-inner-before",onFocus:e=>{sX(e,c)?lV(oT()):lV(p.current)}}),e,t&&c&&(0,eU.jsx)(lJ,{ref:g,"data-focus-trap":s.id,className:"__focus-trap-inner-after",onFocus:e=>{sX(e,c)?lV(oD()):lV(A.current)}})]}),c&&(e=(0,lP.createPortal)(e,c));let r=(0,eU.jsxs)(eU.Fragment,{children:[t&&c&&(0,eU.jsx)(lJ,{ref:p,"data-focus-trap":s.id,className:"__focus-trap-outer-before",onFocus:e=>{e.relatedTarget!==A.current&&sX(e,c)?lV(m.current):lV(oD())}}),t&&(0,eU.jsx)("span",{"aria-owns":null==c?void 0:c.id,style:{position:"fixed"}}),t&&c&&(0,eU.jsx)(lJ,{ref:A,"data-focus-trap":s.id,className:"__focus-trap-outer-after",onFocus:e=>{if(sX(e,c))lV(g.current);else{let e=oT();if(e===m.current)return void requestAnimationFrame(()=>{var e;return null==(e=oT())?void 0:e.focus()});lV(e)}}})]});return f&&t&&(r=(0,lP.createPortal)(r,f)),(0,eU.jsxs)(eU.Fragment,{children:[r,e]})},[c,u,a,s.id,t,f]),ref:l}});oa(function(e){return oo("div",lQ(e))});var lW=(0,eG.createContext)(0);function lX(e){let{level:t,children:r}=e,n=(0,eG.useContext)(lW),i=Math.max(Math.min(t||n+1,6),1);return(0,eU.jsx)(lW.Provider,{value:i,children:r})}var l_=ol(function(e){let{autoFocusOnShow:t=!0,...r}=e;return s5(r,e=>(0,eU.jsx)(oy.Provider,{value:t,children:e}),[t])});oa(function(e){return oo("div",l_(e))});var lZ=new WeakMap;function lY(e,t,r){lZ.has(e)||lZ.set(e,new Map);let n=lZ.get(e),i=n.get(t);if(!i)return n.set(t,r()),()=>{var e;null==(e=n.get(t))||e(),n.delete(t)};let a=r(),s=()=>{a(),i(),n.delete(t)};return n.set(t,s),()=>{n.get(t)===s&&(a(),n.set(t,i))}}function lq(e,t,r){return lY(e,t,()=>{let n=e.getAttribute(t);return e.setAttribute(t,r),()=>{null==n?e.removeAttribute(t):e.setAttribute(t,n)}})}function l$(e,t,r){return lY(e,t,()=>{let n=t in e,i=e[t];return e[t]=r,()=>{n?e[t]=i:delete e[t]}})}function l0(e,t){return e?lY(e,"style",()=>{let r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}):()=>{}}var l1=["SCRIPT","STYLE"];function l2(e){return"__ariakit-dialog-snapshot-".concat(e)}function l9(e,t,r,n){for(let i of t){if(!(null==i?void 0:i.isConnected))continue;let a=t.some(e=>!!e&&e!==i&&e.contains(i)),s=sp(i),o=i;for(;i.parentElement&&i!==s.body;){if(null==n||n(i.parentElement,o),!a)for(let n of i.parentElement.children)(function(e,t,r){return!l1.includes(t.tagName)&&!!function(e,t){let r=sp(t),n=l2(e);if(!r.body[n])return!0;for(;;){if(t===r.body)return!1;if(t[n])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!r.some(e=>e&&sg(t,e))})(e,n,t)&&r(n,o);i=i.parentElement}}}function l3(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(!e)return!1;let i=e.getAttribute("data-backdrop");return null!=i&&(""===i||"true"===i||!r.length||r.some(e=>i===e))}function l4(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"__ariakit-dialog-".concat(t?"ancestor":"outside").concat(e?"-".concat(e):"")}function l8(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return sP(l$(e,l4("",!0),!0),l$(e,l4(t,!0),!0))}function l5(e,t){if(e[l4(t,!0)])return!0;let r=l4(t);for(;;){if(e[r])return!0;if(!e.parentElement)return!1;e=e.parentElement}}function l6(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return l9(e,t,t=>{l3(t,...n)||r.unshift(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return sP(l$(e,l4(),!0),l$(e,l4(t),!0))}(t,e))},(t,n)=>{n.hasAttribute("data-dialog")&&n.id!==e||r.unshift(l8(t,e))}),()=>{for(let e of r)e()}}function l7(e){let{store:t,type:r,listener:n,capture:i,domReady:a}=e,s=s1(n),o=lT(t,"open"),l=(0,eG.useRef)(!1);s0(()=>{if(!o||!a)return;let{contentElement:e}=t.getState();if(!e)return;let r=()=>{l.current=!0};return e.addEventListener("focusin",r,!0),()=>e.removeEventListener("focusin",r,!0)},[t,o,a]),(0,eG.useEffect)(()=>{if(o)return sZ(r,e=>{let{contentElement:r,disclosureElement:n}=t.getState(),i=e.target;if(r&&i)!(!("HTML"===i.tagName||sg(sp(i).body,i))||sg(r,i)||function(e,t){if(!e)return!1;if(sg(e,t))return!0;let r=t.getAttribute("aria-activedescendant");if(r){let t=sp(e).getElementById(r);if(t)return sg(e,t)}return!1}(n,i)||i.hasAttribute("data-focus-trap")||function(e,t){if(!("clientY"in e))return!1;let r=t.getBoundingClientRect();return 0!==r.width&&0!==r.height&&r.top<=e.clientY&&e.clientY<=r.top+r.height&&r.left<=e.clientX&&e.clientX<=r.left+r.width}(e,r))&&(!l.current||l5(i,r.id))&&(i&&i[oI]||s(e))},i)},[o,i])}function ue(e,t){return"function"==typeof e?e(t):!!e}var ut=(0,eG.createContext)({});function ur(){return"inert"in HTMLElement.prototype}function un(e,t){if(!("style"in e))return sR;if(ur())return l$(e,"inert",!0);let r=oE(e,!0).map(e=>{if(null==t?void 0:t.some(t=>t&&sg(t,e)))return sR;let r=lY(e,"focus",()=>(e.focus=sR,()=>{delete e.focus}));return sP(lq(e,"tabindex","-1"),r)});return sP(...r,lq(e,"aria-hidden","true"),l0(e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}function ui(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=lc(e.store,lu(e.disclosure,["contentElement","disclosureElement"]));ld(e,t);let r=null==t?void 0:t.getState(),n=sN(e.open,null==r?void 0:r.open,e.defaultOpen,!1),i=sN(e.animated,null==r?void 0:r.animated,!1),a=ln({open:n,animated:i,animating:!!i&&n,mounted:n,contentElement:sN(null==r?void 0:r.contentElement,null),disclosureElement:sN(null==r?void 0:r.disclosureElement,null)},t);return li(a,()=>lo(a,["animated","animating"],e=>{e.animated||a.setState("animating",!1)})),li(a,()=>ls(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),li(a,()=>lo(a,["open","animating"],e=>{a.setState("mounted",e.open||e.animating)})),{...a,disclosure:e.disclosure,setOpen:e=>a.setState("open",e),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",e=>!e),stopAnimation:()=>a.setState("animating",!1),setContentElement:e=>a.setState("contentElement",e),setDisclosureElement:e=>a.setState("disclosureElement",e)}}function ua(e,t,r){return s3(t,[r.store,r.disclosure]),lb(e,r,"open","setOpen"),lb(e,r,"mounted","setMounted"),lb(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}ol(function(e){return e});var us=oa(function(e){return oo("div",e)});function uo(e){let{store:t,backdrop:r,alwaysVisible:n,hidden:i}=e,a=(0,eG.useRef)(null),s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[t,r]=lM(ui,e);return ua(t,r,e)}({disclosure:t}),o=lT(t,"contentElement");(0,eG.useEffect)(()=>{let e=a.current;e&&o&&(e.style.zIndex=getComputedStyle(o).zIndex)},[o]),s0(()=>{let e=null==o?void 0:o.id;if(!e)return;let t=a.current;if(t)return l8(t,e)},[o]);let l=lO({ref:a,store:s,role:"presentation","data-backdrop":(null==o?void 0:o.id)||"",alwaysVisible:n,hidden:null!=i?i:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!r)return null;if((0,eG.isValidElement)(r))return(0,eU.jsx)(us,{...l,render:r});let u="boolean"!=typeof r?r:"div";return(0,eU.jsx)(us,{...l,render:(0,eU.jsx)(u,{})})}function ul(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return ui(e)}Object.assign(us,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce((e,t)=>(e[t]=oa(function(e){return oo(t,e)}),e),{}));var uu=sK();function uc(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return null;let r="current"in e?e.current:e;return r?t?oB(r)?r:null:r:null}var ud=ol(function(e){let{store:t,open:r,onClose:n,focusable:i=!0,modal:a=!0,portal:s=!!a,backdrop:o=!!a,hideOnEscape:l=!0,hideOnInteractOutside:u=!0,getPersistentElements:c,preventBodyScroll:d=!!a,autoFocusOnShow:f=!0,autoFocusOnHide:h=!0,initialFocus:p,finalFocus:m,unmountOnHide:g,unstable_treeSnapshotKey:A,...y}=e,x=oW(),B=(0,eG.useRef)(null),C=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[t,r]=lM(ul,e);return ua(t,r,e)}({store:t||x,open:r,setOpen(e){if(e)return;let t=B.current;if(!t)return;let r=new Event("close",{bubbles:!1,cancelable:!0});n&&t.addEventListener("close",n,{once:!0}),t.dispatchEvent(r),r.defaultPrevented&&C.setOpen(!0)}}),{portalRef:S,domReady:E}=s6(s,y.portalRef),T=y.preserveTabOrder,D=lT(C,e=>T&&!a&&e.mounted),b=s9(y.id),M=lT(C,"open"),w=lT(C,"mounted"),F=lT(C,"contentElement"),R=lG(w,y.hidden,y.alwaysVisible),I=function(e){let{attribute:t,contentId:r,contentElement:n,enabled:i}=e,[a,s]=s4(),o=(0,eG.useCallback)(()=>{if(!i||!n)return!1;let{body:e}=sp(n),a=e.getAttribute(t);return!a||a===r},[a,i,n,t,r]);return(0,eG.useEffect)(()=>{if(!i||!r||!n)return;let{body:e}=sp(n);if(o())return e.setAttribute(t,r),()=>e.removeAttribute(t);let a=new MutationObserver(()=>(0,lP.flushSync)(s));return a.observe(e,{attributeFilter:[t]}),()=>a.disconnect()},[a,i,r,n,o,t]),o}({attribute:"data-dialog-prevent-body-scroll",contentElement:F,contentId:b,enabled:d&&!R});(0,eG.useEffect)(()=>{var e,t;if(!I()||!F)return;let r=sp(F),n=sm(F),{documentElement:i,body:a}=r,s=i.style.getPropertyValue("--scrollbar-width"),o=s?Number.parseInt(s,10):n.innerWidth-i.clientWidth,l=Math.round(i.getBoundingClientRect().left)+i.scrollLeft?"paddingLeft":"paddingRight",u=sz()&&!(sh&&navigator.platform.startsWith("Mac")&&!sj());return sP((e="--scrollbar-width",t="".concat(o,"px"),i?lY(i,e,()=>{let r=i.style.getPropertyValue(e);return i.style.setProperty(e,t),()=>{r?i.style.setProperty(e,r):i.style.removeProperty(e)}}):()=>{}),u?(()=>{var e,t;let{scrollX:r,scrollY:i,visualViewport:s}=n,u=null!=(e=null==s?void 0:s.offsetLeft)?e:0,c=null!=(t=null==s?void 0:s.offsetTop)?t:0,d=l0(a,{position:"fixed",overflow:"hidden",top:"".concat(-(i-Math.floor(c)),"px"),left:"".concat(-(r-Math.floor(u)),"px"),right:"0",[l]:"".concat(o,"px")});return()=>{d(),n.scrollTo({left:r,top:i,behavior:"instant"})}})():l0(a,{overflow:"hidden",[l]:"".concat(o,"px")}))},[I,F]);let P=function(e){let t=(0,eG.useRef)();return(0,eG.useEffect)(()=>{if(!e){t.current=null;return}return sZ("mousedown",e=>{t.current=e.target},!0)},[e]),t}(lT(C,"open")),L={store:C,domReady:E,capture:!0};l7({...L,type:"click",listener:e=>{let{contentElement:t}=C.getState(),r=P.current;r&&sB(r)&&l5(r,null==t?void 0:t.id)&&ue(u,e)&&C.hide()}}),l7({...L,type:"focusin",listener:e=>{let{contentElement:t}=C.getState();t&&e.target!==sp(t)&&ue(u,e)&&C.hide()}}),l7({...L,type:"contextmenu",listener:e=>{ue(u,e)&&C.hide()}});let{wrapElement:U,nestedDialogs:G}=function(e){let t=(0,eG.useContext)(ut),[r,n]=(0,eG.useState)([]),i=(0,eG.useCallback)(e=>{var r;return n(t=>[...t,e]),sP(null==(r=t.add)?void 0:r.call(t,e),()=>{n(t=>t.filter(t=>t!==e))})},[t]);s0(()=>lo(e,["open","contentElement"],r=>{var n;if(r.open&&r.contentElement)return null==(n=t.add)?void 0:n.call(t,e)}),[e,t]);let a=(0,eG.useMemo)(()=>({store:e,add:i}),[e,i]);return{wrapElement:(0,eG.useCallback)(e=>(0,eU.jsx)(ut.Provider,{value:a,children:e}),[a]),nestedDialogs:r}}(C);y=s5(y,U,[U]),s0(()=>{if(!M)return;let e=B.current,t=sv(e,!0);t&&"BODY"!==t.tagName&&(e&&sg(e,t)||C.setDisclosureElement(t))},[C,M]),uu&&(0,eG.useEffect)(()=>{if(!w)return;let{disclosureElement:e}=C.getState();if(!e||!sy(e))return;let t=()=>{let t=!1,r=()=>{t=!0};e.addEventListener("focusin",r,{capture:!0,once:!0}),s_(e,"mouseup",()=>{e.removeEventListener("focusin",r,!0),t||ow(e)})};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},[C,w]),(0,eG.useEffect)(()=>{if(!w||!E)return;let e=B.current;if(!e)return;let t=sm(e),r=t.visualViewport||t,n=()=>{var r,n;let i=null!=(n=null==(r=t.visualViewport)?void 0:r.height)?n:t.innerHeight;e.style.setProperty("--dialog-viewport-height","".concat(i,"px"))};return n(),r.addEventListener("resize",n),()=>{r.removeEventListener("resize",n)}},[w,E]),(0,eG.useEffect)(()=>{if(!a||!w||!E)return;let e=B.current;if(e&&!e.querySelector("[data-dialog-dismiss]")){var t=C.hide;let r=sp(e).createElement("button");return r.type="button",r.tabIndex=-1,r.textContent="Dismiss popup",Object.assign(r.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),r.addEventListener("click",t),e.prepend(r),()=>{r.removeEventListener("click",t),r.remove()}}},[C,a,w,E]),s0(()=>{if(!ur()||M||!w||!E)return;let e=B.current;if(e)return un(e)},[M,w,E]);let O=M&&E;s0(()=>{if(!b||!O)return;var e=[B.current];let{body:t}=sp(e[0]),r=[];return l9(b,e,e=>{r.push(l$(e,l2(b),!0))}),sP(l$(t,l2(b),!0),()=>{for(let e of r)e()})},[b,O,A]);let H=s1(c);s0(()=>{if(!b||!O)return;let{disclosureElement:e}=C.getState(),t=[B.current,...H()||[],...G.map(e=>e.getState().contentElement)];return a?sP(l6(b,t),function(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return l9(e,t,e=>{l3(e,...n)||!function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(!e)return!1;let i=e.getAttribute("data-focus-trap");return null!=i&&(!r.length||""!==i&&r.some(e=>i===e))}(e,...n)&&r.unshift(un(e,t))},e=>{e.hasAttribute("role")&&(t.some(t=>t&&sg(t,e))||r.unshift(lq(e,"role","none")))}),()=>{for(let e of r)e()}}(b,t)):l6(b,[e,...t])},[b,C,O,H,G,a,A]);let N=!!f,k=s8(f),[j,z]=(0,eG.useState)(!1);(0,eG.useEffect)(()=>{if(!M||!N||!E||!(null==F?void 0:F.isConnected))return;let e=uc(p,!0)||F.querySelector("[data-autofocus=true],[autofocus]")||function(e,t,r){let[n]=oE(e,t,r);return n||null}(F,!0,s&&D)||F,t=oB(e);k(t?e:null)&&(z(!0),queueMicrotask(()=>{e.focus(),uu&&t&&e.scrollIntoView({block:"nearest",inline:"nearest"})}))},[M,N,E,F,p,s,D,k]);let K=!!h,J=s8(h),[V,Q]=(0,eG.useState)(!1);(0,eG.useEffect)(()=>{if(M)return Q(!0),()=>Q(!1)},[M]);let W=(0,eG.useCallback)(function(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],{disclosureElement:r}=C.getState();if(function(e){let t=sv();return!(!t||e&&sg(e,t))&&!!oB(t)}(e))return;let n=uc(m)||r;if(null==n?void 0:n.id){let e=sp(n),t='[aria-activedescendant="'.concat(n.id,'"]'),r=e.querySelector(t);r&&(n=r)}if(n&&!oB(n)){let e=n.closest("[data-dialog]");if(null==e?void 0:e.id){let t=sp(e),r='[aria-controls~="'.concat(e.id,'"]'),i=t.querySelector(r);i&&(n=i)}}let i=n&&oB(n);if(!i&&t)return void requestAnimationFrame(()=>W(e,!1));J(i?n:null)&&i&&(null==n||n.focus({preventScroll:!0}))},[C,m,J]),X=(0,eG.useRef)(!1);s0(()=>{if(M||!V||!K)return;let e=B.current;X.current=!0,W(e)},[M,V,E,K,W]),(0,eG.useEffect)(()=>{if(!V||!K)return;let e=B.current;return()=>{if(X.current){X.current=!1;return}W(e)}},[V,K,W]);let _=s8(l);(0,eG.useEffect)(()=>{if(E&&w)return sZ("keydown",e=>{if("Escape"!==e.key||e.defaultPrevented)return;let t=B.current;if(!t||l5(t))return;let r=e.target;if(!r)return;let{disclosureElement:n}=C.getState();("BODY"===r.tagName||sg(t,r)||!n||sg(n,r))&&_(e)&&C.hide()},!0)},[C,E,w,_]);let Z=(y=s5(y,e=>(0,eU.jsx)(lX,{level:a?1:void 0,children:e}),[a])).hidden,Y=y.alwaysVisible;y=s5(y,e=>o?(0,eU.jsxs)(eU.Fragment,{children:[(0,eU.jsx)(uo,{store:C,backdrop:o,hidden:Z,alwaysVisible:Y}),e]}):e,[C,o,Z,Y]);let[q,$]=(0,eG.useState)(),[ee,et]=(0,eG.useState)();return y=l_({...y={id:b,"data-dialog":"",role:"dialog",tabIndex:i?-1:void 0,"aria-labelledby":q,"aria-describedby":ee,...y=s5(y,e=>(0,eU.jsx)(o_,{value:C,children:(0,eU.jsx)(oZ.Provider,{value:$,children:(0,eU.jsx)(oY.Provider,{value:et,children:e})})}),[C]),ref:s2(B,y.ref)},autoFocusOnShow:j}),y=lQ({portal:s,...y=oN({...y=lO({store:C,...y}),focusable:i}),portalRef:S,preserveTabOrder:D})});function uf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oW;return oa(function(r){let n=t();return lT(r.store||n,e=>!r.unmountOnHide||(null==e?void 0:e.mounted)||!!r.open)?(0,eU.jsx)(e,{...r}):null})}uf(oa(function(e){return oo("div",ud(e))}),oW);let uh=Math.min,up=Math.max,um=Math.round,uv=Math.floor,ug=e=>({x:e,y:e}),uA={left:"right",right:"left",bottom:"top",top:"bottom"},uy={start:"end",end:"start"};function ux(e,t){return"function"==typeof e?e(t):e}function uB(e){return e.split("-")[0]}function uC(e){return e.split("-")[1]}function uS(e){return"x"===e?"y":"x"}function uE(e){return"y"===e?"height":"width"}let uT=new Set(["top","bottom"]);function uD(e){return uT.has(uB(e))?"y":"x"}function ub(e){return e.replace(/start|end/g,e=>uy[e])}let uM=["left","right"],uw=["right","left"],uF=["top","bottom"],uR=["bottom","top"];function uI(e){return e.replace(/left|right|bottom|top/g,e=>uA[e])}function uP(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function uL(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function uU(e,t,r){let n,{reference:i,floating:a}=e,s=uD(t),o=uS(uD(t)),l=uE(o),u=uB(t),c="y"===s,d=i.x+i.width/2-a.width/2,f=i.y+i.height/2-a.height/2,h=i[l]/2-a[l]/2;switch(u){case"top":n={x:d,y:i.y-a.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:f};break;case"left":n={x:i.x-a.width,y:f};break;default:n={x:i.x,y:i.y}}switch(uC(t)){case"start":n[o]-=h*(r&&c?-1:1);break;case"end":n[o]+=h*(r&&c?-1:1)}return n}let uG=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,o=a.filter(Boolean),l=await (null==s.isRTL?void 0:s.isRTL(t)),u=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=uU(u,n,l),f=n,h={},p=0;for(let r=0;r<o.length;r++){let{name:a,fn:m}=o[r],{x:g,y:A,data:y,reset:x}=await m({x:c,y:d,initialPlacement:n,placement:f,strategy:i,middlewareData:h,rects:u,platform:s,elements:{reference:e,floating:t}});c=null!=g?g:c,d=null!=A?A:d,h={...h,[a]:{...h[a],...y}},x&&p<=50&&(p++,"object"==typeof x&&(x.placement&&(f=x.placement),x.rects&&(u=!0===x.rects?await s.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:c,y:d}=uU(u,f,l)),r=-1)}return{x:c,y:d,placement:f,strategy:i,middlewareData:h}};async function uO(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:a,rects:s,elements:o,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:h=0}=ux(t,e),p=uP(h),m=o[f?"floating"===d?"reference":"floating":d],g=uL(await a.getClippingRect({element:null==(r=await (null==a.isElement?void 0:a.isElement(m)))||r?m:m.contextElement||await (null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:u,rootBoundary:c,strategy:l})),A="floating"===d?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,y=await (null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),x=await (null==a.isElement?void 0:a.isElement(y))&&await (null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},B=uL(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:A,offsetParent:y,strategy:l}):A);return{top:(g.top-B.top+p.top)/x.y,bottom:(B.bottom-g.bottom+p.bottom)/x.y,left:(g.left-B.left+p.left)/x.x,right:(B.right-g.right+p.right)/x.x}}let uH=new Set(["left","top"]);async function uN(e,t){let{placement:r,platform:n,elements:i}=e,a=await (null==n.isRTL?void 0:n.isRTL(i.floating)),s=uB(r),o=uC(r),l="y"===uD(r),u=uH.has(s)?-1:1,c=a&&l?-1:1,d=ux(t,e),{mainAxis:f,crossAxis:h,alignmentAxis:p}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return o&&"number"==typeof p&&(h="end"===o?-1*p:p),l?{x:h*c,y:f*u}:{x:f*u,y:h*c}}function uk(){return"undefined"!=typeof window}function uj(e){return uJ(e)?(e.nodeName||"").toLowerCase():"#document"}function uz(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function uK(e){var t;return null==(t=(uJ(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function uJ(e){return!!uk()&&(e instanceof Node||e instanceof uz(e).Node)}function uV(e){return!!uk()&&(e instanceof Element||e instanceof uz(e).Element)}function uQ(e){return!!uk()&&(e instanceof HTMLElement||e instanceof uz(e).HTMLElement)}function uW(e){return!!uk()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof uz(e).ShadowRoot)}let uX=new Set(["inline","contents"]);function u_(e){let{overflow:t,overflowX:r,overflowY:n,display:i}=u8(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!uX.has(i)}let uZ=new Set(["table","td","th"]),uY=[":popover-open",":modal"];function uq(e){return uY.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let u$=["transform","translate","scale","rotate","perspective"],u0=["transform","translate","scale","rotate","perspective","filter"],u1=["paint","layout","strict","content"];function u2(e){let t=u9(),r=uV(e)?u8(e):e;return u$.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||u0.some(e=>(r.willChange||"").includes(e))||u1.some(e=>(r.contain||"").includes(e))}function u9(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let u3=new Set(["html","body","#document"]);function u4(e){return u3.has(uj(e))}function u8(e){return uz(e).getComputedStyle(e)}function u5(e){return uV(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function u6(e){if("html"===uj(e))return e;let t=e.assignedSlot||e.parentNode||uW(e)&&e.host||uK(e);return uW(t)?t.host:t}function u7(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);let i=function e(t){let r=u6(t);return u4(r)?t.ownerDocument?t.ownerDocument.body:t.body:uQ(r)&&u_(r)?r:e(r)}(e),a=i===(null==(n=e.ownerDocument)?void 0:n.body),s=uz(i);if(a){let e=ce(s);return t.concat(s,s.visualViewport||[],u_(i)?i:[],e&&r?u7(e):[])}return t.concat(i,u7(i,[],r))}function ce(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ct(e){let t=u8(e),r=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=uQ(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,o=um(r)!==a||um(n)!==s;return o&&(r=a,n=s),{width:r,height:n,$:o}}function cr(e){return uV(e)?e:e.contextElement}function cn(e){let t=cr(e);if(!uQ(t))return ug(1);let r=t.getBoundingClientRect(),{width:n,height:i,$:a}=ct(t),s=(a?um(r.width):r.width)/n,o=(a?um(r.height):r.height)/i;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}let ci=ug(0);function ca(e){let t=uz(e);return u9()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ci}function cs(e,t,r,n){var i;void 0===t&&(t=!1),void 0===r&&(r=!1);let a=e.getBoundingClientRect(),s=cr(e),o=ug(1);t&&(n?uV(n)&&(o=cn(n)):o=cn(e));let l=(void 0===(i=r)&&(i=!1),n&&(!i||n===uz(s))&&i)?ca(s):ug(0),u=(a.left+l.x)/o.x,c=(a.top+l.y)/o.y,d=a.width/o.x,f=a.height/o.y;if(s){let e=uz(s),t=n&&uV(n)?uz(n):n,r=e,i=ce(r);for(;i&&n&&t!==r;){let e=cn(i),t=i.getBoundingClientRect(),n=u8(i),a=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,s=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;u*=e.x,c*=e.y,d*=e.x,f*=e.y,u+=a,c+=s,i=ce(r=uz(i))}}return uL({width:d,height:f,x:u,y:c})}function co(e,t){let r=u5(e).scrollLeft;return t?t.left+r:cs(uK(e)).left+r}function cl(e,t){let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-co(e,r),y:r.top+t.scrollTop}}let cu=new Set(["absolute","fixed"]);function cc(e,t,r){let n;if("viewport"===t)n=function(e,t){let r=uz(e),n=uK(e),i=r.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(i){a=i.width,s=i.height;let e=u9();(!e||e&&"fixed"===t)&&(o=i.offsetLeft,l=i.offsetTop)}let u=co(n);if(u<=0){let e=n.ownerDocument,t=e.body,r=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(r.marginLeft)+parseFloat(r.marginRight)||0,s=Math.abs(n.clientWidth-t.clientWidth-i);s<=25&&(a-=s)}else u<=25&&(a+=u);return{width:a,height:s,x:o,y:l}}(e,r);else if("document"===t)n=function(e){let t=uK(e),r=u5(e),n=e.ownerDocument.body,i=up(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),a=up(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-r.scrollLeft+co(e),o=-r.scrollTop;return"rtl"===u8(n).direction&&(s+=up(t.clientWidth,n.clientWidth)-i),{width:i,height:a,x:s,y:o}}(uK(e));else if(uV(t))n=function(e,t){let r=cs(e,!0,"fixed"===t),n=r.top+e.clientTop,i=r.left+e.clientLeft,a=uQ(e)?cn(e):ug(1),s=e.clientWidth*a.x,o=e.clientHeight*a.y;return{width:s,height:o,x:i*a.x,y:n*a.y}}(t,r);else{let r=ca(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return uL(n)}function cd(e){return"static"===u8(e).position}function cf(e,t){if(!uQ(e)||"fixed"===u8(e).position)return null;if(t)return t(e);let r=e.offsetParent;return uK(e)===r&&(r=r.ownerDocument.body),r}function ch(e,t){var r;let n=uz(e);if(uq(e))return n;if(!uQ(e)){let t=u6(e);for(;t&&!u4(t);){if(uV(t)&&!cd(t))return t;t=u6(t)}return n}let i=cf(e,t);for(;i&&(r=i,uZ.has(uj(r)))&&cd(i);)i=cf(i,t);return i&&u4(i)&&cd(i)&&!u2(i)?n:i||function(e){let t=u6(e);for(;uQ(t)&&!u4(t);){if(u2(t))return t;if(uq(t))break;t=u6(t)}return null}(e)||n}let cp=async function(e){let t=this.getOffsetParent||ch,r=this.getDimensions,n=await r(e.floating);return{reference:function(e,t,r){let n=uQ(t),i=uK(t),a="fixed"===r,s=cs(e,!0,a,t),o={scrollLeft:0,scrollTop:0},l=ug(0);if(n||!n&&!a)if(("body"!==uj(t)||u_(i))&&(o=u5(t)),n){let e=cs(t,!0,a,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&(l.x=co(i));a&&!n&&i&&(l.x=co(i));let u=!i||n||a?ug(0):cl(i,o);return{x:s.left+o.scrollLeft-l.x-u.x,y:s.top+o.scrollTop-l.y-u.y,width:s.width,height:s.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},cm={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e,a="fixed"===i,s=uK(n),o=!!t&&uq(t.floating);if(n===s||o&&a)return r;let l={scrollLeft:0,scrollTop:0},u=ug(1),c=ug(0),d=uQ(n);if((d||!d&&!a)&&(("body"!==uj(n)||u_(s))&&(l=u5(n)),uQ(n))){let e=cs(n);u=cn(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}let f=!s||d||a?ug(0):cl(s,l);return{width:r.width*u.x,height:r.height*u.y,x:r.x*u.x-l.scrollLeft*u.x+c.x+f.x,y:r.y*u.y-l.scrollTop*u.y+c.y+f.y}},getDocumentElement:uK,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e,a=[..."clippingAncestors"===r?uq(t)?[]:function(e,t){let r=t.get(e);if(r)return r;let n=u7(e,[],!1).filter(e=>uV(e)&&"body"!==uj(e)),i=null,a="fixed"===u8(e).position,s=a?u6(e):e;for(;uV(s)&&!u4(s);){let t=u8(s),r=u2(s);r||"fixed"!==t.position||(i=null),(a?!r&&!i:!r&&"static"===t.position&&!!i&&cu.has(i.position)||u_(s)&&!r&&function e(t,r){let n=u6(t);return!(n===r||!uV(n)||u4(n))&&("fixed"===u8(n).position||e(n,r))}(e,s))?n=n.filter(e=>e!==s):i=t,s=u6(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=a[0],o=a.reduce((e,r)=>{let n=cc(t,r,i);return e.top=up(n.top,e.top),e.right=uh(n.right,e.right),e.bottom=uh(n.bottom,e.bottom),e.left=up(n.left,e.left),e},cc(t,s,i));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:ch,getElementRects:cp,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=ct(e);return{width:t,height:r}},getScale:cn,isElement:uV,isRTL:function(e){return"rtl"===u8(e).direction}};function cv(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cg(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if("function"==typeof DOMRect)return new DOMRect(e,t,r,n);let i={x:e,y:t,width:r,height:n,top:t,right:e+r,bottom:t+n,left:e};return{...i,toJSON:()=>i}}function cA(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function cy(e){let t=window.devicePixelRatio||1;return Math.round(e*t)/t}var cx=ol(function(e){let{store:t,modal:r=!1,portal:n=!!r,preserveTabOrder:i=!0,autoFocusOnShow:a=!0,wrapperProps:s,fixed:o=!1,flip:l=!0,shift:u=0,slide:c=!0,overlap:d=!1,sameWidth:f=!1,fitViewport:h=!1,gutter:p,arrowPadding:m=4,overflowPadding:g=8,getAnchorRect:A,updatePosition:y,...x}=e,B=o$();sU(t=t||B,!1);let C=t.useState("arrowElement"),S=t.useState("anchorElement"),E=t.useState("disclosureElement"),T=t.useState("popoverElement"),D=t.useState("contentElement"),b=t.useState("placement"),M=t.useState("mounted"),w=t.useState("rendered"),F=(0,eG.useRef)(null),[R,I]=(0,eG.useState)(!1),{portalRef:P,domReady:L}=s6(n,x.portalRef),U=s1(A),G=s1(y),O=!!y;s0(()=>{if(!(null==T?void 0:T.isConnected))return;T.style.setProperty("--popover-overflow-padding","".concat(g,"px"));let e={contextElement:S||void 0,getBoundingClientRect:()=>{let e=null==U?void 0:U(S);if(e||!S){if(!e)return cg();let{x:t,y:r,width:n,height:i}=e;return cg(t,r,n,i)}return S.getBoundingClientRect()}},r=async()=>{var r,n,i,a;if(!M)return;C||(F.current=F.current||document.createElement("div"));let s=C||F.current,A=[(r={gutter:p,shift:u},void 0===(n=e=>{var t;let{placement:n}=e,i=((null==s?void 0:s.clientHeight)||0)/2,a="number"==typeof r.gutter?r.gutter+i:null!=(t=r.gutter)?t:i;return{crossAxis:n.split("-")[1]?void 0:r.shift,mainAxis:a,alignmentAxis:r.shift}})&&(n=0),{name:"offset",options:n,async fn(e){var t,r;let{x:i,y:a,placement:s,middlewareData:o}=e,l=await uN(e,n);return s===(null==(t=o.offset)?void 0:t.placement)&&null!=(r=o.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:a+l.y,data:{...l,placement:s}}}}),function(e){var t;if(!1===e.flip)return;let r="string"==typeof e.flip?e.flip.split(" "):void 0;return sU(!r||r.every(cA),!1),{name:"flip",options:t={padding:e.overflowPadding,fallbackPlacements:r},async fn(e){var r,n,i,a,s;let{placement:o,middlewareData:l,rects:u,initialPlacement:c,platform:d,elements:f}=e,{mainAxis:h=!0,crossAxis:p=!0,fallbackPlacements:m,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:A="none",flipAlignment:y=!0,...x}=ux(t,e);if(null!=(r=l.arrow)&&r.alignmentOffset)return{};let B=uB(o),C=uD(c),S=uB(c)===c,E=await (null==d.isRTL?void 0:d.isRTL(f.floating)),T=m||(S||!y?[uI(c)]:function(e){let t=uI(e);return[ub(e),t,ub(t)]}(c)),D="none"!==A;!m&&D&&T.push(...function(e,t,r,n){let i=uC(e),a=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?uw:uM;return t?uM:uw;case"left":case"right":return t?uF:uR;default:return[]}}(uB(e),"start"===r,n);return i&&(a=a.map(e=>e+"-"+i),t&&(a=a.concat(a.map(ub)))),a}(c,y,A,E));let b=[c,...T],M=await uO(e,x),w=[],F=(null==(n=l.flip)?void 0:n.overflows)||[];if(h&&w.push(M[B]),p){let e=function(e,t,r){void 0===r&&(r=!1);let n=uC(e),i=uS(uD(e)),a=uE(i),s="x"===i?n===(r?"end":"start")?"right":"left":"start"===n?"bottom":"top";return t.reference[a]>t.floating[a]&&(s=uI(s)),[s,uI(s)]}(o,u,E);w.push(M[e[0]],M[e[1]])}if(F=[...F,{placement:o,overflows:w}],!w.every(e=>e<=0)){let e=((null==(i=l.flip)?void 0:i.index)||0)+1,t=b[e];if(t&&("alignment"!==p||C===uD(t)||F.every(e=>uD(e.placement)!==C||e.overflows[0]>0)))return{data:{index:e,overflows:F},reset:{placement:t}};let r=null==(a=F.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:a.placement;if(!r)switch(g){case"bestFit":{let e=null==(s=F.filter(e=>{if(D){let t=uD(e.placement);return t===C||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:s[0];e&&(r=e);break}case"initialPlacement":r=c}if(o!==r)return{reset:{placement:r}}}return{}}}}({flip:l,overflowPadding:g}),function(e){if(e.slide||e.overlap){var t,r;return{name:"shift",options:r={mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:(void 0===t&&(t={}),{options:t,fn(e){let{x:r,y:n,placement:i,rects:a,middlewareData:s}=e,{offset:o=0,mainAxis:l=!0,crossAxis:u=!0}=ux(t,e),c={x:r,y:n},d=uD(i),f=uS(d),h=c[f],p=c[d],m=ux(o,e),g="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){let e="y"===f?"height":"width",t=a.reference[f]-a.floating[e]+g.mainAxis,r=a.reference[f]+a.reference[e]-g.mainAxis;h<t?h=t:h>r&&(h=r)}if(u){var A,y;let e="y"===f?"width":"height",t=uH.has(uB(i)),r=a.reference[d]-a.floating[e]+(t&&(null==(A=s.offset)?void 0:A[d])||0)+(t?0:g.crossAxis),n=a.reference[d]+a.reference[e]+(t?0:(null==(y=s.offset)?void 0:y[d])||0)-(t?g.crossAxis:0);p<r?p=r:p>n&&(p=n)}return{[f]:h,[d]:p}}})},async fn(e){let{x:t,y:n,placement:i}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:o={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...l}=ux(r,e),u={x:t,y:n},c=await uO(e,l),d=uD(uB(i)),f=uS(d),h=u[f],p=u[d];if(a){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",r=h+c[e],n=h-c[t];h=up(r,uh(h,n))}if(s){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",r=p+c[e],n=p-c[t];p=up(r,uh(p,n))}let m=o.fn({...e,[f]:h,[d]:p});return{...m,data:{x:m.x-t,y:m.y-n,enabled:{[f]:a,[d]:s}}}}}}}({slide:c,shift:u,overlap:d,overflowPadding:g}),function(e,t){if(e){let r;return{name:"arrow",options:r={element:e,padding:t.arrowPadding},async fn(e){let{x:t,y:n,placement:i,rects:a,platform:s,elements:o,middlewareData:l}=e,{element:u,padding:c=0}=ux(r,e)||{};if(null==u)return{};let d=uP(c),f={x:t,y:n},h=uS(uD(i)),p=uE(h),m=await s.getDimensions(u),g="y"===h,A=g?"clientHeight":"clientWidth",y=a.reference[p]+a.reference[h]-f[h]-a.floating[p],x=f[h]-a.reference[h],B=await (null==s.getOffsetParent?void 0:s.getOffsetParent(u)),C=B?B[A]:0;C&&await (null==s.isElement?void 0:s.isElement(B))||(C=o.floating[A]||a.floating[p]);let S=C/2-m[p]/2-1,E=uh(d[g?"top":"left"],S),T=uh(d[g?"bottom":"right"],S),D=C-m[p]-T,b=C/2-m[p]/2+(y/2-x/2),M=up(E,uh(b,D)),w=!l.arrow&&null!=uC(i)&&b!==M&&a.reference[p]/2-(b<E?E:T)-m[p]/2<0,F=w?b<E?b-E:b-D:0;return{[h]:f[h]+F,data:{[h]:M,centerOffset:b-M-F,...w&&{alignmentOffset:F}},reset:w}}}}}(s,{arrowPadding:m}),{name:"size",options:a={padding:(i={sameWidth:f,fitViewport:h,overflowPadding:g}).overflowPadding,apply(e){let{elements:t,availableWidth:r,availableHeight:n,rects:a}=e,s=t.floating,o=Math.round(a.reference.width);r=Math.floor(r),n=Math.floor(n),s.style.setProperty("--popover-anchor-width","".concat(o,"px")),s.style.setProperty("--popover-available-width","".concat(r,"px")),s.style.setProperty("--popover-available-height","".concat(n,"px")),i.sameWidth&&(s.style.width="".concat(o,"px")),i.fitViewport&&(s.style.maxWidth="".concat(r,"px"),s.style.maxHeight="".concat(n,"px"))}},async fn(e){var t,r;let n,i,{placement:s,rects:o,platform:l,elements:u}=e,{apply:c=()=>{},...d}=ux(a,e),f=await uO(e,d),h=uB(s),p=uC(s),m="y"===uD(s),{width:g,height:A}=o.floating;"top"===h||"bottom"===h?(n=h,i=p===(await (null==l.isRTL?void 0:l.isRTL(u.floating))?"start":"end")?"left":"right"):(i=h,n="end"===p?"top":"bottom");let y=A-f.top-f.bottom,x=g-f.left-f.right,B=uh(A-f[n],y),C=uh(g-f[i],x),S=!e.middlewareData.shift,E=B,T=C;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(T=x),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(E=y),S&&!p){let e=up(f.left,0),t=up(f.right,0),r=up(f.top,0),n=up(f.bottom,0);m?T=g-2*(0!==e||0!==t?e+t:up(f.left,f.right)):E=A-2*(0!==r||0!==n?r+n:up(f.top,f.bottom))}await c({...e,availableWidth:T,availableHeight:E});let D=await l.getDimensions(u.floating);return g!==D.width||A!==D.height?{reset:{rects:!0}}:{}}}],y=await ((e,t,r)=>{let n=new Map,i={platform:cm,...r},a={...i.platform,_c:n};return uG(e,t,{...i,platform:a})})(e,T,{placement:b,strategy:o?"fixed":"absolute",middleware:A});null==t||t.setState("currentPlacement",y.placement),I(!0);let x=cy(y.x),B=cy(y.y);if(Object.assign(T.style,{top:"0",left:"0",transform:"translate3d(".concat(x,"px,").concat(B,"px,0)")}),s&&y.middlewareData.arrow){let{x:e,y:t}=y.middlewareData.arrow,r=y.placement.split("-")[0],n=s.clientWidth/2,i=s.clientHeight/2,a=null!=e?e+n:-n,o=null!=t?t+i:-i;T.style.setProperty("--popover-transform-origin",{top:"".concat(a,"px calc(100% + ").concat(i,"px)"),bottom:"".concat(a,"px ").concat(-i,"px"),left:"calc(100% + ".concat(n,"px) ").concat(o,"px"),right:"".concat(-n,"px ").concat(o,"px")}[r]),Object.assign(s.style,{left:null!=e?"".concat(e,"px"):"",top:null!=t?"".concat(t,"px"):"",[r]:"100%"})}},n=function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:a=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=cr(e),d=a||s?[...c?u7(c):[],...u7(t)]:[];d.forEach(e=>{a&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)});let f=c&&l?function(e,t){let r,n=null,i=uK(e);function a(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function s(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();let u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:h}=u;if(o||t(),!f||!h)return;let p=uv(d),m=uv(i.clientWidth-(c+f)),g={rootMargin:-p+"px "+-m+"px "+-uv(i.clientHeight-(d+h))+"px "+-uv(c)+"px",threshold:up(0,uh(1,l))||1},A=!0;function y(t){let n=t[0].intersectionRatio;if(n!==l){if(!A)return s();n?s(!1,n):r=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==n||cv(u,e.getBoundingClientRect())||s(),A=!1}try{n=new IntersectionObserver(y,{...g,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(y,g)}n.observe(e)}(!0),a}(c,r):null,h=-1,p=null;o&&(p=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&p&&(p.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var e;null==(e=p)||e.observe(t)})),r()}),c&&!u&&p.observe(c),p.observe(t));let m=u?cs(e):null;return u&&function t(){let n=cs(e);m&&!cv(m,n)&&r(),m=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)}),null==f||f(),null==(e=p)||e.disconnect(),p=null,u&&cancelAnimationFrame(i)}}(e,T,async()=>{O?(await G({updatePosition:r}),I(!0)):await r()},{elementResize:"function"==typeof ResizeObserver});return()=>{I(!1),n()}},[t,w,T,C,S,T,b,M,L,o,l,u,c,d,f,h,p,m,g,U,O,G]),s0(()=>{if(!M||!L||!(null==T?void 0:T.isConnected)||!(null==D?void 0:D.isConnected))return;let e=()=>{T.style.zIndex=getComputedStyle(D).zIndex};e();let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)},[M,L,T,D]);let H=o?"fixed":"absolute";return x=s5(x,e=>(0,eU.jsx)("div",{...s,style:{position:H,top:0,left:0,width:"max-content",...null==s?void 0:s.style},ref:null==t?void 0:t.setPopoverElement,children:e}),[t,H,s]),x={"data-placing":!R||void 0,...x=s5(x,e=>(0,eU.jsx)(o1,{value:t,children:e}),[t]),style:{position:"relative",...x.style}},x=ud({store:t,modal:r,portal:n,preserveTabOrder:i,preserveTabOrderAnchor:E||S,autoFocusOnShow:R&&a,...x,portalRef:P})});uf(oa(function(e){return oo("div",cx(e))}),o$);var cB=ol(function(e){let{store:t,modal:r,tabIndex:n,alwaysVisible:i,autoFocusOnHide:a=!0,hideOnInteractOutside:s=!0,...o}=e,l=o5();sU(t=t||l,!1);let u=t.useState("baseElement"),c=(0,eG.useRef)(!1),d=lT(t.tag,e=>null==e?void 0:e.renderedItems.length);return o=lN({store:t,alwaysVisible:i,...o}),o=cx({store:t,modal:r,alwaysVisible:i,backdrop:!1,autoFocusOnShow:!1,finalFocus:u,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:d,...o,getPersistentElements(){var e;let n=(null==(e=o.getPersistentElements)?void 0:e.call(o))||[];if(!r||!t)return n;let{contentElement:i,baseElement:a}=t.getState();if(!a)return n;let s=sp(a),l=[];if((null==i?void 0:i.id)&&l.push('[aria-controls~="'.concat(i.id,'"]')),(null==a?void 0:a.id)&&l.push('[aria-controls~="'.concat(a.id,'"]')),!l.length)return[...n,a];let u=l.join(",");return[...n,...s.querySelectorAll(u)]},autoFocusOnHide:e=>!sG(a,e)&&(!c.current||(c.current=!1,!1)),hideOnInteractOutside(e){var r,n;let i=null==t?void 0:t.getState(),a=null==(r=null==i?void 0:i.contentElement)?void 0:r.id,o=null==(n=null==i?void 0:i.baseElement)?void 0:n.id;if(function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(!e)return!1;if("id"in e){let t=r.filter(Boolean).map(e=>'[aria-controls~="'.concat(e,'"]')).join(", ");return!!t&&e.matches(t)}return!1}(e.target,a,o))return!1;let l="function"==typeof s?s(e):s;return l&&(c.current="click"===e.type),l}})}),cC=uf(oa(function(e){return oo("div",cB(e))}),o5);(0,eG.createContext)(null),(0,eG.createContext)(null);var cS=ou([om],[ov]),cE=cS.useContext;cS.useScopedContext,cS.useProviderContext,cS.ContextProvider,cS.ScopedContextProvider;var cT={id:null};function cD(e,t){return e.find(e=>t?!e.disabled&&e.id!==t:!e.disabled)}function cb(e,t){return e.filter(e=>e.rowId===t)}function cM(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}function cw(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}var cF=sK()&&sj();function cR(){let{tag:e,...t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=lc(t.store,function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return lr(e,"pick")(...r)}(e,["value","rtl"]));ld(t,r);let n=null==e?void 0:e.getState(),i=null==r?void 0:r.getState(),a=sN(t.activeId,null==i?void 0:i.activeId,t.defaultActiveId,null),s=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=null==(e=t.store)?void 0:e.getState(),n=function(){var e,t;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ld(r,r.store);let n=null==(e=r.store)?void 0:e.getState(),i=sN(r.items,null==n?void 0:n.items,r.defaultItems,[]),a=new Map(i.map(e=>[e.id,e])),s={items:i,renderedItems:sN(null==n?void 0:n.renderedItems,[])},o=null==(t=r.store)?void 0:t.__unstablePrivateStore,l=ln({items:i,renderedItems:s.renderedItems},o),u=ln(s,r.store),c=e=>{let t=function(e,t){let r=e.map((e,t)=>[t,e]),n=!1;return(r.sort((e,r)=>{var i;let[a,s]=e,[o,l]=r,u=t(s),c=t(l);return u!==c&&u&&c?(i=u,c.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_PRECEDING)?(a>o&&(n=!0),-1):(a<o&&(n=!0),1):0}),n)?r.map(e=>{let[t,r]=e;return r}):e}(e,e=>e.element);l.setState("renderedItems",t),u.setState("renderedItems",t)};li(u,()=>la(l)),li(l,()=>ll(l,["items"],e=>{u.setState("items",e.items)})),li(l,()=>ll(l,["renderedItems"],e=>{let t=!0,r=requestAnimationFrame(()=>{let{renderedItems:t}=u.getState();e.renderedItems!==t&&c(e.renderedItems)});if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(r);let n=new IntersectionObserver(()=>{if(t){t=!1;return}cancelAnimationFrame(r),r=requestAnimationFrame(()=>c(e.renderedItems))},{root:function(e){var t;let r=e.find(e=>!!e.element),n=[...e].reverse().find(e=>!!e.element),i=null==(t=null==r?void 0:r.element)?void 0:t.parentElement;for(;i&&(null==n?void 0:n.element);){let e=i;if(n&&e.contains(n.element))return i;i=i.parentElement}return sp(i).body}(e.renderedItems)});for(let t of e.renderedItems)t.element&&n.observe(t.element);return()=>{cancelAnimationFrame(r),n.disconnect()}}));let d=function(e,t){let r,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t(t=>{let n=t.findIndex(t=>{let{id:r}=t;return r===e.id}),i=t.slice();if(-1!==n){let s={...r=t[n],...e};i[n]=s,a.set(e.id,s)}else i.push(e),a.set(e.id,e);return i}),()=>{t(t=>{if(!r)return n&&a.delete(e.id),t.filter(t=>{let{id:r}=t;return r!==e.id});let i=t.findIndex(t=>{let{id:r}=t;return r===e.id});if(-1===i)return t;let s=t.slice();return s[i]=r,a.set(e.id,r),s})}},f=e=>d(e,e=>l.setState("items",e),!0);return{...u,registerItem:f,renderItem:e=>sP(f(e),d(e,e=>l.setState("renderedItems",e))),item:e=>{if(!e)return null;let t=a.get(e);if(!t){let{items:r}=l.getState();(t=r.find(t=>t.id===e))&&a.set(e,t)}return t||null},__unstablePrivateStore:l}}(t),i=sN(t.activeId,null==r?void 0:r.activeId,t.defaultActiveId),a=ln({...n.getState(),id:sN(t.id,null==r?void 0:r.id,"id-".concat(Math.random().toString(36).slice(2,8))),activeId:i,baseElement:sN(null==r?void 0:r.baseElement,null),includesBaseElement:sN(t.includesBaseElement,null==r?void 0:r.includesBaseElement,null===i),moves:sN(null==r?void 0:r.moves,0),orientation:sN(t.orientation,null==r?void 0:r.orientation,"both"),rtl:sN(t.rtl,null==r?void 0:r.rtl,!1),virtualFocus:sN(t.virtualFocus,null==r?void 0:r.virtualFocus,!1),focusLoop:sN(t.focusLoop,null==r?void 0:r.focusLoop,!1),focusWrap:sN(t.focusWrap,null==r?void 0:r.focusWrap,!1),focusShift:sN(t.focusShift,null==r?void 0:r.focusShift,!1)},n,t.store);li(a,()=>lo(a,["renderedItems","activeId"],e=>{a.setState("activeId",t=>{var r;return void 0!==t?t:null==(r=cD(e.renderedItems))?void 0:r.id})}));let s=function(){var e,t;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"next",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=a.getState(),{skip:s=0,activeId:o=i.activeId,focusShift:l=i.focusShift,focusLoop:u=i.focusLoop,focusWrap:c=i.focusWrap,includesBaseElement:d=i.includesBaseElement,renderedItems:f=i.renderedItems,rtl:h=i.rtl}=n,p="up"===r||"down"===r,m="next"===r||"down"===r,g=p?ok(function(e,t,r){let n=cw(e);for(let i of e)for(let e=0;e<n;e+=1){let n=i[e];if(!n||r&&n.disabled){let n=0===e&&r?cD(i):i[e-1];i[e]=n&&t!==n.id&&r?n:{id:"__EMPTY_ITEM__",disabled:!0,rowId:null==n?void 0:n.rowId}}}return e}(cM(f),o,l&&!s)):f;if(g=(m?h&&!p:!h||p)?oj(g):g,g=p?function(e){let t=cM(e),r=cw(t),n=[];for(let e=0;e<r;e+=1)for(let r of t){let t=r[e];t&&n.push({...t,rowId:t.rowId?"".concat(e):void 0})}return n}(g):g,null==o)return null==(e=cD(g))?void 0:e.id;let A=g.find(e=>e.id===o);if(!A)return null==(t=cD(g))?void 0:t.id;let y=g.some(e=>e.rowId),x=g.indexOf(A),B=g.slice(x+1),C=cb(B,A.rowId);if(s){let e=C.filter(e=>o?!e.disabled&&e.id!==o:!e.disabled),t=e.slice(s)[0]||e[e.length-1];return null==t?void 0:t.id}let S=u&&(p?"horizontal"!==u:"vertical"!==u),E=y&&c&&(p?"horizontal"!==c:"vertical"!==c),T=m?(!y||p)&&S&&d:!!p&&d;if(S){let e=cD(function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=e.findIndex(e=>e.id===t);return[...e.slice(n+1),...r?[cT]:[],...e.slice(0,n)]}(E&&!T?g:cb(g,A.rowId),o,T),o);return null==e?void 0:e.id}if(E){let e=cD(T?C:B,o);return T?(null==e?void 0:e.id)||null:null==e?void 0:e.id}let D=cD(C,o);return!D&&T?null:null==D?void 0:D.id};return{...n,...a,setBaseElement:e=>a.setState("baseElement",e),setActiveId:e=>a.setState("activeId",e),move:e=>{void 0!==e&&(a.setState("activeId",e),a.setState("moves",e=>e+1))},first:()=>{var e;return null==(e=cD(a.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=cD(oj(a.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("up",e))}}({...t,activeId:a,includesBaseElement:sN(t.includesBaseElement,null==i?void 0:i.includesBaseElement,!0),orientation:sN(t.orientation,null==i?void 0:i.orientation,"vertical"),focusLoop:sN(t.focusLoop,null==i?void 0:i.focusLoop,!0),focusWrap:sN(t.focusWrap,null==i?void 0:i.focusWrap,!0),virtualFocus:sN(t.virtualFocus,null==i?void 0:i.virtualFocus,!0)}),o=function(){let{popover:e,...t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=lc(t.store,lu(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));ld(t,r);let n=null==r?void 0:r.getState(),i=ul({...t,store:r}),a=sN(t.placement,null==n?void 0:n.placement,"bottom"),s=ln({...i.getState(),placement:a,currentPlacement:a,anchorElement:sN(null==n?void 0:n.anchorElement,null),popoverElement:sN(null==n?void 0:n.popoverElement,null),arrowElement:sN(null==n?void 0:n.arrowElement,null),rendered:Symbol("rendered")},i,r);return{...i,...s,setAnchorElement:e=>s.setState("anchorElement",e),setPopoverElement:e=>s.setState("popoverElement",e),setArrowElement:e=>s.setState("arrowElement",e),render:()=>s.setState("rendered",Symbol("rendered"))}}({...t,placement:sN(t.placement,null==i?void 0:i.placement,"bottom-start")}),l=sN(t.value,null==i?void 0:i.value,t.defaultValue,""),u=sN(t.selectedValue,null==i?void 0:i.selectedValue,null==n?void 0:n.values,t.defaultSelectedValue,""),c=Array.isArray(u),d={...s.getState(),...o.getState(),value:l,selectedValue:u,resetValueOnSelect:sN(t.resetValueOnSelect,null==i?void 0:i.resetValueOnSelect,c),resetValueOnHide:sN(t.resetValueOnHide,null==i?void 0:i.resetValueOnHide,c&&!e),activeValue:null==i?void 0:i.activeValue},f=ln(d,s,o,r);return cF&&li(f,()=>lo(f,["virtualFocus"],()=>{f.setState("virtualFocus",!1)})),li(f,()=>{if(e)return sP(lo(f,["selectedValue"],t=>{Array.isArray(t.selectedValue)&&e.setValues(t.selectedValue)}),lo(e,["values"],e=>{f.setState("selectedValue",e.values)}))}),li(f,()=>lo(f,["resetValueOnHide","mounted"],e=>{e.resetValueOnHide&&(e.mounted||f.setState("value",l))})),li(f,()=>lo(f,["open"],e=>{e.open||(f.setState("activeId",a),f.setState("moves",0))})),li(f,()=>lo(f,["moves","activeId"],(e,t)=>{e.moves===t.moves&&f.setState("activeValue",void 0)})),li(f,()=>ll(f,["moves","renderedItems"],(e,t)=>{if(e.moves===t.moves)return;let{activeId:r}=f.getState(),n=s.item(r);f.setState("activeValue",null==n?void 0:n.value)})),{...o,...s,...f,tag:e,setValue:e=>f.setState("value",e),resetValue:()=>f.setState("value",d.value),setSelectedValue:e=>f.setState("selectedValue",e)}}function cI(){var e,t,r,n,i,a;let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[o,l]=lM(cR,s=function(e){var t;let r=cE();return{id:s9((t=e={...e,tag:void 0!==e.tag?e.tag:r}).id),...t}}(s));return s3(l,[(e=s).tag]),lb(o,e,"value","setValue"),lb(o,e,"selectedValue","setSelectedValue"),lb(o,e,"resetValueOnHide"),lb(o,e,"resetValueOnSelect"),Object.assign((n=o,s3(i=l,[(a=e).popover]),lb(n,a,"placement"),t=ua(n,i,a),r=t,s3(l,[e.store]),lb(r,e,"items","setItems"),lb(t=r,e,"activeId","setActiveId"),lb(t,e,"includesBaseElement"),lb(t,e,"virtualFocus"),lb(t,e,"orientation"),lb(t,e,"rtl"),lb(t,e,"focusLoop"),lb(t,e,"focusWrap"),lb(t,e,"focusShift"),t),{tag:e.tag})}function cP(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=cI(e);return(0,eU.jsx)(o6,{value:t,children:e.children})}var cL=(0,eG.createContext)(void 0),cU=ol(function(e){let[t,r]=(0,eG.useState)();return sH(e={role:"group","aria-labelledby":t,...e=s5(e,e=>(0,eU.jsx)(cL.Provider,{value:r,children:e}),[])})});oa(function(e){return oo("div",cU(e))});var cG=ol(function(e){let{store:t,...r}=e;return cU(r)});oa(function(e){return oo("div",cG(e))});var cO=ol(function(e){let{store:t,...r}=e,n=o8();return sU(t=t||n,!1),"grid"===sT(t.useState("contentElement"))&&(r={role:"rowgroup",...r}),r=cG({store:t,...r})}),cH=oa(function(e){return oo("div",cO(e))}),cN=ol(function(e){let t=(0,eG.useContext)(cL),r=s9(e.id);return s0(()=>(null==t||t(r),()=>null==t?void 0:t(void 0)),[t,r]),sH(e={id:r,"aria-hidden":!0,...e})});oa(function(e){return oo("div",cN(e))});var ck=ol(function(e){let{store:t,...r}=e;return cN(r)});oa(function(e){return oo("div",ck(e))});var cj=ol(function(e){return ck(e)}),cz=oa(function(e){return oo("div",cj(e))}),cK=e.i(38360);let cJ={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},cV=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue));function cQ(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{keys:n,threshold:i=cJ.MATCHES,baseSort:a=cV,sorter:s=e=>e.sort((e,t)=>(function(e,t,r){let{rank:n,keyIndex:i}=e,{rank:a,keyIndex:s}=t;return n!==a?n>a?-1:1:i===s?r(e,t):i<s?-1:1})(e,t,a))}=r;return s(e.reduce(function(e,a,s){var o,l,u,c;let d=(o=a,l=n,u=t,c=r,l?(function(e,t){let r=[];for(let i=0,a=t.length;i<a;i++){var n;let a=t[i],s="string"==typeof(n=a)?c_:{...c_,...n},o=function(e,t){let r;if("object"==typeof t&&(t=t.key),"function"==typeof t)r=t(e);else if(null==e)r=null;else if(Object.hasOwnProperty.call(e,t))r=e[t];else{if(t.includes("."))return function(e,t){let r=e.split("."),n=[t];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=[];for(let e=0,r=n.length;e<r;e++){let r=n[e];if(null!=r)if(Object.hasOwnProperty.call(r,t)){let e=r[t];null!=e&&i.push(e)}else"*"===t&&(i=i.concat(r))}n=i}return Array.isArray(n[0])?[].concat(...n):n}(t,e);r=null}return null==r?[]:Array.isArray(r)?r:[String(r)]}(e,a);for(let e=0,t=o.length;e<t;e++)r.push({itemValue:o[e],attributes:s})}return r})(o,l).reduce((e,t,r)=>{let{rank:n,rankedValue:i,keyIndex:a,keyThreshold:s}=e,{itemValue:o,attributes:l}=t,d=cW(o,u,c),f=i,{minRanking:h,maxRanking:p,threshold:m}=l;return d<h&&d>=cJ.MATCHES?d=h:d>p&&(d=p),d>n&&(n=d,a=r,s=m,f=o),{rankedValue:f,rank:n,keyIndex:a,keyThreshold:s}},{rankedValue:o,rank:cJ.NO_MATCH,keyIndex:-1,keyThreshold:c.threshold}):{rankedValue:o,rank:cW(o,u,c),keyIndex:-1,keyThreshold:c.threshold}),{rank:f,keyThreshold:h=i}=d;return f>=h&&e.push({...d,item:a,index:s}),e},[])).map(e=>{let{item:t}=e;return t})}function cW(e,t,r){if(e=cX(e,r),(t=cX(t,r)).length>e.length)return cJ.NO_MATCH;if(e===t)return cJ.CASE_SENSITIVE_EQUAL;let n=function*(e,t){let r=-1;for(;(r=e.indexOf(t,r+1))>-1;)yield r;return -1}(e=e.toLowerCase(),t=t.toLowerCase()),i=n.next(),a=i.value;if(e.length===t.length&&0===a)return cJ.EQUAL;if(0===a)return cJ.STARTS_WITH;let s=i;for(;!s.done;){if(s.value>0&&" "===e[s.value-1])return cJ.WORD_STARTS_WITH;s=n.next()}return a>0?cJ.CONTAINS:1===t.length?cJ.NO_MATCH:(function(e){let t="",r=" ";for(let n=0;n<e.length;n++){let i=e.charAt(n),a=" "===i||"-"===i;" "!==r&&"-"!==r||a||(t+=i),r=i}return t})(e).includes(t)?cJ.ACRONYM:function(e,t){let r=0,n=0;function i(e,t,n){for(let i=n,a=t.length;i<a;i++)if(t[i]===e)return r+=1,i+1;return -1}let a=i(t[0],e,0);if(a<0)return cJ.NO_MATCH;n=a;for(let r=1,a=t.length;r<a;r++)if(!((n=i(t[r],e,n))>-1))return cJ.NO_MATCH;var s=n-a;let o=r/t.length;return cJ.MATCHES+1/s*o}(e,t)}function cX(e,t){let{keepDiacritics:r}=t;return e="".concat(e),r||(e=(0,cK.default)(e)),e}cQ.rankings=cJ;let c_={maxRanking:1/0,minRanking:-1/0};var cZ=e.i(29402);let cY=new Set(["SkiFree","SkiFree_Daily","SkiFree_Randomizer"]),cq={"missions.vl2":"Official","TR2final105-client.vl2":"Team Rabbit 2","z_mappacks/CTF/Classic_maps_v1.vl2":"Classic","z_mappacks/CTF/DynamixFinalPack.vl2":"Official","z_mappacks/CTF/KryMapPack_b3EDIT.vl2":"KryMapPack","z_mappacks/CTF/S5maps.vl2":"S5","z_mappacks/CTF/S8maps.vl2":"S8","z_mappacks/CTF/TWL-MapPack.vl2":"TWL","z_mappacks/CTF/TWL-MapPackEDIT.vl2":"TWL","z_mappacks/CTF/TWL2-MapPack.vl2":"TWL2","z_mappacks/CTF/TWL2-MapPackEDIT.vl2":"TWL2","z_mappacks/TWL_T2arenaOfficialMaps.vl2":"Arena","z_mappacks/z_DMP2-V0.6.vl2":"DMP2 (Discord Map Pack)","z_mappacks/zDMP-4.7.3DX.vl2":"DMP (Discord Map Pack)"},c$={"z_mappacks/DM":"DM","z_mappacks/LCTF":"LCTF","z_mappacks/Lak":"LakRabbit"},c0=(0,aK.getMissionList)().filter(e=>!cY.has(e)).map(e=>{var t,r;let n=(0,aK.getMissionInfo)(e),[i]=(0,aK.getSourceAndPath)(n.resourcePath),a=(e=>{let t=e.match(/^(.*)(\/[^/]+)$/);return t?t[1]:""})(i),s=null!=(r=null!=(t=cq[i])?t:c$[a])?r:null;return{resourcePath:n.resourcePath,missionName:e,displayName:n.displayName,sourcePath:i,groupName:s,missionTypes:n.missionTypes}}),c1=new Map(c0.map(e=>[e.missionName,e])),c2=function(e){let t=new Map;for(let n of e){var r;let e=null!=(r=t.get(n.groupName))?r:[];e.push(n),t.set(n.groupName,e)}return t.forEach((e,r)=>{t.set(r,(0,cZ.default)(e,[e=>(e.displayName||e.missionName).toLowerCase()],["asc"]))}),(0,cZ.default)(Array.from(t.entries()),[e=>{let[t]=e;return"Official"===t?0:null==t?2:1},e=>{let[t]=e;return t?t.toLowerCase():""}],["asc","asc"])}(c0),c9="undefined"!=typeof navigator&&/Mac|iPhone|iPad|iPod/.test(navigator.platform);function c3(e){let{mission:t}=e;return(0,eU.jsxs)(eU.Fragment,{children:[(0,eU.jsxs)("span",{className:"MissionSelect-itemHeader",children:[(0,eU.jsx)("span",{className:"MissionSelect-itemName",children:t.displayName||t.missionName}),t.missionTypes.length>0&&(0,eU.jsx)("span",{className:"MissionSelect-itemTypes",children:t.missionTypes.map(e=>(0,eU.jsx)("span",{className:"MissionSelect-itemType",children:e},e))})]}),(0,eU.jsx)("span",{className:"MissionSelect-itemMissionName",children:t.missionName})]})}function c4(e){let{value:t,onChange:r}=e,[n,i]=(0,eG.useState)(""),a=(0,eG.useRef)(null),s=cI({resetValueOnHide:!0,selectedValue:t,setSelectedValue:e=>{e&&r(e)},setValue:e=>{(0,eG.startTransition)(()=>i(e))}});(0,eG.useEffect)(()=>{let e=e=>{if("k"===e.key&&(e.metaKey||e.ctrlKey)){var t;e.preventDefault(),null==(t=a.current)||t.focus(),s.show()}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[s]);let o=c1.get(t),l=(0,eG.useMemo)(()=>n?{type:"flat",missions:cQ(c0,n,{keys:["displayName","missionName"]})}:{type:"grouped",groups:c2},[n]),u=o?o.displayName||o.missionName:t,c="flat"===l.type?0===l.missions.length:0===l.groups.length;return(0,eU.jsxs)(cP,{store:s,children:[(0,eU.jsxs)("div",{className:"MissionSelect-inputWrapper",children:[(0,eU.jsx)(lm,{ref:a,autoSelect:!0,placeholder:u,className:"MissionSelect-input",onFocus:()=>{document.exitPointerLock(),s.show()}}),(0,eU.jsx)("kbd",{className:"MissionSelect-shortcut",children:c9?"⌘K":"^K"})]}),(0,eU.jsx)(cC,{gutter:4,fitViewport:!0,className:"MissionSelect-popover",children:(0,eU.jsxs)(lk,{className:"MissionSelect-list",children:["flat"===l.type?l.missions.map(e=>(0,eU.jsx)(lI,{value:e.missionName,className:"MissionSelect-item",focusOnHover:!0,children:(0,eU.jsx)(c3,{mission:e})},e.missionName)):l.groups.map(e=>{let[t,r]=e;return t?(0,eU.jsxs)(cH,{className:"MissionSelect-group",children:[(0,eU.jsx)(cz,{className:"MissionSelect-groupLabel",children:t}),r.map(e=>(0,eU.jsx)(lI,{value:e.missionName,className:"MissionSelect-item",focusOnHover:!0,children:(0,eU.jsx)(c3,{mission:e})},e.missionName))]},t):(0,eU.jsx)(eG.Fragment,{children:r.map(e=>(0,eU.jsx)(lI,{value:e.missionName,className:"MissionSelect-item",focusOnHover:!0,children:(0,eU.jsx)(c3,{mission:e})},e.missionName))},"ungrouped")}),c&&(0,eU.jsx)("div",{className:"MissionSelect-noResults",children:"No missions found"})]})})]})}function c8(e){let{missionName:t,onChangeMission:r}=e,{fogEnabled:n,setFogEnabled:i,fov:a,setFov:s,audioEnabled:o,setAudioEnabled:l,animationEnabled:u,setAnimationEnabled:c}=(0,n2.useSettings)(),{speedMultiplier:d,setSpeedMultiplier:f}=(0,n2.useControls)(),{debugMode:h,setDebugMode:p}=(0,n2.useDebug)();return(0,eU.jsxs)("div",{id:"controls",onKeyDown:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:[(0,eU.jsx)(c4,{value:t,onChange:r}),(0,eU.jsxs)("div",{className:"CheckboxField",children:[(0,eU.jsx)("input",{id:"fogInput",type:"checkbox",checked:n,onChange:e=>{i(e.target.checked)}}),(0,eU.jsx)("label",{htmlFor:"fogInput",children:"Fog?"})]}),(0,eU.jsxs)("div",{className:"CheckboxField",children:[(0,eU.jsx)("input",{id:"audioInput",type:"checkbox",checked:o,onChange:e=>{l(e.target.checked)}}),(0,eU.jsx)("label",{htmlFor:"audioInput",children:"Audio?"})]}),(0,eU.jsxs)("div",{className:"CheckboxField",children:[(0,eU.jsx)("input",{id:"animationInput",type:"checkbox",checked:u,onChange:e=>{c(e.target.checked)}}),(0,eU.jsx)("label",{htmlFor:"animationInput",children:"Animation?"})]}),(0,eU.jsxs)("div",{className:"CheckboxField",children:[(0,eU.jsx)("input",{id:"debugInput",type:"checkbox",checked:h,onChange:e=>{p(e.target.checked)}}),(0,eU.jsx)("label",{htmlFor:"debugInput",children:"Debug?"})]}),(0,eU.jsxs)("div",{className:"Field",children:[(0,eU.jsx)("label",{htmlFor:"fovInput",children:"FOV"}),(0,eU.jsx)("input",{id:"fovInput",type:"range",min:75,max:120,step:5,value:a,onChange:e=>s(parseInt(e.target.value))}),(0,eU.jsx)("output",{htmlFor:"speedInput",children:a})]}),(0,eU.jsxs)("div",{className:"Field",children:[(0,eU.jsx)("label",{htmlFor:"speedInput",children:"Speed"}),(0,eU.jsx)("input",{id:"speedInput",type:"range",min:.1,max:5,step:.05,value:d,onChange:e=>f(parseFloat(e.target.value))})]})]})}let c5=eG.forwardRef((e,t)=>{let{envMap:r,resolution:n=256,frames:i=1/0,makeDefault:a,children:s,...o}=e,l=(0,eW.useThree)(e=>{let{set:t}=e;return t}),u=(0,eW.useThree)(e=>{let{camera:t}=e;return t}),c=(0,eW.useThree)(e=>{let{size:t}=e;return t}),d=eG.useRef(null);eG.useImperativeHandle(t,()=>d.current,[]);let f=eG.useRef(null),h=function(e,t,r){let n=(0,eW.useThree)(e=>e.size),i=(0,eW.useThree)(e=>e.viewport),a="number"==typeof e?e:n.width*i.dpr,s=n.height*i.dpr,o=("number"==typeof e?void 0:e)||{},{samples:l=0,depth:u,...c}=o,d=null!=u?u:o.depthBuffer,f=eG.useMemo(()=>{let e=new ek.WebGLRenderTarget(a,s,{minFilter:ek.LinearFilter,magFilter:ek.LinearFilter,type:ek.HalfFloatType,...c});return d&&(e.depthTexture=new ek.DepthTexture(a,s,ek.FloatType)),e.samples=l,e},[]);return eG.useLayoutEffect(()=>{f.setSize(a,s),l&&(f.samples=l)},[l,f,a,s]),eG.useEffect(()=>()=>f.dispose(),[]),f}(n);eG.useLayoutEffect(()=>{o.manual||(d.current.aspect=c.width/c.height)},[c,o]),eG.useLayoutEffect(()=>{d.current.updateProjectionMatrix()});let p=0,m=null,g="function"==typeof s;return(0,eX.useFrame)(e=>{g&&(i===1/0||p<i)&&(f.current.visible=!1,e.gl.setRenderTarget(h),m=e.scene.background,r&&(e.scene.background=r),e.gl.render(e.scene,d.current),e.scene.background=m,e.gl.setRenderTarget(null),f.current.visible=!0,p++)}),eG.useLayoutEffect(()=>{if(a)return l(()=>({camera:d.current})),()=>l(()=>({camera:u}))},[d,a,l]),eG.createElement(eG.Fragment,null,eG.createElement("perspectiveCamera",(0,ir.default)({ref:d},o),!g&&s),eG.createElement("group",{ref:f},g&&s(h.texture)))});function c6(){let{fov:e}=(0,n2.useSettings)();return(0,eU.jsx)(c5,{makeDefault:!0,position:[0,256,0],fov:e})}var c7=e.i(51434),de=e.i(81405);function dt(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function dr(e){let{showPanel:t=0,className:r,parent:n}=e,i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,[n,i]=eG.useState();return eG.useLayoutEffect(()=>{let t=e();return i(t),dt(r,t),()=>dt(r,null)},t),n}(()=>new de.default,[]);return eG.useEffect(()=>{if(i){let e=n&&n.current||document.body;i.showPanel(t),null==e||e.appendChild(i.dom);let a=(null!=r?r:"").split(" ").filter(e=>e);a.length&&i.dom.classList.add(...a);let s=(0,eH.j)(()=>i.begin()),o=(0,eH.k)(()=>i.end());return()=>{a.length&&i.dom.classList.remove(...a),null==e||e.removeChild(i.dom),s(),o()}}},[n,i,r,t]),null}var dn=e.i(60099);function di(){let{debugMode:e}=(0,n2.useDebug)(),t=(0,eG.useRef)(null);return(0,eG.useEffect)(()=>{let e=t.current;e&&e.setColors("rgb(153, 255, 0)","rgb(0, 153, 255)","rgb(255, 153, 0)")}),e?(0,eU.jsxs)(eU.Fragment,{children:[(0,eU.jsx)(dr,{className:"StatsPanel"}),(0,eU.jsx)("axesHelper",{ref:t,args:[70],renderOrder:999,children:(0,eU.jsx)("lineBasicMaterial",{depthTest:!1,depthWrite:!1,fog:!1,vertexColors:!0})}),(0,eU.jsx)(dn.Html,{position:[80,0,0],center:!0,children:(0,eU.jsx)("span",{className:"AxisLabel","data-axis":"y",children:"Y"})}),(0,eU.jsx)(dn.Html,{position:[0,80,0],center:!0,children:(0,eU.jsx)("span",{className:"AxisLabel","data-axis":"z",children:"Z"})}),(0,eU.jsx)(dn.Html,{position:[0,0,80],center:!0,children:(0,eU.jsx)("span",{className:"AxisLabel","data-axis":"x",children:"X"})})]}):null}let da=new a2;function ds(){let e=(0,eO.useSearchParams)(),t=(0,eO.useRouter)(),[r,n]=(0,eG.useState)(e.get("mission")||"TWL2_WoodyMyrk"),[i,a]=(0,eG.useState)(0),[s,o]=(0,eG.useState)(!0),l=i<1;(0,eG.useEffect)(()=>{if(l)o(!0);else{let e=setTimeout(()=>o(!1),500);return()=>clearTimeout(e)}},[l]),(0,eG.useEffect)(()=>(window.setMissionName=n,window.getMissionList=aK.getMissionList,window.getMissionInfo=aK.getMissionInfo,()=>{delete window.setMissionName,delete window.getMissionList,delete window.getMissionInfo}),[]),(0,eG.useEffect)(()=>{let e=new URLSearchParams;e.set("mission",r),t.replace("?".concat(e.toString()),{scroll:!1})},[r,t]);let u=(0,eG.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;a(t)},[]);return(0,eU.jsx)(nV,{client:da,children:(0,eU.jsx)("main",{children:(0,eU.jsxs)(n2.SettingsProvider,{children:[(0,eU.jsxs)("div",{id:"canvasContainer",children:[s&&(0,eU.jsxs)("div",{id:"loadingIndicator","data-complete":!l,children:[(0,eU.jsx)("div",{className:"LoadingSpinner"}),(0,eU.jsx)("div",{className:"LoadingProgress",children:(0,eU.jsx)("div",{className:"LoadingProgress-bar",style:{width:"".concat(100*i,"%")}})}),(0,eU.jsxs)("div",{className:"LoadingProgress-text",children:[Math.round(100*i),"%"]})]}),(0,eU.jsxs)(eQ,{shadows:!0,frameloop:"always",children:[(0,eU.jsx)(aU,{children:(0,eU.jsxs)(c7.AudioProvider,{children:[(0,eU.jsx)(aW,{name:r,onLoadingChange:u},r),(0,eU.jsx)(c6,{}),(0,eU.jsx)(di,{}),(0,eU.jsx)(sf,{})]})}),(0,eU.jsx)(rV,{children:(0,eU.jsx)(rW,{intensity:3,aoRadius:3,quality:"performance"})})]})]}),(0,eU.jsx)(c8,{missionName:r,onChangeMission:n})]})})})}function dl(){return(0,eU.jsx)(eG.Suspense,{children:(0,eU.jsx)(ds,{})})}}]);