@splinetool/loader 0.9.70 → 0.9.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,107 +1,381 @@
1
- var Pm=Object.create;var Vi=Object.defineProperty;var Mm=Object.getOwnPropertyDescriptor;var Am=Object.getOwnPropertyNames;var Om=Object.getPrototypeOf,Dm=Object.prototype.hasOwnProperty;var Bm=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),mc=(i,t)=>{for(var e in t)Vi(i,e,{get:t[e],enumerable:!0})},fc=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Am(t))!Dm.call(i,o)&&o!==e&&Vi(i,o,{get:()=>t[o],enumerable:!(r=Mm(t,o))||r.enumerable});return i};var _m=(i,t,e)=>(e=i!=null?Pm(Om(i)):{},fc(t||!i||!i.__esModule?Vi(e,"default",{value:i,enumerable:!0}):e,i)),Em=i=>fc(Vi({},"__esModule",{value:!0}),i);var nm=Bm((_a,om)=>{(function(i,t){typeof _a=="object"&&typeof om<"u"?t(_a):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(_a,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,u,d,m,g,x,y,v=t[0].length,P=t.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],_=[],w=e==="f"?P:v,f=g=u=0;f<P;f++)b[f]=new Array(w).fill(0);for(f=0;f<v;f++)_[f]=new Array(v).fill(0);var D,C=new Array(v).fill(0);for(f=0;f<P;f++)for(s=0;s<v;s++)b[f][s]=t[f][s];for(f=0;f<v;f++){for(S[f]=u,m=0,l=f+1,s=f;s<P;s++)m+=Math.pow(b[s][f],2);if(m<n)u=0;else for(d=(p=b[f][f])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,b[f][f]=p-u,s=l;s<v;s++){for(m=0,a=f;a<P;a++)m+=b[a][f]*b[a][s];for(p=m/d,a=f;a<P;a++)b[a][s]=b[a][s]+p*b[a][f]}for(C[f]=u,m=0,s=l;s<v;s++)m+=Math.pow(b[f][s],2);if(m<n)u=0;else{for(d=(p=b[f][f+1])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,b[f][f+1]=p-u,s=l;s<v;s++)S[s]=b[f][s]/d;for(s=l;s<P;s++){for(m=0,a=l;a<v;a++)m+=b[s][a]*b[f][a];for(a=l;a<v;a++)b[s][a]=b[s][a]+m*S[a]}}g<(x=Math.abs(C[f])+Math.abs(S[f]))&&(g=x)}if(r)for(f=v-1;0<=f;f--){if(u!==0){for(d=b[f][f+1]*u,s=l;s<v;s++)_[s][f]=b[f][s]/d;for(s=l;s<v;s++){for(m=0,a=l;a<v;a++)m+=b[f][a]*_[a][s];for(a=l;a<v;a++)_[a][s]=_[a][s]+m*_[a][f]}}for(s=l;s<v;s++)_[f][s]=0,_[s][f]=0;_[f][f]=1,u=S[f],l=f}if(e){if(e==="f")for(f=v;f<P;f++){for(s=v;s<P;s++)b[f][s]=0;b[f][f]=1}for(f=v-1;0<=f;f--){for(l=f+1,u=C[f],s=l;s<w;s++)b[f][s]=0;if(u!==0){for(d=b[f][f]*u,s=l;s<w;s++){for(m=0,a=l;a<P;a++)m+=b[a][f]*b[a][s];for(p=m/d,a=f;a<P;a++)b[a][s]=b[a][s]+p*b[a][f]}for(s=f;s<P;s++)b[s][f]=b[s][f]/u}else for(s=f;s<P;s++)b[s][f]=0;b[f][f]=b[f][f]+1}}for(o*=g,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(D=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){D=!0;break}if(Math.abs(C[l-1])<=o)break}if(!D){for(h=0,c=l-(m=1),f=l;f<a+1&&(p=m*S[f],S[f]=h*S[f],!(Math.abs(p)<=o));f++)if(u=C[f],C[f]=Math.sqrt(p*p+u*u),h=u/(d=C[f]),m=-p/d,e)for(s=0;s<P;s++)x=b[s][c],y=b[s][f],b[s][c]=x*h+y*m,b[s][f]=-x*m+y*h}if(y=C[a],l===a){if(y<0&&(C[a]=-y,r))for(s=0;s<v;s++)_[s][a]=-_[s][a];break}for(g=C[l],p=(((x=C[a-1])-y)*(x+y)+((u=S[a-1])-(d=S[a]))*(u+d))/(2*d*x),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(x/(p<0?p-u:p+u)-d))/g,f=l+(m=h=1);f<a+1;f++){if(u=S[f],x=C[f],d=m*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(S[f-1]=y))+u*(m=d/y),u=-g*m+u*h,d=x*m,x*=h,r)for(s=0;s<v;s++)g=_[s][f-1],y=_[s][f],_[s][f-1]=g*h+y*m,_[s][f]=-g*m+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(C[f-1]=y))*u+(m=d/y)*x,g=-m*u+h*x,e)for(s=0;s<P;s++)x=b[s][f-1],y=b[s][f],b[s][f-1]=x*h+y*m,b[s][f]=-x*m+y*h}S[l]=0,S[a]=p,C[a]=g}for(f=0;f<v;f++)C[f]<o&&(C[f]=0);return{u:b,q:C,v:_}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var rS={};mc(rS,{default:()=>Ea});module.exports=Em(rS);var Ga=require("three");function gc(i){return Array.isArray(i)?i:[i]}var Gm=typeof global=="object"&&global&&global.Object===Object&&global,Fi=Gm;var Rm=typeof self=="object"&&self&&self.Object===Object&&self,zm=Fi||Rm||Function("return this")(),Ye=zm;var Vm=Ye.Symbol,vt=Vm;var yc=Object.prototype,Fm=yc.hasOwnProperty,Um=yc.toString,Rn=vt?vt.toStringTag:void 0;function jm(i){var t=Fm.call(i,Rn),e=i[Rn];try{i[Rn]=void 0;var r=!0}catch{}var o=Um.call(i);return r&&(t?i[Rn]=e:delete i[Rn]),o}var xc=jm;var km=Object.prototype,Hm=km.toString;function Wm(i){return Hm.call(i)}var vc=Wm;var qm="[object Null]",$m="[object Undefined]",bc=vt?vt.toStringTag:void 0;function Xm(i){return i==null?i===void 0?$m:qm:bc&&bc in Object(i)?xc(i):vc(i)}var Bt=Xm;function Km(i){return i!=null&&typeof i=="object"}var ut=Km;var Ym="[object Symbol]";function Jm(i){return typeof i=="symbol"||ut(i)&&Bt(i)==Ym}var To=Jm;function Qm(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var Ui=Qm;var Zm=Array.isArray,Je=Zm;var ef=1/0,Sc=vt?vt.prototype:void 0,wc=Sc?Sc.toString:void 0;function Nc(i){if(typeof i=="string")return i;if(Je(i))return Ui(i,Nc)+"";if(To(i))return wc?wc.call(i):"";var t=i+"";return t=="0"&&1/i==-ef?"-0":t}var Cc=Nc;function tf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var dt=tf;function rf(i){return i}var ji=rf;var of="[object AsyncFunction]",nf="[object Function]",sf="[object GeneratorFunction]",af="[object Proxy]";function lf(i){if(!dt(i))return!1;var t=Bt(i);return t==nf||t==sf||t==of||t==af}var Lo=lf;var cf=Ye["__core-js_shared__"],ki=cf;var Tc=function(){var i=/[^.]+$/.exec(ki&&ki.keys&&ki.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function hf(i){return!!Tc&&Tc in i}var Lc=hf;var pf=Function.prototype,uf=pf.toString;function df(i){if(i!=null){try{return uf.call(i)}catch{}try{return i+""}catch{}}return""}var Ir=df;var mf=/[\\^$.*+?()[\]{}|]/g,ff=/^\[object .+?Constructor\]$/,gf=Function.prototype,yf=Object.prototype,xf=gf.toString,vf=yf.hasOwnProperty,bf=RegExp("^"+xf.call(vf).replace(mf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Sf(i){if(!dt(i)||Lc(i))return!1;var t=Lo(i)?bf:ff;return t.test(Ir(i))}var Ic=Sf;function wf(i,t){return i?.[t]}var Pc=wf;function Nf(i,t){var e=Pc(i,t);return Ic(e)?e:void 0}var Tt=Nf;var Cf=Tt(Ye,"WeakMap"),Hi=Cf;var Mc=Object.create,Tf=function(){function i(){}return function(t){if(!dt(t))return{};if(Mc)return Mc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Ac=Tf;function Lf(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Oc=Lf;function If(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Wi=If;var Pf=800,Mf=16,Af=Date.now;function Of(i){var t=0,e=0;return function(){var r=Af(),o=Mf-(r-e);if(e=r,o>0){if(++t>=Pf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Dc=Of;function Df(i){return function(){return i}}var Bc=Df;var Bf=function(){try{var i=Tt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Io=Bf;var _f=Io?function(i,t){return Io(i,"toString",{configurable:!0,enumerable:!1,value:Bc(t),writable:!0})}:ji,_c=_f;var Ef=Dc(_c),qi=Ef;function Gf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Ec=Gf;var Rf=9007199254740991,zf=/^(?:0|[1-9]\d*)$/;function Vf(i,t){var e=typeof i;return t=t??Rf,!!t&&(e=="number"||e!="symbol"&&zf.test(i))&&i>-1&&i%1==0&&i<t}var $i=Vf;function Ff(i,t,e){t=="__proto__"&&Io?Io(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Po=Ff;function Uf(i,t){return i===t||i!==i&&t!==t}var zr=Uf;var jf=Object.prototype,kf=jf.hasOwnProperty;function Hf(i,t,e){var r=i[t];(!(kf.call(i,t)&&zr(r,e))||e===void 0&&!(t in i))&&Po(i,t,e)}var Xi=Hf;function Wf(i,t,e,r){var o=!e;e||(e={});for(var n=-1,s=t.length;++n<s;){var a=t[n],l=r?r(e[a],i[a],a,e,i):void 0;l===void 0&&(l=i[a]),o?Po(e,a,l):Xi(e,a,l)}return e}var jt=Wf;var Gc=Math.max;function qf(i,t,e){return t=Gc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Gc(r.length-t,0),s=Array(n);++o<n;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Oc(i,this,a)}}var Ki=qf;function $f(i,t){return qi(Ki(i,t,ji),i+"")}var Rc=$f;var Xf=9007199254740991;function Kf(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=Xf}var Yi=Kf;function Yf(i){return i!=null&&Yi(i.length)&&!Lo(i)}var Vr=Yf;function Jf(i,t,e){if(!dt(e))return!1;var r=typeof t;return(r=="number"?Vr(e)&&$i(t,e.length):r=="string"&&t in e)?zr(e[t],i):!1}var zc=Jf;function Qf(i){return Rc(function(t,e){var r=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=i.length>3&&typeof n=="function"?(o--,n):void 0,s&&zc(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),t=Object(t);++r<o;){var a=e[r];a&&i(t,a,r,n)}return t})}var Vc=Qf;var Zf=Object.prototype;function eg(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||Zf;return i===e}var Mo=eg;function tg(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Fc=tg;var rg="[object Arguments]";function og(i){return ut(i)&&Bt(i)==rg}var za=og;var Uc=Object.prototype,ng=Uc.hasOwnProperty,ig=Uc.propertyIsEnumerable,sg=za(function(){return arguments}())?za:function(i){return ut(i)&&ng.call(i,"callee")&&!ig.call(i,"callee")},io=sg;function ag(){return!1}var jc=ag;var Wc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kc=Wc&&typeof module=="object"&&module&&!module.nodeType&&module,lg=kc&&kc.exports===Wc,Hc=lg?Ye.Buffer:void 0,cg=Hc?Hc.isBuffer:void 0,hg=cg||jc,Ao=hg;var pg="[object Arguments]",ug="[object Array]",dg="[object Boolean]",mg="[object Date]",fg="[object Error]",gg="[object Function]",yg="[object Map]",xg="[object Number]",vg="[object Object]",bg="[object RegExp]",Sg="[object Set]",wg="[object String]",Ng="[object WeakMap]",Cg="[object ArrayBuffer]",Tg="[object DataView]",Lg="[object Float32Array]",Ig="[object Float64Array]",Pg="[object Int8Array]",Mg="[object Int16Array]",Ag="[object Int32Array]",Og="[object Uint8Array]",Dg="[object Uint8ClampedArray]",Bg="[object Uint16Array]",_g="[object Uint32Array]",_e={};_e[Lg]=_e[Ig]=_e[Pg]=_e[Mg]=_e[Ag]=_e[Og]=_e[Dg]=_e[Bg]=_e[_g]=!0;_e[pg]=_e[ug]=_e[Cg]=_e[dg]=_e[Tg]=_e[mg]=_e[fg]=_e[gg]=_e[yg]=_e[xg]=_e[vg]=_e[bg]=_e[Sg]=_e[wg]=_e[Ng]=!1;function Eg(i){return ut(i)&&Yi(i.length)&&!!_e[Bt(i)]}var qc=Eg;function Gg(i){return function(t){return i(t)}}var Oo=Gg;var $c=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zn=$c&&typeof module=="object"&&module&&!module.nodeType&&module,Rg=zn&&zn.exports===$c,Va=Rg&&Fi.process,zg=function(){try{var i=zn&&zn.require&&zn.require("util").types;return i||Va&&Va.binding&&Va.binding("util")}catch{}}(),Pr=zg;var Xc=Pr&&Pr.isTypedArray,Vg=Xc?Oo(Xc):qc,Ji=Vg;var Fg=Object.prototype,Ug=Fg.hasOwnProperty;function jg(i,t){var e=Je(i),r=!e&&io(i),o=!e&&!r&&Ao(i),n=!e&&!r&&!o&&Ji(i),s=e||r||o||n,a=s?Fc(i.length,String):[],l=a.length;for(var c in i)(t||Ug.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||$i(c,l)))&&a.push(c);return a}var Qi=jg;function kg(i,t){return function(e){return i(t(e))}}var Zi=kg;var Hg=Zi(Object.keys,Object),Kc=Hg;var Wg=Object.prototype,qg=Wg.hasOwnProperty;function $g(i){if(!Mo(i))return Kc(i);var t=[];for(var e in Object(i))qg.call(i,e)&&e!="constructor"&&t.push(e);return t}var Yc=$g;function Xg(i){return Vr(i)?Qi(i):Yc(i)}var Do=Xg;function Kg(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var Jc=Kg;var Yg=Object.prototype,Jg=Yg.hasOwnProperty;function Qg(i){if(!dt(i))return Jc(i);var t=Mo(i),e=[];for(var r in i)r=="constructor"&&(t||!Jg.call(i,r))||e.push(r);return e}var Qc=Qg;function Zg(i){return Vr(i)?Qi(i,!0):Qc(i)}var ar=Zg;var ey=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ty=/^\w*$/;function ry(i,t){if(Je(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||To(i)?!0:ty.test(i)||!ey.test(i)||t!=null&&i in Object(t)}var Zc=ry;var oy=Tt(Object,"create"),Mr=oy;function ny(){this.__data__=Mr?Mr(null):{},this.size=0}var eh=ny;function iy(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var th=iy;var sy="__lodash_hash_undefined__",ay=Object.prototype,ly=ay.hasOwnProperty;function cy(i){var t=this.__data__;if(Mr){var e=t[i];return e===sy?void 0:e}return ly.call(t,i)?t[i]:void 0}var rh=cy;var hy=Object.prototype,py=hy.hasOwnProperty;function uy(i){var t=this.__data__;return Mr?t[i]!==void 0:py.call(t,i)}var oh=uy;var dy="__lodash_hash_undefined__";function my(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mr&&t===void 0?dy:t,this}var nh=my;function Bo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Bo.prototype.clear=eh;Bo.prototype.delete=th;Bo.prototype.get=rh;Bo.prototype.has=oh;Bo.prototype.set=nh;var Fa=Bo;function fy(){this.__data__=[],this.size=0}var ih=fy;function gy(i,t){for(var e=i.length;e--;)if(zr(i[e][0],t))return e;return-1}var Fr=gy;var yy=Array.prototype,xy=yy.splice;function vy(i){var t=this.__data__,e=Fr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():xy.call(t,e,1),--this.size,!0}var sh=vy;function by(i){var t=this.__data__,e=Fr(t,i);return e<0?void 0:t[e][1]}var ah=by;function Sy(i){return Fr(this.__data__,i)>-1}var lh=Sy;function wy(i,t){var e=this.__data__,r=Fr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var ch=wy;function _o(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}_o.prototype.clear=ih;_o.prototype.delete=sh;_o.prototype.get=ah;_o.prototype.has=lh;_o.prototype.set=ch;var Ur=_o;var Ny=Tt(Ye,"Map"),jr=Ny;function Cy(){this.size=0,this.__data__={hash:new Fa,map:new(jr||Ur),string:new Fa}}var hh=Cy;function Ty(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var ph=Ty;function Ly(i,t){var e=i.__data__;return ph(t)?e[typeof t=="string"?"string":"hash"]:e.map}var kr=Ly;function Iy(i){var t=kr(this,i).delete(i);return this.size-=t?1:0,t}var uh=Iy;function Py(i){return kr(this,i).get(i)}var dh=Py;function My(i){return kr(this,i).has(i)}var mh=My;function Ay(i,t){var e=kr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var fh=Ay;function Eo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Eo.prototype.clear=hh;Eo.prototype.delete=uh;Eo.prototype.get=dh;Eo.prototype.has=mh;Eo.prototype.set=fh;var Vn=Eo;var Oy="Expected a function";function Ua(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Oy);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var s=i.apply(this,r);return e.cache=n.set(o,s)||n,s};return e.cache=new(Ua.Cache||Vn),e}Ua.Cache=Vn;var gh=Ua;var Dy=500;function By(i){var t=gh(i,function(r){return e.size===Dy&&e.clear(),r}),e=t.cache;return t}var yh=By;var _y=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ey=/\\(\\)?/g,Gy=yh(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(_y,function(e,r,o,n){t.push(o?n.replace(Ey,"$1"):r||e)}),t}),xh=Gy;function Ry(i){return i==null?"":Cc(i)}var vh=Ry;function zy(i,t){return Je(i)?i:Zc(i,t)?[i]:xh(vh(i))}var Go=zy;var Vy=1/0;function Fy(i){if(typeof i=="string"||To(i))return i;var t=i+"";return t=="0"&&1/i==-Vy?"-0":t}var es=Fy;function Uy(i,t){t=Go(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[es(t[e++])];return e&&e==r?i:void 0}var bh=Uy;function jy(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Ro=jy;var Sh=vt?vt.isConcatSpreadable:void 0;function ky(i){return Je(i)||io(i)||!!(Sh&&i&&i[Sh])}var wh=ky;function Nh(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=wh),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Nh(a,t-1,e,r,o):Ro(o,a):r||(o[o.length]=a)}return o}var Ch=Nh;function Hy(i){var t=i==null?0:i.length;return t?Ch(i,1):[]}var Th=Hy;function Wy(i){return qi(Ki(i,void 0,Th),i+"")}var Lh=Wy;var qy=Zi(Object.getPrototypeOf,Object),zo=qy;var $y="[object Object]",Xy=Function.prototype,Ky=Object.prototype,Ih=Xy.toString,Yy=Ky.hasOwnProperty,Jy=Ih.call(Object);function Qy(i){if(!ut(i)||Bt(i)!=$y)return!1;var t=zo(i);if(t===null)return!0;var e=Yy.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ih.call(e)==Jy}var ts=Qy;function Zy(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Ph=Zy;function ex(){this.__data__=new Ur,this.size=0}var Mh=ex;function tx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Ah=tx;function rx(i){return this.__data__.get(i)}var Oh=rx;function ox(i){return this.__data__.has(i)}var Dh=ox;var nx=200;function ix(i,t){var e=this.__data__;if(e instanceof Ur){var r=e.__data__;if(!jr||r.length<nx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Vn(r)}return e.set(i,t),this.size=e.size,this}var Bh=ix;function Vo(i){var t=this.__data__=new Ur(i);this.size=t.size}Vo.prototype.clear=Mh;Vo.prototype.delete=Ah;Vo.prototype.get=Oh;Vo.prototype.has=Dh;Vo.prototype.set=Bh;var rs=Vo;function sx(i,t){return i&&jt(t,Do(t),i)}var _h=sx;function ax(i,t){return i&&jt(t,ar(t),i)}var Eh=ax;var Vh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gh=Vh&&typeof module=="object"&&module&&!module.nodeType&&module,lx=Gh&&Gh.exports===Vh,Rh=lx?Ye.Buffer:void 0,zh=Rh?Rh.allocUnsafe:void 0;function cx(i,t){if(t)return i.slice();var e=i.length,r=zh?zh(e):new i.constructor(e);return i.copy(r),r}var os=cx;function hx(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var s=i[e];t(s,e,i)&&(n[o++]=s)}return n}var Fh=hx;function px(){return[]}var ns=px;var ux=Object.prototype,dx=ux.propertyIsEnumerable,Uh=Object.getOwnPropertySymbols,mx=Uh?function(i){return i==null?[]:(i=Object(i),Fh(Uh(i),function(t){return dx.call(i,t)}))}:ns,Fo=mx;function fx(i,t){return jt(i,Fo(i),t)}var jh=fx;var gx=Object.getOwnPropertySymbols,yx=gx?function(i){for(var t=[];i;)Ro(t,Fo(i)),i=zo(i);return t}:ns,is=yx;function xx(i,t){return jt(i,is(i),t)}var kh=xx;function vx(i,t,e){var r=t(i);return Je(i)?r:Ro(r,e(i))}var ss=vx;function bx(i){return ss(i,Do,Fo)}var Hh=bx;function Sx(i){return ss(i,ar,is)}var as=Sx;var wx=Tt(Ye,"DataView"),ls=wx;var Nx=Tt(Ye,"Promise"),cs=Nx;var Cx=Tt(Ye,"Set"),hs=Cx;var Wh="[object Map]",Tx="[object Object]",qh="[object Promise]",$h="[object Set]",Xh="[object WeakMap]",Kh="[object DataView]",Lx=Ir(ls),Ix=Ir(jr),Px=Ir(cs),Mx=Ir(hs),Ax=Ir(Hi),so=Bt;(ls&&so(new ls(new ArrayBuffer(1)))!=Kh||jr&&so(new jr)!=Wh||cs&&so(cs.resolve())!=qh||hs&&so(new hs)!=$h||Hi&&so(new Hi)!=Xh)&&(so=function(i){var t=Bt(i),e=t==Tx?i.constructor:void 0,r=e?Ir(e):"";if(r)switch(r){case Lx:return Kh;case Ix:return Wh;case Px:return qh;case Mx:return $h;case Ax:return Xh}return t});var Uo=so;var Ox=Object.prototype,Dx=Ox.hasOwnProperty;function Bx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Dx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var Yh=Bx;var _x=Ye.Uint8Array,ja=_x;function Ex(i){var t=new i.constructor(i.byteLength);return new ja(t).set(new ja(i)),t}var jo=Ex;function Gx(i,t){var e=t?jo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var Jh=Gx;var Rx=/\w*$/;function zx(i){var t=new i.constructor(i.source,Rx.exec(i));return t.lastIndex=i.lastIndex,t}var Qh=zx;var Zh=vt?vt.prototype:void 0,ep=Zh?Zh.valueOf:void 0;function Vx(i){return ep?Object(ep.call(i)):{}}var tp=Vx;function Fx(i,t){var e=t?jo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ps=Fx;var Ux="[object Boolean]",jx="[object Date]",kx="[object Map]",Hx="[object Number]",Wx="[object RegExp]",qx="[object Set]",$x="[object String]",Xx="[object Symbol]",Kx="[object ArrayBuffer]",Yx="[object DataView]",Jx="[object Float32Array]",Qx="[object Float64Array]",Zx="[object Int8Array]",e0="[object Int16Array]",t0="[object Int32Array]",r0="[object Uint8Array]",o0="[object Uint8ClampedArray]",n0="[object Uint16Array]",i0="[object Uint32Array]";function s0(i,t,e){var r=i.constructor;switch(t){case Kx:return jo(i);case Ux:case jx:return new r(+i);case Yx:return Jh(i,e);case Jx:case Qx:case Zx:case e0:case t0:case r0:case o0:case n0:case i0:return ps(i,e);case kx:return new r;case Hx:case $x:return new r(i);case Wx:return Qh(i);case qx:return new r;case Xx:return tp(i)}}var rp=s0;function a0(i){return typeof i.constructor=="function"&&!Mo(i)?Ac(zo(i)):{}}var us=a0;var l0="[object Map]";function c0(i){return ut(i)&&Uo(i)==l0}var op=c0;var np=Pr&&Pr.isMap,h0=np?Oo(np):op,ip=h0;var p0="[object Set]";function u0(i){return ut(i)&&Uo(i)==p0}var sp=u0;var ap=Pr&&Pr.isSet,d0=ap?Oo(ap):sp,lp=d0;var m0=1,f0=2,g0=4,cp="[object Arguments]",y0="[object Array]",x0="[object Boolean]",v0="[object Date]",b0="[object Error]",hp="[object Function]",S0="[object GeneratorFunction]",w0="[object Map]",N0="[object Number]",pp="[object Object]",C0="[object RegExp]",T0="[object Set]",L0="[object String]",I0="[object Symbol]",P0="[object WeakMap]",M0="[object ArrayBuffer]",A0="[object DataView]",O0="[object Float32Array]",D0="[object Float64Array]",B0="[object Int8Array]",_0="[object Int16Array]",E0="[object Int32Array]",G0="[object Uint8Array]",R0="[object Uint8ClampedArray]",z0="[object Uint16Array]",V0="[object Uint32Array]",De={};De[cp]=De[y0]=De[M0]=De[A0]=De[x0]=De[v0]=De[O0]=De[D0]=De[B0]=De[_0]=De[E0]=De[w0]=De[N0]=De[pp]=De[C0]=De[T0]=De[L0]=De[I0]=De[G0]=De[R0]=De[z0]=De[V0]=!0;De[b0]=De[hp]=De[P0]=!1;function ds(i,t,e,r,o,n){var s,a=t&m0,l=t&f0,c=t&g0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!dt(i))return i;var h=Je(i);if(h){if(s=Yh(i),!a)return Wi(i,s)}else{var p=Uo(i),u=p==hp||p==S0;if(Ao(i))return os(i,a);if(p==pp||p==cp||u&&!o){if(s=l||u?{}:us(i),!a)return l?kh(i,Eh(s,i)):jh(i,_h(s,i))}else{if(!De[p])return o?i:{};s=rp(i,p,a)}}n||(n=new rs);var d=n.get(i);if(d)return d;n.set(i,s),lp(i)?i.forEach(function(x){s.add(ds(x,t,e,x,i,n))}):ip(i)&&i.forEach(function(x,y){s.set(y,ds(x,t,e,y,i,n))});var m=c?l?as:Hh:l?ar:Do,g=h?void 0:m(i);return Ec(g||i,function(x,y){g&&(y=x,x=i[y]),Xi(s,y,ds(x,t,e,y,i,n))}),s}var ms=ds;var F0=1,U0=4;function j0(i){return ms(i,F0|U0)}var Fn=j0;function k0(i){return function(t,e,r){for(var o=-1,n=Object(t),s=r(t),a=s.length;a--;){var l=s[i?a:++o];if(e(n[l],l,n)===!1)break}return t}}var up=k0;var H0=up(),dp=H0;function W0(i,t,e){(e!==void 0&&!zr(i[t],e)||e===void 0&&!(t in i))&&Po(i,t,e)}var Un=W0;function q0(i){return ut(i)&&Vr(i)}var mp=q0;function $0(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var jn=$0;function X0(i){return jt(i,ar(i))}var fp=X0;function K0(i,t,e,r,o,n,s){var a=jn(i,e),l=jn(t,e),c=s.get(l);if(c){Un(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=Je(l),d=!u&&Ao(l),m=!u&&!d&&Ji(l);h=l,u||d||m?Je(a)?h=a:mp(a)?h=Wi(a):d?(p=!1,h=os(l,!0)):m?(p=!1,h=ps(l,!0)):h=[]:ts(l)||io(l)?(h=a,io(a)?h=fp(a):(!dt(a)||Lo(a))&&(h=us(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),Un(i,e,h)}var gp=K0;function yp(i,t,e,r,o){i!==t&&dp(t,function(n,s){if(o||(o=new rs),dt(n))gp(i,t,s,e,yp,r,o);else{var a=r?r(jn(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),Un(i,s,a)}},ar)}var xp=yp;function Y0(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var vp=Y0;function J0(i,t){return t.length<2?i:bh(i,Ph(t,0,-1))}var bp=J0;var Q0=Vc(function(i,t,e){xp(i,t,e)}),ao=Q0;function Z0(i,t){return t=Go(t,i),i=bp(i,t),i==null||delete i[es(vp(t))]}var Sp=Z0;function ev(i){return ts(i)?void 0:i}var wp=ev;var tv=1,rv=2,ov=4,nv=Lh(function(i,t){var e={};if(i==null)return e;var r=!1;t=Ui(t,function(n){return n=Go(n,i),r||(r=n.length>1),n}),jt(i,as(i),e),r&&(e=ms(e,tv|rv|ov,wp));for(var o=t.length;o--;)Sp(e,t[o]);return e}),ko=nv;var Ho;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Ho||(Ho={}));var lo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=r})(lo||(lo={}));var Np;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n]}e.lerp=t})(Np||(Np={}));var Wo;(o=>{function i(n,s){return n[0]===s[0]&&n[1]===s[1]&&n[2]===s[2]}o.isEqual=i;function t(n,s){return[n[0]+s[0],n[1]+s[1],n[2]+s[2]]}o.add=t;function e(n,s){return[n[0]-s[0],n[1]-s[1],n[2]-s[2]]}o.sub=e;function r(n,s,a){return[n[0]+(s[0]-n[0])*a,n[1]+(s[1]-n[1])*a,n[2]+(s[2]-n[2])*a]}o.lerp=r})(Wo||(Wo={}));var Cp;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(Cp||(Cp={}));var Hr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,s){for(let a=0;a<16;a++)if(n[a]!==s[a])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=n[3]*s[l]+n[7]*s[l+1]+n[11]*s[l+2]+n[15];a[l]=(n[0]*s[l]+n[4]*s[l+1]+n[8]*s[l+2]+n[12])/h,a[l+1]=(n[1]*s[l]+n[5]*s[l+1]+n[9]*s[l+2]+n[13])/h,a[l+2]=(n[2]*s[l]+n[6]*s[l+1]+n[10]*s[l+2]+n[14])/h}return a}o.applyMatrix4=r})(Hr||(Hr={}));var _t;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function n(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=n;function s(c,h){return c.r===h.r&&c.g===h.g&&c.b===h.b}l.equals=s;function a(c,h,p){return{r:c.r+(h.r-c.r)*p,g:c.g+(h.g-c.g)*p,b:c.b+(h.b-c.b)*p}}l.lerp=a})(_t||(_t={}));var Et;(s=>{s.white={..._t.white,a:1};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return{..._t.fromHex(a),a:l}}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,l){return _t.equals(a,l)&&a.a===l.a}s.equals=o;function n(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=n})(Et||(Et={}));var fs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(fs||(fs={}));var Tp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Tp||(Tp={}));var Lp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Lp||(Lp={}));var gs;(t=>{function i(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=i})(gs||(gs={}));var kt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,kt.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a={...e,[n]:s};return Object.setPrototypeOf(a,kt.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,kt.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function kn(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&kn(r)}return Object.freeze(i)}function Ip(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var ys=class extends Error{};function lr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let s=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(s)}return r}function xs(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Pp(){return typeof process<"u"}function Mp(i,t){for(let e of i)t(e.id,e.data),Mp(e.children,t)}function Ap(i,t){t(i.id,i.data);for(let e of i.children)Ap(e,t)}var Ht=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ht.prototype)}deepFreeze(){let e=0;for(;e<this.length;)kn(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Ap(o,r)}}traverse(e){Mp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),s=this.childrenArray(n),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...l,data:r},this.modifyArrayBy(n,s)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let a=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(h=>h.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:a}}Object.setPrototypeOf(n,Ht.prototype);let s=n;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),h={fi:o,id:n,data:s,children:a};return c=[...c,h],c.sort((u,d)=>u.fi-d.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),s=n.findIndex(c=>c.id===r);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===n)throw new ys("cyclic tree");d=this.parent(d)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===n);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let u=h.fi;return h={...h,fi:o},l=[...l,h],l.sort((d,m)=>d.fi-m.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Ip(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),s=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return lr(0,o,o);{let s=n[0].fi;return lr(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=n.find(l=>l.fi>s.fi);if(a===void 0){let l=n[n.length-1].fi;return lr(l,l+o,o)}else return lr(s.fi,a.fi,o)}}};var vs;(t=>{function i(e,r){if(Array.isArray(e)){let o=r.props,n={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},s={...e},a=!1;if(o)for(let l of Object.keys(o)){n[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(vs||(vs={}));var Ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)kn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,s=n.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ve.prototype);let r=e;return Pp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:n}=e,s=this,a={fi:r,id:o,data:n};return s=[...s,a],s.sort((c,h)=>c.fi-h.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let s=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(h=>h.id===o);if(s===-1)return null;let a=n[s].fi,l={...n[s],fi:r};return n[s]=l,n.sort((h,p)=>h.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return lr(0,r,r);{let n=o[0].fi;return lr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>n.fi);if(s===void 0){let a=o[o.length-1].fi;return lr(a,a+r,r)}else return lr(n.fi,s.fi,r)}}};var Op=Symbol(),Ss=Symbol(),qo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof bs);){let n=r._path,s=r._current;if(n!==""&&o.splice(0,0,n),r=r._parent,r===null)return;r.update(n,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ss];r&&r(),delete this._children[t]}}}},Ha=class extends qo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,vs.runOp(this._current,t))}},Wa=class extends qo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,kt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Dp={get(i,t){if(t===Ss)return()=>{i._parent=null};if(t===Op)return i._current;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],s=ws(i,t,n);return s!==n?(r===void 0&&(r={},i._children=r),r[t]=s,s):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},iv={...Dp,set(i,t,e){let r={type:0,props:{[t]:Xa(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},sv={...Dp,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},$o=class extends qo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ss]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=ws(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Xo=class extends qo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ss]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=ws(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function ka(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ns.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var bs=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){ka(this.ts,e,t),ka(this.actual,r,t),ka(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ws(i,t,e){return e instanceof Ht?new $o(i,t,e):e instanceof Ve?new Xo(i,t,e):e instanceof kt?new Proxy(new Wa(i,t,e),sv):e!==null&&typeof e=="object"?xs(e)?e:new Proxy(new Ha(i,t,e),iv):e}function qa(i){let t=new bs(i);return[ws(t,"",i),t]}function $a(i,t){let[e,r]=qa(i);return t(e),r.result()}function Xa(i){return i instanceof $o||i instanceof Xo?i._current:i!==null&&typeof i=="object"?i[Op]:i}var Ns;(r=>{function i(o,n){if(n.length===o.length)for(var s=0;s<o.length;){if(o[s]!==n[s])return!1;s+=1}else return!1;return!0}r.equal=i;function t(o,n,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...n};return Object.keys(a).forEach(c=>{delete l[c]}),l}else return n}r.removeOverridden=t;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof Ht||o instanceof $o)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Ve||o instanceof Xo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if(typeof n[s]=="number"&&Array.isArray(o))return e(o[n[s]],n,s+1);if(typeof n[s]=="string"&&typeof o=="object")return e(o[n[s]],n,s+1)}r.zoom=e})(Ns||(Ns={}));var Cs=class{},Hn=class extends Cs{constructor(e){super();this.id=e}},Wn=class extends Cs{constructor(e){super();this.data=e}};var Ya;try{Ya=new TextDecoder}catch{}var te,qr,N=0;var Fp=[],Ja=Fp,Qa=0,Lt={},Te,Wr,Wt=0,cr=0,Gt,Ar,bt=[],Ie,Bp={useRecords:!1,mapsAsObjects:!0},qn=class{},el=new qn;el.name="MessagePack 0xC1";var Ko=!1,hr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return Wp(()=>(Ls(),this?this.unpack(t,e):hr.prototype.unpack.call(Bp,t,e)));qr=e>-1?e:t.length,N=0,Qa=0,cr=0,Wr=null,Ja=Fp,Gt=null,te=t;try{Ie=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof hr){if(Lt=this,this.structures)return Te=this.structures,Ts();(!Te||Te.length>0)&&(Te=[])}else Lt=Bp,(!Te||Te.length>0)&&(Te=[]);return Ts()}unpackMultiple(t,e){let r,o=0;try{Ko=!0;let n=t.length,s=this?this.unpack(t,n):Ms.unpack(t,n);if(e){for(e(s);N<n;)if(o=N,e(Ts())===!1)return}else{for(r=[s];N<n;)o=N,r.push(Ts());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{Ko=!1,Ls()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ts(){try{if(!Lt.trusted&&!Ko){let t=Te.sharedLength||0;t<Te.length&&(Te.length=t)}let i=je();if(N==qr)Te.restoreStructures&&_p(),Te=null,te=null,Ar&&(Ar=null);else if(N>qr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ko)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Te.restoreStructures&&_p(),Ls(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function _p(){for(let i in Te.restoreStructures)Te[i]=Te.restoreStructures[i];Te.restoreStructures=null}function je(){let i=te[N++];if(i<160)if(i<128){if(i<64)return i;{let t=Te[i&63]||Lt.getStructures&&Up()[i&63];return t?(t.read||(t.read=tl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Lt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[kp()]=je();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(je(),je());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=je();return t}else if(i<192){let t=i-160;if(cr>=N)return Wr.slice(N-Wt,(N+=t)-Wt);if(cr==0&&qr<140){let e=t<16?rl(t):jp(t);if(e!=null)return e}return Za(t)}else{let t;switch(i){case 192:return null;case 193:return Gt?(t=je(),t>0?Gt[1].slice(Gt.position1,Gt.position1+=t):Gt[0].slice(Gt.position0,Gt.position0-=t)):el;case 194:return!1;case 195:return!0;case 196:return Ka(te[N++]);case 197:return t=Ie.getUint16(N),N+=2,Ka(t);case 198:return t=Ie.getUint32(N),N+=4,Ka(t);case 199:return co(te[N++]);case 200:return t=Ie.getUint16(N),N+=2,co(t);case 201:return t=Ie.getUint32(N),N+=4,co(t);case 202:if(t=Ie.getFloat32(N),Lt.useFloat32>2){let e=Ps[(te[N]&127)<<1|te[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=Ie.getFloat64(N),N+=8,t;case 204:return te[N++];case 205:return t=Ie.getUint16(N),N+=2,t;case 206:return t=Ie.getUint32(N),N+=4,t;case 207:return Lt.int64AsNumber?(t=Ie.getUint32(N)*4294967296,t+=Ie.getUint32(N+4)):t=Ie.getBigUint64(N),N+=8,t;case 208:return Ie.getInt8(N++);case 209:return t=Ie.getInt16(N),N+=2,t;case 210:return t=Ie.getInt32(N),N+=4,t;case 211:return Lt.int64AsNumber?(t=Ie.getInt32(N)*4294967296,t+=Ie.getUint32(N+4)):t=Ie.getBigInt64(N),N+=8,t;case 212:if(t=te[N++],t==114)return Vp(te[N++]&63);{let e=bt[t];if(e)return e.read?(N++,e.read(je())):e.noBuffer?(N++,e()):e(te.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=te[N],t==114?(N++,Vp(te[N++]&63,te[N++])):co(2);case 214:return co(4);case 215:return co(8);case 216:return co(16);case 217:return t=te[N++],cr>=N?Wr.slice(N-Wt,(N+=t)-Wt):lv(t);case 218:return t=Ie.getUint16(N),N+=2,cr>=N?Wr.slice(N-Wt,(N+=t)-Wt):cv(t);case 219:return t=Ie.getUint32(N),N+=4,cr>=N?Wr.slice(N-Wt,(N+=t)-Wt):hv(t);case 220:return t=Ie.getUint16(N),N+=2,Gp(t);case 221:return t=Ie.getUint32(N),N+=4,Gp(t);case 222:return t=Ie.getUint16(N),N+=2,Rp(t);case 223:return t=Ie.getUint32(N),N+=4,Rp(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var av=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function tl(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>av.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(je);return i.highByte===0&&(i.read=Ep(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=je()}return r}return e.count=0,i.highByte===0?Ep(t,e):e}var Ep=(i,t)=>function(){let e=te[N++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Te[r]||Up()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=tl(o,i)),o.read()};function Up(){let i=Wp(()=>(te=null,Lt.getStructures()));return Te=Lt._mergeStructures(i,Te)}var Za=Is,lv=Is,cv=Is,hv=Is;function Is(i){let t;if(i<16&&(t=rl(i)))return t;if(i>64&&Ya)return Ya.decode(te.subarray(N,N+=i));let e=N+i,r=[];for(t="";N<e;){let o=te[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=te[N++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=te[N++]&63,s=te[N++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[N++]&63,s=te[N++]&63,a=te[N++]&63,l=(o&7)<<18|n<<12|s<<6|a;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=ot.apply(String,r),r.length=0)}return r.length>0&&(t+=ot.apply(String,r)),t}function Gp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=je();return t}function Rp(i){if(Lt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[kp()]=je();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(je(),je());return t}}var ot=String.fromCharCode;function jp(i){let t=N,e=new Array(i);for(let r=0;r<i;r++){let o=te[N++];if((o&128)>0){N=t;return}e[r]=o}return ot.apply(String,e)}function rl(i){if(i<4)if(i<2){if(i===0)return"";{let t=te[N++];if((t&128)>1){N-=1;return}return ot(t)}}else{let t=te[N++],e=te[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(i<3)return ot(t,e);let r=te[N++];if((r&128)>0){N-=3;return}return ot(t,e,r)}else{let t=te[N++],e=te[N++],r=te[N++],o=te[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(i<6){if(i===4)return ot(t,e,r,o);{let n=te[N++];if((n&128)>0){N-=5;return}return ot(t,e,r,o,n)}}else if(i<8){let n=te[N++],s=te[N++];if((n&128)>0||(s&128)>0){N-=6;return}if(i<7)return ot(t,e,r,o,n,s);let a=te[N++];if((a&128)>0){N-=7;return}return ot(t,e,r,o,n,s,a)}else{let n=te[N++],s=te[N++],a=te[N++],l=te[N++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){N-=8;return}if(i<10){if(i===8)return ot(t,e,r,o,n,s,a,l);{let c=te[N++];if((c&128)>0){N-=9;return}return ot(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=te[N++],h=te[N++];if((c&128)>0||(h&128)>0){N-=10;return}if(i<11)return ot(t,e,r,o,n,s,a,l,c,h);let p=te[N++];if((p&128)>0){N-=11;return}return ot(t,e,r,o,n,s,a,l,c,h,p)}else{let c=te[N++],h=te[N++],p=te[N++],u=te[N++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){N-=12;return}if(i<14){if(i===12)return ot(t,e,r,o,n,s,a,l,c,h,p,u);{let d=te[N++];if((d&128)>0){N-=13;return}return ot(t,e,r,o,n,s,a,l,c,h,p,u,d)}}else{let d=te[N++],m=te[N++];if((d&128)>0||(m&128)>0){N-=14;return}if(i<15)return ot(t,e,r,o,n,s,a,l,c,h,p,u,d,m);let g=te[N++];if((g&128)>0){N-=15;return}return ot(t,e,r,o,n,s,a,l,c,h,p,u,d,m,g)}}}}}function Ka(i){return Lt.copyBuffers?Uint8Array.prototype.slice.call(te,N,N+=i):te.subarray(N,N+=i)}function co(i){let t=te[N++];if(bt[t])return bt[t](te.subarray(N,N+=i));throw new Error("Unknown extension type "+t)}var zp=new Array(4096);function kp(){let i=te[N++];if(i>=160&&i<192){if(i=i-160,cr>=N)return Wr.slice(N-Wt,(N+=i)-Wt);if(!(cr==0&&qr<180))return Za(i)}else return N--,je();let t=(i<<5^(i>1?Ie.getUint16(N):i>0?te[N]:0))&4095,e=zp[t],r=N,o=N+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ie.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=te[r++],n!=e[s++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],zp[t]=e,e.bytes=i;r<o;)n=Ie.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=te[r++],e.push(n);let a=i<16?rl(i):jp(i);return a!=null?e.string=a:e.string=Za(i)}var Vp=(i,t)=>{var e=je();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Te[i];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[i]=o),Te[i]=e,e.read=tl(e,r),e.read()},Hp=typeof self=="object"?self:global;bt[0]=()=>{};bt[0].noBuffer=!0;bt[101]=()=>{let i=je();return(Hp[i[0]]||Error)(i[1])};bt[105]=i=>{let t=Ie.getUint32(N-4);Ar||(Ar=new Map);let e=te[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ar.set(t,o);let n=je();return o.used?Object.assign(r,n):(o.target=n,n)};bt[112]=i=>{let t=Ie.getUint32(N-4),e=Ar.get(t);return e.used=!0,e.target};bt[115]=()=>new Set(je());var ol=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");bt[116]=i=>{let t=i[0],e=ol[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Hp[e](Uint8Array.prototype.slice.call(i,1).buffer)};bt[120]=()=>{let i=je();return new RegExp(i[0],i[1])};bt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=N;N+=t-4,Gt=[je(),je()],Gt.position0=0,Gt.position1=0;let r=N;N=e;try{return je()}finally{N=r}};bt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function Wp(i){let t=qr,e=N,r=Qa,o=Wt,n=cr,s=Wr,a=Ja,l=Ar,c=Gt,h=new Uint8Array(te.slice(0,qr)),p=Te,u=Te.slice(0,Te.length),d=Lt,m=Ko,g=i();return qr=t,N=e,Qa=r,Wt=o,cr=n,Wr=s,Ja=a,Ar=l,Gt=c,te=h,Ko=m,Te=p,Te.splice(0,Te.length,...u),Lt=d,Ie=new DataView(te.buffer,te.byteOffset,te.byteLength),g}function Ls(){te=null,Ar=null,Te=null}function qp(i){i.unpack?bt[i.type]=i.unpack:bt[i.type]=i}var Ps=new Array(147);for(let i=0;i<256;i++)Ps[i]=+("1e"+Math.floor(45.15-i*.30103));var Ms=new hr({useRecords:!1}),pv=Ms.unpack,uv=Ms.unpackMultiple,dv=Ms.unpack,As={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},mv=new Float32Array(1),DP=new Uint8Array(mv.buffer,0,4);var Os;try{Os=new TextEncoder}catch{}var Ds,il,Bs=typeof Buffer<"u",nl=Bs?Buffer.allocUnsafeSlow:Uint8Array,Yp=Bs?Buffer:Uint8Array,$p=Bs?4294967296:2144337920,R,qe,T=0,pr,ur=null,fv=/[\u0080-\uFFFF]/,$n=Symbol("record-id"),ho=class extends hr{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=Yp.prototype.utf8Write?function(f,D,C){return R.utf8Write(f,D,C)}:Os&&Os.encodeInto?function(f,D){return Os.encodeInto(f,R.subarray(D)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=u?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||m+d>64,x=d+64,y=d+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,S=0;this.pack=this.encode=function(f,D){if(R||(R=new nl(8192),qe=new DataView(R.buffer,0,8192),T=0),pr=R.length-10,pr-T<2048?(R=new nl(R.length),qe=new DataView(R.buffer,0,R.length),pr=R.length-10,T=0):T=T+7&2147483640,r=T,a=h.structuredClone?new Map:null,h.bundleStrings?(ur=["",""],R[T++]=214,R[T++]=98,ur.position=T-r,T+=4):ur=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let C=o.sharedLength||0;if(C>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<C;I++){let L=o[I];if(!L)continue;let M,k=o.transitions;for(let W=0,ne=L.length;W<ne;W++){let pe=L[W];M=k[pe],M||(M=k[pe]=Object.create(null)),k=M}k[$n]=I+64}l=C}p||(o.nextId=C+64)}n&&(n=!1),s=o||[];try{if(b(f),ur){qe.setUint32(ur.position+r,T-ur.position-r);let C=ur;ur=null,b(C[0]),b(C[1])}if(h.offset=T,a&&a.idsToInsert){T+=a.idsToInsert.length*6,T>pr&&w(T),h.offset=T;let C=yv(R.subarray(r,T),a.idsToInsert);return a=null,C}return D&Qp?(R.start=r,R.end=T,R):R.subarray(r,T)}finally{if(o){if(S<10&&S++,P>1e4)o.transitions=null,S=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let C=0,I=v.length;C<I;C++)v[C][$n]=0;v=[]}if(n&&h.saveStructures){let C=o.sharedLength||d;o.length>C&&(o=o.slice(0,C));let I=R.subarray(r,T);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(f)):(l=C,I)}}D&Cv&&(T=r)}};let b=f=>{T>pr&&(R=w(T));var D=typeof f,C;if(D==="string"){let I=f.length;if(ur&&I>=8&&I<4096){let k=fv.test(f);ur[k?0:1]+=f,R[T++]=193,b(k?-I:I);return}let L;I<32?L=1:I<256?L=2:I<65536?L=3:L=5;let M=I*3;if(T+M>pr&&(R=w(T+M)),I<64||!c){let k,W,ne,pe=T+L;for(k=0;k<I;k++)W=f.charCodeAt(k),W<128?R[pe++]=W:W<2048?(R[pe++]=W>>6|192,R[pe++]=W&63|128):(W&64512)===55296&&((ne=f.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),k++,R[pe++]=W>>18|240,R[pe++]=W>>12&63|128,R[pe++]=W>>6&63|128,R[pe++]=W&63|128):(R[pe++]=W>>12|224,R[pe++]=W>>6&63|128,R[pe++]=W&63|128);C=pe-T-L}else C=c(f,T+L,M);C<32?R[T++]=160|C:C<256?(L<2&&R.copyWithin(T+2,T+1,T+1+C),R[T++]=217,R[T++]=C):C<65536?(L<3&&R.copyWithin(T+3,T+2,T+2+C),R[T++]=218,R[T++]=C>>8,R[T++]=C&255):(L<5&&R.copyWithin(T+5,T+3,T+3+C),R[T++]=219,qe.setUint32(T,C),T+=4),T+=C}else if(D==="number")if(f>>>0===f)f<64?R[T++]=f:f<256?(R[T++]=204,R[T++]=f):f<65536?(R[T++]=205,R[T++]=f>>8,R[T++]=f&255):(R[T++]=206,qe.setUint32(T,f),T+=4);else if(f>>0===f)f>=-32?R[T++]=256+f:f>=-128?(R[T++]=208,R[T++]=f+256):f>=-32768?(R[T++]=209,qe.setInt16(T,f),T+=2):(R[T++]=210,qe.setInt32(T,f),T+=4);else{let I;if((I=this.useFloat32)>0&&f<4294967296&&f>=-2147483648){R[T++]=202,qe.setFloat32(T,f);let L;if(I<4||(L=f*Ps[(R[T]&127)<<1|R[T+1]>>7])>>0===L){T+=4;return}else T--}R[T++]=203,qe.setFloat64(T,f),T+=8}else if(D==="object")if(!f)R[T++]=192;else{if(a){let L=a.get(f);if(L){if(!L.id){let M=a.idsToInsert||(a.idsToInsert=[]);L.id=M.push(L)}R[T++]=214,R[T++]=112,qe.setUint32(T,L.id),T+=4;return}else a.set(f,{offset:T-r})}let I=f.constructor;if(I===Object)_(f,!0);else if(I===Array){C=f.length,C<16?R[T++]=144|C:C<65536?(R[T++]=220,R[T++]=C>>8,R[T++]=C&255):(R[T++]=221,qe.setUint32(T,C),T+=4);for(let L=0;L<C;L++)b(f[L])}else if(I===Map){C=f.size,C<16?R[T++]=128|C:C<65536?(R[T++]=222,R[T++]=C>>8,R[T++]=C&255):(R[T++]=223,qe.setUint32(T,C),T+=4);for(let[L,M]of f)b(L),b(M)}else{for(let L=0,M=Ds.length;L<M;L++){let k=il[L];if(f instanceof k){let W=Ds[L];if(W.write){W.type&&(R[T++]=212,R[T++]=W.type,R[T++]=0),b(W.write.call(this,f));return}let ne=R,pe=qe,se=T;R=null;let Y;try{Y=W.pack.call(this,f,U=>(R=ne,ne=null,T+=U,T>pr&&w(T),{target:R,targetView:qe,position:T-U}),b)}finally{ne&&(R=ne,qe=pe,T=se,pr=R.length-10)}Y&&(Y.length+T>pr&&w(Y.length+T),T=gv(Y,R,T,W.type));return}}_(f,!f.hasOwnProperty)}}else if(D==="boolean")R[T++]=f?195:194;else if(D==="bigint"){if(f<BigInt(1)<<BigInt(63)&&f>=-(BigInt(1)<<BigInt(63)))R[T++]=211,qe.setBigInt64(T,f);else if(f<BigInt(1)<<BigInt(64)&&f>0)R[T++]=207,qe.setBigUint64(T,f);else if(this.largeBigIntToFloat)R[T++]=203,qe.setFloat64(T,Number(f));else throw new RangeError(f+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");T+=8}else if(D==="undefined")this.encodeUndefinedAsNil?R[T++]=192:(R[T++]=212,R[T++]=0,R[T++]=0);else if(D==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},_=this.useRecords===!1?this.variableMapSize?f=>{let D=Object.keys(f),C=D.length;C<16?R[T++]=128|C:C<65536?(R[T++]=222,R[T++]=C>>8,R[T++]=C&255):(R[T++]=223,qe.setUint32(T,C),T+=4);let I;for(let L=0;L<C;L++)b(I=D[L]),b(f[I])}:(f,D)=>{R[T++]=222;let C=T-r;T+=2;let I=0;for(let L in f)(D||f.hasOwnProperty(L))&&(b(L),b(f[L]),I++);R[C+++r]=I>>8,R[C+r]=I&255}:f=>{let D=Object.keys(f),C,I=s.transitions||(s.transitions=Object.create(null)),L=0;for(let k=0,W=D.length;k<W;k++){let ne=D[k];C=I[ne],C||(C=I[ne]=Object.create(null),L++),I=C}let M=I[$n];if(M)M>=96&&g?(R[T++]=((M-=96)&31)+96,R[T++]=M>>5):R[T++]=M;else{M=s.nextId,M||(M=64),M<x&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(M=s.nextOwnId,M<y||(M=x),s.nextOwnId=M+1):(M>=y&&(M=x),s.nextId=M+1);let k=D.highByte=M>=96&&g?M-96>>5:-1;I[$n]=M,s[M-64]=D,M<x?(D.isShared=!0,s.sharedLength=M-63,n=!0,k>=0?(R[T++]=(M&31)+96,R[T++]=k):R[T++]=M):(k>=0?(R[T++]=213,R[T++]=114,R[T++]=(M&31)+96,R[T++]=k):(R[T++]=212,R[T++]=114,R[T++]=M),L&&(P+=S*L),v.length>=m&&(v.shift()[$n]=0),v.push(I),b(D))}for(let k=0,W=D.length;k<W;k++)b(f[D[k]])},w=f=>{let D;if(f>16777216){if(f-r>$p)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min($p,Math.round(Math.max((f-r)*(f>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(f-r<<2,R.length-1)>>12)+1<<12;let C=new nl(D);return qe=new DataView(C.buffer,0,D),R.copy?R.copy(C,0,r,f):C.set(R.slice(r,f)),T-=r,r=0,pr=C.length-10,R=C}}useBuffer(t){R=t,qe=new DataView(R.buffer,R.byteOffset,R.byteLength),T=0}};il=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,qn];Ds=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:s}=t(6);o[s++]=214,o[s++]=255,n.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:s}=t(10);o[s++]=215,o[s++]=255,n.setUint32(s,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:n,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,n.setUint32(s,i.getMilliseconds()*1e6),n.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?Xp(i,16,t):Kp(Bs?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==Yp&&this.structuredClone?Xp(i,ol.indexOf(e.name),t):Kp(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function Xp(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:s}=e(4+o);n[s++]=199,n[s++]=o+1}else if(o+1<65536){var{target:n,position:s}=e(5+o);n[s++]=200,n[s++]=o+1>>8,n[s++]=o+1&255}else{var{target:n,position:s,targetView:a}=e(7+o);n[s++]=201,a.setUint32(s,o+1),s+=4}n[s++]=116,n[s++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s)}function Kp(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function gv(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function yv(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,s)=>n.offset>s.offset?1:-1);e=t.pop();){let n=e.offset,s=e.id;i.copyWithin(n+r,n,o),r-=6;let a=n+r;i[a++]=214,i[a++]=105,i[a++]=s>>24,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=s&255,o=n}return i}function po(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");il.unshift(i.Class),Ds.unshift(i)}qp(i)}var Jp=new ho({useRecords:!1}),xv=Jp.pack,vv=Jp.pack;var{NEVER:bv,ALWAYS:Sv,DECIMAL_ROUND:wv,DECIMAL_FIT:Nv}=As,Qp=512,Cv=1024;var Zp=new ho({structuredClone:!0});po({Class:kt.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,kt.prototype),i}});po({Class:Ve.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ve.prototype),i}});po({Class:Ht.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ht.prototype),i}});po({Class:Hn.prototype.constructor,type:4,write(i){return i.id},read(i){return new Hn(i)}});po({Class:Wn.prototype.constructor,type:5,write(i){return i.data},read(i){return new Wn(i)}});function Tv(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function sl(i){if(xs(i))return i;if(Array.isArray(i))return i.map(sl);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=sl(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var _s;(r=>{function i(o){return Zp.pack(o)}r.serialize=i;function t(o){return Zp.unpack(o)}r.deserialize=t;function e(o){return Tv(i(sl(o))).toString()}r.checksum=e})(_s||(_s={}));var Es;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Es||(Es={}));var Gs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Et.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Gs||(Gs={}));var al;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(al||(al={}));var ll;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(ll||(ll={}));var Rs;(t=>t.defaultData={...ll.defaultData,...al.defaultData,cloner:null,booleanExclude:null})(Rs||(Rs={}));var cl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(cl||{}),hl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(hl||{}),pl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(pl||{}),zs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Et.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(zs||(zs={}));var Yo;(r=>{function i(o,n){return o==="light"&&n?t(n):e(o)}r.defaultData=i;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:_t.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{..._t.fromHex(6710886),a:1},colorB:{..._t.fromHex(6710886),a:1},colorC:{..._t.fromHex(16777215),a:1},colorD:{..._t.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Et.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Et.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Et.fromHexAndA(0,1),contourColor:Et.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Yo||(Yo={}));var uo;(a=>{function i(l){return!l.layers.some(h=>{if(h.data.type==="texture"&&h.data.projection!==0||h.data.type==="depth"&&!h.data.isWorldSpace||h.data.type==="noise"||h.data.type==="displace")return!0})&&!e(l)}a.isMergable=i;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,u])=>{c+=`${p}${u}`,Array.isArray(u)?u.forEach(d=>c+=`${d}`):typeof u=="object"?Object.values(u).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${u}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Ve}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",h="layer2"){let p=new Ve;return p.push({fi:0,data:Yo.defaultData("light",l),id:c}),p.push({fi:1,data:Yo.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=Yo.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Ve;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:Yo.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(uo||(uo={}));var Jo;(t=>{function i(){return{points:new Ve,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(Jo||(Jo={}));var Vs;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Vs||(Vs={}));var Xn;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Jo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=i})(Xn||(Xn={}));var Kn;(o=>{o.identity={...fs.identity,hiddenMatrix:Hr.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,s){return{position:s?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Wo.isEqual(n.position,s.position)?null:s.position,rotation:Wo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Wo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Hr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Kn||(Kn={}));var Or;(t=>t.defaultData={states:new Ve,events:new Ve,visible:!0,raycastLock:!1,...Kn.identity})(Or||(Or={}));var eu;(t=>t.defaultData={type:"Empty",...Or.defaultData})(eu||(eu={}));var Fs;(t=>t.defaultData={type:"Mesh",...Or.defaultData,...Rs.defaultData})(Fs||(Fs={}));var tu;(t=>t.defaultData={type:"TextFrame",...Or.defaultData,...zs.defaultData})(tu||(tu={}));var Us;(t=>t.defaultData={...Or.defaultData,...Kn.identity,...lo.defaultData})(Us||(Us={}));var ru;(t=>{function i(e){return{...Or.defaultData,...Gs.defaultData(e)}}t.defaultData=i})(ru||(ru={}));var ou;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Hr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ve,events:new Ve,...lo.defaultData},r.defaultMeshObject={name:"Rectangle",...Or.defaultData,...Fs.defaultData,geometry:Xn.defaultData("RectangleGeometry"),material:uo.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Or.defaultData,...Fs.defaultData,geometry:Xn.defaultData("BooleanGeometry"),material:uo.defaultTwoLayerData("phong","layer1","layer2")}))(ou||(ou={}));var nu;(e=>{function i(r,o){if(o===void 0)return r;let n={...r};return"material"in n&&"material"in o&&o.material&&(n.material=$a(n.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&ao(c,l)}}).data),n.materials&&o.materials&&(n.materials=$a(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,h]of Object.entries(l.layers)){let p=s[a]?.layers?.data(c);p&&ao(p,h)}}}).data),n}e.patchMaterialState=i;function t(r,o){if(o===void 0)return r;let n={...r};if(Object.assign(n,Kn.merge(n,o)),Ho.is(r.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(r.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Es.is(r.type)){let s=o;n.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=_t.clone(s.color))}return n}e.patch=t})(nu||(nu={}));var au=require("three");var Ee=require("three"),su=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},i.parameters),r=e.width/2,o=e.radiusTop??r,n=e.radiusBottom??r;return o===n?(o=r,n=r):o>n?(o=r,n=n*r/o):(o=o*r/n,n=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:n})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:u,hollow:d}=i.parameters,m;return p||d?m=new Yn(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,d):m=new Ee.CylinderBufferGeometry(c,h,r,o,n,s,a,l*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...i,type:"CylinderGeometry"}})}};function $r(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function iu(i){return new Ee.Vector2(i.y,-i.x)}var Yn=class extends Ee.BufferGeometry{constructor(t,e,r,o,n,s,a,l,c,h,p,u,d=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,h=0);let m=[],g=[],x=[],y=[],v=0,P=r/2,S=new Ee.Vector3,b=new Ee.Vector3;d&&t==0&&(t=c),d&&e==0&&(e=h);let _=new Ee.Vector2(t,P),w=new Ee.Vector2(e,-P),f=null,D=null,C=null,I=null,L=_.clone().sub(w),M=0,k=0,W=0;u>0&&(M=Math.min(t,e)*(1-u),k=t-M,W=e-M);let ne=_.clone();ne.x-=M;let pe=Math.PI-L.angle(),se=L.angle(),Y=Math.tan(se/2),U=Math.tan(pe/2),z=Y+U,E=u?z:U,B=u?z:Y;if(c=Math.min(c,(t-k)/E,L.length()/z),h=Math.min(h,(e-W)/B,L.length()/z),c>0){let F=c/Y;f=_.clone().sub(new Ee.Vector2(F,c)),u&&(C=f.clone(),C.x-=M-z*c),_.sub(L.clone().setLength(F))}if(h>0){let F=h/U;D=w.clone().sub(new Ee.Vector2(F,-h)),w.add(L.clone().setLength(F)),u&&(I=D.clone(),I.x-=M-z*h,ne.sub(L.clone().setLength(F)))}L=_.clone().sub(w);let A=L.length()<.5,G=[];for(let F=0;F<=o;F++){let O=[],q=F/o,Z=q*l+a,ee=new Ee.Vector2(Math.sin(Z),Math.cos(Z));I&&D?(J(O,q,ee,pe,h,I,-1,!0),J(O,q,ee,se,h,D,-1,!1)):D?(j(O,ee,D.x,0,-1),J(O,q,ee,se,h,D,-1,!1)):s||j(O,ee,e,W,-1);let H=iu(L).normalize();if($r(H,ee,S),!A)for(let Q=0;Q<=n;Q++){let $=Q/n,re=L.clone().multiplyScalar($).add(w);$r(re,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}if(C&&f?(J(O,q,ee,pe,c,f,1,!1),J(O,q,ee,se,c,C,1,!0)):f?(J(O,q,ee,pe,c,f,1,!1),j(O,ee,f.x,0,1)):s||j(O,ee,t,k,1),u&&!A){let Q=iu(L).multiplyScalar(-1).normalize();$r(Q,ee,S);for(let $=0;$<=n;$++){let re=$/n,ce=L.clone().multiplyScalar(-re).add(ne);$r(ce,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}}u&&!s&&O.push(O[0]),G.push(O)}for(let F=0;F<G.length-1;F++)for(let O=0;O<G[0].length-1;O++){if(s&&u&&O==n)continue;let q=G[F][O],Z=G[F+1][O],ee=G[F+1][O+1],H=G[F][O+1],Q=g[ee*3+0],$=g[ee*3+2];m.push(q,Z,H),(Q!=0||$!=0)&&m.push(Z,ee,H)}l<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new Ee.Float32BufferAttribute(g,3)),this.setAttribute("normal",new Ee.Float32BufferAttribute(x,3)),this.setAttribute("uv",new Ee.Float32BufferAttribute(y,2));function J(F,O,q,Z,ee,H,Q,$){for(let re=0;re<p+1;re++){let ce=re/p,ie=Q<0?ce:1-ce;$&&(ie-=1),ie*=Z;let fe=new Ee.Vector2(Math.sin(ie),Math.cos(ie)*Q),Ue=fe.clone().multiplyScalar(ee).add(H);$r(Ue,q,b),g.push(b.x,b.y,b.z),$r(fe,q,S),x.push(S.x,S.y,S.z),y.push(O,.5+b.y/r),F.push(v++)}}function j(F,O,q,Z,ee){let H=new Ee.Vector3,Q=new Ee.Vector2,$=[q,Z];ee<0&&$.reverse();for(let re of $)Q.set(re,P*ee),$r(Q,O,H),g.push(H.x,H.y,H.z),x.push(0,ee,0),y.push(.5,.5),F.push(v++)}function V(F,O,q){let Z=new Ee.Vector2(Math.sin(q),Math.cos(q)),ee=new Ee.Vector2(-Math.cos(q),Math.sin(q)),H=new Ee.Vector3,Q=F<0?(ce,ie,fe)=>m.push(ce,ie,fe):(ce,ie,fe)=>m.push(ce,fe,ie),$=new Ee.Vector2((t+e+k+W)/4,0);$r($,Z,H),g.push(H.x,H.y,H.z),x.push(ee.x,0,ee.y),y.push(.5,.5);let re=v++;for(let ce of O){let ie=g.slice(ce*3,ce*3+3);g.push(...ie),x.push(ee.x,0,ee.y);let fe=y.slice(ce*2,ce*2+2);y.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)Q(re,ce,ce+1);Q(re,v-1,re+1)}}};var lu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=i.parameters,u;return c>0||h>0||l<360?u=new Yn(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new au.ConeBufferGeometry(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:{...i,type:"ConeGeometry"}})}};var It=require("three"),cu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:l}=i.parameters,c;return a==0?c=new It.BoxBufferGeometry(t,e,r,o,n,s):c=new dl(t,e,r,o,n,s,a,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},ul=Math.PI/2,dl=class extends It.BufferGeometry{constructor(t=1,e=1,r=1,o=1,n=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],u=[],d=[],m=0,g=0;x("z","y","x",-1,-1,r,e,t,s,n,0),x("z","y","x",1,-1,r,e,-t,s,n,1),x("x","z","y",1,1,t,r,e,o,s,2),x("x","z","y",1,-1,t,r,-e,o,s,3),x("x","y","z",1,-1,t,e,r,o,n,4),x("x","y","z",-1,-1,t,e,-r,o,n,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,o,0),y("x","y","z",1,-1,1,t,e,r,o,1),y("x","y","z",-1,1,1,t,e,r,o,0),y("x","y","z",1,1,-1,t,e,r,o,1),y("y","x","z",-1,-1,1,e,t,r,n,0),y("y","x","z",1,-1,-1,e,t,r,n,1),y("y","x","z",1,1,1,e,t,r,n,1),y("y","x","z",-1,1,-1,e,t,r,n,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new It.Float32BufferAttribute(p,3)),this.setAttribute("normal",new It.Float32BufferAttribute(u,3)),this.setAttribute("uv",new It.Float32BufferAttribute(d,2));function x(P,S,b,_,w,f,D,C,I,L,M){let k=(f-2*a)/I,W=(D-2*a)/L,ne=f/2-a,pe=D/2-a,se=C/2,Y=I+1,U=L+1,z=0,E=0,B=new It.Vector3;for(let A=0;A<U;A++){let G=A*W-pe;for(let J=0;J<Y;J++){let j=J*k-ne;B[P]=j*_,B[S]=G*w,B[b]=se,p.push(B.x,B.y,B.z),B[P]=0,B[S]=0,B[b]=C>0?1:-1,u.push(B.x,B.y,B.z),d.push(J/I),d.push(1-A/L),z+=1}}for(let A=0;A<L;A++)for(let G=0;G<I;G++){let J=m+G+Y*A,j=m+G+Y*(A+1),V=m+(G+1)+Y*(A+1),F=m+(G+1)+Y*A;h.push(J,j,F),h.push(j,V,F),E+=6}c.addGroup(g,E,M),g+=E,m+=z}function y(P,S,b,_,w,f,D,C,I,L,M){let k=(D-2*a)/L,W=D/2-a,ne=C/2-a,pe=I/2,se=L+1,Y=0,U=0,z=new It.Vector3,E=new It.Vector3;for(let B=0;B<l+1;B++){let A=B/l*ul,G=Math.sin(A)*a,J=(1-Math.cos(A))*a,j=Math.sin(A),V=Math.cos(A);z[S]=(ne+G)*w,z[b]=(pe-J)*f,E[P]=0,E[S]=j*Math.sign(z[S]),E[b]=V*Math.sign(z[b]);for(let F=0;F<se;F++){let O=F*k-W;z[P]=O*_,p.push(z.x,z.y,z.z),u.push(E.x,E.y,E.z),d.push(F/L),d.push(0),Y+=1}}for(let B=0;B<l;B++)for(let A=0;A<L;A++){let G=m+A+se*B,J=m+A+se*(B+1),j=m+(A+1)+se*(B+1),V=m+(A+1)+se*B;h.push(G,J,V),h.push(J,j,V),U+=6}c.addGroup(g,U,M),g+=U,m+=Y}function v(P,S,b){let _=new It.Vector3,w=new It.Vector3(t/2,e/2,r/2);w.subScalar(a);let f=[],D=P*S*b>0?(I,L,M)=>h.push(I,L,M):(I,L,M)=>h.push(I,M,L);for(let I=0;I<=l;I++){let L=[],M=ul*(1-I/l),k=Math.cos(M),W=Math.sin(M),ne=0;for(let pe=0;pe<=I;pe++){let se=Math.cos(ne),Y=Math.sin(ne);_.x=k*se,_.y=W,_.z=k*Y;let U=w.clone().addScaledVector(_,a);p.push(P*U.x,S*U.y,b*U.z),u.push(P*_.x,S*_.y,b*_.z),d.push(0,0),L.push(m++),ne+=ul/I}f.push(L)}let C=f.length-1;for(let I=0;I<C;I++){let L=f[I],M=f[I+1],k=L.length-1;D(L[0],M[1],M[0]);for(let W=1;W<=k;W++)D(L[W-1],L[W],M[W]),D(L[W],M[W+1],M[W])}}}};var ke=require("three"),Xr=class extends ke.BufferGeometry{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new ke.Float32BufferAttribute(a,3)),this.setAttribute("normal",new ke.Float32BufferAttribute(c,3)),this.setAttribute("uv",new ke.Float32BufferAttribute(l,2));return;function h(){n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new ke.Vector3,g=m.clone(),x=new ke.Triangle,y=n*o,v=o-y,P=s+1,S=new ke.Vector3,b=(Y,U)=>S.subVectors(Y,U).normalize(),_=(Y,U)=>Array(Y).fill(void 0).map(U),w=_(t.length/3,(Y,U)=>new ke.Vector3().fromArray(t,U*3).setLength(o)),f=[],D=1e6;for(let Y=0;Y<w.length;Y++){let U=w[Y],z=[],E,B,A,G=1e10,J=-1;for(;(J=e.indexOf(Y,J+1))!=-1;){let O=J-J%3;E=e[O+(J+1)%3],B=e[O+(J+2)%3],A=U.distanceToSquared(w[E]),G=Math.min(G,A),z.push([E,B,A])}G+=1e-6;let j=[],V=0,F=z.length;for(let O=0;O<F;O++){[E,B,A]=z[V];let q=f[E]?.includes(Y)==!0;A<=G&&j.push(E+ +q*D),V=z.findIndex(Z=>Z[0]==B)}f.push(j)}let C=[];{let Y=0,U=0,z,E,B=d==3;for(let A=0;A<=s;A++){z=A*(A+1)/2,E=(A+1)*(A+2)/2;for(let G=0;G<s-A;G++)[Y,U]=[z+G+A+2,E+G+A+3],C.push(z,E,...B?[U,z]:[Y,E],U,Y),[z,E]=[Y,U];C.push(z,E,z+s+2)}}let I=m.clone(),L=m.clone(),M=m.clone(),k=m.clone(),W=m.clone(),ne=[],pe=_(w.length,()=>_(d,()=>m.clone()));for(let Y=0;Y<w.length;Y++){m.copy(w[Y]).normalize(),I.copy(m).multiplyScalar(v);let U=f[Y];for(let j=0;j<U.length;j++){let V=U[j],F=U[(j+1)%d];x.setFromPointsAndIndices(w,Y,V%D,F%D),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(I,pe[Y][j])}let z=[],E=[],B=[],A=new ke.Vector3;s==0&&[...pe[Y]].reduce((j,V)=>j.add(V),A).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],F=(j-1+d)%d,O=pe[Y][F],q=pe[Y][j];m.copy(O).sub(I),g.copy(q).sub(I);let Z=I.angleTo(m),ee=m.angleTo(g),H=Math.cos(Z)*y;s==0?L.copy(A):L.copy(I).setLength(v+H),E.push(H);let Q=[L,O,q];for(let $=0;$<2;$++){let re=Q[$],ce=Q[$+1];k.subVectors(re,I),W.subVectors(ce,I),M.crossVectors(k,W).normalize();for(let ie=0;ie<P;ie++){let fe=[Z,ee][$]*ie/P;m.copy(k).applyAxisAngle(M,fe).add(I),z.push(m.clone()),$&&(b(m,I),V.push([ie==0?re:m.clone(),S.clone()]))}$&&(b(ce,I),V.push([ce,S.clone()]))}B.push(V)}ne.push(B);let G=2*P,J=2;for(let j=0;j<d;j++){let V=G*j,F=G*((j+1)%d),O=[z[V]];for(let Z=1;Z<P;Z++){k=z[V+Z],W=z[F+Z],O.push(k);for(let ee=1,H=Z-J+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(I).setLength(E[j]).add(I),O.push(m.clone());O.push(W)}for(let Z=0;Z<P;Z++)O.push(z[Z+P+V]);O.push(z[F+P]);let q=C.map(Z=>O[Z]);a.push(...q.map(Z=>[Z.x,Z.y,Z.z]).flat()),c.push(...q.map(Z=>(b(Z,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let Y=0;Y<f.length;Y++)for(let U=0;U<d;U++){let z=f[Y][U];if(z<D){let E=f[z].findIndex(G=>G%D==Y),B=ne[Y][U],A=ne[z][E];for(let G=0;G<P;G++){let J=B[G],j=A[P-G],V=B[G+1],F=A[P-(G+1)];[J,j,V,V,j,F].forEach(O=>{a.push(O[0].x,O[0].y,O[0].z),c.push(O[1].x,O[1].y,O[1].z)})}se.push(B[0][0],A[P][0],B[P][0],A[0][0])}}for(;se.length;){let Y,U,z,E;[Y,U]=se.splice(0,2);let B=[Y];for(;Y!=U;)B.push(U),z=se.indexOf(U),E=z%2,U=se.splice(z-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let A=S.dot(B[0])<0;A&&S.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +A],B[G+1-+A],B[0]].forEach(J=>{a.push(J.x,J.y,J.z),c.push(S.x,S.y,S.z)})}}function p(){let u=new ke.Vector3;for(let w=0;w<a.length;w+=3){u.x=a[w+0],u.y=a[w+1],u.z=a[w+2];let f=b(u)/2/Math.PI+.5,D=_(u)/Math.PI+.5;l.push(f,1-D)}let d=new ke.Vector3,m=new ke.Vector3,g=new ke.Vector3,x=new ke.Vector3,y=new ke.Vector2,v=new ke.Vector2,P=new ke.Vector2,S=(w,f,D,C)=>{C<0&&w.x===1&&(l[f]=w.x-1),D.x===0&&D.z===0&&(l[f]=C/2/Math.PI+.5)};for(let w=0,f=0;w<a.length;w+=9,f+=6){d.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[f+0],l[f+1]),v.set(l[f+2],l[f+3]),P.set(l[f+4],l[f+5]),x.copy(d).add(m).add(g).divideScalar(3);let D=b(x);S(y,f+0,d,D),S(v,f+2,m,D),S(P,f+4,g,D)}for(let w=0;w<l.length;w+=6){let f=l[w+0],D=l[w+2],C=l[w+4],I=Math.max(f,D,C),L=Math.min(f,D,C);I>.9&&L<.1&&(f<.2&&(l[w+0]+=1),D<.2&&(l[w+2]+=1),C<.2&&(l[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function _(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var hu=require("three"),pu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Jn(t*.5,n,s):new hu.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Jn=class extends Xr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new Jn(t.radius,t.corner,t.cornerSides)}};var we=require("three");var ge=require("three"),Qn=1e-12,Qo=class{constructor(t){this.position=new ge.Vector2;this.startPosition=new ge.Vector2;this.uuid=ge.MathUtils.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Qo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Zo=class extends Qo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Zo(this.parent).copy(this)}},Qt=class extends Qo{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Zo(this),new Zo(this))}static create(e,r){let o=new Qt(e,new ge.Vector2(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Qt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new ge.Vector2,r=new ge.Vector2){let[o,n]=this.computeTangents();return o&&n&&(uu(o,e),uu(n,r)),[e,r]}computeTangent(e=new ge.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new ge.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function uu(i,t=new ge.Vector2){let e=i.length();return t.set(-i.y/e,i.x/e)}var fl=i=>i,en=new ge.Vector2,js=new ge.Vector2,Lv=new ge.Vector2,Iv=new ge.Vector2,Pv=new ge.Vector2,Mv=new ge.Vector2,mu=new ge.Vector3,fu=new ge.Vector3;function gu(i){let t=new ge.Vector2;t.addVectors(i.v0,en.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new ge.Vector2;return e.addVectors(i.v2,js.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new ge.CubicBezierCurve(i.v0,t,e,i.v2)}function Zn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function Av(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function Ov(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function gl(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function yu(i,t,e){return du(i,t)&&du(t,e)&&ml(i.position,t.position,e.position)}function ml(i,t,e){return en.copy(t).sub(i).cross(js.copy(e).sub(i))===0}function xu(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),s=(i.y+t.y)/2,a=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function vu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function bu(i,t,e,r,o,n){let s=t.x-i.x,a=t.y-i.y,l=e.x-i.x,c=e.y-i.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return gl(t,i,e)>Math.PI&&(h*=-1),Zn(c,a)?p=(a+c)*(r/h-.5)*8/3/(s-l):p=(s+l)*(r/h-.5)*8/3/(c-a),o.set(t.x-p*a,t.y+p*s),n.set(e.x+p*c,e.y-p*l),[o,n]}function yl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function du(i,t){return ml(i.position,i.controls[1].position,t.position)&&ml(i.position,t.controls[0].position,t.position)}function Su(i,t,e,r,o=.5){let n=en.subVectors(t,i).multiplyScalar(o).add(i),s=js.subVectors(e,t).multiplyScalar(o).add(t),a=Lv.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=Iv.subVectors(s,n).multiplyScalar(o).add(n),h=Pv.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=Mv.subVectors(h,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,u.x,u.y,h.x,h.y,p.x,p.y,r.x,r.y]}function wu(i,t,e=12,r=!0){let o=fu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=fl(t[l]),h=en,p=Kr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof ge.CubicBezierCurve||c instanceof ge.QuadraticBezierCurve||c instanceof ge.LineCurve){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&Ov(n,o))continue;n===void 0&&(n=mu),n.copy(o),i.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),i}function Nu(i,t,e,r=12,o=!0){let n=fu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=fl(t[l]),p=en,u=Kr(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof ge.CubicBezierCurve||h instanceof ge.QuadraticBezierCurve||h instanceof ge.LineCurve){if(h.getPoint(d/u,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=mu:(i.setXYZ(s,c.x,c.y,c.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),c.copy(n)}}return o&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),a}function xl(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let s=i[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Kr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Kr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Kr(i[0].roundedCurveCorner,t)*.5),r}function Kr(i,t=12){return i&&i instanceof ge.EllipseCurve?t*2:i&&(i instanceof ge.LineCurve||i instanceof ge.LineCurve3)?1:i&&i instanceof ge.SplineCurve?t*i.points.length:t}function Cu(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=fl(t[s]),l=Kr(a,e),c=en;for(let h=0;h<=l;h++)if(a instanceof ge.CubicBezierCurve||a instanceof ge.QuadraticBezierCurve||a instanceof ge.LineCurve){if(a.getPoint(h/l,c),o!==void 0&&Av(o,c,Qn))continue;o===void 0&&(o=js),o.copy(c),i.push(c.x,c.y),n++}}return Zn(i[0],i[i.length-2],Qn)&&Zn(i[1],i[i.length-1],Qn)&&(i.pop(),i.pop()),r&&n>1&&!(Zn(i[n-1],i[1],Qn)&&Zn(i[n-2],i[0],Qn))&&(i.push(i[0],i[1]),n++),i}var vl=new we.Vector2,Dv=new we.Vector2,Bv=new we.Vector2,_v=new we.Vector2,Ev=new we.Vector2,Gv=new we.Vector2,Ce=class extends we.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new we.EventDispatcher;this.plane=new we.Plane(new we.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=we.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ce;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Qt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Ce.createFromState(s)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,h=l.getPointIndexById(e);if(h<0)n+=c;else return h+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let n=this.shapeHoles[r],s=e-this.points.length;if(s<=n.points.length-1)return n.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=vl.set(e,r);for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let n=0,s=this.shapeHoles.length;n<s;n++)this.shapeHoles[n].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=we.MathUtils.generateUUID()){let n;e instanceof we.Vector2?n=e:n=new we.Vector2(e,r);let s=new Qt(o,n);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return wu(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xl(this.points,e,!1),this.roundedCurveDivisions=xl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Nu(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Cu(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Kr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let h=n[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let n=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(yl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(vl.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=a[p];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){yl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],l=this.points[n-1]??this.points[this.points.length-1],c=this.points[n+1]??this.points[0],h=a.roundness,p=l&&c&&yu(l,a,c);if(!a.controlsMoved()&&h>0&&!p){let u=a.curveBefore,d=a.curveAfter;if(u===void 0||d===void 0)continue;let m=a.roundedCurveBefore,g=a.roundedCurveAfter,x=u.getLength(),y=d.getLength(),v=Math.min(h,x*.499),P=Math.min(h,y*.499),S=Math.min(v,P),b=1-S/x,_=S/y,w=u.getPointAt(b,vl),f=d.getPointAt(_,Dv);this._subSplitCurve(u,m,b,w,void 0),this._subSplitCurve(d,g,_,void 0,f);let D;if(this.useCubicForRoundedCorners){let C=gl(w,a.position,f)/2,I=Math.tan(C)*w.distanceTo(a.position),[L,M]=xu(w,f,I,Bv,_v),k=vu(L,M,a.position),[W,ne]=bu(k,w,f,I,Ev,Gv);D=new we.CubicBezierCurve(w.clone(),W.clone(),ne.clone(),f.clone())}else D=new we.QuadraticBezierCurve(w.clone(),a.position.clone(),f.clone());a.roundedCurveCorner=D,this.roundedCurves.splice(n+o,0,D),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,n,s){if(e instanceof we.LineCurve)n!==void 0&&r.v2.copy(n),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=Su(a.v0,a.v1,a.v2,a.v3,c);return n!==void 0&&(l.v0.set(h[0],h[1]),l.v1.set(h[2],h[3]),l.v2.set(h[4],h[5]),l.v3.set(h[6],h[7])),s!==void 0&&(l.v0.set(h[6],h[7]),l.v1.set(h[8],h[9]),l.v2.set(h[10],h[11]),l.v3.set(h[12],h[13])),l}return r}clone(){let e=new Ce(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,s=e.points[n+0],a=e.points[n+1],l=e.points[n+2],c=e.points[n+3],h=e.points[n+4],p=e.points[n+5],u=e.points[n+6],d=new Qt(we.MathUtils.generateUUID(),new we.Vector2(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(h,p),d.roundness=u,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ce;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof we.CubicBezierCurve&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,l;for(a=0,l=n.length;a<l;a++)n[a]instanceof we.QuadraticBezierCurve&&(n[a]=gu(n[a]));for(a=0,l=n.length;a<l;a++){let p=n[a],u=a>0?n[a-1]:null,d;p instanceof we.CubicBezierCurve?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof we.LineCurve&&(d=this.createPoint(p.v1)),d!==void 0&&(u!==null&&r(d,u),s.push(d))}let c=n[n.length-1],h=!1;return c instanceof we.CubicBezierCurve?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof we.LineCurve&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof we.Shape&&(this.shapeHoles=e.holes.map(n=>{let s=new Ce;return s.fromShape(n),s})),this.update(),this}};var Sl=Math.PI*2;function bl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function Rv(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),s=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+s*e,y:s-n*e},{x:n,y:s}]}function Tu(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function zv(i,t,e,r,o,n,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(n,2),u=Math.pow(s,2),d=Math.pow(a,2),m=h*p-h*d-p*u;m<0&&(m=0),m/=h*d+p*u,m=Math.sqrt(m)*(l===c?-1:1);let g=m*o/n*a,x=m*-n/o*s,y=g+(i+e)/2,v=x+(t+r)/2,P=(s-g)/o,S=(a-x)/n,b=(-s-g)/o,_=(-a-x)/n,w=Tu(1,0,P,S),f=Tu(P,S,b,_);return!c&&f>0&&(f-=Sl),c&&f<0&&(f+=Sl),{centerx:y,centery:v,ang1:w,ang2:f}}function Lu({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let u=zv(i,t,e,r,o,n,c,h,s,a),{ang1:d,ang2:m}=u,{centerx:g,centery:x}=u,y=Math.abs(m)/(Sl/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);m/=v;for(let P=0;P<v;P++)l.push(Rv(d,m)),d+=m;return l.map(P=>{let{x:S,y:b}=bl(P[0],o,n,g,x),{x:_,y:w}=bl(P[1],o,n,g,x),{x:f,y:D}=bl(P[2],o,n,g,x);return{x1:S,y1:b,x2:_,y2:w,x:f,y:D}})}var fo=require("three");var Ge;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ge||(Ge={}));var Ze;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function ue(i,t){if(!i)throw t||"Assertion Failed!"}var ae=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){ue(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){ue(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){ue(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){ue(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var s,a,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(s=i.edgeEval(t,r,e),a=i.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,e.s)):(s=i.edgeSign(t,r,e),a=-i.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(s=i.transEval(t,r,e),a=i.transEval(r,e,o),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,e.t)):(s=i.transSign(t,r,e),a=-i.transSign(t,o,e),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,o.t)):n.t=(r.t+e.t)/2},i}(),ei=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),ks=function(){function i(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),tn=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return i}(),Iu=function(){function i(){var t=new tn,e=new ei,r=new ks(0),o=new ks(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new ks(0),r=new ks(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.makeEdge=function(){var t=new tn,e=new tn,r=new ei,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new tn;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ei;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new ei;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new tn;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var s=new ei;this.makeFace_(s,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),a+l-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ae.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,s,a,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){ue(o.prev===n),l=o.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ue(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),l=s.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(ue(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)ue(l.Sym.next===c.Sym),ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Org!==null),ue(l.Dst!==null),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l);ue(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),Pu=function(){function i(){this.handle=null}return i}(),Mu=function(){function i(){this.key=null,this.node=0}return i}(),Vv=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Pu,this.handles[r]=new Mu;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),n=e[s].handle,s>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t>>1,n=e[s].handle,s===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Pu;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Mu}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ue(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),wl=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),Au=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),Fv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Au,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Au;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),Uv=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,s=r.eUp;if(n.Dst===o)return s.Dst===o?ae.vertLeq(n.Org,s.Org)?ae.edgeSign(s.Dst,n.Org,s.Org)<=0:ae.edgeSign(n.Dst,s.Org,n.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(n.Dst,o,n.Org)>=0;var a=ae.edgeEval(n.Dst,o,n.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new wl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case Ge.ODD:return(e&1)!==0;case Ge.NONZERO:return e!==0;case Ge.POSITIVE:return e>0;case Ge.NEGATIVE:return e<0;case Ge.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,n=i.regionBelow(s),o=n.eUp,o.Org!=a.Org){if(!n.fixUpperEdge){i.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),i.finishRegion(t,s),a=n.eUp,s=n}return a},i.addRightEdges=function(t,e,r,o,n,s){var a,l,c,h,p=!0;c=r;do ue(ae.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,h=n;a=i.regionBelow(l),c=a.eUp.Sym,c.Org===h.Org;)c.Onext!==h&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(h.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=i.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,h),i.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,ue(l.windingNumber-c.winding===a.windingNumber),s&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),n=ae.vertL1dist(r,t),s=.5*n/(o+n),a=.5*o/(o+n);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,s)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ae.vertLeq(o.Org,n.Org)){if(ae.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ae.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s;if(ue(!ae.vertEq(o.Dst,n.Dst)),ae.vertLeq(o.Dst,n.Dst)){if(ae.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),s.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s=o.Org,a=n.Org,l=o.Dst,c=n.Dst,h,p,u=new tn,d,m;if(ue(!ae.vertEq(c,l)),ue(ae.edgeSign(l,t.event,s)<=0),ue(ae.edgeSign(c,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(h=Math.min(s.t,l.t),p=Math.max(a.t,c.t),h>p))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),ae.intersect(l,s,c,a,u),ue(Math.min(s.t,l.t)<=u.t),ue(u.t<=Math.max(a.t,c.t)),ue(Math.min(c.s,l.s)<=u.s),ue(u.s<=Math.max(a.s,s.s)),ae.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=ae.vertLeq(s,a)?s:a,ae.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),ae.vertEq(u,s)||ae.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!ae.vertEq(l,t.event)&&ae.edgeSign(l,t.event,u)>=0||!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,u)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),m=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,m,!0),!0):(ae.edgeSign(l,t.event,u)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(c,t.event,u)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=u.s,o.Org.t=u.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,s,l,a,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,s=i.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&i.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(n.Oprev,a),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),s),c=!0),ae.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,s,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,r)){ue(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}ue(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(ue(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,s,a,l,c=new wl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);ue(o!==null);var n=i.regionBelow(o),s=n.eUp,a=i.finishLeftRegions(t,n,null);a.Onext===s?i.connectRightVertex(t,o,a):i.addRightEdges(t,o,a.Onext,s,s,!0)},i.addSentinel=function(t,e,r,o){var n=new wl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,n.eUp=s,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new Fv(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;i.addSentinel(t,o,n,s),i.addSentinel(t,o,n,a)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new Vv(n,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,ue(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),jv=function(){function i(){this.mesh=new Iu,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ge.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],u=[0,0,0],d=[null,null,null],m=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)n=e.coords[x],c[x]=n,m[x]=e,l[x]=n,d[x]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)n=e.coords[y],n<c[y]&&(c[y]=n,m[y]=e),n>l[y]&&(l[y]=n,d[y]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=m[v],o=d[v],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var h=t.fHead.next;h!==t.fHead;h=h.next)if(h.n=-1,!!h.inside){n=h.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=a,a++),l++,n=n.Lnext}while(n!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===Ze.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){n=h.anEdge,l=0;do{var c=n.Org;this.elements[u++]=c.n,l++,n=n.Lnext}while(n!==h.anEdge);for(var d=l;d<r;++d)this.elements[u++]=-1;if(e===Ze.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var m=l;m<r;++m)this.elements[u++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,h=0;n=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[h++]=n,this.elements[h++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Iu),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,s){if(t===void 0&&(t=Ge.ODD),e===void 0&&(e=Ze.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Uv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function mo(i){var t=i.windingRule,e=t===void 0?Ge.ODD:t,r=i.elementType,o=r===void 0?Ze.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,l=a===void 0?2:a,c=i.normal,h=c===void 0?[0,0,1]:c,p=i.contours,u=p===void 0?[]:p,d=i.strict,m=d===void 0?!0:d,g=i.debug,x=g===void 0?!1:g;if(!u&&m)throw new Error("Contours can't be empty");if(!!u){var y=new jv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<u.length;v++)y.addContour(l||2,u[v]);return y.tesselate(e,o,s,l,h,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var dA=Ge.ODD,mA=Ge.NONZERO,fA=Ge.POSITIVE,gA=Ge.NEGATIVE,yA=Ge.ABS_GEQ_TWO,xA=Ze.POLYGONS,vA=Ze.CONNECTED_POLYGONS,bA=Ze.BOUNDARY_CONTOURS;var rn=class extends fo.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ge.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ge.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let m=0,g=n.length/2;m<g;m++){let x=m*2,y=n[x+0],v=n[x+1];if(h!==void 0&&y!==h&&(l=!1),p!==void 0&&v!==p&&(c=!1),h=y,p=v,!l&&!c)break}!l&&!c&&(a=mo({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new fo.BufferAttribute(new Float32Array(u*3),3),this._normalAttribute=new fo.BufferAttribute(new Float32Array(u*3),3),this._uvAttribute=new fo.BufferAttribute(new Float32Array(u*2),2),this._indexAttribute=new fo.BufferAttribute(new Uint32Array(d*3),1),a){let m=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,b=u;S<b;S++){let _=S*2,w=a.vertices[_+0],f=a.vertices[_+1];w<m&&(m=w),w>g&&(g=w),f<x&&(x=f),f>y&&(y=f)}let v=g-m,P=y-x;for(let S=0,b=u;S<b;S++){let _=S*2,w=a.vertices[_+0],f=a.vertices[_+1],D=(w-m)/v,C=(f-x)/P;this._positionAttribute.setXYZ(S,w,f,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,D,C)}for(let S=0,b=d;S<b;S++){let _=S*3,w=a.elements[_+0],f=a.elements[_+1],D=a.elements[_+2];this._indexAttribute.setX(_+0,w),this._indexAttribute.setX(_+1,f),this._indexAttribute.setX(_+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new rn(this._shape,this._curveSegments);return e.userData=Fn(this.userData),e}};var go=require("three");var Hs=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Hs.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Hs.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*t);s+=3*t;let l=new Float32Array(o,s*n,3*t);s+=3*t;let c=new Float32Array(o,s*n,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ti=Hs;ti.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Nl=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),on=class extends go.BufferGeometry{constructor(e,r,o=0,n=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=n,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],n),l=this._shape.shapeHoles.map(w=>{let f=w.extractShapePointsToFlatArray([],n),D=[];for(let C=f.length-1;C>=1;C-=2){let I=f[C-1],L=f[C-0];D.push(I,L)}return D}),c=mo({windingRule:Ge.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=mo({windingRule:Ge.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let w=0;w<h.elements.length;w++){let f=h.elements[w],D=w%2===0?c.vertexCount:0;c.elements.push(f+D)}for(let w=0;w<h.vertexIndices.length;w++){let f=h.vertexIndices[w],D=c.vertexCount;c.vertexIndices.push(f+D)}for(let w=0;w<h.vertices.length;w++){let f=h.vertices[w];c.vertices.push(f)}}let u=1/0,d=-1/0,m=1/0,g=-1/0;for(let w=0,f=c.vertexCount;w<f;w++){let D=w*2,C=c.vertices[D+0],I=c.vertices[D+1];C<u&&(u=C),C>d&&(d=C),I<m&&(m=I),I>g&&(g=I)}this._minX=u,this._minY=m,this._width=d-u,this._height=g-m;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new ti(x);let y=[],v=[];for(let w=c.elementCount-1;w>=0;w--){let f=w>=p,D=w*2,C=c.elements[D+0],I=c.elements[D+1],L=C+I,M={start:C,count:I,normals:[],continuous:[],concave:[]},k=C,W=L-1,ne=C+1,pe=this._shape.roundedCurves.length;do{let z=k-C,E=c.vertices[W*2+0],B=c.vertices[W*2+1],A=c.vertices[k*2+0],G=c.vertices[k*2+1],J=c.vertices[ne*2+0],j=c.vertices[ne*2+1],V=A-E,F=G-B,O=Math.sqrt(V*V+F*F);V/=O,F/=O;let q=A-J,Z=G-j,ee=Math.sqrt(q*q+Z*Z);q/=ee,Z/=ee,M.normals[z*2+0]=-Z,M.normals[z*2+1]=q,M.concave[z]=V*Z-F*q>0;let H=c.vertexIndices[k];if(Array.isArray(H))M.continuous[z]=!1;else{let[Q,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)M.continuous[z]=!0;else{let re=$===1?Q+1:Q-1;re=(re+pe)%pe;let ce=$===1?0:1,ie=this._shape.roundedCurves[Q].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);M.continuous[z]=ie.dot(fe)>.95}}f&&(M.normals[z*2+0]*=-1,M.normals[z*2+1]*=-1),[W,k,ne]=[k,ne,ne+1],ne>=L&&(ne-=I)}while(ne!==C+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(C*2,L*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((z,E)=>[E,E]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(C*2,L*2)});for(let z=1;z<=this._bevelSegments;z++){let E=z/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,A=[],G=[],J=[],j=[],V=0;for(let O=0;O<I;O++){let q=O*2,Z=(O-1+I)%I*2,ee=c.vertices[M.start*2+q+0],H=c.vertices[M.start*2+q+1],Q=-M.normals[Z+0]*B,$=-M.normals[Z+1]*B,re=-M.normals[q+0]*B,ce=-M.normals[q+1]*B;if(M.concave[O]||!M.concave[O]&&f){let ie=Math.atan2($,Q),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Ue=fe-ie;if(M.continuous[O]||f){let xe=ie+Ue/2,Ke=Math.cos(xe)*B,Le=Math.sin(xe)*B;A[2*V+0]=ee+Ke*(f?-1:1),A[2*V+1]=H+Le*(f?-1:1),j[V]=O,V++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ue)/Math.PI));for(let Ke=0;Ke<=xe;Ke++){let Le=ie+Ue*(Ke/xe),Nt=Math.cos(Le)*B,Ut=Math.sin(Le)*B;A[2*V+0]=ee+Nt,A[2*V+1]=H+Ut,j[V]=O,V++}}}else A[2*V+0]=ee+Q,A[2*V+1]=H+$,j[V]=O,G[O]=V,V++,A[2*V+0]=ee,A[2*V+1]=H,j[V]=O,V++,A[2*V+0]=ee+re,A[2*V+1]=H+ce,j[V]=O,J[O]=V,V++}let F=mo({windingRule:Ge.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[A],edgeCreateCallback:O=>{let Z=O.Org.idx,ee=j[Z],H=j[(Z+1)%j.length];O.idx=[ee,H],O.Sym.idx=[H,ee]},vertexIdCallback:O=>{let q=O.Lprev.idx;return[q?q[1]:0,O.idx[0]]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!F.vertexCount)break;for(let O=0;O<F.vertexIndices.length;O++){let[q,Z]=F.vertexIndices[O];if(q===Z)continue;let ee=Z;Z<q&&(ee+=I);for(let H=q;H<ee;H++){let Q=H%I,$=(H+1)%I;if(!M.continuous[Q]||!M.continuous[$]){F.vertexIndices[O]=[q,Q],F.vertexIndices.splice(O+1,0,[$,Z]),F.vertices.splice((O+1)*2,0,F.vertices[O*2],F.vertices[O*2+1]);break}}}se.push({bevelI:z,angle:E,size:B,boundary:F,reverseMap:j,insetPoints:A})}let Y=(z,E,B)=>{let A=0,G=z.boundary.vertexIndices.length;for(;A<G&&B(z.boundary.vertexIndices[E]);)E=(E+1)%G,A++;return A},U=y.length;for(let z=1;z<se.length;z++){let E=se[z-1],B=se[z],A=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!A||!G)break;let J=M.concave.length,j=0,V=Nl(j,I);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)j++,V=Nl(j,I);let F=E.boundary.vertexIndices.findIndex(V),O=B.boundary.vertexIndices.findIndex(V);do F=(F+1)%A;while(V(E.boundary.vertexIndices[F]));do O=(O+1)%G;while(V(B.boundary.vertexIndices[O]));j=(j+1)%I;let q=j,Z=this.buildBevelVert(M,E,(F-1+A)%A),ee=this.buildBevelVert(M,B,(O-1+G)%G),H=Z,Q=ee,$,re,ce=!1;do{V=Nl(j,I);let ie=Y(E,F,V),fe=Y(B,O,V),Ue=ce;if(ce=!1,ie&&!fe){for(let xe=0;xe<ie;xe++)$=this.buildBevelVert(M,E,(F+xe)%A,xe/(ie-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let xe=0;xe<fe;xe++)re=this.buildBevelVert(M,B,(O+xe)%G,xe/(fe-1)),y.push(Q.topN,H.topP,re.topP),y.push(H.bottomP,Q.bottomN,re.bottomP),Q=re;else if(ie&&fe)if($=this.buildBevelVert(M,E,F,0),re=this.buildBevelVert(M,B,O,0),Ue?(y.push(H.topN,re.topP,Q.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,Q.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(Q.topN,H.topN,$.topP),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,Q.bottomN),y.push($.bottomP,Q.bottomN,re.bottomP)),H=$,Q=re,ie===fe)for(let xe=1;xe<ie;xe++)$=this.buildBevelVert(M,E,(F+xe)%A,xe/(ie-1)),re=this.buildBevelVert(M,B,(O+xe)%G,xe/(fe-1)),y.push(H.topN,$.topP,Q.topN),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,Q.bottomN),y.push($.bottomP,Q.bottomN,re.bottomP),H=$,Q=re;else if(ie>fe){let xe=ie/fe,Ke=0;for(let Le=1;Le<ie;Le++)$=this.buildBevelVert(M,E,(F+Le)%A,Le/(ie-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$,Le>(Ke+1)*xe&&(Ke++,re=this.buildBevelVert(M,B,(O+Ke)%G,Ke/(fe-1)),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,Q.bottomN,re.bottomP),Q=re)}else{let xe=fe/ie,Ke=0;for(let Le=1;Le<fe;Le++)re=this.buildBevelVert(M,B,(O+Le)%G,Le/(fe-1)),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,Q.bottomN,re.bottomP),Q=re,Le>(Ke+1)*xe&&(Ke++,$=this.buildBevelVert(M,E,(F+Ke)%A,Ke/(ie-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$)}F=(F+ie)%A,O=(O+fe)%G,j=(j+1)%J}while(j!==q)}{let z=se[0];for(let E=0,B=z.boundary.vertexCount;E<B;E++){let A=this.buildBevelVert(M,z,E),G=this.buildBevelVert(M,z,(E+1)%B);y.push(G.topP,A.topN,A.bottomN),y.push(G.topP,A.bottomN,G.bottomP)}}if(f){let z=[];for(let E=y.length-1;E>=U+2;E-=3){let B=y[E-2],A=y[E-1],G=y[E-0];z.push(G,A,B)}y.splice(U,y.length-U,...z)}if(f){let z=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=se[se.length-1].boundary.vertices[E-1],A=se[se.length-1].boundary.vertices[E-0];z.push(B,A)}v.push(z)}if(!f){let z=se[se.length-1],E=mo({windingRule:se.length>1?Ge.POSITIVE:Ge.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let B=0;B<E.elementCount*3;B+=3){let A=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),J=this.buildSurfaceVert(E,E.elements[B+2]);y.push(A.top,G.top,J.top),y.push(J.bottom,G.bottom,A.bottom)}}this.vertexCache={}}this._buffer.shrink();let P=new go.BufferAttribute(Uint32Array.from(y),1),S=new go.BufferAttribute(this._buffer.positions,3),b=new go.BufferAttribute(this._buffer.normals,3),_=new go.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,_.needsUpdate=!0,P.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",_),this.setIndex(P)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let n=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(n-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,u={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=n,this._buffer.positions[h+1]=s,this._buffer.positions[h+2]=this._depth,this._buffer.normals[h+0]=0,this._buffer.normals[h+1]=0,this._buffer.normals[h+2]=1,this._buffer.uvs[p+0]=a,this._buffer.uvs[p+1]=l,this._buffer.positions[h+3]=n,this._buffer.positions[h+4]=s,this._buffer.positions[h+5]=0,this._buffer.normals[h+3]=0,this._buffer.normals[h+4]=0,this._buffer.normals[h+5]=-1,this._buffer.uvs[p+2]=a,this._buffer.uvs[p+3]=l,this.vertexCache[o]=u,u}buildBevelVert(e,r,o,n=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[o],c,h,p,u;a!==l?(h=a,c=l,u=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,u=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||u);let d=Math.cos(r.angle),m=Math.sin(r.angle),g=o*2,x=c*2,y=h*2,v=r.boundary.vertices[g+0],P=r.boundary.vertices[g+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,_=(P-this._minY)/this._height,w=e.normals[x+0],f=e.normals[x+1],D=e.normals[y+0],C=e.normals[y+1];if(u){let W=D-w,ne=C-f;w=w+W*(1-n),f=f+ne*(1-n);let pe=Math.sqrt(w*w+f*f);w/=pe,f/=pe}let I=this._buffer.get(p?2:4),L=I*3,M=I*2,k={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=w*d,this._buffer.normals[L+1]=f*d,this._buffer.normals[L+2]=m,this._buffer.uvs[M+0]=b,this._buffer.uvs[M+1]=_,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=w*d,this._buffer.normals[L+4]=f*d,this._buffer.normals[L+5]=-m,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=b,p||(I+=2,L+=6,M+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=D*d,this._buffer.normals[L+1]=C*d,this._buffer.normals[L+2]=m,this._buffer.uvs[M+0]=b,this._buffer.uvs[M+1]=_,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=D*d,this._buffer.normals[L+4]=C*d,this._buffer.normals[L+5]=-m,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=b),this.vertexCache[s]=k,k}clone(){let e=new on(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Fn(this.userData),e}};var at=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ce?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ce(r,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let l=s??new Ce(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:a}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new rn(i.shape,o):s=new on(i.shape,t,e,o,r),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};var sn=require("three"),Du=Math.PI*2,Bu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c=i.shape,h=t*.5,p=e*.5,u=kv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let d=at.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...i,type:"EllipseGeometry"}})}};function kv(i,t,e,r,o,n){if(r>=Du)return o>30||o%4===0?(Wv(i,t,e,n),Math.round(o/4)):Ou(i,r,o,t,e,n);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Lu({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?Hv(i,s.x,s.y,c,o,t,e,n):Ou(i,r,o,t,e,n)}function Hv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(nn(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],d=nn(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),i.addPoint(d)}return a>0?_u(i,n,s,a):i.addPoint(nn(0,0)),l}function Ou(i,t,e,r,o,n){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,h=Math.cos(l)*o;i.addPoint(nn(c,h))}return t<Du?n>0?_u(i,r,o,n):i.addPoint(nn(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Eu(i,r,o,n)),1}function Wv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Ws(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Ws(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Ws(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Ws(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Eu(i,t,e,r)}function nn(i,t){return new Qt(sn.MathUtils.generateUUID(),new sn.Vector2(i,t))}function Ws(i,t,e,r,o,n){let s=nn(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function _u(i,t,e,r){Gu(i,t,e,r).forEach(n=>i.addPoint(n))}function Eu(i,t,e,r){let o=Gu(i,t,e,r),n=new Ce;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Gu(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new sn.Vector2(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=sn.MathUtils.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}var Dr=require("three"),Ru=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),s=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=i.parameters,u=new ri(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:{...i,type:"HelixGeometry"}})}},ri=class extends Dr.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,n=1,s=1,a=1,l=1,c=1,h=1,p=1,u=1){super();let d=t&&s===1;d&&(u=0),p>100&&(p=100);let m=()=>new Dr.Vector3,g=new Dr.Vector3,x=m(),y=m(),v=m(),P,S,b,_,w,f,D,C,I=m(),L=m(),M=m(),k=m(),W=m(),ne=m(),pe=m(),se=m(),Y=r-2*l+.001,U=Y/s,z=Math.ceil(a*s),E=z+1,B=Y/z,A=-Y/2,G=h+1,J=2*Math.PI/h,j=Math.PI/2/u,V=.01,F=Math.min((1-p/100)*l,l-V),O=l-F,q=0,Z=2,ee=u*Z+Z,H=G*ee/Z,Q=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(We=>Array($*We).fill(0)),fe=[],Ue=n-l;function xe(We,Dt){let sr=Math.PI/2;f=Dt*B,C=2*Math.PI*(f%U)/U+sr,f+=A,D=Math.sin(C)*Ue,w=Math.cos(C)*Ue,t?We.set(w,D,f):We.set(w,f,D)}xe(g,-1e-10),xe(x,0),I.copy(g),xe(g,1);let Ke=g.distanceTo(x),Le=O+F,Nt=Ke*z+2*Le,Ut=F,No=Nt-Le;for(let We=0;We<=z;We++){xe(y,We),se.subVectors(y,I).normalize(),I.copy(y),ne.copy(y).setComponent(+t+1,0).normalize(),pe.crossVectors(se,ne).normalize();let Dt=We===0,sr=We===z,Sm=Dt?3*Math.PI/2:j,wm=Dt?Ut:No,Nm=Dt?G:Q,Cm=Dt?0:$-G,Tm=se.clone().multiplyScalar(Dt?-O:O).add(y),Lm=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Lr=0;Lr<G;Lr++){let dc=Lr*J;if(L.addVectors(g.copy(ne).multiplyScalar(l*Math.cos(dc)),x.copy(pe).multiplyScalar(l*Math.sin(dc))),M.copy(L).normalize(),Dt||sr){d||(q=Cm+Lr,[0,1,2].forEach(Ct=>{re[q*3+Ct]=Tm.getComponent(Ct),ce[q*3+Ct]=Lm.getComponent(Ct)}),ie[q*2]=+sr,ie[q*2+1]=Lr/h),x.copy(M).multiplyScalar(F),v.addVectors(y,x);for(let Ct=0;Ct<u;Ct++){let Ra=Ct*j+Sm;k.addVectors(g.copy(se).multiplyScalar(O*Math.sin(Ra)),x.copy(M).multiplyScalar(O*Math.cos(Ra))),W.copy(k).normalize(),x.addVectors(v,k),k.normalize(),q=Nm+Ct*G+Lr,[0,1,2].forEach(zi=>{re[q*3+zi]=x.getComponent(zi),ce[q*3+zi]=W.getComponent(zi)});let Im=+Dt+Math.sin(Ra);ie[q*2]=(wm+O*Im)/Nt,ie[q*2+1]=Lr/h}}x.addVectors(y,L),q=H+We*G+Lr,[0,1,2].forEach(Ct=>{re[q*3+Ct]=x.getComponent(Ct),ce[q*3+Ct]=M.getComponent(Ct)}),ie[q*2]=(Le+We*Ke)/Nt,ie[q*2+1]=Lr/h}}let Ot=E+2*u+Z,Co=1,[Gi,Ri]=d?[Co,Co+E-1]:[0,Ot-1];for(let We=Gi;We<=Ri-1;We++){let Dt=d&&We===Ri-1;for(let sr=0;sr<G-1;sr++)P=We*G+sr,S=P+1,b=(Dt?sr:P)+G,_=(Dt?sr+1:S)+G,We===0?fe.push(S,_,b):We===Ot-2?fe.push(P,S,b):fe.push(P,S,b,S,_,b)}this.setIndex(fe),this.setAttribute("position",new Dr.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Dr.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Dr.Float32BufferAttribute(ie,2))}};var zu=require("three");var Vu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new oi(t*.5,n,s):new zu.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},oi=class extends Xr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(n,s,a,t,e,r),this.type=a}static fromJSON(t){return new oi(t.radius,t.corner,t.cornerSides)}};var qs=require("three"),Fu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new qs.Shape;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new qs.LatheBufferGeometry(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};var mr=require("three");var Br=require("three");var oe=require("three"),dr=new oe.Matrix4,Cl=new oe.Object3D,$s=new oe.Vector3,Yr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new oe.Matrix3().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return dr.makeRotationX(t),this.applyMatrix4(dr),this}rotateY(t){return dr.makeRotationY(t),this.applyMatrix4(dr),this}rotateZ(t){return dr.makeRotationZ(t),this.applyMatrix4(dr),this}translate(t,e,r){return dr.makeTranslation(t,e,r),this.applyMatrix4(dr),this}scale(t,e,r){return dr.makeScale(t,e,r),this.applyMatrix4(dr),this}lookAt(t){return Cl.lookAt(t),Cl.updateMatrix(),this.applyMatrix4(Cl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let u=0;u<n.count;u++)e.vertices.push(new oe.Vector3().fromBufferAttribute(n,u)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,u));function h(u,d,m,g){let x=a===void 0?[]:[e.colors[u].clone(),e.colors[d].clone(),e.colors[m].clone()],y=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,u),new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,m)],v=new an(u,d,m,y,x,g);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(l,u),new oe.Vector2().fromBufferAttribute(l,d),new oe.Vector2().fromBufferAttribute(l,m)]),c!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(c,u),new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,m)])}let p=t.groups;if(p.length>0)for(let u=0;u<p.length;u++){let d=p[u],m=d.start,g=d.count;for(let x=m,y=m+g;x<y;x+=3)r!==void 0?h(r.getX(x),r.getX(x+1),r.getX(x+2),d.materialIndex):h(x,x+1,x+2,d.materialIndex)}else if(r!==void 0)for(let u=0;u<r.count;u+=3)h(r.getX(u),r.getX(u+1),r.getX(u+2));else for(let u=0;u<n.count;u+=3)h(u,u+1,u+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter($s).negate(),this.translate($s.x,$s.y,$s.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=this.vertices[n.a],a=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,a),e.subVectors(s,a),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=this.vertices[a.a],c=this.vertices[a.b],h=this.vertices[a.c];r.subVectors(h,c),o.subVectors(l,c),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Yr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new oe.Vector3,h={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};n.push(c),s.push(h)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,s=this.vertices,a=t.vertices,l=this.faces,c=t.faces,h=this.colors,p=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let u=0,d=a.length;u<d;u++){let g=a[u].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let u=0,d=p.length;u<d;u++)h.push(p[u].clone());for(let u=0,d=c.length;u<d;u++){let m=c[u],g,x,y=m.vertexNormals,v=m.vertexColors,P=new an(m.a+n,m.b+n,m.c+n);P.normal.copy(m.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let S=0,b=y.length;S<b;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),P.vertexNormals.push(g);P.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)x=v[S],P.vertexColors.push(x.clone());P.materialIndex=m.materialIndex+r,l.push(P)}for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],v=[];for(let P=0,S=y.length;P<S;P++)v.push(y[P].clone());this.faceVertexUvs[u].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let h=this.vertices[l],p=Math.round(h.x*n)+"_"+Math.round(h.y*n)+"_"+Math.round(h.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let h=this.faces[l];h.a=o[h.a],h.b=o[h.b],h.c=o[h.c];let p=[h.a,h.b,h.c];for(let u=0;u<3;u++)if(p[u]===p[(u+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let h=0,p=this.faceVertexUvs.length;h<p;h++)this.faceVertexUvs[h].splice(c,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let l=0;l<e;l++){let c=t[l]._id;s&&s.push(o[c]),a&&a.push(n[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let g in m)m[g]!==void 0&&(t[g]=m[g]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let g=this.vertices[m];e.push(g.x,g.y,g.z)}let r=[],o=[],n={},s=[],a={},l=[],c={};for(let m=0;m<this.faces.length;m++){let g=this.faces[m],x=!0,y=!1,v=this.faceVertexUvs[0][m]!==void 0,P=g.normal.length()>0,S=g.vertexNormals.length>0,b=g.color.r!==1||g.color.g!==1||g.color.b!==1,_=g.vertexColors.length>0,w=0;if(w=h(w,0,0),w=h(w,1,x),w=h(w,2,y),w=h(w,3,v),w=h(w,4,P),w=h(w,5,S),w=h(w,6,b),w=h(w,7,_),r.push(w),r.push(g.a,g.b,g.c),r.push(g.materialIndex),v){let f=this.faceVertexUvs[0][m];r.push(d(f[0]),d(f[1]),d(f[2]))}if(P&&r.push(p(g.normal)),S){let f=g.vertexNormals;r.push(p(f[0]),p(f[1]),p(f[2]))}if(b&&r.push(u(g.color)),_){let f=g.vertexColors;r.push(u(f[0]),u(f[1]),u(f[2]))}}function h(m,g,x){return x?m|1<<g:m&~(1<<g)}function p(m){let g=m.x.toString()+m.y.toString()+m.z.toString();return n[g]!==void 0||(n[g]=o.length/3,o.push(m.x,m.y,m.z)),n[g]}function u(m){let g=m.r.toString()+m.g.toString()+m.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(m.getHex())),a[g]}function d(m){let g=m.x.toString()+m.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(m.x,m.y)),c[g]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Yr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let u=0,d=e.length;u<d;u++)this.vertices.push(e[u].clone());let r=t.colors;for(let u=0,d=r.length;u<d;u++)this.colors.push(r[u].clone());let o=t.faces;for(let u=0,d=o.length;u<d;u++)this.faces.push(o[u].clone());for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],v=[];for(let P=0,S=y.length;P<S;P++){let b=y[P];v.push(b.clone())}this.faceVertexUvs[u].push(v)}}let n=t.morphTargets;for(let u=0,d=n.length;u<d;u++){let m={};if(m.name=n[u].name,n[u].vertices!==void 0){m.vertices=[];for(let g=0,x=n[u].vertices.length;g<x;g++)m.vertices.push(n[u].vertices[g].clone())}if(n[u].normals!==void 0){m.normals=[];for(let g=0,x=n[u].normals.length;g<x;g++)m.normals.push(n[u].normals[g].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let u=0,d=s.length;u<d;u++){let m={};if(s[u].vertexNormals!==void 0){m.vertexNormals=[];for(let g=0,x=s[u].vertexNormals.length;g<x;g++){let y=s[u].vertexNormals[g],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),m.vertexNormals.push(v)}}if(s[u].faceNormals!==void 0){m.faceNormals=[];for(let g=0,x=s[u].faceNormals.length;g<x;g++)m.faceNormals.push(s[u].faceNormals[g].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let u=0,d=a.length;u<d;u++)this.skinWeights.push(a[u].clone());let l=t.skinIndices;for(let u=0,d=l.length;u<d;u++)this.skinIndices.push(l[u].clone());let c=t.lineDistances;for(let u=0,d=c.length;u<d;u++)this.lineDistances.push(c[u]);let h=t.boundingBox;h!==null&&(this.boundingBox=h.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Tl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],s=t.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],h=new oe.Float32BufferAttribute(c.data.length*3,3);h.name=c.name,n.push(h.copyVector3sArray(c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),n=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",n.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new oe.Float32BufferAttribute(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Yr.prototype.isGeometry=!0;var Tl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let h=t.morphNormals,p=h.length,u;if(p>0){u=[];for(let y=0;y<p;y++)u[y]={name:h[y].name,data:[]};this.morphTargets.normal=u}let d=t.skinIndices,m=t.skinWeights,g=d.length===r.length,x=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let v=e[y];this.vertices.push(r[v.a],r[v.b],r[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!0){let b=o[0][y];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][y];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<l;b++){let _=a[b].vertices;c[b].data.push(_[v.a],_[v.b],_[v.c])}for(let b=0;b<p;b++){let _=h[b].vertexNormals[y];u[b].data.push(_.a,_.b,_.c)}g&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),x&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},an=class{constructor(t,e,r,o,n,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new oe.Color,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var qv=["a","b","c"];function $v(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Ll(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Il(i,t,e,r,o,n){let s=Math.min(i,t),a=Math.max(i,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let h=e[s],p=e[a];c={a:h,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function Xv(i,t,e,r){let o,n,s;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)s=t[o],Il(s.a,s.b,i,r,s,e),Il(s.b,s.c,i,r,s,e),Il(s.c,s.a,i,r,s,e)}function Xs(i,t,e,r,o){i.push(new an(t,e,r,void 0,void 0,o))}function ln(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Ks(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var Ys=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Br.BufferGeometry?t=new Yr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new Br.Vector3,r,o,n,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],d=new Map;Xv(l,c,u,d);let m=[],g,x,y,v,P,S,b;for(let V of Array.from(d.keys())){for(x=d.get(V),y=new Br.Vector3,P=3/8,S=1/8,b=x.faces.length,b!=2&&(P=.5,S=0,b!=1),y.addVectors(x.a,x.b).multiplyScalar(P),e.set(0,0,0),s=0;s<b;s++){for(v=x.faces[s],a=0;a<3&&(g=l[$v(v,qv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=m.length,m.push(y)}let _,w,f,D,C,I,L,M=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],C=u[o].edges,r=C.length,r==3?_=3/16:r>3&&(_=3/(8*r)),w=1-r*Number(_),f=_,r<=2&&(r==2?(w=3/4,f=1/8):r==1||r==0),L=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)D=C[s],g=D.a!==I?D.a:D.b,e.add(g);e.multiplyScalar(Number(f)),L.add(e),M.push(L)}let k=M.concat(m),W=M.length,ne,pe,se,Y=[],U=[],z,E,B,A,G=new Br.Vector2,J=new Br.Vector2,j=new Br.Vector2;for(o=0,n=c.length;o<n;o++)v=c[o],ne=Number(Ll(v.a,v.b,d).newEdge)+W,pe=Number(Ll(v.b,v.c,d).newEdge)+W,se=Number(Ll(v.c,v.a,d).newEdge)+W,Xs(Y,ne,pe,se,v.materialIndex),Xs(Y,v.a,ne,se,v.materialIndex),Xs(Y,v.b,pe,ne,v.materialIndex),Xs(Y,v.c,se,pe,v.materialIndex),p&&(z=h[o],E=z[0],B=z[1],A=z[2],G.set(ln(E.x,B.x),ln(E.y,B.y)),J.set(ln(B.x,A.x),ln(B.y,A.y)),j.set(ln(E.x,A.x),ln(E.y,A.y)),Ks(U,G,J,j),Ks(U,E,G,j),Ks(U,B,J,G),Ks(U,A,j,J));t.vertices=k,t.faces=Y,p&&(t.faceVertexUvs[0]=U)}};var et=new mr.Vector3,Uu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),r={width:et.x,height:et.y,depth:et.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(t!==et.x||e!==et.y||r!==et.z)&&n.scale(et.x===0?1:t/et.x,et.y===0?1:e/et.y,et.z===0?1:r/et.z);let a=n.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=n),n=new Ys(o).modify(a).toBufferGeometry()):(a!==void 0&&(n=a),a=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),a!==void 0&&Object.assign(n,{originalGeometry:a}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new mr.BufferGeometryLoader(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(n.parameters,{width:100,height:et.y*s,depth:et.z*s}),t(this.build(n))})}};var ju=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,l=i.shape,c=t*.5,h=e*.5,p=0,u=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let x=d*g,y=p+Math.sin(x)*c,v=u+Math.cos(x)*h;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let m=at.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...i,type:"PolygonGeometry"}})}};var Se=require("three"),ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=new Ml(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function ni(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Pl(i,t,e,r,o,n){let s=t.clone().sub(i),a=e.clone().sub(i),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(c)),n.addScaledVector(a,r/Math.sin(c))}}function Kv(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Ml=class extends Se.BufferGeometry{constructor(t=.5,e=1,r=4,o=1,n=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],h=[],p=[],u=0,d=e/2,m=Math.PI/r,g=t*Math.cos(Math.PI/r),x=2*Math.PI/r,y=(r-2)*Math.PI/r,v=Math.PI-y,P=new Se.Vector3(0,-d,0),S=new Se.Vector3(0,d,0),b=new Se.Vector2(t,-d),_=new Se.Vector2(g,-d),w=new Se.Vector2(0,S.y).sub(_),f=new Se.Vector2(0,S.y).sub(b),D=new Se.Vector2(w.y,-w.x).normalize(),C=new Se.Vector2(f.y,-f.x).normalize(),L=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,L);let M;{let U=new Se.Vector3(D.x,D.y,0),z=new Se.Vector3(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);M=U.angleTo(z)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-M)/2),ne=new Se.Vector3;if(!n){c.push(P.x,P.y,P.z),h.push(0,-1,0),p.push(0,0);let U=u++,z=[],E=b.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let A=0;A<r;A++){let G=A/r*Math.PI*2+m,J=new Se.Vector2(Math.sin(G),Math.cos(G));ni(E,J,ne),c.push(ne.x,ne.y,ne.z),h.push(0,-1,0),p.push(0,0),z.push(u++)}for(let A=0;A<z.length;A++)l.push(z[A],U,z[(A+1)%z.length])}let pe=[];{let U=new Se.Vector3,z=new Se.Vector3,E=new Se.Vector3,B=new Se.Vector3,A=new Se.Vector3,G=new Se.Vector3;for(let J=0;J<r;J++){let j=J/r*Math.PI*2+m,V=(J+.5)/r*Math.PI*2+m,F=(J+1)/r*Math.PI*2+m,O=new Se.Vector2(Math.sin(j),Math.cos(j)),q=new Se.Vector2(Math.sin(V),Math.cos(V)),Z=new Se.Vector2(Math.sin(F),Math.cos(F));ni(b,O,z),ni(b,Z,E),ni(D,q,U),Pl(S,z,E,W,W,B),c.push(B.x,B.y,B.z),Pl(z,S,E,W,k,A),c.push(A.x,A.y,A.z),Pl(E,z,S,k,W,G),c.push(G.x,G.y,G.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),p.push(0,0),p.push(0,0),p.push(0,0);let ee=u++,H=u++,Q=u++;if(l.push(ee,H,Q),s>0){{let ce=z.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),Ue=P.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),xe=G.clone().sub(A);se(ce,xe,Ue,w.angle())}let $,re;{let ce=new Se.Vector3;ni(C,Z,ce);let ie=G.clone().add(B).multiplyScalar(.5);ie=Kv(ie,E,S);let fe=G.clone().sub(B);[$,re]=se(ie,fe,ce,M,B.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new Se.Vector3(0,-1,0),Ue=ie.clone().cross(fe);Y(ce,ie,fe,Ue)}pe.concat(re);{let ce=w.angle(),ie=Math.PI-ce,fe=S.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Ue=new Se.Vector3,xe=[];for(let Le=0;Le<a;Le++){let Nt=[],Ut=Math.PI/2-ie*Le/a,No=Math.cos(Ut),Ot=Math.sin(Ut),Co=V;for(let Gi=0;Gi<=Le;Gi++){let Ri=Math.cos(Co),We=Math.sin(Co);U.x=No*We,U.y=Ot,U.z=No*Ri,Ue.copy(fe).addScaledVector(U,s),c.push(Ue.x,Ue.y,Ue.z),h.push(U.x,U.y,U.z),p.push(0,0),Nt.push(u++),Co+=Math.PI*2/Le/r}xe.push(Nt)}re.reverse(),xe.push(re);let Ke=xe.length-1;for(let Le=0;Le<Ke;Le++){let Nt=xe[Le],Ut=xe[Le+1],No=Nt.length-1;l.push(Ut[1],Nt[0],Ut[0]);for(let Ot=1;Ot<=No;Ot++)l.push(Nt[Ot],Nt[Ot-1],Ut[Ot]),l.push(Ut[Ot+1],Nt[Ot],Ut[Ot])}}}}}this.setIndex(l),this.setAttribute("position",new Se.Float32BufferAttribute(c,3)),this.setAttribute("normal",new Se.Float32BufferAttribute(h,3)),this.setAttribute("uv",new Se.Float32BufferAttribute(p,2));function se(U,z,E,B,A){let G=-B/2,J=(Math.PI-B)/2,j=z.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(J));let V=new Se.Vector3,F=new Se.Vector3,O=1,q=u,Z=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;F.set(0,0,0),F.addScaledVector(j,Math.sin(H)),F.addScaledVector(E,Math.cos(H));for(let Q=0;Q<=O;Q++){let $=Q/O-.5;if(V.copy(U),V.addScaledVector(z,$),V.addScaledVector(F,s),A!=null){let re=Math.max(0,V.y-A);V.addScaledVector(z,-re/z.y)}c.push(V.x,V.y,V.z),h.push(F.x,F.y,F.z),p.push(0,0),Q===0&&Z.push(u),u++}}for(let ee=0;ee<a;ee++)for(let H=0;H<O;H++){let Q=q+H+(O+1)*ee,$=Q+(O+1),re=$+1,ce=Q+1;l.push(Q,$,ce),l.push($,re,ce)}return[U.clone().addScaledVector(z,.5),Z]}function Y(U,z,E,B){let A=Math.PI/2,G=f.angle()-A,J=[],j=new Se.Vector3,V=new Se.Vector3;for(let O=0;O<=a;O++){let q=[],Z=O/a;for(let ee=0;ee<=O;ee++){let Q=((O?ee/O:0)-.5)*v,$=Math.cos(Q),re=Math.sin(Q),ce=Math.atan(Math.tan(G)*$),ie=(A+ce)*Z,fe=Math.cos(ie),Ue=Math.sin(ie);j.set(0,0,0),j.addScaledVector(z,Ue*$),j.addScaledVector(E,fe),j.addScaledVector(B,Ue*re),V.copy(U).addScaledVector(j,s),c.push(V.x,V.y,V.z),h.push(j.x,j.y,j.z),p.push(0,0),q.push(u++)}J.push(q)}let F=J.length-1;for(let O=0;O<F;O++){let q=J[O],Z=J[O+1],ee=q.length-1;l.push(q[0],Z[1],Z[0]);for(let H=1;H<=ee;H++)l.push(q[H-1],q[H],Z[H]),l.push(q[H],Z[H+1],Z[H])}}}};var Hu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function u(S,b,_){return b>e&&_>r?Math.min(S*e/b,S*r/_):b>e?S*e/b:_>r?S*r/_:S}let d=[];d[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let m=h.x,g=p.x,x=p.y,y=h.y;t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(g,x)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(m,y)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(v=!1);v&&(t.roundness=d[0]),t.useCubicForRoundedCorners=n!==1,t.update();let P=at.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...i,type:"RectangleGeometry"}})}};var Wu=require("three"),qu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=i.parameters,h=new Wu.SphereBufferGeometry(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:{...i,type:"SphereGeometry"}})}};var $u=require("three"),Xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new $u.PlaneBufferGeometry(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};var Jr=require("three"),Ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Al(t,e,r,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Al=class extends Jr.BufferGeometry{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],h=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-h,o),o*=Math.PI/180;let p=[],u=Math.PI/2,d=(V=0,F=0,O=0)=>new Jr.Vector3(V,F,O),m=d(),g=d(),[x,y,v]=[e/2,t/2,r/2],P=-y,S=+y,[b,_,w]=[d(P,-x,+v),d(P,-x,-v),d(P,+x,-v)],f=(V,F=!1)=>Math.sin(V-Math.PI/(1+ +F)),D=(V,F=!1)=>Math.cos(V-Math.PI/(1+ +F));w.y=Math.sin(o)*e-x;let C=Math.cos(o)*e-v,I=b.z-h;o<=u?(w.z=Math.min(C,I),w.z==I&&(w.y-=(C-I)/Math.tan(u-o))):_.z=Math.min(_.z-C-v,b.z-h),m.subVectors(b,_),g.subVectors(w,_);let L=Math.min(m.length(),g.length())*n/100,M=L*Math.tan(o/2),k=L/Math.cos(o/2),W=m.clone().normalize().add(g.normalize()).setLength(k).add(_);m.set(0,f(o,!0),D(o,!0)),p.push([w,m.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let F=u+o+V*ne;m.set(0,Math.sin(F)*M,Math.cos(F)*M),m.add(W),g.set(0,f(F),D(F)),p.push([m.clone(),g.clone()])}p.push([b,d(0,1,0)]);let pe=Math.sin(ne/2)*M*2,se=p.length-1,Y=p[0][0].distanceTo(p[1][0]),U=p[se-1][0].distanceTo(p[se][0]),z=Y+pe*s+U;p[0].push(1);for(let V=0;V<=s;V++)p[V+1].push(1-(Y+V*pe)/z);p[se].push(0);let[E,B,A]=p[0],G,J,j;for(let V=1;V<p.length;V++)[G,J,j]=p[V],a.push(P,E.y,E.z,P,G.y,G.z,S,E.y,E.z,S,E.y,E.z,P,G.y,G.z,S,G.y,G.z),l.push(0,B.y,B.z,0,J.y,J.z,0,B.y,B.z,0,B.y,B.z,0,J.y,J.z,0,J.y,J.z),c.push(0,A,0,j,1,A,1,A,0,j,1,j),[E,B,A]=[G,J,j];this.setAttribute("position",new Jr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Jr.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Jr.Float32BufferAttribute(c,2))}};var Yu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,h=i.shape,p=t*.5,u=e*.5,d=0,m=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=p*r/100,v=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let b=g*S,_=d+Math.sin(b)*p,w=m+Math.cos(b)*u;h.addPoint(h.createPoint(_,w))}}else for(let S=0;S<o;S++){let b=d+Math.cos(x)*p,_=m+Math.sin(x)*u;h.addPoint(h.createPoint(b,_)),x+=g,b=d+Math.cos(x)*y,_=m+Math.sin(x)*v,S<=o,h.addPoint(h.createPoint(b,_)),x+=g}h.isClosed=!0;for(let S=0,b=h.points.length;S<b;S++)h.points[S].roundness=n;h.roundness=n,h.update();let P=at.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...i,type:"StarGeometry"}})}};var Ju=require("three"),Js=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new Ju.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};var Qu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=Yv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function Yv(i,t,e,r,o,n,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new ri(!0,i,t,e,r,o,n,s,a,l,c,h)}var Zu=require("three"),ed=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let l=new Zu.TorusKnotBufferGeometry(a,e,r,o,n,s);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var td=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,l=i.shape,c=t*.5,h=e*.5;a?(l.addPoint(l.createPoint(-c,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))):(l.addPoint(l.createPoint(0,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))),l.isClosed=!0;for(let u=0,d=l.points.length;u<d;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=at.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};var $e=require("three");var Jv,Qs=new Promise(i=>{Jv=i});var Bd=require("three");var to=require("three");var Sa=require("three");var Bl=require("three");var He=require("three");var Ol=require("three");var rd=require("three"),Pt=class extends rd.Color{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};function Re(i,t){let e;if(typeof i=="string"){let r=t?.getColor(i);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Pt(0,0,0,0))}else return"a"in i?new Pt(i.r,i.g,i.b,i.a):new Pt(i.r,i.g,i.b,1);return e}var Dl=i=>"isEntity"in i,fr=i=>"isAbstractMesh"in i,gr=i=>i!==null&&i.isBooleanMesh,od=i=>i.objectType==="CombinedCamera";var _r=i=>"objectHelper"in i;function Qv(i,t){let e=!1;t.position&&(i.position.fromArray(t.position),e=!0),t.rotation&&(i.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,i.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(e=!0,i.hiddenMatrix.fromArray(t.hiddenMatrix??Hr.identity)),e&&(i.updateMatrix(),gr(i.parent)&&fr(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=t.isUpVectorFlipped),i.updateUp())}function Zv(i,t){Qv(i,t),t.name!==void 0&&(i.name=t.name),t.visible!==void 0&&(i.isEntity?i.visibility=t.visible:i.visible=t.visible)}function nd(i,t,e){Zv(i,t),t.color!==void 0&&(i.color=Re(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Ol.HemisphereLight)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Ol.HemisphereLight)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&_r(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function id(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var cn=new He.Box3,yr=new He.Vector3,xr=new He.Vector3,hn=new He.Matrix4,ad=[new He.Vector3(-1,1,1),new He.Vector3(-1,-1,1),new He.Vector3(1,-1,1),new He.Vector3(1,1,1),new He.Vector3(-1,1,-1),new He.Vector3(-1,-1,-1),new He.Vector3(1,-1,-1),new He.Vector3(1,1,-1)],eb=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],tb=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function rb(i,t,e=0,r=t.count){let o=1/0,n=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=e;h<r;h++){let p=t.getX(h),u=t.getY(h),d=t.getZ(h);p<o&&(o=p),u<n&&(n=u),d<s&&(s=d),p>a&&(a=p),u>l&&(l=u),d>c&&(c=d)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var sd=(i,t,e,r)=>{if(fr(i)){let o=i.geometry.userData.parameters,n=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?yr.copy(i.originalGeometry.boundingSphere.center):n!==void 0&&(rb(cn,n,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:n.count),cn.getCenter(yr)),i.forceComputeSize?cn.getSize(xr).multiplyScalar(.5):xr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(_r(i)&&r===!0){let o=i.geometryHelper.getAttribute("position");cn.setFromArray(o.array),cn.getCenter(yr),cn.getSize(xr).multiplyScalar(.5)}else yr.setScalar(0),xr.setScalar(0);hn.copy(t).multiply(i.matrixWorld),xr.x===0&&xr.y===0&&xr.z===0?e.push(new He.Vector3(yr.x,yr.y,yr.z).applyMatrix4(hn)):ad.forEach(o=>{e.push(o.clone().multiply(xr).add(yr).applyMatrix4(hn))})},ii=class extends He.Box3{constructor(){super(...arguments);this.matrix=new He.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new He.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(s=>{s.visible&&sd(s,r,n,e.enableHelper===!0)}):sd(e,r,n,e.enableHelper===!0),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(hn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(xr).multiplyScalar(.5),this.getCenter(yr),hn.copy(this.matrix).setPosition(yr),this.vertices=ad.map(e=>e.clone().multiply(xr).applyMatrix4(hn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=eb.map(([e,r])=>new He.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new He.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=tb.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Zs=require("three");var ea=i=>class extends i{hasEntityChild(){return this.children.some(e=>Dl(e))}isDescendantOf(e){e instanceof Zs.Object3D&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new Zs.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Dl(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let n=e.children[o];this.add(n.clone())}return this}};var qt=i=>"isEntity"in i,ld=i=>"isAbstractMesh"in i,$t=i=>class extends ea(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Bl.Matrix4;this._singleBBox=new ii;this._recursiveBBox=new ii;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)qt(o)&&o.traverseEntity(n=>{_r(n)&&n.visible&&(n.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{qt(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)qt(o)&&o.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let n=this.parent;if(r&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let n of r.children)qt(n)&&this.add(n.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let n of r.children)qt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new Bl.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)qt(n)&&n.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ko(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return ko(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};var Qe=require("three");var yo=class extends Qe.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Qe.Vector3),n=.1;this.parameters=gs.defaultData(o.toArray(),n),ao(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}refreshClonerMasks(){for(let e of this.children)e.layers.mask=this.object.layers.mask}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material;for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material;for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let n=this.object.shallowClone(!1);n.visible=!0,this.add(n),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*Qe.MathUtils.DEG2RAD,n=r.end*Qe.MathUtils.DEG2RAD,s=o-n,a=new Qe.Euler(r.rotation[0]*Qe.MathUtils.DEG2RAD,r.rotation[1]*Qe.MathUtils.DEG2RAD,r.rotation[2]*Qe.MathUtils.DEG2RAD),l;switch(r.axis){case"z":l=new Qe.Vector3(0,0,1);break;case"y":l=new Qe.Vector3(0,1,0);break;default:case"x":l=new Qe.Vector3(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let p=s/e.count*c-o;switch(r.axis){case"x":h.rotation.set(0,p,0);break;case"y":h.rotation.set(0,0,p);break;case"z":h.rotation.set(p,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Qe.Euler(r.rotation[0]*Qe.MathUtils.DEG2RAD,r.rotation[1]*Qe.MathUtils.DEG2RAD,r.rotation[2]*Qe.MathUtils.DEG2RAD);for(let[n,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*n,s.scale.y=1+(r.scale[1]-1)*n,s.scale.z=1+(r.scale[2]-1)*n,s.rotation.x=o.x*n,s.rotation.y=o.y*n,s.rotation.z=o.z*n,s.position.x=r.position[0]*n,s.position.y=r.position[1]*n,s.position.z=r.position[2]*n}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let n={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Qe.Vector3(o.size[0]*(o.count[0]-n.x)*.5,o.size[1]*(o.count[1]-n.y)*.5,o.size[2]*(o.count[2]-n.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=o.size[0]*a-s.x,h.position.y=o.size[1]*l-s.y,h.position.z=o.size[2]*c-s.z}}else for(let n=0;n<o.count[0];n++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*n,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),ao(this.parameters,e),this.update(),this}};var gt=require("three");var ve=require("three");var cd=require("three");var ze=class{constructor(t,e,r,o){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let n in r)n!=="type"&&n!=="calpha"&&(this.uniforms[`f${this.id}_${n}`]=r[n]);for(let n in o)this.defines[n]=o[n]}}copy(t){this.id=t.id,this.type=t.type,this.defines={...t.defines};for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||this.getName(e)==="normalMap"||this.getName(e)==="depthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new ze(this.id).copy(this)}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let n=this.uniforms[`f${this.id}_${r}`].value;n!==void 0&&(Array.isArray(n)?t[r]=n.map(s=>s.clone?s.clone():s):t[r]=n.clone?n.clone():n)}return t}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}isEqual(t){for(let e in t.uniforms){let r=t.getName(e);if(!r)return!1;let o=this.getValue(r),n=t.uniforms[e].value;if(n.value instanceof cd.Texture){if(o.image!==n.image)return!1}else if(Array.isArray(n)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==n[a])return!1}else{let s=o;if(s.equals){if(!s.equals(n))return!1}else if(o!==n)return!1}}return!0}dispose(){}};function hd(i){let t=i instanceof ze?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}var pd=require("three"),he=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=pd.MathUtils.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,s){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof he&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}};var ud=require("three"),le=class extends he{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=ud.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,n);let h=this.generate(e,l,o);return e.addNodeCode(c+" = "+h+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var Be=class extends le{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var Pe=class extends Be{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof Pt?e:new Pt(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let h=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${h};`)}return c?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};var X=class extends Be{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var ye=class extends Be{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var Qr=class extends Be{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var _l=require("three");var lt=class extends Be{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof _l.Vector2?e:new _l.Vector2(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var El=require("three");var mt=class extends Be{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof El.Vector3?e:new El.Vector3(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var vr=class extends Be{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Pt?e:new Pt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Gl=require("three");var Er=class extends Be{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Gl.Vector4?new Array(e).fill(r):new Array(e).fill(new Gl.Vector4(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var tt=class extends Be{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};var Rl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},rt=new Rl;var pn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}copy(e){return super.copy(e),this.index=e.index,this}};rt.addKeyword("uv",function(){return new pn});rt.addKeyword("uv2",function(){return new pn(1)});var ta=require("three");var ob=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,dd=/[a-z_0-9]+/gi,K=class extends le{constructor(e,r,o,n,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,s){let a,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let h=[];for(;a=dd.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],d=u[0],m=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&m&&rt.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=rt.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||rt.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&c[u.index+l-1]!=="."&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&rt.contains(g)&&e.include(rt.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=ob.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(dd);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}};var xo=class extends le{constructor(e=new he,r){super("v4");this.nodeType="ColorSpace";this.factor=new he;this.input=e,this.method=r??xo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ta.LinearEncoding:return["Linear"];case ta.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),s=xo.Nodes[this.method],a=e.include(s);if(a===xo.LINEAR_TO_LINEAR)return e.format(o,n,r);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=xo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=xo.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}copy(e){return super.copy(e),this.input.copy(e.input),this.method=e.method,this.factor.copy(e.factor),this}},St=xo;St.Nodes={LinearToLinear:new K(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
2
- `)),sRGBToLinear:new K(["vec4 sRGBToLinear( 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.w );","}"].join(`
3
- `)),LinearTosRGB:new K(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
4
- `))},St.LINEAR_TO_LINEAR="LinearToLinear",St.SRGB_TO_LINEAR="sRGBToLinear",St.LINEAR_TO_SRGB="LinearTosRGB";var Me=class extends K{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};var fd=require("three"),Xt=class extends fd.Texture{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let n=0;n<o.length;n++)t.images[o.uuid].url[n]=md(o[n])}else t.images[o.uuid].url=md(o)}return e}};function md(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?nb(i):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var un;function nb(i){if(/^data:/i.test(i.src))return i.src;let t;if(i instanceof HTMLCanvasElement)t=i;else{un===void 0&&(un=document.createElement("canvas")),un.width=i.width,un.height=i.height;let r=un.getContext("2d");i instanceof ImageData?r.putImageData(i,0,0):r.drawImage(i,0,0,i.width,i.height),t=un}let e=i.src.startsWith("blob:")?i.fileName:i.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var ct=class extends Be{constructor(e=new Xt,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new pn,this.bias=o,this.project=n!==void 0?n:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+n+", "+s+" )":l=a+"( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new St(new Me("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var gd=require("three");var dn=class extends Be{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new gd.Matrix3}generateReadonly(e,r,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var ai=class extends le{constructor(e=new ct,r,o,n,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=n,this.axis=s,this.side=a,this.size=l,this.mat=new dn(this.texture.value.matrix),this.alpha=c,this.mode=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,n;switch(this.projection.value){case 3:n=e.include(ai.Nodes.cylindrical);break;case 2:n=e.include(ai.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new K(`
5
- vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1
+ var Tf=Object.create;var ji=Object.defineProperty;var Nf=Object.getOwnPropertyDescriptor;var Cf=Object.getOwnPropertyNames;var Lf=Object.getPrototypeOf,If=Object.prototype.hasOwnProperty;var Pf=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),cc=(n,r)=>{for(var e in r)ji(n,e,{get:r[e],enumerable:!0})},uc=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Cf(r))!If.call(n,o)&&o!==e&&ji(n,o,{get:()=>r[o],enumerable:!(t=Nf(r,o))||t.enumerable});return n};var Af=(n,r,e)=>(e=n!=null?Tf(Lf(n)):{},uc(r||!n||!n.__esModule?ji(e,"default",{value:n,enumerable:!0}):e,n)),Mf=n=>uc(ji({},"__esModule",{value:!0}),n);var Jd=Pf((Ia,Qd)=>{(function(n,r){typeof Ia=="object"&&typeof Qd<"u"?r(Ia):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ia,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,a,l,c,u,m,p,d,f,g,x,y,v=r[0].length,P=r.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],E=[],w=e==="f"?P:v,h=g=p=0;h<P;h++)b[h]=new Array(w).fill(0);for(h=0;h<v;h++)E[h]=new Array(v).fill(0);var _,N=new Array(v).fill(0);for(h=0;h<P;h++)for(s=0;s<v;s++)b[h][s]=r[h][s];for(h=0;h<v;h++){for(S[h]=p,f=0,l=h+1,s=h;s<P;s++)f+=Math.pow(b[s][h],2);if(f<i)p=0;else for(d=(m=b[h][h])*(p=m<0?Math.sqrt(f):-Math.sqrt(f))-f,b[h][h]=m-p,s=l;s<v;s++){for(f=0,a=h;a<P;a++)f+=b[a][h]*b[a][s];for(m=f/d,a=h;a<P;a++)b[a][s]=b[a][s]+m*b[a][h]}for(N[h]=p,f=0,s=l;s<v;s++)f+=Math.pow(b[h][s],2);if(f<i)p=0;else{for(d=(m=b[h][h+1])*(p=m<0?Math.sqrt(f):-Math.sqrt(f))-f,b[h][h+1]=m-p,s=l;s<v;s++)S[s]=b[h][s]/d;for(s=l;s<P;s++){for(f=0,a=l;a<v;a++)f+=b[s][a]*b[h][a];for(a=l;a<v;a++)b[s][a]=b[s][a]+f*S[a]}}g<(x=Math.abs(N[h])+Math.abs(S[h]))&&(g=x)}if(t)for(h=v-1;0<=h;h--){if(p!==0){for(d=b[h][h+1]*p,s=l;s<v;s++)E[s][h]=b[h][s]/d;for(s=l;s<v;s++){for(f=0,a=l;a<v;a++)f+=b[h][a]*E[a][s];for(a=l;a<v;a++)E[a][s]=E[a][s]+f*E[a][h]}}for(s=l;s<v;s++)E[h][s]=0,E[s][h]=0;E[h][h]=1,p=S[h],l=h}if(e){if(e==="f")for(h=v;h<P;h++){for(s=v;s<P;s++)b[h][s]=0;b[h][h]=1}for(h=v-1;0<=h;h--){for(l=h+1,p=N[h],s=l;s<w;s++)b[h][s]=0;if(p!==0){for(d=b[h][h]*p,s=l;s<w;s++){for(f=0,a=l;a<P;a++)f+=b[a][h]*b[a][s];for(m=f/d,a=h;a<P;a++)b[a][s]=b[a][s]+m*b[a][h]}for(s=h;s<P;s++)b[s][h]=b[s][h]/p}else for(s=h;s<P;s++)b[s][h]=0;b[h][h]=b[h][h]+1}}for(o*=g,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(_=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){_=!0;break}if(Math.abs(N[l-1])<=o)break}if(!_){for(u=0,c=l-(f=1),h=l;h<a+1&&(m=f*S[h],S[h]=u*S[h],!(Math.abs(m)<=o));h++)if(p=N[h],N[h]=Math.sqrt(m*m+p*p),u=p/(d=N[h]),f=-m/d,e)for(s=0;s<P;s++)x=b[s][c],y=b[s][h],b[s][c]=x*u+y*f,b[s][h]=-x*f+y*u}if(y=N[a],l===a){if(y<0&&(N[a]=-y,t))for(s=0;s<v;s++)E[s][a]=-E[s][a];break}for(g=N[l],m=(((x=N[a-1])-y)*(x+y)+((p=S[a-1])-(d=S[a]))*(p+d))/(2*d*x),p=Math.sqrt(m*m+1),m=((g-y)*(g+y)+d*(x/(m<0?m-p:m+p)-d))/g,h=l+(f=u=1);h<a+1;h++){if(p=S[h],x=N[h],d=f*p,p*=u,y=Math.sqrt(m*m+d*d),m=g*(u=m/(S[h-1]=y))+p*(f=d/y),p=-g*f+p*u,d=x*f,x*=u,t)for(s=0;s<v;s++)g=E[s][h-1],y=E[s][h],E[s][h-1]=g*u+y*f,E[s][h]=-g*f+y*u;if(y=Math.sqrt(m*m+d*d),m=(u=m/(N[h-1]=y))*p+(f=d/y)*x,g=-f*p+u*x,e)for(s=0;s<P;s++)x=b[s][h-1],y=b[s][h],b[s][h-1]=x*u+y*f,b[s][h]=-x*f+y*u}S[l]=0,S[a]=m,N[a]=g}for(h=0;h<v;h++)N[h]<o&&(N[h]=0);return{u:b,q:N,v:E}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Yb={};cc(Yb,{default:()=>Pa});module.exports=Mf(Yb);var Aa=require("three");function Oa(n,r){return Object.setPrototypeOf(n,r),n}function pc(n){return Array.isArray(n)?n:[n]}var Of=typeof global=="object"&&global&&global.Object===Object&&global,ki=Of;var _f=typeof self=="object"&&self&&self.Object===Object&&self,Df=ki||_f||Function("return this")(),Xe=Df;var Ef=Xe.Symbol,xt=Ef;var mc=Object.prototype,Bf=mc.hasOwnProperty,Gf=mc.toString,Vn=xt?xt.toStringTag:void 0;function Rf(n){var r=Bf.call(n,Vn),e=n[Vn];try{n[Vn]=void 0;var t=!0}catch{}var o=Gf.call(n);return t&&(r?n[Vn]=e:delete n[Vn]),o}var dc=Rf;var zf=Object.prototype,Vf=zf.toString;function Ff(n){return Vf.call(n)}var fc=Ff;var Uf="[object Null]",jf="[object Undefined]",hc=xt?xt.toStringTag:void 0;function kf(n){return n==null?n===void 0?jf:Uf:hc&&hc in Object(n)?dc(n):fc(n)}var Et=kf;function Hf(n){return n!=null&&typeof n=="object"}var dt=Hf;var Wf="[object Symbol]";function qf(n){return typeof n=="symbol"||dt(n)&&Et(n)==Wf}var Oo=qf;function $f(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Hi=$f;var Xf=Array.isArray,Ye=Xf;var Yf=1/0,gc=xt?xt.prototype:void 0,yc=gc?gc.toString:void 0;function xc(n){if(typeof n=="string")return n;if(Ye(n))return Hi(n,xc)+"";if(Oo(n))return yc?yc.call(n):"";var r=n+"";return r=="0"&&1/n==-Yf?"-0":r}var vc=xc;function Kf(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var ft=Kf;function Qf(n){return n}var Wi=Qf;var Jf="[object AsyncFunction]",Zf="[object Function]",eh="[object GeneratorFunction]",th="[object Proxy]";function rh(n){if(!ft(n))return!1;var r=Et(n);return r==Zf||r==eh||r==Jf||r==th}var _o=rh;var oh=Xe["__core-js_shared__"],qi=oh;var bc=function(){var n=/[^.]+$/.exec(qi&&qi.keys&&qi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function nh(n){return!!bc&&bc in n}var Sc=nh;var ih=Function.prototype,sh=ih.toString;function ah(n){if(n!=null){try{return sh.call(n)}catch{}try{return n+""}catch{}}return""}var Pr=ah;var lh=/[\\^$.*+?()[\]{}|]/g,ch=/^\[object .+?Constructor\]$/,uh=Function.prototype,ph=Object.prototype,mh=uh.toString,dh=ph.hasOwnProperty,fh=RegExp("^"+mh.call(dh).replace(lh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function hh(n){if(!ft(n)||Sc(n))return!1;var r=_o(n)?fh:ch;return r.test(Pr(n))}var wc=hh;function gh(n,r){return n?.[r]}var Tc=gh;function yh(n,r){var e=Tc(n,r);return wc(e)?e:void 0}var Lt=yh;var xh=Lt(Xe,"WeakMap"),$i=xh;var Nc=Object.create,vh=function(){function n(){}return function(r){if(!ft(r))return{};if(Nc)return Nc(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Cc=vh;function bh(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Lc=bh;function Sh(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Xi=Sh;var wh=800,Th=16,Nh=Date.now;function Ch(n){var r=0,e=0;return function(){var t=Nh(),o=Th-(t-e);if(e=t,o>0){if(++r>=wh)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Ic=Ch;function Lh(n){return function(){return n}}var Pc=Lh;var Ih=function(){try{var n=Lt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Do=Ih;var Ph=Do?function(n,r){return Do(n,"toString",{configurable:!0,enumerable:!1,value:Pc(r),writable:!0})}:Wi,Ac=Ph;var Ah=Ic(Ac),Yi=Ah;function Mh(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Mc=Mh;var Oh=9007199254740991,_h=/^(?:0|[1-9]\d*)$/;function Dh(n,r){var e=typeof n;return r=r??Oh,!!r&&(e=="number"||e!="symbol"&&_h.test(n))&&n>-1&&n%1==0&&n<r}var Ki=Dh;function Eh(n,r,e){r=="__proto__"&&Do?Do(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Eo=Eh;function Bh(n,r){return n===r||n!==n&&r!==r}var Vr=Bh;var Gh=Object.prototype,Rh=Gh.hasOwnProperty;function zh(n,r,e){var t=n[r];(!(Rh.call(n,r)&&Vr(t,e))||e===void 0&&!(r in n))&&Eo(n,r,e)}var Qi=zh;function Vh(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var a=r[i],l=t?t(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),o?Eo(e,a,l):Qi(e,a,l)}return e}var Ft=Vh;var Oc=Math.max;function Fh(n,r,e){return r=Oc(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Oc(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),Lc(n,this,a)}}var Ji=Fh;function Uh(n,r){return Yi(Ji(n,r,Wi),n+"")}var _c=Uh;var jh=9007199254740991;function kh(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=jh}var Zi=kh;function Hh(n){return n!=null&&Zi(n.length)&&!_o(n)}var Fr=Hh;function Wh(n,r,e){if(!ft(e))return!1;var t=typeof r;return(t=="number"?Fr(e)&&Ki(r,e.length):t=="string"&&r in e)?Vr(e[r],n):!1}var Dc=Wh;function qh(n){return _c(function(r,e){var t=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Dc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),r=Object(r);++t<o;){var a=e[t];a&&n(r,a,t,i)}return r})}var Ec=qh;var $h=Object.prototype;function Xh(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||$h;return n===e}var Bo=Xh;function Yh(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Bc=Yh;var Kh="[object Arguments]";function Qh(n){return dt(n)&&Et(n)==Kh}var _a=Qh;var Gc=Object.prototype,Jh=Gc.hasOwnProperty,Zh=Gc.propertyIsEnumerable,eg=_a(function(){return arguments}())?_a:function(n){return dt(n)&&Jh.call(n,"callee")&&!Zh.call(n,"callee")},ao=eg;function tg(){return!1}var Rc=tg;var Fc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zc=Fc&&typeof module=="object"&&module&&!module.nodeType&&module,rg=zc&&zc.exports===Fc,Vc=rg?Xe.Buffer:void 0,og=Vc?Vc.isBuffer:void 0,ng=og||Rc,Go=ng;var ig="[object Arguments]",sg="[object Array]",ag="[object Boolean]",lg="[object Date]",cg="[object Error]",ug="[object Function]",pg="[object Map]",mg="[object Number]",dg="[object Object]",fg="[object RegExp]",hg="[object Set]",gg="[object String]",yg="[object WeakMap]",xg="[object ArrayBuffer]",vg="[object DataView]",bg="[object Float32Array]",Sg="[object Float64Array]",wg="[object Int8Array]",Tg="[object Int16Array]",Ng="[object Int32Array]",Cg="[object Uint8Array]",Lg="[object Uint8ClampedArray]",Ig="[object Uint16Array]",Pg="[object Uint32Array]",_e={};_e[bg]=_e[Sg]=_e[wg]=_e[Tg]=_e[Ng]=_e[Cg]=_e[Lg]=_e[Ig]=_e[Pg]=!0;_e[ig]=_e[sg]=_e[xg]=_e[ag]=_e[vg]=_e[lg]=_e[cg]=_e[ug]=_e[pg]=_e[mg]=_e[dg]=_e[fg]=_e[hg]=_e[gg]=_e[yg]=!1;function Ag(n){return dt(n)&&Zi(n.length)&&!!_e[Et(n)]}var Uc=Ag;function Mg(n){return function(r){return n(r)}}var Ro=Mg;var jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fn=jc&&typeof module=="object"&&module&&!module.nodeType&&module,Og=Fn&&Fn.exports===jc,Da=Og&&ki.process,_g=function(){try{var n=Fn&&Fn.require&&Fn.require("util").types;return n||Da&&Da.binding&&Da.binding("util")}catch{}}(),Ar=_g;var kc=Ar&&Ar.isTypedArray,Dg=kc?Ro(kc):Uc,es=Dg;var Eg=Object.prototype,Bg=Eg.hasOwnProperty;function Gg(n,r){var e=Ye(n),t=!e&&ao(n),o=!e&&!t&&Go(n),i=!e&&!t&&!o&&es(n),s=e||t||o||i,a=s?Bc(n.length,String):[],l=a.length;for(var c in n)(r||Bg.call(n,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ki(c,l)))&&a.push(c);return a}var ts=Gg;function Rg(n,r){return function(e){return n(r(e))}}var rs=Rg;var zg=rs(Object.keys,Object),Hc=zg;var Vg=Object.prototype,Fg=Vg.hasOwnProperty;function Ug(n){if(!Bo(n))return Hc(n);var r=[];for(var e in Object(n))Fg.call(n,e)&&e!="constructor"&&r.push(e);return r}var Wc=Ug;function jg(n){return Fr(n)?ts(n):Wc(n)}var zo=jg;function kg(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var qc=kg;var Hg=Object.prototype,Wg=Hg.hasOwnProperty;function qg(n){if(!ft(n))return qc(n);var r=Bo(n),e=[];for(var t in n)t=="constructor"&&(r||!Wg.call(n,t))||e.push(t);return e}var $c=qg;function $g(n){return Fr(n)?ts(n,!0):$c(n)}var ir=$g;var Xg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Yg=/^\w*$/;function Kg(n,r){if(Ye(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Oo(n)?!0:Yg.test(n)||!Xg.test(n)||r!=null&&n in Object(r)}var Xc=Kg;var Qg=Lt(Object,"create"),Mr=Qg;function Jg(){this.__data__=Mr?Mr(null):{},this.size=0}var Yc=Jg;function Zg(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Kc=Zg;var ey="__lodash_hash_undefined__",ty=Object.prototype,ry=ty.hasOwnProperty;function oy(n){var r=this.__data__;if(Mr){var e=r[n];return e===ey?void 0:e}return ry.call(r,n)?r[n]:void 0}var Qc=oy;var ny=Object.prototype,iy=ny.hasOwnProperty;function sy(n){var r=this.__data__;return Mr?r[n]!==void 0:iy.call(r,n)}var Jc=sy;var ay="__lodash_hash_undefined__";function ly(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Mr&&r===void 0?ay:r,this}var Zc=ly;function Vo(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Vo.prototype.clear=Yc;Vo.prototype.delete=Kc;Vo.prototype.get=Qc;Vo.prototype.has=Jc;Vo.prototype.set=Zc;var Ea=Vo;function cy(){this.__data__=[],this.size=0}var eu=cy;function uy(n,r){for(var e=n.length;e--;)if(Vr(n[e][0],r))return e;return-1}var Ur=uy;var py=Array.prototype,my=py.splice;function dy(n){var r=this.__data__,e=Ur(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():my.call(r,e,1),--this.size,!0}var tu=dy;function fy(n){var r=this.__data__,e=Ur(r,n);return e<0?void 0:r[e][1]}var ru=fy;function hy(n){return Ur(this.__data__,n)>-1}var ou=hy;function gy(n,r){var e=this.__data__,t=Ur(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var nu=gy;function Fo(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Fo.prototype.clear=eu;Fo.prototype.delete=tu;Fo.prototype.get=ru;Fo.prototype.has=ou;Fo.prototype.set=nu;var jr=Fo;var yy=Lt(Xe,"Map"),kr=yy;function xy(){this.size=0,this.__data__={hash:new Ea,map:new(kr||jr),string:new Ea}}var iu=xy;function vy(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var su=vy;function by(n,r){var e=n.__data__;return su(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Hr=by;function Sy(n){var r=Hr(this,n).delete(n);return this.size-=r?1:0,r}var au=Sy;function wy(n){return Hr(this,n).get(n)}var lu=wy;function Ty(n){return Hr(this,n).has(n)}var cu=Ty;function Ny(n,r){var e=Hr(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var uu=Ny;function Uo(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}Uo.prototype.clear=iu;Uo.prototype.delete=au;Uo.prototype.get=lu;Uo.prototype.has=cu;Uo.prototype.set=uu;var Un=Uo;var Cy="Expected a function";function Ba(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Cy);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(Ba.Cache||Un),e}Ba.Cache=Un;var pu=Ba;var Ly=500;function Iy(n){var r=pu(n,function(t){return e.size===Ly&&e.clear(),t}),e=r.cache;return r}var mu=Iy;var Py=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ay=/\\(\\)?/g,My=mu(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Py,function(e,t,o,i){r.push(o?i.replace(Ay,"$1"):t||e)}),r}),du=My;function Oy(n){return n==null?"":vc(n)}var fu=Oy;function _y(n,r){return Ye(n)?n:Xc(n,r)?[n]:du(fu(n))}var jo=_y;var Dy=1/0;function Ey(n){if(typeof n=="string"||Oo(n))return n;var r=n+"";return r=="0"&&1/n==-Dy?"-0":r}var os=Ey;function By(n,r){r=jo(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[os(r[e++])];return e&&e==t?n:void 0}var hu=By;function Gy(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var ko=Gy;var gu=xt?xt.isConcatSpreadable:void 0;function Ry(n){return Ye(n)||ao(n)||!!(gu&&n&&n[gu])}var yu=Ry;function xu(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=yu),o||(o=[]);++i<s;){var a=n[i];r>0&&e(a)?r>1?xu(a,r-1,e,t,o):ko(o,a):t||(o[o.length]=a)}return o}var vu=xu;function zy(n){var r=n==null?0:n.length;return r?vu(n,1):[]}var bu=zy;function Vy(n){return Yi(Ji(n,void 0,bu),n+"")}var Su=Vy;var Fy=rs(Object.getPrototypeOf,Object),Ho=Fy;var Uy="[object Object]",jy=Function.prototype,ky=Object.prototype,wu=jy.toString,Hy=ky.hasOwnProperty,Wy=wu.call(Object);function qy(n){if(!dt(n)||Et(n)!=Uy)return!1;var r=Ho(n);if(r===null)return!0;var e=Hy.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&wu.call(e)==Wy}var ns=qy;function $y(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Tu=$y;function Xy(){this.__data__=new jr,this.size=0}var Nu=Xy;function Yy(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Cu=Yy;function Ky(n){return this.__data__.get(n)}var Lu=Ky;function Qy(n){return this.__data__.has(n)}var Iu=Qy;var Jy=200;function Zy(n,r){var e=this.__data__;if(e instanceof jr){var t=e.__data__;if(!kr||t.length<Jy-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Un(t)}return e.set(n,r),this.size=e.size,this}var Pu=Zy;function Wo(n){var r=this.__data__=new jr(n);this.size=r.size}Wo.prototype.clear=Nu;Wo.prototype.delete=Cu;Wo.prototype.get=Lu;Wo.prototype.has=Iu;Wo.prototype.set=Pu;var is=Wo;function ex(n,r){return n&&Ft(r,zo(r),n)}var Au=ex;function tx(n,r){return n&&Ft(r,ir(r),n)}var Mu=tx;var Eu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ou=Eu&&typeof module=="object"&&module&&!module.nodeType&&module,rx=Ou&&Ou.exports===Eu,_u=rx?Xe.Buffer:void 0,Du=_u?_u.allocUnsafe:void 0;function ox(n,r){if(r)return n.slice();var e=n.length,t=Du?Du(e):new n.constructor(e);return n.copy(t),t}var ss=ox;function nx(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var Bu=nx;function ix(){return[]}var as=ix;var sx=Object.prototype,ax=sx.propertyIsEnumerable,Gu=Object.getOwnPropertySymbols,lx=Gu?function(n){return n==null?[]:(n=Object(n),Bu(Gu(n),function(r){return ax.call(n,r)}))}:as,qo=lx;function cx(n,r){return Ft(n,qo(n),r)}var Ru=cx;var ux=Object.getOwnPropertySymbols,px=ux?function(n){for(var r=[];n;)ko(r,qo(n)),n=Ho(n);return r}:as,ls=px;function mx(n,r){return Ft(n,ls(n),r)}var zu=mx;function dx(n,r,e){var t=r(n);return Ye(n)?t:ko(t,e(n))}var cs=dx;function fx(n){return cs(n,zo,qo)}var Vu=fx;function hx(n){return cs(n,ir,ls)}var us=hx;var gx=Lt(Xe,"DataView"),ps=gx;var yx=Lt(Xe,"Promise"),ms=yx;var xx=Lt(Xe,"Set"),ds=xx;var Fu="[object Map]",vx="[object Object]",Uu="[object Promise]",ju="[object Set]",ku="[object WeakMap]",Hu="[object DataView]",bx=Pr(ps),Sx=Pr(kr),wx=Pr(ms),Tx=Pr(ds),Nx=Pr($i),lo=Et;(ps&&lo(new ps(new ArrayBuffer(1)))!=Hu||kr&&lo(new kr)!=Fu||ms&&lo(ms.resolve())!=Uu||ds&&lo(new ds)!=ju||$i&&lo(new $i)!=ku)&&(lo=function(n){var r=Et(n),e=r==vx?n.constructor:void 0,t=e?Pr(e):"";if(t)switch(t){case bx:return Hu;case Sx:return Fu;case wx:return Uu;case Tx:return ju;case Nx:return ku}return r});var $o=lo;var Cx=Object.prototype,Lx=Cx.hasOwnProperty;function Ix(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&Lx.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Wu=Ix;var Px=Xe.Uint8Array,Ga=Px;function Ax(n){var r=new n.constructor(n.byteLength);return new Ga(r).set(new Ga(n)),r}var Xo=Ax;function Mx(n,r){var e=r?Xo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var qu=Mx;var Ox=/\w*$/;function _x(n){var r=new n.constructor(n.source,Ox.exec(n));return r.lastIndex=n.lastIndex,r}var $u=_x;var Xu=xt?xt.prototype:void 0,Yu=Xu?Xu.valueOf:void 0;function Dx(n){return Yu?Object(Yu.call(n)):{}}var Ku=Dx;function Ex(n,r){var e=r?Xo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var fs=Ex;var Bx="[object Boolean]",Gx="[object Date]",Rx="[object Map]",zx="[object Number]",Vx="[object RegExp]",Fx="[object Set]",Ux="[object String]",jx="[object Symbol]",kx="[object ArrayBuffer]",Hx="[object DataView]",Wx="[object Float32Array]",qx="[object Float64Array]",$x="[object Int8Array]",Xx="[object Int16Array]",Yx="[object Int32Array]",Kx="[object Uint8Array]",Qx="[object Uint8ClampedArray]",Jx="[object Uint16Array]",Zx="[object Uint32Array]";function e0(n,r,e){var t=n.constructor;switch(r){case kx:return Xo(n);case Bx:case Gx:return new t(+n);case Hx:return qu(n,e);case Wx:case qx:case $x:case Xx:case Yx:case Kx:case Qx:case Jx:case Zx:return fs(n,e);case Rx:return new t;case zx:case Ux:return new t(n);case Vx:return $u(n);case Fx:return new t;case jx:return Ku(n)}}var Qu=e0;function t0(n){return typeof n.constructor=="function"&&!Bo(n)?Cc(Ho(n)):{}}var hs=t0;var r0="[object Map]";function o0(n){return dt(n)&&$o(n)==r0}var Ju=o0;var Zu=Ar&&Ar.isMap,n0=Zu?Ro(Zu):Ju,ep=n0;var i0="[object Set]";function s0(n){return dt(n)&&$o(n)==i0}var tp=s0;var rp=Ar&&Ar.isSet,a0=rp?Ro(rp):tp,op=a0;var l0=1,c0=2,u0=4,np="[object Arguments]",p0="[object Array]",m0="[object Boolean]",d0="[object Date]",f0="[object Error]",ip="[object Function]",h0="[object GeneratorFunction]",g0="[object Map]",y0="[object Number]",sp="[object Object]",x0="[object RegExp]",v0="[object Set]",b0="[object String]",S0="[object Symbol]",w0="[object WeakMap]",T0="[object ArrayBuffer]",N0="[object DataView]",C0="[object Float32Array]",L0="[object Float64Array]",I0="[object Int8Array]",P0="[object Int16Array]",A0="[object Int32Array]",M0="[object Uint8Array]",O0="[object Uint8ClampedArray]",_0="[object Uint16Array]",D0="[object Uint32Array]",Oe={};Oe[np]=Oe[p0]=Oe[T0]=Oe[N0]=Oe[m0]=Oe[d0]=Oe[C0]=Oe[L0]=Oe[I0]=Oe[P0]=Oe[A0]=Oe[g0]=Oe[y0]=Oe[sp]=Oe[x0]=Oe[v0]=Oe[b0]=Oe[S0]=Oe[M0]=Oe[O0]=Oe[_0]=Oe[D0]=!0;Oe[f0]=Oe[ip]=Oe[w0]=!1;function gs(n,r,e,t,o,i){var s,a=r&l0,l=r&c0,c=r&u0;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!ft(n))return n;var u=Ye(n);if(u){if(s=Wu(n),!a)return Xi(n,s)}else{var m=$o(n),p=m==ip||m==h0;if(Go(n))return ss(n,a);if(m==sp||m==np||p&&!o){if(s=l||p?{}:hs(n),!a)return l?zu(n,Mu(s,n)):Ru(n,Au(s,n))}else{if(!Oe[m])return o?n:{};s=Qu(n,m,a)}}i||(i=new is);var d=i.get(n);if(d)return d;i.set(n,s),op(n)?n.forEach(function(x){s.add(gs(x,r,e,x,n,i))}):ep(n)&&n.forEach(function(x,y){s.set(y,gs(x,r,e,y,n,i))});var f=c?l?us:Vu:l?ir:zo,g=u?void 0:f(n);return Mc(g||n,function(x,y){g&&(y=x,x=n[y]),Qi(s,y,gs(x,r,e,y,n,i))}),s}var ys=gs;var E0=1,B0=4;function G0(n){return ys(n,E0|B0)}var jn=G0;function R0(n){return function(r,e,t){for(var o=-1,i=Object(r),s=t(r),a=s.length;a--;){var l=s[n?a:++o];if(e(i[l],l,i)===!1)break}return r}}var ap=R0;var z0=ap(),lp=z0;function V0(n,r,e){(e!==void 0&&!Vr(n[r],e)||e===void 0&&!(r in n))&&Eo(n,r,e)}var kn=V0;function F0(n){return dt(n)&&Fr(n)}var cp=F0;function U0(n,r){if(!(r==="constructor"&&typeof n[r]=="function")&&r!="__proto__")return n[r]}var Hn=U0;function j0(n){return Ft(n,ir(n))}var up=j0;function k0(n,r,e,t,o,i,s){var a=Hn(n,e),l=Hn(r,e),c=s.get(l);if(c){kn(n,e,c);return}var u=i?i(a,l,e+"",n,r,s):void 0,m=u===void 0;if(m){var p=Ye(l),d=!p&&Go(l),f=!p&&!d&&es(l);u=l,p||d||f?Ye(a)?u=a:cp(a)?u=Xi(a):d?(m=!1,u=ss(l,!0)):f?(m=!1,u=fs(l,!0)):u=[]:ns(l)||ao(l)?(u=a,ao(a)?u=up(a):(!ft(a)||_o(a))&&(u=hs(l))):m=!1}m&&(s.set(l,u),o(u,l,t,i,s),s.delete(l)),kn(n,e,u)}var pp=k0;function mp(n,r,e,t,o){n!==r&&lp(r,function(i,s){if(o||(o=new is),ft(i))pp(n,r,s,e,mp,t,o);else{var a=t?t(Hn(n,s),i,s+"",n,r,o):void 0;a===void 0&&(a=i),kn(n,s,a)}},ir)}var dp=mp;function H0(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var fp=H0;function W0(n,r){return r.length<2?n:hu(n,Tu(r,0,-1))}var hp=W0;var q0=Ec(function(n,r,e){dp(n,r,e)}),co=q0;function $0(n,r){return r=jo(r,n),n=hp(n,r),n==null||delete n[os(fp(r))]}var gp=$0;function X0(n){return ns(n)?void 0:n}var yp=X0;var Y0=1,K0=2,Q0=4,J0=Su(function(n,r){var e={};if(n==null)return e;var t=!1;r=Hi(r,function(i){return i=jo(i,n),t||(t=i.length>1),i}),Ft(n,us(n),e),t&&(e=ys(e,Y0|K0|Q0,yp));for(var o=r.length;o--;)gp(e,r[o]);return e}),Yo=J0;var Ko;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Ko||(Ko={}));var uo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(uo||(uo={}));var xp;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(xp||(xp={}));var Qo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function r(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=r;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function t(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=t})(Qo||(Qo={}));var vp;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(vp||(vp={}));var Wr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let u=i[3]*s[l]+i[7]*s[l+1]+i[11]*s[l+2]+i[15];a[l]=(i[0]*s[l]+i[4]*s[l+1]+i[8]*s[l+2]+i[12])/u,a[l+1]=(i[1]*s[l]+i[5]*s[l+1]+i[9]*s[l+2]+i[13])/u,a[l+2]=(i[2]*s[l]+i[6]*s[l+1]+i[10]*s[l+2]+i[14])/u}return a}o.applyMatrix4=t})(Wr||(Wr={}));var Bt;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function t(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=t;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function i(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=i;function s(c,u){return c.r===u.r&&c.g===u.g&&c.b===u.b}l.equals=s;function a(c,u,m){return{r:c.r+(u.r-c.r)*m,g:c.g+(u.g-c.g)*m,b:c.b+(u.b-c.b)*m}}l.lerp=a})(Bt||(Bt={}));var Gt;(s=>{s.white={...Bt.white,a:1};function r(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=r;function e(a,l){return{...Bt.fromHex(a),a:l}}s.fromHexAndA=e;function t(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=t;function o(a,l){return Bt.equals(a,l)&&a.a===l.a}s.equals=o;function i(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=i})(Gt||(Gt={}));var xs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(xs||(xs={}));var bp;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(bp||(bp={}));var Sp;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Sp||(Sp={}));var vs;(r=>{function n(e,t=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*t,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+t)),useCenter:!0}}}r.defaultData=n})(vs||(vs={}));var Je=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Je.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,a={...e,[i]:s};return Object.setPrototypeOf(a,Je.prototype),{data:a,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Je.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}throw new Error("illegal arg")}};function Wn(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Wn(t)}return Object.freeze(n)}function wp(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var bs=class extends Error{};function sr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function Ss(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Tp(){return typeof process<"u"}function Np(n,r){for(let e of n)r(e.id,e.data),Np(e.children,r)}function Cp(n,r){r(n.id,n.data);for(let e of n.children)Cp(e,r)}var Ut=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ut.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Wn(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Cp(o,t)}}traverse(e){Np(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...l,data:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let a=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(u=>u.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:a}}Object.setPrototypeOf(i,Ut.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:i,data:s,children:a};return c=[...c,u],c.sort((p,d)=>p.fi-d.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(c=>c.id===t);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let d=t;for(;d!==null;){if(d===void 0)throw new Error;if(d===i)throw new bs("cyclic tree");d=this.parent(d)}}let s=this.parent(i);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===i);l=[...l];let u=l.splice(c,1)[0],m=this.modifyArrayBy(s,l);s=t,l=m.childrenArray(s);let p=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((d,f)=>d.fi-f.fi),e.localIndex=l.indexOf(u),m=m.modifyArrayBy(s,l),{data:m,actual:e,reverse:{type:9,parent:a,fi:p,id:i}}}previous(e,t){if(t===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>wp(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return sr(0,o,o);{let s=i[0].fi;return sr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=i.find(l=>l.fi>s.fi);if(a===void 0){let l=i[i.length-1].fi;return sr(l,l+o,o)}else return sr(s.fi,a.fi,o)}}};var ws;(r=>{function n(e,t){if(Array.isArray(e)){let o=t.props,i={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},a=!1;if(o)for(let l of Object.keys(o)){i[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(ws||(ws={}));var Ge=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ge.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Wn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ge.prototype);let t=e;return Tp()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:t,id:o,data:i}=e,s=this,a={fi:t,id:o,data:i};return s=[...s,a],s.sort((c,u)=>c.fi-u.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(l=>l.id===t);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let s=i.findIndex(u=>u.id===o);if(s===-1)return null;let a=i[s].fi,l={...i[s],fi:t};return i[s]=l,i.sort((u,m)=>u.fi-m.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return sr(0,t,t);{let i=o[0].fi;return sr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return sr(a,a+t,t)}else return sr(i.fi,s.fi,t)}}};var Lp=Symbol(),Ns=Symbol(),Jo=class{reportOp(r,e){let t=this;if(e===null)return;t._current=e.data;let o=[];for(;!(t instanceof Ts);){let i=t._path,s=t._current;if(i!==""&&o.splice(0,0,i),t=t._parent,t===null)return;t.update(i,s)}t.push(o,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Ns];t&&t(),delete this._children[r]}}}},za=class extends Jo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,ws.runOp(this._current,r))}},Va=class extends Jo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Je.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Ip={get(n,r){if(r===Ns)return()=>{n._parent=null};if(r===Lp)return n._current;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=Cs(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},Z0={...Ip,set(n,r,e){let t={type:0,props:{[r]:ja(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},ev={...Ip,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Zo=class extends Jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ns]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=Cs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},en=class extends Jo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Ns]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;r(this.data(this._current[t].id),o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=Cs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Ra(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&Ls.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Ts=class{constructor(r){this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Ra(this.ts,e,r),Ra(this.actual,t,r),Ra(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Cs(n,r,e){return e instanceof Ut?new Zo(n,r,e):e instanceof Ge?new en(n,r,e):e instanceof Je?new Proxy(new Va(n,r,e),ev):e!==null&&typeof e=="object"?Ss(e)?e:new Proxy(new za(n,r,e),Z0):e}function Fa(n){let r=new Ts(n);return[Cs(r,"",n),r]}function Ua(n,r){let[e,t]=Fa(n);return r(e),t.result()}function ja(n){return n instanceof Zo||n instanceof en?n._current:n!==null&&typeof n=="object"?n[Lp]:n}var Ls;(t=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}t.equal=n;function r(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...i};return Object.keys(a).forEach(c=>{delete l[c]}),l}else return i}t.removeOverridden=r;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof Ut||o instanceof Zo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Ge||o instanceof en)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}t.zoom=e})(Ls||(Ls={}));var Is=class{},qn=class extends Is{constructor(e){super();this.id=e}},$n=class extends Is{constructor(e){super();this.data=e}};var Ha;try{Ha=new TextDecoder}catch{}var te,$r,T=0;var Bp=[],Wa=Bp,qa=0,It={},Te,qr,jt=0,ar=0,Rt,Or,vt=[],Pe,Pp={useRecords:!1,mapsAsObjects:!0},Xn=class{},Xa=new Xn;Xa.name="MessagePack 0xC1";var tn=!1,lr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(te)return Fp(()=>(As(),this?this.unpack(r,e):lr.prototype.unpack.call(Pp,r,e)));$r=e>-1?e:r.length,T=0,qa=0,ar=0,qr=null,Wa=Bp,Rt=null,te=r;try{Pe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw te=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof lr){if(It=this,this.structures)return Te=this.structures,Ps();(!Te||Te.length>0)&&(Te=[])}else It=Pp,(!Te||Te.length>0)&&(Te=[]);return Ps()}unpackMultiple(r,e){let t,o=0;try{tn=!0;let i=r.length,s=this?this.unpack(r,i):_s.unpack(r,i);if(e){for(e(s);T<i;)if(o=T,e(Ps())===!1)return}else{for(t=[s];T<i;)o=T,t.push(Ps());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{tn=!1,As()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Ps(){try{if(!It.trusted&&!tn){let r=Te.sharedLength||0;r<Te.length&&(Te.length=r)}let n=Ve();if(T==$r)Te.restoreStructures&&Ap(),Te=null,te=null,Or&&(Or=null);else if(T>$r){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!tn)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Te.restoreStructures&&Ap(),As(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Ap(){for(let n in Te.restoreStructures)Te[n]=Te.restoreStructures[n];Te.restoreStructures=null}function Ve(){let n=te[T++];if(n<160)if(n<128){if(n<64)return n;{let r=Te[n&63]||It.getStructures&&Gp()[n&63];return r?(r.read||(r.read=Ya(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,It.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[zp()]=Ve();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ve(),Ve());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ve();return r}else if(n<192){let r=n-160;if(ar>=T)return qr.slice(T-jt,(T+=r)-jt);if(ar==0&&$r<140){let e=r<16?Ka(r):Rp(r);if(e!=null)return e}return $a(r)}else{let r;switch(n){case 192:return null;case 193:return Rt?(r=Ve(),r>0?Rt[1].slice(Rt.position1,Rt.position1+=r):Rt[0].slice(Rt.position0,Rt.position0-=r)):Xa;case 194:return!1;case 195:return!0;case 196:return ka(te[T++]);case 197:return r=Pe.getUint16(T),T+=2,ka(r);case 198:return r=Pe.getUint32(T),T+=4,ka(r);case 199:return po(te[T++]);case 200:return r=Pe.getUint16(T),T+=2,po(r);case 201:return r=Pe.getUint32(T),T+=4,po(r);case 202:if(r=Pe.getFloat32(T),It.useFloat32>2){let e=Os[(te[T]&127)<<1|te[T+1]>>7];return T+=4,(e*r+(r>0?.5:-.5)>>0)/e}return T+=4,r;case 203:return r=Pe.getFloat64(T),T+=8,r;case 204:return te[T++];case 205:return r=Pe.getUint16(T),T+=2,r;case 206:return r=Pe.getUint32(T),T+=4,r;case 207:return It.int64AsNumber?(r=Pe.getUint32(T)*4294967296,r+=Pe.getUint32(T+4)):r=Pe.getBigUint64(T),T+=8,r;case 208:return Pe.getInt8(T++);case 209:return r=Pe.getInt16(T),T+=2,r;case 210:return r=Pe.getInt32(T),T+=4,r;case 211:return It.int64AsNumber?(r=Pe.getInt32(T)*4294967296,r+=Pe.getUint32(T+4)):r=Pe.getBigInt64(T),T+=8,r;case 212:if(r=te[T++],r==114)return Ep(te[T++]&63);{let e=vt[r];if(e)return e.read?(T++,e.read(Ve())):e.noBuffer?(T++,e()):e(te.subarray(T,++T));throw new Error("Unknown extension "+r)}case 213:return r=te[T],r==114?(T++,Ep(te[T++]&63,te[T++])):po(2);case 214:return po(4);case 215:return po(8);case 216:return po(16);case 217:return r=te[T++],ar>=T?qr.slice(T-jt,(T+=r)-jt):rv(r);case 218:return r=Pe.getUint16(T),T+=2,ar>=T?qr.slice(T-jt,(T+=r)-jt):ov(r);case 219:return r=Pe.getUint32(T),T+=4,ar>=T?qr.slice(T-jt,(T+=r)-jt):nv(r);case 220:return r=Pe.getUint16(T),T+=2,Op(r);case 221:return r=Pe.getUint32(T),T+=4,Op(r);case 222:return r=Pe.getUint16(T),T+=2,_p(r);case 223:return r=Pe.getUint32(T),T+=4,_p(r);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var tv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Ya(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>tv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ve);return n.highByte===0&&(n.read=Mp(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ve()}return t}return e.count=0,n.highByte===0?Mp(r,e):e}var Mp=(n,r)=>function(){let e=te[T++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Te[t]||Gp()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Ya(o,n)),o.read()};function Gp(){let n=Fp(()=>(te=null,It.getStructures()));return Te=It._mergeStructures(n,Te)}var $a=Ms,rv=Ms,ov=Ms,nv=Ms;function Ms(n){let r;if(n<16&&(r=Ka(n)))return r;if(n>64&&Ha)return Ha.decode(te.subarray(T,T+=n));let e=T+n,t=[];for(r="";T<e;){let o=te[T++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=te[T++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=te[T++]&63,s=te[T++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[T++]&63,s=te[T++]&63,a=te[T++]&63,l=(o&7)<<18|i<<12|s<<6|a;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=it.apply(String,t),t.length=0)}return t.length>0&&(r+=it.apply(String,t)),r}function Op(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ve();return r}function _p(n){if(It.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[zp()]=Ve();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ve(),Ve());return r}}var it=String.fromCharCode;function Rp(n){let r=T,e=new Array(n);for(let t=0;t<n;t++){let o=te[T++];if((o&128)>0){T=r;return}e[t]=o}return it.apply(String,e)}function Ka(n){if(n<4)if(n<2){if(n===0)return"";{let r=te[T++];if((r&128)>1){T-=1;return}return it(r)}}else{let r=te[T++],e=te[T++];if((r&128)>0||(e&128)>0){T-=2;return}if(n<3)return it(r,e);let t=te[T++];if((t&128)>0){T-=3;return}return it(r,e,t)}else{let r=te[T++],e=te[T++],t=te[T++],o=te[T++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){T-=4;return}if(n<6){if(n===4)return it(r,e,t,o);{let i=te[T++];if((i&128)>0){T-=5;return}return it(r,e,t,o,i)}}else if(n<8){let i=te[T++],s=te[T++];if((i&128)>0||(s&128)>0){T-=6;return}if(n<7)return it(r,e,t,o,i,s);let a=te[T++];if((a&128)>0){T-=7;return}return it(r,e,t,o,i,s,a)}else{let i=te[T++],s=te[T++],a=te[T++],l=te[T++];if((i&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){T-=8;return}if(n<10){if(n===8)return it(r,e,t,o,i,s,a,l);{let c=te[T++];if((c&128)>0){T-=9;return}return it(r,e,t,o,i,s,a,l,c)}}else if(n<12){let c=te[T++],u=te[T++];if((c&128)>0||(u&128)>0){T-=10;return}if(n<11)return it(r,e,t,o,i,s,a,l,c,u);let m=te[T++];if((m&128)>0){T-=11;return}return it(r,e,t,o,i,s,a,l,c,u,m)}else{let c=te[T++],u=te[T++],m=te[T++],p=te[T++];if((c&128)>0||(u&128)>0||(m&128)>0||(p&128)>0){T-=12;return}if(n<14){if(n===12)return it(r,e,t,o,i,s,a,l,c,u,m,p);{let d=te[T++];if((d&128)>0){T-=13;return}return it(r,e,t,o,i,s,a,l,c,u,m,p,d)}}else{let d=te[T++],f=te[T++];if((d&128)>0||(f&128)>0){T-=14;return}if(n<15)return it(r,e,t,o,i,s,a,l,c,u,m,p,d,f);let g=te[T++];if((g&128)>0){T-=15;return}return it(r,e,t,o,i,s,a,l,c,u,m,p,d,f,g)}}}}}function ka(n){return It.copyBuffers?Uint8Array.prototype.slice.call(te,T,T+=n):te.subarray(T,T+=n)}function po(n){let r=te[T++];if(vt[r])return vt[r](te.subarray(T,T+=n));throw new Error("Unknown extension type "+r)}var Dp=new Array(4096);function zp(){let n=te[T++];if(n>=160&&n<192){if(n=n-160,ar>=T)return qr.slice(T-jt,(T+=n)-jt);if(!(ar==0&&$r<180))return $a(n)}else return T--,Ve();let r=(n<<5^(n>1?Pe.getUint16(T):n>0?te[T]:0))&4095,e=Dp[r],t=T,o=T+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Pe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=te[t++],i!=e[s++]){t=1879048192;break}if(t===o)return T=t,e.string;o-=3,t=T}for(e=[],Dp[r]=e,e.bytes=n;t<o;)i=Pe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=te[t++],e.push(i);let a=n<16?Ka(n):Rp(n);return a!=null?e.string=a:e.string=$a(n)}var Ep=(n,r)=>{var e=Ve();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Te[n];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[n]=o),Te[n]=e,e.read=Ya(e,t),e.read()},Vp=typeof self=="object"?self:global;vt[0]=()=>{};vt[0].noBuffer=!0;vt[101]=()=>{let n=Ve();return(Vp[n[0]]||Error)(n[1])};vt[105]=n=>{let r=Pe.getUint32(T-4);Or||(Or=new Map);let e=te[T],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Or.set(r,o);let i=Ve();return o.used?Object.assign(t,i):(o.target=i,i)};vt[112]=n=>{let r=Pe.getUint32(T-4),e=Or.get(r);return e.used=!0,e.target};vt[115]=()=>new Set(Ve());var Qa=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");vt[116]=n=>{let r=n[0],e=Qa[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Vp[e](Uint8Array.prototype.slice.call(n,1).buffer)};vt[120]=()=>{let n=Ve();return new RegExp(n[0],n[1])};vt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=T;T+=r-4,Rt=[Ve(),Ve()],Rt.position0=0,Rt.position1=0;let t=T;T=e;try{return Ve()}finally{T=t}};vt[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Fp(n){let r=$r,e=T,t=qa,o=jt,i=ar,s=qr,a=Wa,l=Or,c=Rt,u=new Uint8Array(te.slice(0,$r)),m=Te,p=Te.slice(0,Te.length),d=It,f=tn,g=n();return $r=r,T=e,qa=t,jt=o,ar=i,qr=s,Wa=a,Or=l,Rt=c,te=u,tn=f,Te=m,Te.splice(0,Te.length,...p),It=d,Pe=new DataView(te.buffer,te.byteOffset,te.byteLength),g}function As(){te=null,Or=null,Te=null}function Up(n){n.unpack?vt[n.type]=n.unpack:vt[n.type]=n}var Os=new Array(147);for(let n=0;n<256;n++)Os[n]=+("1e"+Math.floor(45.15-n*.30103));var _s=new lr({useRecords:!1}),iv=_s.unpack,sv=_s.unpackMultiple,av=_s.unpack,Ds={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lv=new Float32Array(1),LP=new Uint8Array(lv.buffer,0,4);var Es;try{Es=new TextEncoder}catch{}var Bs,Za,Gs=typeof Buffer<"u",Ja=Gs?Buffer.allocUnsafeSlow:Uint8Array,Wp=Gs?Buffer:Uint8Array,jp=Gs?4294967296:2144337920,R,He,C=0,cr,ur=null,cv=/[\u0080-\uFFFF]/,Yn=Symbol("record-id"),mo=class extends lr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,a,l=0,c=Wp.prototype.utf8Write?function(h,_,N){return R.utf8Write(h,_,N)}:Es&&Es.encodeInto?function(h,_){return Es.encodeInto(h,R.subarray(_)).written}:!1,u=this;r||(r={});let m=r&&r.sequential,p=r.structures||r.saveStructures,d=r.maxSharedStructures;if(d==null&&(d=p?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=p?32:64),m&&!r.saveStructures&&(this.structures=[]);let g=d>32||f+d>64,x=d+64,y=d+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,S=0;this.pack=this.encode=function(h,_){if(R||(R=new Ja(8192),He=new DataView(R.buffer,0,8192),C=0),cr=R.length-10,cr-C<2048?(R=new Ja(R.length),He=new DataView(R.buffer,0,R.length),cr=R.length-10,C=0):C=C+7&2147483640,t=C,a=u.structuredClone?new Map:null,u.bundleStrings?(ur=["",""],R[C++]=214,R[C++]=98,ur.position=C-t,C+=4):ur=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<N;I++){let L=o[I];if(!L)continue;let A,k=o.transitions;for(let q=0,ne=L.length;q<ne;q++){let ue=L[q];A=k[ue],A||(A=k[ue]=Object.create(null)),k=A}k[Yn]=I+64}l=N}m||(o.nextId=N+64)}i&&(i=!1),s=o||[];try{if(b(h),ur){He.setUint32(ur.position+t,C-ur.position-t);let N=ur;ur=null,b(N[0]),b(N[1])}if(u.offset=C,a&&a.idsToInsert){C+=a.idsToInsert.length*6,C>cr&&w(C),u.offset=C;let N=pv(R.subarray(t,C),a.idsToInsert);return a=null,N}return _&$p?(R.start=t,R.end=C,R):R.subarray(t,C)}finally{if(o){if(S<10&&S++,P>1e4)o.transitions=null,S=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!m){for(let N=0,I=v.length;N<I;N++)v[N][Yn]=0;v=[]}if(i&&u.saveStructures){let N=o.sharedLength||d;o.length>N&&(o=o.slice(0,N));let I=R.subarray(t,C);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(h)):(l=N,I)}}_&xv&&(C=t)}};let b=h=>{C>cr&&(R=w(C));var _=typeof h,N;if(_==="string"){let I=h.length;if(ur&&I>=8&&I<4096){let k=cv.test(h);ur[k?0:1]+=h,R[C++]=193,b(k?-I:I);return}let L;I<32?L=1:I<256?L=2:I<65536?L=3:L=5;let A=I*3;if(C+A>cr&&(R=w(C+A)),I<64||!c){let k,q,ne,ue=C+L;for(k=0;k<I;k++)q=h.charCodeAt(k),q<128?R[ue++]=q:q<2048?(R[ue++]=q>>6|192,R[ue++]=q&63|128):(q&64512)===55296&&((ne=h.charCodeAt(k+1))&64512)===56320?(q=65536+((q&1023)<<10)+(ne&1023),k++,R[ue++]=q>>18|240,R[ue++]=q>>12&63|128,R[ue++]=q>>6&63|128,R[ue++]=q&63|128):(R[ue++]=q>>12|224,R[ue++]=q>>6&63|128,R[ue++]=q&63|128);N=ue-C-L}else N=c(h,C+L,A);N<32?R[C++]=160|N:N<256?(L<2&&R.copyWithin(C+2,C+1,C+1+N),R[C++]=217,R[C++]=N):N<65536?(L<3&&R.copyWithin(C+3,C+2,C+2+N),R[C++]=218,R[C++]=N>>8,R[C++]=N&255):(L<5&&R.copyWithin(C+5,C+3,C+3+N),R[C++]=219,He.setUint32(C,N),C+=4),C+=N}else if(_==="number")if(h>>>0===h)h<64?R[C++]=h:h<256?(R[C++]=204,R[C++]=h):h<65536?(R[C++]=205,R[C++]=h>>8,R[C++]=h&255):(R[C++]=206,He.setUint32(C,h),C+=4);else if(h>>0===h)h>=-32?R[C++]=256+h:h>=-128?(R[C++]=208,R[C++]=h+256):h>=-32768?(R[C++]=209,He.setInt16(C,h),C+=2):(R[C++]=210,He.setInt32(C,h),C+=4);else{let I;if((I=this.useFloat32)>0&&h<4294967296&&h>=-2147483648){R[C++]=202,He.setFloat32(C,h);let L;if(I<4||(L=h*Os[(R[C]&127)<<1|R[C+1]>>7])>>0===L){C+=4;return}else C--}R[C++]=203,He.setFloat64(C,h),C+=8}else if(_==="object")if(!h)R[C++]=192;else{if(a){let L=a.get(h);if(L){if(!L.id){let A=a.idsToInsert||(a.idsToInsert=[]);L.id=A.push(L)}R[C++]=214,R[C++]=112,He.setUint32(C,L.id),C+=4;return}else a.set(h,{offset:C-t})}let I=h.constructor;if(I===Object)E(h,!0);else if(I===Array){N=h.length,N<16?R[C++]=144|N:N<65536?(R[C++]=220,R[C++]=N>>8,R[C++]=N&255):(R[C++]=221,He.setUint32(C,N),C+=4);for(let L=0;L<N;L++)b(h[L])}else if(I===Map){N=h.size,N<16?R[C++]=128|N:N<65536?(R[C++]=222,R[C++]=N>>8,R[C++]=N&255):(R[C++]=223,He.setUint32(C,N),C+=4);for(let[L,A]of h)b(L),b(A)}else{for(let L=0,A=Bs.length;L<A;L++){let k=Za[L];if(h instanceof k){let q=Bs[L];if(q.write){q.type&&(R[C++]=212,R[C++]=q.type,R[C++]=0),b(q.write.call(this,h));return}let ne=R,ue=He,se=C;R=null;let K;try{K=q.pack.call(this,h,U=>(R=ne,ne=null,C+=U,C>cr&&w(C),{target:R,targetView:He,position:C-U}),b)}finally{ne&&(R=ne,He=ue,C=se,cr=R.length-10)}K&&(K.length+C>cr&&w(K.length+C),C=uv(K,R,C,q.type));return}}E(h,!h.hasOwnProperty)}}else if(_==="boolean")R[C++]=h?195:194;else if(_==="bigint"){if(h<BigInt(1)<<BigInt(63)&&h>=-(BigInt(1)<<BigInt(63)))R[C++]=211,He.setBigInt64(C,h);else if(h<BigInt(1)<<BigInt(64)&&h>0)R[C++]=207,He.setBigUint64(C,h);else if(this.largeBigIntToFloat)R[C++]=203,He.setFloat64(C,Number(h));else throw new RangeError(h+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");C+=8}else if(_==="undefined")this.encodeUndefinedAsNil?R[C++]=192:(R[C++]=212,R[C++]=0,R[C++]=0);else if(_==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+_)},E=this.useRecords===!1?this.variableMapSize?h=>{let _=Object.keys(h),N=_.length;N<16?R[C++]=128|N:N<65536?(R[C++]=222,R[C++]=N>>8,R[C++]=N&255):(R[C++]=223,He.setUint32(C,N),C+=4);let I;for(let L=0;L<N;L++)b(I=_[L]),b(h[I])}:(h,_)=>{R[C++]=222;let N=C-t;C+=2;let I=0;for(let L in h)(_||h.hasOwnProperty(L))&&(b(L),b(h[L]),I++);R[N+++t]=I>>8,R[N+t]=I&255}:h=>{let _=Object.keys(h),N,I=s.transitions||(s.transitions=Object.create(null)),L=0;for(let k=0,q=_.length;k<q;k++){let ne=_[k];N=I[ne],N||(N=I[ne]=Object.create(null),L++),I=N}let A=I[Yn];if(A)A>=96&&g?(R[C++]=((A-=96)&31)+96,R[C++]=A>>5):R[C++]=A;else{A=s.nextId,A||(A=64),A<x&&this.shouldShareStructure&&!this.shouldShareStructure(_)?(A=s.nextOwnId,A<y||(A=x),s.nextOwnId=A+1):(A>=y&&(A=x),s.nextId=A+1);let k=_.highByte=A>=96&&g?A-96>>5:-1;I[Yn]=A,s[A-64]=_,A<x?(_.isShared=!0,s.sharedLength=A-63,i=!0,k>=0?(R[C++]=(A&31)+96,R[C++]=k):R[C++]=A):(k>=0?(R[C++]=213,R[C++]=114,R[C++]=(A&31)+96,R[C++]=k):(R[C++]=212,R[C++]=114,R[C++]=A),L&&(P+=S*L),v.length>=f&&(v.shift()[Yn]=0),v.push(I),b(_))}for(let k=0,q=_.length;k<q;k++)b(h[_[k]])},w=h=>{let _;if(h>16777216){if(h-t>jp)throw new Error("Packed buffer would be larger than maximum buffer size");_=Math.min(jp,Math.round(Math.max((h-t)*(h>67108864?1.25:2),4194304)/4096)*4096)}else _=(Math.max(h-t<<2,R.length-1)>>12)+1<<12;let N=new Ja(_);return He=new DataView(N.buffer,0,_),R.copy?R.copy(N,0,t,h):N.set(R.slice(t,h)),C-=t,t=0,cr=N.length-10,R=N}}useBuffer(r){R=r,He=new DataView(R.buffer,R.byteOffset,R.byteLength),C=0}};Za=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Xn];Bs=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?kp(n,16,r):Hp(Gs?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Wp&&this.structuredClone?kp(n,Qa.indexOf(e.name),r):Hp(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function kp(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Hp(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function uv(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function pv(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let a=i+t;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function fo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Za.unshift(n.Class),Bs.unshift(n)}Up(n)}var qp=new mo({useRecords:!1}),mv=qp.pack,dv=qp.pack;var{NEVER:fv,ALWAYS:hv,DECIMAL_ROUND:gv,DECIMAL_FIT:yv}=Ds,$p=512,xv=1024;var Xp=new mo({structuredClone:!0});fo({Class:Je.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Je.prototype),n}});fo({Class:Ge.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ge.prototype),n}});fo({Class:Ut.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ut.prototype),n}});fo({Class:qn.prototype.constructor,type:4,write(n){return n.id},read(n){return new qn(n)}});fo({Class:$n.prototype.constructor,type:5,write(n){return n.data},read(n){return new $n(n)}});function vv(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function el(n){if(Ss(n))return n;if(Array.isArray(n))return n.map(el);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=el(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Rs;(t=>{function n(o){return Xp.pack(o)}t.serialize=n;function r(o){return Xp.unpack(o)}t.deserialize=r;function e(o){return vv(n(el(o))).toString()}t.checksum=e})(Rs||(Rs={}));var zs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(zs||(zs={}));var Vs;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(t==="SpotLight")return{type:t,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Gt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Vs||(Vs={}));var tl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(tl||(tl={}));var rl;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(rl||(rl={}));var Fs;(r=>r.defaultData={...rl.defaultData,...tl.defaultData,cloner:null,booleanExclude:null})(Fs||(Fs={}));var ol=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(ol||{}),nl=(t=>(t[t.Top=1]="Top",t[t.Center=2]="Center",t[t.Bottom=3]="Bottom",t))(nl||{}),il=(t=>(t[t.None=1]="None",t[t.Upper=2]="Upper",t[t.Lower=3]="Lower",t))(il||{}),Us;(r=>r.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Gt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Us||(Us={}));var Xr;(t=>{function n(o,i){return o==="light"&&i?r(i):e(o)}t.defaultData=n;function r(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Bt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Bt.fromHex(6710886),a:1},colorB:{...Bt.fromHex(6710886),a:1},colorC:{...Bt.fromHex(16777215),a:1},colorD:{...Bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Gt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Gt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Gt.fromHexAndA(0,1),contourColor:Gt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Xr||(Xr={}));var _r;(a=>{function n(l){return!l.layers.some(u=>{if(u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")return!0})&&!e(l)}a.isMergable=n;function r(l){let c="";return l.layers.forEach(u=>{Object.entries(u.data).forEach(([m,p])=>{c+=`${m}${p}`,Array.isArray(p)?p.forEach(d=>c+=`${d}`):typeof p=="object"?Object.values(p).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${p}`})}),c}a.getHash=r;function e(l){let c=0;for(let u of l.layers)"alpha"in u.data&&u.data.type!=="light"&&u.data.type!=="fresnel"&&(c+=(1-c)*u.data.alpha);return c<1}a.isTransparent=e;function t(){return{layers:new Ge}}a.defaultEmptyData=t;function o(l="layer1",c="layer2"){return i("phong",l,c)}a.defaultData=o;function i(l,c="layer1",u="layer2"){let m=new Ge;return m.push({fi:0,data:Xr.defaultData("light",l),id:c}),m.push({fi:1,data:Xr.defaultData("color"),id:u}),{layers:m}}a.defaultTwoLayerData=i;function s(l,c="basic",u="layer1",m="layer2"){let p=Xr.defaultData("texture");Object.assign(p.texture,{image:l});let d=new Ge;return d.push({fi:0,data:p,id:u}),d.push({fi:1,data:Xr.defaultData("light",c),id:m}),{layers:d}}a.defaultTwoLayerTextureData=s})(_r||(_r={}));var rn;(r=>{function n(){return{points:new Ge,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(rn||(rn={}));var js;(r=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=n})(js||(js={}));var Kn;(r=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:rn.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}r.defaultData=n})(Kn||(Kn={}));var Qn;(o=>{o.identity={...xs.identity,hiddenMatrix:Wr.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,s){return{position:Qo.isEqual(i.position,s.position)?null:s.position,rotation:Qo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Qo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(Qn||(Qn={}));var Dr;(r=>r.defaultData={states:new Ge,events:new Ge,visible:!0,raycastLock:!1,...Qn.identity})(Dr||(Dr={}));var Yp;(r=>r.defaultData={type:"Empty",...Dr.defaultData})(Yp||(Yp={}));var ks;(r=>r.defaultData={type:"Mesh",...Dr.defaultData,...Fs.defaultData})(ks||(ks={}));var Kp;(r=>r.defaultData={type:"TextFrame",...Dr.defaultData,...Us.defaultData})(Kp||(Kp={}));var Hs;(r=>r.defaultData={...Dr.defaultData,...Qn.identity,...uo.defaultData})(Hs||(Hs={}));var Qp;(r=>{function n(e){return{...Dr.defaultData,...Vs.defaultData(e)}}r.defaultData=n})(Qp||(Qp={}));var Jp;(t=>(t.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ge,events:new Ge,...uo.defaultData},t.defaultMeshObject={name:"Rectangle",...Dr.defaultData,...ks.defaultData,geometry:Kn.defaultData("RectangleGeometry"),material:_r.defaultTwoLayerData("basic","layer1","layer2")},t.defaultBooleanObject={name:"Boolean",...Dr.defaultData,...ks.defaultData,geometry:Kn.defaultData("BooleanGeometry"),material:_r.defaultTwoLayerData("phong","layer1","layer2")}))(Jp||(Jp={}));var Zp;(e=>{function n(t,o){if(o===void 0)return t;let i={...t};return"material"in i&&"material"in o&&o.material&&(i.material=Ua(i.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&co(c,l)}}).data),i.materials&&o.materials&&(i.materials=Ua(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,u]of Object.entries(l.layers)){let m=s[a]?.layers?.data(c);m&&co(m,u)}}}).data),i}e.patchMaterialState=n;function r(t,o){if(o===void 0)return t;let i={...t};if(Object.assign(i,Qn.merge(i,o)),Ko.is(t.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(t.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(zs.is(t.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=Bt.clone(s.color))}return i}e.patch=r})(Zp||(Zp={}));var Ws;(s=>{let n=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],r=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let a={},l=0;for(let c of n)a[`image_${l}`]={data:c,name:`Image ${l}`,asset:!1},l++;l=0;for(let c of r)a[`matcap_${l}`]={data:c,name:`Matcap ${l}`,asset:!1},l++;return a}s.defaultImages=e;function t(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},a}s.defaultColors=t;function o(){return{materials:new Je,images:new Je,colors:new Je,penumbraSize:[.5,.5,.5]}}s.emptyData=o;function i(){return{materials:new Je,images:Oa(e(),Je.prototype),colors:Oa(t(),Je.prototype),penumbraSize:new Array(5).fill(.5)}}s.defaultData=i})(Ws||(Ws={}));var qs;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(qs||(qs={}));var em=require("three"),ut=class extends em.Color{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var om=require("three");var De=require("three"),rm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:m,cornerSegments:p,hollow:d}=n.parameters,f;return m||d?f=new Jn(c,u,t,o,i,s,a,l*Math.PI/180,m,m,p,d):f=new De.CylinderBufferGeometry(c,u,t,o,i,s,a,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function Yr(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function tm(n){return new De.Vector2(n.y,-n.x)}var Jn=class extends De.BufferGeometry{constructor(r,e,t,o,i,s,a,l,c,u,m,p,d=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,u=0);let f=[],g=[],x=[],y=[],v=0,P=t/2,S=new De.Vector3,b=new De.Vector3;d&&r==0&&(r=c),d&&e==0&&(e=u);let E=new De.Vector2(r,P),w=new De.Vector2(e,-P),h=null,_=null,N=null,I=null,L=E.clone().sub(w),A=0,k=0,q=0;p>0&&(A=Math.min(r,e)*(1-p),k=r-A,q=e-A);let ne=E.clone();ne.x-=A;let ue=Math.PI-L.angle(),se=L.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),z=K+U,B=p?z:U,D=p?z:K;if(c=Math.min(c,(r-k)/B,L.length()/z),u=Math.min(u,(e-q)/D,L.length()/z),c>0){let F=c/K;h=E.clone().sub(new De.Vector2(F,c)),p&&(N=h.clone(),N.x-=A-z*c),E.sub(L.clone().setLength(F))}if(u>0){let F=u/U;_=w.clone().sub(new De.Vector2(F,-u)),w.add(L.clone().setLength(F)),p&&(I=_.clone(),I.x-=A-z*u,ne.sub(L.clone().setLength(F)))}L=E.clone().sub(w);let M=L.length()<.5,G=[];for(let F=0;F<=o;F++){let O=[],$=F/o,Z=$*l+a,ee=new De.Vector2(Math.sin(Z),Math.cos(Z));I&&_?(Q(O,$,ee,ue,u,I,-1,!0),Q(O,$,ee,se,u,_,-1,!1)):_?(j(O,ee,_.x,0,-1),Q(O,$,ee,se,u,_,-1,!1)):s||j(O,ee,e,q,-1);let H=tm(L).normalize();if(Yr(H,ee,S),!M)for(let J=0;J<=i;J++){let X=J/i,re=L.clone().multiplyScalar(X).add(w);Yr(re,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push($,.5+b.y/t),O.push(v++)}if(N&&h?(Q(O,$,ee,ue,c,h,1,!1),Q(O,$,ee,se,c,N,1,!0)):h?(Q(O,$,ee,ue,c,h,1,!1),j(O,ee,h.x,0,1)):s||j(O,ee,r,k,1),p&&!M){let J=tm(L).multiplyScalar(-1).normalize();Yr(J,ee,S);for(let X=0;X<=i;X++){let re=X/i,ce=L.clone().multiplyScalar(-re).add(ne);Yr(ce,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push($,.5+b.y/t),O.push(v++)}}p&&!s&&O.push(O[0]),G.push(O)}for(let F=0;F<G.length-1;F++)for(let O=0;O<G[0].length-1;O++){if(s&&p&&O==i)continue;let $=G[F][O],Z=G[F+1][O],ee=G[F+1][O+1],H=G[F][O+1],J=g[ee*3+0],X=g[ee*3+2];f.push($,Z,H),(J!=0||X!=0)&&f.push(Z,ee,H)}l<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new De.Float32BufferAttribute(g,3)),this.setAttribute("normal",new De.Float32BufferAttribute(x,3)),this.setAttribute("uv",new De.Float32BufferAttribute(y,2));function Q(F,O,$,Z,ee,H,J,X){for(let re=0;re<m+1;re++){let ce=re/m,ie=J<0?ce:1-ce;X&&(ie-=1),ie*=Z;let fe=new De.Vector2(Math.sin(ie),Math.cos(ie)*J),ze=fe.clone().multiplyScalar(ee).add(H);Yr(ze,$,b),g.push(b.x,b.y,b.z),Yr(fe,$,S),x.push(S.x,S.y,S.z),y.push(O,.5+b.y/t),F.push(v++)}}function j(F,O,$,Z,ee){let H=new De.Vector3,J=new De.Vector2,X=[$,Z];ee<0&&X.reverse();for(let re of X)J.set(re,P*ee),Yr(J,O,H),g.push(H.x,H.y,H.z),x.push(0,ee,0),y.push(.5,.5),F.push(v++)}function V(F,O,$){let Z=new De.Vector2(Math.sin($),Math.cos($)),ee=new De.Vector2(-Math.cos($),Math.sin($)),H=new De.Vector3,J=F<0?(ce,ie,fe)=>f.push(ce,ie,fe):(ce,ie,fe)=>f.push(ce,fe,ie),X=new De.Vector2((r+e+k+q)/4,0);Yr(X,Z,H),g.push(H.x,H.y,H.z),x.push(ee.x,0,ee.y),y.push(.5,.5);let re=v++;for(let ce of O){let ie=g.slice(ce*3,ce*3+3);g.push(...ie),x.push(ee.x,0,ee.y);let fe=y.slice(ce*2,ce*2+2);y.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)J(re,ce,ce+1);J(re,v-1,re+1)}}};var nm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:m}=n.parameters,p;return c>0||u>0||l<360?p=new Jn(0,r/2,t,o,i,s,a,l*Math.PI/180,c,u,m,0,!0):p=new om.ConeBufferGeometry(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Pt=require("three"),im=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:l}=n.parameters,c;return a==0?c=new Pt.BoxBufferGeometry(r,e,t,o,i,s):c=new al(r,e,t,o,i,s,a,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},sl=Math.PI/2,al=class extends Pt.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,r/2,e/2,t/2);let u=[],m=[],p=[],d=[],f=0,g=0;x("z","y","x",-1,-1,t,e,r,s,i,0),x("z","y","x",1,-1,t,e,-r,s,i,1),x("x","z","y",1,1,r,t,e,o,s,2),x("x","z","y",1,-1,r,t,-e,o,s,3),x("x","y","z",1,-1,r,e,t,o,i,4),x("x","y","z",-1,-1,r,e,-t,o,i,5),a>0&&(y("z","y","x",-1,-1,1,t,e,r,s,0),y("z","y","x",1,-1,-1,t,e,r,s,1),y("z","y","x",-1,1,-1,t,e,r,s,1),y("z","y","x",1,1,1,t,e,r,s,0),y("x","y","z",-1,-1,-1,r,e,t,o,0),y("x","y","z",1,-1,1,r,e,t,o,1),y("x","y","z",-1,1,1,r,e,t,o,0),y("x","y","z",1,1,-1,r,e,t,o,1),y("y","x","z",-1,-1,1,e,r,t,i,0),y("y","x","z",1,-1,-1,e,r,t,i,1),y("y","x","z",1,1,1,e,r,t,i,1),y("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new Pt.Float32BufferAttribute(m,3)),this.setAttribute("normal",new Pt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Pt.Float32BufferAttribute(d,2));function x(P,S,b,E,w,h,_,N,I,L,A){let k=(h-2*a)/I,q=(_-2*a)/L,ne=h/2-a,ue=_/2-a,se=N/2,K=I+1,U=L+1,z=0,B=0,D=new Pt.Vector3;for(let M=0;M<U;M++){let G=M*q-ue;for(let Q=0;Q<K;Q++){let j=Q*k-ne;D[P]=j*E,D[S]=G*w,D[b]=se,m.push(D.x,D.y,D.z),D[P]=0,D[S]=0,D[b]=N>0?1:-1,p.push(D.x,D.y,D.z),d.push(Q/I),d.push(1-M/L),z+=1}}for(let M=0;M<L;M++)for(let G=0;G<I;G++){let Q=f+G+K*M,j=f+G+K*(M+1),V=f+(G+1)+K*(M+1),F=f+(G+1)+K*M;u.push(Q,j,F),u.push(j,V,F),B+=6}c.addGroup(g,B,A),g+=B,f+=z}function y(P,S,b,E,w,h,_,N,I,L,A){let k=(_-2*a)/L,q=_/2-a,ne=N/2-a,ue=I/2,se=L+1,K=0,U=0,z=new Pt.Vector3,B=new Pt.Vector3;for(let D=0;D<l+1;D++){let M=D/l*sl,G=Math.sin(M)*a,Q=(1-Math.cos(M))*a,j=Math.sin(M),V=Math.cos(M);z[S]=(ne+G)*w,z[b]=(ue-Q)*h,B[P]=0,B[S]=j*Math.sign(z[S]),B[b]=V*Math.sign(z[b]);for(let F=0;F<se;F++){let O=F*k-q;z[P]=O*E,m.push(z.x,z.y,z.z),p.push(B.x,B.y,B.z),d.push(F/L),d.push(0),K+=1}}for(let D=0;D<l;D++)for(let M=0;M<L;M++){let G=f+M+se*D,Q=f+M+se*(D+1),j=f+(M+1)+se*(D+1),V=f+(M+1)+se*D;u.push(G,Q,V),u.push(Q,j,V),U+=6}c.addGroup(g,U,A),g+=U,f+=K}function v(P,S,b){let E=new Pt.Vector3,w=new Pt.Vector3(r/2,e/2,t/2);w.subScalar(a);let h=[],_=P*S*b>0?(I,L,A)=>u.push(I,L,A):(I,L,A)=>u.push(I,A,L);for(let I=0;I<=l;I++){let L=[],A=sl*(1-I/l),k=Math.cos(A),q=Math.sin(A),ne=0;for(let ue=0;ue<=I;ue++){let se=Math.cos(ne),K=Math.sin(ne);E.x=k*se,E.y=q,E.z=k*K;let U=w.clone().addScaledVector(E,a);m.push(P*U.x,S*U.y,b*U.z),p.push(P*E.x,S*E.y,b*E.z),d.push(0,0),L.push(f++),ne+=sl/I}h.push(L)}let N=h.length-1;for(let I=0;I<N;I++){let L=h[I],A=h[I+1],k=L.length-1;_(L[0],A[1],A[0]);for(let q=1;q<=k;q++)_(L[q-1],L[q],A[q]),_(L[q],A[q+1],A[q])}}}};var Fe=require("three"),Kr=class extends Fe.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];u(),m(),this.setAttribute("position",new Fe.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Fe.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Fe.Float32BufferAttribute(l,2));return;function u(){i=Math.min(1-1e-5,i),i==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new Fe.Vector3,g=f.clone(),x=new Fe.Triangle,y=i*o,v=o-y,P=s+1,S=new Fe.Vector3,b=(K,U)=>S.subVectors(K,U).normalize(),E=(K,U)=>Array(K).fill(void 0).map(U),w=E(r.length/3,(K,U)=>new Fe.Vector3().fromArray(r,U*3).setLength(o)),h=[],_=1e6;for(let K=0;K<w.length;K++){let U=w[K],z=[],B,D,M,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let O=Q-Q%3;B=e[O+(Q+1)%3],D=e[O+(Q+2)%3],M=U.distanceToSquared(w[B]),G=Math.min(G,M),z.push([B,D,M])}G+=1e-6;let j=[],V=0,F=z.length;for(let O=0;O<F;O++){[B,D,M]=z[V];let $=h[B]?.includes(K)==!0;M<=G&&j.push(B+ +$*_),V=z.findIndex(Z=>Z[0]==D)}h.push(j)}let N=[];{let K=0,U=0,z,B,D=d==3;for(let M=0;M<=s;M++){z=M*(M+1)/2,B=(M+1)*(M+2)/2;for(let G=0;G<s-M;G++)[K,U]=[z+G+M+2,B+G+M+3],N.push(z,B,...D?[U,z]:[K,B],U,K),[z,B]=[K,U];N.push(z,B,z+s+2)}}let I=f.clone(),L=f.clone(),A=f.clone(),k=f.clone(),q=f.clone(),ne=[],ue=E(w.length,()=>E(d,()=>f.clone()));for(let K=0;K<w.length;K++){f.copy(w[K]).normalize(),I.copy(f).multiplyScalar(v);let U=h[K];for(let j=0;j<U.length;j++){let V=U[j],F=U[(j+1)%d];x.setFromPointsAndIndices(w,K,V%_,F%_),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(I,ue[K][j])}let z=[],B=[],D=[],M=new Fe.Vector3;s==0&&[...ue[K]].reduce((j,V)=>j.add(V),M).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],F=(j-1+d)%d,O=ue[K][F],$=ue[K][j];f.copy(O).sub(I),g.copy($).sub(I);let Z=I.angleTo(f),ee=f.angleTo(g),H=Math.cos(Z)*y;s==0?L.copy(M):L.copy(I).setLength(v+H),B.push(H);let J=[L,O,$];for(let X=0;X<2;X++){let re=J[X],ce=J[X+1];k.subVectors(re,I),q.subVectors(ce,I),A.crossVectors(k,q).normalize();for(let ie=0;ie<P;ie++){let fe=[Z,ee][X]*ie/P;f.copy(k).applyAxisAngle(A,fe).add(I),z.push(f.clone()),X&&(b(f,I),V.push([ie==0?re:f.clone(),S.clone()]))}X&&(b(ce,I),V.push([ce,S.clone()]))}D.push(V)}ne.push(D);let G=2*P,Q=2;for(let j=0;j<d;j++){let V=G*j,F=G*((j+1)%d),O=[z[V]];for(let Z=1;Z<P;Z++){k=z[V+Z],q=z[F+Z],O.push(k);for(let ee=1,H=Z-Q+1;ee<=H;ee++)f.lerpVectors(k,q,ee/(H+1)),f.sub(I).setLength(B[j]).add(I),O.push(f.clone());O.push(q)}for(let Z=0;Z<P;Z++)O.push(z[Z+P+V]);O.push(z[F+P]);let $=N.map(Z=>O[Z]);a.push(...$.map(Z=>[Z.x,Z.y,Z.z]).flat()),c.push(...$.map(Z=>(b(Z,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let K=0;K<h.length;K++)for(let U=0;U<d;U++){let z=h[K][U];if(z<_){let B=h[z].findIndex(G=>G%_==K),D=ne[K][U],M=ne[z][B];for(let G=0;G<P;G++){let Q=D[G],j=M[P-G],V=D[G+1],F=M[P-(G+1)];[Q,j,V,V,j,F].forEach(O=>{a.push(O[0].x,O[0].y,O[0].z),c.push(O[1].x,O[1].y,O[1].z)})}se.push(D[0][0],M[P][0],D[P][0],M[0][0])}}for(;se.length;){let K,U,z,B;[K,U]=se.splice(0,2);let D=[K];for(;K!=U;)D.push(U),z=se.indexOf(U),B=z%2,U=se.splice(z-B,2)[1-B];S.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let M=S.dot(D[0])<0;M&&S.negate();for(let G=1;G<=D.length-2;G++)[D[G+ +M],D[G+1-+M],D[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),c.push(S.x,S.y,S.z)})}}function m(){let p=new Fe.Vector3;for(let w=0;w<a.length;w+=3){p.x=a[w+0],p.y=a[w+1],p.z=a[w+2];let h=b(p)/2/Math.PI+.5,_=E(p)/Math.PI+.5;l.push(h,1-_)}let d=new Fe.Vector3,f=new Fe.Vector3,g=new Fe.Vector3,x=new Fe.Vector3,y=new Fe.Vector2,v=new Fe.Vector2,P=new Fe.Vector2,S=(w,h,_,N)=>{N<0&&w.x===1&&(l[h]=w.x-1),_.x===0&&_.z===0&&(l[h]=N/2/Math.PI+.5)};for(let w=0,h=0;w<a.length;w+=9,h+=6){d.set(a[w+0],a[w+1],a[w+2]),f.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[h+0],l[h+1]),v.set(l[h+2],l[h+3]),P.set(l[h+4],l[h+5]),x.copy(d).add(f).add(g).divideScalar(3);let _=b(x);S(y,h+0,d,_),S(v,h+2,f,_),S(P,h+4,g,_)}for(let w=0;w<l.length;w+=6){let h=l[w+0],_=l[w+2],N=l[w+4],I=Math.max(h,_,N),L=Math.min(h,_,N);I>.9&&L<.1&&(h<.2&&(l[w+0]+=1),_<.2&&(l[w+2]+=1),N<.2&&(l[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function E(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(r){return new Kr(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var sm=require("three"),am=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Zn(r*.5,i,s):new sm.DodecahedronBufferGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},Zn=class extends Kr{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,r,e,t),this.type=l}static fromJSON(r){return new Zn(r.radius,r.corner,r.cornerSides)}};var Se=require("three");var he=require("three"),ei=1e-12,on=class{constructor(r){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new on(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},nn=class extends on{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new nn(this.parent).copy(this)}},Xt=class extends on{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new nn(this),new nn(this))}static create(e,t){let o=new Xt(e,new he.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Xt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new he.Vector2,t=new he.Vector2){let[o,i]=this.computeTangents();return o&&i&&(lm(o,e),lm(i,t)),[e,t]}computeTangent(e=new he.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function lm(n,r=new he.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var cl=n=>n,sn=new he.Vector2,$s=new he.Vector2,bv=new he.Vector2,Sv=new he.Vector2,wv=new he.Vector2,Tv=new he.Vector2,um=new he.Vector3,pm=new he.Vector3;function mm(n){let r=new he.Vector2;r.addVectors(n.v0,sn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(n.v2,$s.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(n.v0,r,e,n.v2)}function ti(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function Nv(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Cv(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function ul(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+t*t-i*i)/(2*o*t))}function dm(n,r,e){return cm(n,r)&&cm(r,e)&&ll(n.position,r.position,e.position)}function ll(n,r,e){return sn.copy(r).sub(n).cross($s.copy(e).sub(n))===0}function fm(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,a=(n.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(a+l,s+c),o.set(a-l,s-c),[t,o]}function hm(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function gm(n,r,e,t,o,i){let s=r.x-n.x,a=r.y-n.y,l=e.x-n.x,c=e.y-n.y,u=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),m;return ul(r,n,e)>Math.PI&&(u*=-1),ti(c,a)?m=(a+c)*(t/u-.5)*8/3/(s-l):m=(s+l)*(t/u-.5)*8/3/(c-a),o.set(r.x-m*a,r.y+m*s),i.set(e.x+m*c,e.y-m*l),[o,i]}function pl(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function cm(n,r){return ll(n.position,n.controls[1].position,r.position)&&ll(n.position,r.controls[0].position,r.position)}function ym(n,r,e,t,o=.5){let i=sn.subVectors(r,n).multiplyScalar(o).add(n),s=$s.subVectors(e,r).multiplyScalar(o).add(r),a=bv.subVectors(t,e).multiplyScalar(o).add(e),l=i,c=Sv.subVectors(s,i).multiplyScalar(o).add(i),u=wv.subVectors(a,s).multiplyScalar(o).add(s),m=a,p=Tv.subVectors(u,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,p.x,p.y,u.x,u.y,m.x,m.y,t.x,t.y]}function xm(n,r,e=12,t=!0){let o=pm.set(0,0,0),i,s=0,a=[];for(let l=0;l<r.length;l++){let c=cl(r[l]),u=sn,m=Qr(c,e);a.push(m);for(let p=0;p<=m;p++)if(c instanceof he.CubicBezierCurve||c instanceof he.QuadraticBezierCurve||c instanceof he.LineCurve){if(c.getPoint(p/m,u),o.set(u.x,u.y,0),i!==void 0&&Cv(i,o))continue;i===void 0&&(i=um),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function vm(n,r,e,t=12,o=!0){let i=pm.set(0,0,0),s=0,a=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=cl(r[l]),m=sn,p=Qr(u,t);a.push(p);for(let d=0;d<=p;d++)if(u instanceof he.CubicBezierCurve||u instanceof he.QuadraticBezierCurve||u instanceof he.LineCurve){if(u.getPoint(d/p,m),i.set(m.x,m.y,0),c?.equals(i))continue;c===void 0?c=um:(n.setXYZ(s,c.x,c.y,c.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),c.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function ml(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Qr(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Qr(s.curveAfter,r)),t.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Qr(n[0].roundedCurveCorner,r)*.5),t}function Qr(n,r=12){return n&&n instanceof he.EllipseCurve?r*2:n&&(n instanceof he.LineCurve||n instanceof he.LineCurve3)?1:n&&n instanceof he.SplineCurve?r*n.points.length:r}function bm(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let a=cl(r[s]),l=Qr(a,e),c=sn;for(let u=0;u<=l;u++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(u/l,c),o!==void 0&&Nv(o,c,ei))continue;o===void 0&&(o=$s),o.copy(c),n.push(c.x,c.y),i++}}return ti(n[0],n[n.length-2],ei)&&ti(n[1],n[n.length-1],ei)&&(n.pop(),n.pop()),t&&i>1&&!(ti(n[i-1],n[1],ei)&&ti(n[i-2],n[0],ei))&&(n.push(n[0],n[1]),i++),n}var dl=new Se.Vector2,Lv=new Se.Vector2,Iv=new Se.Vector2,Pv=new Se.Vector2,Av=new Se.Vector2,Mv=new Se.Vector2,Le=class extends Se.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Se.EventDispatcher;this.plane=new Se.Plane(new Se.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Se.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Le;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Xt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Le.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,u=l.getPointIndexById(e);if(u<0)i+=c;else return u+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let t=0,o=this.shapeHoles.length;t<o;t++){let i=this.shapeHoles[t],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return t+a;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=dl.set(e,t);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,t);this._update(!1)}createPoint(e,t=0,o=Se.MathUtils.generateUUID()){let i;e instanceof Se.Vector2?i=e:i=new Se.Vector2(e,t);let s=new Xt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(e=!0){for(let t=0,o=this.shapeHoles.length;t<o;t++)this.shapeHoles[t].update(!1);this._update(e)}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return xm(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ml(this.points,e,!1),this.roundedCurveDivisions=ml(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return vm(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),bm(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=Qr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let u=i[l];if(a<o+u)return[l,(a-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(pl(i,s)){let m=i.position.distanceTo(s.position);return i.position.distanceTo(dl.set(o.x,o.y))/m}let c=0;for(let m=0;m<e;m++)c+=a[m];return(t-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,t){pl(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let t=this.getLastPoint();if(t?.curveAfter&&(t.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],l=this.points[i-1]??this.points[this.points.length-1],c=this.points[i+1]??this.points[0],u=a.roundness,m=l&&c&&dm(l,a,c);if(!a.controlsMoved()&&u>0&&!m){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,g=a.roundedCurveAfter,x=p.getLength(),y=d.getLength(),v=Math.min(u,x*.499),P=Math.min(u,y*.499),S=Math.min(v,P),b=1-S/x,E=S/y,w=p.getPointAt(b,dl),h=d.getPointAt(E,Lv);this._subSplitCurve(p,f,b,w,void 0),this._subSplitCurve(d,g,E,void 0,h);let _;if(this.useCubicForRoundedCorners){let N=ul(w,a.position,h)/2,I=Math.tan(N)*w.distanceTo(a.position),[L,A]=fm(w,h,I,Iv,Pv),k=hm(L,A,a.position),[q,ne]=gm(k,w,h,I,Av,Mv);_=new Se.CubicBezierCurve(w.clone(),q.clone(),ne.clone(),h.clone())}else _=new Se.QuadraticBezierCurve(w.clone(),a.position.clone(),h.clone());a.roundedCurveCorner=_,this.roundedCurves.splice(i+o,0,_),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,t,o,i,s){if(e instanceof Se.LineCurve)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let a=e,l=t,c=a.getUtoTmapping(o,0),u=ym(a.v0,a.v1,a.v2,a.v3,c);return i!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),s!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return t}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,s=e.points[i+0],a=e.points[i+1],l=e.points[i+2],c=e.points[i+3],u=e.points[i+4],m=e.points[i+5],p=e.points[i+6],d=new Xt(Se.MathUtils.generateUUID(),new Se.Vector2(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(u,m),d.roundness=p,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Le;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof Se.CubicBezierCurve&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,l;for(a=0,l=i.length;a<l;a++)i[a]instanceof Se.QuadraticBezierCurve&&(i[a]=mm(i[a]));for(a=0,l=i.length;a<l;a++){let m=i[a],p=a>0?i[a-1]:null,d;m instanceof Se.CubicBezierCurve?(d=this.createPoint(m.v0),d.controls[1].position.copy(m.v1)):m instanceof Se.LineCurve&&(d=this.createPoint(m.v1)),d!==void 0&&(p!==null&&t(d,p),s.push(d))}let c=i[i.length-1],u=!1;return c instanceof Se.CubicBezierCurve?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof Se.LineCurve&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=o(e.curves),e instanceof Se.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Le;return s.fromShape(i),s})),this.update(),this}};var hl=Math.PI*2;function fl({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function Ov(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Sm(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function _v(n,r,e,t,o,i,s,a,l,c){let u=Math.pow(o,2),m=Math.pow(i,2),p=Math.pow(s,2),d=Math.pow(a,2),f=u*m-u*d-m*p;f<0&&(f=0),f/=u*d+m*p,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/i*a,x=f*-i/o*s,y=g+(n+e)/2,v=x+(r+t)/2,P=(s-g)/o,S=(a-x)/i,b=(-s-g)/o,E=(-a-x)/i,w=Sm(1,0,P,S),h=Sm(P,S,b,E);return!c&&h>0&&(h-=hl),c&&h<0&&(h+=hl),{centerx:y,centery:v,ang1:w,ang2:h}}function wm({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),i=Math.abs(i);let m=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(i,2);m>1&&(o*=Math.sqrt(m),i*=Math.sqrt(m));let p=_v(n,r,e,t,o,i,c,u,s,a),{ang1:d,ang2:f}=p,{centerx:g,centery:x}=p,y=Math.abs(f)/(hl/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);f/=v;for(let P=0;P<v;P++)l.push(Ov(d,f)),d+=f;return l.map(P=>{let{x:S,y:b}=fl(P[0],o,i,g,x),{x:E,y:w}=fl(P[1],o,i,g,x),{x:h,y:_}=fl(P[2],o,i,g,x);return{x1:S,y1:b,x2:E,y2:w,x:h,y:_}})}var go=require("three");var Be;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Be||(Be={}));var Ze;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function pe(n,r){if(!n)throw r||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){pe(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){pe(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,a,l;n.vertLeq(r,e)||(l=r,r=e,e=l),n.vertLeq(t,o)||(l=t,t=o,o=l),n.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),a=n.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,e.s)):(s=n.edgeSign(r,t,e),a=-n.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,t.s,a,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(l=r,r=e,e=l),n.transLeq(t,o)||(l=t,t=o,o=l),n.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),a=n.transEval(t,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,e.t)):(s=n.transSign(r,t,e),a=-n.transSign(r,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,t.t,a,o.t)):i.t=(t.t+e.t)/2},n}(),ri=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Xs=function(){function n(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),an=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),Tm=function(){function n(){var r=new an,e=new ri,t=new Xs(0),o=new Xs(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new Xs(0),t=new Xs(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;pe(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;pe(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new an,e=new an,t=new ri,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new an;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ri;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ri;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new an;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new ri;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,a;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,a=r.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),a+l-2<=r&&ae.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,a,l,c;for(i=r,i=r;(o=i.next)!==r;i=o){pe(o.prev===i),l=o.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(pe(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),l=s.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)pe(l.Sym.next===c.Sym),pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Org!==null),pe(l.Dst!==null),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l);pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Nm=function(){function n(){this.handle=null}return n}(),Cm=function(){function n(){this.key=null,this.node=0}return n}(),Dv=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Nm,this.handles[t]=new Cm;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,pe(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Nm;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Cm}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),gl=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Lm=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),Ev=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Lm,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Lm;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),Bv=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var a=ae.edgeEval(i.Dst,o,i.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},n.deleteRegion=function(r,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new gl;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case Be.ODD:return(e&1)!==0;case Be.NONZERO:return e!==0;case Be.POSITIVE:return e>0;case Be.NEGATIVE:return e<0;case Be.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),n.finishRegion(r,s),a=i.eUp,s=i}return a},n.addRightEdges=function(r,e,t,o,i,s){var a,l,c,u,m=!0;c=t;do pe(ae.vertLeq(c.Org,c.Dst)),n.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,u=i;a=n.regionBelow(l),c=a.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=n.isWindingInside(r,a.windingNumber),l.dirty=!0,!m&&n.checkForRightSplice(r,l)&&(n.addWinding(c,u),n.deleteRegion(r,l),r.mesh.delete(u)),m=!1,l=a,u=c;l.dirty=!0,pe(l.windingNumber-c.winding===a.windingNumber),s&&n.walkDirtyRegions(r,l)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),i=ae.vertL1dist(t,r),s=.5*i/(o+i),a=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(pe(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,a=i.Org,l=o.Dst,c=i.Dst,u,m,p=new an,d,f;if(pe(!ae.vertEq(c,l)),pe(ae.edgeSign(l,r.event,s)<=0),pe(ae.edgeSign(c,r.event,a)>=0),pe(s!==r.event&&a!==r.event),pe(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(u=Math.min(s.t,l.t),m=Math.max(a.t,c.t),u>m))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return n.debugEvent(r),ae.intersect(l,s,c,a,p),pe(Math.min(s.t,l.t)<=p.t),pe(p.t<=Math.max(a.t,c.t)),pe(Math.min(c.s,l.s)<=p.s),pe(p.s<=Math.max(a.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),d=ae.vertLeq(s,a)?s:a,ae.vertLeq(d,p)&&(p.s=d.s,p.t=d.t),ae.vertEq(p,s)||ae.vertEq(p,a)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(l,r.event)&&ae.edgeSign(l,r.event,p)>=0||!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),f=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,f,!0),!0):(ae.edgeSign(l,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ae.edgeSign(c,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,l,a,c),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&n.checkForIntersect(r,e),ae.vertEq(a.Org,r.event)&&(r.mesh.splice(i.Oprev,a),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),c=!0),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=n.finishLeftRegions(r,s,null),c=!0),c){n.addRightEdges(r,e,t.Onext,i,i,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,t)){pe(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}pe(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,i=a=s.Onext,l.fixUpperEdge&&(pe(i!==s),n.deleteRegion(r,l),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,a,l,c=new gl;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=n.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ae.vertLeq(a.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)l=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var u=r.mesh.connect(a.Dnext,e.anEdge);l=u.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,l):n.computeWinding(r,n.addRegionBelow(r,t,l)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);pe(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(r,i,null);a.Onext===s?n.connectRightVertex(r,o,a):n.addRightEdges(r,o,a.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new gl,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new Ev(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,a=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,a)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++t===1)),pe(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new Dv(i,ae.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,pe(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ae.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),Gv=function(){function n(){this.mesh=new Tm,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Be.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,a,l=[0,0,0],c=[0,0,0],u=[0,0,0],m=[0,0,0],p=[0,0,0],d=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)i=e.coords[x],c[x]=i,f[x]=e,l[x]=i,d[x]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)i=e.coords[y],i<c[y]&&(c[y]=i,f[y]=e),i>l[y]&&(l[y]=i,d[y]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=f[v],o=d[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)m[0]=e.coords[0]-o.coords[0],m[1]=e.coords[1]-o.coords[1],m[2]=e.coords[2]-o.coords[2],p[0]=u[1]*m[2]-u[2]*m[1],p[1]=u[2]*m[0]-u[0]*m[2],p[2]=u[0]*m[1]-u[1]*m[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ae.edgeGoesRight(t.Lprev)||ae.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,a=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=a,a++),l++,i=i.Lnext}while(i!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=s,++s}this.elementCount=s,e===Ze.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=r.vHead.next;c!==r.vHead;c=c.next)if(c.n!==-1){var m=c.n*o;this.vertices[m+0]=c.coords[0],this.vertices[m+1]=c.coords[1],o>2&&(this.vertices[m+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var p=0,u=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){i=u.anEdge,l=0;do{var c=i.Org;this.elements[p++]=c.n,l++,i=i.Lnext}while(i!==u.anEdge);for(var d=l;d<t;++d)this.elements[p++]=-1;if(e===Ze.CONNECTED_POLYGONS){i=u.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==u.anEdge);for(var f=l;f<t;++f)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;i=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[u++]=i,this.elements[u++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Tm),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=Be.ODD),e===void 0&&(e=Ze.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Bv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},n}();function ho(n){var r=n.windingRule,e=r===void 0?Be.ODD:r,t=n.elementType,o=t===void 0?Ze.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,l=a===void 0?2:a,c=n.normal,u=c===void 0?[0,0,1]:c,m=n.contours,p=m===void 0?[]:m,d=n.strict,f=d===void 0?!0:d,g=n.debug,x=g===void 0?!1:g;if(!p&&f)throw new Error("Contours can't be empty");if(!!p){var y=new Gv;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)y.addContour(l||2,p[v]);return y.tesselate(e,o,s,l,u,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var mM=Be.ODD,dM=Be.NONZERO,fM=Be.POSITIVE,hM=Be.NEGATIVE,gM=Be.ABS_GEQ_TWO,yM=Ze.POLYGONS,xM=Ze.CONNECTED_POLYGONS,vM=Ze.BOUNDARY_CONTOURS;var ln=class extends go.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Be.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Be.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,u,m;for(let f=0,g=i.length/2;f<g;f++){let x=f*2,y=i[x+0],v=i[x+1];if(u!==void 0&&y!==u&&(l=!1),m!==void 0&&v!==m&&(c=!1),u=y,m=v,!l&&!c)break}!l&&!c&&(a=ho({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let p=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new go.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new go.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new go.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new go.BufferAttribute(new Uint32Array(d*3),1),a){let f=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,b=p;S<b;S++){let E=S*2,w=a.vertices[E+0],h=a.vertices[E+1];w<f&&(f=w),w>g&&(g=w),h<x&&(x=h),h>y&&(y=h)}let v=g-f,P=y-x;for(let S=0,b=p;S<b;S++){let E=S*2,w=a.vertices[E+0],h=a.vertices[E+1],_=(w-f)/v,N=(h-x)/P;this._positionAttribute.setXYZ(S,w,h,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,_,N)}for(let S=0,b=d;S<b;S++){let E=S*3,w=a.elements[E+0],h=a.elements[E+1],_=a.elements[E+2];this._indexAttribute.setX(E+0,w),this._indexAttribute.setX(E+1,h),this._indexAttribute.setX(E+2,_)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new ln(this._shape,this._curveSegments);return e.userData=jn(this.userData),e}};var yo=require("three");var Ys=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Ys.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Ys.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*r);s+=3*r;let l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,2*r);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},oi=Ys;oi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var yl=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),cn=class extends yo.BufferGeometry{constructor(e,t,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(w=>{let h=w.extractShapePointsToFlatArray([],i),_=[];for(let N=h.length-1;N>=1;N-=2){let I=h[N-1],L=h[N-0];_.push(I,L)}return _}),c=ho({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),u=ho({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let m=c.elementCount;if(u){c.elementCount+=u.elementCount;for(let w=0;w<u.elements.length;w++){let h=u.elements[w],_=w%2===0?c.vertexCount:0;c.elements.push(h+_)}for(let w=0;w<u.vertexIndices.length;w++){let h=u.vertexIndices[w],_=c.vertexCount;c.vertexIndices.push(h+_)}for(let w=0;w<u.vertices.length;w++){let h=u.vertices[w];c.vertices.push(h)}}let p=1/0,d=-1/0,f=1/0,g=-1/0;for(let w=0,h=c.vertexCount;w<h;w++){let _=w*2,N=c.vertices[_+0],I=c.vertices[_+1];N<p&&(p=N),N>d&&(d=N),I<f&&(f=I),I>g&&(g=I)}this._minX=p,this._minY=f,this._width=d-p,this._height=g-f;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new oi(x);let y=[],v=[];for(let w=c.elementCount-1;w>=0;w--){let h=w>=m,_=w*2,N=c.elements[_+0],I=c.elements[_+1],L=N+I,A={start:N,count:I,normals:[],continuous:[],concave:[]},k=N,q=L-1,ne=N+1,ue=this._shape.roundedCurves.length;do{let z=k-N,B=c.vertices[q*2+0],D=c.vertices[q*2+1],M=c.vertices[k*2+0],G=c.vertices[k*2+1],Q=c.vertices[ne*2+0],j=c.vertices[ne*2+1],V=M-B,F=G-D,O=Math.sqrt(V*V+F*F);V/=O,F/=O;let $=M-Q,Z=G-j,ee=Math.sqrt($*$+Z*Z);$/=ee,Z/=ee,A.normals[z*2+0]=-Z,A.normals[z*2+1]=$,A.concave[z]=V*Z-F*$>0;let H=c.vertexIndices[k];if(Array.isArray(H))A.continuous[z]=!1;else{let[J,X]=this._shape.getCurveIndexFromVertexId(H-1,!0);if(X>0&&X<1)A.continuous[z]=!0;else{let re=X===1?J+1:J-1;re=(re+ue)%ue;let ce=X===1?0:1,ie=this._shape.roundedCurves[J].getTangent(X),fe=this._shape.roundedCurves[re].getTangent(ce);A.continuous[z]=ie.dot(fe)>.95}}h&&(A.normals[z*2+0]*=-1,A.normals[z*2+1]*=-1),[q,k,ne]=[k,ne,ne+1],ne>=L&&(ne-=I)}while(ne!==N+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(N*2,L*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((z,B)=>[B,B]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(N*2,L*2)});for(let z=1;z<=this._bevelSegments;z++){let B=z/this._bevelSegments*Math.PI/2,D=(1-Math.cos(B))*this._bevelSize,M=[],G=[],Q=[],j=[],V=0;for(let O=0;O<I;O++){let $=O*2,Z=(O-1+I)%I*2,ee=c.vertices[A.start*2+$+0],H=c.vertices[A.start*2+$+1],J=-A.normals[Z+0]*D,X=-A.normals[Z+1]*D,re=-A.normals[$+0]*D,ce=-A.normals[$+1]*D;if(A.concave[O]||!A.concave[O]&&h){let ie=Math.atan2(X,J),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let ze=fe-ie;if(A.continuous[O]||h){let ye=ie+ze/2,$e=Math.cos(ye)*D,Ce=Math.sin(ye)*D;M[2*V+0]=ee+$e*(h?-1:1),M[2*V+1]=H+Ce*(h?-1:1),j[V]=O,V++}else{let ye=Math.max(1,Math.floor(i/4*Math.abs(ze)/Math.PI));for(let $e=0;$e<=ye;$e++){let Ce=ie+ze*($e/ye),Nt=Math.cos(Ce)*D,Vt=Math.sin(Ce)*D;M[2*V+0]=ee+Nt,M[2*V+1]=H+Vt,j[V]=O,V++}}}else M[2*V+0]=ee+J,M[2*V+1]=H+X,j[V]=O,G[O]=V,V++,M[2*V+0]=ee,M[2*V+1]=H,j[V]=O,V++,M[2*V+0]=ee+re,M[2*V+1]=H+ce,j[V]=O,Q[O]=V,V++}let F=ho({windingRule:Be.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[M],edgeCreateCallback:O=>{let Z=O.Org.idx,ee=j[Z],H=j[(Z+1)%j.length];O.idx=[ee,H],O.Sym.idx=[H,ee]},vertexIdCallback:O=>{let $=O.Lprev.idx;return[$?$[1]:0,O.idx[0]]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!F.vertexCount)break;for(let O=0;O<F.vertexIndices.length;O++){let[$,Z]=F.vertexIndices[O];if($===Z)continue;let ee=Z;Z<$&&(ee+=I);for(let H=$;H<ee;H++){let J=H%I,X=(H+1)%I;if(!A.continuous[J]||!A.continuous[X]){F.vertexIndices[O]=[$,J],F.vertexIndices.splice(O+1,0,[X,Z]),F.vertices.splice((O+1)*2,0,F.vertices[O*2],F.vertices[O*2+1]);break}}}se.push({bevelI:z,angle:B,size:D,boundary:F,reverseMap:j,insetPoints:M})}let K=(z,B,D)=>{let M=0,G=z.boundary.vertexIndices.length;for(;M<G&&D(z.boundary.vertexIndices[B]);)B=(B+1)%G,M++;return M},U=y.length;for(let z=1;z<se.length;z++){let B=se[z-1],D=se[z],M=B.boundary.vertexIndices.length,G=D.boundary.vertexIndices.length;if(!M||!G)break;let Q=A.concave.length,j=0,V=yl(j,I);for(;!B.boundary.vertexIndices.filter(V).length||!D.boundary.vertexIndices.filter(V).length;)j++,V=yl(j,I);let F=B.boundary.vertexIndices.findIndex(V),O=D.boundary.vertexIndices.findIndex(V);do F=(F+1)%M;while(V(B.boundary.vertexIndices[F]));do O=(O+1)%G;while(V(D.boundary.vertexIndices[O]));j=(j+1)%I;let $=j,Z=this.buildBevelVert(A,B,(F-1+M)%M),ee=this.buildBevelVert(A,D,(O-1+G)%G),H=Z,J=ee,X,re,ce=!1;do{V=yl(j,I);let ie=K(B,F,V),fe=K(D,O,V),ze=ce;if(ce=!1,ie&&!fe){for(let ye=0;ye<ie;ye++)X=this.buildBevelVert(A,B,(F+ye)%M,ye/(ie-1)),y.push(H.topN,X.topP,J.topN),y.push(X.bottomP,H.bottomN,J.bottomN),H=X;ce=!0}else if(!ie&&fe)for(let ye=0;ye<fe;ye++)re=this.buildBevelVert(A,D,(O+ye)%G,ye/(fe-1)),y.push(J.topN,H.topP,re.topP),y.push(H.bottomP,J.bottomN,re.bottomP),J=re;else if(ie&&fe)if(X=this.buildBevelVert(A,B,F,0),re=this.buildBevelVert(A,D,O,0),ze?(y.push(H.topN,re.topP,J.topN),y.push(H.topN,X.topP,re.topP),y.push(re.bottomP,H.bottomN,J.bottomN),y.push(re.bottomP,X.bottomP,H.bottomN)):(y.push(J.topN,H.topN,X.topP),y.push(J.topN,X.topP,re.topP),y.push(X.bottomP,H.bottomN,J.bottomN),y.push(X.bottomP,J.bottomN,re.bottomP)),H=X,J=re,ie===fe)for(let ye=1;ye<ie;ye++)X=this.buildBevelVert(A,B,(F+ye)%M,ye/(ie-1)),re=this.buildBevelVert(A,D,(O+ye)%G,ye/(fe-1)),y.push(H.topN,X.topP,J.topN),y.push(J.topN,X.topP,re.topP),y.push(X.bottomP,H.bottomN,J.bottomN),y.push(X.bottomP,J.bottomN,re.bottomP),H=X,J=re;else if(ie>fe){let ye=ie/fe,$e=0;for(let Ce=1;Ce<ie;Ce++)X=this.buildBevelVert(A,B,(F+Ce)%M,Ce/(ie-1)),y.push(H.topN,X.topP,J.topN),y.push(X.bottomP,H.bottomN,J.bottomN),H=X,Ce>($e+1)*ye&&($e++,re=this.buildBevelVert(A,D,(O+$e)%G,$e/(fe-1)),y.push(J.topN,X.topP,re.topP),y.push(X.bottomP,J.bottomN,re.bottomP),J=re)}else{let ye=fe/ie,$e=0;for(let Ce=1;Ce<fe;Ce++)re=this.buildBevelVert(A,D,(O+Ce)%G,Ce/(fe-1)),y.push(J.topN,X.topP,re.topP),y.push(X.bottomP,J.bottomN,re.bottomP),J=re,Ce>($e+1)*ye&&($e++,X=this.buildBevelVert(A,B,(F+$e)%M,$e/(ie-1)),y.push(H.topN,X.topP,J.topN),y.push(X.bottomP,H.bottomN,J.bottomN),H=X)}F=(F+ie)%M,O=(O+fe)%G,j=(j+1)%Q}while(j!==$)}{let z=se[0];for(let B=0,D=z.boundary.vertexCount;B<D;B++){let M=this.buildBevelVert(A,z,B),G=this.buildBevelVert(A,z,(B+1)%D);y.push(G.topP,M.topN,M.bottomN),y.push(G.topP,M.bottomN,G.bottomP)}}if(h){let z=[];for(let B=y.length-1;B>=U+2;B-=3){let D=y[B-2],M=y[B-1],G=y[B-0];z.push(G,M,D)}y.splice(U,y.length-U,...z)}if(h){let z=[];for(let B=se[se.length-1].boundary.vertices.length-1;B>=1;B-=2){let D=se[se.length-1].boundary.vertices[B-1],M=se[se.length-1].boundary.vertices[B-0];z.push(D,M)}v.push(z)}if(!h){let z=se[se.length-1],B=ho({windingRule:se.length>1?Be.POSITIVE:Be.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...v]});if(!B)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let D=0;D<B.elementCount*3;D+=3){let M=this.buildSurfaceVert(B,B.elements[D+0]),G=this.buildSurfaceVert(B,B.elements[D+1]),Q=this.buildSurfaceVert(B,B.elements[D+2]);y.push(M.top,G.top,Q.top),y.push(Q.bottom,G.bottom,M.bottom)}}this.vertexCache={}}this._buffer.shrink();let P=new yo.BufferAttribute(Uint32Array.from(y),1),S=new yo.BufferAttribute(this._buffer.positions,3),b=new yo.BufferAttribute(this._buffer.normals,3),E=new yo.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,E.needsUpdate=!0,P.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",E),this.setIndex(P)}buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],a=(i-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),u=c*3,m=c*2,p={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=i,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this._depth,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[m+0]=a,this._buffer.uvs[m+1]=l,this._buffer.positions[u+3]=i,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=0,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[m+2]=a,this._buffer.uvs[m+3]=l,this.vertexCache[o]=p,p}buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=t.boundary.vertexIndices[o],c,u,m,p;a!==l?(u=a,c=l,p=!1,m=e.continuous[u]&&e.continuous[c]):(c=a,u=(c-1+e.count)%e.count,p=e.concave[c]&&t.bevelI>0,m=e.continuous[c]||p);let d=Math.cos(t.angle),f=Math.sin(t.angle),g=o*2,x=c*2,y=u*2,v=t.boundary.vertices[g+0],P=t.boundary.vertices[g+1],S=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,E=(P-this._minY)/this._height,w=e.normals[x+0],h=e.normals[x+1],_=e.normals[y+0],N=e.normals[y+1];if(p){let q=_-w,ne=N-h;w=w+q*(1-i),h=h+ne*(1-i);let ue=Math.sqrt(w*w+h*h);w/=ue,h/=ue}let I=this._buffer.get(m?2:4),L=I*3,A=I*2,k={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=w*d,this._buffer.normals[L+1]=h*d,this._buffer.normals[L+2]=f,this._buffer.uvs[A+0]=b,this._buffer.uvs[A+1]=E,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=w*d,this._buffer.normals[L+4]=h*d,this._buffer.normals[L+5]=-f,this._buffer.uvs[A+2]=E,this._buffer.uvs[A+3]=b,m||(I+=2,L+=6,A+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=_*d,this._buffer.normals[L+1]=N*d,this._buffer.normals[L+2]=f,this._buffer.uvs[A+0]=b,this._buffer.uvs[A+1]=E,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=_*d,this._buffer.normals[L+4]=N*d,this._buffer.normals[L+5]=-f,this._buffer.uvs[A+2]=E,this._buffer.uvs[A+3]=b),this.vertexCache[s]=k,k}clone(){let e=new cn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jn(this.userData),e}};var bt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Le?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Le(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let l=s??new Le(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:a}),shape:l}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new ln(n.shape,o):s=new cn(n.shape,r,e,o,t),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var pn=require("three"),Pm=Math.PI*2,Am=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,m=e*.5,p=Rv(c,u,m,o*Math.PI/180,t,i);c.isClosed=!0,c.update();let d=bt.create({shape:c,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...n,type:"EllipseGeometry"}})}};function Rv(n,r,e,t,o,i){if(t>=Pm)return o>30||o%4===0?(Vv(n,r,e,i),Math.round(o/4)):Im(n,t,o,r,e,i);let s={x:0,y:e},a=t+Math.PI*.5,l={x:Math.cos(a)*r,y:Math.sin(a)*e},c=wm({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?zv(n,s.x,s.y,c,o,r,e,i):Im(n,t,o,r,e,i)}function zv(n,r,e,t,o,i,s,a){let l=Math.round(o/t.length);n.addPoint(un(r,e));for(let c=0,u=t.length;c<u;c++){let m=t[c],p=n.points[c],d=un(m.x,m.y);p.controls[1].position.set(m.x1,m.y1),d.controls[0].position.set(m.x2,m.y2),n.addPoint(d)}return a>0?Mm(n,i,s,a):n.addPoint(un(0,0)),l}function Im(n,r,e,t,o,i){let s=-r/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*t,u=Math.cos(l)*o;n.addPoint(un(c,u))}return r<Pm?i>0?Mm(n,t,o,i):n.addPoint(un(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Om(n,t,o,i)),1}function Vv(n,r,e,t=0,o=0,i=0){let s=.5522847498,a=r*s,l=e*s;n.addPoint(Ks(o-r,i,o-r,i-l,o-r,i+l)),n.addPoint(Ks(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Ks(o+r,i,o+r,i+l,o+r,i-l)),n.addPoint(Ks(o,i-e,o+a,i-e,o-a,i-e)),t>0&&Om(n,r,e,t)}function un(n,r){return new Xt(pn.MathUtils.generateUUID(),new pn.Vector2(n,r))}function Ks(n,r,e,t,o,i){let s=un(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Mm(n,r,e,t){_m(n,r,e,t).forEach(i=>n.addPoint(i))}function Om(n,r,e,t){let o=_m(n,r,e,t),i=new Le;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function _m(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new pn.Vector2(o/r,i/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=pn.MathUtils.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),u=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),a}var Br=require("three"),Dm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:m}=n.parameters,p=new ni(!1,r,e,t,o,i,s,a,l,c,u,m);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},ni=class extends Br.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,a=1,l=1,c=1,u=1,m=1,p=1){super();let d=r&&s===1;d&&(p=0),m>100&&(m=100);let f=()=>new Br.Vector3,g=new Br.Vector3,x=f(),y=f(),v=f(),P,S,b,E,w,h,_,N,I=f(),L=f(),A=f(),k=f(),q=f(),ne=f(),ue=f(),se=f(),K=t-2*l+.001,U=K/s,z=Math.ceil(a*s),B=z+1,D=K/z,M=-K/2,G=u+1,Q=2*Math.PI/u,j=Math.PI/2/p,V=.01,F=Math.min((1-m/100)*l,l-V),O=l-F,$=0,Z=2,ee=p*Z+Z,H=G*ee/Z,J=H+G*B,X=G*(B+ee),[re,ce,ie]=[3,3,2].map(ke=>Array(X*ke).fill(0)),fe=[],ze=i-l;function ye(ke,Dt){let nr=Math.PI/2;h=Dt*D,N=2*Math.PI*(h%U)/U+nr,h+=M,_=Math.sin(N)*ze,w=Math.cos(N)*ze,r?ke.set(w,_,h):ke.set(w,h,_)}ye(g,-1e-10),ye(x,0),I.copy(g),ye(g,1);let $e=g.distanceTo(x),Ce=O+F,Nt=$e*z+2*Ce,Vt=F,Ao=Nt-Ce;for(let ke=0;ke<=z;ke++){ye(y,ke),se.subVectors(y,I).normalize(),I.copy(y),ne.copy(y).setComponent(+r+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Dt=ke===0,nr=ke===z,gf=Dt?3*Math.PI/2:j,yf=Dt?Vt:Ao,xf=Dt?G:J,vf=Dt?0:X-G,bf=se.clone().multiplyScalar(Dt?-O:O).add(y),Sf=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Ir=0;Ir<G;Ir++){let lc=Ir*Q;if(L.addVectors(g.copy(ne).multiplyScalar(l*Math.cos(lc)),x.copy(ue).multiplyScalar(l*Math.sin(lc))),A.copy(L).normalize(),Dt||nr){d||($=vf+Ir,[0,1,2].forEach(Ct=>{re[$*3+Ct]=bf.getComponent(Ct),ce[$*3+Ct]=Sf.getComponent(Ct)}),ie[$*2]=+nr,ie[$*2+1]=Ir/u),x.copy(A).multiplyScalar(F),v.addVectors(y,x);for(let Ct=0;Ct<p;Ct++){let Ma=Ct*j+gf;k.addVectors(g.copy(se).multiplyScalar(O*Math.sin(Ma)),x.copy(A).multiplyScalar(O*Math.cos(Ma))),q.copy(k).normalize(),x.addVectors(v,k),k.normalize(),$=xf+Ct*G+Ir,[0,1,2].forEach(Ui=>{re[$*3+Ui]=x.getComponent(Ui),ce[$*3+Ui]=q.getComponent(Ui)});let wf=+Dt+Math.sin(Ma);ie[$*2]=(yf+O*wf)/Nt,ie[$*2+1]=Ir/u}}x.addVectors(y,L),$=H+ke*G+Ir,[0,1,2].forEach(Ct=>{re[$*3+Ct]=x.getComponent(Ct),ce[$*3+Ct]=A.getComponent(Ct)}),ie[$*2]=(Ce+ke*$e)/Nt,ie[$*2+1]=Ir/u}}let _t=B+2*p+Z,Mo=1,[Vi,Fi]=d?[Mo,Mo+B-1]:[0,_t-1];for(let ke=Vi;ke<=Fi-1;ke++){let Dt=d&&ke===Fi-1;for(let nr=0;nr<G-1;nr++)P=ke*G+nr,S=P+1,b=(Dt?nr:P)+G,E=(Dt?nr+1:S)+G,ke===0?fe.push(S,E,b):ke===_t-2?fe.push(P,S,b):fe.push(P,S,b,S,E,b)}this.setIndex(fe),this.setAttribute("position",new Br.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Br.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Br.Float32BufferAttribute(ie,2))}};var Em=require("three");var Bm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new ii(r*.5,i,s):new Em.IcosahedronBufferGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},ii=class extends Kr{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,r,e,t),this.type=a}static fromJSON(r){return new ii(r.radius,r.corner,r.cornerSides)}};var Qs=require("three"),Gm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:r,segments:e,verticalSegments:t}=n.parameters,o=new Qs.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new Qs.LatheBufferGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var mr=require("three");var Gr=require("three");var oe=require("three"),pr=new oe.Matrix4,xl=new oe.Object3D,Js=new oe.Vector3,Jr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new oe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];i.normal.applyMatrix3(e).normalize();for(let s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return pr.makeRotationX(r),this.applyMatrix4(pr),this}rotateY(r){return pr.makeRotationY(r),this.applyMatrix4(pr),this}rotateZ(r){return pr.makeRotationZ(r),this.applyMatrix4(pr),this}translate(r,e,t){return pr.makeTranslation(r,e,t),this.applyMatrix4(pr),this}scale(r,e,t){return pr.makeScale(r,e,t),this.applyMatrix4(pr),this}lookAt(r){return xl.lookAt(r),xl.updateMatrix(),this.applyMatrix4(xl.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new oe.Vector3().fromBufferAttribute(i,p)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,p));function u(p,d,f,g){let x=a===void 0?[]:[e.colors[p].clone(),e.colors[d].clone(),e.colors[f].clone()],y=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,p),new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,f)],v=new mn(p,d,f,y,x,g);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(l,p),new oe.Vector2().fromBufferAttribute(l,d),new oe.Vector2().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(c,p),new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,f)])}let m=r.groups;if(m.length>0)for(let p=0;p<m.length;p++){let d=m[p],f=d.start,g=d.count;for(let x=f,y=f+g;x<y;x+=3)t!==void 0?u(t.getX(x),t.getX(x+1),t.getX(x+2),d.materialIndex):u(x,x+1,x+2,d.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)u(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)u(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Js).negate(),this.translate(Js.x,Js.y,Js.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new oe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new oe.Vector3,e=new oe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],a=this.vertices[i.b],l=this.vertices[i.c];r.subVectors(l,a),e.subVectors(s,a),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new oe.Vector3;if(r){let t=new oe.Vector3,o=new oe.Vector3;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],l=this.vertices[a.a],c=this.vertices[a.b],u=this.vertices[a.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new Jr;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new oe.Vector3,u={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};i.push(c),s.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,a=r.vertices,l=this.faces,c=r.faces,u=this.colors,m=r.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,d=a.length;p<d;p++){let g=a[p].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let p=0,d=m.length;p<d;p++)u.push(m[p].clone());for(let p=0,d=c.length;p<d;p++){let f=c[p],g,x,y=f.vertexNormals,v=f.vertexColors,P=new mn(f.a+i,f.b+i,f.c+i);P.normal.copy(f.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let S=0,b=y.length;S<b;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),P.vertexNormals.push(g);P.color.copy(f.color);for(let S=0,b=v.length;S<b;S++)x=v[S],P.vertexColors.push(x.clone());P.materialIndex=f.materialIndex+t,l.push(P)}for(let p=0,d=r.faceVertexUvs.length;p<d;p++){let f=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let g=0,x=f.length;g<x;g++){let y=f[g],v=[];for(let P=0,S=y.length;P<S;P++)v.push(y[P].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],m=Math.round(u.x*i)+"_"+Math.round(u.y*i)+"_"+Math.round(u.z*i);e[m]===void 0?(e[m]=l,t.push(this.vertices[l]),o[l]=t.length-1):o[l]=o[e[m]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let m=[u.a,u.b,u.c];for(let p=0;p<3;p++)if(m[p]===m[(p+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let u=0,m=this.faceVertexUvs.length;u<m;u++)this.faceVertexUvs[u].splice(c,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let l=0;l<e;l++){let c=r[l]._id;s&&s.push(o[c]),a&&a.push(i[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let g in f)f[g]!==void 0&&(r[g]=f[g]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let g=this.vertices[f];e.push(g.x,g.y,g.z)}let t=[],o=[],i={},s=[],a={},l=[],c={};for(let f=0;f<this.faces.length;f++){let g=this.faces[f],x=!0,y=!1,v=this.faceVertexUvs[0][f]!==void 0,P=g.normal.length()>0,S=g.vertexNormals.length>0,b=g.color.r!==1||g.color.g!==1||g.color.b!==1,E=g.vertexColors.length>0,w=0;if(w=u(w,0,0),w=u(w,1,x),w=u(w,2,y),w=u(w,3,v),w=u(w,4,P),w=u(w,5,S),w=u(w,6,b),w=u(w,7,E),t.push(w),t.push(g.a,g.b,g.c),t.push(g.materialIndex),v){let h=this.faceVertexUvs[0][f];t.push(d(h[0]),d(h[1]),d(h[2]))}if(P&&t.push(m(g.normal)),S){let h=g.vertexNormals;t.push(m(h[0]),m(h[1]),m(h[2]))}if(b&&t.push(p(g.color)),E){let h=g.vertexColors;t.push(p(h[0]),p(h[1]),p(h[2]))}}function u(f,g,x){return x?f|1<<g:f&~(1<<g)}function m(f){let g=f.x.toString()+f.y.toString()+f.z.toString();return i[g]!==void 0||(i[g]=o.length/3,o.push(f.x,f.y,f.z)),i[g]}function p(f){let g=f.r.toString()+f.g.toString()+f.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(f.getHex())),a[g]}function d(f){let g=f.x.toString()+f.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(f.x,f.y)),c[g]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new Jr().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,d=e.length;p<d;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,d=t.length;p<d;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,d=o.length;p<d;p++)this.faces.push(o[p].clone());for(let p=0,d=r.faceVertexUvs.length;p<d;p++){let f=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let g=0,x=f.length;g<x;g++){let y=f[g],v=[];for(let P=0,S=y.length;P<S;P++){let b=y[P];v.push(b.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,d=i.length;p<d;p++){let f={};if(f.name=i[p].name,i[p].vertices!==void 0){f.vertices=[];for(let g=0,x=i[p].vertices.length;g<x;g++)f.vertices.push(i[p].vertices[g].clone())}if(i[p].normals!==void 0){f.normals=[];for(let g=0,x=i[p].normals.length;g<x;g++)f.normals.push(i[p].normals[g].clone())}this.morphTargets.push(f)}let s=r.morphNormals;for(let p=0,d=s.length;p<d;p++){let f={};if(s[p].vertexNormals!==void 0){f.vertexNormals=[];for(let g=0,x=s[p].vertexNormals.length;g<x;g++){let y=s[p].vertexNormals[g],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),f.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){f.faceNormals=[];for(let g=0,x=s[p].faceNormals.length;g<x;g++)f.faceNormals.push(s[p].faceNormals[g].clone())}this.morphNormals.push(f)}let a=r.skinWeights;for(let p=0,d=a.length;p<d;p++)this.skinWeights.push(a[p].clone());let l=r.skinIndices;for(let p=0,d=l.length;p<d;p++)this.skinIndices.push(l[p].clone());let c=r.lineDistances;for(let p=0,d=c.length;p<d;p++)this.lineDistances.push(c[p]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let m=r.boundingSphere;return m!==null&&(this.boundingSphere=m.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new vl().fromGeometry(this),e=new oe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(t,3).copyVector3sArray(r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],u=new oe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,i.push(u.copyVector3sArray(c.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new oe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(r.skinIndices))}if(r.skinWeights.length>0){let o=new oe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new oe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new oe.Float32BufferAttribute(t.vertices.length*3,3),i=new oe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(t.vertices)),e.setAttribute("color",i.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new oe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};Jr.prototype.isGeometry=!0;var vl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=r.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,m=u.length,p;if(m>0){p=[];for(let y=0;y<m;y++)p[y]={name:u[y].name,data:[]};this.morphTargets.normal=p}let d=r.skinIndices,f=r.skinWeights,g=d.length===t.length,x=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let v=e[y];this.vertices.push(t[v.a],t[v.b],t[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][y];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][y];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<l;b++){let E=a[b].vertices;c[b].data.push(E[v.a],E[v.b],E[v.c])}for(let b=0;b<m;b++){let E=u[b].vertexNormals[y];p[b].data.push(E.a,E.b,E.c)}g&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),x&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},mn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};var Fv=["a","b","c"];function Uv(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function bl(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function Sl(n,r,e,t,o,i){let s=Math.min(n,r),a=Math.max(n,r),l=s+"_"+a,c;if(t.has(l))c=t.get(l);else{let u=e[s],m=e[a];c={a:u,b:m,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[r].edges.push(c)}function jv(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],Sl(s.a,s.b,n,t,s,e),Sl(s.b,s.c,n,t,s,e),Sl(s.c,s.a,n,t,s,e)}function Zs(n,r,e,t,o){n.push(new mn(r,e,t,void 0,void 0,o))}function dn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function ea(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var ta=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof Gr.BufferGeometry?r=new Jr().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Gr.Vector3,t,o,i,s,a,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],m=u!==void 0&&u.length>0,p=[],d=new Map;jv(l,c,p,d);let f=[],g,x,y,v,P,S,b;for(let V of Array.from(d.keys())){for(x=d.get(V),y=new Gr.Vector3,P=3/8,S=1/8,b=x.faces.length,b!=2&&(P=.5,S=0,b!=1),y.addVectors(x.a,x.b).multiplyScalar(P),e.set(0,0,0),s=0;s<b;s++){for(v=x.faces[s],a=0;a<3&&(g=l[Uv(v,Fv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=f.length,f.push(y)}let E,w,h,_,N,I,L,A=[];for(o=0,i=l.length;o<i;o++){for(I=l[o],N=p[o].edges,t=N.length,t==3?E=3/16:t>3&&(E=3/(8*t)),w=1-t*Number(E),h=E,t<=2&&(t==2?(w=3/4,h=1/8):t==1||t==0),L=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<t;s++)_=N[s],g=_.a!==I?_.a:_.b,e.add(g);e.multiplyScalar(Number(h)),L.add(e),A.push(L)}let k=A.concat(f),q=A.length,ne,ue,se,K=[],U=[],z,B,D,M,G=new Gr.Vector2,Q=new Gr.Vector2,j=new Gr.Vector2;for(o=0,i=c.length;o<i;o++)v=c[o],ne=Number(bl(v.a,v.b,d).newEdge)+q,ue=Number(bl(v.b,v.c,d).newEdge)+q,se=Number(bl(v.c,v.a,d).newEdge)+q,Zs(K,ne,ue,se,v.materialIndex),Zs(K,v.a,ne,se,v.materialIndex),Zs(K,v.b,ue,ne,v.materialIndex),Zs(K,v.c,se,ue,v.materialIndex),m&&(z=u[o],B=z[0],D=z[1],M=z[2],G.set(dn(B.x,D.x),dn(B.y,D.y)),Q.set(dn(D.x,M.x),dn(D.y,M.y)),j.set(dn(B.x,M.x),dn(B.y,M.y)),ea(U,G,Q,j),ea(U,B,G,j),ea(U,D,Q,G),ea(U,M,j,Q));r.vertices=k,r.faces=K,m&&(r.faceVertexUvs[0]=U)}};var et=new mr.Vector3,Rm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),t={width:et.x,height:et.y,depth:et.z,subdivisions:0}):t=r.parameters;let o={...t,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(r!==et.x||e!==et.y||t!==et.z)&&i.scale(et.x===0?1:r/et.x,et.y===0?1:e/et.y,et.z===0?1:t/et.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new ta(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new mr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(i.parameters,{width:100,height:et.y*s,depth:et.z*s}),r(this.build(i))})}};var zm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,l=n.shape,c=r*.5,u=e*.5,m=0,p=0,d=2*Math.PI/t;for(let g=0;g<t;g++){let x=d*g,y=m+Math.sin(x)*c,v=p+Math.cos(x)*u;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=bt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};var ve=require("three"),Vm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Tl(r*.5,e,o,i,s,a,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function si(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function wl(n,r,e,t,o,i){let s=r.clone().sub(n),a=e.clone().sub(n),l=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let c=s.add(a).normalize();i.copy(n).addScaledVector(c,t/Math.sin(l/2))}else{let c=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(c)),i.addScaledVector(a,t/Math.sin(c))}}function kv(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Tl=class extends ve.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],u=[],m=[],p=0,d=e/2,f=Math.PI/t,g=r*Math.cos(Math.PI/t),x=2*Math.PI/t,y=(t-2)*Math.PI/t,v=Math.PI-y,P=new ve.Vector3(0,-d,0),S=new ve.Vector3(0,d,0),b=new ve.Vector2(r,-d),E=new ve.Vector2(g,-d),w=new ve.Vector2(0,S.y).sub(E),h=new ve.Vector2(0,S.y).sub(b),_=new ve.Vector2(w.y,-w.x).normalize(),N=new ve.Vector2(h.y,-h.x).normalize(),L=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,L);let A;{let U=new ve.Vector3(_.x,_.y,0),z=new ve.Vector3(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);A=U.angleTo(z)}let k=s/Math.tan((Math.PI-w.angle())/2),q=s/Math.tan((Math.PI-A)/2),ne=new ve.Vector3;if(!i){c.push(P.x,P.y,P.z),u.push(0,-1,0),m.push(0,0);let U=p++,z=[],B=b.clone(),D=k/Math.cos(Math.PI/t);B.x-=D;for(let M=0;M<t;M++){let G=M/t*Math.PI*2+f,Q=new ve.Vector2(Math.sin(G),Math.cos(G));si(B,Q,ne),c.push(ne.x,ne.y,ne.z),u.push(0,-1,0),m.push(0,0),z.push(p++)}for(let M=0;M<z.length;M++)l.push(z[M],U,z[(M+1)%z.length])}let ue=[];{let U=new ve.Vector3,z=new ve.Vector3,B=new ve.Vector3,D=new ve.Vector3,M=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<t;Q++){let j=Q/t*Math.PI*2+f,V=(Q+.5)/t*Math.PI*2+f,F=(Q+1)/t*Math.PI*2+f,O=new ve.Vector2(Math.sin(j),Math.cos(j)),$=new ve.Vector2(Math.sin(V),Math.cos(V)),Z=new ve.Vector2(Math.sin(F),Math.cos(F));si(b,O,z),si(b,Z,B),si(_,$,U),wl(S,z,B,q,q,D),c.push(D.x,D.y,D.z),wl(z,S,B,q,k,M),c.push(M.x,M.y,M.z),wl(B,z,S,k,q,G),c.push(G.x,G.y,G.z),u.push(U.x,U.y,U.z),u.push(U.x,U.y,U.z),u.push(U.x,U.y,U.z),m.push(0,0),m.push(0,0),m.push(0,0);let ee=p++,H=p++,J=p++;if(l.push(ee,H,J),s>0){{let ce=z.clone().add(B).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),ze=P.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ye=G.clone().sub(M);se(ce,ye,ze,w.angle())}let X,re;{let ce=new ve.Vector3;si(N,Z,ce);let ie=G.clone().add(D).multiplyScalar(.5);ie=kv(ie,B,S);let fe=G.clone().sub(D);[X,re]=se(ie,fe,ce,A,D.y)}{let ce=X,ie=ce.clone().setY(0).normalize(),fe=new ve.Vector3(0,-1,0),ze=ie.clone().cross(fe);K(ce,ie,fe,ze)}ue.concat(re);{let ce=w.angle(),ie=Math.PI-ce,fe=S.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let ze=new ve.Vector3,ye=[];for(let Ce=0;Ce<a;Ce++){let Nt=[],Vt=Math.PI/2-ie*Ce/a,Ao=Math.cos(Vt),_t=Math.sin(Vt),Mo=V;for(let Vi=0;Vi<=Ce;Vi++){let Fi=Math.cos(Mo),ke=Math.sin(Mo);U.x=Ao*ke,U.y=_t,U.z=Ao*Fi,ze.copy(fe).addScaledVector(U,s),c.push(ze.x,ze.y,ze.z),u.push(U.x,U.y,U.z),m.push(0,0),Nt.push(p++),Mo+=Math.PI*2/Ce/t}ye.push(Nt)}re.reverse(),ye.push(re);let $e=ye.length-1;for(let Ce=0;Ce<$e;Ce++){let Nt=ye[Ce],Vt=ye[Ce+1],Ao=Nt.length-1;l.push(Vt[1],Nt[0],Vt[0]);for(let _t=1;_t<=Ao;_t++)l.push(Nt[_t],Nt[_t-1],Vt[_t]),l.push(Vt[_t+1],Nt[_t],Vt[_t])}}}}}this.setIndex(l),this.setAttribute("position",new ve.Float32BufferAttribute(c,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(u,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(m,2));function se(U,z,B,D,M){let G=-D/2,Q=(Math.PI-D)/2,j=z.clone().normalize().cross(B);U.addScaledVector(B,-s/Math.sin(Q));let V=new ve.Vector3,F=new ve.Vector3,O=1,$=p,Z=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*D;F.set(0,0,0),F.addScaledVector(j,Math.sin(H)),F.addScaledVector(B,Math.cos(H));for(let J=0;J<=O;J++){let X=J/O-.5;if(V.copy(U),V.addScaledVector(z,X),V.addScaledVector(F,s),M!=null){let re=Math.max(0,V.y-M);V.addScaledVector(z,-re/z.y)}c.push(V.x,V.y,V.z),u.push(F.x,F.y,F.z),m.push(0,0),J===0&&Z.push(p),p++}}for(let ee=0;ee<a;ee++)for(let H=0;H<O;H++){let J=$+H+(O+1)*ee,X=J+(O+1),re=X+1,ce=J+1;l.push(J,X,ce),l.push(X,re,ce)}return[U.clone().addScaledVector(z,.5),Z]}function K(U,z,B,D){let M=Math.PI/2,G=h.angle()-M,Q=[],j=new ve.Vector3,V=new ve.Vector3;for(let O=0;O<=a;O++){let $=[],Z=O/a;for(let ee=0;ee<=O;ee++){let J=((O?ee/O:0)-.5)*v,X=Math.cos(J),re=Math.sin(J),ce=Math.atan(Math.tan(G)*X),ie=(M+ce)*Z,fe=Math.cos(ie),ze=Math.sin(ie);j.set(0,0,0),j.addScaledVector(z,ze*X),j.addScaledVector(B,fe),j.addScaledVector(D,ze*re),V.copy(U).addScaledVector(j,s),c.push(V.x,V.y,V.z),u.push(j.x,j.y,j.z),m.push(0,0),$.push(p++)}Q.push($)}let F=Q.length-1;for(let O=0;O<F;O++){let $=Q[O],Z=Q[O+1],ee=$.length-1;l.push($[0],Z[1],Z[0]);for(let H=1;H<=ee;H++)l.push($[H-1],$[H],Z[H]),l.push($[H],Z[H+1],Z[H])}}}};var Fm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},m={x:c.x,y:c.y};function p(S,b,E){return b>e&&E>t?Math.min(S*e/b,S*t/E):b>e?S*e/b:E>t?S*t/E:S}let d=[];d[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,g=m.x,x=m.y,y=u.y;r.addPoint(r.createPoint(f,x)),r.addPoint(r.createPoint(g,x)),r.addPoint(r.createPoint(g,y)),r.addPoint(r.createPoint(f,y)),r.isClosed=!0;let v=!0;for(let S=0,b=r.points.length;S<b;S++)r.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(v=!1);v&&(r.roundness=d[0]),r.useCubicForRoundedCorners=i!==1,r.update();let P=bt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...n,type:"RectangleGeometry"}})}};var Um=require("three"),jm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=n.parameters,u=new Um.SphereBufferGeometry(.5*r,o,i,s,a,l,c);return u.scale(1,e/r,t/r),Object.assign(u,{userData:{...n,type:"SphereGeometry"}})}};var km=require("three"),Hm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new km.PlaneBufferGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var Zr=require("three"),Wm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,a=new Nl(r,e,t,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Nl=class extends Zr.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],u=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-u,o),o*=Math.PI/180;let m=[],p=Math.PI/2,d=(V=0,F=0,O=0)=>new Zr.Vector3(V,F,O),f=d(),g=d(),[x,y,v]=[e/2,r/2,t/2],P=-y,S=+y,[b,E,w]=[d(P,-x,+v),d(P,-x,-v),d(P,+x,-v)],h=(V,F=!1)=>Math.sin(V-Math.PI/(1+ +F)),_=(V,F=!1)=>Math.cos(V-Math.PI/(1+ +F));w.y=Math.sin(o)*e-x;let N=Math.cos(o)*e-v,I=b.z-u;o<=p?(w.z=Math.min(N,I),w.z==I&&(w.y-=(N-I)/Math.tan(p-o))):E.z=Math.min(E.z-N-v,b.z-u),f.subVectors(b,E),g.subVectors(w,E);let L=Math.min(f.length(),g.length())*i/100,A=L*Math.tan(o/2),k=L/Math.cos(o/2),q=f.clone().normalize().add(g.normalize()).setLength(k).add(E);f.set(0,h(o,!0),_(o,!0)),m.push([w,f.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let F=p+o+V*ne;f.set(0,Math.sin(F)*A,Math.cos(F)*A),f.add(q),g.set(0,h(F),_(F)),m.push([f.clone(),g.clone()])}m.push([b,d(0,1,0)]);let ue=Math.sin(ne/2)*A*2,se=m.length-1,K=m[0][0].distanceTo(m[1][0]),U=m[se-1][0].distanceTo(m[se][0]),z=K+ue*s+U;m[0].push(1);for(let V=0;V<=s;V++)m[V+1].push(1-(K+V*ue)/z);m[se].push(0);let[B,D,M]=m[0],G,Q,j;for(let V=1;V<m.length;V++)[G,Q,j]=m[V],a.push(P,B.y,B.z,P,G.y,G.z,S,B.y,B.z,S,B.y,B.z,P,G.y,G.z,S,G.y,G.z),l.push(0,D.y,D.z,0,Q.y,Q.z,0,D.y,D.z,0,D.y,D.z,0,Q.y,Q.z,0,Q.y,Q.z),c.push(0,M,0,j,1,M,1,M,0,j,1,j),[B,D,M]=[G,Q,j];this.setAttribute("position",new Zr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Zr.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Zr.Float32BufferAttribute(c,2))}};var qm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,m=r*.5,p=e*.5,d=0,f=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=m*t/100,v=p*t/100;if(o===3&&t===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let b=g*S,E=d+Math.sin(b)*m,w=f+Math.cos(b)*p;u.addPoint(u.createPoint(E,w))}}else for(let S=0;S<o;S++){let b=d+Math.cos(x)*m,E=f+Math.sin(x)*p;u.addPoint(u.createPoint(b,E)),x+=g,b=d+Math.cos(x)*y,E=f+Math.sin(x)*v,S<=o,u.addPoint(u.createPoint(b,E)),x+=g}u.isClosed=!0;for(let S=0,b=u.points.length;S<b;S++)u.points[S].roundness=i;u.roundness=i,u.update();let P=bt.create({shape:u,parameters:{roundness:i,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...n,type:"StarGeometry"}})}};var $m=require("three"),ra=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e}=n.parameters,t=new $m.PlaneBufferGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Xm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=Hv(r,e,t,r*.5,s,i,0,0,o,a,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function Hv(n,r,e,t,o,i,s,a,l,c,u){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(c=0),new ni(!0,n,r,e,t,o,i,s,a,l,c,u)}var Ym=require("three"),Km=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,a=r*.5;a!==e&&(a-=e);let l=new Ym.TorusKnotBufferGeometry(a,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var Qm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Le?n.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,l=n.shape,c=r*.5,u=e*.5;a?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let p=0,d=l.points.length;p<d;p++)l.points[p].roundness=t;l.roundness=t,l.update();let m=bt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...n,type:"TriangleGeometry"}})}};var We=require("three");var Wv,oa=new Promise(n=>{Wv=n});var Ad=require("three");var oo=require("three");var ha=require("three");var Il=require("three");var Ue=require("three");var Cl=require("three");function Ke(n,r){return r.color(n)}var Ll=n=>"isEntity"in n,dr=n=>"isAbstractMesh"in n,fr=n=>n!==null&&n.isBooleanMesh,Jm=n=>n.objectType==="CombinedCamera";var Rr=n=>"objectHelper"in n;function qv(n,r){let e=!1;r.position&&(n.position.fromArray(r.position),e=!0),r.rotation&&(n.rotation.fromArray(r.rotation),e=!0),r.scale&&(e=!0,n.scale.fromArray(r.scale)),r.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(r.hiddenMatrix??Wr.identity)),e&&(n.updateMatrix(),fr(n.parent)&&dr(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(r.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=r.isUpVectorFlipped),n.updateUp())}function $v(n,r){qv(n,r),r.name!==void 0&&(n.name=r.name),r.visible!==void 0&&(n.isEntity?n.visibility=r.visible:n.visible=r.visible)}function Zm(n,r,e){$v(n,r),r.color!==void 0&&(n.color=Ke(r.color,e)),r.intensity!==void 0&&(n.intensity=r.intensity),r.shadows!==void 0&&!(n instanceof Cl.HemisphereLight)&&(n.castShadow=r.shadows),n.shadow&&!(n instanceof Cl.HemisphereLight)&&r.depth!==void 0&&(n.shadow.camera.far=r.depth,n.shadow.needsUpdate=!0),r.helper!==void 0&&Rr(n)&&(n.enableHelper=r.helper,n.gizmos.shadowmap.visible=r.helper)}function ed(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var fn=new Ue.Box3,hr=new Ue.Vector3,gr=new Ue.Vector3,hn=new Ue.Matrix4,rd=[new Ue.Vector3(-1,1,1),new Ue.Vector3(-1,-1,1),new Ue.Vector3(1,-1,1),new Ue.Vector3(1,1,1),new Ue.Vector3(-1,1,-1),new Ue.Vector3(-1,-1,-1),new Ue.Vector3(1,-1,-1),new Ue.Vector3(1,1,-1)],Xv=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],Yv=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function Kv(n,r,e=0,t=r.count){let o=1/0,i=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let u=e;u<t;u++){let m=r.getX(u),p=r.getY(u),d=r.getZ(u);m<o&&(o=m),p<i&&(i=p),d<s&&(s=d),m>a&&(a=m),p>l&&(l=p),d>c&&(c=d)}return n.min.set(o,i,s),n.max.set(a,l,c),n}var td=(n,r,e,t)=>{if(dr(n)){let o=n.geometry.userData.parameters,i=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?hr.copy(n.originalGeometry.boundingSphere.center):i!==void 0&&(Kv(fn,i,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:i.count),fn.getCenter(hr)),n.forceComputeSize?fn.getSize(gr).multiplyScalar(.5):gr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(Rr(n)&&t===!0){let o=n.geometryHelper.getAttribute("position");fn.setFromArray(o.array),fn.getCenter(hr),fn.getSize(gr).multiplyScalar(.5)}else hr.setScalar(0),gr.setScalar(0);hn.copy(r).multiply(n.matrixWorld),gr.x===0&&gr.y===0&&gr.z===0?e.push(new Ue.Vector3(hr.x,hr.y,hr.z).applyMatrix4(hn)):rd.forEach(o=>{e.push(o.clone().multiply(gr).add(hr).applyMatrix4(hn))})},ai=class extends Ue.Box3{constructor(){super(...arguments);this.matrix=new Ue.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ue.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&td(s,t,i,e.enableHelper===!0)}):td(e,t,i,e.enableHelper===!0),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(hn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(gr).multiplyScalar(.5),this.getCenter(hr),hn.copy(this.matrix).setPosition(hr),this.vertices=rd.map(e=>e.clone().multiply(gr).applyMatrix4(hn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Xv.map(([e,t])=>new Ue.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Ue.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=Yv.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var na=require("three");var ia=n=>class extends n{hasEntityChild(){return this.children.some(e=>Ll(e))}isDescendantOf(e){e instanceof na.Object3D&&(e=e.uuid);let t=this;for(;t.parent;){if(t.parent.uuid===e)return!0;t=t.parent}return!1}attach(e,t){this.updateWorldMatrix(!0,!1);let o=new na.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Ll(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),t!==void 0&&(this.children.pop(),this.children.splice(t,0,e)),this}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};var Yt=n=>"isEntity"in n,od=n=>"isAbstractMesh"in n,kt=n=>class extends ia(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Il.Matrix4;this._singleBBox=new ai;this._recursiveBBox=new ai;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(t){this.visible=t;for(let o of this.children)Yt(o)&&o.traverseEntity(i=>{Rr(i)&&i.visible&&(i.objectHelper.visible=t)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(t=>{Yt(t)&&(t.singleBBoxNeedsUpdate=!0,t.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(t=>{t.singleBBoxNeedsUpdate=!0,t.recursiveBBoxNeedsUpdate=!0})}traverseEntity(t){t(this);for(let o of this.children)Yt(o)&&o.traverseEntity(t)}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}clone(t){return new this.constructor().copy(this,t)}copy(t,o=!0){if(super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),o===!0)for(let i of t.children)Yt(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let t=new Il.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),t.copy(this.matrixWorld).invert(),t.multiply(o);for(let i of this.children)Yt(i)&&i.hiddenMatrix.premultiply(t)}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Yo(o,t)}fromObjectTransformState(t){return t.position&&this.position.fromArray(t.position),t.rotation&&this.rotation.fromArray(t.rotation),t.scale&&this.scale.fromArray(t.scale),t.hiddenMatrix&&this.hiddenMatrix.fromArray(t.hiddenMatrix),this.updateMatrix(),this}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Yo(o,t)}fromState(t,o){return t.name&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.type!=="OrthographicCamera"&&t.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),t.visible!==void 0&&(this.visibility=t.visible),this.fromObjectTransformState(t),this}};var Qe=require("three");var nd=require("three"),Pl=class extends nd.Object3D{},sa=class extends Pl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var xo=class extends Qe.Object3D{constructor(e,t={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Qe.Vector3),i=.1;this.parameters=vs.defaultData(o.toArray(),i),co(this.parameters,t),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let t=0,o=e-this.children.length;t<o;++t){let i=new sa(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let t=0,o=this.children.length-e;t<o;++t)this.remove(this.children[0])}_updateRadial(e){let t=e.radial,o=t.start*Qe.MathUtils.DEG2RAD,i=t.end*Qe.MathUtils.DEG2RAD,s=o-i,a=new Qe.Euler(t.rotation[0]*Qe.MathUtils.DEG2RAD,t.rotation[1]*Qe.MathUtils.DEG2RAD,t.rotation[2]*Qe.MathUtils.DEG2RAD),l;switch(t.axis){case"z":l=new Qe.Vector3(0,0,1);break;case"y":l=new Qe.Vector3(0,1,0);break;default:case"x":l=new Qe.Vector3(1,0,0);break}for(let[c,u]of this.children.entries()){u.scale.x=t.scale[0],u.scale.y=t.scale[1],u.scale.z=t.scale[2],u.position.setScalar(0);let m=s/e.count*c-o;switch(t.axis){case"x":u.rotation.set(0,m,0);break;case"y":u.rotation.set(0,0,m);break;case"z":u.rotation.set(m,0,0);break}u.translateOnAxis(l,t.radius),u.position.x+=t.position[0],u.position.y+=t.position[1],u.position.z+=t.position[2],t.alignment===!0?(u.rotation.x+=a.x,u.rotation.y+=a.y,u.rotation.z+=a.z):u.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Qe.Euler(t.rotation[0]*Qe.MathUtils.DEG2RAD,t.rotation[1]*Qe.MathUtils.DEG2RAD,t.rotation[2]*Qe.MathUtils.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(t.scale[0]-1)*i,s.scale.y=1+(t.scale[1]-1)*i,s.scale.z=1+(t.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=t.position[0]*i,s.position.y=t.position[1]*i,s.position.z=t.position[2]*i}_updateGrid(e){let t=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Qe.Vector3(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let u=this.children[t++];u.scale.setScalar(1),u.rotation.set(0,0,0),u.position.x=o.size[0]*a-s.x,u.position.y=o.size[1]*l-s.y,u.position.z=o.size[2]*c-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[t++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),co(this.parameters,e),this.update(),this}};var fa=require("three");var Qt=require("three");var li=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var id=require("three"),st=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=id.MathUtils.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof st&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Al=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},tt=new Al;var Ml=require("three");var sd=require("three"),le=class extends st{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=sd.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,a.output,i);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=class extends le{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,t))}};var rt=class extends Ae{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ml.Vector2?e:new Ml.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Ol=require("three");var pt=class extends Ae{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ol.Vector3?e:new Ol.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var Ht=class extends Ae{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ut?e:new ut(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var Qv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,ad=/[a-z_0-9]+/gi,Y=class extends le{constructor(e,t,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let a,l=0,c=this.src;if(this.includes)for(let m=0;m<this.includes.length;m++)e.include(this.includes[m],this);for(let m in this.extensions)e.extensions[m]=!0;let u=[];for(;a=ad.exec(this.src);)u.push(a);for(let m=0;m<u.length;m++){let p=u[m],d=p[0],f=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&f&&tt.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=tt.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||tt.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+g+c.substring(p.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&tt.contains(g)&&e.include(tt.get(g))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=Qv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(ad);if(a){let l=0;for(;l<a.length;){let c=a[l++],u;c==="in"||c==="out"||c==="inout"?u=a[l++]:(u=c,c="");let m=a[l++];this.inputs.push({name:m,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var Jv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,_l=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||_l.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let a,l,c="",u=Jv.exec(e);this.useDefine=s??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],a=u[2],c=u[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},we=_l;we.PI="PI",we.PI2="PI2",we.RECIPROCAL_PI="RECIPROCAL_PI",we.RECIPROCAL_PI2="RECIPROCAL_PI2",we.LOG2="LOG2",we.EPSILON="EPSILON";var Zv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
2
+ )*?)}`,"gim"),eb=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),gn=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=Zv.exec(e);if(t){let o=t[2],i;for(;i=eb.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var yn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),t)}};tt.addKeyword("uv",function(){return new yn});tt.addKeyword("uv2",function(){return new yn(1)});var aa=require("three");var vo=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??vo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case aa.LinearEncoding:return["Linear"];case aa.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=vo.Nodes[this.method],a=e.include(s);if(a===vo.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",i,t)}else return e.format(a+"( "+o+" )",i,t)}fromEncoding(e){let t=vo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=vo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},St=vo;St.Nodes={LinearToLinear:new Y(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
+ `)),sRGBToLinear:new Y(["vec4 sRGBToLinear( 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.w );","}"].join(`
4
+ `)),LinearTosRGB:new Y(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
5
+ `))},St.LINEAR_TO_LINEAR="LinearToLinear",St.SRGB_TO_LINEAR="sRGBToLinear",St.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends Y{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};var ld=require("three"),wt=class extends Ae{constructor(e=new ld.Texture,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new yn,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+i+", "+s+" )":l=a+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new St(new Ne("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var W=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var ci=class extends le{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let a=this.value,l=a.build(e,t)+"( ",c=[];if(a.inputs){for(let u=0;u<a.inputs.length;u++){let m=a.inputs[u],p=this.inputs[u]||this.inputs[m.name];c.push(p.build(e,e.getTypeByFormat(m.type)))}l+=c.join(", ")+" )"}return e.format(l,i,t)}};var Dl=class extends le{constructor(e,t,o=Dl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,t)}},At=Dl;At.ADD="+",At.SUB="-",At.MUL="*",At.DIV="/";var Me=class extends le{constructor(e,t=Me.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Me.MIX:case Me.CLAMP:case Me.REFRACT:case Me.SMOOTHSTEP:case Me.FACEFORWARD:return 3;case Me.MIN:case Me.MAX:case Me.MOD:case Me.STEP:case Me.REFLECT:case Me.DISTANCE:case Me.DOT:case Me.CROSS:case Me.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Me.LENGTH:case Me.DISTANCE:case Me.DOT:return"f";case Me.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,u=this.getInputType(e),m=this.getType(e);switch(this.type=m,this.method){case Me.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case Me.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case Me.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Me.STEP:o=this.a.build(e,a===1?"f":u),i=this.b.build(e,u);break;case Me.MIN:case Me.MAX:case Me.MOD:o=this.a.build(e,u),i=this.b.build(e,l===1?"f":u);break;case Me.REFRACT:o=this.a.build(e,u),i=this.b.build(e,u),s=this.c.build(e,"f");break;case Me.MIX:o=this.a.build(e,u),i=this.b.build(e,u),s=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(i=this.b.build(e,u)),this.c&&(s=this.c.build(e,u));break}let p=[];p.push(o),i&&p.push(i),s&&p.push(s);let d=this.getNumInputs(e);if(p.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",m,t)}},de=Me;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var xn=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new ci(xn.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new St(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new St(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new St(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new St(new Ne("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ne("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ci(xn.Nodes.roughnessToMip,[i]),a=new de(s,xn.Nodes.m0,xn.Nodes.cubeUV_maxMipLevel,de.CLAMP),l=new de(a,de.FLOOR),c=new de(a,de.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),m=this.bilinearCubeUV(e,this.value,o,new At(l,new W(1).setReadonly(!0),At.ADD)),p=new de(u,m,c,de.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},vn=xn;vn.Nodes=function(){let e=new gn(`struct TextureCubeUVData {
6
+ vec4 tl;
7
+ vec4 tr;
8
+ vec4 br;
9
+ vec4 bl;
10
+ vec2 f;
11
+ }`),t=new we("float cubeUV_maxMipLevel 8.0",!0),o=new we("float cubeUV_minMipLevel 4.0",!0),i=new we("float cubeUV_maxTileSize 256.0",!0),s=new we("float cubeUV_minTileSize 16.0",!0),a=new Y(`float getFace(vec3 direction) {
12
+ vec3 absDirection = abs(direction);
13
+ float face = -1.0;
14
+ if (absDirection.x > absDirection.z) {
15
+ if (absDirection.x > absDirection.y)
16
+ face = direction.x > 0.0 ? 0.0 : 3.0;
17
+ else
18
+ face = direction.y > 0.0 ? 1.0 : 4.0;
19
+ } else {
20
+ if (absDirection.z > absDirection.y)
21
+ face = direction.z > 0.0 ? 2.0 : 5.0;
22
+ else
23
+ face = direction.y > 0.0 ? 1.0 : 4.0;
24
+ }
25
+ return face;
26
+ }`);a.useKeywords=!1;let l=new Y(`vec2 getUV(vec3 direction, float face) {
27
+ vec2 uv;
28
+ if (face == 0.0) {
29
+ uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
30
+ } else if (face == 1.0) {
31
+ uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
32
+ } else if (face == 2.0) {
33
+ uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
34
+ } else if (face == 3.0) {
35
+ uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
36
+ } else if (face == 4.0) {
37
+ uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
38
+ } else {
39
+ uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
40
+ }
41
+ return 0.5 * (uv + 1.0);
42
+ }`);l.useKeywords=!1;let c=new Y(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
43
+ float face = getFace(direction);
44
+ float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
45
+ mipInt = max(mipInt, cubeUV_minMipLevel);
46
+ float faceSize = exp2(mipInt);
47
+ float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
48
+ vec2 uv = getUV(direction, face) * (faceSize - 1.0);
49
+ vec2 f = fract(uv);
50
+ uv += 0.5 - f;
51
+ if (face > 2.0) {
52
+ uv.y += faceSize;
53
+ face -= 3.0;
54
+ }
55
+ uv.x += face * faceSize;
56
+ if(mipInt < cubeUV_maxMipLevel){
57
+ uv.y += 2.0 * cubeUV_maxTileSize;
58
+ }
59
+ uv.y += filterInt * 2.0 * cubeUV_minTileSize;
60
+ uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
61
+ uv *= texelSize;
62
+ vec4 tl = texture2D(envMap, uv);
63
+ uv.x += texelSize;
64
+ vec4 tr = texture2D(envMap, uv);
65
+ uv.y += texelSize;
66
+ vec4 br = texture2D(envMap, uv);
67
+ uv.x -= texelSize;
68
+ vec4 bl = texture2D(envMap, uv);
69
+ return TextureCubeUVData( tl, tr, br, bl, f );
70
+ }`,[e,a,l,t,o,i,s]);c.useKeywords=!1;let u=new we("float r0 1.0",!0),m=new we("float v0 0.339",!0),p=new we("float m0 -2.0",!0),d=new we("float r1 0.8",!0),f=new we("float v1 0.276",!0),g=new we("float m1 -1.0",!0),x=new we("float r4 0.4",!0),y=new we("float v4 0.046",!0),v=new we("float m4 2.0",!0),P=new we("float r5 0.305",!0),S=new we("float v5 0.016",!0),b=new we("float m5 3.0",!0),E=new we("float r6 0.21",!0),w=new we("float v6 0.0038",!0),h=new we("float m6 4.0",!0),_=[u,m,p,d,f,g,x,y,v,P,S,b,E,w,h],N=new Y(`float roughnessToMip(float roughness) {
71
+ float mip = 0.0;
72
+ if (roughness >= r1) {
73
+ mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
74
+ } else if (roughness >= r4) {
75
+ mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
76
+ } else if (roughness >= r5) {
77
+ mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
78
+ } else if (roughness >= r6) {
79
+ mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
80
+ } else {
81
+ mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
82
+ }
83
+ return mip;
84
+ }`,_);return{bilinearCubeUV:c,roughnessToMip:N,m0:p,cubeUV_maxMipLevel:t}}();var bo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??bo.VIEW}getShared(){return this.scope===bo.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let a;switch(this.scope){case bo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case bo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case bo.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),t)}},at=bo;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";tt.addKeyword("viewNormal",function(){return new at(at.VIEW)});tt.addKeyword("localNormal",function(){return new at(at.NORMAL)});tt.addKeyword("worldNormal",function(){return new at(at.WORLD)});var yr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??yr.LOCAL}getType(){switch(this.scope){case yr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case yr.LOCAL:case yr.WORLD:return!1}return!0}generate(e,t,o,i,s){let a;switch(this.scope){case yr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case yr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case yr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case yr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},Mt=yr;Mt.LOCAL="local",Mt.WORLD="world",Mt.VIEW="view",Mt.PROJECTION="projection";tt.addKeyword("position",function(){return new Mt});tt.addKeyword("worldPosition",function(){return new Mt(Mt.WORLD)});tt.addKeyword("viewPosition",function(){return new Mt(Mt.VIEW)});var Kt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Kt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Kt.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Kt.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new Mt(Mt.VIEW).build(e,"v3"),u=a?a.build(e,"f"):void 0,m=`reflect( -normalize( ${c} ), ${l} )`;u&&(m=`normalize( mix( ${m}, ${l}, ${u} * ${u} ) )`);let p=`inverseTransformDirection( ${m}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Kt.CUBE:{let s=new Kt(Kt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Kt.SPHERE:{let s=new Kt(Kt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},xr=Kt;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var la=class extends le{constructor(e=new wt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new vn(this.value,t??new xr(xr.VECTOR),o),this.irradianceNode=new vn(this.value,new at(at.WORLD),new W(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var cd=require("three");var ca=class extends Ae{constructor(e=new cd.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new xr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new St(new Ne("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,t)}};var ud=["x","y","z","w"],tb=["float","vec2","vec3","vec4"],rb={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},ob={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},ua=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
85
+ `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
86
+ // NOTE: Include Spline's blending modes. This could be part of BlendNode
87
+ #define SPE_BLENDING_NORMAL 0
88
+ #define SPE_BLENDING_MULTIPLY 1
89
+ #define SPE_BLENDING_SCREEN 2
90
+ #define SPE_BLENDING_OVERLAY 3
6
91
 
7
- vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
92
+ vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
93
+ return mix( a, b, alpha );
94
+ }
8
95
 
9
- vec4 tmp = texture2D( tex, uvs );
96
+ vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
97
+ return mix( a, a * b, alpha );
98
+ }
10
99
 
11
- vec3 col = tmp.rgb;
12
- float lalpha = alpha * tmp.a;
13
- ${this.side.value===0?"":`lalpha *= step(0.0, ${this.side.value===2?"-1.0 * ":""}dot(vObjectNormal, mat * ${a}));`}
100
+ vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
101
+ vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
102
+ return mix( a, tmp, alpha );
103
+ }
14
104
 
15
- if ( crop > 0.5 ) {
16
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
17
- lalpha = 0.0;
18
- }
19
- }
20
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
21
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
22
- return col;
23
- }`);n=e.include(l);break;default:n=e.include(ai.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.getTexture(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(n+"("+s.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.texture.copy(e.texture),this.textureSize=e.textureSize.clone(),this.crop=e.crop.clone(),this.projection=e.projection.clone(),this.axis=e.axis.clone(),this.size=e.size.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this}},si=ai;si.Nodes=function(){let e=new K(`
24
- vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
25
- vec3 posN = normalize(position);
26
- float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
27
- float scaledHeight = position.y / (size.y * 0.5);
28
- float v = (scaledHeight / 2.) + .5;
105
+ vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
106
+ vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
107
+ return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
108
+ }
29
109
 
30
- vec2 calculatedUv = vec2(u,v);
31
- vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
110
+ vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
111
+ if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
112
+ else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
113
+ else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
114
+ else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
115
+ return vec3( 1.0 );
116
+ }
117
+ `,"#include <packing>","#include <common>"].join(`
118
+ `),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
119
+ `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
120
+ accumAlpha += (1.0 - accumAlpha) * alpha;
121
+ }`,""].join(`
122
+ `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.material=r,this.renderer=e,this.requires.lights=r.lights,this.requires.fog=r.fog,this.mergeDefines(r.defines),this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
123
+ `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
124
+ `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
125
+ `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
126
+ `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",s=""){let a=this.getVars(o),l=a[r];if(!l){let c=a.length;l={name:t||"node"+i+c+(s?"_"+s:""),type:e},a.push(l),a[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
127
+ `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],a=s.type,l=s.name,c=s.size,u=this.getFormatByType(a);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
128
+ `:t+=e+" "+u+" "+l+`;
129
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof st?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new li({type:e,size:t.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(c),a[r].push(c),a[r][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new li({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:t,needsUpdate:i});return a.list.push(c),a[r].push(c),a[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?tt.get(r):r,this.context.include===!1)return r.name;r instanceof Y?o=this.includes.functions:r instanceof we?o=this.includes.consts:r instanceof gn&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof Y&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return tb[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case Qt.CubeReflectionMapping:case Qt.CubeRefractionMapping:return new ca(t);case Qt.CubeUVReflectionMapping:return new la(new wt(t));default:return new wt(t)}else{if(t.isVector2)return new rt(t);if(t.isVector3)return new pt(t);if(t.isVector4)return new Ht(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return rb[r]||r}getFormatByType(r){return ob[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return ud[r]}getIndexByElement(r){return ud.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=Qt.LinearEncoding,e===Qt.LinearEncoding&&this.context.gamma&&(e=Qt.sRGBEncoding),e}};var be=require("three");var Ie=class extends Ae{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof ut?e:new ut(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,t)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,t))}generateReadonly(e,t,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var ge=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,a){return e.format(this.value.toString(),i,t)}};var pa=require("three");var eo=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ie(5855577),this.shadingAlpha=new W(1),this.shadingBlend=new ge(0)}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(pa.UniformsUtils.merge([pa.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
130
+ `));let i=["#include <beginnormal_vertex>",`
131
+ #if !defined( USE_LAYER_DISPLACE )
132
+ #include <defaultnormal_vertex>
133
+ #endif
32
134
 
33
- vec2 df = fwidth(uvs);
34
- if(df.x > 0.5) df.x = 0.;
135
+ vec3 displaced_position = position;
136
+ vec3 displaced_normal = normal;
35
137
 
36
- #ifdef GL_EXT_shader_texture_lod
37
- vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
38
- #else
39
- vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
138
+ #if defined( USE_LAYER_DISPLACE )
139
+ vec3 transformed;
140
+ vec3 transformedNormal;
141
+ #endif
142
+ `,"#include <normal_vertex>",`
143
+ #if !defined( USE_LAYER_DISPLACE )
144
+ #include <begin_vertex>
145
+ #endif /* !USE_LAYER_DISPLACE */
146
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
147
+ `)}else{this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
148
+ `));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),t=a.join(`
149
+ `)}return t}};var ui=require("three");var ot=class extends Ae{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var pi=class extends st{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ie(5855577),this.emissive=new Ie(0),this.emissiveIntensity=new W(1),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new W(1),this.shadingBlend=new ge(0)}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(ui.UniformsUtils.merge([ui.UniformsLib.fog,ui.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
150
+ `));let i=["#include <beginnormal_vertex>",`
151
+ #ifndef USE_LAYER_DISPLACE
152
+ #include <defaultnormal_vertex>
40
153
  #endif
41
154
 
42
- vec3 col = tmp.rgb;
43
- float lalpha = alpha * tmp.a;
44
- if ( crop > 0.5 ) {
45
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
46
- lalpha = 0.0;
47
- }
155
+ vec3 displaced_position = position;
156
+ vec3 displaced_normal = normal;
157
+
158
+ #ifdef USE_LAYER_DISPLACE
159
+ vec3 transformed;
160
+ vec3 transformedNormal;
161
+ #endif
162
+ `,"#include <normal_vertex>",`
163
+ #ifndef USE_LAYER_DISPLACE
164
+ #include <begin_vertex>
165
+ #endif
166
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
167
+ vec3 diffuse = vec3( 1.0 );
168
+ GeometricContext geometry;
169
+ geometry.position = mvPosition.xyz;
170
+ geometry.normal = normalize( transformedNormal );
171
+ geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
172
+ GeometricContext backGeometry;
173
+ backGeometry.position = geometry.position;
174
+ backGeometry.normal = -geometry.normal;
175
+ backGeometry.viewDir = geometry.viewDir;
176
+ vLightFront = vec3( 0.0 );
177
+ vIndirectFront = vec3( 0.0 );
178
+ #ifdef DOUBLE_SIDED
179
+ vLightBack = vec3( 0.0 );
180
+ vIndirectBack = vec3( 0.0 );
181
+ #endif
182
+ IncidentLight directLight;
183
+ float dotNL;
184
+ vec3 directLightColor_Diffuse;
185
+ vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
186
+ vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
187
+ #ifdef DOUBLE_SIDED
188
+ vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
189
+ vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
190
+ #endif
191
+ #if NUM_POINT_LIGHTS > 0
192
+ #pragma unroll_loop_start
193
+ for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
194
+ getPointLightInfo( pointLights[ i ], geometry, directLight );
195
+ dotNL = dot( geometry.normal, directLight.direction );
196
+ directLightColor_Diffuse = directLight.color;
197
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
198
+ #ifdef DOUBLE_SIDED
199
+ vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
200
+ #endif
201
+ }
202
+ #pragma unroll_loop_end
203
+ #endif
204
+ #if NUM_SPOT_LIGHTS > 0
205
+ #pragma unroll_loop_start
206
+ for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
207
+ getSpotLightInfo( spotLights[ i ], geometry, directLight );
208
+ dotNL = dot( geometry.normal, directLight.direction );
209
+ directLightColor_Diffuse = directLight.color;
210
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
211
+ #ifdef DOUBLE_SIDED
212
+ vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
213
+ #endif
214
+ }
215
+ #pragma unroll_loop_end
216
+ #endif
217
+ #if NUM_DIR_LIGHTS > 0
218
+ #pragma unroll_loop_start
219
+ for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
220
+ getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
221
+ dotNL = dot( geometry.normal, directLight.direction );
222
+ directLightColor_Diffuse = directLight.color;
223
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
224
+ #ifdef DOUBLE_SIDED
225
+ vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
226
+ #endif
227
+ }
228
+ #pragma unroll_loop_end
229
+ #endif
230
+ #if NUM_HEMI_LIGHTS > 0
231
+ #pragma unroll_loop_start
232
+ for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
233
+ vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
234
+ #ifdef DOUBLE_SIDED
235
+ vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
236
+ #endif
237
+ }
238
+ #pragma unroll_loop_end
239
+ #endif
240
+ `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
241
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
242
+ `));let m=["#include <normal_fragment_begin>",`
243
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
244
+ vec3 viewdx = dFdx(vViewPosition);
245
+ vec3 viewdy = dFdy(vViewPosition);
246
+ vec3 faceNormal = normalize(cross(viewdx, viewdy));
247
+ bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
248
+ `,"#include <clipping_planes_fragment>"];m.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&m.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),m.push(`
249
+ if (outgoingLight != diffuseColor) {
250
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
251
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
252
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
48
253
  }
49
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
50
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
51
- return col;
52
- }
53
- `),r=new K(`
54
- vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
55
- vec3 posN = normalize(vPosition);
56
- float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
57
- float v = 0.5 + asin(posN.y) / 3.1415;
254
+ `),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
255
+ `)}return t}};var mi=require("three");var ma=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ie(5855577),this.specular=new Ie(1118481),this.shininess=new W(30),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new W(1),this.shadingBlend=new ge(0)}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(mi.UniformsUtils.merge([mi.UniformsLib.fog,mi.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
256
+ `));let i=["#include <beginnormal_vertex>",`
257
+ #ifndef USE_LAYER_DISPLACE
258
+ #include <defaultnormal_vertex>
259
+ #endif
58
260
 
59
- vec2 calculatedUv = vec2(u,v);
60
- vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
61
261
 
62
- vec2 df = fwidth(uvs);
63
- if(df.x > 0.5) df.x = 0.;
64
- #ifdef GL_EXT_shader_texture_lod
65
- vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
66
- #else
67
- vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
68
- #endif
262
+ vec3 displaced_position = position;
263
+ vec3 displaced_normal = normal;
69
264
 
70
- vec3 col = tmp.rgb;
71
- float lalpha = alpha * tmp.a;
72
- if ( crop > 0.5 ) {
73
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
74
- lalpha = 0.0;
75
- }
265
+ #ifdef USE_LAYER_DISPLACE
266
+ vec3 transformed;
267
+ vec3 transformedNormal;
268
+ #endif
269
+ `,"#include <normal_vertex>",`
270
+ #ifndef USE_LAYER_DISPLACE
271
+ #include <begin_vertex>
272
+ #endif
273
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
274
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
275
+ `));let m=["#include <normal_fragment_begin>",`
276
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
277
+ vec3 viewdx = dFdx(vViewPosition);
278
+ vec3 viewdy = dFdy(vViewPosition);
279
+ vec3 faceNormal = normalize(cross(viewdx,viewdy));
280
+ if (dot(normal, faceNormal) < 0.0) {
281
+ normal *= -1.0;
76
282
  }
77
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
78
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
79
- return col;
80
- }
81
- `),o=new K(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
283
+ `," BlinnPhongMaterial material;"];m.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("material.diffuseColor = diffuseColor;"),m.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),m.push(`
284
+ if (outgoingLight != diffuseColor) {
285
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
286
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
287
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
288
+ }
289
+ `),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
290
+ `)}return t}};var bn=require("three");var di=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ie(5855577),this.roughness=new W(.3),this.metalness=new W(0),this.reflectivity=new W(.5),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new W(1),this.shadingBlend=new ge(0)}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(bn.UniformsUtils.merge([bn.UniformsLib.fog,bn.UniformsLib.lights])),bn.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
291
+ `));let i=["#include <beginnormal_vertex>",`
292
+ #if !defined( USE_LAYER_DISPLACE )
293
+ #include <defaultnormal_vertex>
294
+ #endif
82
295
 
83
- vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
84
- vec4 tmp = texture2D( tex, uvs );
296
+ vec3 displaced_position = position;
297
+ vec3 displaced_normal = normal;
85
298
 
86
- vec3 col = tmp.rgb;
299
+ #if defined( USE_LAYER_DISPLACE )
300
+ vec3 transformed;
301
+ vec3 transformedNormal;
302
+ #endif
303
+ `,"#include <normal_vertex>",`
304
+ #if !defined( USE_LAYER_DISPLACE )
305
+ #include <begin_vertex>
306
+ #endif /* !USE_LAYER_DISPLACE */
307
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
308
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,m=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=m!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
309
+ `));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
310
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
311
+ vec3 viewdx = dFdx(vViewPosition);
312
+ vec3 viewdy = dFdy(vViewPosition);
313
+ vec3 faceNormal = normalize(cross(viewdx,viewdy));
314
+ if (dot(normal, faceNormal) < 0.0) {
315
+ normal *= -1.0;
316
+ }
317
+ `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),m&&d.push(m.code,"#ifdef ALPHATEST"," if ( "+m.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),p?d.push(p.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+p.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
318
+ if (outgoingLight != diffuseColor) {
319
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
320
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
321
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
322
+ }
323
+ `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),m?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${m.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
324
+ `)}return t}};var fi=require("three");var hi=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ie(5855577),this.specular=new Ie(1118481),this.shininess=new W(30),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new W(1),this.shadingBlend=new ge(0)}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(fi.UniformsUtils.merge([fi.UniformsLib.fog,fi.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
325
+ `));let i=["#include <beginnormal_vertex>",`
326
+ #ifndef USE_LAYER_DISPLACE
327
+ #include <defaultnormal_vertex>
328
+ #endif
87
329
 
88
- float lalpha = alpha * tmp.a;
89
- if ( crop > 0.5 ) {
90
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
91
- lalpha = 0.0;
330
+ vec3 displaced_position = position;
331
+ vec3 displaced_normal = normal;
332
+
333
+ #ifdef USE_LAYER_DISPLACE
334
+ vec3 transformed;
335
+ vec3 transformedNormal;
336
+ #endif
337
+ `,"#include <normal_vertex>",`
338
+ #ifndef USE_LAYER_DISPLACE
339
+ #include <begin_vertex>
340
+ #endif
341
+ `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
342
+ `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
343
+ varying vec3 vViewPosition;
344
+ struct ToonMaterial {
345
+ vec3 diffuseColor;
346
+ vec3 specularColor;
347
+ float specularShininess;
348
+ float specularStrength;
349
+ };
350
+ void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
351
+ vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
352
+
353
+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
354
+ reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
92
355
  }
356
+ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
357
+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
358
+ }
359
+ #define RE_Direct RE_Direct_Toon
360
+ #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
361
+ #define Material_LightProbeLOD( material ) (0)
362
+ `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
363
+ `));let m=["#include <normal_fragment_begin>",`
364
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
365
+ vec3 viewdx = dFdx(vViewPosition);
366
+ vec3 viewdy = dFdy(vViewPosition);
367
+ vec3 faceNormal = normalize(cross(viewdx,viewdy));
368
+ if (dot(normal, faceNormal) < 0.0) {
369
+ normal *= -1.0;
93
370
  }
94
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
95
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
96
- return col;
97
- }`);return{cylindrical:e,spherical:r,uv:o}}();var zl=class extends le{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=n,this.factor=s,this.alpha=a,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(zl.Nodes.fresnel),n=[];return n.push(this.color.build(e,"c")),n.push(this.bias.build(e,"f")),n.push(this.scale.build(e,"f")),n.push(this.intensity.build(e,"f")),n.push(this.factor.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.color=e.color.clone(),this.bias=e.bias.clone(),this.scale=e.scale.clone(),this.intensity=e.intensity.clone(),this.factor=e.factor.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},li=zl;li.Nodes=function(){return{fresnel:new K(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
98
- float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
99
-
100
- float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
101
- calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
102
- accumAlpha += (1.0 - accumAlpha) * lalpha;
103
- return color;
104
- }`)}}();var ib=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Vl=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Vl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,s){this.src=e||"";let a,l,c="",h=ib.exec(e);this.useDefine=s??this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Ne=Vl;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var ci=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(ci||{}),ft=function(){let t=new K(`vec3 random3(vec3 c) {
371
+ `," ToonMaterial material;"];m.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("material.diffuseColor = diffuseColor;"),m.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),m.push(`
372
+ if (outgoingLight != diffuseColor) {
373
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
374
+ accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
375
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
376
+ }
377
+ `),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
378
+ `)}return t}};var to=class extends Ae{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};var pd=require("three");var Sn=class extends Ae{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new pd.Matrix3}generateReadonly(e,t,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var El=require("three");var Jt=class extends Ae{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof El.Vector4?new Array(e).fill(t):new Array(e).fill(new El.Vector4(0))}};var gi=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(gi||{}),ht=function(){let r=new Y(`vec3 random3(vec3 c) {
105
379
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
106
380
  vec3 r;
107
381
  r.z = fract(512.0*j);
@@ -110,7 +384,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
110
384
  j *= .125;
111
385
  r.y = fract(512.0*j);
112
386
  return r-0.5;
113
- }`),e=new K(`float simplex3d(vec3 p) {
387
+ }`),e=new Y(`float simplex3d(vec3 p) {
114
388
  vec3 s = floor(p + dot(p, vec3(F3)));
115
389
  vec3 x = p - s + dot(s, vec3(G3));
116
390
 
@@ -141,7 +415,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
141
415
  d *= w;
142
416
 
143
417
  return dot(d, vec4(52.0));
144
- }`,[t]);e.keywords.F3=new Ne("float F3 0.3333333"),e.keywords.G3=new Ne("float G3 0.1666667");let r=new K(`float simplex3dFractal(vec3 m) {
418
+ }`,[r]);e.keywords.F3=new we("float F3 0.3333333"),e.keywords.G3=new we("float G3 0.1666667");let t=new Y(`float simplex3dFractal(vec3 m) {
145
419
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
146
420
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
147
421
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -149,7 +423,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
149
423
  + 0.2666667 * simplex3d(2.0 * m * rot2)
150
424
  + 0.1333333 * simplex3d(4.0 * m * rot3)
151
425
  + 0.0666667 * simplex3d(8.0 * m);
152
- }`,[e]),o=new K("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),n=new K("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new K(`float simplexAshima(vec3 v) {
426
+ }`,[e]),o=new Y("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new Y("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new Y(`float simplexAshima(vec3 v) {
153
427
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
154
428
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
155
429
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -194,7 +468,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
194
468
  m = m * m;
195
469
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
196
470
  dot(p2,x2), dot(p3,x3) ) );
197
- }`,[o,n]),a=new K("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new K("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new K(`float noise(vec3 p){
471
+ }`,[o,i]),a=new Y("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new Y("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new Y(`float noise(vec3 p){
198
472
  vec3 a = floor(p);
199
473
  vec3 d = p - a;
200
474
  d = d * d * (3.0 - 2.0 * d);
@@ -209,7 +483,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
209
483
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
210
484
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
211
485
  return o4.y * d.y + o4.x * (1.0 - d.y);
212
- }`,[l]),h=new K(`float fbm(vec3 x) {
486
+ }`,[l]),u=new Y(`float fbm(vec3 x) {
213
487
  float v = 0.0;
214
488
  float a = 0.5;
215
489
  vec3 shift = vec3(100);
@@ -219,7 +493,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
219
493
  a *= 0.5;
220
494
  }
221
495
  return v;
222
- }`,[c]);h.keywords.NUM_OCTAVES=new Ne(`int NUM_OCTAVES ${5}`);let p=new K("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),u=new K(`float perlin(vec3 P){
496
+ }`,[c]);u.keywords.NUM_OCTAVES=new we(`int NUM_OCTAVES ${5}`);let m=new Y("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new Y(`float perlin(vec3 P){
223
497
  vec3 Pi0 = floor(P);
224
498
  vec3 Pi1 = Pi0 + vec3(1.0);
225
499
  Pi0 = mod(Pi0, 289.0);
@@ -278,264 +552,67 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
278
552
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
279
553
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
280
554
  return 2.2 * n_xyz;
281
- }`,[o,n,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:u}}();var Fl=class extends le{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=n,this.noiseScale=s,this.offset=a,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Fl.Nodes.rainbow),n=[];return n.push(this.filmThickness.build(e,"f")),n.push(this.movement.build(e,"f")),n.push(this.wavelengths.build(e,"v3")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.filmThickness=e.filmThickness.clone(),this.movement=e.movement.clone(),this.wavelengths=e.wavelengths.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},hi=Fl;hi.Nodes=function(){let e=new K(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
555
+ }`,[o,i,m]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:u,perlin:p}}();var yi=class extends le{constructor(e,t,o,i,s,a,l,c,u,m,p,d){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=u,this.colorD=m,this.alpha=p,this.noiseType=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(gi)[this.noiseType.value],l=new Y(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
556
+ vec3 st = position / size;
557
+ st /= scale;
558
+ vec3 q = vec3(${a}(st),
559
+ ${a}(st + vec3(1.0)),
560
+ ${a}(st + vec3(1.0)));
561
+ vec3 r = vec3(${a}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
562
+ ${a}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
563
+ ${a}(st * q));
564
+ float f = ${a}(st + r);
565
+ vec4 color;
566
+ color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
567
+ color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
568
+ color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
569
+
570
+ float lalpha = alpha * color.a;
571
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
572
+
573
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
574
+ return clamp(color, 0.0, 1.0).rgb;
575
+ }`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),c=e.include(l),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(c+"("+u.join(",")+")",this.getType(e),t)}};yi.numOctaves=5;var Bl=class extends le{constructor(e,t,o,i,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.alpha=a,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Bl.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},xi=Bl;xi.Nodes=function(){return{fresnel:new Y(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
576
+ float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
577
+
578
+ float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
579
+ calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
580
+ accumAlpha += (1.0 - accumAlpha) * lalpha;
581
+ return color;
582
+ }`)}}();var Gl=class extends le{constructor(e,t,o,i,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Gl.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},vi=Gl;vi.Nodes=function(){let e=new Y(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
282
583
  vec3 st = position / noiseScale;
283
584
  vec3 q = vec3(simplex3d(st),
284
585
  simplex3d(st + vec3(1.0)),
285
586
  simplex3d(st + vec3(1.0)));
286
587
 
287
588
  vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
288
- simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
289
- simplex3d(st * q));
290
-
291
- float noise = simplex3d(st + r);
292
-
293
- return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
294
- }`,[ft.simplex]);return{rainbow:new K(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
295
- vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
296
-
297
- float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
298
- float lalpha = alpha * rainbowContribution;
299
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
300
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
301
-
302
- return res;
303
- }`,[e])}}();var Ul=class extends le{constructor(e,r,o,n,s,a,l,c,h,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=l,this.shadowColor=c,this.offset=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Ul.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.positioning=e.positioning.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.source=e.source.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.shadowColor=e.shadowColor.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},pi=Ul;pi.Nodes=function(){let e=new K(`float rand(float n) {
304
- return fract(sin(n) * 43758.5453123);
305
- }`),r=new K(`float hash1(float p) {
306
- p = fract(p * 0.011);
307
- p *= p + 7.5;
308
- p *= p + p;
309
- return fract(p);
310
- }`),o=new K(`float valueNoise(vec3 x) {
311
- const vec3 step = vec3(110, 241, 171);
312
-
313
- vec3 i = floor(x);
314
- vec3 f = fract(x);
315
-
316
- // For performance, compute the base input to a 1D hash from the integer part of the argument and the
317
- // incremental change to the 1D based on the 3D -> 1D wrapping
318
- float n = dot(i, step);
319
-
320
- vec3 u = f * f * (3.0 - 2.0 * f);
321
- return mix(mix(mix( hash1(n + dot(step, vec3(0, 0, 0))), hash1(n + dot(step, vec3(1, 0, 0))), u.x),
322
- mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
323
- mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
324
- mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
325
- }`,[r]),n=new K(`vec3 hash3(vec3 x) {
326
- x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
327
- dot(x,vec3(269.5, 183.3, 246.1)),
328
- dot(x,vec3(113.5, 271.9, 124.6)));
329
-
330
- return fract(sin(x)*43758.5453123);
331
- }`),s=new K(`vec3 voronoiNoise(in vec3 x)
332
- {
333
- vec3 p = floor(x);
334
- vec3 f = fract(x);
335
-
336
- float id = 0.0;
337
- vec2 res = vec2(100.0);
338
-
339
- for(int k=-1; k<=1; k++)
340
- for(int j=-1; j<=1; j++)
341
- for(int i=-1; i<=1; i++)
342
- {
343
- vec3 b = vec3(float(i), float(j), float(k));
344
-
345
- // Comment out the "+ hash(p + b);" part below to get "square" cells
346
- vec3 r = vec3(b) - f + hash3(p + b);
347
- float d = dot(r, r);
348
-
349
- if (d < res.x)
350
- {
351
- id = dot(p + b, vec3(1.0, 57.0, 113.0));
352
- res = vec2(d, res.x);
353
- }
354
- else if (d < res.y)
355
- {
356
- res.y = d;
357
- }
358
- }
359
-
360
- return vec3(sqrt(res), abs(id));
361
- }
362
- `,[n]);return{toon:new K(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
363
- float t = 0.0;
364
- float shadow = 1.0;
365
-
366
- if (positioning == 0) {
367
-
368
- // Can't do this mode if lighting is "none"
369
- #if (defined(PHONG) || defined(LAMBERT) || defined(STANDARD))
370
-
371
- // Algorithm from Chapter 10 of Graphics Shaders
372
- const vec3 weights = vec3(0.2125, 0.7154, 0.0721);
373
- vec3 lpos;
374
- vec3 l;
375
- float dproduct;
376
-
377
- #if (NUM_POINT_LIGHTS > 0)
378
-
379
- #pragma unroll_loop_start
380
- for (int i = 0; i < NUM_POINT_LIGHTS; i++) {
381
- // Light positions are in view-space for some reason?
382
- lpos = (inverse(viewMatrix) * vec4(pointLights[i].position, 1.0)).xyz;
383
- l = normalize(lpos - worldPosition);
384
-
385
- dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
386
-
387
- // TODO: we want to use "intensity" but it isn't available in the shader code
388
- //dproduct += dot(pointLights[i].color, weights);
389
-
390
- t = max(t, dproduct);
391
-
392
- // Accumulate shadow contribution
393
- #if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS)
394
- PointLightShadow pointLightShadow = pointLightShadows[i];
395
- shadow *= getPointShadow(
396
- pointShadowMap[i],
397
- pointLightShadow.shadowMapSize,
398
- pointLightShadow.shadowBias,
399
- pointLightShadow.shadowRadius,
400
- vPointShadowCoord[i],
401
- pointLightShadow.shadowCameraNear,
402
- pointLightShadow.shadowCameraFar);
403
- #endif
404
- }
405
- #pragma unroll_loop_end
406
-
407
- #endif
408
-
409
- #if NUM_DIR_LIGHTS > 0
410
-
411
- #pragma unroll_loop_start
412
- for (int i = 0; i < NUM_DIR_LIGHTS; i++) {
413
- // Use the direction vector for directional lights instead
414
- l = (inverse(viewMatrix) * vec4(directionalLights[i].direction, 0.0)).xyz;
415
-
416
- dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
417
- t = max(t, dproduct);
418
-
419
- // Accumulate shadow contribution
420
- #if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS)
421
- DirectionalLightShadow directionalLightShadow = directionalLightShadows[i];
422
- shadow *= getShadow(
423
- UNROLLED_LOOP_INDEX,
424
- directionalShadowMap[i],
425
- directionalLightShadow.shadowMapSize,
426
- directionalLightShadow.shadowBias,
427
- directionalLightShadow.shadowRadius,
428
- vDirectionalShadowCoord[i]);
429
- #endif
430
- }
431
- #pragma unroll_loop_end
432
-
433
- #endif
434
-
435
- #if NUM_SPOT_LIGHTS > 0
436
-
437
- #pragma unroll_loop_start
438
- for (int i = 0; i < NUM_SPOT_LIGHTS; i++) {
439
- lpos = (inverse(viewMatrix) * vec4(spotLights[i].position, 1.0)).xyz;
440
- l = normalize(lpos - worldPosition);
441
-
442
- dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
443
- t = max(t, dproduct);
444
-
445
- // Accumulate shadow contribution
446
- #if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS)
447
- SpotLightShadow spotLightShadow = spotLightShadows[i];
448
- shadow *= getShadow(
449
- UNROLLED_LOOP_INDEX,
450
- spotShadowMap[i],
451
- spotLightShadow.shadowMapSize,
452
- spotLightShadow.shadowBias,
453
- spotLightShadow.shadowRadius,
454
- vSpotShadowCoord[i]);
455
- #endif
456
- }
457
- #pragma unroll_loop_end
458
-
459
- #endif
460
-
461
- t = clamp(t, 0.0, 1.0);
462
-
463
- #endif
464
-
465
- } else if (positioning == 1) {
466
-
467
- vec3 origin = mix(position, worldPosition, float(isWorldSpace));
468
- vec3 direction = normalize(source - origin);
469
- t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
470
-
471
- } else {
472
-
473
- vec3 origin = worldPosition;
474
- vec3 source = cameraPosition - offset;
475
- vec3 direction = normalize(source - origin);
476
- t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
477
-
478
- }
479
-
480
- if (noiseStrength > 0.0) {
481
- // Distort with noise
482
- vec3 st = position / noiseScale;
483
-
484
- // Voronoi "smooth" noise
485
- float noise = 1.0 - voronoiNoise(st).x;
486
-
487
- // Voronoi cellular noise
488
- //float noise = 1.0 - rand(voronoiNoise(st).z);
489
-
490
- // Position warp noise
491
- // vec3 offset = vec3(
492
- // simplex3d(st),
493
- // simplex3d(st + vec3(111.1, 143.89, 217.19)),
494
- // simplex3d(st + vec3(171.1, 247.89, 117.23))
495
- // );
496
- // st += offset;
497
- // float noise = valueNoise(st);
498
-
499
- t += noise * noiseStrength;
500
- }
501
-
502
- t = clamp(t, 0.0, 1.0);
503
-
504
- // Compute ramp color
505
- float p;
506
- vec4 color = colors[0];
507
- for (int i = 1; i < COLORS_MAX; i++) {
508
- p = clamp((t - steps[i-1]) / (steps[i] - steps[i-1]), 0.0, 1.0);
509
- color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
510
- }
511
-
512
- // Incorporate custom shadow color
513
- if (positioning == 0) {
514
-
515
- vec3 blendedShadow = mix(color.rgb, shadowColor.rgb, shadowColor.a);
516
- color.rgb = mix(blendedShadow, color.rgb, shadow);
517
-
518
- }
589
+ simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
590
+ simplex3d(st * q));
519
591
 
520
- // Accumulate alpha as usual
521
- float lalpha = alpha * color.a;
522
- calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
523
- accumAlpha += (1.0 - accumAlpha) * lalpha;
592
+ float noise = simplex3d(st + r);
524
593
 
525
- return color.xyz;
594
+ return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
595
+ }`,[ht.simplex]);return{rainbow:new Y(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
596
+ vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
597
+
598
+ float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
599
+ float lalpha = alpha * rainbowContribution;
600
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
601
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
526
602
 
527
- }`,[ft.simplex,e,o,s])}}();var jl=class extends le{constructor(e,r,o,n,s,a,l,c,h,p,u,d,m,g,x,y){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=h,this.positionalLines=p,this.compensation=u,this.resolution=d,this.normalMap=m,this.depthMap=g,this.pixelRatio=x,this.alpha=y,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),n=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(n,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
603
+ return res;
604
+ }`,[e])}}();var Rl=class extends le{constructor(e,t,o,i,s,a,l,c,u,m,p,d,f,g,x,y){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=m,this.compensation=p,this.resolution=d,this.normalMap=f,this.depthMap=g,this.pixelRatio=x,this.alpha=y,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
528
605
  vID = randomColor.r;
529
606
  if (${s}) {
530
607
  vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
531
608
  vec3 ${l}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal);
532
- vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${n} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${a};
609
+ vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${a};
533
610
  ${l}_clipPosition.xy += ${l}_offset;
534
611
  // TODO(MAX): To handle multiple outline layers, we only want to extrude
535
612
  // if this offset is the biggest of all the potential offsets
536
613
  gl_Position = ${l}_clipPosition;
537
614
  }
538
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(jl.Nodes.outline),n=[];return n.push(this.outlineColor.build(e,"c")),n.push(this.contourColor.build(e,"c")),n.push(this.outlineWidth.build(e,"f")),n.push(this.contourWidth.build(e,"f")),n.push(this.contourThreshold.build(e,"f")),n.push(this.outlineThreshold.build(e,"f")),n.push(this.contourFrequency.build(e,"f")),n.push(this.outlineSmoothing.build(e,"f")),n.push(this.contourDirection.build(e,"v3")),n.push(this.positionalLines.build(e,"b")),n.push(this.resolution.build(e,"v2")),n.push(this.normalMap.getTexture(e,"t")),n.push(this.depthMap.getTexture(e,"t")),n.push(this.pixelRatio.build(e,"f")),n.push(this.compensation.build(e,"b")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}copy(e){return super.copy(e),this.outlineColor=e.outlineColor.clone(),this.contourColor=e.contourColor.clone(),this.outlineWidth=e.outlineWidth.clone(),this.contourWidth=e.contourWidth.clone(),this.contourThreshold=e.contourThreshold.clone(),this.outlineThreshold=e.outlineThreshold.clone(),this.contourFrequency=e.contourFrequency.clone(),this.outlineSmoothing=e.outlineSmoothing.clone(),this.contourDirection=e.contourDirection.clone(),this.positionalLines=e.positionalLines.clone(),this.compensation=e.compensation.clone(),this.alpha=e.alpha.clone(),this.normalMap=e.normalMap,this.depthMap=e.depthMap,this.resolution=e.resolution,this.pixelRatio=e.pixelRatio,this.calpha=e.calpha,this}},ui=jl;ui.Nodes=function(){let e=new K(`
615
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Rl.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},bi=Rl;bi.Nodes=function(){let e=new Y(`
539
616
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
540
617
  {
541
618
  vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
@@ -636,7 +713,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
636
713
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
637
714
  return edgeNormal;
638
715
  }
639
- `);return{outline:new K(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
716
+ `);return{outline:new Y(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
640
717
  vec3 result = outlineColor;
641
718
  float resultAlpha = 0.0;
642
719
 
@@ -675,11 +752,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
675
752
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
676
753
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
677
754
  return result;
678
- }`,[e])}}();var kl=class extends le{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=n,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(kl.Nodes.transmission),n=[];return n.push(this.thickness.build(e,"f")),n.push(this.ior.build(e,"f")),n.push(this.roughness.build(e,"f")),n.push(this.transmissionSamplerSize.build(e,"v2")),n.push(this.transmissionSamplerMap.getTexture(e,"t")),n.push(this.transmissionDepthMap.getTexture(e,"t")),n.push(this.aspectRatio.build(e,"v2")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(this),this.thickness=e.thickness.clone(),this.ior=e.ior.clone(),this.roughness=e.roughness.clone(),this.transmissionSamplerSize=e.transmissionSamplerSize.clone(),this.transmissionSamplerMap=e.transmissionSamplerMap,this.transmissionDepthMap=e.transmissionDepthMap,this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},di=kl;di.Nodes=function(){let e=new K(`
755
+ }`,[e])}}();var zl=class extends le{constructor(e,t,o,i,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(zl.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Si=zl;Si.Nodes=function(){let e=new Y(`
679
756
  float gaussian(vec2 i) {
680
757
  const float sigma = float(NUM_SAMPLES) * .25;
681
758
  return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
682
- }`),r=new K(`
759
+ }`),t=new Y(`
683
760
  vec4 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
684
761
  // Slightly modified version of this:
685
762
  // https://www.shadertoy.com/view/ltScRG
@@ -706,7 +783,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
706
783
  #endif
707
784
  }
708
785
  return O / O.a;
709
- }`,[e]),o=new K(`
786
+ }`,[e]),o=new Y(`
710
787
  vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
711
788
  // Direction of refracted light.
712
789
  vec3 refractionVector = refract( -v, n, 1.0 / ior );
@@ -717,18 +794,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
717
794
  modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
718
795
  // The thickness is specified in local space.
719
796
  return normalize( refractionVector ) * thickness * modelScale;
720
- }`),n=new K(`
797
+ }`),i=new Y(`
721
798
  float applyIorToRoughness( float roughness, float ior ) {
722
799
  // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
723
800
  // an IOR of 1.5 results in the default amount of microfacet refraction.
724
801
  return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
725
- } `),s=new K(`
802
+ } `),s=new Y(`
726
803
  vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
727
804
  float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
728
805
  float lod = applyIorToRoughness(roughness, ior);
729
806
 
730
807
  return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
731
- }`,[n,r]),a=new K(`
808
+ }`,[i,t]),a=new Y(`
732
809
  vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
733
810
  vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
734
811
  vec3 refractedRayExit = position + transmissionRay;
@@ -748,7 +825,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
748
825
  vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
749
826
  // Get the specular component.
750
827
  return vec4( ( 1.0 ) * transmittedLight.rgb, transmittedLight.a );
751
- }`,[s,o]);return{transmission:new K(`
828
+ }`,[s,o]);return{transmission:new Y(`
752
829
  vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
753
830
  vec3 v = vec3(0.);
754
831
  if (isOrthographic) {
@@ -762,14 +839,103 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
762
839
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
763
840
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
764
841
  return transmission.rgb;
765
- }`,[a])}}();var Hl=class extends le{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include(Hl.Nodes.customNormal),n=[];return n.push(this.cnormal.build(e,"v3")),n.push("normal"),n.push(this.alpha.build(e,"f")),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.cnormal.copy(e.cnormal),this.alpha.copy(e.alpha),this}},mi=Hl;mi.Nodes=function(){return{customNormal:new K(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
766
- vec3 normal = packNormalToRGB( norm ).rgb;
767
- normal *= step( vec3(0.5), cnormal );
842
+ }`,[a])}}();var wn=class extends le{constructor(e,t,o,i,s,a,l,c,u,m,p,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=u,this.steps=m,this.num=p,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Y(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
843
+ vec4 color = colors[0];
844
+ #ifdef ${o}_IS_VECTOR
845
+ #ifdef ${o}_LINEAR
846
+ #ifdef ${o}_WORLDSPACE
847
+ float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
848
+ #else
849
+ float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
850
+ #endif
851
+ #else
852
+ #ifdef ${o}_WORLDSPACE
853
+ float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
854
+ #else
855
+ float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
856
+ #endif
857
+ #endif
858
+ #else
859
+ float dist = length(vWPosition - cameraPosition);
860
+ float depth = ( dist - near ) / ( far - near );
861
+ #endif
768
862
 
769
- accumAlpha += ( 1.0 - accumAlpha ) * alpha;
770
863
 
771
- return normal;
772
- }`)}}();var Wl=class extends le{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=n,this.offset=s,this.morph=a,this.angle=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Wl.Nodes.gradient),n=[];return n.push(this.gradientType.build(e,"i")),n.push(this.smooth.build(e,"b")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.offset.build(e,"v2")),n.push(this.morph.build(e,"v2")),n.push(this.angle.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.offset=e.offset.clone(),this.morph=e.morph.clone(),this.angle=e.angle.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},fi=Wl;fi.Nodes=function(){return{gradient:new K(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
864
+ float p;
865
+ #ifdef ${o}_SMOOTH
866
+ for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
867
+ p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
868
+ color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
869
+ }
870
+ #else
871
+ for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
872
+ p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
873
+ color = mix(color, colors[i], p);
874
+ }
875
+ #endif
876
+
877
+ float lalpha = alpha * color.a;
878
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
879
+
880
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
881
+ return color.rgb;
882
+ }`,[wn.Nodes.vectorLinearWorldSpaceDepth,wn.Nodes.vectorLinearObjectSpaceDepth,wn.Nodes.vectorSphericalObjectSpaceDepth,wn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},wi=wn;wi.Nodes=function(){let e=new Y(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
883
+ vec3 n = normalize(direction);
884
+ float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
885
+ return ( dist - near ) / ( far - near );
886
+ }`),t=new Y(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
887
+ vec3 n = normalize(direction);
888
+ float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
889
+ return ( dist - near ) / ( far - near );
890
+ }`),o=new Y(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
891
+ float dist = length(vWPosition - origin);
892
+ return ( dist - near ) / ( far - near );
893
+ }`),i=new Y(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
894
+ float dist = length(position - origin);
895
+ return ( dist - near ) / ( far - near );
896
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Ti=class extends le{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Vl=(e=>(e.NOISE="noise",e.MAP="map",e))(Vl||{}),Fl=class extends le{constructor(e=new ge(0),t,o,i,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=t,this.movementOrTexture=o,Object.values(Vl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Sn(this.movementOrTexture.value.matrix)),this.cropOrOffset=i,this.scale=s,this.noiseFunctionIndex=a}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Vl)[this.displacementTypeIndex.value]){case"map":{o=e.include(Fl.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(gi)[this.noiseFunctionIndex.value],l=new Y(`vec3 orthogonal(vec3 v) {
897
+ return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
898
+ }`),c=new Y(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
899
+ return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
900
+ }`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),u=new Y(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
901
+ vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
902
+ vec3 tangent1 = orthogonal(normal);
903
+ vec3 tangent2 = normalize(cross(normal, tangent1));
904
+
905
+ // TODO(Max): The distance to the neighbors was originally scaled by 0.1.
906
+ // This caused some small oval/circular visual artifacts in the lighting.
907
+ // For now, simply using neighbors further away betters the problem,
908
+ // but we should figure out the underlying cause when we have some time.
909
+ // Maybe its related to how we calculate the tangent and bitangent?
910
+ vec3 nearby1 = position + tangent1;
911
+ vec3 nearby2 = position + tangent2;
912
+ vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement);
913
+ vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
914
+ displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
915
+ return displaced_position;
916
+ }`,[c,l]);o=e.include(u),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Tn=Fl;Tn.Nodes=function(){let e=new Y(`vec3 orthogonal(vec3 v) {
917
+ return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
918
+ }`),t=new Y(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
919
+ vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
920
+ vec4 tmp = texture2D(tex, uvs);
921
+ vec3 col = tmp.rgb;
922
+ if (crop > 0.5) {
923
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
924
+ return 0.0;
925
+ }
926
+ }
927
+ return col.r;
928
+ }`);return{map:new Y(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
929
+ vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
930
+ vec3 tangent1 = normalize(orthogonal(normal));
931
+ vec3 tangent2 = normalize(cross(normal, tangent1));
932
+ vec3 nearby1 = position + tangent1 * 0.1;
933
+ vec3 nearby2 = position + tangent2 * 0.1;
934
+ vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
935
+ vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
936
+ displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
937
+ return displaced_position;
938
+ }`,[e,t])}}();var Ul=class extends le{constructor(e,t,o,i,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=a,this.angle=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ul.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ni=Ul;Ni.Nodes=function(){return{gradient:new Y(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
773
939
  vec4 color = colors[0];
774
940
  vec2 m = morph / vUv.xy;
775
941
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -811,123 +977,107 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
811
977
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
812
978
 
813
979
  return color.xyz;
814
- }`)}}();var ql=(e=>(e.NOISE="noise",e.MAP="map",e))(ql||{}),$l=class extends le{constructor(e=new ye(0),r,o,n,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=o,Object.values(ql)[this.displacementTypeIndex.value]==="map"&&(this.mat=new dn(this.movementOrTexture.value.matrix)),this.cropOrOffset=n,this.scale=s,this.noiseFunctionIndex=a}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,n=[];switch(n.push("displaced_position"),n.push("displaced_normal"),Object.values(ql)[this.displacementTypeIndex.value]){case"map":{o=e.include($l.Nodes.map),n.push(this.movementOrTexture.getTexture(e,"t")),n.push("uv"),n.push(this.cropOrOffset.build(e,"f")),this.mat&&n.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(ci)[this.noiseFunctionIndex.value],l=new K(`vec3 orthogonal(vec3 v) {
815
- return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
816
- }`),c=new K(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
817
- return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
818
- }`,[ft.simplex,ft.simplexFractal,ft.simplexAshima,ft.fbm,ft.perlin]),h=new K(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
819
- vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
820
- vec3 tangent1 = orthogonal(normal);
821
- vec3 tangent2 = normalize(cross(normal, tangent1));
980
+ }`)}}();var Li=class extends le{constructor(e,t,o,i,s,a,l,c,u,m){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=l,this.mat=c,this.alpha=u,this.mode=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Li.Nodes.cylindrical);break;case 2:i=e.include(Li.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new Y(`
981
+ vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
982
+
983
+ vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
984
+
985
+ vec4 tmp = texture2D( tex, uvs );
822
986
 
823
- // TODO(Max): The distance to the neighbors was originally scaled by 0.1.
824
- // This caused some small oval/circular visual artifacts in the lighting.
825
- // For now, simply using neighbors further away betters the problem,
826
- // but we should figure out the underlying cause when we have some time.
827
- // Maybe its related to how we calculate the tangent and bitangent?
828
- vec3 nearby1 = position + tangent1;
829
- vec3 nearby2 = position + tangent2;
830
- vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement);
831
- vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
832
- displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
833
- return displaced_position;
834
- }`,[c,l]);o=e.include(h),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f"));break}}return n.push(this.intensity.build(e,"f")),n.push("displaced_normal"),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.noiseFunctionIndex=e.noiseFunctionIndex?.clone(),this.scale=e.scale?.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},mn=$l;mn.Nodes=function(){let e=new K(`vec3 orthogonal(vec3 v) {
835
- return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
836
- }`),r=new K(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
837
- vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
838
- vec4 tmp = texture2D(tex, uvs);
839
987
  vec3 col = tmp.rgb;
840
- if (crop > 0.5) {
988
+ float lalpha = alpha * tmp.a;
989
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${a}));`}
990
+
991
+ if ( crop > 0.5 ) {
841
992
  if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
842
- return 0.0;
993
+ lalpha = 0.0;
843
994
  }
844
995
  }
845
- return col.r;
846
- }`);return{map:new K(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
847
- vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
848
- vec3 tangent1 = normalize(orthogonal(normal));
849
- vec3 tangent2 = normalize(cross(normal, tangent1));
850
- vec3 nearby1 = position + tangent1 * 0.1;
851
- vec3 nearby2 = position + tangent2 * 0.1;
852
- vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
853
- vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
854
- displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
855
- return displaced_position;
856
- }`,[e,r])}}();var gi=class extends le{constructor(e=new he,r=new he,o=new he,n=new he,s=new he,a=new he,l=new he,c=new he,h=new he,p=new he,u=new he,d=new he){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=n,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=h,this.colorD=p,this.alpha=u,this.noiseType=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,n,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(ci)[this.noiseType.value],l=new K(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
857
- vec3 st = position / size;
858
- st /= scale;
859
- vec3 q = vec3(${a}(st),
860
- ${a}(st + vec3(1.0)),
861
- ${a}(st + vec3(1.0)));
862
- vec3 r = vec3(${a}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
863
- ${a}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
864
- ${a}(st * q));
865
- float f = ${a}(st + r);
866
- vec4 color;
867
- color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
868
- color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
869
- color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
996
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
997
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
998
+ return col;
999
+ }`);i=e.include(l);break;default:i=e.include(Li.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}},Ci=Li;Ci.Nodes=function(){let e=new Y(`
1000
+ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1001
+ vec3 posN = normalize(position);
1002
+ float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
1003
+ float scaledHeight = position.y / (size.y * 0.5);
1004
+ float v = (scaledHeight / 2.) + .5;
870
1005
 
871
- float lalpha = alpha * color.a;
872
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1006
+ vec2 calculatedUv = vec2(u,v);
1007
+ vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
873
1008
 
874
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
875
- return clamp(color, 0.0, 1.0).rgb;
876
- }`,[ft.simplex,ft.simplexFractal,ft.simplexAshima,ft.fbm,ft.perlin]),c=e.include(l),h=[];return h.push(this.scale.build(e,"f")),h.push(this.size.build(e,"v3")),h.push(this.move.build(e,"f")),h.push(this.fA.build(e,"v2")),h.push(this.fB.build(e,"v2")),h.push(this.distortion.build(e,"v2")),h.push(this.colorA.build(e,"v4")),h.push(this.colorB.build(e,"v4")),h.push(this.colorC.build(e,"v4")),h.push(this.colorD.build(e,"v4")),h.push(this.alpha.build(e,"f")),h.push(this.calpha),e.format(c+"("+h.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};gi.numOctaves=5;var Xl=class extends le{constructor(e=new he,r=new he,o=Xl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},Mt=Xl;Mt.ADD="+",Mt.SUB="-",Mt.MUL="*",Mt.DIV="/";var yi=class extends le{constructor(e=new he,r=new he,o=new he,n=new he){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=n}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var fn=class extends le{constructor(e,r,o,n,s,a,l,c,h,p,u,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=n,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=h,this.steps=p,this.num=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new K(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
877
- vec4 color = colors[0];
878
- #ifdef ${o}_IS_VECTOR
879
- #ifdef ${o}_LINEAR
880
- #ifdef ${o}_WORLDSPACE
881
- float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
882
- #else
883
- float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
884
- #endif
885
- #else
886
- #ifdef ${o}_WORLDSPACE
887
- float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
888
- #else
889
- float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
890
- #endif
891
- #endif
892
- #else
893
- float dist = length(vWPosition - cameraPosition);
894
- float depth = ( dist - near ) / ( far - near );
895
- #endif
1009
+ vec2 df = fwidth(uvs);
1010
+ if(df.x > 0.5) df.x = 0.;
1011
+
1012
+ #ifdef GL_EXT_shader_texture_lod
1013
+ vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1014
+ #else
1015
+ vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1016
+ #endif
1017
+
1018
+ vec3 col = tmp.rgb;
1019
+ float lalpha = alpha * tmp.a;
1020
+ if ( crop > 0.5 ) {
1021
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1022
+ lalpha = 0.0;
1023
+ }
1024
+ }
1025
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1026
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1027
+ return col;
1028
+ }
1029
+ `),t=new Y(`
1030
+ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1031
+ vec3 posN = normalize(vPosition);
1032
+ float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
1033
+ float v = 0.5 + asin(posN.y) / 3.1415;
896
1034
 
1035
+ vec2 calculatedUv = vec2(u,v);
1036
+ vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
897
1037
 
898
- float p;
899
- #ifdef ${o}_SMOOTH
900
- for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
901
- p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
902
- color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
1038
+ vec2 df = fwidth(uvs);
1039
+ if(df.x > 0.5) df.x = 0.;
1040
+ #ifdef GL_EXT_shader_texture_lod
1041
+ vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1042
+ #else
1043
+ vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1044
+ #endif
1045
+
1046
+ vec3 col = tmp.rgb;
1047
+ float lalpha = alpha * tmp.a;
1048
+ if ( crop > 0.5 ) {
1049
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1050
+ lalpha = 0.0;
903
1051
  }
904
- #else
905
- for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
906
- p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
907
- color = mix(color, colors[i], p);
908
- }
909
- #endif
1052
+ }
1053
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1054
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1055
+ return col;
1056
+ }
1057
+ `),o=new Y(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1058
+
1059
+ vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
1060
+ vec4 tmp = texture2D( tex, uvs );
1061
+
1062
+ vec3 col = tmp.rgb;
1063
+
1064
+ float lalpha = alpha * tmp.a;
1065
+ if ( crop > 0.5 ) {
1066
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1067
+ lalpha = 0.0;
1068
+ }
1069
+ }
1070
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1071
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1072
+ return col;
1073
+ }`);return{cylindrical:e,spherical:t,uv:o}}();var jl=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t}generate(e,t){if(e.isShader("fragment")){let o=e.include(jl.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ii=jl;Ii.Nodes=function(){return{customNormal:new Y(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
1074
+ vec3 normal = packNormalToRGB( norm ).rgb;
1075
+ normal *= step( vec3(0.5), cnormal );
910
1076
 
911
- float lalpha = alpha * color.a;
912
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1077
+ accumAlpha += ( 1.0 - accumAlpha ) * alpha;
913
1078
 
914
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
915
- return color.rgb;
916
- }`,[fn.Nodes.vectorLinearWorldSpaceDepth,fn.Nodes.vectorLinearObjectSpaceDepth,fn.Nodes.vectorSphericalObjectSpaceDepth,fn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(n),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.near=e.near.clone(),this.far=e.far.clone(),this.isVector=e.isVector.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.origin=e.origin.clone(),this.direction=e.direction.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},xi=fn;xi.Nodes=function(){let e=new K(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
917
- vec3 n = normalize(direction);
918
- float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
919
- return ( dist - near ) / ( far - near );
920
- }`),r=new K(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
921
- vec3 n = normalize(direction);
922
- float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
923
- return ( dist - near ) / ( far - near );
924
- }`),o=new K(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
925
- float dist = length(vWPosition - origin);
926
- return ( dist - near ) / ( far - near );
927
- }`),n=new K(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
928
- float dist = length(position - origin);
929
- return ( dist - near ) / ( far - near );
930
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var Kl=class extends le{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Kl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.getTexture(e,"t")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.texture=e.texture.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},vi=Kl;vi.Nodes=function(){return{matcap:new K(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1079
+ return normal;
1080
+ }`)}}();var Ee=require("three");function md(n,r){switch(n.type){case"fresnel":return ib(n,r);case"gradient":return sb(n);case"depth":return ab(n);case"normal":return lb(n);case"noise":return cb(n,r);case"rainbow":return ub(n);case"toon":return pb(n,r);case"outline":return mb(n,r);case"transmission":return db(n,r);case"displace":return fb(n);case"color":return nb(n,r)}}function dd(n){return{type:n.type}}function br(n){let{alpha:r,mode:e}=n;return{...dd(n),alpha:r,mode:e}}function nb(n,r){return{...br(n),color:Ke(n.color,r)}}function ib(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...br(n),color:Ke(s,r),bias:e,scale:t,intensity:o,factor:i}}function sb(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:a}=n;return{...br(n),gradientType:r,smooth:e,colors:t.map(l=>new Ee.Vector4(l[0],l[1],l[2],l[3])),num:t.length,steps:o,offset:new Ee.Vector2(...s),morph:new Ee.Vector2(...a),angle:i}}function ab(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:l,steps:c,smooth:u,num:m}=n;return{...br(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Ee.Vector3(...s),direction:a?new Ee.Vector3(...a):new Ee.Vector3(1,0,0),num:m,colors:l.map(p=>new Ee.Vector4(p[0],p[1],p[2],p[3])),steps:c,smooth:u}}function lb(n){let{cnormal:r}=n;return{...br(n),cnormal:new Ee.Vector3(r[0],r[1],r[2])}}function cb(n,r){return{...br(n),scale:n.scale,move:n.move,fA:new Ee.Vector2(...n.fA),fB:new Ee.Vector2(...n.fB),size:new Ee.Vector3(...n.size),distortion:new Ee.Vector2(...n.distortion),colorA:Ke(n.colorA,r),colorB:Ke(n.colorB,r),colorC:Ke(n.colorC,r),colorD:Ke(n.colorD,r),noiseType:n.noiseType}}function ub(n){return{...br(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ee.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ee.Vector3(...n.offset)}}function pb(n,r){return{...br(n),positioning:n.positioning,colors:n.colors.map(e=>new Ee.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ee.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Ke(n.shadowColor,r),offset:new Ee.Vector3(...n.offset)}}function mb(n,r){return{...br(n),outlineColor:Ke(n.outlineColor,r),contourColor:Ke(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation,resolution:r.resolutionNode,normalMap:r.normalMap,depthMap:r.normalRenderTarget.depthTexture,pixelRatio:r.pixelRatioNode}}function db(n,r){return{...br(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness,transmissionSamplerMap:r.transmissionSamplerMap,transmissionDepthMap:r.transmissionDepthMap}}function fb(n){let r={...dd(n),intensity:n.intensity};if(n.displacementType==="noise")return{...r,offset:new Ee.Vector3(...n.offset),scale:n.scale,movement:n.movement,noiseType:n.noiseType};{let e=new Ee.Texture,t=new Ee.Matrix3().setUvTransform(0,0,1,1,0,0,0);return{...r,texture:e,mat:t,crop:n.crop}}}var ro=class extends ut{};var gd=require("three");var kl=new Map,Pi={url:"head",time:0,data:null,next:null,prev:null},Nn={url:"tail",time:1/0,data:null,next:null,prev:null};Pi.next=Nn;Nn.prev=Pi;var fd=0;function hd(n){if(typeof n=="string")return n;let r=Date.now(),e=kl.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:r,next:null,prev:null},kl.set(n,e)):(e.time=r,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Nn.prev,e.next=Nn,Nn.prev.next=e,Nn.prev=e,r-fd>1e3*10&&(fd=r+1e3,setTimeout(()=>{let t=Date.now(),o=Pi.next;for(;o.time<t-1e3*10;)URL.revokeObjectURL(o.url),kl.delete(o.data),o=o.next,o.prev=Pi,Pi.next=o},900)),e.url}var Cn=class{constructor(r,e){this.data=r;this.onImageLoad=e;this.loaded=!1;this.updateSrc(r.data)}updateSrc(r){this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=hd(r),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let t of e){let o=this[t];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()}}getTexture(r){let e=this[r];if(e)return e;{let t=new gd.Texture(this.img,void 0,r,r);return this.loaded&&(t.needsUpdate=!0),this[r]=t,t}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var So=class extends Cn{};function hb(n,r){switch(n.type){case"noise":return r==="noiseType";case"texture":return r==="projection"||r==="axis"||r==="side";case"displace":return r==="noiseType";case"depth":return r==="num"||r==="smooth"||r==="isWorldSpace"||r==="gradientType"||r==="isVector";default:return!1}}function Hl(n,r,e,t){let o=e.uniforms[`f${e.id}_texture`];if(!o)return!1;let i=!1,s=n;if("image"in s){let a=s.image,l=r.image(a),c=o;c instanceof So||c.image.dispose(),c.image=l}if("wrapping"in s){let a=o;a.wrap=s.wrapping}if("repeat"in s||"offset"in s){let a="mat";e.uniforms[`f${e.id}_${a}`].value.setUvTransform(t.offset[0],t.offset[1],t.repeat[0],t.repeat[1],0,0,0)}return i}function yd(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||Wl(i,e,t))continue;e.visible=t.visible;let a=e.uniforms[`f${e.id}_${i}`];if(!!a)switch(a.constructor){case Ie:if(typeof s=="string"){let l=r.getColor(s);l&&(a.value=l);break}else{let l=s;a.value instanceof ro?a.value=new ut(l.r,l.g,l.b,l.a):a.setRGBA(l);break}case Ht:if(typeof s=="string"){let l=r.getColor(s);l&&(a.value=l);break}else{let l=s;a.value instanceof ro?a.value=new ut(l.r,l.g,l.b,l.a):a.value.setRGBA(l.r,l.g,l.b,l.a);break}case rt:{let l=s;a.value.setX(l[0]),a.value.setY(l[1]);break}case pt:{let l=s;a.value.setX(l[0]),a.value.setY(l[1]),a.value.setZ(l[2]);break}case wt:{let l=s;Hl(l,r,e,l);break}case Jt:{s.forEach((l,c)=>{a.value[c].setX(l[0]),a.value[c].setY(l[1]),a.value[c].setZ(l[2]),a.value[c].setW(l[3])});break}default:{o=o||hb(e,i),a.value=s;break}}}return o}var ql=class extends le{constructor(e,t,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(ql.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ai=ql;Ai.Nodes=function(){return{matcap:new Y(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
931
1081
  vec3 viewDir = normalize( vViewPosition );
932
1082
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
933
1083
  vec3 y = cross( viewDir, x );
@@ -939,380 +1089,241 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
939
1089
 
940
1090
  return matcapColor.rgb;
941
1091
  }
942
- `)}}();var gn=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=ve.MathUtils.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new X(1));let r=new X(1),o=new ye(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new ze(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){this._material=t;let e,r,o=this.head;for(;o!==void 0;){if(o.type==="light"){e=o.uniforms[`f${o.id}_alpha`],r=o.uniforms[`f${o.id}_mode`];break}o=o.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes(t.userData.layers?.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){if(t.id=t.id??++this.id,this.layerCount++,t.type==="light"){let o=this.createLightLayer(t);return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let o=this.head;for(;o.next!=null;)o=o.next;o.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){let r=this.head;t.id=t.id??++this.id,this.layerCount++;let o=this._createLayer(t),n=o.layer;n.next=e;let s=0;if(r===e)this.head=n,o.color&&this._layerNodes.splice(0,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:n.id,type:"position",position:o.position});else{for(s=1;r?.next!==e;)r=r?.next,s++;r.next=n,o.color&&this._layerNodes.splice(s,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:n.id,type:"position",position:o.position})}return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){e.id=e.id??++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let n=this.head,s=this.head.next;for(let a=0;a<t-1;a++)n=s,s=s.next;o.next=s,n.next=o}return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if(e?.id==t)this.head=e.next;else for(o=1,r=e,e=e?.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=ve.MathUtils.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if(o?.id==t){let s=this._createLayer({id:t,uuid:o.uuid,...e});n=s.layer,n.next=o.next,this.head=n,s.color&&(this._layerNodes[0]={id:n.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:n.id,type:"position",position:s.position}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value}else{r=o,o=o.next;let s=1;for(;o!=null;){if(o.id==t){let a=this._createLayer({id:t,uuid:o.uuid,...e});n=a.layer,r.next=n,n.next=o.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,o=this.head,n;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)n=o,o=o.next;n.next=o.next,r=o}if(o=this.head,n=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)o=o.next;r.next=o?.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new X(t.alpha),r=new ye(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new ze(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let n=this.head;for(;n.next!=null;)n=n.next;n.next=o}return this.attachLightNodes(this.getLightLayer()),o}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let o=r?e.uniforms[`f${e.id}_alpha`]:new X(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new ye(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=n,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:n}),this.head===void 0?this.head=new ze(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new ze(e.id,e.uuid,{type:"light",alpha:o,mode:n})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let n in e.uniforms){let s=e.getName(n);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))o[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){o[s]=l;continue}l!=null&&(o[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(o)}}attachLightNodes(t){let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new Pe(t?.getValue("emissive")?.clone()??0);break;case"Phong":e.shininess=new X(t?.getValue("shininess")??30),e.specular=new Pe(t?.getValue("specular")?.clone()??1118481);break;case"Toon":e.shininess=new X(t?.getValue("shininess")??30),e.specular=new Pe(t?.getValue("specular")?.clone()??1118481);break;case"Physical":e.roughness=new X(t?.getValue("roughness")??.3),e.metalness=new X(t?.getValue("metalness")??0),e.reflectivity=new X(t?.getValue("reflectivity")??.5);break;default:break}Object.keys(e).forEach(o=>{this._material[o]=e[o],r.uniforms[`f${r.id}_${o}`]=e[o]})}clone(t){return new gn(t).copy(this)}getLightLayer(){let t=this.head;for(;t!==void 0&&t.type!=="light";)t=t.next??t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){let e=t.type;switch(e){case"color":{let r=new Pe(t.color??5855577),o=new X(t.alpha??1),n=new Me("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");n.keywords.alpha=o;let s=new ye(t.mode??0);return r.alpha=o,{layer:new ze(t.id,t.uuid,{type:e,color:r,alpha:o,calpha:n,mode:s}),color:r,alpha:n,mode:s}}case"texture":{let r=t.texture??new Xt,o=r.matrix;t.mat&&o.copy(t.mat),r.needsUpdate=!0;let n=new X(t.crop??0),s=new ye(t.projection??0),a=new ye(t.axis??0),l=new ye(t.side??0),c=new lt(t.size?new ve.Vector2(t.size[0],t.size[1]):new ve.Vector2(100,100)),h=new X(t.alpha??1),p=new ye(t.mode??0),u=new ct(r),d=new mt(t.textureSize??new ve.Vector3(r.image?r.image.width:0,r.image?r.image.height:0)),m=new si(u,d,n,s,a,l,c,h,p),g=new Me(m.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,texture:u,textureSize:d,crop:n,projection:s,axis:a,side:l,size:c,mat:m.mat,alpha:h,calpha:g,mode:p}),color:m,alpha:g,mode:p}}case"matcap":{let r=t.texture??new Xt;r.needsUpdate=!0;let o=new X(t.alpha??1),n=new ct(r),s=new ye(t.mode??0),a=new vi(n,o,s),l=new Me(a.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,texture:n,alpha:o,calpha:l,mode:s}),color:a,alpha:l,mode:s}}case"fresnel":{let r=new Pe(t.color??16777215),o=new X(t.bias??.1),n=new X(t.scale??1),s=new X(t.intensity??2),a=new X(t.factor??1),l=new X(t.alpha??1),c=new ye(t.mode??0),h=new li(r,o,n,s,a,l,c),p=new Me(h.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,color:r,bias:o,scale:n,intensity:s,factor:a,alpha:l,calpha:p,mode:c}),color:h,alpha:p,mode:c}}case"rainbow":{let r=new X(t.filmThickness??30),o=new X(t.movement??0),n=new mt(t.wavelengths??new ve.Vector3(0,0,0)),s=new X(t.noiseStrength??0),a=new X(t.noiseScale??1),l=new mt(t.offset??new ve.Vector3(0,0,0)),c=new X(t.alpha??1),h=new hi(r,o,n,s,a,l,c),p=new Me(h.calpha,"f"),u=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,filmThickness:r,movement:o,wavelengths:n,noiseStrength:s,noiseScale:a,offset:l,alpha:c,calpha:p,mode:u}),color:h,alpha:p,mode:u}}case"toon":{let r=new ye(t.positioning??0),o;t.colors?o=new Er(t.colors.length,t.colors):(o=new Er(10,new ve.Vector4(0,0,0,1)),o.value[1]=new ve.Vector4(1,1,1,1));let n;t.steps?n=new tt(t.steps.length,t.steps):(n=new tt(10,1),n.value[0]=0);let s=new mt(t.source??new ve.Vector3(0,0,0)),a=new Qr(t.isWorldSpace??!0),l=new X(t.noiseStrength??0),c=new X(t.noiseScale??1),h=new vr(t.shadowColor),p=new mt(t.offset??new ve.Vector3(0,0,0)),u=new X(t.alpha??1),d=new pi(r,o,n,s,a,l,c,h,p,u),m=new Me(d.calpha,"f"),g=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,positioning:r,colors:o,steps:n,source:s,isWorldSpace:a,noiseStrength:l,noiseScale:c,shadowColor:h,offset:p,alpha:u,calpha:m,mode:g}),color:d,alpha:m,mode:g}}case"outline":{let r=new Pe(t.outlineColor??16777215),o=new Pe(t.contourColor??16777215),n=new X(t.outlineWidth??.1),s=new X(t.contourWidth??.1),a=new X(t.outlineThreshold??.1),l=new X(t.contourThreshold??.1),c=new X(t.outlineSmoothing??.1),h=new X(t.contourFrequency??.1),p=new mt(t.contourDirections??new ve.Vector3(0,1,0)),u=new Qr(t.positionalLines??!1),d=new Qr(t.compensation??!0),m=t.normalMap??new Xt,g=new ct(m),x=t.depthMap??new Xt,y=new ct(x),v=t.pixelRatio??new X(window.devicePixelRatio),P=t.resolution??new lt(new ve.Vector2(1,1)),S=new X(t.alpha??1),b=new ui(r,o,n,s,a,l,c,h,p,u,d,P,g,y,v,S),_=new Me(b.calpha,"f"),w=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,outlineColor:r,contourColor:o,outlineWidth:n,contourWidth:s,outlineThreshold:a,contourThreshold:l,outlineSmoothing:c,contourFrequency:h,contourDirection:p,positionalLines:u,compensation:d,resolution:P,normalMap:g,depthMap:y,pixelRatio:v,alpha:S,calpha:_,mode:w}),color:b,alpha:_,mode:w}}case"transmission":{let r=new X(t.thickness??10),o=new X(t.ior??1.5),n=new X(t.roughness??.5),s=new lt(t.transmissionSamplerSize??new ve.Vector2(2048,2048)),a=t.transmissionSamplerMap??new Xt,l=t.transmissionDepthMap??new Xt,c=new ct(a),h=new ct(l),p=window.innerWidth,u=window.innerHeight,d=p>=u?new lt(u/p,1):new lt(1,p/u),m=new X(t.alpha??1),g=new di(r,o,n,s,c,h,d,m),x=new Me(g.calpha,"f"),y=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,thickness:r,ior:o,roughness:n,transmissionSamplerSize:s,transmissionSamplerMap:c,transmissionDepthMap:h,aspectRatio:d,alpha:m,calpha:x,mode:y}),color:g,alpha:x,mode:y}}case"depth":{let r=new ye(t.gradientType??0),o=new Qr(t.smooth??!1),n=new X(t.near??50),s=new X(t.far??200),a=new X(t.isVector??1),l=new X(t.isWorldSpace??0),c=new mt(t.origin??new ve.Vector3),h=new mt(t.direction??new ve.Vector3),p=new ye(t.num??0),u;t.colors?u=new Er(p.value+1,t.colors):(u=new Er(p.value+1,new ve.Vector4(0,0,0,1)),u.value[1]=new ve.Vector4(1,1,1,1));let d;t.steps?d=new tt(p.value+1,t.steps):(d=new tt(p.value+1,1),d.value[0]=0);let m=new X(t.alpha??1),g=new ye(t.mode??0),x=new xi(r,o,n,s,a,l,c,h,u,d,p,m),y=new Me(x.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,gradientType:r,smooth:o,near:n,far:s,isVector:a,isWorldSpace:l,origin:c,direction:h,colors:u,steps:d,num:p,alpha:m,calpha:y,mode:g}),color:x,alpha:y,mode:g}}case"noise":{let r=new X(t.scale??1),o=new mt(t.size??new ve.Vector3(100,100,100)),n=new X(t.move??1),s=new lt(t.fA??new ve.Vector2(1.7,9.2)),a=new lt(t.fB??new ve.Vector2(8.3,2.8)),l=new lt(t.distortion??new ve.Vector2(1,1)),c=new vr(t.colorA),h=new vr(t.colorB),p=new vr(t.colorC),u=new vr(t.colorD),d=new X(t.alpha??1),m=new ye(t.mode??0),g=new ye(t.noiseType??0),x=new gi(r,o,n,s,a,l,c,h,p,u,d,g),y=new Me(x.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,scale:r,size:o,move:n,fA:s,fB:a,distortion:l,colorA:c,colorB:h,colorC:p,colorD:u,alpha:d,calpha:y,mode:m,noiseType:g}),color:x,alpha:y,mode:m}}case"normal":{let r=new mt(t.cnormal??new ve.Vector3(1,1,1)),o=new X(t.alpha??1),n=new ye(t.mode??0),s=new mi(r,o),a=new Me("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return a.keywords.alpha=o,{layer:new ze(t.id,t.uuid,{type:e,cnormal:r,alpha:o,calpha:a,mode:n}),color:s,alpha:a,mode:n}}case"gradient":{let r=new ye(t.gradientType??0),o=new Qr(t.smooth??!1),n;t.colors?n=new Er(t.colors.length,t.colors):(n=new Er(10,new ve.Vector4(0,0,0,1)),n.value[1]=new ve.Vector4(1,1,1,1));let s;t.steps?s=new tt(t.steps.length,t.steps):(s=new tt(10,1),s.value[0]=0);let a=new lt(t.offset??new ve.Vector2(0,0)),l=new lt(t.morph??new ve.Vector2(0,0)),c=new X(t.angle??0),h=new X(t.alpha??1),p=new ye(t.mode??0),u=new fi(r,o,n,s,a,l,c,h),d=new Me(u.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,gradientType:r,smooth:o,colors:n,steps:s,offset:a,morph:l,angle:c,alpha:h,calpha:d,mode:p}),color:u,alpha:d,mode:p}}case"displace":{let r=new ye(t.displacementType??0);if(r.value===0){let o=new mt(t.offset??new ve.Vector3(0,0,0)),n=new X(t.scale??10),s=new X(t.intensity??8),a=new X(t.movement??1),l=new X(t.alpha??1),c=new ye(t.mode??0),h=new ye(t.noiseType??0),p=new mn(r,s,a,o,n,h);return{layer:new ze(t.id,t.uuid,{displacementType:r,type:e,offset:o,scale:n,intensity:s,movement:a,alpha:l,mode:c,noiseType:h}),position:p}}else if(r.value===1){let o=t.texture??new Xt,n=o.matrix;t.mat&&n.copy(t.mat),o.needsUpdate=!0;let s=new X(t.intensity??8),a=new ct(o),l=new X(t.crop??0),c=new X(t.alpha??1),h=new ye(t.mode??0),p=new mn(r,s,a,l);return{layer:new ze(t.id,t.uuid,{displacementType:r,type:e,intensity:s,texture:a,crop:l,mat:p.mat,alpha:c,mode:h}),position:p}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let o=t+1;o<e;++o){let n=this._layerNodes[o];n.type==="color"&&(r=new yi(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Me("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new yi(t,o.color,o.alpha,o.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new Mt(e,t[r].position,Mt.ADD),e=new Mt(e,new X(.5).setReadonly(!0),Mt.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};var ia=require("three");var tr=require("three");var bi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var ab=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
943
- )*?)}`,"gim"),lb=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),yn=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=ab.exec(e);if(r){let o=r[2],n;for(;n=lb.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Si=class extends le{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,n,s){n=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let h=0;h<a.inputs.length;h++){let p=a.inputs[h],u=this.inputs[h]||this.inputs[p.name];c.push(u.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}};var Ae=class extends le{constructor(e=new he,r=Ae.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:n=r,typeof o!="string"?this.c=o:n=o,this.method=n,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,n=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>n?this.a.getType(e):o>n?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,h=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Ae.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,a===1?"f":h),n=this.b.build(e,h);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,h),n=this.b.build(e,l===1?"f":h);break;case Ae.REFRACT:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(n=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let u=[];u.push(o),n&&u.push(n),s&&u.push(s);let d=this.getNumInputs(e);if(u.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${u.length}.`);return e.format(this.method+"( "+u.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof he?e.b.clone():e.b,this.c=e.c instanceof he?e.c.clone():e.c,this.method=e.method,this}},me=Ae;me.RAD="radians",me.DEG="degrees",me.EXP="exp",me.EXP2="exp2",me.LOG="log",me.LOG2="log2",me.SQRT="sqrt",me.INV_SQRT="inversesqrt",me.FLOOR="floor",me.CEIL="ceil",me.NORMALIZE="normalize",me.FRACT="fract",me.SATURATE="saturate",me.SIN="sin",me.COS="cos",me.TAN="tan",me.ASIN="asin",me.ACOS="acos",me.ARCTAN="atan",me.ABS="abs",me.SIGN="sign",me.LENGTH="length",me.NEGATE="negate",me.INVERT="invert",me.MIN="min",me.MAX="max",me.MOD="mod",me.STEP="step",me.REFLECT="reflect",me.DISTANCE="distance",me.DOT="dot",me.CROSS="cross",me.POW="pow",me.MIX="mix",me.CLAMP="clamp",me.REFRACT="refract",me.SMOOTHSTEP="smoothstep",me.FACEFORWARD="faceforward";var xn=class extends le{constructor(e=new he,r=new he,o=new he){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let s=new Si(xn.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new St(new Me("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new St(new Me("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new St(new Me("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new St(new Me("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Me(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Me(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Me(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Me(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Me("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,s=new Si(xn.Nodes.roughnessToMip,[n]),a=new me(s,xn.Nodes.m0,xn.Nodes.cubeUV_maxMipLevel,me.CLAMP),l=new me(a,me.FLOOR),c=new me(a,me.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Mt(l,new X(1).setReadonly(!0),Mt.ADD)),u=new me(h,p,c,me.MIX);return e.format(u.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},vn=xn;vn.Nodes=function(){let e=new yn(`struct TextureCubeUVData {
944
- vec4 tl;
945
- vec4 tr;
946
- vec4 br;
947
- vec4 bl;
948
- vec2 f;
949
- }`),r=new Ne("float cubeUV_maxMipLevel 8.0",!0),o=new Ne("float cubeUV_minMipLevel 4.0",!0),n=new Ne("float cubeUV_maxTileSize 256.0",!0),s=new Ne("float cubeUV_minTileSize 16.0",!0),a=new K(`float getFace(vec3 direction) {
950
- vec3 absDirection = abs(direction);
951
- float face = -1.0;
952
- if (absDirection.x > absDirection.z) {
953
- if (absDirection.x > absDirection.y)
954
- face = direction.x > 0.0 ? 0.0 : 3.0;
955
- else
956
- face = direction.y > 0.0 ? 1.0 : 4.0;
957
- } else {
958
- if (absDirection.z > absDirection.y)
959
- face = direction.z > 0.0 ? 2.0 : 5.0;
960
- else
961
- face = direction.y > 0.0 ? 1.0 : 4.0;
962
- }
963
- return face;
964
- }`);a.useKeywords=!1;let l=new K(`vec2 getUV(vec3 direction, float face) {
965
- vec2 uv;
966
- if (face == 0.0) {
967
- uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
968
- } else if (face == 1.0) {
969
- uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
970
- } else if (face == 2.0) {
971
- uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
972
- } else if (face == 3.0) {
973
- uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
974
- } else if (face == 4.0) {
975
- uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
976
- } else {
977
- uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
1092
+ `)}}();var Mi=class extends Ae{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var xd=require("three");var da=class extends Ae{constructor(e){super("v3");this.image=e;this._value=new xd.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var $l=class extends le{constructor(e,t,o,i,s,a,l,c,u,m){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include($l.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Oi=$l;Oi.Nodes=function(){let e=new Y(`float rand(float n) {
1093
+ return fract(sin(n) * 43758.5453123);
1094
+ }`),t=new Y(`float hash1(float p) {
1095
+ p = fract(p * 0.011);
1096
+ p *= p + 7.5;
1097
+ p *= p + p;
1098
+ return fract(p);
1099
+ }`),o=new Y(`float valueNoise(vec3 x) {
1100
+ const vec3 step = vec3(110, 241, 171);
1101
+
1102
+ vec3 i = floor(x);
1103
+ vec3 f = fract(x);
1104
+
1105
+ // For performance, compute the base input to a 1D hash from the integer part of the argument and the
1106
+ // incremental change to the 1D based on the 3D -> 1D wrapping
1107
+ float n = dot(i, step);
1108
+
1109
+ vec3 u = f * f * (3.0 - 2.0 * f);
1110
+ return mix(mix(mix( hash1(n + dot(step, vec3(0, 0, 0))), hash1(n + dot(step, vec3(1, 0, 0))), u.x),
1111
+ mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1112
+ mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1113
+ mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1114
+ }`,[t]),i=new Y(`vec3 hash3(vec3 x) {
1115
+ x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1116
+ dot(x,vec3(269.5, 183.3, 246.1)),
1117
+ dot(x,vec3(113.5, 271.9, 124.6)));
1118
+
1119
+ return fract(sin(x)*43758.5453123);
1120
+ }`),s=new Y(`vec3 voronoiNoise(in vec3 x)
1121
+ {
1122
+ vec3 p = floor(x);
1123
+ vec3 f = fract(x);
1124
+
1125
+ float id = 0.0;
1126
+ vec2 res = vec2(100.0);
1127
+
1128
+ for(int k=-1; k<=1; k++)
1129
+ for(int j=-1; j<=1; j++)
1130
+ for(int i=-1; i<=1; i++)
1131
+ {
1132
+ vec3 b = vec3(float(i), float(j), float(k));
1133
+
1134
+ // Comment out the "+ hash(p + b);" part below to get "square" cells
1135
+ vec3 r = vec3(b) - f + hash3(p + b);
1136
+ float d = dot(r, r);
1137
+
1138
+ if (d < res.x)
1139
+ {
1140
+ id = dot(p + b, vec3(1.0, 57.0, 113.0));
1141
+ res = vec2(d, res.x);
1142
+ }
1143
+ else if (d < res.y)
1144
+ {
1145
+ res.y = d;
1146
+ }
978
1147
  }
979
- return 0.5 * (uv + 1.0);
980
- }`);l.useKeywords=!1;let c=new K(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
981
- float face = getFace(direction);
982
- float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
983
- mipInt = max(mipInt, cubeUV_minMipLevel);
984
- float faceSize = exp2(mipInt);
985
- float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
986
- vec2 uv = getUV(direction, face) * (faceSize - 1.0);
987
- vec2 f = fract(uv);
988
- uv += 0.5 - f;
989
- if (face > 2.0) {
990
- uv.y += faceSize;
991
- face -= 3.0;
992
- }
993
- uv.x += face * faceSize;
994
- if(mipInt < cubeUV_maxMipLevel){
995
- uv.y += 2.0 * cubeUV_maxTileSize;
996
- }
997
- uv.y += filterInt * 2.0 * cubeUV_minTileSize;
998
- uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
999
- uv *= texelSize;
1000
- vec4 tl = texture2D(envMap, uv);
1001
- uv.x += texelSize;
1002
- vec4 tr = texture2D(envMap, uv);
1003
- uv.y += texelSize;
1004
- vec4 br = texture2D(envMap, uv);
1005
- uv.x -= texelSize;
1006
- vec4 bl = texture2D(envMap, uv);
1007
- return TextureCubeUVData( tl, tr, br, bl, f );
1008
- }`,[e,a,l,r,o,n,s]);c.useKeywords=!1;let h=new Ne("float r0 1.0",!0),p=new Ne("float v0 0.339",!0),u=new Ne("float m0 -2.0",!0),d=new Ne("float r1 0.8",!0),m=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),x=new Ne("float r4 0.4",!0),y=new Ne("float v4 0.046",!0),v=new Ne("float m4 2.0",!0),P=new Ne("float r5 0.305",!0),S=new Ne("float v5 0.016",!0),b=new Ne("float m5 3.0",!0),_=new Ne("float r6 0.21",!0),w=new Ne("float v6 0.0038",!0),f=new Ne("float m6 4.0",!0),D=[h,p,u,d,m,g,x,y,v,P,S,b,_,w,f],C=new K(`float roughnessToMip(float roughness) {
1009
- float mip = 0.0;
1010
- if (roughness >= r1) {
1011
- mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
1012
- } else if (roughness >= r4) {
1013
- mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
1014
- } else if (roughness >= r5) {
1015
- mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
1016
- } else if (roughness >= r6) {
1017
- mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
1018
- } else {
1019
- mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
1020
- }
1021
- return mip;
1022
- }`,D);return{bilinearCubeUV:c,roughnessToMip:C,m0:u,cubeUV_maxMipLevel:r}}();var vo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??vo.VIEW}getShared(){return this.scope===vo.WORLD}build(e,r,o,n){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,n):super.build(e,r,o)}generate(e,r,o,n,s){let a;switch(this.scope){case vo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case vo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case vo.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}},nt=vo;nt.LOCAL="local",nt.WORLD="world",nt.VIEW="view",nt.NORMAL="normal";rt.addKeyword("viewNormal",function(){return new nt(nt.VIEW)});rt.addKeyword("localNormal",function(){return new nt(nt.NORMAL)});rt.addKeyword("worldNormal",function(){return new nt(nt.WORLD)});var br=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??br.LOCAL}getType(){switch(this.scope){case br.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case br.LOCAL:case br.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case br.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case br.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case br.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case br.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}},ht=br;ht.LOCAL="local",ht.WORLD="world",ht.VIEW="view",ht.PROJECTION="projection";rt.addKeyword("position",function(){return new ht});rt.addKeyword("worldPosition",function(){return new ht(ht.WORLD)});rt.addKeyword("viewPosition",function(){return new ht(ht.VIEW)});var er=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??er.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case er.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case er.VECTOR:{let s=new nt(nt.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new ht(ht.VIEW).build(e,"v3"),h=a?a.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;h&&(p=`normalize( mix( ${p}, ${l}, ${h} * ${h} ) )`);let u=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${u};`),n="reflectVec"):n=u;break}case er.CUBE:{let s=new er(er.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case er.SPHERE:{let s=new er(er.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),n="reflectSphereVec"):n=a;break}}return e.format(n,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}copy(e){return super.copy(e),this.scope=e.scope,this}},Sr=er;Sr.CUBE="cube",Sr.SPHERE="sphere",Sr.VECTOR="vector";var ra=class extends le{constructor(e=new ct,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new vn(this.value,r??new Sr(Sr.VECTOR),o),this.irradianceNode=new vn(this.value,new nt(nt.WORLD),new X(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};var yd=require("three");var oa=class extends Be{constructor(e=new yd.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new Sr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new St(new Me("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var xd=["x","y","z","w"],cb=["float","vec2","vec3","vec4"],hb={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},pb={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},na=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let n=this.getIncludes(r,o);if(!n)return"";let s="";n=n.sort(t);for(let a=0;a<n.length;a++)n[a].src&&(s+=n[a].src+`
1023
- `);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
1024
- // NOTE: Include Spline's blending modes. This could be part of BlendNode
1025
- #define SPE_BLENDING_NORMAL 0
1026
- #define SPE_BLENDING_MULTIPLY 1
1027
- #define SPE_BLENDING_SCREEN 2
1028
- #define SPE_BLENDING_OVERLAY 3
1029
1148
 
1030
- vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
1031
- return mix( a, b, alpha );
1149
+ return vec3(sqrt(res), abs(id));
1032
1150
  }
1151
+ `,[i]);return{toon:new Y(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
1152
+ float t = 0.0;
1153
+ float shadow = 1.0;
1033
1154
 
1034
- vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
1035
- return mix( a, a * b, alpha );
1036
- }
1155
+ if (positioning == 0) {
1037
1156
 
1038
- vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
1039
- vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
1040
- return mix( a, tmp, alpha );
1041
- }
1157
+ // Can't do this mode if lighting is "none"
1158
+ #if (defined(PHONG) || defined(LAMBERT) || defined(STANDARD))
1042
1159
 
1043
- vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
1044
- vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
1045
- return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
1046
- }
1160
+ // Algorithm from Chapter 10 of Graphics Shaders
1161
+ const vec3 weights = vec3(0.2125, 0.7154, 0.0721);
1162
+ vec3 lpos;
1163
+ vec3 l;
1164
+ float dproduct;
1047
1165
 
1048
- vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
1049
- if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
1050
- else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
1051
- else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
1052
- else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
1053
- return vec3( 1.0 );
1054
- }
1055
- `,"#include <packing>","#include <common>"].join(`
1056
- `),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
1057
- `),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
1058
- accumAlpha += (1.0 - accumAlpha) * alpha;
1059
- }`,""].join(`
1060
- `)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.requires.lights=t.lights,this.requires.fog=t.fog,this.mergeDefines(t.defines),this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
1061
- `}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
1062
- `}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
1063
- `}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
1064
- `}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",n="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+n+c+(s?"_"+s:""),type:e},a.push(l),a[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
1065
- `)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,n=t.length;o<n;++o){let s=t[o],a=s.type,l=s.name,c=s.size,h=this.getFormatByType(a);if(h===void 0)throw new Error("Node pars "+h+" not found.");h.includes("[]")?r+=e+" "+h.substring(0,h.length-2)+" "+l+`[${c}];
1066
- `:r+=e+" "+h+" "+l+`;
1067
- `}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof he?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new bi({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:n});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new bi({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:n});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,o,n){return this.createUniform("vertex",t,e,r,o,n)}createFragmentUniform(t,e,r,o,n){return this.createUniform("fragment",t,e,r,o,n)}include(t,e,r){let o;if(t=typeof t=="string"?rt.get(t):t,this.context.include===!1)return t.name;t instanceof K?o=this.includes.functions:t instanceof Ne?o=this.includes.consts:t instanceof yn&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let s=n[t.name];if(s||(s=n[t.name]={node:t,deps:[]},n.push(s),s.src=t.build(this,"source")),t instanceof K&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[e.name].deps.push(t),t.includes?.length)){let a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return cb[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case tr.CubeReflectionMapping:case tr.CubeRefractionMapping:return new oa(r);case tr.CubeUVReflectionMapping:return new ra(new ct(r));default:return new ct(r)}else{if(r.isVector2)return new lt(r);if(r.isVector3)return new mt(r);if(r.isVector4)return new vr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return hb[t]||t}getFormatByType(t){return pb[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return xd[t]}getIndexByElement(t){return xd.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=tr.LinearEncoding,e===tr.LinearEncoding&&this.context.gamma&&(e=tr.sRGBEncoding),e}};var wi=class extends he{constructor(e=new he){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
1068
- `;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Rt=class extends ia.ShaderMaterial{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e??new wi(new ht(ht.PROJECTION)),this.fragment=r??new wi(new Pe(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new gn(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(o=>requestAnimationFrame(o));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let o=(n,s,a)=>Math.min(Math.max(n,s),a);if(this.userData.layers){for(let n of this.userData.layers.getLayers())if(n.type=="displace"){this.uniformsBackup[`f${n.id}_intensity`]=n.uniforms[`f${n.id}_intensity`].value;let s=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new na;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>ia.NormalBlending,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(Rt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});var aa=require("three");var sa=class extends he{constructor(){super("basic");this.nodeType="Basic";this.color=new Pe(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(aa.UniformsUtils.merge([aa.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
1069
- `));let n=["#include <beginnormal_vertex>",`
1070
- #if !defined( USE_LAYER_DISPLACE )
1071
- #include <defaultnormal_vertex>
1072
- #endif
1166
+ #if (NUM_POINT_LIGHTS > 0)
1167
+
1168
+ #if defined(USE_SHADOWMAP) && (NUM_POINT_LIGHT_SHADOWS > 0)
1169
+ PointLightShadow pointLightShadow;
1170
+ #endif
1171
+
1172
+ #pragma unroll_loop_start
1173
+ for (int i = 0; i < NUM_POINT_LIGHTS; i++) {
1174
+ // Light positions are in view-space for some reason?
1175
+ lpos = (inverse(viewMatrix) * vec4(pointLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
1176
+ l = normalize(lpos - worldPosition);
1177
+
1178
+ dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
1179
+
1180
+ // TODO: we want to use "intensity" but it isn't available in the shader code
1181
+ //dproduct += dot(pointLights[UNROLLED_LOOP_INDEX].color, weights);
1182
+
1183
+ t = max(t, dproduct);
1184
+
1185
+ // Accumulate shadow contribution
1186
+ #if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS)
1187
+ pointLightShadow = pointLightShadows[UNROLLED_LOOP_INDEX];
1188
+ shadow *= getPointShadow(
1189
+ pointShadowMap[UNROLLED_LOOP_INDEX],
1190
+ pointLightShadow.shadowMapSize,
1191
+ pointLightShadow.shadowBias,
1192
+ pointLightShadow.shadowRadius,
1193
+ vPointShadowCoord[UNROLLED_LOOP_INDEX],
1194
+ pointLightShadow.shadowCameraNear,
1195
+ pointLightShadow.shadowCameraFar);
1196
+ #endif
1197
+ }
1198
+ #pragma unroll_loop_end
1199
+
1200
+ #endif
1201
+
1202
+ #if NUM_DIR_LIGHTS > 0
1203
+
1204
+ #if defined(USE_SHADOWMAP) && (NUM_DIR_LIGHT_SHADOWS > 0)
1205
+ DirectionalLightShadow directionalLightShadow;
1206
+ #endif
1207
+
1208
+ #pragma unroll_loop_start
1209
+ for (int i = 0; i < NUM_DIR_LIGHTS; i++) {
1210
+ // Use the direction vector for directional lights instead
1211
+ l = (inverse(viewMatrix) * vec4(directionalLights[UNROLLED_LOOP_INDEX].direction, 0.0)).xyz;
1212
+
1213
+ dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
1214
+ t = max(t, dproduct);
1215
+
1216
+ // Accumulate shadow contribution
1217
+ #if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS)
1218
+ directionalLightShadow = directionalLightShadows[UNROLLED_LOOP_INDEX];
1219
+ shadow *= getShadow(
1220
+ UNROLLED_LOOP_INDEX,
1221
+ directionalShadowMap[UNROLLED_LOOP_INDEX],
1222
+ directionalLightShadow.shadowMapSize,
1223
+ directionalLightShadow.shadowBias,
1224
+ directionalLightShadow.shadowRadius,
1225
+ vDirectionalShadowCoord[UNROLLED_LOOP_INDEX]);
1226
+ #endif
1227
+ }
1228
+ #pragma unroll_loop_end
1229
+
1230
+ #endif
1231
+
1232
+ #if NUM_SPOT_LIGHTS > 0
1233
+
1234
+ #if defined(USE_SHADOWMAP) && (NUM_SPOT_LIGHT_SHADOWS > 0)
1235
+ SpotLightShadow spotLightShadow;
1236
+ #endif
1237
+
1238
+ #pragma unroll_loop_start
1239
+ for (int i = 0; i < NUM_SPOT_LIGHTS; i++) {
1240
+ lpos = (inverse(viewMatrix) * vec4(spotLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
1241
+ l = normalize(lpos - worldPosition);
1242
+
1243
+ dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
1244
+ t = max(t, dproduct);
1245
+
1246
+ // Accumulate shadow contribution
1247
+ #if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS)
1248
+ spotLightShadow = spotLightShadows[UNROLLED_LOOP_INDEX];
1249
+ shadow *= getShadow(
1250
+ UNROLLED_LOOP_INDEX,
1251
+ spotShadowMap[UNROLLED_LOOP_INDEX],
1252
+ spotLightShadow.shadowMapSize,
1253
+ spotLightShadow.shadowBias,
1254
+ spotLightShadow.shadowRadius,
1255
+ vSpotShadowCoord[UNROLLED_LOOP_INDEX]);
1256
+ #endif
1257
+ }
1258
+ #pragma unroll_loop_end
1073
1259
 
1074
- vec3 displaced_position = position;
1075
- vec3 displaced_normal = normal;
1260
+ #endif
1076
1261
 
1077
- #if defined( USE_LAYER_DISPLACE )
1078
- vec3 transformed;
1079
- vec3 transformedNormal;
1080
- #endif
1081
- `,"#include <normal_vertex>",`
1082
- #if !defined( USE_LAYER_DISPLACE )
1083
- #include <begin_vertex>
1084
- #endif /* !USE_LAYER_DISPLACE */
1085
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1086
- `)}else{this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
1087
- `));let a=["#include <normal_fragment_begin>",o.code];n&&a.push(n.code,"#ifdef ALPHATEST"," if ( "+n.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),n?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
1088
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var la=class extends Rt{constructor(e=new sa,r){super(e,e,r);this.type="BasicNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}};var rr=class extends la{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}static fromMaterial(t){let e=new rr(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}};var Ni=require("three");var ca=class extends he{constructor(){super("phong");this.nodeType="Phong";this.color=new Pe(5855577),this.specular=new Pe(1118481),this.shininess=new X(30),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ni.UniformsUtils.merge([Ni.UniformsLib.fog,Ni.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1089
- `));let n=["#include <beginnormal_vertex>",`
1090
- #ifndef USE_LAYER_DISPLACE
1091
- #include <defaultnormal_vertex>
1092
- #endif
1262
+ t = clamp(t, 0.0, 1.0);
1263
+
1264
+ #endif
1093
1265
 
1266
+ } else if (positioning == 1) {
1267
+
1268
+ vec3 origin = mix(position, worldPosition, float(isWorldSpace));
1269
+ vec3 direction = normalize(source - origin);
1270
+ t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
1094
1271
 
1095
- vec3 displaced_position = position;
1096
- vec3 displaced_normal = normal;
1272
+ } else {
1097
1273
 
1098
- #ifdef USE_LAYER_DISPLACE
1099
- vec3 transformed;
1100
- vec3 transformedNormal;
1101
- #endif
1102
- `,"#include <normal_vertex>",`
1103
- #ifndef USE_LAYER_DISPLACE
1104
- #include <begin_vertex>
1105
- #endif
1106
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1107
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1108
- `));let p=["#include <normal_fragment_begin>",`
1109
- // NOTE: gl_FrontFacing alternative using face normal estimation.
1110
- vec3 viewdx = dFdx(vViewPosition);
1111
- vec3 viewdy = dFdy(vViewPosition);
1112
- vec3 faceNormal = normalize(cross(viewdx,viewdy));
1113
- if (dot(normal, faceNormal) < 0.0) {
1114
- normal *= -1.0;
1115
- }
1116
- `," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
1117
- if (outgoingLight != diffuseColor) {
1118
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1119
- accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
1120
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
1274
+ vec3 origin = worldPosition;
1275
+ vec3 source = cameraPosition - offset;
1276
+ vec3 direction = normalize(source - origin);
1277
+ t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
1278
+
1121
1279
  }
1122
- `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
1123
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ha=class extends Rt{constructor(e=new ca,r){super(e,e,r);this.type="PhongNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var bn=class extends ha{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}static fromMaterial(t){let e=new bn(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}};var Ci=require("three");var pa=class extends he{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Pe(5855577),this.emissive=new Pe(0),this.emissiveIntensity=new X(1),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ci.UniformsUtils.merge([Ci.UniformsLib.fog,Ci.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1124
- `));let n=["#include <beginnormal_vertex>",`
1125
- #ifndef USE_LAYER_DISPLACE
1126
- #include <defaultnormal_vertex>
1127
- #endif
1128
1280
 
1129
- vec3 displaced_position = position;
1130
- vec3 displaced_normal = normal;
1281
+ if (noiseStrength > 0.0) {
1282
+ // Distort with noise
1283
+ vec3 st = position / noiseScale;
1284
+
1285
+ // Voronoi "smooth" noise
1286
+ float noise = 1.0 - voronoiNoise(st).x;
1131
1287
 
1132
- #ifdef USE_LAYER_DISPLACE
1133
- vec3 transformed;
1134
- vec3 transformedNormal;
1135
- #endif
1136
- `,"#include <normal_vertex>",`
1137
- #ifndef USE_LAYER_DISPLACE
1138
- #include <begin_vertex>
1139
- #endif
1140
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
1141
- vec3 diffuse = vec3( 1.0 );
1142
- GeometricContext geometry;
1143
- geometry.position = mvPosition.xyz;
1144
- geometry.normal = normalize( transformedNormal );
1145
- geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
1146
- GeometricContext backGeometry;
1147
- backGeometry.position = geometry.position;
1148
- backGeometry.normal = -geometry.normal;
1149
- backGeometry.viewDir = geometry.viewDir;
1150
- vLightFront = vec3( 0.0 );
1151
- vIndirectFront = vec3( 0.0 );
1152
- #ifdef DOUBLE_SIDED
1153
- vLightBack = vec3( 0.0 );
1154
- vIndirectBack = vec3( 0.0 );
1155
- #endif
1156
- IncidentLight directLight;
1157
- float dotNL;
1158
- vec3 directLightColor_Diffuse;
1159
- vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
1160
- vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
1161
- #ifdef DOUBLE_SIDED
1162
- vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
1163
- vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
1164
- #endif
1165
- #if NUM_POINT_LIGHTS > 0
1166
- #pragma unroll_loop_start
1167
- for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
1168
- getPointLightInfo( pointLights[ i ], geometry, directLight );
1169
- dotNL = dot( geometry.normal, directLight.direction );
1170
- directLightColor_Diffuse = directLight.color;
1171
- vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1172
- #ifdef DOUBLE_SIDED
1173
- vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
1174
- #endif
1175
- }
1176
- #pragma unroll_loop_end
1177
- #endif
1178
- #if NUM_SPOT_LIGHTS > 0
1179
- #pragma unroll_loop_start
1180
- for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
1181
- getSpotLightInfo( spotLights[ i ], geometry, directLight );
1182
- dotNL = dot( geometry.normal, directLight.direction );
1183
- directLightColor_Diffuse = directLight.color;
1184
- vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1185
- #ifdef DOUBLE_SIDED
1186
- vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
1187
- #endif
1188
- }
1189
- #pragma unroll_loop_end
1190
- #endif
1191
- #if NUM_DIR_LIGHTS > 0
1192
- #pragma unroll_loop_start
1193
- for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
1194
- getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
1195
- dotNL = dot( geometry.normal, directLight.direction );
1196
- directLightColor_Diffuse = directLight.color;
1197
- vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1198
- #ifdef DOUBLE_SIDED
1199
- vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
1200
- #endif
1201
- }
1202
- #pragma unroll_loop_end
1203
- #endif
1204
- #if NUM_HEMI_LIGHTS > 0
1205
- #pragma unroll_loop_start
1206
- for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
1207
- vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
1208
- #ifdef DOUBLE_SIDED
1209
- vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
1210
- #endif
1211
- }
1212
- #pragma unroll_loop_end
1213
- #endif
1214
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1215
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
1216
- `));let p=["#include <normal_fragment_begin>",`
1217
- // NOTE: gl_FrontFacing alternative using face normal estimation.
1218
- vec3 viewdx = dFdx(vViewPosition);
1219
- vec3 viewdy = dFdy(vViewPosition);
1220
- vec3 faceNormal = normalize(cross(viewdx, viewdy));
1221
- bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
1222
- `,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&p.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
1223
- if (outgoingLight != diffuseColor) {
1224
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1225
- accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
1226
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
1227
- }
1228
- `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
1229
- `)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var ua=class extends Rt{constructor(e=new pa,r){super(e,e,r);this.type="LambertNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get emissive(){return this.fragment.emissive}set emissive(e){this.fragment.emissive=e}get emissiveIntensity(){return this.fragment.emissiveIntensity}set emissiveIntensity(e){this.fragment.emissiveIntensity=e}};var da=class extends ua{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};var Ti=require("three");var ma=class extends he{constructor(){super("toon");this.nodeType="Toon";this.color=new Pe(5855577),this.specular=new Pe(1118481),this.shininess=new X(30),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ti.UniformsUtils.merge([Ti.UniformsLib.fog,Ti.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1230
- `));let n=["#include <beginnormal_vertex>",`
1231
- #ifndef USE_LAYER_DISPLACE
1232
- #include <defaultnormal_vertex>
1233
- #endif
1288
+ // Voronoi cellular noise
1289
+ //float noise = 1.0 - rand(voronoiNoise(st).z);
1234
1290
 
1235
- vec3 displaced_position = position;
1236
- vec3 displaced_normal = normal;
1291
+ // Position warp noise
1292
+ // vec3 offset = vec3(
1293
+ // simplex3d(st),
1294
+ // simplex3d(st + vec3(111.1, 143.89, 217.19)),
1295
+ // simplex3d(st + vec3(171.1, 247.89, 117.23))
1296
+ // );
1297
+ // st += offset;
1298
+ // float noise = valueNoise(st);
1237
1299
 
1238
- #ifdef USE_LAYER_DISPLACE
1239
- vec3 transformed;
1240
- vec3 transformedNormal;
1241
- #endif
1242
- `,"#include <normal_vertex>",`
1243
- #ifndef USE_LAYER_DISPLACE
1244
- #include <begin_vertex>
1245
- #endif
1246
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1247
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
1248
- varying vec3 vViewPosition;
1249
- struct ToonMaterial {
1250
- vec3 diffuseColor;
1251
- vec3 specularColor;
1252
- float specularShininess;
1253
- float specularStrength;
1254
- };
1255
- void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
1256
- vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
1257
-
1258
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
1259
- reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
1260
- }
1261
- void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
1262
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
1263
- }
1264
- #define RE_Direct RE_Direct_Toon
1265
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
1266
- #define Material_LightProbeLOD( material ) (0)
1267
- `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
1268
- `));let p=["#include <normal_fragment_begin>",`
1269
- // NOTE: gl_FrontFacing alternative using face normal estimation.
1270
- vec3 viewdx = dFdx(vViewPosition);
1271
- vec3 viewdy = dFdy(vViewPosition);
1272
- vec3 faceNormal = normalize(cross(viewdx,viewdy));
1273
- if (dot(normal, faceNormal) < 0.0) {
1274
- normal *= -1.0;
1275
- }
1276
- `," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
1277
- if (outgoingLight != diffuseColor) {
1278
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1279
- accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
1280
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
1300
+ t += noise * noiseStrength;
1281
1301
  }
1282
- `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
1283
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var fa=class extends Rt{constructor(e=new ma,r){super(e,e,r);this.type="ToonNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var ga=class extends fa{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};var Sn=require("three");var ya=class extends he{constructor(){super("standard");this.nodeType="Standard";this.color=new Pe(5855577),this.roughness=new X(.3),this.metalness=new X(0),this.reflectivity=new X(.5),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Sn.UniformsUtils.merge([Sn.UniformsLib.fog,Sn.UniformsLib.lights])),Sn.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
1284
- `));let n=["#include <beginnormal_vertex>",`
1285
- #if !defined( USE_LAYER_DISPLACE )
1286
- #include <defaultnormal_vertex>
1287
- #endif
1288
1302
 
1289
- vec3 displaced_position = position;
1290
- vec3 displaced_normal = normal;
1303
+ t = clamp(t, 0.0, 1.0);
1291
1304
 
1292
- #if defined( USE_LAYER_DISPLACE )
1293
- vec3 transformed;
1294
- vec3 transformedNormal;
1295
- #endif
1296
- `,"#include <normal_vertex>",`
1297
- #if !defined( USE_LAYER_DISPLACE )
1298
- #include <begin_vertex>
1299
- #endif /* !USE_LAYER_DISPLACE */
1300
- `];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
1301
- `)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let n=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),h=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,u=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
1302
- `));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1303
- // NOTE: gl_FrontFacing alternative using face normal estimation.
1304
- vec3 viewdx = dFdx(vViewPosition);
1305
- vec3 viewdy = dFdy(vViewPosition);
1306
- vec3 faceNormal = normalize(cross(viewdx,viewdy));
1307
- if (dot(normal, faceNormal) < 0.0) {
1308
- normal *= -1.0;
1305
+ // Compute ramp color
1306
+ float p;
1307
+ vec4 color = colors[0];
1308
+ for (int i = 1; i < COLORS_MAX; i++) {
1309
+ p = clamp((t - steps[i-1]) / (steps[i] - steps[i-1]), 0.0, 1.0);
1310
+ color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
1309
1311
  }
1310
- `," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),p&&d.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),u?d.push(u.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+u.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
1311
- if (outgoingLight != diffuseColor) {
1312
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1313
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
1314
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
1312
+
1313
+ // Incorporate custom shadow color
1314
+ if (positioning == 0) {
1315
+
1316
+ vec3 blendedShadow = mix(color.rgb, shadowColor.rgb, shadowColor.a);
1317
+ color.rgb = mix(blendedShadow, color.rgb, shadow);
1318
+
1315
1319
  }
1316
- `),h&&d.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
1317
- `)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var xa=class extends Rt{constructor(e=new ya,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var va=class extends xa{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};var ba=require("three");var Oe=require("three");function vd(i,t){switch(i.data.type){case"light":return zt(i);case"fresnel":return db(i,t);case"gradient":return mb(i);case"depth":return fb(i);case"normal":return gb(i);case"noise":return yb(i,t);case"texture":return xb(i,t);case"rainbow":return vb(i);case"toon":return bb(i,t);case"outline":return Sb(i,t);case"transmission":return wb(i,t);case"matcap":return Nb(i,t);case"displace":return Cb(i);case"color":default:return ub(i,t)}}function bd(i){return{type:i.data.type}}function zt(i){let{alpha:t,mode:e}=i.data;return{...bd(i),alpha:t,mode:e}}function ub(i,t){return{...zt(i),color:Re(i.data.color,t)}}function db(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return{...zt(i),color:Re(s,t),bias:e,scale:r,intensity:o,factor:n}}function mb(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return{...zt(i),gradientType:t,smooth:e,colors:r.map(l=>new Oe.Vector4(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Oe.Vector2(...s),morph:new Oe.Vector2(...a),angle:n}}function fb(i){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=i.data;return{...zt(i),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new Oe.Vector3(...s),direction:a?new Oe.Vector3(...a):new Oe.Vector3(1,0,0),num:p,colors:l.map(u=>new Oe.Vector4(u[0],u[1],u[2],u[3])),steps:c,smooth:h}}function gb(i){let{cnormal:t}=i.data;return{...zt(i),cnormal:new Oe.Vector3(t[0],t[1],t[2])}}function yb(i,t){let{data:e}=i;return{...zt(i),scale:e.scale,move:e.move,fA:new Oe.Vector2(...e.fA),fB:new Oe.Vector2(...e.fB),size:new Oe.Vector3(...e.size),distortion:new Oe.Vector2(...e.distortion),colorA:Re(e.colorA,t),colorB:Re(e.colorB,t),colorC:Re(e.colorC,t),colorD:Re(e.colorD,t),noiseType:e.noiseType}}function xb(i,t){let{projection:e,axis:r,side:o,crop:n,size:s}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,p=new Oe.Texture,u;if(typeof a=="string")u=t?.getImage(a);else{let d=new Image;d.src=wn(a.data),d.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},u=d}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,{...zt(i),texture:p,mat:new Oe.Matrix3().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:n,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s}}function vb(i){let{data:t}=i;return{...zt(i),filmThickness:t.filmThickness,movement:t.movement,wavelengths:new Oe.Vector3(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new Oe.Vector3(...t.offset)}}function bb(i,t){let{data:e}=i;return{...zt(i),positioning:e.positioning,colors:e.colors.map(r=>new Oe.Vector4(r[0],r[1],r[2],r[3])),num:e.colors.length,steps:e.steps,source:new Oe.Vector3(...e.source),isWorldSpace:e.isWorldSpace,noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,shadowColor:Re(e.shadowColor,t),offset:new Oe.Vector3(...e.offset)}}function Sb(i,t){let{data:e}=i;return{...zt(i),outlineColor:Re(e.outlineColor,t),contourColor:Re(e.contourColor,t),outlineWidth:e.outlineWidth,contourWidth:e.contourWidth,outlineThreshold:e.outlineThreshold,contourThreshold:e.contourThreshold,outlineSmoothing:e.outlineSmoothing,contourFrequency:e.contourFrequency,contourDirection:e.contourDirection,positionalLines:e.positionalLines,compensation:e.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function wb(i,t){let{data:e}=i;return{...zt(i),thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}function Nb(i,t){let e=new Oe.Texture,{image:r}=i.data.texture,o;if(typeof r=="string")o=t?.getImage(r);else{let s=new Image;s.src=wn(r.data),s.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},o=s}e.image=o;let n=16777215;return{...zt(i),color:n,texture:e}}function Cb(i){let{data:t}=i,e={...bd(i),intensity:t.intensity};if(t.displacementType==="noise")return{...e,offset:new Oe.Vector3(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType};{let r=new Oe.Texture,o=new Oe.Matrix3().setUvTransform(0,0,1,1,0,0,0);return{...e,texture:r,mat:o,crop:t.crop}}}function Sd(i,t,e){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var Li=require("three"),Nn;(t=>{function i(e){return new Li.Color(e.x,e.y,e.z).getHex()}t.getHex=i})(Nn||(Nn={}));var wd;(t=>{function i(e){return new Li.Vector4(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(wd||(wd={}));var Nd;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new Li.Color(r.r,r.g,r.b).getHex()}e.getHex=t})(Nd||(Nd={}));function Ii(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):Yl(i,t)}function Cd(i,t){return i.map(e=>Ii(e,t))}function Yl(i,t){let e=i.layers??uo.defaultTwoLayerData("phong").layers,r=Tb(e),o;switch(r.category){case"basic":o=new rr;break;case"lambert":{o=new da;break}case"toon":{o=new ga;break}case"physical":o=new va;break;case"phong":default:{o=new bn;break}}o.name=i.name??"Untitled Material";let n=o.userData.layers;Lb(n);for(let s=e.length-1;s>=0;s--)Ib(n,e[s],t);switch(r.category){case"basic":break;case"lambert":{let l=o,h=Re(r.emissive,t);h instanceof ba.Color?l.emissive.value=h:l.emissive.value.setHex(Nn.getHex(h));break}case"toon":{let l=o,c=r;l.shininess.value=c.shininess;let h=Re(c.specular,t);h instanceof ba.Color?l.specular.value=h:l.specular.value.setHex(Nn.getHex(h));break}case"physical":let s=o,a=r;s.metalness.value=a.metalness,s.roughness.value=a.roughness,s.reflectivity.value=a.reflectivity;break;case"phong":default:{let l=o,c=r;l.shininess.value=c.shininess;let h=Re(c.specular,t);h instanceof ba.Color?l.specular.value=h:l.specular.value.setHex(Nn.getHex(h));break}}return o.penumbraSizeNode=t.penumbraSizeNode,n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function Tb(i){for(let t of i)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function Lb(i){for(let t of i.getLayers())i.removeLayer(t.id)}function Ib(i,t,e){let r=vd(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e?.transmissionSamplerMap,r.transmissionDepthMap=e?.transmissionDepthMap),r.type==="outline"&&(r.normalMap=e?.normalMap,r.depthMap=e?.normalRenderTarget.depthTexture);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Sd(n,o,t.data)}function Ab(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Ob(i,t){t.uniforms[`f${t.id}_normalMap`].value=i.texture,t.uniforms[`f${t.id}_depthMap`].value=i.depthTexture}function Db(i){if(i.geometry.attributes.extrudeNormals)return;let t=new Map,e=i.geometry.attributes.position.array,r=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new gt.Vector3(r[n],r[n+1],r[n+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new gt.Vector3})}t.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=t.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new gt.Float32BufferAttribute(o,3))}function Bb(i){if(i.geometry.attributes.extrudeNormals)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=new gt.Vector3;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;i.geometry.setAttribute("extrudeNormal",new gt.Float32BufferAttribute(e,3))}function Pi(i){i.objectType==="Mesh2D"?Bb(i):Db(i)}function Jl(i){let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(i.uuid.replace(/\D/g,"")),o=[gt.MathUtils.seededRandom(r),gt.MathUtils.seededRandom(r+1e4),gt.MathUtils.seededRandom(r+2e4)];for(let n=0;n<t.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new gt.BufferAttribute(e,3))}function Td(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission"),n=e.userData.layers.getLayersOfType("outline");return n.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),t.cloner?.refreshClonerMasks(),r=!0,i!==void 0&&n.forEach(s=>Ob(i,s)),Jl(t),Pi(t)),o.length===0&&n.length===0&&t.layers.set(0),r}function Ld(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission"),n=e.userData.layers.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),n.length>0&&t.layers.enable(8),t.cloner?.refreshClonerMasks(),r=!0,i!==void 0&&o.forEach(s=>Ab(i,s))),o.length===0&&n.length===0&&t.layers.set(0),r}function Id(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof gt.Mesh)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Td(i,r,r.material[o])&&(e=!0);else Td(i,r,r.material)&&(e=!0)}),e}function Pd(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof gt.Mesh)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Ld(i,r,r.material[o])&&(e=!0);else Ld(i,r,r.material)&&(e=!0)}),e}function Md(i,t){"material"in i&&_b(i.material,t),"geometry"in i&&i.geometry.dispose()}function _b(i,t){gc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var it=class extends $t(Sa.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Sa.Matrix4;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Ql[r.userData.type],n=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,n)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),Pi(this),r.getAttribute("randomColor")&&Jl(this),this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=Mi(r),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new yo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new yo(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),gr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)fr(e)&&(e.freeBooleanPointer(),gr(e)&&e.invalidateUpstreamBooleanData())}};var Eb=new to.Vector3(0,0,1),Ad=new to.Vector3,Od=new to.Vector3,Dd=new to.Matrix3,eo=class extends it{constructor(e=at.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new to.EventDispatcher;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Dd.getNormalMatrix(this.matrixWorld),Ad.copy(Eb).applyMatrix3(Dd).normalize(),Od.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Ad,Od)}clone(e){let r=this.shape.clone(),o=this.material,n=this.geometry.userData,s=at.create(Object.assign({},n,{shape:r})),a=new eo(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){it.prototype.raycast.call(this,e,r)}};function wa(i,t){return Gb(i)}function Gb(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Ce.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new Bd.BufferGeometryLoader().parse(i));let e;try{e=Mi(t)}catch(r){console.error(r)}if(!e){let r=Ce.createFromState(Jo.defaultData(),100,100);t.shape=r,e=Mi(t)}return e}var de;Qs.then(i=>{de=i});var _d=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Ed=new Uint32Array([0,1,2,3]),Gd=new Uint8Array([4]),Kt=class{static build(i,t,e,r,o){let n,s,a,l=i?.phongAngle??t?.phongAngle??35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(de.free_bvh(e),de.free_subdivision_surface(e));try{n=Kt.allocate(i,o)}catch(c){console.error(c,i),n=Kt.allocate({positionWASM:_d,indexWASM:Ed,verticesPerFaceWASM:Gd},o)}de.set_destination_refinement_level(n,0),s=Kt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Kt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(de.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Kt.buildLevel(n,!1,l):a=null),{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(i,t){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let e=i.shape!==void 0?t.geometry:wa(i),r,o,n,s;return{positions:r,triIndices:s}=rc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=oc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=_d,r=Ed,o=Gd);let a=e.length,l=r.length,c=o.length,h=e.length+n.length+s.length,p=r.length+o.length,u=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,m=p*Uint32Array.BYTES_PER_ELEMENT,g=de._malloc(u),x=new Float32Array(de.HEAPF32.buffer,g,h),y=new Uint32Array(de.HEAPU32.buffer,g+d,p);x.set(e,0),x.set(n,e.length),x.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let v;i?.scaleBaked?.some(S=>S!==1)&&(v=new $e.Matrix4().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let P=v?de.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):de.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return de._free(g),P}static buildLevel(i,t,e,r,o){let n=o?de.get_mesh_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(i,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,a=de.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=de.HEAPU32[a[c]>>2],p=de.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=de.HEAPU32[a[c]>>2],d=de.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=de.HEAPU32[a[c]>>2],g=de.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let x=de.HEAPU32[a[c]>>2],y=de.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,r===void 0){let v=new $e.BufferGeometry;if(v.setIndex(new $e.Uint32BufferAttribute(y,1)),v.setAttribute("position",new $e.Float32BufferAttribute(p,3)),v.setAttribute("normal",new $e.Float32BufferAttribute(d,3)),t){v.setAttribute("faceMap",new $e.Uint32BufferAttribute(g,1));let P=new Float32Array(d.length/3*4).fill(0);v.setAttribute("color",new $e.BufferAttribute(P,4))}return de.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=de.get_wireframe_data_for_base_level(i),o=4,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=de.HEAPU32[n[a]>>2],c=de.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=de.HEAPU32[n[a]>>2],p=de.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new $e.BufferGeometry;u.setAttribute("position",new $e.Float32BufferAttribute(c,3));let d=new Float32Array(c.length);for(let m=0,g=c.length;m<g;)d[m++]=e.r,d[m++]=e.g,d[m++]=e.b;return u.setAttribute("color",new $e.BufferAttribute(d,3)),u.setIndex(new $e.Uint32BufferAttribute(p,1)),de.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||de.set_destination_refinement_level(i,1);let r=e?de.get_topological_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(i,t?de.Level.CONTROL:de.Level.REFINED),o=6,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=de.HEAPU32[n[a]>>2],c=new Float32Array(de.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=de.HEAPU32[n[a]>>2],p=new Uint32Array(de.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=de.HEAPU32[n[a]>>2],d=new Uint8Array(de.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return de.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};var Rd=["getX","getY","getZ"];function rc(i,t){let e={},r=t?t.count:i.count,o=0,n=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let u=0;u<3;u++)p+=`${~~(i[Rd[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Rd[u]](h));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:s,triIndices:l}}var Na=new $e.Vector3,Zl=new $e.Vector3,ec=new $e.Vector3,tc=new $e.Vector3;function oc(i,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<n.length;l+=2)s+=(n[l]-n[(l===0?n.length:l)-2])*(n[l+1]+n[(l===0?n.length:l)-1]);i.length=0;let a=0;if(s<0)for(let l=0;l<n.length;l+=2)i.push(n[l],n[l+1],0),r.push(a++);else for(let l=n.length-2;l>=0;l-=2)i.push(n[l],n[l+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??t.length;n<s;)if(t[n+1]===t[n+3]&&t[n+2]===t[n+5]||t[n+0]===t[n+3]&&t[n+2]===t[n+4]){Na.set(i[t[n]*3],i[t[n]*3+1],i[t[n]*3+2]),Zl.set(i[t[n+1]*3],i[t[n+1]*3+1],i[t[n+1]*3+2]),ec.set(i[t[n+4]*3],i[t[n+4]*3+1],i[t[n+4]*3+2]),tc.set(i[t[n+5]*3],i[t[n+5]*3+1],i[t[n+5]*3+2]),Zl.sub(Na).normalize(),ec.sub(Na).normalize(),tc.sub(Na).normalize();let a=Zl.cross(ec).dot(tc);Math.abs(a)>.005?(r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3):(r.push(t[n],t[n+1],t[n+4],t[n+5]),o.push(4),n+=6)}else r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let l=0,c=0;l<i.length;l+=3,c++)i[l+2]===0&&(n.push(c),a++),i[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}n.reverse(),r.push(...n,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var or={};mc(or,{calcBoolean:()=>Fb,calcBooleanTopological:()=>Vb,freeMeshSet:()=>kb,getMeshSet:()=>Ub,transformMeshSet:()=>jb});var Rb,zd=new Promise(i=>{Rb=i});var Ai=require("three");var be,Cn;zd.then(i=>be=i);function zb(i,t){let e,{positions:r,triIndices:o}=rc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=oc(r,o,i);n=a.length,e=[];for(let l=0,c=0;l<n;l++){e.push(a[l]);for(let h=0;h<a[l];h++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),n=0;for(let a=0,l=0;l<e.length;)e[l++]=3,n++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:n}}function Vd(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=be._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(be.HEAPU32.buffer,n,t):new Float32Array(be.HEAPF32.buffer,n,t)).set(i,0),n}function Fd(i){switch(i){case 0:return be.OP.UNION;case 1:return be.OP.INTERSECTION;case 2:return be.OP.A_MINUS_B;case 3:return be.OP.B_MINUS_A;case 4:return be.OP.SYMMETRIC_DIFFERENCE;case 5:return be.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function Vb(i,t){Cn===void 0&&(Cn=be.init_csg());let e=Vd(i),r=be.csg_calc_topological(Cn,e,i.length,Fd(t));be._free(e);let o=6,n=be.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=be.HEAPU32[n[a]>>2],c=new Float32Array(be.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=be.HEAPU32[n[a]>>2],p=new Uint32Array(be.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=be.HEAPU32[n[a]>>2],d=new Uint8Array(be.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return be.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function Fb(i,t,e,r){Cn===void 0&&(Cn=be.init_csg());let o=Vd(i),n=be.csg_calc(Cn,o,i.length,r,Fd(t));be._free(o);let s=5,a=be.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=be.HEAPU32[a[c]>>2],p=be.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=be.HEAPU32[a[c]>>2],d=be.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=l[c];e.setAttribute("position",new Ai.Float32BufferAttribute(p,3)),e.setAttribute("normal",new Ai.Float32BufferAttribute(d,3));let g=be.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ai.Sphere),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},be.free_mesh_data(n),m}function Ub(i,t){if(be===void 0)return-1;let e,r,o;if(t&&i.userData.positions!==void 0){let g=i.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((x,y)=>x+y,0)+o);for(let x=0,y=0,v=0;x<g.verticesPerFace.length;x++){r[v++]=g.verticesPerFace[x];for(let P=0;P<g.verticesPerFace[x];P++)r[v++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=zb(i,t));let n=e.length,s=r.length,a=e.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,p=l*Uint32Array.BYTES_PER_ELEMENT,u=be._malloc(c),d=new Float32Array(be.HEAPF32.buffer,u,a),m=new Uint32Array(be.HEAPU32.buffer,u+h,l);return d.set(e,0),m.set(r,0),be.get_csg_mesh(u,n,u+h,s,o)}function jb(i,t){be.transform_csg_mesh(i,t.elements)}function kb(i){be.free_csg_mesh(i)}var Ql={ConeGeometry:lu,CubeGeometry:cu,CylinderGeometry:su,DodecahedronGeometry:pu,EllipseGeometry:Bu,HelixGeometry:Ru,IcosahedronGeometry:Vu,LatheGeometry:Fu,NonParametricGeometry:Uu,PolygonGeometry:ju,PyramidGeometry:ku,RectangleGeometry:Hu,SphereGeometry:qu,PlaneGeometry:Xu,BackdropGeometry:Ku,StarGeometry:Yu,TextFrameGeometry:Js,TorusGeometry:Qu,TorusKnotGeometry:ed,TriangleGeometry:td,VectorGeometry:at},Mi=i=>Ql[i.type].create(i);var Oi=require("three");var Ud=new Oi.Matrix4;var Ca=class extends it{constructor(e=new Oi.BufferGeometry,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let n=this.children[o];gr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(ld(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=or.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;or.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else gr(n)&&n.needsTransformForDownstream===!0?(or.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(Ud.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),or.transformMeshSet(n.booleanMeshSetAddress,Ud),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Oi.BufferGeometry,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=or.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Fe=require("three");var jd=require("three"),wr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new jd.BoxBufferGeometry(30,30,30),t};var pt=require("three");var yt=require("three"),Ta=new yt.Ray,nc=new yt.Sphere,kd=new yt.Matrix4,Nr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),nc.copy(n.boundingSphere),nc.applyMatrix4(s),e.ray.intersectsSphere(nc)===!1||(kd.copy(s).invert(),Ta.copy(e.ray).applyMatrix4(kd),n.boundingBox!==null&&Ta.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,d=n.drawRange,m,g;if(o===!1){let y=Math.max(0,d.start),v=Math.min(p.count,d.start+d.count);for(m=y,g=v;m<g;m+=3)if(l=p.getX(m),c=p.getX(m+1),h=p.getX(m+2),a=x(i,e,Ta,u,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let v=n.attributes.position,P=new yt.Vector3,S=new yt.Vector3,b=new yt.Vector3,_=new yt.Vector3,w=2,D=1/((i.scale.x+i.scale.y+i.scale.z)/3),C=D*D,I=Math.max(0,d.start),L=Math.min(v.count,d.start+d.count);for(let M=I,k=L-1;M<k;M+=w){if(P.fromBufferAttribute(v,M),S.fromBufferAttribute(v,M+1),Ta.distanceSqToSegment(P,S,_,b)>C)continue;_.applyMatrix4(i.matrixWorld);let ne=e.ray.origin.distanceTo(_);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function x(y,v,P,S,b,_,w){let f=new yt.Vector3,D=new yt.Vector3,C=new yt.Vector3,I=new yt.Vector3,L=new yt.Vector3;if(f.fromBufferAttribute(S,b),D.fromBufferAttribute(S,_),C.fromBufferAttribute(S,w),P.intersectTriangle(f,D,C,!1,I)===null)return null;L.copy(I),L.applyMatrix4(y.matrixWorld);let k=v.ray.origin.distanceTo(L);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:L.clone(),object:y}}};var La=new pt.Vector3,Yt=new pt.Camera,ic=class extends pt.LineSegments{constructor(e){let r=new pt.BufferGeometry,o=new pt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new pt.Color(15711266),c=new pt.Color(15711266),h=new pt.Color(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",h),p("u2","u3",h),p("u3","u1",h);function p(d,m,g){u(d,g),u(m,g)}function u(d,m){n.push(0,0,0),s.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}r.setAttribute("position",new pt.Float32BufferAttribute(n,3)),r.setAttribute("color",new pt.Float32BufferAttribute(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Yt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,s=1,a=o?.8:1e-4;nr("n1",r,e,Yt,-n,-s,a),nr("n2",r,e,Yt,n,-s,a),nr("n3",r,e,Yt,-n,s,a),nr("n4",r,e,Yt,n,s,a);let l=a;nr("f1",r,e,Yt,-n,-s,l),nr("f2",r,e,Yt,n,-s,l),nr("f3",r,e,Yt,-n,s,l),nr("f4",r,e,Yt,n,s,l);let c=l,h=.5;nr("u1",r,e,Yt,n*.7*h,s*1.1,c),nr("u2",r,e,Yt,-n*.7*h,s*1.1,c),nr("u3",r,e,Yt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function nr(i,t,e,r,o,n,s){La.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],La.x,La.y,La.z)}}var Ia=class extends wr(ic){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){Nr(this.object,this.geometry,e,r,!0)}};var Hd=require("three");var Tn=class extends wr(Hd.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,Tn.geometryHelper,e,r)}};var Wd=require("three");var Ln=class extends wr(Wd.AxesHelper){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){Nr(this.object,Ln.geometryHelper,e,r)}update(){}};var qd=require("three");var In=class extends wr(qd.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,In.geometryHelper,e,r)}};var Ma=require("three");var Pa=class extends wr(Ma.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,Pa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Pa._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let n=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(n);else this.cone.material.color.set(n)}}},Di=Pa;Di._vector=new Ma.Vector3;var Cr=(i,t)=>class extends i{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let n of this.children)qt(n)&&n.traverseEntity(s=>{_r(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Re(o.color,n)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var Pn=new Fe.Vector3,sc=new Fe.Vector3,Gr=class extends Cr($t(Fe.Camera),Ia){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=lo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Fe.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,n??-5e4,s),this.perspCamera=new Fe.PerspectiveCamera(o,e/r,n??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let o=new Gr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Pn),this.targetOffset=Pn.distanceTo(e)}getTarget(e=new Fe.Vector3){return this.getWorldDirection(sc),this.getWorldPosition(Pn),sc.multiplyScalar(this.targetOffset),e.copy(Pn).add(sc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pn),Pn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Fe.Quaternion),r=new Fe.Vector3(0,0,1).applyQuaternion(e),o=new Fe.Vector3().copy(Fe.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Fe.Vector3().copy(Fe.Object3D.DefaultUp).projectOnPlane(r),s=new Fe.Vector3().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Fe.Vector3),n=e.getWorldDirection(new Fe.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Fe.Vector3),n=this.getWorldDirection(new Fe.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().sub(n),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,s,a):this.orthoCamera.setViewOffset(e,r,o,n,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return ko(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};var $d=require("three");var Rr=class extends Cr($t($d.Group),Ln){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Rr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}};var bo=require("three");var Mn=class extends Cr($t(bo.DirectionalLight),Tn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let n=new bo.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Mn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof bo.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof bo.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof bo.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&id(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};var xt=require("three");var An=class extends Cr($t(xt.PointLight),In){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new xt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new xt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new xt.Box3(n,s),l=new xt.Box3Helper(a,new xt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new An().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xt.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xt.Box3Helper&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof xt.Box3Helper){let o=this.shadow.camera,n=new xt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new xt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(n,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};var At=require("three");var Xd=new At.Vector3,Kd=new At.Vector3,Yd=new At.Quaternion,On=class extends Cr($t(At.SpotLight),Di){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=At.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new At.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new On().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof At.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof At.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof At.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Kd.setFromMatrixPosition(this.matrixWorld),Yd.setFromRotationMatrix(this.matrixWorld),Xd.copy(this.up).applyQuaternion(Yd).negate().multiplyScalar(this.distance),this.target.position.copy(Kd).add(Xd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Jd=i=>i.tagName==="VIDEO",Dn=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;Jd(s)?n=s.videoWidth/s.videoHeight:n=s.width/s.height,o>n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*n/o):r.repeat.set(1,1*n/o)),o<n&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/n*-1,1):r.repeat.set(1*o/n,1)),o==n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,n=r.image!==void 0?r.image.width/r.image.height:1,s;o>n?s={x:1,y:n/o}:o<n?s={x:o/n,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.userData.layers,n=o.getLayers();for(let s=0;s<n.length;s++){let a=n[s];hd(a)&&(Dn.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;Jd(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/n):r.repeat.set(1/t,1/e*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*n/s*-1,1/e):r.repeat.set(1/t*n/s,1/e)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Aa=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&Dn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Bn=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var _n=class extends Bn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var Jt=require("three"),Qd=require("three/examples/jsm/loaders/FontLoader.js"),Xe=class extends Jt.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new Jt.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:Jt.DoubleSide})){let c=Xe.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new Jt.Vector2,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Xe._fontPath}static set FONTS_PATH(e){Xe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Jt.Vector3(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Xe.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Xe.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Xe.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Xe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Xe.fontCache[e]?r(Xe.fontCache[e]):new Qd.FontLoader().load(Xe.FONTS_PATH+e+".json",s=>{Xe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Xe.charCache[e]){if(Xe.charCache[e][o]&&Xe.charCache[e][o].fontFamily===r)return Xe.charCache[e][o]}else Xe.charCache[e]={};let n=Xe.fontCache[r],s=n.generateShapes(e,1);return Xe.charCache[e][o]={geometry:new Jt.ShapeBufferGeometry(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Xe.charCache[e][o]}},Vt=Xe;Vt.charCache={},Vt.fontCache={},Vt._fontPath="/_assets/_fonts/";var Tr=require("three");var ac=require("three"),Oa=new ac.Vector2,So=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new ac.Vector2(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,n){switch(r){case 1:this.leftAlign(t,n);break;case 3:this.centerAlign(this.spaceLeft(e),t,n);break;case 2:this.rightAlign(this.spaceLeft(e),t,n);break;case 4:this.justifyAlign(this.spaceLeft(e),t,n);break}}offsetCharacters(t,e,r){Oa.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Oa),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let n=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),Oa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Oa),e)}clone(){let t=new So(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var lc=class extends it{constructor(e){super(e,new rr({transparent:!0,opacity:1,visible:!1,side:Tr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Tr.Object3D,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Tr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=Js.create({parameters:{width:r.width,height:r.height}}),s=new lc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Vt.loadFont(o),r.text=e;let n=r.textOrigin,s=new Tr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Tr.DoubleSide}),a=e.split(`
1318
- `),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new So(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let d={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let g=new Vt(d,m);return p.addChar3D(g,n),this.charContainer.add(g),g}),l+=p.maxCharSize*p.lineHeight,p}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let n=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Vt&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,l=e.parameters?.height??s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==n&&(n<a?this.checkCapacity():n>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.textLines;for(let s=e;s<n.length;s++){n[s].updateYLinePos(this.getNewLinePosition(s)),n[s].fullUpdate(o);let a=[];for(;n[s].checkOverFlow(r.textFrame.maxLineSize);)n[s].containSpaceOverFlow()?a.unshift(n[s].getWord(n[s].message.length-1,-1)):a.unshift(n[s].popChar());if(a.length>0){n[s+1]===void 0?(n[s].isEndLine(!1),this.createTextLine()):n[s].endLine&&(this.createTextLine(s+1),n[s].isEndLine(!1),n[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)n[s+1].addChar3D(a[c][h],o,l),l+=1;n[s+1].fullUpdate(o)}n[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(n);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&s[a-1].addChar3D(l[h],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new So(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,n=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<n.length;a++)n[a].updateYLinePos(this.getNewLinePosition(a)),n[a].fullUpdate(o.textOrigin),n[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,n=0;for(let s=0;s<e;s+=1)n+=o[s].maxCharSize*o[s].lineHeight;return n}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.color?.isColor&&(l.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await Vt.loadFont(e);let o=this.userData.textFrame,n=o.textLines;o.fontFamily=e;for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,n=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<n.length;a++)n[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Vt.loadFont(o.fontFamily);let n=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let n=0;n<o.length;n++)o[n].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Re(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Rr;o.name="Text Shape";let n=Vt.fontCache[e];for(let s of this.charContainer.children)s instanceof Vt&&n.generateShapes(s.char,1).forEach(a=>{let l=new Ce().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=at.create({shape:l}),h=new rr({side:Tr.DoubleSide});h.color=r;let p=new eo(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},wo=lc;wo.VerticalAlign=hl,wo.HorizontalAlign=cl,wo.TextTransform=pl;var Zd=require("three/examples/jsm/loaders/DRACOLoader.js");var ro;function Wb(){return ro||(ro=new Zd.DRACOLoader,ro.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ro.decoderPending}async function qb(i){if(ro){let t={attributeIDs:ro.defaultAttributeIDs,attributeTypes:ro.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ro.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function em(i,t){let[e,r]=qa(_s.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await Wb();for(let n of o){let s=await qb(Xa(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:l,array:c,itemSize:h})=>{a[l]={array:c,itemSize:h,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var cc=new Map,Bi={url:"head",time:0,data:null,next:null,prev:null},En={url:"tail",time:1/0,data:null,next:null,prev:null};Bi.next=En;En.prev=Bi;var tm=0;function wn(i){if(typeof i=="string")return i;let t=Date.now(),e=cc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},cc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=En.prev,e.next=En,En.prev.next=e,En.prev=e,t-tm>1e3*10&&(tm=t+1e3,setTimeout(()=>{let r=Date.now(),o=Bi.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),cc.delete(o.data),o=o.next,o.prev=Bi,Bi.next=o},900)),e.url}var st=require("three");var rm=new rr,Da=class extends Pt{},Ba=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new st.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:st.LinearMipmapLinearFilter,magFilter:st.LinearFilter,wrapS:st.ClampToEdgeWrapping,wrapT:st.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new st.DepthTexture(2048,2048),this.normalRenderTarget=new st.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:st.NearestFilter,magFilter:st.NearestFilter,type:st.FloatType}),this.normalRenderTarget.depthTexture=new st.DepthTexture(1024,1024),this.penumbraSizeNode=new tt(5,t.penumbraSize),this.resolutionNode=new lt(1,1),this.pixelRatioNode=new X(window.devicePixelRatio),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,Yl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===rm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??rm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=wn(e),!0;{let r=new Image;return r.src=wn(e),r.onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Da(e.r,e.g,e.b,e.a):this.colors[t]=new Da(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};var Ft=require("three");var wt=require("three");var sm=_m(nm());var hc;Qs.then(i=>{hc=i});var am=new wt.Matrix4,$b=new wt.Matrix4,Xb=new wt.Matrix4,ir=new wt.Box3,oo=new wt.Vector3,Kb=new wt.Matrix4,Yb=new wt.Matrix4,Gn=class extends it{constructor(e,r,o,n){super(o??r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new wt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new wt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Kt.build(r.geometry,void 0,void 0,!r.flatShading),l=Ii(r.material,o),c=new Gn(n,s,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new _n(this.geometry,this.material).shallowCopy(this,e)}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Kt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,Pi(this),this.cloner)for(let a of this.cloner.children)a.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Kt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Kt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Kt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Kt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,it.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:n,q:s}=(0,sm.SVD)(r),a=am.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=$b.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=Xb.copy(l).transpose();this.shearScale=Kb.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Yb.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(h=>Math.abs(s[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new wt.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;ir.setFromBufferAttribute(r),ir.getCenter(o),e.boundingSphere.radius=o.distanceTo(ir.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ir.getSize(oo);let n={width:oo.x,height:oo.y,depth:oo.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;ir.min.set(e[0],e[2],e[4]),ir.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ir.min.applyMatrix4(this.shearScaleInv),ir.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new wt.Sphere);let o=r.boundingSphere.center;ir.getCenter(o),r.boundingSphere.radius=o.distanceTo(ir.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ir.getSize(oo);let n={width:oo.x,height:oo.y,depth:oo.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,im(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(im(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function im(i,t,e,r){let o=i.position.array,n=i.normal.array,s=am.makeScale(t,e,r).invert().elements,a,l,c;for(var h=0,p=o.length;h<p;h+=3)o[h]*=t,o[h+1]*=e,o[h+2]*=r,a=n[h],l=n[h+1],c=n[h+2],n[h]=s[0]*a+s[4]*l+s[8]*c,n[h+1]=s[1]*a+s[5]*l+s[9]*c,n[h+2]=s[2]*a+s[6]*l+s[10]*c}var no=require("three");function lm(i,t){t.flatShading!==void 0&&(i.flatShading=t.flatShading,i.needsUpdate=!0),t.wireframe!==void 0&&(i.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?i.side=no.FrontSide:t.side===1?i.side=no.BackSide:i.side=no.DoubleSide)}function Jb(i,t){if(Array.isArray(i.material))for(let e of i.material)lm(e,t);else{let e=i.material;lm(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function cm(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Gn.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new no.BufferGeometry:wa(t.geometry,e),n="materials"in t?Cd(t.materials,e):Ii(t.material,e);Vs.is2DParametricMesh(o.userData.type)?r=new Aa(o,n):o?.userData.type==="VectorGeometry"?r=new eo(o,n):t.geometry.type==="NonParametricGeometry"?r=new _n(o,n):t.geometry.type==="BooleanGeometry"?(r=new Ca(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Bn(o,n),r.uuid=i,r.fromState(t,e)}return Jb(r,t),r}function hm(i,t,e){return t.type==="Mesh"?cm(i,t,e):t.type==="TextFrame"?wo.createFromState(i,t,e):t.type==="Empty"?Rr.createFromState(i,t):t.type==="PointLight"?An.createFromState(i,t,e):t.type==="SpotLight"?On.createFromState(i,t,e):t.type==="DirectionalLight"?Mn.createFromState(i,t,e):Ho.is(t.type)?Gr.createFromState(i,t):(console.error(t),new Rr)}var pm=new Ft.Vector3,pc=class extends ea(Ft.Scene){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Ft.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Ft.Color(1,0,0);this.bgColor=new Ft.Color(1,1,1);this.entityByUuid={};this.ambientLight=new Ft.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=Pd(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=Id(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Re(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Gr&&this.switchActiveCamera(o)}this.traverse(o=>{gr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Md(r,e)});for(let r of this.children)qt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Gr.createFromState(pc.PERSONAL_CAMERA_ID,{...Us.defaultData,name:"Personal Camera"});return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=n=>{for(let s of n.children)qt(s)&&!s.raycastLock&&s.visible&&((fr(s)||_r(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)qt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Re(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){nd(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Re(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let n of e)this.createChildObject(n.id,n.data,n.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,n,s){let a=hm(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),gr(n)&&fr(a)&&(a.prevBooleanObjectParent=n),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let n=0,s=e.length;n<s;++n){let{id:a,recursive:l}=e[n],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new Ft.Box3;return o.setFromPoints(r),o.getCenter(pm),pm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof it)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,n;e>=r?(o=r/e,n=1):(o=1,n=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=n})})}},_i=pc;_i.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var Qb=require("three"),Zb=require("three/examples/jsm/utils/BufferGeometryUtils.js");function um(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}var Ei=require("three");function dm(i){let t=new Set;return i.traverse(e=>{if(fr(e))if(Je(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);eS(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Ei.Color,specularColor:new Ei.Color}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(Ei.ShaderLib.physical.uniforms,o.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):tS(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function eS(i){return i.userData.layers.getLayersOfType("transmission").length>0}function tS(i){let t=i.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function mm(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function fm(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,n)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,n))}}t.push(r.name)}),i}var gm=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ym(i){let t=[];return i.traverse(e=>{e instanceof yo&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,n=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&um(l),l}),s=(0,gm.mergeBufferGeometries)(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function xm(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function vm(i){Object.values(i.shared.materials).forEach(t=>{uc(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?uc(e.material):"materials"in e&&e.materials.forEach(r=>{uc(r)})})}function uc(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var bm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ea=class extends Ga.Loader{load(t,e,r,o=console.error){let n=new Ga.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(bm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(bm),n.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await em(t,vm),r=new Ba(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new _i(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let n=e.scene.publish.playCamera;if(n){let s=o.find(n);s&&od(s)&&Object.assign(s,{makeDefault:!0})}return o=ym(o),o=dm(o),o=mm(o),o=fm(o),o=xm(o),o}};
1320
+
1321
+ // Accumulate alpha as usual
1322
+ float lalpha = alpha * color.a;
1323
+ calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
1324
+ accumAlpha += (1.0 - accumAlpha) * lalpha;
1325
+
1326
+ return color.xyz;
1327
+
1328
+ }`,[ht.simplex,e,o,s])}}();var Sr=class{constructor(r,e,t,o){this.type=r;this.id=e;this.uuid=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i]}static create(r,e,t,o){if(t.type==="light")return wr.createLigherLayer(r,e,t,o);if(t.type==="texture"){let i=o.image(t.texture.image),s=new Mi(i,t.texture.wrapping),a=new da(i),l=new be.Matrix3().setUvTransform(t.texture.offset[0],t.texture.offset[1],t.texture.repeat[0],t.texture.repeat[1],0,0,0),c=new Sn(l),u=new W(t.crop?1:0),m=new ge(t.projection??0),p=new ge(["x","y","z"].indexOf(t.axis)??0),d=new ge(t.side??0),f=new rt(t.size?new be.Vector2(t.size[0],t.size[1]):new be.Vector2(100,100)),g=new W(t.alpha??1),x=new ge(t.mode??0),y=new Ci(s,a,u,m,p,d,f,c,g,x),v=new Ne(y.calpha,"f");return new nt("texture",r,e,{texture:s,textureSize:a,crop:u,projection:m,axis:p,side:d,size:f,mat:c,alpha:g,mode:x},y,x,v)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Mi(i,t.texture.wrapping),a=new W(t.alpha??1),l=new ge(t.mode??0),c=new Ai(s,a,l),u=new Ne(c.calpha,"f");return new nt("matcap",r,e,{texture:s,alpha:a,mode:l},c,l,u)}else{let i=yb(r,e,t,o);for(let s in t)Wl(s,i,t);return i}}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:yd(o.props,t,this,e)}else if(o.path[0]==="texture")return"texture"in e?Hl(o.props,t,this,e.texture):!0;return!1}dispose(){}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},nt=class extends Sr{constructor(e,t,o,i,s,a,l){super(e,t,o,i);this.color=s;this.mode=a;this.alpha=l}},Ln=class extends Sr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},wr=class extends Sr{constructor(e,t,o,i){super("light",e,t,{alpha:i.shadingAlpha,mode:i.shadingBlend});this.data=o;this.node=i}static createLigherLayer(e,t,o,i){let s,a=new W(o.alpha),l=new ge(o.mode);return o.category==="lambert"?(s=new pi,s.emissive=new Ie(i.color(o.emissive)??0)):o.category==="phong"?(s=new ma,s.shininess=new W(o.shininess??30),s.specular=new Ie(i.color(o.specular)??1118481)):o.category==="toon"?(s=new hi,s.shininess=new W(o.shininess??30),s.specular=new Ie(i.color(o.specular)??1118481)):o.category==="physical"?(s=new di,s.roughness=new W(o.roughness??.3),s.metalness=new W(o.metalness??0),s.reflectivity=new W(o.reflectivity??.5)):s=new eo,s.alpha=new W(1),s.shadingAlpha=a,s.shadingBlend=l,new wr(e,t,o,s)}};function vd(n){let r=n instanceof Sr?n.type:n;return r==="texture"||r==="displace_map"||r==="matcap"}function gb(n,r,e,t){switch(n){case"color":{let o=new Ie(t.color??5855577),i=new W(t.alpha??1),s=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new ge(t.mode??0);return o.alpha=i,new nt(n,r,e,{color:o,alpha:i,mode:a},o,a,s)}case"fresnel":{let o=new Ie(t.color??16777215),i=new W(t.bias??.1),s=new W(t.scale??1),a=new W(t.intensity??2),l=new W(t.factor??1),c=new W(t.alpha??1),u=new ge(t.mode??0),m=new xi(o,i,s,a,l,c,u),p=new Ne(m.calpha,"f");return new nt(n,r,e,{color:o,bias:i,scale:s,intensity:a,factor:l,alpha:c,mode:u},m,u,p)}case"rainbow":{let o=new W(t.filmThickness??30),i=new W(t.movement??0),s=new pt(t.wavelengths??new be.Vector3(0,0,0)),a=new W(t.noiseStrength??0),l=new W(t.noiseScale??1),c=new pt(t.offset??new be.Vector3(0,0,0)),u=new W(t.alpha??1),m=new vi(o,i,s,a,l,c,u),p=new Ne(m.calpha,"f"),d=new ge(t.mode??0);return new nt(n,r,e,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:a,noiseScale:l,offset:c,alpha:u,mode:d},m,d,p)}case"transmission":{let o=new W(t.thickness??10),i=new W(t.ior??1.5),s=new W(t.roughness??.5),a=new rt(t.transmissionSamplerSize??new be.Vector2(2048,2048)),l=t.transmissionSamplerMap??new be.Texture,c=t.transmissionDepthMap??new be.Texture,u=new wt(l),m=new wt(c),p=window.innerWidth,d=window.innerHeight,f=p>=d?new rt(d/p,1):new rt(1,p/d),g=new W(t.alpha??1),x=new Si(o,i,s,a,u,m,f,g),y=new Ne(x.calpha,"f"),v=new ge(t.mode??0);return new nt(n,r,e,{thickness:o,ior:i,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:u,transmissionDepthMap:m,aspectRatio:f,alpha:g,mode:v},x,v,y)}case"toon":{let o=new ge(t.positioning??0),i;t.colors?i=new Jt(t.colors.length,t.colors):(i=new Jt(10,new be.Vector4(0,0,0,1)),i.value[1]=new be.Vector4(1,1,1,1));let s;t.steps?s=new ot(t.steps.length,t.steps):(s=new ot(10,1),s.value[0]=0);let a=new pt(t.source??new be.Vector3(0,0,0)),l=new to(t.isWorldSpace??!0),c=new W(t.noiseStrength??0),u=new W(t.noiseScale??1),m=new Ht(t.shadowColor),p=new pt(t.offset??new be.Vector3(0,0,0)),d=new W(t.alpha??1),f=new Oi(o,i,s,a,l,c,u,m,p,d),g=new Ne(f.calpha,"f"),x=new ge(t.mode??0);return new nt(n,r,e,{positioning:o,colors:i,steps:s,source:a,isWorldSpace:l,noiseStrength:c,noiseScale:u,shadowColor:m,offset:p,alpha:d,mode:x},f,x,g)}case"outline":{let o=new Ie(t.outlineColor??16777215),i=new Ie(t.contourColor??16777215),s=new W(t.outlineWidth??.1),a=new W(t.contourWidth??.1),l=new W(t.outlineThreshold??.1),c=new W(t.contourThreshold??.1),u=new W(t.outlineSmoothing??.1),m=new W(t.contourFrequency??.1),p=new pt(t.contourDirections??new be.Vector3(0,1,0)),d=new to(t.positionalLines??!1),f=new to(t.compensation??!0),g=t.normalMap??new be.Texture,x=new wt(g),y=t.depthMap??new be.Texture,v=new wt(y),P=t.pixelRatio??new W(window.devicePixelRatio),S=t.resolution??new rt(new be.Vector2(1,1)),b=new W(t.alpha??1),E=new bi(o,i,s,a,l,c,u,m,p,d,f,S,x,v,P,b),w=new Ne(E.calpha,"f"),h=new ge(t.mode??0);return new nt(n,r,e,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:a,outlineThreshold:l,contourThreshold:c,outlineSmoothing:u,contourFrequency:m,contourDirection:p,positionalLines:d,compensation:f,resolution:S,normalMap:x,depthMap:v,pixelRatio:P,alpha:b,mode:h},E,h,w)}case"depth":{let o=new ge(t.gradientType??0),i=new to(t.smooth??!1),s=new W(t.near??50),a=new W(t.far??200),l=new W(t.isVector??1),c=new W(t.isWorldSpace??0),u=new pt(t.origin??new be.Vector3),m=new pt(t.direction??new be.Vector3),p=new ge(t.num??0),d;t.colors?d=new Jt(p.value+1,t.colors):(d=new Jt(p.value+1,new be.Vector4(0,0,0,1)),d.value[1]=new be.Vector4(1,1,1,1));let f;t.steps?f=new ot(p.value+1,t.steps):(f=new ot(p.value+1,1),f.value[0]=0);let g=new W(t.alpha??1),x=new ge(t.mode??0),y=new wi(o,i,s,a,l,c,u,m,d,f,p,g),v=new Ne(y.calpha,"f");return new nt(n,r,e,{gradientType:o,smooth:i,near:s,far:a,isVector:l,isWorldSpace:c,origin:u,direction:m,colors:d,steps:f,num:p,alpha:g,mode:x},y,x,v)}case"noise":{let o=new W(t.scale??1),i=new pt(t.size??new be.Vector3(100,100,100)),s=new W(t.move??1),a=new rt(t.fA??new be.Vector2(1.7,9.2)),l=new rt(t.fB??new be.Vector2(8.3,2.8)),c=new rt(t.distortion??new be.Vector2(1,1)),u=new Ht(t.colorA),m=new Ht(t.colorB),p=new Ht(t.colorC),d=new Ht(t.colorD),f=new W(t.alpha??1),g=new ge(t.mode??0),x=new ge(t.noiseType??0),y=new yi(o,i,s,a,l,c,u,m,p,d,f,x),v=new Ne(y.calpha,"f");return new nt(n,r,e,{scale:o,size:i,move:s,fA:a,fB:l,distortion:c,colorA:u,colorB:m,colorC:p,colorD:d,alpha:f,mode:g,noiseType:x},y,g,v)}case"normal":{let o=new pt(t.cnormal??new be.Vector3(1,1,1)),i=new W(t.alpha??1),s=new ge(t.mode??0),a=new Ii(o,i),l=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return l.keywords.alpha=i,new nt(n,r,e,{cnormal:o,alpha:i,mode:s},a,s,l)}case"gradient":{let o=new ge(t.gradientType??0),i=new to(t.smooth??!1),s;t.colors?s=new Jt(t.colors.length,t.colors):(s=new Jt(10,new be.Vector4(0,0,0,1)),s.value[1]=new be.Vector4(1,1,1,1));let a;t.steps?a=new ot(t.steps.length,t.steps):(a=new ot(10,1),a.value[0]=0);let l=new rt(t.offset??new be.Vector2(0,0)),c=new rt(t.morph??new be.Vector2(0,0)),u=new W(t.angle??0),m=new W(t.alpha??1),p=new ge(t.mode??0),d=new Ni(o,i,s,a,l,c,u,m),f=new Ne(d.calpha,"f");return new nt(n,r,e,{gradientType:o,smooth:i,colors:s,steps:a,offset:l,morph:c,angle:u,alpha:m,mode:p},d,p,f)}case"displace":{let o=new ge(t.displacementType??0);if(o.value===0){let i=new pt(t.offset??new be.Vector3(0,0,0)),s=new W(t.scale??10),a=new W(t.intensity??8),l=new W(t.movement??1),c=new W(t.alpha??1),u=new ge(t.mode??0),m=new ge(t.noiseType??0),p=new Tn(o,a,l,i,s,m);return new Ln(n,r,e,{displacementType:o,offset:i,scale:s,intensity:a,movement:l,alpha:c,mode:u,noiseType:m},p)}else{let i=t.texture??new be.Texture,s=i.matrix;t.mat&&s.copy(t.mat);let a=new W(t.intensity??8),l=new wt(i),c=new W(t.crop??0),u=new W(t.alpha??1),m=new ge(t.mode??0),p=new Tn(o,a,l,c);return new Ln(n,r,e,{displacementType:o,intensity:a,texture:l,crop:c,mat:p.mat,alpha:u,mode:m},p)}}default:{let o=new Ie(1,0,0,1),i=new W(1),s=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let a=new ge(0);return o.alpha=i,new nt(n,r,e,{color:o,alpha:i,mode:a},o,a,s)}}}function yb(n,r,e,t){let o=md(e,t);return gb(e.type,n,r,o)}function Wl(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}var Zt=class extends fa.ShaderMaterial{constructor(e,t){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile;let o=e.layers??_r.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Sr.create(this.layerIdGen++,i.id,i.data,t)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof wr),this.lightLayer===void 0&&(this.lightLayer=new wr(0,"",Xr.defaultData("light","basic"),new eo)),this.lightLayer.node instanceof eo||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(this.data=t,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=Sr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(l=>l.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===i);if(s){let a=t.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let c=Sr.create(this.layerIdGen++,i,a,o);this.layers.splice(this.layers.findIndex(u=>u.uuid===i),1,c),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof nt),t=this.layers.findIndex(o=>o instanceof wr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof nt&&(o=new Ti(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof wr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof nt&&(e=new Ti(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Ln);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new At(t,e[o].position,At.ADD),t=new At(t,new W(.5).setReadonly(!0),At.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,t){this.build({renderer:t}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(i,s,a)=>Math.min(Math.max(i,s),a);for(let i of this.layers)if(i.type=="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(e){e=e??{};let t=e.builder??new ua;return t.setMaterial(this,e.renderer),t.build(this.fragment,this.fragment),this.vertexShader=t.getCode("vertex"),this.fragmentShader=t.getCode("fragment"),this.defines=t.defines,this.uniforms=t.uniforms,this.extensions=t.extensions,this.updaters=t.updaters,this.fog=t.requires.fog,this.lights=t.requires.lights,this.transparent=t.requires.transparent||this.blending>fa.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});var wo=class extends Zt{};var je=require("three");function bb(n,r){r.uniforms[`f${r.id}_transmissionSamplerMap`].value=n.texture,r.uniforms[`f${r.id}_transmissionDepthMap`].value=n.depthTexture}function Sb(n,r){r.uniforms[`f${r.id}_normalMap`].value=n.texture,r.uniforms[`f${r.id}_depthMap`].value=n.depthTexture}function wb(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let r=new Map,e=n.geometry.attributes.position.array,t=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=new je.Vector3(t[i],t[i+1],t[i+2]);r.has(s)?r.get(s)?.normals.push(a):r.set(s,{normals:[a],result:new je.Vector3})}r.forEach((i,s)=>{for(let a of i.normals)i.result.add(a);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,a=r.get(s)?.result;a&&(o[i]=a.x,o[i+1]=a.y,o[i+2]=a.z)}n.geometry.setAttribute("extrudeNormal",new je.Float32BufferAttribute(o,3))}function Tb(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let r=n.geometry.attributes.position.array,e=new Float32Array(r.length),t=new je.Vector3;for(let o=0;o<r.length;o+=3)t.set(r[o],r[o+1],r[o+2]).normalize(),e[o]=t.x,e[o+1]=t.y,e[o+2]=t.z;n.geometry.setAttribute("extrudeNormal",new je.Float32BufferAttribute(e,3))}function To(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Tb(n):wb(n)}function No(n){if(!n.geometry.attributes.position)return;let r=n.geometry.attributes.position.array,e=new Float32Array(r.length),t=parseInt(n.uuid.replace(/\D/g,"")),o=[je.MathUtils.seededRandom(t),je.MathUtils.seededRandom(t+1e4),je.MathUtils.seededRandom(t+2e4)];for(let i=0;i<r.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new je.BufferAttribute(e,3))}function bd(n,r,e){let t=!1,o=e.getLayersOfType("transmission"),i=e.getLayersOfType("outline");return i.length>0&&(r.layers.set(8),o.length===0&&r.layers.enable(3),t=!0,n!==void 0&&i.forEach(s=>Sb(n,s)),No(r),To(r)),o.length===0&&i.length===0&&r.layers.set(0),t}function Sd(n,r,e){if(!e.layers)return!1;let t=!1,o=e.getLayersOfType("transmission"),i=e.getLayersOfType("outline");return o.length>0&&(r.layers.set(3),i.length>0&&r.layers.enable(8),t=!0,n!==void 0&&o.forEach(s=>bb(n,s))),o.length===0&&i.length===0&&r.layers.set(0),t}function wd(n,r){let e=!1;return r.traverseEntity(t=>{if(t instanceof je.Mesh)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)bd(n,t,t.material[o])&&(e=!0);else bd(n,t,t.material)&&(e=!0)}),e}function Td(n,r){let e=!1;return r.traverseEntity(t=>{if(t instanceof je.Mesh)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)Sd(n,t,t.material[o])&&(e=!0);else Sd(n,t,t.material)&&(e=!0)}),e}function Nd(n){"material"in n&&Nb(n.material),"geometry"in n&&n.geometry.dispose()}function Nb(n){pc(n).forEach(r=>{r instanceof wo||r.dispose()})}var Cb=new je.Raycaster,Lb=new je.Matrix4,Ib=new je.Ray;function Cd(n,r,e){let t=n.cloner;if(t)for(let o of t.children){let i=Lb.copy(o.matrixWorld).invert(),s=Ib.copy(r.ray).applyMatrix4(i),a=n.matrixWorld;s.applyMatrix4(a);let l=Cb;l.set(s.origin,s.direction),l.near=r.near,l.far=r.far,l.intersectObject(n,!1).length>0&&e.push({object:n})}}var lt=class extends kt(ha.Mesh){constructor(e,t){super(e,t);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ha.Matrix4;this.booleanExclude=null;Array.isArray(t)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let t=this.geometry,o=Xl[t.userData.type],i=this.objectType==="NonParametric"?Object.assign({},t.userData,{geometry:t}):t.userData,s=o.build(o.normalizeInputs(e,i)),a=t.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),To(this),t.getAttribute("randomColor")&&No(this)}clone(e){let t=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=_i(t),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,t=!0){return super.copy(e,t),e.cloner&&(this.cloner=new xo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new xo(this)),this.cloner.fromClonerState(e))}fromState(e,t){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(er.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),fr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)dr(e)&&(e.freeBooleanPointer(),fr(e)&&e.invalidateUpstreamBooleanData())}};var Pb=new oo.Vector3(0,0,1),Ld=new oo.Vector3,Id=new oo.Vector3,Pd=new oo.Matrix3,In=class extends lt{constructor(e=bt.create({}),t){super(e,t);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new oo.EventDispatcher;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let t=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:t})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),Pd.getNormalMatrix(this.matrixWorld),Ld.copy(Pb).applyMatrix3(Pd).normalize(),Id.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Ld,Id)}clone(e){let t=this.shape.clone(),o=this.material,i=this.geometry.userData,s=bt.create(Object.assign({},i,{shape:t})),a=new In(s,o).copy(this,e);return a.shape=t,t.update(),a}raycast(e,t){lt.prototype.raycast.call(this,e,t)}};function ga(n,r){return Ab(n)}function Ab(n){let r={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let t=Le.createFromState(n.shape,n.width,n.height);r.shape=t}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(t=>t.materialIndex=Math.max(t.materialIndex??0,0)),r.geometry=new Ad.BufferGeometryLoader().parse(n));let e;try{e=_i(r)}catch(t){console.error(t)}if(!e){let t=Le.createFromState(rn.defaultData(),100,100);r.shape=t,e=_i(r)}return e}var me;oa.then(n=>{me=n});var Md=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Od=new Uint32Array([0,1,2,3]),_d=new Uint8Array([4]),Wt=class{static build(n,r,e,t,o){let i,s,a,l=n?.phongAngle??r?.phongAngle??35;if(t===!1&&(l=-1),n.positionWASM!==void 0){e&&e!==0&&(me.free_bvh(e),me.free_subdivision_surface(e));try{i=Wt.allocate(n,o)}catch(c){console.error(c,n),i=Wt.allocate({positionWASM:Md,indexWASM:Od,verticesPerFaceWASM:_d},o)}me.set_destination_refinement_level(i,0),s=Wt.buildLevel(i,!0,l)}else i=e,n.phongAngle!==void 0&&(s=Wt.buildLevel(i,!0,l));return n.subdivisions!==void 0&&(me.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Wt.buildLevel(i,!1,l):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(n,r){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?r.geometry:ga(n),t,o,i,s;return{positions:t,triIndices:s}=Jl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=Zl(t,s,e),{positions:t,indices:o,verticesPerFace:i}}static allocate(n,r){let e,t,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,t=n.indexWASM,o=n.verticesPerFaceWASM):(e=Md,t=Od,o=_d);let a=e.length,l=t.length,c=o.length,u=e.length+i.length+s.length,m=t.length+o.length,p=u*Float32Array.BYTES_PER_ELEMENT+m*Uint32Array.BYTES_PER_ELEMENT,d=u*Float32Array.BYTES_PER_ELEMENT,f=m*Uint32Array.BYTES_PER_ELEMENT,g=me._malloc(p),x=new Float32Array(me.HEAPF32.buffer,g,u),y=new Uint32Array(me.HEAPU32.buffer,g+d,m);x.set(e,0),x.set(i,e.length),x.set(s,e.length+i.length),y.set(t,0),y.set(o,t.length);let v;n?.scaleBaked?.some(S=>S!==1)&&(v=new We.Matrix4().makeScale(...n.scaleBaked)),r&&(v?v.premultiply(r):v=r);let P=v?me.alloc_subdivision_surface2(g,a,g+d,l,g+d+t.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):me.alloc_subdivision_surface(g,a,g+d,l,g+d+t.length*Uint32Array.BYTES_PER_ELEMENT,c);return me._free(g),P}static buildLevel(n,r,e,t,o){let i=o?me.get_mesh_data2(n,r?me.Level.CONTROL:me.Level.REFINED,e,o.elements):me.get_mesh_data(n,r?me.Level.CONTROL:me.Level.REFINED,e),s=8,a=me.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(4,4+4),c=0,u=me.HEAPU32[a[c]>>2],m=me.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=me.HEAPU32[a[c]>>2],d=me.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let f=me.HEAPU32[a[c]>>2],g=me.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let x=me.HEAPU32[a[c]>>2],y=me.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,t===void 0){let v=new We.BufferGeometry;if(v.setIndex(new We.Uint32BufferAttribute(y,1)),v.setAttribute("position",new We.Float32BufferAttribute(m,3)),v.setAttribute("normal",new We.Float32BufferAttribute(d,3)),r){v.setAttribute("faceMap",new We.Uint32BufferAttribute(g,1));let P=new Float32Array(d.length/3*4).fill(0);v.setAttribute("color",new We.BufferAttribute(P,4))}return me.free_mesh_data(i),v.userData.type="SubdivGeometry",v}t.getAttribute("position").copyArray(m),t.getAttribute("normal").copyArray(d),t.attributes.position.needsUpdate=!0,t.attributes.normal.needsUpdate=!0,me.free_mesh_data(i)}static buildControlCageWireframe(n,r,e){let t=me.get_wireframe_data_for_base_level(n),o=4,i=me.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(2,2+2),a=0,l=me.HEAPU32[i[a]>>2],c=me.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let u=me.HEAPU32[i[a]>>2],m=me.HEAPU32.subarray(u>>2,(u>>2)+s[a]);if(r===void 0){let p=new We.BufferGeometry;p.setAttribute("position",new We.Float32BufferAttribute(c,3));let d=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)d[f++]=e.r,d[f++]=e.g,d[f++]=e.b;return p.setAttribute("color",new We.BufferAttribute(d,3)),p.setIndex(new We.Uint32BufferAttribute(m,1)),me.free_wireframe_data_for_base_level(t),p}r.getAttribute("position").copyArray(c),r.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(t)}static updateCollabMesh(n,r,e){r||me.set_destination_refinement_level(n,1);let t=e?me.get_topological_data2(n,r?me.Level.CONTROL:me.Level.REFINED,e.elements):me.get_topological_data(n,r?me.Level.CONTROL:me.Level.REFINED),o=6,i=me.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,l=me.HEAPU32[i[a]>>2],c=new Float32Array(me.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let u=me.HEAPU32[i[a]>>2],m=new Uint32Array(me.HEAPU32.subarray(u>>2,(u>>2)+s[a]));a++;let p=me.HEAPU32[i[a]>>2],d=new Uint8Array(me.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return me.free_topological_data(t),{positions:c,indices:m,verticesPerFace:d}}};var Dd=["getX","getY","getZ"];function Jl(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],a=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,m="";for(let p=0;p<3;p++)m+=`${~~(n[Dd[p]](u)*a)},`;if(m in e)i.push(e[m]);else{for(let p=0;p<3;p++)s.push(n[Dd[p]](u));e[m]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:s,triIndices:l}}var ya=new We.Vector3,Yl=new We.Vector3,Kl=new We.Vector3,Ql=new We.Vector3;function Zl(n,r,e){let t=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let i=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<i.length;l+=2)s+=(i[l]-i[(l===0?i.length:l)-2])*(i[l+1]+i[(l===0?i.length:l)-1]);n.length=0;let a=0;if(s<0)for(let l=0;l<i.length;l+=2)n.push(i[l],i[l+1],0),t.push(a++);else for(let l=i.length-2;l>=0;l-=2)n.push(i[l],i[l+1],0),t.push(a++);return o.push(a),{indices:t,verticesPerFace:o}}for(let i=0,s=e.capStartIndex??r.length;i<s;)if(r[i+1]===r[i+3]&&r[i+2]===r[i+5]||r[i+0]===r[i+3]&&r[i+2]===r[i+4]){ya.set(n[r[i]*3],n[r[i]*3+1],n[r[i]*3+2]),Yl.set(n[r[i+1]*3],n[r[i+1]*3+1],n[r[i+1]*3+2]),Kl.set(n[r[i+4]*3],n[r[i+4]*3+1],n[r[i+4]*3+2]),Ql.set(n[r[i+5]*3],n[r[i+5]*3+1],n[r[i+5]*3+2]),Yl.sub(ya).normalize(),Kl.sub(ya).normalize(),Ql.sub(ya).normalize();let a=Yl.cross(Kl).dot(Ql);Math.abs(a)>.005?(t.push(r[i],r[i+1],r[i+2]),o.push(3),i+=3):(t.push(r[i],r[i+1],r[i+4],r[i+5]),o.push(4),i+=6)}else t.push(r[i],r[i+1],r[i+2]),o.push(3),i+=3;if(e.capStartIndex!==void 0){let i=[],s=[],a=0;for(let l=0,c=0;l<n.length;l+=3,c++)n[l+2]===0&&(i.push(c),a++),n[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}i.reverse(),t.push(...i,...s),o.push(a,a)}return{indices:t,verticesPerFace:o}}var er={};cc(er,{calcBoolean:()=>Db,calcBooleanTopological:()=>_b,freeMeshSet:()=>Gb,getMeshSet:()=>Eb,transformMeshSet:()=>Bb});var Mb,Ed=new Promise(n=>{Mb=n});var Di=require("three");var xe,Pn;Ed.then(n=>xe=n);function Ob(n,r){let e,{positions:t,triIndices:o}=Jl(n.getAttribute("position"),n.getIndex()),i;if(r){let{indices:s,verticesPerFace:a}=Zl(t,o,n);i=a.length,e=[];for(let l=0,c=0;l<i;l++){e.push(a[l]);for(let u=0;u<a[l];u++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,l=0;l<e.length;)e[l++]=3,i++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:t,faceIndices:e,nFaces:i}}function Bd(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=xe._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(xe.HEAPU32.buffer,i,r):new Float32Array(xe.HEAPF32.buffer,i,r)).set(n,0),i}function Gd(n){switch(n){case 0:return xe.OP.UNION;case 1:return xe.OP.INTERSECTION;case 2:return xe.OP.A_MINUS_B;case 3:return xe.OP.B_MINUS_A;case 4:return xe.OP.SYMMETRIC_DIFFERENCE;case 5:return xe.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function _b(n,r){Pn===void 0&&(Pn=xe.init_csg());let e=Bd(n),t=xe.csg_calc_topological(Pn,e,n.length,Gd(r));xe._free(e);let o=6,i=xe.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),a=0,l=xe.HEAPU32[i[a]>>2],c=new Float32Array(xe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let u=xe.HEAPU32[i[a]>>2],m=new Uint32Array(xe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));a++;let p=xe.HEAPU32[i[a]>>2],d=new Uint8Array(xe.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return xe.free_mesh_data(t),{positions:c,indices:m,verticesPerFace:d}}function Db(n,r,e,t){Pn===void 0&&(Pn=xe.init_csg());let o=Bd(n),i=xe.csg_calc(Pn,o,n.length,t,Gd(r));xe._free(o);let s=5,a=xe.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(2,2+3),c=0,u=xe.HEAPU32[a[c]>>2],m=xe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=xe.HEAPU32[a[c]>>2],d=xe.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new Di.Float32BufferAttribute(m,3)),e.setAttribute("normal",new Di.Float32BufferAttribute(d,3));let g=xe.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Di.Sphere),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},xe.free_mesh_data(i),f}function Eb(n,r){if(xe===void 0)return-1;let e,t,o;if(r&&n.userData.positions!==void 0){let g=n.userData;o=g.verticesPerFace.length,e=g.positions,t=Array(g.verticesPerFace.reduce((x,y)=>x+y,0)+o);for(let x=0,y=0,v=0;x<g.verticesPerFace.length;x++){t[v++]=g.verticesPerFace[x];for(let P=0;P<g.verticesPerFace[x];P++)t[v++]=g.indices[y++]}}else({positions:e,faceIndices:t,nFaces:o}=Ob(n,r));let i=e.length,s=t.length,a=e.length,l=t.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,u=a*Float32Array.BYTES_PER_ELEMENT,m=l*Uint32Array.BYTES_PER_ELEMENT,p=xe._malloc(c),d=new Float32Array(xe.HEAPF32.buffer,p,a),f=new Uint32Array(xe.HEAPU32.buffer,p+u,l);return d.set(e,0),f.set(t,0),xe.get_csg_mesh(p,i,p+u,s,o)}function Bb(n,r){xe.transform_csg_mesh(n,r.elements)}function Gb(n){xe.free_csg_mesh(n)}var Xl={ConeGeometry:nm,CubeGeometry:im,CylinderGeometry:rm,DodecahedronGeometry:am,EllipseGeometry:Am,HelixGeometry:Dm,IcosahedronGeometry:Bm,LatheGeometry:Gm,NonParametricGeometry:Rm,PolygonGeometry:zm,PyramidGeometry:Vm,RectangleGeometry:Fm,SphereGeometry:jm,PlaneGeometry:Hm,BackdropGeometry:Wm,StarGeometry:qm,TextFrameGeometry:ra,TorusGeometry:Xm,TorusKnotGeometry:Km,TriangleGeometry:Qm,VectorGeometry:bt},_i=n=>Xl[n.type].create(n);var Ei=require("three");var Rd=new Ei.Matrix4;var xa=class extends lt{constructor(e=new Ei.BufferGeometry,t){super(e,t);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];fr(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(od(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=er.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;er.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else fr(i)&&i.needsTransformForDownstream===!0?(er.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Rd.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),er.transformMeshSet(i.booleanMeshSetAddress,Rd),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return er.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let t=this.geometry;t.dispose(),this.geometry=new Ei.BufferGeometry,this.geometry.userData=t.userData,this.geometry.boundingSphere=t.boundingSphere;try{this.booleanMeshSetAddress=er.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,To(this),No(this)}updateGeometry(e){let t=e.parameters;t.operation!==void 0&&(this.booleanOp=t.operation),t.phongAngle!==void 0&&(this.phongAngle=t.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Re=require("three");var zd=require("three"),Tr=n=>{var r;return r=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},r.geometryHelper=new zd.BoxBufferGeometry(30,30,30),r};var mt=require("three");var gt=require("three"),va=new gt.Ray,ec=new gt.Sphere,Vd=new gt.Matrix4,Nr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ec.copy(i.boundingSphere),ec.applyMatrix4(s),e.ray.intersectsSphere(ec)===!1||(Vd.copy(s).invert(),va.copy(e.ray).applyMatrix4(Vd),i.boundingBox!==null&&va.intersectsBox(i.boundingBox)===!1))return;let a,l,c,u,m=i.index,p=i.attributes.position,d=i.drawRange,f,g;if(o===!1){let y=Math.max(0,d.start),v=Math.min(m.count,d.start+d.count);for(f=y,g=v;f<g;f+=3)if(l=m.getX(f),c=m.getX(f+1),u=m.getX(f+2),a=x(n,e,va,p,l,c,u),a){a.faceIndex=Math.floor(f/3),t.push(a);return}}else{let v=i.attributes.position,P=new gt.Vector3,S=new gt.Vector3,b=new gt.Vector3,E=new gt.Vector3,w=2,_=1/((n.scale.x+n.scale.y+n.scale.z)/3),N=_*_,I=Math.max(0,d.start),L=Math.min(v.count,d.start+d.count);for(let A=I,k=L-1;A<k;A+=w){if(P.fromBufferAttribute(v,A),S.fromBufferAttribute(v,A+1),va.distanceSqToSegment(P,S,E,b)>N)continue;E.applyMatrix4(n.matrixWorld);let ne=e.ray.origin.distanceTo(E);ne<e.near||ne>e.far||t.push({distance:ne,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function x(y,v,P,S,b,E,w){let h=new gt.Vector3,_=new gt.Vector3,N=new gt.Vector3,I=new gt.Vector3,L=new gt.Vector3;if(h.fromBufferAttribute(S,b),_.fromBufferAttribute(S,E),N.fromBufferAttribute(S,w),P.intersectTriangle(h,_,N,!1,I)===null)return null;L.copy(I),L.applyMatrix4(y.matrixWorld);let k=v.ray.origin.distanceTo(L);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:L.clone(),object:y}}};var ba=new mt.Vector3,qt=new mt.Camera,tc=class extends mt.LineSegments{constructor(e){let t=new mt.BufferGeometry,o=new mt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},l=new mt.Color(15711266),c=new mt.Color(15711266),u=new mt.Color(2857471);m("n1","n2",l),m("n2","n4",l),m("n4","n3",l),m("n3","n1",l),m("f1","f2",l),m("f2","f4",l),m("f4","f3",l),m("f3","f1",l),m("n1","f1",l),m("n2","f2",l),m("n3","f3",l),m("n4","f4",l),m("p","n1",c),m("p","n2",c),m("p","n3",c),m("p","n4",c),m("u1","u2",u),m("u2","u3",u),m("u3","u1",u);function m(d,f,g){p(d,g),p(f,g)}function p(d,f){i.push(0,0,0),s.push(f.r,f.g,f.b),a[d]===void 0&&(a[d]=[]),a[d].push(i.length/3-1)}t.setAttribute("position",new mt.Float32BufferAttribute(i,3)),t.setAttribute("color",new mt.Float32BufferAttribute(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;qt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;tr("n1",t,e,qt,-i,-s,a),tr("n2",t,e,qt,i,-s,a),tr("n3",t,e,qt,-i,s,a),tr("n4",t,e,qt,i,s,a);let l=a;tr("f1",t,e,qt,-i,-s,l),tr("f2",t,e,qt,i,-s,l),tr("f3",t,e,qt,-i,s,l),tr("f4",t,e,qt,i,s,l);let c=l,u=.5;tr("u1",t,e,qt,i*.7*u,s*1.1,c),tr("u2",t,e,qt,-i*.7*u,s*1.1,c),tr("u3",t,e,qt,0,s*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function tr(n,r,e,t,o,i,s){ba.set(o,i,s).unproject(t);let a=r[n];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,u=a.length;c<u;c++)l.setXYZ(a[c],ba.x,ba.y,ba.z)}}var Sa=class extends Tr(tc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){Nr(this.object,this.geometry,e,t,!0)}};var Fd=require("three");var An=class extends Tr(Fd.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,An.geometryHelper,e,t)}};var Ud=require("three");var Mn=class extends Tr(Ud.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Nr(this.object,Mn.geometryHelper,e,t)}update(){}};var jd=require("three");var On=class extends Tr(jd.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,On.geometryHelper,e,t)}};var Ta=require("three");var wa=class extends Tr(Ta.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,wa.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=wa._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Bi=wa;Bi._vector=new Ta.Vector3;var Cr=(n,r)=>class extends n{constructor(){super(...arguments);this.objectHelper=new r(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return r.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let i of this.children)Yt(i)&&i.traverseEntity(s=>{Rr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ke(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var _n=new Re.Vector3,rc=new Re.Vector3,zr=class extends Cr(kt(Re.Camera),Sa){constructor(e=window.innerWidth,t=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=t,this.orthoCamera=new Re.OrthographicCamera(e*-.5,e*.5,t*.5,t*-.5,i??-5e4,s),this.perspCamera=new Re.PerspectiveCamera(o,e/t,i??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,t){let o=new zr().fromState(t);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(_n),this.targetOffset=_n.distanceTo(e)}getTarget(e=new Re.Vector3){return this.getWorldDirection(rc),this.getWorldPosition(_n),rc.multiplyScalar(this.targetOffset),e.copy(_n).add(rc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(_n),_n.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Re.Quaternion),t=new Re.Vector3(0,0,1).applyQuaternion(e),o=new Re.Vector3().copy(Re.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Re.Vector3().copy(Re.Object3D.DefaultUp).projectOnPlane(t),s=new Re.Vector3().crossVectors(i,o).dot(t)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let t=e.getWorldPosition(new Re.Vector3),i=e.getWorldDirection(new Re.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new Re.Vector3),i=this.getWorldDirection(new Re.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5,this.aspect=e/t,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,t,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,a):this.orthoCamera.setViewOffset(e,t,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Yo(t,e)}fromCameraState(e){let{orthographic:t,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),t!==void 0&&(t.near!==void 0&&(this.orthoCamera.near=t.near),t.zoom!==void 0&&(this.orthoCamera.zoom=t.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};var kd=require("three");var Co=class extends Cr(kt(kd.Group),Mn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,t){let o=new Co().fromState(t);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}};var Lo=require("three");var Dn=class extends Cr(kt(Lo.DirectionalLight),An){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new Lo.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,t,o){let i=new Dn().fromState(t,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Lo.CameraHelper&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Lo.CameraHelper&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Lo.CameraHelper&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromDirectionalLightState(e,t){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,t),e.size!==void 0&&ed(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,t){return super.fromState(e),this.fromDirectionalLightState(e,t),this}};var yt=require("three");var En=class extends Cr(kt(yt.PointLight),On){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new yt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new yt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new yt.Box3(i,s),l=new yt.Box3Helper(a,new yt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,t,o){let i=new En().fromState(t,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof yt.Box3Helper&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof yt.Box3Helper&&(t.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let t=this._gizmos[e];if(t instanceof yt.Box3Helper){let o=this.shadow.camera,i=new yt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new yt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);t.box.set(i,s),t.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromPointLightState(e,t){return super.fromLightState(e,t),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,t){return super.fromState(e),this.fromPointLightState(e,t),this}};var Ot=require("three");var Hd=new Ot.Vector3,Wd=new Ot.Vector3,qd=new Ot.Quaternion,Bn=class extends Cr(kt(Ot.SpotLight),Bi){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=Ot.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Ot.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,t,o){let i=new Bn().fromState(t,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Ot.CameraHelper&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Ot.CameraHelper&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Ot.CameraHelper&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Wd.setFromMatrixPosition(this.matrixWorld),qd.setFromRotationMatrix(this.matrixWorld),Hd.copy(this.up).applyQuaternion(qd).negate().multiplyScalar(this.distance),this.target.position.copy(Wd).add(Hd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromSpotLightState(e,t){return super.fromLightState(e,t),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,t){return super.fromState(e),this.fromSpotLightState(e,t),this}};var $d=n=>n.tagName==="VIDEO",Gn=class{static resize(r,e,t){let o=r/e,i;if(!t.image)return;let s=t.image;$d(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1*i/o):t.repeat.set(1,1*i/o)),o<i&&(t.imageType=="WEBCAM"?t.repeat.set(1*o/i*-1,1):t.repeat.set(1*o/i,1)),o==i&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1):t.repeat.set(1,1))}static resizeTextureLayer(r,e,t){let o=r/e,i=t.image!==void 0?t.image.width/t.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},t.repeat.set(s.x,s.y),t.updateMatrix()}static resizeTextureLayers(r,e,t){let o=t.layers;for(let i=0;i<o.length;i++){let s=o[i];vd(s)&&Gn.resizeTextureLayer(r,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(r,e,t,o){let i=r/e,s,a=t.image;$d(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(t.imageType=="WEBCAM"?t.repeat.set(1/r*-1,1/e*s/i):t.repeat.set(1/r,1/e*s/i)),i<s&&(t.imageType=="WEBCAM"?t.repeat.set(1/r*i/s*-1,1/e):t.repeat.set(1/r*i/s,1/e)),i==s&&(t.imageType=="WEBCAM"?t.repeat.set(1/r*-1,1/e):t.repeat.set(1/r,1/e))):(i>s&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1*s/i):t.repeat.set(1,1*s/i)),i<s&&(t.imageType=="WEBCAM"?t.repeat.set(1*i/s*-1,1):t.repeat.set(1*i/s,1)),i==s&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1):t.repeat.set(1,1)))}};var Na=class extends lt{constructor(e,t){super(e,t);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&Gn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Rn=class extends lt{constructor(e,t){super(e,t);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Ca=class extends Rn{constructor(e,t){super(e,t);this.objectType="NonParametric"}};var $t=require("three"),Xd=require("three/examples/jsm/loaders/FontLoader.js"),qe=class extends $t.Mesh{constructor({char:e,originalChar:t,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},l=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let c=qe.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=t??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new $t.Vector2,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return qe._fontPath}static set FONTS_PATH(e){qe._fontPath=e}updatePosition(e,t){this.localPosition.copy(e);let o=new $t.Vector3(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(t)}updateFontSize(e){let t=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*t*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let t=qe.loadChar(this.char,e,this.LOD);this.geometry=t.geometry,this.resolution=t.resolution,this.glyphsHa=t.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let t=qe.loadChar(e,this.fontFamily,this.LOD);this.geometry=t.geometry,this.resolution=t.resolution,this.glyphsHa=t.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let t=qe.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=t.geometry,this.resolution=t.resolution,this.glyphsHa=t.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new qe(e).copy(this)}static loadFont(e){return new Promise(function(t,o){qe.fontCache[e]?t(qe.fontCache[e]):new Xd.FontLoader().load(qe.FONTS_PATH+e+".json",s=>{qe.fontCache[e]=s,t(s)},void 0,o)})}static loadChar(e,t,o){if(qe.charCache[e]){if(qe.charCache[e][o]&&qe.charCache[e][o].fontFamily===t)return qe.charCache[e][o]}else qe.charCache[e]={};let i=qe.fontCache[t],s=i.generateShapes(e,1);return qe.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:t,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},qe.charCache[e][o]}},rr=qe;rr.charCache={},rr.fontCache={},rr._fontPath="/_assets/_fonts/";var Lr=require("three");var oc=require("three"),La=new oc.Vector2,Io=class{constructor(r,e,t){this.message=[];this.endLine=!0;this.yLinePos=r,this.lineHeight=e,this.maxCharSize=t,this.nextChar3DPos=new oc.Vector2(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(r,e,t=this.message.length){this.message.splice(t,0,r),r.fontSize>this.maxCharSize?(this.maxCharSize=r.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(r.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=r.charSize)}deleteChar3D(r=this.message.length-1){let e=this.message[r];if(e)return this.message.splice(r,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(r){this.endLine=r}fullUpdate(r,e=0){this.nextChar3DPos.x=0;for(let t=e,o=this.message.length;t<o;t+=1)this.message[t].updatePosition(this.nextChar3DPos,r),this.nextChar3DPos.x+=this.message[t].charSize}checkOverFlow(r){let e,t=this.message.length-1;if(t<=0)return!1;for(;t>=0;){if(this.message[t].char!==" "){e=this.message[t];break}t-=1}return!!(t>=0&&e&&e.localPosition.x+e.charSize>r)}containSpaceOverFlow(r=this.message.length-1){for(let e=r;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(r=this.message.length-1){if(this.endLine)return!0;for(let e=r;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(r=this.message.length-1){let e=[],t=!0,o;for(o=r;o>=0;o-=1)if(this.message[o].char===" "){t=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return t?e=[]:this.message.splice(o+1,e.length),e}getWord(r=0,e=1){let t=[],o=r;for(o=r;;o+=e){if(!this.message[o]||this.message[o].char===" "){t.length===0&&this.message[o]&&(t.push(this.message[o]),this.message.splice(o,1));break}e>0?(t.push(this.message[o]),this.message.splice(o,1),o-=e):(t.splice(0,0,this.message[o]),this.message.splice(o,1))}return t}getWordAtIndex(r){let e=[];for(let t=r;t<this.message.length&&this.message[t].char!==" ";t++)e.push(this.message[t]);for(let t=r-1;t>=0&&this.message[t].char!==" ";t--)e.splice(0,0,this.message[t]);return e}wordSize(r=0,e=-1){let t=0,o=r;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){t===0&&(t=this.message[o].charSize);break}t+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[r]?this.message[r].charSize:999999999:t===0?999999999:t}spaceLeft(r){return r-this.nextChar3DPos.x}popChar(r=this.message.length-1){return this.nextChar3DPos.x-=this.message[r].charSize,this.message.splice(r,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(r){this.yLinePos=r,this.updateNextCharPosY()}updatelineHeight(r){this.lineHeight=r,this.updateNextCharPosY()}updateFontSize(r,e=0,t=this.message.length-1){for(let o=e;o<=t;o+=1)this.message[o].updateFontSize(r);this.maxCharSize=r,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let r=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(r+=1);return r}alignText(r,e,t,o,i){switch(t){case 1:this.leftAlign(r,i);break;case 3:this.centerAlign(this.spaceLeft(e),r,i);break;case 2:this.rightAlign(this.spaceLeft(e),r,i);break;case 4:this.justifyAlign(this.spaceLeft(e),r,i);break}}offsetCharacters(r,e,t){La.set(e,t);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(La),r)}leftAlign(r,e){this.align=1,this.offsetCharacters(r,0,e)}centerAlign(r,e,t){this.align=3,this.offsetCharacters(e,r/2,t)}rightAlign(r,e,t){this.align=2,this.offsetCharacters(e,r,t)}justifyAlign(r,e,t){if(this.align=4,this.endLine){this.offsetCharacters(e,0,t);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,t);return}let i=r/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),La.set(s,t),this.message[a].updatePosition(this.message[a].localPosition.add(La),e)}clone(){let r=new Io(this.yLinePos,this.lineHeight,this.maxCharSize);r.nextChar3DPos=this.nextChar3DPos.clone(),r.align=this.align,r.endLine=this.endLine;for(let e=0;e<this.message.length;e++)r.message.push(this.message[e].clone());return r}};var nc=class extends lt{constructor(e){super(e,new Lr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Lr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Lr.Object3D,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new Lr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,t,o){let i=ra.create({parameters:{width:t.width,height:t.height}}),s=new nc(i).fromState(t,o);return s.uuid=e,s}async updateText(e){this.clearText();let t=this.userData.textFrame,o=t.fontFamily;await rr.loadFont(o),t.text=e;let i=t.textOrigin,s=new Lr.MeshBasicMaterial({visible:t.visible,transparent:!0,side:Lr.DoubleSide}),a=e.split(`
1329
+ `),l=0;this.userData.textFrame.textLines=a.map((c,u)=>{let m=new Io(l,t.lineHeight,t.fontSize);return m.message=c.split("").map(p=>{let d={char:p,fontFamily:o,letterSpacing:t.letterSpacing,fontSize:t.fontSize,LOD:16},f=s.clone();f.color=t.hexColor,f.opacity=t.opacity;let g=new rr(d,f);return m.addChar3D(g,i),this.charContainer.add(g),g}),l+=m.maxCharSize*m.lineHeight,m}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let t=this.charContainer.children[0];this.charContainer.remove(t)}for(;e.length;)e.pop()}raycast(e,t){let o=[];if(super.raycast(e,o),o.length>0){t.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof rr&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,t.push(i[0]);return}}updateGeometry(e){let t=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,l=e.parameters?.height??s,c=t.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let t=this.userData,o=t.textFrame.textOrigin,i=t.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(t.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let u=0;u<a[c].length;u+=1)i[s+1].addChar3D(a[c][u],o,l),l+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let t=this.userData,o=t.textFrame.textOrigin,i=t.textFrame.maxLineSize,s=t.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let u=0;u<l.length;u+=1)l[u]&&s[a-1].addChar3D(l[u],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new Io(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let t=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(t.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let t=this.userData;t.textFrame.hexColor=e;let o=t.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.color?.isColor&&(l.color=e)}}}updateOpacity(e){let t=this.userData;t.textFrame.opacity=e;let o=t.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let t=this.userData;t.textFrame.visible=e;let o=t.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await rr.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await rr.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let t=this.userData,o=t.textFrame.textLines;t.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let t=this.userData;t.textFrame.LOD=e;let o=t.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let t=this.userData,o=t.textFrame.textLines;t.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let t=this.userData;t.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let t=this.userData;t.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,t){if(e.color!==void 0){let o=Ke(e.color,t);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,t){return super.fromState(e),this.fromTextFrameData(e,t),this}},Po=nc;Po.VerticalAlign=nl,Po.HorizontalAlign=ol,Po.TextTransform=il;var ct=require("three");var Gi=class{constructor(r){this.deletedMaterial=new wo(_r.defaultTwoLayerData("basic"),this);this.deletedImage=new So(qs.emptyImage);this.materials={};this.images={};this.colors={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new ct.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:ct.LinearMipmapLinearFilter,magFilter:ct.LinearFilter,wrapS:ct.ClampToEdgeWrapping,wrapT:ct.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new ct.DepthTexture(2048,2048),this.normalRenderTarget=new ct.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:ct.NearestFilter,magFilter:ct.NearestFilter,type:ct.FloatType}),this.normalRenderTarget.depthTexture=new ct.DepthTexture(1024,1024),this.penumbraSizeNode=new ot(5,r.penumbraSize),this.resolutionNode=new rt(1,1),this.pixelRatioNode=new W(window.devicePixelRatio),this.reset(r)}setOnImageLoad(r){this._onImageLoad=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new wo(t,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(r,e){e.uuid=r,this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].dispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new Zt(r,this)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.images[r].updateSrc(e.data),!0):(this.images[r]=new So(e,this.onImageLoad),!1)}deleteImage(r){this.images[r]&&delete this.images[r]}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):new Cn(r,this.onImageLoad)}getImages(){return this.images}addColor(r,e){return this.colors[r]?("a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new ro(e.r,e.g,e.b,e.a):this.colors[r]=new ro(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ut(0,0,0,0))}else return"a"in r?new ut(r.r,r.g,r.b,r.a):new ut(r.r,r.g,r.b,1);return e}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0}},TV=new Gi(Ws.emptyData());var Yd=require("three/examples/jsm/loaders/DRACOLoader.js");var no;function zb(){return no||(no=new Yd.DRACOLoader,no.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),no.decoderPending}async function Vb(n){if(no){let r={attributeIDs:no.defaultAttributeIDs,attributeTypes:no.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await no.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Kd(n,r){let[e,t]=Fa(Rs.deserialize(new Uint8Array(n))),o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await zb();for(let i of o){let s=await Vb(ja(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:l,array:c,itemSize:u})=>{a[l]={array:c,itemSize:u,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=a,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var zt=require("three");var Tt=require("three");var ef=Af(Jd());var ic;oa.then(n=>{ic=n});var tf=new Tt.Matrix4,Fb=new Tt.Matrix4,Ub=new Tt.Matrix4,or=new Tt.Box3,io=new Tt.Vector3,jb=new Tt.Matrix4,kb=new Tt.Matrix4,zn=class extends lt{constructor(e,t,o,i){super(o??t,i);this.subdivPointer=e;this.originalGeometry=t;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Tt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Tt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,t,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Wt.build(t.geometry,void 0,void 0,!t.flatShading),l=o.material(t.material),c=new zn(i,s,a||void 0,l);return t.geometry.phongAngle!==void 0&&(c.phongAngle=t.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(t),c}buildFromStore(e,t){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Wt.build(e,t,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,To(this),No(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){this.geometry=this.originalGeometry,lt.prototype.raycast.call(this,e,t),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,t=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,ef.SVD)(t),a=tf.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=Fb.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=Ub.copy(l).transpose();this.shearScale=jb.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=kb.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(u=>Math.abs(s[0]-u)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Tt.Sphere);let t=e.attributes.position,o=e.boundingSphere.center;or.setFromBufferAttribute(t),or.getCenter(o),e.boundingSphere.radius=o.distanceTo(or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(io);let i={width:io.x,height:io.y,depth:io.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let t=this.originalGeometry;or.min.set(e[0],e[2],e[4]),or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(or.min.applyMatrix4(this.shearScaleInv),or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Tt.Sphere);let o=t.boundingSphere.center;or.getCenter(o),t.boundingSphere.radius=o.distanceTo(or.max),isNaN(t.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(io);let i={width:io.x,height:io.y,depth:io.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(ic.free_bvh(this.subdivPointer),ic.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Zd(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Zd(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Zd(n,r,e,t){let o=n.position.array,i=n.normal.array,s=tf.makeScale(r,e,t).invert().elements,a,l,c;for(var u=0,m=o.length;u<m;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,a=i[u],l=i[u+1],c=i[u+2],i[u]=s[0]*a+s[4]*l+s[8]*c,i[u+1]=s[1]*a+s[5]*l+s[9]*c,i[u+2]=s[2]*a+s[6]*l+s[10]*c}var so=require("three");function rf(n,r){r.flatShading!==void 0&&(n.flatShading=r.flatShading,n.needsUpdate=!0),r.wireframe!==void 0&&(n.wireframe=r.wireframe),r.side!==void 0&&(r.side===0?n.side=so.FrontSide:r.side===1?n.side=so.BackSide:n.side=so.DoubleSide)}function Hb(n,r){if(Array.isArray(n.material))for(let e of n.material)rf(e,r);else{let e=n.material;rf(e,r)}n.objectType==="SubdivObject"&&r.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!r.flatShading,n.updateMesh())}function of(n,r,e){let t;if(r.geometry.type==="SubdivGeometry")t=zn.createFromState(n,r,e);else{let o=r.geometry.type==="BooleanGeometry"?new so.BufferGeometry:ga(r.geometry,e),i="materials"in r?r.materials.map(s=>e.material(s)):e.material(r.material);js.is2DParametricMesh(o.userData.type)?t=new Na(o,i):o?.userData.type==="VectorGeometry"?t=new In(o,i):r.geometry.type==="NonParametricGeometry"?t=new Ca(o,i):r.geometry.type==="BooleanGeometry"?(t=new xa(void 0,i),t.booleanOp=r.geometry.operation,r.geometry.phongAngle!==void 0&&(t.phongAngle=r.geometry.phongAngle)):t=new Rn(o,i),t.uuid=n,t.fromState(r,e)}return Hb(t,r),t}function nf(n,r,e){return r.type==="Mesh"?of(n,r,e):r.type==="TextFrame"?Po.createFromState(n,r,e):r.type==="Empty"?Co.createFromState(n,r):r.type==="PointLight"?En.createFromState(n,r,e):r.type==="SpotLight"?Bn.createFromState(n,r,e):r.type==="DirectionalLight"?Dn.createFromState(n,r,e):Ko.is(r.type)?zr.createFromState(n,r):(console.error(r),new Co)}var sf=new zt.Vector3,sc=class extends ia(zt.Scene){constructor(e,t){super();this.objectType="Scene";this.alpha=1;this.backupFog=new zt.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new zt.Color(1,0,0);this.bgColor=new zt.Color(1,1,1);this.entityByUuid={};this.ambientLight=new zt.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,t)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=Td(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=wd(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ke(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof zr&&this.switchActiveCamera(o)}this.traverse(o=>{fr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Nd(e)});for(let e of this.children)Yt(e)&&e.removeFromParent()}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=zr.createFromState(sc.PERSONAL_CAMERA_ID,{...Hs.defaultData,name:"Personal Camera"});return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children)Yt(s)&&!s.raycastLock&&s.visible&&((dr(s)||Rr(s)&&s.enableHelper&&s.objectHelper.parent)&&(e.intersectObject(s,!1,t),Cd(s,e,t)),o(s))};return o(this),t}traverseEntity(e){for(let t of this.children)Yt(t)&&t.traverseEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ke(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){Zm(this.ambientLight,e,t),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ke(e.groundColor,t)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,t,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,t,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createChildObject(e,t,o,i,s){let a=nf(e,t,s);return a&&(this.entityByUuid[e]=a,i.add(a),fr(i)&&dr(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:l}=e[i],c=this.find(a),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new zt.Box3;return o.setFromPoints(t),o.getCenter(sf),sf}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof lt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Zt&&e(t.material[o]);else t.material instanceof Zt&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},Ri=sc;Ri.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var Wb=require("three"),qb=require("three/examples/jsm/utils/BufferGeometryUtils.js");function af(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}var zi=require("three");function lf(n){let r=new Set;return n.traverse(e=>{if(dr(e))if(Ye(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);$b(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new zi.Color,specularColor:new zi.Color}),e.onBeforeCompile=(o,i)=>{t&&t(o,i),o.uniforms=Object.assign(zi.ShaderLib.physical.uniforms,o.uniforms),e.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):Xb(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function $b(n){return n.getLayersOfType("transmission").length>0}function Xb(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function cf(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function uf(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}r.push(t.name)}),n}var pf=require("three/examples/jsm/utils/BufferGeometryUtils.js");function mf(n){let r=[];return n.traverse(e=>{e instanceof xo&&r.push(e)}),r.forEach(e=>{let t=e.object,o=e.children,i=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&af(l),l}),s=(0,pf.mergeBufferGeometries)(e.parameters.hideBase?i:[t.geometry,...i]);t.geometry=s,t.material=o[0].material,t.remove(e)}),n}function df(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function ff(n){Object.values(n.shared.materials).forEach(r=>{ac(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?ac(e.material):"materials"in e&&e.materials.forEach(t=>{ac(t)})})}function ac(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var hf="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Pa=class extends Aa.Loader{load(r,e,t,o=console.error){let i=new Aa.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(hf+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(hf),i.load(r,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},t,o)}async parse(r){let e=await Kd(r,ff),t=new Gi(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ri(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Jm(s)&&Object.assign(s,{makeDefault:!0})}return o=mf(o),o=lf(o),o=cf(o),o=uf(o),o=df(o),o}};